Merge "Add API to get card ID for default eUICC"
diff --git a/Android.bp b/Android.bp
index 8023fc5..7818d3d 100644
--- a/Android.bp
+++ b/Android.bp
@@ -599,7 +599,6 @@
         ":libupdate_engine_aidl",
 
         ":storaged_aidl",
-        ":netd_aidl",
         ":vold_aidl",
         ":installd_aidl",
         ":dumpstate_aidl",
@@ -622,6 +621,8 @@
         "core/java/com/android/server/DropboxLogTags.logtags",
         "core/java/org/chromium/arc/EventLogTags.logtags",
 
+        ":platform-properties",
+
         ":framework-statslog-gen",
     ],
 
@@ -654,7 +655,6 @@
             "frameworks/av/media/libaudioclient/aidl",
             "frameworks/native/aidl/gui",
             "system/core/storaged/binder",
-            "system/netd/server/binder",
             "system/vold/binder",
             "system/bt/binder",
             "system/security/keystore/binder",
@@ -1562,6 +1562,7 @@
     ],
     dex_mapping_filename: "dex-mapping.txt",
     args: metalava_framework_docs_args +
+        " --hide ReferencesHidden " +
         " --show-unannotated " +
         " --show-annotation android.annotation.SystemApi " +
         " --show-annotation android.annotation.TestApi "
diff --git a/PREUPLOAD.cfg b/PREUPLOAD.cfg
index e061b15..543f0ed 100644
--- a/PREUPLOAD.cfg
+++ b/PREUPLOAD.cfg
@@ -1,13 +1,5 @@
 [Hook Scripts]
 checkstyle_hook = ${REPO_ROOT}/prebuilts/checkstyle/checkstyle.py --sha ${PREUPLOAD_COMMIT}
-                  -fw core/java/android/
-                      graphics/java/android
-                      core/tests/coretests/src/android/
-                      packages/PrintRecommendationService/
-                      packages/PrintSpooler/
-                      services/print/
-                      services/usb/
-                      telephony/
 
 api_lint_hook = ${REPO_ROOT}/frameworks/base/tools/apilint/apilint_sha.sh ${PREUPLOAD_COMMIT}
 
diff --git a/api/current.txt b/api/current.txt
index 3580fa5..7b48a5b 100755
--- a/api/current.txt
+++ b/api/current.txt
@@ -27536,6 +27536,7 @@
     method public int describeContents();
     method public int getLinkDownstreamBandwidthKbps();
     method public int getLinkUpstreamBandwidthKbps();
+    method public android.net.TransportInfo getTransportInfo();
     method public boolean hasCapability(int);
     method public boolean hasTransport(int);
     method public void writeToParcel(android.os.Parcel, int);
@@ -27744,6 +27745,9 @@
     field public static final int UNSUPPORTED = -1; // 0xffffffff
   }
 
+  public abstract interface TransportInfo {
+  }
+
   public abstract class Uri implements java.lang.Comparable android.os.Parcelable {
     method public abstract android.net.Uri.Builder buildUpon();
     method public int compareTo(android.net.Uri);
@@ -27779,6 +27783,7 @@
     method public abstract boolean isRelative();
     method public android.net.Uri normalizeScheme();
     method public static android.net.Uri parse(java.lang.String);
+    method public java.lang.String toSafeString();
     method public abstract java.lang.String toString();
     method public static android.net.Uri withAppendedPath(android.net.Uri, java.lang.String);
     method public static void writeToParcel(android.os.Parcel, android.net.Uri);
@@ -41111,8 +41116,9 @@
     method public void swapConference();
     method public void unhold();
     method public void unregisterCallback(android.telecom.Call.Callback);
-    field public static final java.lang.String AVAILABLE_PHONE_ACCOUNTS = "selectPhoneAccountAccounts";
+    field public static final deprecated java.lang.String AVAILABLE_PHONE_ACCOUNTS = "selectPhoneAccountAccounts";
     field public static final java.lang.String EXTRA_LAST_EMERGENCY_CALLBACK_TIME_MILLIS = "android.telecom.extra.LAST_EMERGENCY_CALLBACK_TIME_MILLIS";
+    field public static final java.lang.String EXTRA_SUGGESTED_PHONE_ACCOUNTS = "android.telecom.extra.SUGGESTED_PHONE_ACCOUNTS";
     field public static final int STATE_ACTIVE = 4; // 0x4
     field public static final int STATE_CONNECTING = 9; // 0x9
     field public static final int STATE_DIALING = 1; // 0x1
@@ -41683,6 +41689,20 @@
     field public static final android.os.Parcelable.Creator<android.telecom.PhoneAccountHandle> CREATOR;
   }
 
+  public final class PhoneAccountSuggestion implements android.os.Parcelable {
+    method public int describeContents();
+    method public android.telecom.PhoneAccountHandle getPhoneAccountHandle();
+    method public int getReason();
+    method public boolean shouldAutoSelect();
+    method public void writeToParcel(android.os.Parcel, int);
+    field public static final android.os.Parcelable.Creator<android.telecom.PhoneAccountSuggestion> CREATOR;
+    field public static final int REASON_FREQUENT = 2; // 0x2
+    field public static final int REASON_INTRA_CARRIER = 1; // 0x1
+    field public static final int REASON_NONE = 0; // 0x0
+    field public static final int REASON_OTHER = 4; // 0x4
+    field public static final int REASON_USER_SET = 3; // 0x3
+  }
+
   public final class RemoteConference {
     method public void disconnect();
     method public java.util.List<android.telecom.RemoteConnection> getConferenceableConnections();
@@ -42067,6 +42087,7 @@
     field public static final java.lang.String KEY_CALL_FORWARDING_BLOCKS_WHILE_ROAMING_STRING_ARRAY = "call_forwarding_blocks_while_roaming_string_array";
     field public static final java.lang.String KEY_CARRIER_ALLOW_TURNOFF_IMS_BOOL = "carrier_allow_turnoff_ims_bool";
     field public static final java.lang.String KEY_CARRIER_CALL_SCREENING_APP_STRING = "call_screening_app";
+    field public static final java.lang.String KEY_CARRIER_CONFIG_VERSION_STRING = "carrier_config_version_string";
     field public static final java.lang.String KEY_CARRIER_DATA_CALL_PERMANENT_FAILURE_STRINGS = "carrier_data_call_permanent_failure_strings";
     field public static final java.lang.String KEY_CARRIER_DEFAULT_WFC_IMS_MODE_INT = "carrier_default_wfc_ims_mode_int";
     field public static final java.lang.String KEY_CARRIER_DEFAULT_WFC_IMS_ROAMING_MODE_INT = "carrier_default_wfc_ims_roaming_mode_int";
@@ -43081,6 +43102,7 @@
     field public static final int NETWORK_TYPE_IDEN = 11; // 0xb
     field public static final int NETWORK_TYPE_IWLAN = 18; // 0x12
     field public static final int NETWORK_TYPE_LTE = 13; // 0xd
+    field public static final int NETWORK_TYPE_NR = 20; // 0x14
     field public static final int NETWORK_TYPE_TD_SCDMA = 17; // 0x11
     field public static final int NETWORK_TYPE_UMTS = 3; // 0x3
     field public static final int NETWORK_TYPE_UNKNOWN = 0; // 0x0
diff --git a/api/system-current.txt b/api/system-current.txt
index 7d50815..fd2e05e 100644
--- a/api/system-current.txt
+++ b/api/system-current.txt
@@ -4,7 +4,6 @@
     field public static final java.lang.String ACCESS_AMBIENT_LIGHT_STATS = "android.permission.ACCESS_AMBIENT_LIGHT_STATS";
     field public static final java.lang.String ACCESS_BROADCAST_RADIO = "android.permission.ACCESS_BROADCAST_RADIO";
     field public static final java.lang.String ACCESS_CACHE_FILESYSTEM = "android.permission.ACCESS_CACHE_FILESYSTEM";
-    field public static final java.lang.String ACCESS_CHECKIN_PROPERTIES = "android.permission.ACCESS_CHECKIN_PROPERTIES";
     field public static final java.lang.String ACCESS_DRM_CERTIFICATES = "android.permission.ACCESS_DRM_CERTIFICATES";
     field public static final deprecated java.lang.String ACCESS_FM_RADIO = "android.permission.ACCESS_FM_RADIO";
     field public static final java.lang.String ACCESS_MOCK_LOCATION = "android.permission.ACCESS_MOCK_LOCATION";
@@ -13,13 +12,10 @@
     field public static final java.lang.String ACCESS_NOTIFICATIONS = "android.permission.ACCESS_NOTIFICATIONS";
     field public static final java.lang.String ACCESS_SHORTCUTS = "android.permission.ACCESS_SHORTCUTS";
     field public static final java.lang.String ACCESS_SURFACE_FLINGER = "android.permission.ACCESS_SURFACE_FLINGER";
-    field public static final java.lang.String ACCOUNT_MANAGER = "android.permission.ACCOUNT_MANAGER";
     field public static final java.lang.String ACTIVITY_EMBEDDING = "android.permission.ACTIVITY_EMBEDDING";
     field public static final java.lang.String ALLOCATE_AGGRESSIVE = "android.permission.ALLOCATE_AGGRESSIVE";
     field public static final java.lang.String ALLOW_ANY_CODEC_FOR_PLAYBACK = "android.permission.ALLOW_ANY_CODEC_FOR_PLAYBACK";
     field public static final java.lang.String BACKUP = "android.permission.BACKUP";
-    field public static final java.lang.String BATTERY_STATS = "android.permission.BATTERY_STATS";
-    field public static final java.lang.String BIND_APPWIDGET = "android.permission.BIND_APPWIDGET";
     field public static final deprecated java.lang.String BIND_CONNECTION_SERVICE = "android.permission.BIND_CONNECTION_SERVICE";
     field public static final java.lang.String BIND_DIRECTORY_SEARCH = "android.permission.BIND_DIRECTORY_SEARCH";
     field public static final java.lang.String BIND_EUICC_SERVICE = "android.permission.BIND_EUICC_SERVICE";
@@ -28,7 +24,6 @@
     field public static final java.lang.String BIND_NETWORK_RECOMMENDATION_SERVICE = "android.permission.BIND_NETWORK_RECOMMENDATION_SERVICE";
     field public static final java.lang.String BIND_NOTIFICATION_ASSISTANT_SERVICE = "android.permission.BIND_NOTIFICATION_ASSISTANT_SERVICE";
     field public static final java.lang.String BIND_PRINT_RECOMMENDATION_SERVICE = "android.permission.BIND_PRINT_RECOMMENDATION_SERVICE";
-    field public static final java.lang.String BIND_REMOTEVIEWS = "android.permission.BIND_REMOTEVIEWS";
     field public static final java.lang.String BIND_RESOLVER_RANKER_SERVICE = "android.permission.BIND_RESOLVER_RANKER_SERVICE";
     field public static final java.lang.String BIND_RUNTIME_PERMISSION_PRESENTER_SERVICE = "android.permission.BIND_RUNTIME_PERMISSION_PRESENTER_SERVICE";
     field public static final java.lang.String BIND_SETTINGS_SUGGESTIONS_SERVICE = "android.permission.BIND_SETTINGS_SUGGESTIONS_SERVICE";
@@ -38,20 +33,13 @@
     field public static final java.lang.String BIND_TEXTCLASSIFIER_SERVICE = "android.permission.BIND_TEXTCLASSIFIER_SERVICE";
     field public static final java.lang.String BIND_TRUST_AGENT = "android.permission.BIND_TRUST_AGENT";
     field public static final java.lang.String BIND_TV_REMOTE_SERVICE = "android.permission.BIND_TV_REMOTE_SERVICE";
-    field public static final java.lang.String BLUETOOTH_PRIVILEGED = "android.permission.BLUETOOTH_PRIVILEGED";
     field public static final java.lang.String BRICK = "android.permission.BRICK";
     field public static final java.lang.String BRIGHTNESS_SLIDER_USAGE = "android.permission.BRIGHTNESS_SLIDER_USAGE";
     field public static final deprecated java.lang.String BROADCAST_NETWORK_PRIVILEGED = "android.permission.BROADCAST_NETWORK_PRIVILEGED";
-    field public static final java.lang.String CALL_PRIVILEGED = "android.permission.CALL_PRIVILEGED";
     field public static final java.lang.String CAMERA_DISABLE_TRANSMIT_LED = "android.permission.CAMERA_DISABLE_TRANSMIT_LED";
     field public static final java.lang.String CAPTURE_AUDIO_HOTWORD = "android.permission.CAPTURE_AUDIO_HOTWORD";
-    field public static final java.lang.String CAPTURE_AUDIO_OUTPUT = "android.permission.CAPTURE_AUDIO_OUTPUT";
-    field public static final java.lang.String CAPTURE_SECURE_VIDEO_OUTPUT = "android.permission.CAPTURE_SECURE_VIDEO_OUTPUT";
     field public static final java.lang.String CAPTURE_TV_INPUT = "android.permission.CAPTURE_TV_INPUT";
-    field public static final java.lang.String CAPTURE_VIDEO_OUTPUT = "android.permission.CAPTURE_VIDEO_OUTPUT";
     field public static final java.lang.String CHANGE_APP_IDLE_STATE = "android.permission.CHANGE_APP_IDLE_STATE";
-    field public static final java.lang.String CHANGE_COMPONENT_ENABLED_STATE = "android.permission.CHANGE_COMPONENT_ENABLED_STATE";
-    field public static final java.lang.String CHANGE_CONFIGURATION = "android.permission.CHANGE_CONFIGURATION";
     field public static final java.lang.String CHANGE_DEVICE_IDLE_TEMP_WHITELIST = "android.permission.CHANGE_DEVICE_IDLE_TEMP_WHITELIST";
     field public static final java.lang.String CLEAR_APP_USER_DATA = "android.permission.CLEAR_APP_USER_DATA";
     field public static final java.lang.String CONFIGURE_DISPLAY_BRIGHTNESS = "android.permission.CONFIGURE_DISPLAY_BRIGHTNESS";
@@ -59,30 +47,21 @@
     field public static final java.lang.String CONNECTIVITY_USE_RESTRICTED_NETWORKS = "android.permission.CONNECTIVITY_USE_RESTRICTED_NETWORKS";
     field public static final java.lang.String CONTROL_DISPLAY_SATURATION = "android.permission.CONTROL_DISPLAY_SATURATION";
     field public static final java.lang.String CONTROL_INCALL_EXPERIENCE = "android.permission.CONTROL_INCALL_EXPERIENCE";
-    field public static final java.lang.String CONTROL_LOCATION_UPDATES = "android.permission.CONTROL_LOCATION_UPDATES";
     field public static final java.lang.String CONTROL_VPN = "android.permission.CONTROL_VPN";
     field public static final java.lang.String CRYPT_KEEPER = "android.permission.CRYPT_KEEPER";
-    field public static final java.lang.String DELETE_CACHE_FILES = "android.permission.DELETE_CACHE_FILES";
-    field public static final java.lang.String DELETE_PACKAGES = "android.permission.DELETE_PACKAGES";
     field public static final java.lang.String DEVICE_POWER = "android.permission.DEVICE_POWER";
-    field public static final java.lang.String DIAGNOSTIC = "android.permission.DIAGNOSTIC";
     field public static final java.lang.String DISPATCH_PROVISIONING_MESSAGE = "android.permission.DISPATCH_PROVISIONING_MESSAGE";
-    field public static final java.lang.String DUMP = "android.permission.DUMP";
     field public static final java.lang.String FORCE_BACK = "android.permission.FORCE_BACK";
     field public static final java.lang.String FORCE_STOP_PACKAGES = "android.permission.FORCE_STOP_PACKAGES";
-    field public static final java.lang.String GET_ACCOUNTS_PRIVILEGED = "android.permission.GET_ACCOUNTS_PRIVILEGED";
     field public static final java.lang.String GET_APP_OPS_STATS = "android.permission.GET_APP_OPS_STATS";
     field public static final java.lang.String GET_PROCESS_STATE_AND_OOM_SCORE = "android.permission.GET_PROCESS_STATE_AND_OOM_SCORE";
     field public static final java.lang.String GET_TOP_ACTIVITY_INFO = "android.permission.GET_TOP_ACTIVITY_INFO";
-    field public static final java.lang.String GLOBAL_SEARCH = "android.permission.GLOBAL_SEARCH";
     field public static final java.lang.String GRANT_RUNTIME_PERMISSIONS = "android.permission.GRANT_RUNTIME_PERMISSIONS";
     field public static final java.lang.String HARDWARE_TEST = "android.permission.HARDWARE_TEST";
     field public static final java.lang.String HDMI_CEC = "android.permission.HDMI_CEC";
     field public static final java.lang.String HIDE_NON_SYSTEM_OVERLAY_WINDOWS = "android.permission.HIDE_NON_SYSTEM_OVERLAY_WINDOWS";
     field public static final java.lang.String INJECT_EVENTS = "android.permission.INJECT_EVENTS";
     field public static final java.lang.String INSTALL_GRANT_RUNTIME_PERMISSIONS = "android.permission.INSTALL_GRANT_RUNTIME_PERMISSIONS";
-    field public static final java.lang.String INSTALL_LOCATION_PROVIDER = "android.permission.INSTALL_LOCATION_PROVIDER";
-    field public static final java.lang.String INSTALL_PACKAGES = "android.permission.INSTALL_PACKAGES";
     field public static final java.lang.String INSTALL_PACKAGE_UPDATES = "android.permission.INSTALL_PACKAGE_UPDATES";
     field public static final java.lang.String INSTALL_SELF_UPDATES = "android.permission.INSTALL_SELF_UPDATES";
     field public static final java.lang.String INTENT_FILTER_VERIFICATION_AGENT = "android.permission.INTENT_FILTER_VERIFICATION_AGENT";
@@ -92,7 +71,6 @@
     field public static final java.lang.String INVOKE_CARRIER_SETUP = "android.permission.INVOKE_CARRIER_SETUP";
     field public static final java.lang.String KILL_UID = "android.permission.KILL_UID";
     field public static final java.lang.String LOCAL_MAC_ADDRESS = "android.permission.LOCAL_MAC_ADDRESS";
-    field public static final java.lang.String LOCATION_HARDWARE = "android.permission.LOCATION_HARDWARE";
     field public static final java.lang.String LOOP_RADIO = "android.permission.LOOP_RADIO";
     field public static final java.lang.String MANAGE_ACTIVITY_STACKS = "android.permission.MANAGE_ACTIVITY_STACKS";
     field public static final java.lang.String MANAGE_APP_OPS_RESTRICTIONS = "android.permission.MANAGE_APP_OPS_RESTRICTIONS";
@@ -107,25 +85,19 @@
     field public static final java.lang.String MANAGE_USB = "android.permission.MANAGE_USB";
     field public static final java.lang.String MANAGE_USERS = "android.permission.MANAGE_USERS";
     field public static final java.lang.String MANAGE_USER_OEM_UNLOCK_STATE = "android.permission.MANAGE_USER_OEM_UNLOCK_STATE";
-    field public static final java.lang.String MASTER_CLEAR = "android.permission.MASTER_CLEAR";
-    field public static final java.lang.String MEDIA_CONTENT_CONTROL = "android.permission.MEDIA_CONTENT_CONTROL";
     field public static final java.lang.String MODIFY_APPWIDGET_BIND_PERMISSIONS = "android.permission.MODIFY_APPWIDGET_BIND_PERMISSIONS";
     field public static final java.lang.String MODIFY_AUDIO_ROUTING = "android.permission.MODIFY_AUDIO_ROUTING";
     field public static final java.lang.String MODIFY_CELL_BROADCASTS = "android.permission.MODIFY_CELL_BROADCASTS";
     field public static final java.lang.String MODIFY_DAY_NIGHT_MODE = "android.permission.MODIFY_DAY_NIGHT_MODE";
     field public static final deprecated java.lang.String MODIFY_NETWORK_ACCOUNTING = "android.permission.MODIFY_NETWORK_ACCOUNTING";
     field public static final java.lang.String MODIFY_PARENTAL_CONTROLS = "android.permission.MODIFY_PARENTAL_CONTROLS";
-    field public static final java.lang.String MODIFY_PHONE_STATE = "android.permission.MODIFY_PHONE_STATE";
     field public static final java.lang.String MODIFY_QUIET_MODE = "android.permission.MODIFY_QUIET_MODE";
-    field public static final java.lang.String MOUNT_FORMAT_FILESYSTEMS = "android.permission.MOUNT_FORMAT_FILESYSTEMS";
-    field public static final java.lang.String MOUNT_UNMOUNT_FILESYSTEMS = "android.permission.MOUNT_UNMOUNT_FILESYSTEMS";
     field public static final java.lang.String MOVE_PACKAGE = "android.permission.MOVE_PACKAGE";
     field public static final java.lang.String NETWORK_SETUP_WIZARD = "android.permission.NETWORK_SETUP_WIZARD";
     field public static final java.lang.String NOTIFICATION_DURING_SETUP = "android.permission.NOTIFICATION_DURING_SETUP";
     field public static final java.lang.String NOTIFY_TV_INPUTS = "android.permission.NOTIFY_TV_INPUTS";
     field public static final java.lang.String OBSERVE_APP_USAGE = "android.permission.OBSERVE_APP_USAGE";
     field public static final java.lang.String OVERRIDE_WIFI_CONFIG = "android.permission.OVERRIDE_WIFI_CONFIG";
-    field public static final java.lang.String PACKAGE_USAGE_STATS = "android.permission.PACKAGE_USAGE_STATS";
     field public static final java.lang.String PACKAGE_VERIFICATION_AGENT = "android.permission.PACKAGE_VERIFICATION_AGENT";
     field public static final java.lang.String PEERS_MAC_ADDRESS = "android.permission.PEERS_MAC_ADDRESS";
     field public static final java.lang.String PERFORM_CDMA_PROVISIONING = "android.permission.PERFORM_CDMA_PROVISIONING";
@@ -135,9 +107,7 @@
     field public static final java.lang.String QUERY_TIME_ZONE_RULES = "android.permission.QUERY_TIME_ZONE_RULES";
     field public static final java.lang.String READ_CONTENT_RATING_SYSTEMS = "android.permission.READ_CONTENT_RATING_SYSTEMS";
     field public static final java.lang.String READ_DREAM_STATE = "android.permission.READ_DREAM_STATE";
-    field public static final java.lang.String READ_FRAME_BUFFER = "android.permission.READ_FRAME_BUFFER";
     field public static final java.lang.String READ_INSTALL_SESSIONS = "android.permission.READ_INSTALL_SESSIONS";
-    field public static final java.lang.String READ_LOGS = "android.permission.READ_LOGS";
     field public static final java.lang.String READ_NETWORK_USAGE_HISTORY = "android.permission.READ_NETWORK_USAGE_HISTORY";
     field public static final java.lang.String READ_OEM_UNLOCK_STATE = "android.permission.READ_OEM_UNLOCK_STATE";
     field public static final java.lang.String READ_PRINT_SERVICES = "android.permission.READ_PRINT_SERVICES";
@@ -149,7 +119,6 @@
     field public static final java.lang.String READ_WALLPAPER_INTERNAL = "android.permission.READ_WALLPAPER_INTERNAL";
     field public static final java.lang.String READ_WIFI_CREDENTIAL = "android.permission.READ_WIFI_CREDENTIAL";
     field public static final java.lang.String REAL_GET_TASKS = "android.permission.REAL_GET_TASKS";
-    field public static final java.lang.String REBOOT = "android.permission.REBOOT";
     field public static final java.lang.String RECEIVE_DATA_ACTIVITY_CHANGE = "android.permission.RECEIVE_DATA_ACTIVITY_CHANGE";
     field public static final java.lang.String RECEIVE_EMERGENCY_BROADCAST = "android.permission.RECEIVE_EMERGENCY_BROADCAST";
     field public static final java.lang.String RECEIVE_WIFI_CREDENTIAL_CHANGE = "android.permission.RECEIVE_WIFI_CREDENTIAL_CHANGE";
@@ -163,27 +132,19 @@
     field public static final java.lang.String RETRIEVE_WINDOW_CONTENT = "android.permission.RETRIEVE_WINDOW_CONTENT";
     field public static final java.lang.String REVOKE_RUNTIME_PERMISSIONS = "android.permission.REVOKE_RUNTIME_PERMISSIONS";
     field public static final java.lang.String SCORE_NETWORKS = "android.permission.SCORE_NETWORKS";
-    field public static final java.lang.String SEND_RESPOND_VIA_MESSAGE = "android.permission.SEND_RESPOND_VIA_MESSAGE";
     field public static final java.lang.String SEND_SHOW_SUSPENDED_APP_DETAILS = "android.permission.SEND_SHOW_SUSPENDED_APP_DETAILS";
     field public static final java.lang.String SEND_SMS_NO_CONFIRMATION = "android.permission.SEND_SMS_NO_CONFIRMATION";
     field public static final java.lang.String SERIAL_PORT = "android.permission.SERIAL_PORT";
     field public static final java.lang.String SET_ACTIVITY_WATCHER = "android.permission.SET_ACTIVITY_WATCHER";
-    field public static final java.lang.String SET_ALWAYS_FINISH = "android.permission.SET_ALWAYS_FINISH";
-    field public static final java.lang.String SET_ANIMATION_SCALE = "android.permission.SET_ANIMATION_SCALE";
-    field public static final java.lang.String SET_DEBUG_APP = "android.permission.SET_DEBUG_APP";
     field public static final java.lang.String SET_HARMFUL_APP_WARNINGS = "android.permission.SET_HARMFUL_APP_WARNINGS";
     field public static final java.lang.String SET_MEDIA_KEY_LISTENER = "android.permission.SET_MEDIA_KEY_LISTENER";
     field public static final java.lang.String SET_ORIENTATION = "android.permission.SET_ORIENTATION";
     field public static final java.lang.String SET_POINTER_SPEED = "android.permission.SET_POINTER_SPEED";
-    field public static final java.lang.String SET_PROCESS_LIMIT = "android.permission.SET_PROCESS_LIMIT";
     field public static final java.lang.String SET_SCREEN_COMPATIBILITY = "android.permission.SET_SCREEN_COMPATIBILITY";
-    field public static final java.lang.String SET_TIME = "android.permission.SET_TIME";
     field public static final java.lang.String SET_VOLUME_KEY_LONG_PRESS_LISTENER = "android.permission.SET_VOLUME_KEY_LONG_PRESS_LISTENER";
     field public static final java.lang.String SET_WALLPAPER_COMPONENT = "android.permission.SET_WALLPAPER_COMPONENT";
     field public static final java.lang.String SHOW_KEYGUARD_MESSAGE = "android.permission.SHOW_KEYGUARD_MESSAGE";
     field public static final java.lang.String SHUTDOWN = "android.permission.SHUTDOWN";
-    field public static final java.lang.String SIGNAL_PERSISTENT_PROCESSES = "android.permission.SIGNAL_PERSISTENT_PROCESSES";
-    field public static final java.lang.String STATUS_BAR = "android.permission.STATUS_BAR";
     field public static final java.lang.String STOP_APP_SWITCHES = "android.permission.STOP_APP_SWITCHES";
     field public static final java.lang.String SUBSTITUTE_NOTIFICATION_APP_NAME = "android.permission.SUBSTITUTE_NOTIFICATION_APP_NAME";
     field public static final java.lang.String SUSPEND_APPS = "android.permission.SUSPEND_APPS";
@@ -192,17 +153,13 @@
     field public static final java.lang.String TV_VIRTUAL_REMOTE_CONTROLLER = "android.permission.TV_VIRTUAL_REMOTE_CONTROLLER";
     field public static final java.lang.String UNLIMITED_SHORTCUTS_API_CALLS = "android.permission.UNLIMITED_SHORTCUTS_API_CALLS";
     field public static final java.lang.String UPDATE_APP_OPS_STATS = "android.permission.UPDATE_APP_OPS_STATS";
-    field public static final java.lang.String UPDATE_DEVICE_STATS = "android.permission.UPDATE_DEVICE_STATS";
     field public static final java.lang.String UPDATE_LOCK = "android.permission.UPDATE_LOCK";
     field public static final java.lang.String UPDATE_TIME_ZONE_RULES = "android.permission.UPDATE_TIME_ZONE_RULES";
     field public static final java.lang.String USER_ACTIVITY = "android.permission.USER_ACTIVITY";
     field public static final java.lang.String USE_RESERVED_DISK = "android.permission.USE_RESERVED_DISK";
-    field public static final java.lang.String WRITE_APN_SETTINGS = "android.permission.WRITE_APN_SETTINGS";
     field public static final java.lang.String WRITE_DREAM_STATE = "android.permission.WRITE_DREAM_STATE";
     field public static final java.lang.String WRITE_EMBEDDED_SUBSCRIPTIONS = "android.permission.WRITE_EMBEDDED_SUBSCRIPTIONS";
-    field public static final java.lang.String WRITE_GSERVICES = "android.permission.WRITE_GSERVICES";
     field public static final java.lang.String WRITE_MEDIA_STORAGE = "android.permission.WRITE_MEDIA_STORAGE";
-    field public static final java.lang.String WRITE_SECURE_SETTINGS = "android.permission.WRITE_SECURE_SETTINGS";
   }
 
   public static final class R.array {
@@ -425,10 +382,6 @@
 
 package android.app.admin {
 
-  public class DeviceAdminReceiver extends android.content.BroadcastReceiver {
-    method public deprecated void onReadyForUserInitialization(android.content.Context, android.content.Intent);
-  }
-
   public class DevicePolicyManager {
     method public java.lang.String getDeviceOwner();
     method public android.content.ComponentName getDeviceOwnerComponentOnAnyUser();
@@ -466,10 +419,7 @@
   }
 
   public final class SystemUpdatePolicy implements android.os.Parcelable {
-    method public int describeContents();
     method public android.app.admin.SystemUpdatePolicy.InstallationOption getInstallationOptionAt(long);
-    method public void writeToParcel(android.os.Parcel, int);
-    field public static final android.os.Parcelable.Creator<android.app.admin.SystemUpdatePolicy> CREATOR;
     field public static final int TYPE_PAUSE = 4; // 0x4
   }
 
@@ -2948,7 +2898,6 @@
     method public void addBlockedRating(android.media.tv.TvContentRating);
     method public boolean captureFrame(java.lang.String, android.view.Surface, android.media.tv.TvStreamConfig);
     method public java.util.List<android.media.tv.TvStreamConfig> getAvailableTvStreamConfigList(java.lang.String);
-    method public java.util.List<android.media.tv.TvContentRating> getBlockedRatings();
     method public java.util.List<android.media.tv.TvInputHardwareInfo> getHardwareList();
     method public java.util.List<android.media.tv.TvContentRatingSystemInfo> getTvContentRatingSystemList();
     method public boolean isSingleSessionActive();
@@ -3163,11 +3112,9 @@
   }
 
   public class TrafficStats {
-    method public static void clearThreadStatsUid();
     method public static void setThreadStatsTagApp();
     method public static void setThreadStatsTagBackup();
     method public static void setThreadStatsTagRestore();
-    method public static void setThreadStatsUid(int);
   }
 
   public class VpnService extends android.app.Service {
@@ -3189,14 +3136,6 @@
 
 }
 
-package android.net.http {
-
-  public class X509TrustManagerExtensions {
-    method public boolean isSameTrustConfiguration(java.lang.String, java.lang.String);
-  }
-
-}
-
 package android.net.wifi {
 
   public deprecated class RttManager {
@@ -3415,7 +3354,6 @@
     method public java.util.List<android.net.wifi.WifiConfiguration> getPrivilegedConfiguredNetworks();
     method public android.net.wifi.WifiConfiguration getWifiApConfiguration();
     method public int getWifiApState();
-    method public boolean isDeviceToApRttSupported();
     method public boolean isDeviceToDeviceRttSupported();
     method public boolean isPortableHotspotSupported();
     method public boolean isWifiApEnabled();
@@ -4614,28 +4552,6 @@
     field public static final java.lang.String KEY_USER_SENTIMENT = "key_user_sentiment";
   }
 
-  public final class Condition implements android.os.Parcelable {
-    ctor public Condition(android.net.Uri, java.lang.String, java.lang.String, java.lang.String, int, int, int);
-    method public android.service.notification.Condition copy();
-    method public static boolean isValidId(android.net.Uri, java.lang.String);
-    method public static android.net.Uri.Builder newId(android.content.Context);
-    method public static java.lang.String relevanceToString(int);
-    method public static java.lang.String stateToString(int);
-    field public static final int FLAG_RELEVANT_ALWAYS = 2; // 0x2
-    field public static final int FLAG_RELEVANT_NOW = 1; // 0x1
-    field public static final java.lang.String SCHEME = "condition";
-    field public static final int STATE_ERROR = 3; // 0x3
-    field public static final int STATE_UNKNOWN = 2; // 0x2
-    field public final int flags;
-    field public final int icon;
-    field public final java.lang.String line1;
-    field public final java.lang.String line2;
-  }
-
-  public abstract class ConditionProviderService extends android.app.Service {
-    method public void onRequestConditions(int);
-  }
-
   public abstract class NotificationAssistantService extends android.service.notification.NotificationListenerService {
     ctor public NotificationAssistantService();
     method public final void adjustNotification(android.service.notification.Adjustment);
@@ -5022,6 +4938,10 @@
     field public static final int CAPABILITY_MULTI_USER = 32; // 0x20
   }
 
+  public final class PhoneAccountSuggestion implements android.os.Parcelable {
+    ctor public PhoneAccountSuggestion(android.telecom.PhoneAccountHandle, int, boolean);
+  }
+
   public final class RemoteConference {
     method public deprecated void setAudioState(android.telecom.AudioState);
   }
@@ -5078,7 +4998,6 @@
     method public void clearPhoneAccounts();
     method public android.telecom.TelecomAnalytics dumpAnalytics();
     method public void enablePhoneAccount(android.telecom.PhoneAccountHandle, boolean);
-    method public boolean endCall();
     method public java.util.List<android.telecom.PhoneAccountHandle> getAllPhoneAccountHandles();
     method public java.util.List<android.telecom.PhoneAccount> getAllPhoneAccounts();
     method public int getAllPhoneAccountsCount();
@@ -5090,7 +5009,6 @@
     method public java.util.List<android.telecom.PhoneAccountHandle> getPhoneAccountsSupportingScheme(java.lang.String);
     method public boolean isInEmergencyCall();
     method public boolean isRinging();
-    method public boolean isTtySupported();
     method public boolean setDefaultDialer(java.lang.String);
     field public static final java.lang.String EXTRA_CALL_BACK_INTENT = "android.telecom.extra.CALL_BACK_INTENT";
     field public static final java.lang.String EXTRA_CLEAR_MISSED_CALLS_INTENT = "android.telecom.extra.CLEAR_MISSED_CALLS_INTENT";
@@ -5115,7 +5033,6 @@
     method public void overrideConfig(int, android.os.PersistableBundle);
     method public void updateConfigForPhoneId(int, java.lang.String);
     field public static final java.lang.String KEY_CARRIER_SETUP_APP_STRING = "carrier_setup_app_string";
-    field public static final java.lang.String KEY_CONFIG_PLANS_PACKAGE_OVERRIDE_STRING = "config_plans_package_override_string";
   }
 
   public class MbmsDownloadSession implements java.lang.AutoCloseable {
@@ -5230,7 +5147,6 @@
 
   public final class SmsManager {
     method public void sendMultipartTextMessageWithoutPersisting(java.lang.String, java.lang.String, java.util.List<java.lang.String>, java.util.List<android.app.PendingIntent>, java.util.List<android.app.PendingIntent>);
-    method public void sendTextMessageWithoutPersisting(java.lang.String, java.lang.String, java.lang.String, android.app.PendingIntent, android.app.PendingIntent);
     field public static final int RESULT_CANCELLED = 23; // 0x17
     field public static final int RESULT_ENCODING_ERROR = 18; // 0x12
     field public static final int RESULT_ERROR_FDN_CHECK_FAILURE = 6; // 0x6
@@ -5257,13 +5173,7 @@
 
   public class SubscriptionManager {
     method public java.util.List<android.telephony.SubscriptionInfo> getAvailableSubscriptionInfoList();
-    method public java.util.List<android.telephony.SubscriptionPlan> getSubscriptionPlans(int);
     method public void requestEmbeddedSubscriptionInfoListRefresh();
-    method public void setSubscriptionOverrideCongested(int, boolean, long);
-    method public void setSubscriptionOverrideUnmetered(int, boolean, long);
-    method public void setSubscriptionPlans(int, java.util.List<android.telephony.SubscriptionPlan>);
-    field public static final java.lang.String ACTION_MANAGE_SUBSCRIPTION_PLANS = "android.telephony.action.MANAGE_SUBSCRIPTION_PLANS";
-    field public static final java.lang.String ACTION_REFRESH_SUBSCRIPTION_PLANS = "android.telephony.action.REFRESH_SUBSCRIPTION_PLANS";
     field public static final android.net.Uri ADVANCED_CALLING_ENABLED_CONTENT_URI;
     field public static final android.net.Uri VT_ENABLED_CONTENT_URI;
     field public static final android.net.Uri WFC_ENABLED_CONTENT_URI;
@@ -5272,37 +5182,10 @@
     field public static final android.net.Uri WFC_ROAMING_MODE_CONTENT_URI;
   }
 
-  public final class SubscriptionPlan implements android.os.Parcelable {
-    method public java.util.Iterator<android.util.Range<java.time.ZonedDateTime>> cycleIterator();
-    method public int describeContents();
-    method public int getDataLimitBehavior();
-    method public long getDataLimitBytes();
-    method public long getDataUsageBytes();
-    method public long getDataUsageTime();
-    method public java.lang.CharSequence getSummary();
-    method public java.lang.CharSequence getTitle();
-    method public void writeToParcel(android.os.Parcel, int);
-    field public static final long BYTES_UNKNOWN = -1L; // 0xffffffffffffffffL
-    field public static final long BYTES_UNLIMITED = 9223372036854775807L; // 0x7fffffffffffffffL
-    field public static final android.os.Parcelable.Creator<android.telephony.SubscriptionPlan> CREATOR;
-    field public static final int LIMIT_BEHAVIOR_BILLED = 1; // 0x1
-    field public static final int LIMIT_BEHAVIOR_DISABLED = 0; // 0x0
-    field public static final int LIMIT_BEHAVIOR_THROTTLED = 2; // 0x2
-    field public static final int LIMIT_BEHAVIOR_UNKNOWN = -1; // 0xffffffff
-    field public static final long TIME_UNKNOWN = -1L; // 0xffffffffffffffffL
-  }
-
   public static class SubscriptionPlan.Builder {
-    method public android.telephony.SubscriptionPlan build();
-    method public static android.telephony.SubscriptionPlan.Builder createNonrecurring(java.time.ZonedDateTime, java.time.ZonedDateTime);
-    method public static android.telephony.SubscriptionPlan.Builder createRecurring(java.time.ZonedDateTime, java.time.Period);
     method public static deprecated android.telephony.SubscriptionPlan.Builder createRecurringDaily(java.time.ZonedDateTime);
     method public static deprecated android.telephony.SubscriptionPlan.Builder createRecurringMonthly(java.time.ZonedDateTime);
     method public static deprecated android.telephony.SubscriptionPlan.Builder createRecurringWeekly(java.time.ZonedDateTime);
-    method public android.telephony.SubscriptionPlan.Builder setDataLimit(long, int);
-    method public android.telephony.SubscriptionPlan.Builder setDataUsage(long, long);
-    method public android.telephony.SubscriptionPlan.Builder setSummary(java.lang.CharSequence);
-    method public android.telephony.SubscriptionPlan.Builder setTitle(java.lang.CharSequence);
   }
 
   public final class TelephonyHistogram implements android.os.Parcelable {
@@ -5441,6 +5324,7 @@
     field public static final int NETWORK_TYPE_BITMASK_HSUPA = 512; // 0x200
     field public static final int NETWORK_TYPE_BITMASK_LTE = 8192; // 0x2000
     field public static final int NETWORK_TYPE_BITMASK_LTE_CA = 524288; // 0x80000
+    field public static final int NETWORK_TYPE_BITMASK_NR = 1048576; // 0x100000
     field public static final int NETWORK_TYPE_BITMASK_TD_SCDMA = 131072; // 0x20000
     field public static final int NETWORK_TYPE_BITMASK_UMTS = 8; // 0x8
     field public static final int NETWORK_TYPE_BITMASK_UNKNOWN = 1; // 0x1
@@ -6219,12 +6103,6 @@
     method public android.telephony.ims.ImsSsInfo.Builder setProvisionStatus(int);
   }
 
-  public static abstract class ImsSsInfo.ClirInterrogationStatus implements java.lang.annotation.Annotation {
-  }
-
-  public static abstract class ImsSsInfo.ClirOutgoingState implements java.lang.annotation.Annotation {
-  }
-
   public final class ImsStreamMediaProfile implements android.os.Parcelable {
     ctor public ImsStreamMediaProfile(int, int, int, int, int);
     method public void copyFrom(android.telephony.ims.ImsStreamMediaProfile);
diff --git a/api/test-current.txt b/api/test-current.txt
index 8466ef0..b5b128a 100644
--- a/api/test-current.txt
+++ b/api/test-current.txt
@@ -963,6 +963,10 @@
     ctor public CallAudioState(boolean, int, int, android.bluetooth.BluetoothDevice, java.util.Collection<android.bluetooth.BluetoothDevice>);
   }
 
+  public final class PhoneAccountSuggestion implements android.os.Parcelable {
+    ctor public PhoneAccountSuggestion(android.telecom.PhoneAccountHandle, int, boolean);
+  }
+
 }
 
 package android.telephony {
diff --git a/cmds/incident_helper/OWNERS b/cmds/incident_helper/OWNERS
index 1a68a32..cede4ea 100644
--- a/cmds/incident_helper/OWNERS
+++ b/cmds/incident_helper/OWNERS
@@ -1,2 +1,3 @@
-jinyithu@google.com
+joeo@google.com
 kwekua@google.com
+yanmin@google.com
diff --git a/cmds/incident_helper/tests/KernelWakesParser_test.cpp b/cmds/incident_helper/tests/KernelWakesParser_test.cpp
index f92d813..573ca4f 100644
--- a/cmds/incident_helper/tests/KernelWakesParser_test.cpp
+++ b/cmds/incident_helper/tests/KernelWakesParser_test.cpp
@@ -84,9 +84,9 @@
     record1->set_event_count(8);
     record1->set_wakeup_count(0);
     record1->set_expire_count(0);
-    record1->set_active_since(0l);
-    record1->set_total_time(0l);
-    record1->set_max_time(0l);
+    record1->set_active_since(0L);
+    record1->set_total_time(0L);
+    record1->set_max_time(0L);
     record1->set_last_change(131348LL);
     record1->set_prevent_suspend_time(0LL);
 
@@ -96,9 +96,9 @@
     record2->set_event_count(143);
     record2->set_wakeup_count(0);
     record2->set_expire_count(0);
-    record2->set_active_since(0l);
-    record2->set_total_time(123l);
-    record2->set_max_time(3l);
+    record2->set_active_since(0L);
+    record2->set_total_time(123L);
+    record2->set_max_time(3L);
     record2->set_last_change(2067286206LL);
     record2->set_prevent_suspend_time(0LL);
 
diff --git a/cmds/incidentd/OWNERS b/cmds/incidentd/OWNERS
index 1a68a32..cede4ea 100644
--- a/cmds/incidentd/OWNERS
+++ b/cmds/incidentd/OWNERS
@@ -1,2 +1,3 @@
-jinyithu@google.com
+joeo@google.com
 kwekua@google.com
+yanmin@google.com
diff --git a/cmds/telecom/src/com/android/commands/telecom/Telecom.java b/cmds/telecom/src/com/android/commands/telecom/Telecom.java
index f3bf6e7..a39f5e3 100644
--- a/cmds/telecom/src/com/android/commands/telecom/Telecom.java
+++ b/cmds/telecom/src/com/android/commands/telecom/Telecom.java
@@ -46,6 +46,7 @@
     private static final String COMMAND_SET_PHONE_ACCOUNT_DISABLED = "set-phone-account-disabled";
     private static final String COMMAND_REGISTER_PHONE_ACCOUNT = "register-phone-account";
     private static final String COMMAND_REGISTER_SIM_PHONE_ACCOUNT = "register-sim-phone-account";
+    private static final String COMMAND_SET_TEST_CALL_REDIRECTION_APP = "set-test-call-redirection-app";
     private static final String COMMAND_SET_TEST_CALL_SCREENING_APP = "set-test-call-screening-app";
     private static final String COMMAND_ADD_OR_REMOVE_CALL_COMPANION_APP =
             "add-or-remove-call-companion-app";
@@ -68,6 +69,7 @@
                 "usage: telecom set-phone-account-enabled <COMPONENT> <ID> <USER_SN>\n" +
                 "usage: telecom set-phone-account-disabled <COMPONENT> <ID> <USER_SN>\n" +
                 "usage: telecom register-phone-account <COMPONENT> <ID> <USER_SN> <LABEL>\n" +
+                "usage: telecom set-test-call-redirection-app <PACKAGE>\n" +
                 "usage: telecom set-test-call-screening-app <PACKAGE>\n" +
                 "usage: telecom set-test-auto-mode-app <PACKAGE>\n" +
                 "usage: telecom add-or-remove-call-companion-app <PACKAGE> <1/0>\n" +
@@ -120,6 +122,9 @@
             case COMMAND_REGISTER_PHONE_ACCOUNT:
                 runRegisterPhoneAccount();
                 break;
+            case COMMAND_SET_TEST_CALL_REDIRECTION_APP:
+                runSetTestCallRedirectionApp();
+                break;
             case COMMAND_SET_TEST_CALL_SCREENING_APP:
                 runSetTestCallScreeningApp();
                 break;
@@ -189,6 +194,11 @@
         System.out.println("Success - " + handle + " registered.");
     }
 
+    private void runSetTestCallRedirectionApp() throws RemoteException {
+        final String packageName = nextArg();
+        mTelecomService.setTestDefaultCallRedirectionApp(packageName);
+    }
+
     private void runSetTestCallScreeningApp() throws RemoteException {
         final String packageName = nextArg();
         mTelecomService.setTestDefaultCallScreeningApp(packageName);
diff --git a/config/hiddenapi-greylist.txt b/config/hiddenapi-greylist.txt
index c4b5d4c..2aeb431 100644
--- a/config/hiddenapi-greylist.txt
+++ b/config/hiddenapi-greylist.txt
@@ -1716,10 +1716,6 @@
 Landroid/widget/RelativeLayout$DependencyGraph$Node;-><init>()V
 Landroid/widget/RemoteViews$OnClickHandler;-><init>()V
 Landroid/widget/ScrollBarDrawable;-><init>()V
-Lcom/android/i18n/phonenumbers/Phonenumber$PhoneNumber$CountryCodeSource;->values()[Lcom/android/i18n/phonenumbers/Phonenumber$PhoneNumber$CountryCodeSource;
-Lcom/android/i18n/phonenumbers/PhoneNumberUtil$MatchType;->values()[Lcom/android/i18n/phonenumbers/PhoneNumberUtil$MatchType;
-Lcom/android/i18n/phonenumbers/PhoneNumberUtil$PhoneNumberFormat;->values()[Lcom/android/i18n/phonenumbers/PhoneNumberUtil$PhoneNumberFormat;
-Lcom/android/i18n/phonenumbers/PhoneNumberUtil$PhoneNumberType;->values()[Lcom/android/i18n/phonenumbers/PhoneNumberUtil$PhoneNumberType;
 Lcom/android/ims/ImsCall;->deflect(Ljava/lang/String;)V
 Lcom/android/ims/ImsCall;->isMultiparty()Z
 Lcom/android/ims/ImsCall;->reject(I)V
@@ -2984,8 +2980,6 @@
 Lcom/android/internal/telephony/dataconnection/DcTracker$RecoveryAction;->isAggressiveRecovery(I)Z
 Lcom/android/internal/telephony/dataconnection/DcTracker;->cancelReconnectAlarm(Lcom/android/internal/telephony/dataconnection/ApnContext;)V
 Lcom/android/internal/telephony/dataconnection/DcTracker;->cleanUpAllConnections(Ljava/lang/String;)V
-Lcom/android/internal/telephony/dataconnection/DcTracker;->cleanUpAllConnections(ZLjava/lang/String;)Z
-Lcom/android/internal/telephony/dataconnection/DcTracker;->cleanUpConnection(ZLcom/android/internal/telephony/dataconnection/ApnContext;)V
 Lcom/android/internal/telephony/dataconnection/DcTracker;->createAllApnList()V
 Lcom/android/internal/telephony/dataconnection/DcTracker;->getActiveApnTypes()[Ljava/lang/String;
 Lcom/android/internal/telephony/dataconnection/DcTracker;->getOverallState()Lcom/android/internal/telephony/DctConstants$State;
@@ -3016,7 +3010,6 @@
 Lcom/android/internal/telephony/dataconnection/DcTracker;->notifyOffApnsOfAvailability(Ljava/lang/String;)V
 Lcom/android/internal/telephony/dataconnection/DcTracker;->onActionIntentDataStallAlarm(Landroid/content/Intent;)V
 Lcom/android/internal/telephony/dataconnection/DcTracker;->onActionIntentProvisioningApnAlarm(Landroid/content/Intent;)V
-Lcom/android/internal/telephony/dataconnection/DcTracker;->onCleanUpAllConnections(Ljava/lang/String;)V
 Lcom/android/internal/telephony/dataconnection/DcTracker;->onRecordsLoadedOrSubIdChanged()V
 Lcom/android/internal/telephony/dataconnection/DcTracker;->onSetUserDataEnabled(Z)V
 Lcom/android/internal/telephony/dataconnection/DcTracker;->onTrySetupData(Lcom/android/internal/telephony/dataconnection/ApnContext;)Z
@@ -3025,7 +3018,6 @@
 Lcom/android/internal/telephony/dataconnection/DcTracker;->resetPollStats()V
 Lcom/android/internal/telephony/dataconnection/DcTracker;->restartDataStallAlarm()V
 Lcom/android/internal/telephony/dataconnection/DcTracker;->setInitialAttachApn()V
-Lcom/android/internal/telephony/dataconnection/DcTracker;->setInternalDataEnabled(ZLandroid/os/Message;)Z
 Lcom/android/internal/telephony/dataconnection/DcTracker;->setPreferredApn(I)V
 Lcom/android/internal/telephony/dataconnection/DcTracker;->setRadio(Z)V
 Lcom/android/internal/telephony/dataconnection/DcTracker;->setupDataOnConnectableApns(Ljava/lang/String;)V
diff --git a/core/java/android/annotation/UnsupportedAppUsage.java b/core/java/android/annotation/UnsupportedAppUsage.java
index 28145a0..ac3daaf 100644
--- a/core/java/android/annotation/UnsupportedAppUsage.java
+++ b/core/java/android/annotation/UnsupportedAppUsage.java
@@ -18,29 +18,48 @@
 import static java.lang.annotation.ElementType.CONSTRUCTOR;
 import static java.lang.annotation.ElementType.FIELD;
 import static java.lang.annotation.ElementType.METHOD;
+import static java.lang.annotation.ElementType.TYPE;
 import static java.lang.annotation.RetentionPolicy.CLASS;
 
+import java.lang.annotation.Repeatable;
 import java.lang.annotation.Retention;
 import java.lang.annotation.Target;
 
 /**
- * Indicates that a class member, that is not part of the SDK, is used by apps.
- * Since the member is not part of the SDK, such use is not supported.
+ * Indicates that this non-SDK interface is used by apps. A non-SDK interface is a
+ * class member (field or method) that is not part of the public SDK. Since the
+ * member is not part of the SDK, usage by apps is not supported.
  *
- * <p>This annotation acts as a heads up that changing a given method or field
+ * <h2>If you are an Android App developer</h2>
+ *
+ * This annotation indicates that you may be able to access the member, but that
+ * this access is discouraged and not supported by Android. If there is a value
+ * for {@link #maxTargetSdk()} on the annotation, access will be restricted based
+ * on the {@code targetSdkVersion} value set in your manifest.
+ *
+ * <p>Fields and methods annotated with this are likely to be restricted, changed
+ * or removed in future Android releases. If you rely on these members for
+ * functionality that is not otherwise supported by Android, consider filing a
+ * <a href="http://g.co/dev/appcompat">feature request</a>.
+ *
+ * <h2>If you are an Android OS developer</h2>
+ *
+ * This annotation acts as a heads up that changing a given method or field
  * may affect apps, potentially breaking them when the next Android version is
  * released. In some cases, for members that are heavily used, this annotation
  * may imply restrictions on changes to the member.
  *
  * <p>This annotation also results in access to the member being permitted by the
- * runtime, with a warning being generated in debug builds.
+ * runtime, with a warning being generated in debug builds. Which apps can access
+ * the member is determined by the value of {@link #maxTargetSdk()}.
  *
  * <p>For more details, see go/UnsupportedAppUsage.
  *
  * {@hide}
  */
 @Retention(CLASS)
-@Target({CONSTRUCTOR, METHOD, FIELD})
+@Target({CONSTRUCTOR, METHOD, FIELD, TYPE})
+@Repeatable(UnsupportedAppUsage.Container.class)
 public @interface UnsupportedAppUsage {
 
     /**
@@ -90,4 +109,27 @@
      * @return A dex API signature.
      */
     String expectedSignature() default "";
+
+    /**
+     * The signature of an implicit (not present in the source) member that forms part of the
+     * hiddenapi.
+     *
+     * <p>Allows access to non-SDK API elements that are not represented in the input source to be
+     * managed.
+     *
+     * <p>This must only be used when applying the annotation to a type, using it in any other
+     * situation is an error.
+     *
+     * @return A dex API signature.
+     */
+    String implicitMember() default "";
+
+    /**
+     * Container for {@link UnsupportedAppUsage} that allows it to be applied repeatedly to types.
+     */
+    @Retention(CLASS)
+    @Target(TYPE)
+    @interface Container {
+        UnsupportedAppUsage[] value();
+    }
 }
diff --git a/core/java/android/app/ActivityThread.java b/core/java/android/app/ActivityThread.java
index 91a0076..0a23858 100644
--- a/core/java/android/app/ActivityThread.java
+++ b/core/java/android/app/ActivityThread.java
@@ -152,7 +152,6 @@
 import com.android.org.conscrypt.TrustedCertificateStore;
 import com.android.server.am.MemInfoDumpProto;
 
-import dalvik.system.BaseDexClassLoader;
 import dalvik.system.CloseGuard;
 import dalvik.system.VMDebug;
 import dalvik.system.VMRuntime;
@@ -5862,16 +5861,6 @@
             ThreadedRenderer.setIsolatedProcess(true);
         }
 
-        // If we use profiles, setup the dex reporter to notify package manager
-        // of any relevant dex loads. The idle maintenance job will use the information
-        // reported to optimize the loaded dex files.
-        // Note that we only need one global reporter per app.
-        // Make sure we do this before calling onCreate so that we can capture the
-        // complete application startup.
-        if (SystemProperties.getBoolean("dalvik.vm.usejitprofiles", false)) {
-            BaseDexClassLoader.setReporter(DexLoadReporter.getInstance());
-        }
-
         // Install the Network Security Config Provider. This must happen before the application
         // code is loaded to prevent issues with instances of TLS objects being created before
         // the provider is installed.
diff --git a/core/java/android/app/LoadedApk.java b/core/java/android/app/LoadedApk.java
index 3f10754..0d3110c 100644
--- a/core/java/android/app/LoadedApk.java
+++ b/core/java/android/app/LoadedApk.java
@@ -57,6 +57,7 @@
 
 import com.android.internal.util.ArrayUtils;
 
+import dalvik.system.BaseDexClassLoader;
 import dalvik.system.VMRuntime;
 
 import java.io.File;
@@ -929,6 +930,15 @@
         if (!SystemProperties.getBoolean("dalvik.vm.usejitprofiles", false)) {
             return;
         }
+
+        // If we use profiles, setup the dex reporter to notify package manager
+        // of any relevant dex loads. The idle maintenance job will use the information
+        // reported to optimize the loaded dex files.
+        // Note that we only need one global reporter per app.
+        // Make sure we do this before invoking app code for the first time so that we
+        // can capture the complete application startup.
+        BaseDexClassLoader.setReporter(DexLoadReporter.getInstance());
+
         // Only set up profile support if the loaded apk has the same uid as the
         // current process.
         // Currently, we do not support profiling across different apps.
diff --git a/core/java/android/app/admin/DeviceAdminReceiver.java b/core/java/android/app/admin/DeviceAdminReceiver.java
index 1c9477d..6fb0d7e 100644
--- a/core/java/android/app/admin/DeviceAdminReceiver.java
+++ b/core/java/android/app/admin/DeviceAdminReceiver.java
@@ -23,7 +23,6 @@
 import android.annotation.Nullable;
 import android.annotation.SdkConstant;
 import android.annotation.SdkConstant.SdkConstantType;
-import android.annotation.SystemApi;
 import android.app.Service;
 import android.content.BroadcastReceiver;
 import android.content.ComponentName;
@@ -755,7 +754,6 @@
      * @deprecated Do not use
      */
     @Deprecated
-    @SystemApi
     public void onReadyForUserInitialization(Context context, Intent intent) {
     }
 
diff --git a/core/java/android/app/admin/SystemUpdatePolicy.java b/core/java/android/app/admin/SystemUpdatePolicy.java
index 2a451ff..96dbc76 100644
--- a/core/java/android/app/admin/SystemUpdatePolicy.java
+++ b/core/java/android/app/admin/SystemUpdatePolicy.java
@@ -691,13 +691,11 @@
                 mFreezePeriods.stream().map(n -> n.toString()).collect(Collectors.joining(",")));
     }
 
-    @SystemApi
     @Override
     public int describeContents() {
         return 0;
     }
 
-    @SystemApi
     @Override
     public void writeToParcel(Parcel dest, int flags) {
         dest.writeInt(mPolicyType);
@@ -714,7 +712,6 @@
         }
     }
 
-    @SystemApi
     public static final Parcelable.Creator<SystemUpdatePolicy> CREATOR =
             new Parcelable.Creator<SystemUpdatePolicy>() {
 
diff --git a/core/java/android/database/sqlite/SQLiteDebug.java b/core/java/android/database/sqlite/SQLiteDebug.java
index d392521..48f8ac9 100644
--- a/core/java/android/database/sqlite/SQLiteDebug.java
+++ b/core/java/android/database/sqlite/SQLiteDebug.java
@@ -119,7 +119,6 @@
     /**
      * contains statistics about a database
      */
-    @TestApi
     public static class DbStats {
         /** name of the database */
         public String dbName;
@@ -151,7 +150,6 @@
      * return all pager and database stats for the current process.
      * @return {@link PagerStats}
      */
-    @TestApi
     public static PagerStats getDatabaseInfo() {
         PagerStats stats = new PagerStats();
         nativeGetPagerStats(stats);
diff --git a/core/java/android/net/NetworkCapabilities.java b/core/java/android/net/NetworkCapabilities.java
index 0bdfca7..8a5f43d 100644
--- a/core/java/android/net/NetworkCapabilities.java
+++ b/core/java/android/net/NetworkCapabilities.java
@@ -17,6 +17,7 @@
 package android.net;
 
 import android.annotation.IntDef;
+import android.annotation.Nullable;
 import android.annotation.SystemApi;
 import android.annotation.TestApi;
 import android.annotation.UnsupportedAppUsage;
@@ -79,6 +80,7 @@
         mNetworkCapabilities = mTransportTypes = mUnwantedNetworkCapabilities = 0;
         mLinkUpBandwidthKbps = mLinkDownBandwidthKbps = LINK_BANDWIDTH_UNSPECIFIED;
         mNetworkSpecifier = null;
+        mTransportInfo = null;
         mSignalStrength = SIGNAL_STRENGTH_UNSPECIFIED;
         mUids = null;
         mEstablishingVpnAppUid = INVALID_UID;
@@ -95,6 +97,7 @@
         mLinkUpBandwidthKbps = nc.mLinkUpBandwidthKbps;
         mLinkDownBandwidthKbps = nc.mLinkDownBandwidthKbps;
         mNetworkSpecifier = nc.mNetworkSpecifier;
+        mTransportInfo = nc.mTransportInfo;
         mSignalStrength = nc.mSignalStrength;
         setUids(nc.mUids); // Will make the defensive copy
         mEstablishingVpnAppUid = nc.mEstablishingVpnAppUid;
@@ -874,6 +877,7 @@
     }
 
     private NetworkSpecifier mNetworkSpecifier = null;
+    private TransportInfo mTransportInfo = null;
 
     /**
      * Sets the optional bearer specific network specifier.
@@ -899,6 +903,19 @@
     }
 
     /**
+     * Sets the optional transport specific information.
+     *
+     * @param transportInfo A concrete, parcelable framework class that extends
+     * {@link TransportInfo}.
+     * @return This NetworkCapabilities instance, to facilitate chaining.
+     * @hide
+     */
+    public NetworkCapabilities setTransportInfo(TransportInfo transportInfo) {
+        mTransportInfo = transportInfo;
+        return this;
+    }
+
+    /**
      * Gets the optional bearer specific network specifier.
      *
      * @return The optional {@link NetworkSpecifier} specifying the bearer specific network
@@ -910,6 +927,19 @@
         return mNetworkSpecifier;
     }
 
+    /**
+     * Returns a transport-specific information container. The application may cast this
+     * container to a concrete sub-class based on its knowledge of the network request. The
+     * application should be able to deal with a {@code null} return value or an invalid case,
+     * e.g. use {@code instanceof} operator to verify expected type.
+     *
+     * @return A concrete implementation of the {@link TransportInfo} class or null if not
+     * available for the network.
+     */
+    @Nullable public TransportInfo getTransportInfo() {
+        return mTransportInfo;
+    }
+
     private void combineSpecifiers(NetworkCapabilities nc) {
         if (mNetworkSpecifier != null && !mNetworkSpecifier.equals(nc.mNetworkSpecifier)) {
             throw new IllegalStateException("Can't combine two networkSpecifiers");
@@ -926,6 +956,17 @@
         return Objects.equals(mNetworkSpecifier, nc.mNetworkSpecifier);
     }
 
+    private void combineTransportInfos(NetworkCapabilities nc) {
+        if (mTransportInfo != null && !mTransportInfo.equals(nc.mTransportInfo)) {
+            throw new IllegalStateException("Can't combine two TransportInfos");
+        }
+        setTransportInfo(nc.mTransportInfo);
+    }
+
+    private boolean equalsTransportInfo(NetworkCapabilities nc) {
+        return Objects.equals(mTransportInfo, nc.mTransportInfo);
+    }
+
     /**
      * Magic value that indicates no signal strength provided. A request specifying this value is
      * always satisfied.
@@ -1238,6 +1279,7 @@
         combineTransportTypes(nc);
         combineLinkBandwidths(nc);
         combineSpecifiers(nc);
+        combineTransportInfos(nc);
         combineSignalStrength(nc);
         combineUids(nc);
         combineSSIDs(nc);
@@ -1347,6 +1389,7 @@
                 && equalsLinkBandwidths(that)
                 && equalsSignalStrength(that)
                 && equalsSpecifier(that)
+                && equalsTransportInfo(that)
                 && equalsUids(that)
                 && equalsSSID(that));
     }
@@ -1364,7 +1407,8 @@
                 + Objects.hashCode(mNetworkSpecifier) * 23
                 + (mSignalStrength * 29)
                 + Objects.hashCode(mUids) * 31
-                + Objects.hashCode(mSSID) * 37;
+                + Objects.hashCode(mSSID) * 37
+                + Objects.hashCode(mTransportInfo) * 41;
     }
 
     @Override
@@ -1379,6 +1423,7 @@
         dest.writeInt(mLinkUpBandwidthKbps);
         dest.writeInt(mLinkDownBandwidthKbps);
         dest.writeParcelable((Parcelable) mNetworkSpecifier, flags);
+        dest.writeParcelable((Parcelable) mTransportInfo, flags);
         dest.writeInt(mSignalStrength);
         dest.writeArraySet(mUids);
         dest.writeString(mSSID);
@@ -1396,6 +1441,7 @@
                 netCap.mLinkUpBandwidthKbps = in.readInt();
                 netCap.mLinkDownBandwidthKbps = in.readInt();
                 netCap.mNetworkSpecifier = in.readParcelable(null);
+                netCap.mTransportInfo = in.readParcelable(null);
                 netCap.mSignalStrength = in.readInt();
                 netCap.mUids = (ArraySet<UidRange>) in.readArraySet(
                         null /* ClassLoader, null for default */);
@@ -1435,6 +1481,9 @@
         if (mNetworkSpecifier != null) {
             sb.append(" Specifier: <").append(mNetworkSpecifier).append(">");
         }
+        if (mTransportInfo != null) {
+            sb.append(" TransportInfo: <").append(mTransportInfo).append(">");
+        }
         if (hasSignalStrength()) {
             sb.append(" SignalStrength: ").append(mSignalStrength);
         }
@@ -1501,6 +1550,9 @@
         if (mNetworkSpecifier != null) {
             proto.write(NetworkCapabilitiesProto.NETWORK_SPECIFIER, mNetworkSpecifier.toString());
         }
+        if (mTransportInfo != null) {
+            // TODO b/120653863: write transport-specific info to proto?
+        }
 
         proto.write(NetworkCapabilitiesProto.CAN_REPORT_SIGNAL_STRENGTH, hasSignalStrength());
         proto.write(NetworkCapabilitiesProto.SIGNAL_STRENGTH, mSignalStrength);
diff --git a/core/java/android/net/NetworkStats.java b/core/java/android/net/NetworkStats.java
index 5447f59..a00b9a3 100644
--- a/core/java/android/net/NetworkStats.java
+++ b/core/java/android/net/NetworkStats.java
@@ -44,6 +44,7 @@
  *
  * @hide
  */
+// @NotThreadSafe
 public class NetworkStats implements Parcelable {
     private static final String TAG = "NetworkStats";
     /** {@link #iface} value when interface details unavailable. */
@@ -443,6 +444,26 @@
         return entry;
     }
 
+    /**
+     * If @{code dest} is not equal to @{code src}, copy entry from index @{code src} to index
+     * @{code dest}.
+     */
+    private void maybeCopyEntry(int dest, int src) {
+        if (dest == src) return;
+        iface[dest] = iface[src];
+        uid[dest] = uid[src];
+        set[dest] = set[src];
+        tag[dest] = tag[src];
+        metered[dest] = metered[src];
+        roaming[dest] = roaming[src];
+        defaultNetwork[dest] = defaultNetwork[src];
+        rxBytes[dest] = rxBytes[src];
+        rxPackets[dest] = rxPackets[src];
+        txBytes[dest] = txBytes[src];
+        txPackets[dest] = txPackets[src];
+        operations[dest] = operations[src];
+    }
+
     public long getElapsedRealtime() {
         return elapsedRealtime;
     }
@@ -941,21 +962,18 @@
     }
 
     /**
-     * Return all rows except those attributed to the requested UID; doesn't
-     * mutate the original structure.
+     * Remove all rows that match one of specified UIDs.
      */
-    public NetworkStats withoutUids(int[] uids) {
-        final NetworkStats stats = new NetworkStats(elapsedRealtime, 10);
-
-        Entry entry = new Entry();
+    public void removeUids(int[] uids) {
+        int nextOutputEntry = 0;
         for (int i = 0; i < size; i++) {
-            entry = getValues(i, entry);
-            if (!ArrayUtils.contains(uids, entry.uid)) {
-                stats.addValues(entry);
+            if (!ArrayUtils.contains(uids, uid[i])) {
+                maybeCopyEntry(nextOutputEntry, i);
+                nextOutputEntry++;
             }
         }
 
-        return stats;
+        size = nextOutputEntry;
     }
 
     /**
diff --git a/core/java/android/net/TrafficStats.java b/core/java/android/net/TrafficStats.java
index 1b22911..bbb809d 100644
--- a/core/java/android/net/TrafficStats.java
+++ b/core/java/android/net/TrafficStats.java
@@ -274,7 +274,6 @@
      * Changes only take effect during subsequent calls to
      * {@link #tagSocket(Socket)}.
      */
-    @SystemApi
     @SuppressLint("Doclava125")
     public static void setThreadStatsUid(int uid) {
         NetworkManagementSocketTagger.setThreadSocketStatsUid(uid);
@@ -313,7 +312,6 @@
      *
      * @see #setThreadStatsUid(int)
      */
-    @SystemApi
     @SuppressLint("Doclava125")
     public static void clearThreadStatsUid() {
         NetworkManagementSocketTagger.setThreadSocketStatsUid(-1);
diff --git a/core/java/android/net/TransportInfo.java b/core/java/android/net/TransportInfo.java
new file mode 100644
index 0000000..b78d3fe
--- /dev/null
+++ b/core/java/android/net/TransportInfo.java
@@ -0,0 +1,25 @@
+/*
+ * 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.
+ */
+
+package android.net;
+
+/**
+ * A container for transport-specific capabilities which is returned by
+ * {@link NetworkCapabilities#getTransportInfo()}. Specific networks
+ * may provide concrete implementations of this interface.
+ */
+public interface TransportInfo {
+}
diff --git a/core/java/android/net/Uri.java b/core/java/android/net/Uri.java
index d09f33b..af3ee09 100644
--- a/core/java/android/net/Uri.java
+++ b/core/java/android/net/Uri.java
@@ -374,11 +374,12 @@
     public abstract String toString();
 
     /**
-     * Return a string representation of the URI that is safe to print
-     * to logs and other places where PII should be avoided.
-     * @hide
+     * Return a string representation of this URI that has common forms of PII redacted,
+     * making it safer to use for logging purposes.  For example, {@code tel:800-466-4411} is
+     * returned as {@code tel:xxx-xxx-xxxx} and {@code http://example.com/path/to/item/} is
+     * returned as {@code http://example.com/...}.
+     * @return the common forms PII redacted string of this URI
      */
-    @UnsupportedAppUsage
     public String toSafeString() {
         String scheme = getScheme();
         String ssp = getSchemeSpecificPart();
diff --git a/core/java/android/net/http/X509TrustManagerExtensions.java b/core/java/android/net/http/X509TrustManagerExtensions.java
index f9b6dfc..280dad0 100644
--- a/core/java/android/net/http/X509TrustManagerExtensions.java
+++ b/core/java/android/net/http/X509TrustManagerExtensions.java
@@ -16,7 +16,6 @@
 
 package android.net.http;
 
-import android.annotation.SystemApi;
 import android.security.net.config.UserCertificateSource;
 
 import com.android.org.conscrypt.TrustManagerImpl;
@@ -133,7 +132,6 @@
      * Returns {@code true} if the TrustManager uses the same trust configuration for the provided
      * hostnames.
      */
-    @SystemApi
     public boolean isSameTrustConfiguration(String hostname1, String hostname2) {
         if (mIsSameTrustConfiguration == null) {
             return true;
diff --git a/core/java/android/os/Build.java b/core/java/android/os/Build.java
old mode 100644
new mode 100755
index 9188894..6932aa7
--- a/core/java/android/os/Build.java
+++ b/core/java/android/os/Build.java
@@ -1113,7 +1113,8 @@
      * null (if, for instance, the radio is not currently on).
      */
     public static String getRadioVersion() {
-        return SystemProperties.get(TelephonyProperties.PROPERTY_BASEBAND_VERSION, null);
+        String propVal = SystemProperties.get(TelephonyProperties.PROPERTY_BASEBAND_VERSION);
+        return TextUtils.isEmpty(propVal) ? null : propVal;
     }
 
     private static String getString(String property) {
diff --git a/core/java/android/os/HwBinder.java b/core/java/android/os/HwBinder.java
index 228fe7a..3de3494 100644
--- a/core/java/android/os/HwBinder.java
+++ b/core/java/android/os/HwBinder.java
@@ -32,10 +32,7 @@
     /**
      * Create and initialize a HwBinder object and the native objects
      * used to allow this to participate in hwbinder transactions.
-     *
-     * @hide
      */
-    @SystemApi
     public HwBinder() {
         native_setup();
 
@@ -44,7 +41,6 @@
                 mNativeContext);
     }
 
-    /** @hide */
     @Override
     public final native void transact(
             int code, HwParcel request, HwParcel reply, int flags)
@@ -57,10 +53,7 @@
      * @param request parceled transaction
      * @param reply object to parcel reply into
      * @param flags transaction flags to be chosen by wire protocol
-     *
-     * @hide
      */
-    @SystemApi
     public abstract void onTransact(
             int code, HwParcel request, HwParcel reply, int flags)
         throws RemoteException;
@@ -69,9 +62,7 @@
      * Registers this service with the hwservicemanager.
      *
      * @param serviceName instance name of the service
-     * @hide
      */
-    @SystemApi
     public native final void registerService(String serviceName)
         throws RemoteException;
 
@@ -81,9 +72,7 @@
      * @param iface fully-qualified interface name for example foo.bar@1.3::IBaz
      * @param serviceName the instance name of the service for example default.
      * @throws NoSuchElementException when the service is unavailable
-     * @hide
      */
-    @SystemApi
     public static final IHwBinder getService(
             String iface,
             String serviceName)
@@ -96,9 +85,7 @@
      * @param serviceName the instance name of the service for example default.
      * @param retry whether to wait for the service to start if it's not already started
      * @throws NoSuchElementException when the service is unavailable
-     * @hide
      */
-    @SystemApi
     public static native final IHwBinder getService(
             String iface,
             String serviceName,
@@ -112,9 +99,7 @@
      * @param maxThreads total number of threads to create (includes this thread if
      *     callerWillJoin is true)
      * @param callerWillJoin whether joinRpcThreadpool will be called in advance
-     * @hide
      */
-    @SystemApi
     public static native final void configureRpcThreadpool(
             long maxThreads, boolean callerWillJoin);
 
@@ -124,10 +109,7 @@
      * a threadpool with callerWillJoin true and then registering
      * the provided service if this thread doesn't need to do
      * anything else.
-     *
-     * @hide
      */
-    @SystemApi
     public static native final void joinRpcThreadpool();
 
     // Returns address of the "freeFunction".
@@ -155,10 +137,7 @@
      * - tries to enable atracing (if enabled)
      * - tries to enable coverage dumps (if running in VTS)
      * - tries to enable record and replay (if running in VTS)
-     *
-     * @hide
      */
-    @SystemApi
     public static void enableInstrumentation() {
         native_report_sysprop_change();
     }
diff --git a/core/java/android/os/IHwBinder.java b/core/java/android/os/IHwBinder.java
index fbdf27e..249eb3a 100644
--- a/core/java/android/os/IHwBinder.java
+++ b/core/java/android/os/IHwBinder.java
@@ -28,10 +28,7 @@
      * @param request parceled transaction
      * @param reply object to parcel reply into
      * @param flags transaction flags to be chosen by wire protocol
-     *
-     * @hide
      */
-    @SystemApi
     public void transact(
             int code, HwParcel request, HwParcel reply, int flags)
         throws RemoteException;
@@ -40,23 +37,19 @@
      * Return as IHwInterface instance only if this implements descriptor.
      *
      * @param descriptor for example foo.bar@1.0::IBaz
-     * @hide
      */
-    @SystemApi
     public IHwInterface queryLocalInterface(String descriptor);
 
     /**
      * Interface for receiving a callback when the process hosting a service
      * has gone away.
      */
-    @SystemApi
     public interface DeathRecipient {
         /**
          * Callback for a registered process dying.
          *
          * @param cookie cookie this death recipient was registered with.
          */
-        @SystemApi
         public void serviceDied(long cookie);
     }
 
@@ -67,13 +60,11 @@
      * @param recipient callback object to be called on object death.
      * @param cookie value to be given to callback on object death.
      */
-    @SystemApi
     public boolean linkToDeath(DeathRecipient recipient, long cookie);
     /**
      * Unregisters the death recipient from this binder.
      *
      * @param recipient callback to no longer recieve death notifications on this binder.
      */
-    @SystemApi
     public boolean unlinkToDeath(DeathRecipient recipient);
 }
diff --git a/core/java/android/os/IHwInterface.java b/core/java/android/os/IHwInterface.java
index 1d9e2b0..f9edd5b 100644
--- a/core/java/android/os/IHwInterface.java
+++ b/core/java/android/os/IHwInterface.java
@@ -23,6 +23,5 @@
     /**
      * @return the binder object that corresponds to this interface.
      */
-    @SystemApi
     public IHwBinder asBinder();
 }
diff --git a/core/java/android/os/INetworkManagementService.aidl b/core/java/android/os/INetworkManagementService.aidl
index c9c4205..be8cf0e 100644
--- a/core/java/android/os/INetworkManagementService.aidl
+++ b/core/java/android/os/INetworkManagementService.aidl
@@ -18,7 +18,6 @@
 package android.os;
 
 import android.net.InterfaceConfiguration;
-import android.net.INetd;
 import android.net.INetworkManagementEventObserver;
 import android.net.ITetheringStatsProvider;
 import android.net.Network;
@@ -47,11 +46,6 @@
     void unregisterObserver(INetworkManagementEventObserver obs);
 
     /**
-     * Retrieve an INetd to talk to netd.
-     */
-    INetd getNetdService();
-
-    /**
      * Returns a list of currently known network interfaces
      */
     String[] listInterfaces();
diff --git a/core/java/android/os/SystemUpdateManager.java b/core/java/android/os/SystemUpdateManager.java
index ce3e2259..9146731 100644
--- a/core/java/android/os/SystemUpdateManager.java
+++ b/core/java/android/os/SystemUpdateManager.java
@@ -34,62 +34,51 @@
     private static final String TAG = "SystemUpdateManager";
 
     /** The status key of the system update info, expecting an int value. */
-    @SystemApi
     public static final String KEY_STATUS = "status";
 
     /** The title of the current update, expecting a String value. */
-    @SystemApi
     public static final String KEY_TITLE = "title";
 
     /** Whether it is a security update, expecting a boolean value. */
-    @SystemApi
     public static final String KEY_IS_SECURITY_UPDATE = "is_security_update";
 
     /** The build fingerprint after installing the current update, expecting a String value. */
-    @SystemApi
     public static final String KEY_TARGET_BUILD_FINGERPRINT = "target_build_fingerprint";
 
     /** The security patch level after installing the current update, expecting a String value. */
-    @SystemApi
     public static final String KEY_TARGET_SECURITY_PATCH_LEVEL = "target_security_patch_level";
 
     /**
      * The KEY_STATUS value that indicates there's no update status info available.
      */
-    @SystemApi
     public static final int STATUS_UNKNOWN = 0;
 
     /**
      * The KEY_STATUS value that indicates there's no pending update.
      */
-    @SystemApi
     public static final int STATUS_IDLE = 1;
 
     /**
      * The KEY_STATUS value that indicates an update is available for download, but pending user
      * approval to start.
      */
-    @SystemApi
     public static final int STATUS_WAITING_DOWNLOAD = 2;
 
     /**
      * The KEY_STATUS value that indicates an update is in progress (i.e. downloading or installing
      * has started).
      */
-    @SystemApi
     public static final int STATUS_IN_PROGRESS = 3;
 
     /**
      * The KEY_STATUS value that indicates an update is available for install.
      */
-    @SystemApi
     public static final int STATUS_WAITING_INSTALL = 4;
 
     /**
      * The KEY_STATUS value that indicates an update will be installed after a reboot. This applies
      * to both of A/B and non-A/B OTAs.
      */
-    @SystemApi
     public static final int STATUS_WAITING_REBOOT = 5;
 
     private final ISystemUpdateManager mService;
@@ -110,7 +99,6 @@
      *
      * @throws SecurityException if the caller is not allowed to read the info.
      */
-    @SystemApi
     @RequiresPermission(anyOf = {
             android.Manifest.permission.READ_SYSTEM_UPDATE_INFO,
             android.Manifest.permission.RECOVERY,
@@ -137,7 +125,6 @@
      * @throws IllegalArgumentException if @link #KEY_STATUS} does not exist.
      * @throws SecurityException if the caller is not allowed to update the info.
      */
-    @SystemApi
     @RequiresPermission(android.Manifest.permission.RECOVERY)
     public void updateSystemUpdateInfo(PersistableBundle infoBundle) {
         if (infoBundle == null || !infoBundle.containsKey(KEY_STATUS)) {
diff --git a/core/java/android/os/UpdateEngine.java b/core/java/android/os/UpdateEngine.java
index 24c9c91..8f2826c 100644
--- a/core/java/android/os/UpdateEngine.java
+++ b/core/java/android/os/UpdateEngine.java
@@ -54,7 +54,6 @@
      * Error code from the update engine. Values must agree with the ones in
      * system/update_engine/common/error_code.h.
      */
-    @SystemApi
     public static final class ErrorCodeConstants {
         public static final int SUCCESS = 0;
         public static final int ERROR = 1;
@@ -74,7 +73,6 @@
      * Update status code from the update engine. Values must agree with the
      * ones in system/update_engine/client_library/include/update_engine/update_status.h.
      */
-    @SystemApi
     public static final class UpdateStatusConstants {
         public static final int IDLE = 0;
         public static final int CHECKING_FOR_UPDATE = 1;
@@ -95,7 +93,6 @@
     /**
      * Creates a new instance.
      */
-    @SystemApi
     public UpdateEngine() {
         mUpdateEngine = IUpdateEngine.Stub.asInterface(
                 ServiceManager.getService(UPDATE_ENGINE_SERVICE));
@@ -106,7 +103,6 @@
      * status change, and when the update completes. A handler can be supplied
      * to control which thread runs the callback, or null.
      */
-    @SystemApi
     public boolean bind(final UpdateEngineCallback callback, final Handler handler) {
         synchronized (mUpdateEngineCallbackLock) {
             mUpdateEngineCallback = new IUpdateEngineCallback.Stub() {
@@ -150,7 +146,6 @@
     /**
      * Equivalent to {@code bind(callback, null)}.
      */
-    @SystemApi
     public boolean bind(final UpdateEngineCallback callback) {
         return bind(callback, null);
     }
@@ -183,7 +178,6 @@
      * };
      * </pre>
      */
-    @SystemApi
     public void applyPayload(String url, long offset, long size, String[] headerKeyValuePairs) {
         try {
             mUpdateEngine.applyPayload(url, offset, size, headerKeyValuePairs);
@@ -201,7 +195,6 @@
      * <p>See {@link #suspend} for a way to temporarily stop an in-progress
      * update with the ability to resume it later.
      */
-    @SystemApi
     public void cancel() {
         try {
             mUpdateEngine.cancel();
@@ -214,7 +207,6 @@
      * Suspends an in-progress update. This can be undone by calling
      * {@link #resume}.
      */
-    @SystemApi
     public void suspend() {
         try {
             mUpdateEngine.suspend();
@@ -226,7 +218,6 @@
     /**
      * Resumes a suspended update.
      */
-    @SystemApi
     public void resume() {
         try {
             mUpdateEngine.resume();
@@ -244,7 +235,6 @@
      * {@code UPDATED_NEED_REBOOT}, so your callback can remove any outstanding
      * notification that rebooting into the new system is possible.
      */
-    @SystemApi
     public void resetStatus() {
         try {
             mUpdateEngine.resetStatus();
@@ -256,7 +246,6 @@
     /**
      * Unbinds the last bound callback function.
      */
-    @SystemApi
     public boolean unbind() {
         synchronized (mUpdateEngineCallbackLock) {
             if (mUpdateEngineCallback == null) {
@@ -281,7 +270,6 @@
      * @param payloadMetadataFilename the location of the metadata without the
      * {@code file://} prefix.
      */
-    @SystemApi
     public boolean verifyPayloadMetadata(String payloadMetadataFilename) {
         try {
             return mUpdateEngine.verifyPayloadApplicable(payloadMetadataFilename);
diff --git a/core/java/android/os/UpdateEngineCallback.java b/core/java/android/os/UpdateEngineCallback.java
index afff60a..f07294e 100644
--- a/core/java/android/os/UpdateEngineCallback.java
+++ b/core/java/android/os/UpdateEngineCallback.java
@@ -37,7 +37,6 @@
      * be one of the values from {@link UpdateEngine.UpdateStatusConstants},
      * and {@code percent} will be valid [TODO: in which cases?].
      */
-    @SystemApi
     public abstract void onStatusUpdate(int status, float percent);
 
     /**
@@ -45,6 +44,5 @@
      * unsuccessfully. The value of {@code errorCode} will be one of the
      * values from {@link UpdateEngine.ErrorCodeConstants}.
      */
-    @SystemApi
     public abstract void onPayloadApplicationComplete(int errorCode);
 }
diff --git a/core/java/android/os/storage/StorageManager.java b/core/java/android/os/storage/StorageManager.java
index d072d02..6b59279 100644
--- a/core/java/android/os/storage/StorageManager.java
+++ b/core/java/android/os/storage/StorageManager.java
@@ -52,6 +52,7 @@
 import android.os.ServiceManager.ServiceNotFoundException;
 import android.os.SystemProperties;
 import android.provider.Settings;
+import android.sysprop.VoldProperties;
 import android.system.ErrnoException;
 import android.system.Os;
 import android.system.OsConstants;
@@ -1465,7 +1466,7 @@
      * framework, so no service needs to check for changes during their lifespan
      */
     public static boolean isBlockEncrypting() {
-        final String state = SystemProperties.get("vold.encrypt_progress", "");
+        final String state = VoldProperties.encrypt_progress().orElse("");
         return !"".equalsIgnoreCase(state);
     }
 
@@ -1481,7 +1482,7 @@
      * framework, so no service needs to check for changes during their lifespan
      */
     public static boolean inCryptKeeperBounce() {
-        final String status = SystemProperties.get("vold.decrypt");
+        final String status = VoldProperties.decrypt().orElse("");
         return "trigger_restart_min_framework".equals(status);
     }
 
diff --git a/core/java/android/service/notification/Condition.java b/core/java/android/service/notification/Condition.java
index b6c6bdc..16f66a5 100644
--- a/core/java/android/service/notification/Condition.java
+++ b/core/java/android/service/notification/Condition.java
@@ -17,7 +17,6 @@
 package android.service.notification;
 
 import android.annotation.IntDef;
-import android.annotation.SystemApi;
 import android.content.Context;
 import android.net.Uri;
 import android.os.Parcel;
@@ -35,7 +34,6 @@
  */
 public final class Condition implements Parcelable {
 
-    @SystemApi
     public static final String SCHEME = "condition";
 
     /** @hide */
@@ -59,14 +57,10 @@
      */
     public static final int STATE_TRUE = 1;
 
-    @SystemApi
     public static final int STATE_UNKNOWN = 2;
-    @SystemApi
     public static final int STATE_ERROR = 3;
 
-    @SystemApi
     public static final int FLAG_RELEVANT_NOW = 1 << 0;
-    @SystemApi
     public static final int FLAG_RELEVANT_ALWAYS = 1 << 1;
 
     /**
@@ -81,9 +75,7 @@
      */
     public final String summary;
 
-    @SystemApi
     public final String line1;
-    @SystemApi
     public final String line2;
 
     /**
@@ -94,9 +86,7 @@
     @State
     public final int state;
 
-    @SystemApi
     public final int flags;
-    @SystemApi
     public final int icon;
 
     /**
@@ -108,7 +98,6 @@
         this(id, summary, "", "", -1, state, FLAG_RELEVANT_ALWAYS);
     }
 
-    @SystemApi
     public Condition(Uri id, String summary, String line1, String line2, int icon,
             int state, int flags) {
         if (id == null) throw new IllegalArgumentException("id is required");
@@ -177,7 +166,6 @@
         proto.end(token);
     }
 
-    @SystemApi
     public static String stateToString(int state) {
         if (state == STATE_FALSE) return "STATE_FALSE";
         if (state == STATE_TRUE) return "STATE_TRUE";
@@ -186,7 +174,6 @@
         throw new IllegalArgumentException("state is invalid: " + state);
     }
 
-    @SystemApi
     public static String relevanceToString(int flags) {
         final boolean now = (flags & FLAG_RELEVANT_NOW) != 0;
         final boolean always = (flags & FLAG_RELEVANT_ALWAYS) != 0;
@@ -219,7 +206,6 @@
         return 0;
     }
 
-    @SystemApi
     public Condition copy() {
         final Parcel parcel = Parcel.obtain();
         try {
@@ -231,14 +217,12 @@
         }
     }
 
-    @SystemApi
     public static Uri.Builder newId(Context context) {
         return new Uri.Builder()
                 .scheme(Condition.SCHEME)
                 .authority(context.getPackageName());
     }
 
-    @SystemApi
     public static boolean isValidId(Uri id, String pkg) {
         return id != null && SCHEME.equals(id.getScheme()) && pkg.equals(id.getAuthority());
     }
diff --git a/core/java/android/service/notification/ConditionProviderService.java b/core/java/android/service/notification/ConditionProviderService.java
index 6fc689a..5203c8f 100644
--- a/core/java/android/service/notification/ConditionProviderService.java
+++ b/core/java/android/service/notification/ConditionProviderService.java
@@ -17,7 +17,6 @@
 package android.service.notification;
 
 import android.annotation.SdkConstant;
-import android.annotation.SystemApi;
 import android.annotation.TestApi;
 import android.app.ActivityManager;
 import android.app.INotificationManager;
@@ -107,7 +106,6 @@
      */
     abstract public void onConnected();
 
-    @SystemApi
     public void onRequestConditions(int relevance) {}
 
     /**
diff --git a/core/java/android/service/textclassifier/TextClassifierService.java b/core/java/android/service/textclassifier/TextClassifierService.java
index b461c0d..2417e59 100644
--- a/core/java/android/service/textclassifier/TextClassifierService.java
+++ b/core/java/android/service/textclassifier/TextClassifierService.java
@@ -80,7 +80,6 @@
      * {@link android.Manifest.permission#BIND_TEXTCLASSIFIER_SERVICE} permission so
      * that other applications can not abuse it.
      */
-    @SystemApi
     public static final String SERVICE_INTERFACE =
             "android.service.textclassifier.TextClassifierService";
 
@@ -371,9 +370,7 @@
      * Callbacks for TextClassifierService results.
      *
      * @param <T> the type of the result
-     * @hide
      */
-    @SystemApi
     public interface Callback<T> {
         /**
          * Returns the result.
diff --git a/core/java/com/android/internal/widget/LockPatternUtils.java b/core/java/com/android/internal/widget/LockPatternUtils.java
index 7c339fb..8eae8af 100644
--- a/core/java/com/android/internal/widget/LockPatternUtils.java
+++ b/core/java/com/android/internal/widget/LockPatternUtils.java
@@ -836,6 +836,11 @@
                     + "of length " + MIN_LOCK_PASSWORD_SIZE);
         }
 
+        if (requestedQuality < PASSWORD_QUALITY_NUMERIC) {
+            throw new IllegalArgumentException("quality must be at least NUMERIC, but was "
+                    + requestedQuality);
+        }
+
         final int currentQuality = getKeyguardStoredPasswordQuality(userHandle);
         setKeyguardStoredPasswordQuality(
                 computePasswordQuality(CREDENTIAL_TYPE_PASSWORD, password, requestedQuality),
diff --git a/core/java/com/android/server/SystemConfig.java b/core/java/com/android/server/SystemConfig.java
index 45069ca..a07c96c 100644
--- a/core/java/com/android/server/SystemConfig.java
+++ b/core/java/com/android/server/SystemConfig.java
@@ -25,6 +25,7 @@
 import android.os.Build;
 import android.os.Environment;
 import android.os.Process;
+import android.os.SystemProperties;
 import android.os.storage.StorageManager;
 import android.text.TextUtils;
 import android.util.ArrayMap;
@@ -67,6 +68,9 @@
     private static final int ALLOW_HIDDENAPI_WHITELISTING = 0x40;
     private static final int ALLOW_ALL = ~0;
 
+    // property for runtime configuration differentiation
+    private static final String SKU_PROPERTY = "ro.boot.product.hardware.sku";
+
     // Group-ids that are given to all packages as read from etc/permissions/*.xml.
     int[] mGlobalGids;
 
@@ -312,6 +316,17 @@
         readPermissions(Environment.buildPath(
                 Environment.getOdmDirectory(), "etc", "permissions"), odmPermissionFlag);
 
+        String skuProperty = SystemProperties.get(SKU_PROPERTY, "");
+        if (!skuProperty.isEmpty()) {
+            String skuDir = "sku_" + skuProperty;
+
+            readPermissions(Environment.buildPath(
+                    Environment.getOdmDirectory(), "etc", "sysconfig", skuDir), odmPermissionFlag);
+            readPermissions(Environment.buildPath(
+                    Environment.getOdmDirectory(), "etc", "permissions", skuDir),
+                    odmPermissionFlag);
+        }
+
         // Allow OEM to customize features and OEM permissions
         int oemPermissionFlag = ALLOW_FEATURES | ALLOW_OEM_PERMISSIONS;
         readPermissions(Environment.buildPath(
@@ -342,6 +357,10 @@
         // Iterate over the files in the directory and scan .xml files
         File platformFile = null;
         for (File f : libraryDir.listFiles()) {
+            if (!f.isFile()) {
+                continue;
+            }
+
             // We'll read platform.xml last
             if (f.getPath().endsWith("etc/permissions/platform.xml")) {
                 platformFile = f;
diff --git a/core/jni/android_media_AudioTrack.cpp b/core/jni/android_media_AudioTrack.cpp
index 6456fe6..6c9f463 100644
--- a/core/jni/android_media_AudioTrack.cpp
+++ b/core/jni/android_media_AudioTrack.cpp
@@ -23,8 +23,6 @@
 #include <nativehelper/JniConstants.h>
 #include "core_jni_helpers.h"
 
-#include <nativehelper/ScopedBytes.h>
-
 #include <utils/Log.h>
 #include <media/AudioSystem.h>
 #include <media/AudioTrack.h>
@@ -699,7 +697,7 @@
 
 // ----------------------------------------------------------------------------
 static jint android_media_AudioTrack_write_native_bytes(JNIEnv *env,  jobject thiz,
-        jbyteArray javaBytes, jint byteOffset, jint sizeInBytes,
+        jobject javaByteBuffer, jint byteOffset, jint sizeInBytes,
         jint javaAudioFormat, jboolean isWriteBlocking) {
     //ALOGV("android_media_AudioTrack_write_native_bytes(offset=%d, sizeInBytes=%d) called",
     //    offsetInBytes, sizeInBytes);
@@ -710,13 +708,14 @@
         return (jint)AUDIO_JAVA_INVALID_OPERATION;
     }
 
-    ScopedBytesRO bytes(env, javaBytes);
-    if (bytes.get() == NULL) {
+    const jbyte* bytes =
+            reinterpret_cast<const jbyte*>(env->GetDirectBufferAddress(javaByteBuffer));
+    if (bytes == NULL) {
         ALOGE("Error retrieving source of audio data to play, can't play");
         return (jint)AUDIO_JAVA_BAD_VALUE;
     }
 
-    jint written = writeToTrack(lpTrack, javaAudioFormat, bytes.get(), byteOffset,
+    jint written = writeToTrack(lpTrack, javaAudioFormat, bytes, byteOffset,
             sizeInBytes, isWriteBlocking == JNI_TRUE /* blocking */);
 
     return written;
@@ -1288,7 +1287,7 @@
     {"native_release",       "()V",      (void *)android_media_AudioTrack_release},
     {"native_write_byte",    "([BIIIZ)I",(void *)android_media_AudioTrack_writeArray<jbyteArray>},
     {"native_write_native_bytes",
-                             "(Ljava/lang/Object;IIIZ)I",
+                             "(Ljava/nio/ByteBuffer;IIIZ)I",
                                          (void *)android_media_AudioTrack_write_native_bytes},
     {"native_write_short",   "([SIIIZ)I",(void *)android_media_AudioTrack_writeArray<jshortArray>},
     {"native_write_float",   "([FIIIZ)I",(void *)android_media_AudioTrack_writeArray<jfloatArray>},
diff --git a/core/jni/com_android_internal_os_Zygote.cpp b/core/jni/com_android_internal_os_Zygote.cpp
index 7a3f49a..01105ba 100644
--- a/core/jni/com_android_internal_os_Zygote.cpp
+++ b/core/jni/com_android_internal_os_Zygote.cpp
@@ -273,15 +273,17 @@
     }
   }
 
-  // We don't want core dumps, though, so set the soft limit on core dump size
-  // to 0 without changing the hard limit.
-  rlimit rl;
-  if (getrlimit(RLIMIT_CORE, &rl) == -1) {
-    ALOGE("getrlimit(RLIMIT_CORE) failed");
-  } else {
-    rl.rlim_cur = 0;
-    if (setrlimit(RLIMIT_CORE, &rl) == -1) {
-      ALOGE("setrlimit(RLIMIT_CORE) failed");
+  // Set the core dump size to zero unless wanted (see also coredump_setup in build/envsetup.sh).
+  if (!GetBoolProperty("persist.zygote.core_dump", false)) {
+    // Set the soft limit on core dump size to 0 without changing the hard limit.
+    rlimit rl;
+    if (getrlimit(RLIMIT_CORE, &rl) == -1) {
+      ALOGE("getrlimit(RLIMIT_CORE) failed");
+    } else {
+      rl.rlim_cur = 0;
+      if (setrlimit(RLIMIT_CORE, &rl) == -1) {
+        ALOGE("setrlimit(RLIMIT_CORE) failed");
+      }
     }
   }
 }
diff --git a/core/proto/android/telephony/enums.proto b/core/proto/android/telephony/enums.proto
index fba2e51..4777169 100644
--- a/core/proto/android/telephony/enums.proto
+++ b/core/proto/android/telephony/enums.proto
@@ -51,6 +51,7 @@
     NETWORK_TYPE_TD_SCDMA = 17;
     NETWORK_TYPE_IWLAN = 18;
     NETWORK_TYPE_LTE_CA = 19;
+    NETWORK_TYPE_NR = 20;
 }
 
 // Signal strength levels, primarily used by android/telephony/SignalStrength.java.
diff --git a/core/res/AndroidManifest.xml b/core/res/AndroidManifest.xml
index 9ce6044..5154de0 100644
--- a/core/res/AndroidManifest.xml
+++ b/core/res/AndroidManifest.xml
@@ -1230,7 +1230,7 @@
     <!-- ================================== -->
     <eat-comment />
 
-    <!-- @SystemApi Allows an application (Phone) to send a request to other applications
+    <!-- Allows an application (Phone) to send a request to other applications
          to handle the respond-via-message action during incoming calls.
          <p>Not for use by third-party applications. -->
     <permission android:name="android.permission.SEND_RESPOND_VIA_MESSAGE"
@@ -1314,7 +1314,7 @@
         android:description="@string/permdesc_accessLocationExtraCommands"
         android:protectionLevel="normal" />
 
-    <!-- @SystemApi Allows an application to install a location provider into the Location Manager.
+    <!-- Allows an application to install a location provider into the Location Manager.
     <p>Not for use by third-party applications. -->
     <permission android:name="android.permission.INSTALL_LOCATION_PROVIDER"
         android:protectionLevel="signature|privileged" />
@@ -1325,7 +1325,7 @@
     <permission android:name="android.permission.HDMI_CEC"
         android:protectionLevel="signature|privileged" />
 
-    <!-- @SystemApi Allows an application to use location features in hardware,
+    <!-- Allows an application to use location features in hardware,
          such as the geofencing api.
          <p>Not for use by third-party applications. -->
     <permission android:name="android.permission.LOCATION_HARDWARE"
@@ -1512,7 +1512,7 @@
         android:label="@string/permlab_bluetoothAdmin"
         android:protectionLevel="normal" />
 
-    <!-- @SystemApi Allows applications to pair bluetooth devices without user interaction, and to
+    <!-- Allows applications to pair bluetooth devices without user interaction, and to
          allow or disallow phonebook access or message access.
          This is not available to third party applications. -->
     <permission android:name="android.permission.BLUETOOTH_PRIVILEGED"
@@ -1602,7 +1602,7 @@
         android:label="@string/permlab_getAccounts" />
     <uses-permission android:name="android.permission.GET_ACCOUNTS"/>
 
-    <!-- @SystemApi Allows applications to call into AccountAuthenticators.
+    <!-- Allows applications to call into AccountAuthenticators.
     <p>Not for use by third-party applications. -->
     <permission android:name="android.permission.ACCOUNT_MANAGER"
         android:protectionLevel="signature" />
@@ -1775,7 +1775,7 @@
     <!-- =========================================== -->
     <eat-comment />
 
-    <!-- @SystemApi Allows modification of the telephony state - power on, mmi, etc.
+    <!-- Allows modification of the telephony state - power on, mmi, etc.
          Does not include placing calls.
          <p>Not for use by third-party applications. -->
     <permission android:name="android.permission.MODIFY_PHONE_STATE"
@@ -2206,7 +2206,7 @@
     <!-- ============================================ -->
     <eat-comment />
 
-    <!-- @SystemApi Allows applications to set the system time.
+    <!-- Allows applications to set the system time.
     <p>Not for use by third-party applications. -->
     <permission android:name="android.permission.SET_TIME"
         android:protectionLevel="signature|privileged" />
@@ -2296,7 +2296,7 @@
     <permission android:name="android.permission.SET_SCREEN_COMPATIBILITY"
         android:protectionLevel="signature" />
 
-    <!-- @SystemApi Allows an application to modify the current configuration, such
+    <!-- Allows an application to modify the current configuration, such
          as locale. -->
     <permission android:name="android.permission.CHANGE_CONFIGURATION"
         android:protectionLevel="signature|privileged|development" />
@@ -2318,7 +2318,7 @@
         android:description="@string/permdesc_writeSettings"
         android:protectionLevel="signature|preinstalled|appop|pre23" />
 
-    <!-- @SystemApi Allows an application to modify the Google service map.
+    <!-- Allows an application to modify the Google service map.
     <p>Not for use by third-party applications. -->
     <permission android:name="android.permission.WRITE_GSERVICES"
         android:protectionLevel="signature|privileged" />
@@ -2334,7 +2334,7 @@
     <permission android:name="android.permission.RETRIEVE_WINDOW_CONTENT"
         android:protectionLevel="signature|privileged" />
 
-    <!-- @SystemApi Modify the global animation scaling factor.
+    <!-- Modify the global animation scaling factor.
     <p>Not for use by third-party applications. -->
     <permission android:name="android.permission.SET_ANIMATION_SCALE"
         android:protectionLevel="signature|privileged|development" />
@@ -2389,12 +2389,12 @@
         android:description="@string/permdesc_broadcastSticky"
         android:protectionLevel="normal" />
 
-    <!-- @SystemApi Allows mounting and unmounting file systems for removable storage.
+    <!-- Allows mounting and unmounting file systems for removable storage.
     <p>Not for use by third-party applications.-->
     <permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"
         android:protectionLevel="signature|privileged" />
 
-    <!-- @SystemApi Allows formatting file systems for removable storage.
+    <!-- Allows formatting file systems for removable storage.
     <p>Not for use by third-party applications. -->
     <permission android:name="android.permission.MOUNT_FORMAT_FILESYSTEMS"
         android:protectionLevel="signature|privileged" />
@@ -2428,7 +2428,7 @@
     <permission android:name="android.permission.ASEC_RENAME"
         android:protectionLevel="signature" />
 
-    <!-- @SystemApi Allows applications to write the apn settings and read sensitive fields of
+    <!-- Allows applications to write the apn settings and read sensitive fields of
          an existing apn settings like user and password.
     <p>Not for use by third-party applications. -->
     <permission android:name="android.permission.WRITE_APN_SETTINGS"
@@ -2529,40 +2529,40 @@
     <!-- ========================================= -->
     <eat-comment />
 
-    <!-- @SystemApi Allows an application to read or write the secure system settings.
+    <!-- Allows an application to read or write the secure system settings.
     <p>Not for use by third-party applications. -->
     <permission android:name="android.permission.WRITE_SECURE_SETTINGS"
         android:protectionLevel="signature|privileged|development" />
 
-    <!-- @SystemApi Allows an application to retrieve state dump information from system services.
+    <!-- Allows an application to retrieve state dump information from system services.
     <p>Not for use by third-party applications. -->
     <permission android:name="android.permission.DUMP"
         android:protectionLevel="signature|privileged|development" />
 
-    <!-- @SystemApi Allows an application to read the low-level system log files.
+    <!-- Allows an application to read the low-level system log files.
     <p>Not for use by third-party applications, because
     Log entries can contain the user's private information. -->
     <permission android:name="android.permission.READ_LOGS"
         android:protectionLevel="signature|privileged|development" />
 
-    <!-- @SystemApi Configure an application for debugging.
+    <!-- Configure an application for debugging.
     <p>Not for use by third-party applications. -->
     <permission android:name="android.permission.SET_DEBUG_APP"
         android:protectionLevel="signature|privileged|development" />
 
-    <!-- @SystemApi Allows an application to set the maximum number of (not needed)
+    <!-- Allows an application to set the maximum number of (not needed)
          application processes that can be running.
          <p>Not for use by third-party applications. -->
     <permission android:name="android.permission.SET_PROCESS_LIMIT"
         android:protectionLevel="signature|privileged|development" />
 
-    <!-- @SystemApi Allows an application to control whether activities are immediately
+    <!-- Allows an application to control whether activities are immediately
          finished when put in the background.
          <p>Not for use by third-party applications. -->
     <permission android:name="android.permission.SET_ALWAYS_FINISH"
         android:protectionLevel="signature|privileged|development" />
 
-    <!-- @SystemApi Allow an application to request that a signal be sent to all persistent processes.
+    <!-- Allow an application to request that a signal be sent to all persistent processes.
     <p>Not for use by third-party applications. -->
     <permission android:name="android.permission.SIGNAL_PERSISTENT_PROCESSES"
         android:protectionLevel="signature|privileged|development" />
@@ -2572,7 +2572,7 @@
     <!-- ==================================== -->
     <eat-comment />
 
-    <!-- @SystemApi Allows access to the list of accounts in the Accounts Service. -->
+    <!-- Allows access to the list of accounts in the Accounts Service. -->
     <permission android:name="android.permission.GET_ACCOUNTS_PRIVILEGED"
         android:protectionLevel="signature|privileged" />
 
@@ -2581,12 +2581,12 @@
     <permission android:name="android.permission.GET_PASSWORD"
         android:protectionLevel="signature" />
 
-    <!-- @SystemApi Allows applications to RW to diagnostic resources.
+    <!-- Allows applications to RW to diagnostic resources.
     <p>Not for use by third-party applications. -->
     <permission android:name="android.permission.DIAGNOSTIC"
         android:protectionLevel="signature" />
 
-    <!-- @SystemApi Allows an application to open, close, or disable the status bar
+    <!-- Allows an application to open, close, or disable the status bar
          and its icons.
          <p>Not for use by third-party applications. -->
     <permission android:name="android.permission.STATUS_BAR"
@@ -2611,7 +2611,7 @@
     <permission android:name="android.permission.FORCE_BACK"
         android:protectionLevel="signature" />
 
-    <!-- @SystemApi Allows an application to update device statistics.
+    <!-- Allows an application to update device statistics.
     <p>Not for use by third-party applications. -->
     <permission android:name="android.permission.UPDATE_DEVICE_STATS"
         android:protectionLevel="signature|privileged" />
@@ -3017,7 +3017,7 @@
         android:description="@string/permdesc_requestDeletePackages"
         android:protectionLevel="normal" />
 
-    <!-- @SystemApi Allows an application to install packages.
+    <!-- Allows an application to install packages.
     <p>Not for use by third-party applications. -->
     <permission android:name="android.permission.INSTALL_PACKAGES"
       android:protectionLevel="signature|privileged" />
@@ -3090,7 +3090,7 @@
     <permission android:name="android.permission.FORCE_PERSISTABLE_URI_PERMISSIONS"
         android:protectionLevel="signature" />
 
-    <!-- @SystemApi Old permission for deleting an app's cache files, no longer used,
+    <!-- Old permission for deleting an app's cache files, no longer used,
          but signals for us to quietly ignore calls instead of throwing an exception. -->
     <permission android:name="android.permission.DELETE_CACHE_FILES"
         android:protectionLevel="signature|privileged" />
@@ -3100,7 +3100,7 @@
     <permission android:name="android.permission.INTERNAL_DELETE_CACHE_FILES"
         android:protectionLevel="signature" />
 
-    <!-- @SystemApi Allows an application to delete packages.
+    <!-- Allows an application to delete packages.
          <p>Not for use by third-party applications.
          <p>Starting in {@link android.os.Build.VERSION_CODES#N}, user confirmation is requested
          when the application deleting the package is not the same application that installed the
@@ -3113,7 +3113,7 @@
     <permission android:name="android.permission.MOVE_PACKAGE"
         android:protectionLevel="signature|privileged" />
 
-    <!-- @SystemApi Allows an application to change whether an application component (other than its own) is
+    <!-- Allows an application to change whether an application component (other than its own) is
          enabled or not.
          <p>Not for use by third-party applications. -->
     <permission android:name="android.permission.CHANGE_COMPONENT_ENABLED_STATE"
@@ -3146,7 +3146,7 @@
     <permission android:name="android.permission.ACCESS_SURFACE_FLINGER"
         android:protectionLevel="signature" />
 
-    <!-- @SystemApi Allows an application to take screen shots and more generally
+    <!-- Allows an application to take screen shots and more generally
          get access to the frame buffer data.
          <p>Not for use by third-party applications. -->
     <permission android:name="android.permission.READ_FRAME_BUFFER"
@@ -3222,7 +3222,7 @@
         android:protectionLevel="signature|privileged" />
     <uses-permission android:name="android.permission.CONTROL_VPN" />
 
-    <!-- @SystemApi Allows an application to capture audio output.
+    <!-- Allows an application to capture audio output.
          <p>Not for use by third-party applications.</p> -->
     <permission android:name="android.permission.CAPTURE_AUDIO_OUTPUT"
         android:protectionLevel="signature|privileged" />
@@ -3239,17 +3239,17 @@
     <permission android:name="android.permission.MODIFY_AUDIO_ROUTING"
         android:protectionLevel="signature|privileged" />
 
-    <!-- @SystemApi Allows an application to capture video output.
+    <!-- Allows an application to capture video output.
          <p>Not for use by third-party applications.</p> -->
     <permission android:name="android.permission.CAPTURE_VIDEO_OUTPUT"
         android:protectionLevel="signature|privileged" />
 
-    <!-- @SystemApi Allows an application to capture secure video output.
+    <!-- Allows an application to capture secure video output.
          <p>Not for use by third-party applications.</p> -->
     <permission android:name="android.permission.CAPTURE_SECURE_VIDEO_OUTPUT"
         android:protectionLevel="signature|privileged" />
 
-    <!-- @SystemApi Allows an application to know what content is playing and control its playback.
+    <!-- Allows an application to know what content is playing and control its playback.
          <p>Not for use by third-party applications due to privacy of media consumption</p>  -->
     <permission android:name="android.permission.MEDIA_CONTENT_CONTROL"
         android:protectionLevel="signature|privileged" />
@@ -3276,7 +3276,7 @@
     <permission android:name="android.permission.BRICK"
         android:protectionLevel="signature" />
 
-    <!-- @SystemApi Required to be able to reboot the device.
+    <!-- Required to be able to reboot the device.
     <p>Not for use by third-party applications. -->
     <permission android:name="android.permission.REBOOT"
         android:protectionLevel="signature|privileged" />
@@ -3331,11 +3331,11 @@
     <permission android:name="android.permission.BROADCAST_NETWORK_PRIVILEGED"
         android:protectionLevel="signature|privileged" />
 
-    <!-- @SystemApi Not for use by third-party applications. -->
+    <!-- Not for use by third-party applications. -->
     <permission android:name="android.permission.MASTER_CLEAR"
         android:protectionLevel="signature|privileged" />
 
-    <!-- @SystemApi Allows an application to call any phone number, including emergency
+    <!-- Allows an application to call any phone number, including emergency
          numbers, without going through the Dialer user interface for the user
          to confirm the call being placed.
          <p>Not for use by third-party applications. -->
@@ -3350,19 +3350,19 @@
     <permission android:name="android.permission.PERFORM_SIM_ACTIVATION"
         android:protectionLevel="signature|privileged" />
 
-    <!-- @SystemApi Allows enabling/disabling location update notifications from
+    <!-- Allows enabling/disabling location update notifications from
          the radio.
          <p>Not for use by third-party applications. -->
     <permission android:name="android.permission.CONTROL_LOCATION_UPDATES"
         android:protectionLevel="signature|privileged" />
 
-    <!-- @SystemApi Allows read/write access to the "properties" table in the checkin
+    <!-- Allows read/write access to the "properties" table in the checkin
          database, to change values that get uploaded.
          <p>Not for use by third-party applications. -->
     <permission android:name="android.permission.ACCESS_CHECKIN_PROPERTIES"
         android:protectionLevel="signature|privileged" />
 
-    <!-- @SystemApi Allows an application to collect component usage
+    <!-- Allows an application to collect component usage
          statistics
          <p>Declaring the permission implies intention to use the API and the user of the
          device can grant permission through the Settings application. -->
@@ -3395,7 +3395,7 @@
         android:description="@string/permdesc_requestIgnoreBatteryOptimizations"
         android:protectionLevel="normal" />
 
-    <!-- @SystemApi Allows an application to collect battery statistics -->
+    <!-- Allows an application to collect battery statistics -->
     <permission android:name="android.permission.BATTERY_STATS"
         android:protectionLevel="signature|privileged|development" />
 
@@ -3424,12 +3424,12 @@
     <permission android:name="android.permission.CONFIRM_FULL_BACKUP"
         android:protectionLevel="signature" />
 
-    <!-- @SystemApi Must be required by a {@link android.widget.RemoteViewsService},
+    <!-- Must be required by a {@link android.widget.RemoteViewsService},
          to ensure that only the system can bind to it. -->
     <permission android:name="android.permission.BIND_REMOTEVIEWS"
         android:protectionLevel="signature|privileged" />
 
-    <!-- @SystemApi Allows an application to tell the AppWidget service which application
+    <!-- Allows an application to tell the AppWidget service which application
          can access AppWidget's data.  The normal user flow is that a user
          picks an AppWidget to go into a particular host, thereby giving that
          host application access to the private data from the AppWidget app.
@@ -3460,7 +3460,7 @@
     <permission android:name="android.permission.CHANGE_BACKGROUND_DATA_SETTING"
         android:protectionLevel="signature" />
 
-    <!-- @SystemApi This permission can be used on content providers to allow the global
+    <!-- This permission can be used on content providers to allow the global
          search system to access their data.  Typically it used when the
          provider has some permissions protecting it (which global search
          would not be expected to hold), and added as a read-only permission
diff --git a/libs/androidfw/LocaleData.cpp b/libs/androidfw/LocaleData.cpp
index 889d166..020cef6 100644
--- a/libs/androidfw/LocaleData.cpp
+++ b/libs/androidfw/LocaleData.cpp
@@ -34,11 +34,11 @@
 }
 
 inline uint32_t dropRegion(uint32_t packed_locale) {
-    return packed_locale & 0xFFFF0000lu;
+    return packed_locale & 0xFFFF0000LU;
 }
 
 inline bool hasRegion(uint32_t packed_locale) {
-    return (packed_locale & 0x0000FFFFlu) != 0;
+    return (packed_locale & 0x0000FFFFLU) != 0;
 }
 
 const size_t SCRIPT_LENGTH = 4;
@@ -122,9 +122,9 @@
     return (REPRESENTATIVE_LOCALES.count(packed_locale) != 0);
 }
 
-const uint32_t US_SPANISH = 0x65735553lu; // es-US
-const uint32_t MEXICAN_SPANISH = 0x65734D58lu; // es-MX
-const uint32_t LATIN_AMERICAN_SPANISH = 0x6573A424lu; // es-419
+const uint32_t US_SPANISH = 0x65735553LU; // es-US
+const uint32_t MEXICAN_SPANISH = 0x65734D58LU; // es-MX
+const uint32_t LATIN_AMERICAN_SPANISH = 0x6573A424LU; // es-419
 
 // The two locales es-US and es-MX are treated as special fallbacks for es-419.
 // If there is no es-419, they are considered its equivalent.
@@ -225,8 +225,8 @@
 }
 
 const uint32_t ENGLISH_STOP_LIST[2] = {
-    0x656E0000lu, // en
-    0x656E8400lu, // en-001
+    0x656E0000LU, // en
+    0x656E8400LU, // en-001
 };
 const char ENGLISH_CHARS[2] = {'e', 'n'};
 const char LATIN_CHARS[4] = {'L', 'a', 't', 'n'};
diff --git a/libs/androidfw/LocaleDataTables.cpp b/libs/androidfw/LocaleDataTables.cpp
index 7c381ef..c276a23 100644
--- a/libs/androidfw/LocaleDataTables.cpp
+++ b/libs/androidfw/LocaleDataTables.cpp
@@ -1446,733 +1446,733 @@
 });
 
 std::unordered_set<uint64_t> REPRESENTATIVE_LOCALES({
-    0x616145544C61746Ellu, // aa_Latn_ET
-    0x616247454379726Cllu, // ab_Cyrl_GE
-    0xC42047484C61746Ellu, // abr_Latn_GH
-    0x904049444C61746Ellu, // ace_Latn_ID
-    0x9C4055474C61746Ellu, // ach_Latn_UG
-    0x806047484C61746Ellu, // ada_Latn_GH
-    0xE06052554379726Cllu, // ady_Cyrl_RU
-    0x6165495241767374llu, // ae_Avst_IR
-    0x8480544E41726162llu, // aeb_Arab_TN
-    0x61665A414C61746Ellu, // af_Latn_ZA
-    0xC0C0434D4C61746Ellu, // agq_Latn_CM
-    0xB8E0494E41686F6Dllu, // aho_Ahom_IN
-    0x616B47484C61746Ellu, // ak_Latn_GH
-    0xA940495158737578llu, // akk_Xsux_IQ
-    0xB560584B4C61746Ellu, // aln_Latn_XK
-    0xCD6052554379726Cllu, // alt_Cyrl_RU
-    0x616D455445746869llu, // am_Ethi_ET
-    0xB9804E474C61746Ellu, // amo_Latn_NG
-    0xE5C049444C61746Ellu, // aoz_Latn_ID
-    0x8DE0544741726162llu, // apd_Arab_TG
-    0x6172454741726162llu, // ar_Arab_EG
-    0x8A20495241726D69llu, // arc_Armi_IR
-    0x8A204A4F4E626174llu, // arc_Nbat_JO
-    0x8A20535950616C6Dllu, // arc_Palm_SY
-    0xB620434C4C61746Ellu, // arn_Latn_CL
-    0xBA20424F4C61746Ellu, // aro_Latn_BO
-    0xC220445A41726162llu, // arq_Arab_DZ
-    0xE2204D4141726162llu, // ary_Arab_MA
-    0xE620454741726162llu, // arz_Arab_EG
-    0x6173494E42656E67llu, // as_Beng_IN
-    0x8240545A4C61746Ellu, // asa_Latn_TZ
-    0x9240555353676E77llu, // ase_Sgnw_US
-    0xCE4045534C61746Ellu, // ast_Latn_ES
-    0xA66043414C61746Ellu, // atj_Latn_CA
-    0x617652554379726Cllu, // av_Cyrl_RU
-    0x82C0494E44657661llu, // awa_Deva_IN
-    0x6179424F4C61746Ellu, // ay_Latn_BO
-    0x617A495241726162llu, // az_Arab_IR
-    0x617A415A4C61746Ellu, // az_Latn_AZ
-    0x626152554379726Cllu, // ba_Cyrl_RU
-    0xAC01504B41726162llu, // bal_Arab_PK
-    0xB40149444C61746Ellu, // ban_Latn_ID
-    0xBC014E5044657661llu, // bap_Deva_NP
-    0xC40141544C61746Ellu, // bar_Latn_AT
-    0xC801434D4C61746Ellu, // bas_Latn_CM
-    0xDC01434D42616D75llu, // bax_Bamu_CM
-    0x882149444C61746Ellu, // bbc_Latn_ID
-    0xA421434D4C61746Ellu, // bbj_Latn_CM
-    0xA04143494C61746Ellu, // bci_Latn_CI
-    0x626542594379726Cllu, // be_Cyrl_BY
-    0xA481534441726162llu, // bej_Arab_SD
-    0xB0815A4D4C61746Ellu, // bem_Latn_ZM
-    0xD88149444C61746Ellu, // bew_Latn_ID
-    0xE481545A4C61746Ellu, // bez_Latn_TZ
-    0x8CA1434D4C61746Ellu, // bfd_Latn_CM
-    0xC0A1494E54616D6Cllu, // bfq_Taml_IN
-    0xCCA1504B41726162llu, // bft_Arab_PK
-    0xE0A1494E44657661llu, // bfy_Deva_IN
-    0x626742474379726Cllu, // bg_Cyrl_BG
-    0x88C1494E44657661llu, // bgc_Deva_IN
-    0xB4C1504B41726162llu, // bgn_Arab_PK
-    0xDCC154524772656Bllu, // bgx_Grek_TR
-    0x84E1494E44657661llu, // bhb_Deva_IN
-    0xA0E1494E44657661llu, // bhi_Deva_IN
-    0xA8E150484C61746Ellu, // bhk_Latn_PH
-    0xB8E1494E44657661llu, // bho_Deva_IN
-    0x626956554C61746Ellu, // bi_Latn_VU
-    0xA90150484C61746Ellu, // bik_Latn_PH
-    0xB5014E474C61746Ellu, // bin_Latn_NG
-    0xA521494E44657661llu, // bjj_Deva_IN
-    0xB52149444C61746Ellu, // bjn_Latn_ID
-    0xB141434D4C61746Ellu, // bkm_Latn_CM
-    0xD14150484C61746Ellu, // bku_Latn_PH
-    0xCD61564E54617674llu, // blt_Tavt_VN
-    0x626D4D4C4C61746Ellu, // bm_Latn_ML
-    0xC1814D4C4C61746Ellu, // bmq_Latn_ML
-    0x626E424442656E67llu, // bn_Beng_BD
-    0x626F434E54696274llu, // bo_Tibt_CN
-    0xE1E1494E42656E67llu, // bpy_Beng_IN
-    0xA201495241726162llu, // bqi_Arab_IR
-    0xD60143494C61746Ellu, // bqv_Latn_CI
-    0x627246524C61746Ellu, // br_Latn_FR
-    0x8221494E44657661llu, // bra_Deva_IN
-    0x9E21504B41726162llu, // brh_Arab_PK
-    0xDE21494E44657661llu, // brx_Deva_IN
-    0x627342414C61746Ellu, // bs_Latn_BA
-    0xC2414C5242617373llu, // bsq_Bass_LR
-    0xCA41434D4C61746Ellu, // bss_Latn_CM
-    0xBA6150484C61746Ellu, // bto_Latn_PH
-    0xD661504B44657661llu, // btv_Deva_PK
-    0x828152554379726Cllu, // bua_Cyrl_RU
-    0x8A8159544C61746Ellu, // buc_Latn_YT
-    0x9A8149444C61746Ellu, // bug_Latn_ID
-    0xB281434D4C61746Ellu, // bum_Latn_CM
-    0x86A147514C61746Ellu, // bvb_Latn_GQ
-    0xB701455245746869llu, // byn_Ethi_ER
-    0xD701434D4C61746Ellu, // byv_Latn_CM
-    0x93214D4C4C61746Ellu, // bze_Latn_ML
-    0x636145534C61746Ellu, // ca_Latn_ES
-    0x9C424E474C61746Ellu, // cch_Latn_NG
-    0xBC42494E42656E67llu, // ccp_Beng_IN
-    0xBC42424443616B6Dllu, // ccp_Cakm_BD
-    0x636552554379726Cllu, // ce_Cyrl_RU
-    0x848250484C61746Ellu, // ceb_Latn_PH
-    0x98C255474C61746Ellu, // cgg_Latn_UG
-    0x636847554C61746Ellu, // ch_Latn_GU
-    0xA8E2464D4C61746Ellu, // chk_Latn_FM
-    0xB0E252554379726Cllu, // chm_Cyrl_RU
-    0xB8E255534C61746Ellu, // cho_Latn_US
-    0xBCE243414C61746Ellu, // chp_Latn_CA
-    0xC4E2555343686572llu, // chr_Cher_US
-    0x81224B4841726162llu, // cja_Arab_KH
-    0xB122564E4368616Dllu, // cjm_Cham_VN
-    0x8542495141726162llu, // ckb_Arab_IQ
-    0x636F46524C61746Ellu, // co_Latn_FR
-    0xBDC24547436F7074llu, // cop_Copt_EG
-    0xC9E250484C61746Ellu, // cps_Latn_PH
-    0x6372434143616E73llu, // cr_Cans_CA
-    0xA622434143616E73llu, // crj_Cans_CA
-    0xAA22434143616E73llu, // crk_Cans_CA
-    0xAE22434143616E73llu, // crl_Cans_CA
-    0xB222434143616E73llu, // crm_Cans_CA
-    0xCA2253434C61746Ellu, // crs_Latn_SC
-    0x6373435A4C61746Ellu, // cs_Latn_CZ
-    0x8642504C4C61746Ellu, // csb_Latn_PL
-    0xDA42434143616E73llu, // csw_Cans_CA
-    0x8E624D4D50617563llu, // ctd_Pauc_MM
-    0x637552554379726Cllu, // cu_Cyrl_RU
-    0x63754247476C6167llu, // cu_Glag_BG
-    0x637652554379726Cllu, // cv_Cyrl_RU
-    0x637947424C61746Ellu, // cy_Latn_GB
-    0x6461444B4C61746Ellu, // da_Latn_DK
-    0xA80355534C61746Ellu, // dak_Latn_US
-    0xC40352554379726Cllu, // dar_Cyrl_RU
-    0xD4034B454C61746Ellu, // dav_Latn_KE
-    0x8843494E41726162llu, // dcc_Arab_IN
-    0x646544454C61746Ellu, // de_Latn_DE
-    0xB48343414C61746Ellu, // den_Latn_CA
-    0xC4C343414C61746Ellu, // dgr_Latn_CA
-    0x91234E454C61746Ellu, // dje_Latn_NE
-    0xA5A343494C61746Ellu, // dnj_Latn_CI
-    0xA1C3494E41726162llu, // doi_Arab_IN
-    0x864344454C61746Ellu, // dsb_Latn_DE
-    0xB2634D4C4C61746Ellu, // dtm_Latn_ML
-    0xBE634D594C61746Ellu, // dtp_Latn_MY
-    0xE2634E5044657661llu, // dty_Deva_NP
-    0x8283434D4C61746Ellu, // dua_Latn_CM
-    0x64764D5654686161llu, // dv_Thaa_MV
-    0xBB03534E4C61746Ellu, // dyo_Latn_SN
-    0xD30342464C61746Ellu, // dyu_Latn_BF
-    0x647A425454696274llu, // dz_Tibt_BT
-    0xD0244B454C61746Ellu, // ebu_Latn_KE
-    0x656547484C61746Ellu, // ee_Latn_GH
-    0xA0A44E474C61746Ellu, // efi_Latn_NG
-    0xACC449544C61746Ellu, // egl_Latn_IT
-    0xE0C4454745677970llu, // egy_Egyp_EG
-    0xE1444D4D4B616C69llu, // eky_Kali_MM
-    0x656C47524772656Bllu, // el_Grek_GR
-    0x656E47424C61746Ellu, // en_Latn_GB
-    0x656E55534C61746Ellu, // en_Latn_US
-    0x656E474253686177llu, // en_Shaw_GB
-    0x657345534C61746Ellu, // es_Latn_ES
-    0x65734D584C61746Ellu, // es_Latn_MX
-    0x657355534C61746Ellu, // es_Latn_US
-    0xD24455534C61746Ellu, // esu_Latn_US
-    0x657445454C61746Ellu, // et_Latn_EE
-    0xCE6449544974616Cllu, // ett_Ital_IT
-    0x657545534C61746Ellu, // eu_Latn_ES
-    0xBAC4434D4C61746Ellu, // ewo_Latn_CM
-    0xCEE445534C61746Ellu, // ext_Latn_ES
-    0x6661495241726162llu, // fa_Arab_IR
-    0xB40547514C61746Ellu, // fan_Latn_GQ
-    0x6666474E41646C6Dllu, // ff_Adlm_GN
-    0x6666534E4C61746Ellu, // ff_Latn_SN
-    0xB0A54D4C4C61746Ellu, // ffm_Latn_ML
-    0x666946494C61746Ellu, // fi_Latn_FI
-    0x8105534441726162llu, // fia_Arab_SD
-    0xAD0550484C61746Ellu, // fil_Latn_PH
-    0xCD0553454C61746Ellu, // fit_Latn_SE
-    0x666A464A4C61746Ellu, // fj_Latn_FJ
-    0x666F464F4C61746Ellu, // fo_Latn_FO
-    0xB5C5424A4C61746Ellu, // fon_Latn_BJ
-    0x667246524C61746Ellu, // fr_Latn_FR
-    0x8A2555534C61746Ellu, // frc_Latn_US
-    0xBE2546524C61746Ellu, // frp_Latn_FR
-    0xC62544454C61746Ellu, // frr_Latn_DE
-    0xCA2544454C61746Ellu, // frs_Latn_DE
-    0x8685434D41726162llu, // fub_Arab_CM
-    0x8E8557464C61746Ellu, // fud_Latn_WF
-    0x9685474E4C61746Ellu, // fuf_Latn_GN
-    0xC2854E454C61746Ellu, // fuq_Latn_NE
-    0xC68549544C61746Ellu, // fur_Latn_IT
-    0xD6854E474C61746Ellu, // fuv_Latn_NG
-    0xC6A553444C61746Ellu, // fvr_Latn_SD
-    0x66794E4C4C61746Ellu, // fy_Latn_NL
-    0x676149454C61746Ellu, // ga_Latn_IE
-    0x800647484C61746Ellu, // gaa_Latn_GH
-    0x98064D444C61746Ellu, // gag_Latn_MD
-    0xB406434E48616E73llu, // gan_Hans_CN
-    0xE00649444C61746Ellu, // gay_Latn_ID
-    0xB026494E44657661llu, // gbm_Deva_IN
-    0xE426495241726162llu, // gbz_Arab_IR
-    0xC44647464C61746Ellu, // gcr_Latn_GF
-    0x676447424C61746Ellu, // gd_Latn_GB
-    0xE486455445746869llu, // gez_Ethi_ET
-    0xB4C64E5044657661llu, // ggn_Deva_NP
-    0xAD064B494C61746Ellu, // gil_Latn_KI
-    0xA926504B41726162llu, // gjk_Arab_PK
-    0xD126504B41726162llu, // gju_Arab_PK
-    0x676C45534C61746Ellu, // gl_Latn_ES
-    0xA966495241726162llu, // glk_Arab_IR
-    0x676E50594C61746Ellu, // gn_Latn_PY
-    0xB1C6494E44657661llu, // gom_Deva_IN
-    0xB5C6494E54656C75llu, // gon_Telu_IN
-    0xC5C649444C61746Ellu, // gor_Latn_ID
-    0xC9C64E4C4C61746Ellu, // gos_Latn_NL
-    0xCDC65541476F7468llu, // got_Goth_UA
-    0x8A26435943707274llu, // grc_Cprt_CY
-    0x8A2647524C696E62llu, // grc_Linb_GR
-    0xCE26494E42656E67llu, // grt_Beng_IN
-    0xDA4643484C61746Ellu, // gsw_Latn_CH
-    0x6775494E47756A72llu, // gu_Gujr_IN
-    0x868642524C61746Ellu, // gub_Latn_BR
-    0x8A86434F4C61746Ellu, // guc_Latn_CO
-    0xC68647484C61746Ellu, // gur_Latn_GH
-    0xE6864B454C61746Ellu, // guz_Latn_KE
-    0x6776494D4C61746Ellu, // gv_Latn_IM
-    0xC6A64E5044657661llu, // gvr_Deva_NP
-    0xA2C643414C61746Ellu, // gwi_Latn_CA
-    0x68614E474C61746Ellu, // ha_Latn_NG
-    0xA807434E48616E73llu, // hak_Hans_CN
-    0xD80755534C61746Ellu, // haw_Latn_US
-    0xE407414641726162llu, // haz_Arab_AF
-    0x6865494C48656272llu, // he_Hebr_IL
-    0x6869494E44657661llu, // hi_Deva_IN
-    0x9507464A4C61746Ellu, // hif_Latn_FJ
-    0xAD0750484C61746Ellu, // hil_Latn_PH
-    0xD1675452486C7577llu, // hlu_Hluw_TR
-    0x8D87434E506C7264llu, // hmd_Plrd_CN
-    0x8DA7504B41726162llu, // hnd_Arab_PK
-    0x91A7494E44657661llu, // hne_Deva_IN
-    0xA5A74C41486D6E67llu, // hnj_Hmng_LA
-    0xB5A750484C61746Ellu, // hnn_Latn_PH
-    0xB9A7504B41726162llu, // hno_Arab_PK
-    0x686F50474C61746Ellu, // ho_Latn_PG
-    0x89C7494E44657661llu, // hoc_Deva_IN
-    0xA5C7494E44657661llu, // hoj_Deva_IN
-    0x687248524C61746Ellu, // hr_Latn_HR
-    0x864744454C61746Ellu, // hsb_Latn_DE
-    0xB647434E48616E73llu, // hsn_Hans_CN
-    0x687448544C61746Ellu, // ht_Latn_HT
-    0x687548554C61746Ellu, // hu_Latn_HU
-    0x6879414D41726D6Ellu, // hy_Armn_AM
-    0x687A4E414C61746Ellu, // hz_Latn_NA
-    0x696146524C61746Ellu, // ia_Latn_FR
-    0x80284D594C61746Ellu, // iba_Latn_MY
-    0x84284E474C61746Ellu, // ibb_Latn_NG
-    0x696449444C61746Ellu, // id_Latn_ID
-    0x69674E474C61746Ellu, // ig_Latn_NG
-    0x6969434E59696969llu, // ii_Yiii_CN
-    0x696B55534C61746Ellu, // ik_Latn_US
-    0xCD4843414C61746Ellu, // ikt_Latn_CA
-    0xB96850484C61746Ellu, // ilo_Latn_PH
-    0x696E49444C61746Ellu, // in_Latn_ID
-    0x9DA852554379726Cllu, // inh_Cyrl_RU
-    0x697349534C61746Ellu, // is_Latn_IS
-    0x697449544C61746Ellu, // it_Latn_IT
-    0x6975434143616E73llu, // iu_Cans_CA
-    0x6977494C48656272llu, // iw_Hebr_IL
-    0x9F2852554C61746Ellu, // izh_Latn_RU
-    0x6A614A504A70616Ellu, // ja_Jpan_JP
-    0xB0094A4D4C61746Ellu, // jam_Latn_JM
-    0xB8C9434D4C61746Ellu, // jgo_Latn_CM
-    0x8989545A4C61746Ellu, // jmc_Latn_TZ
-    0xAD894E5044657661llu, // jml_Deva_NP
-    0xCE89444B4C61746Ellu, // jut_Latn_DK
-    0x6A7649444C61746Ellu, // jv_Latn_ID
-    0x6A7749444C61746Ellu, // jw_Latn_ID
-    0x6B61474547656F72llu, // ka_Geor_GE
-    0x800A555A4379726Cllu, // kaa_Cyrl_UZ
-    0x840A445A4C61746Ellu, // kab_Latn_DZ
-    0x880A4D4D4C61746Ellu, // kac_Latn_MM
-    0xA40A4E474C61746Ellu, // kaj_Latn_NG
-    0xB00A4B454C61746Ellu, // kam_Latn_KE
-    0xB80A4D4C4C61746Ellu, // kao_Latn_ML
-    0x8C2A52554379726Cllu, // kbd_Cyrl_RU
-    0xE02A4E4541726162llu, // kby_Arab_NE
-    0x984A4E474C61746Ellu, // kcg_Latn_NG
-    0xA84A5A574C61746Ellu, // kck_Latn_ZW
-    0x906A545A4C61746Ellu, // kde_Latn_TZ
-    0x9C6A544741726162llu, // kdh_Arab_TG
-    0xCC6A544854686169llu, // kdt_Thai_TH
-    0x808A43564C61746Ellu, // kea_Latn_CV
-    0xB48A434D4C61746Ellu, // ken_Latn_CM
-    0xB8AA43494C61746Ellu, // kfo_Latn_CI
-    0xC4AA494E44657661llu, // kfr_Deva_IN
-    0xE0AA494E44657661llu, // kfy_Deva_IN
-    0x6B6743444C61746Ellu, // kg_Latn_CD
-    0x90CA49444C61746Ellu, // kge_Latn_ID
-    0xBCCA42524C61746Ellu, // kgp_Latn_BR
-    0x80EA494E4C61746Ellu, // kha_Latn_IN
-    0x84EA434E54616C75llu, // khb_Talu_CN
-    0xB4EA494E44657661llu, // khn_Deva_IN
-    0xC0EA4D4C4C61746Ellu, // khq_Latn_ML
-    0xCCEA494E4D796D72llu, // kht_Mymr_IN
-    0xD8EA504B41726162llu, // khw_Arab_PK
-    0x6B694B454C61746Ellu, // ki_Latn_KE
-    0xD10A54524C61746Ellu, // kiu_Latn_TR
-    0x6B6A4E414C61746Ellu, // kj_Latn_NA
-    0x992A4C414C616F6Fllu, // kjg_Laoo_LA
-    0x6B6B434E41726162llu, // kk_Arab_CN
-    0x6B6B4B5A4379726Cllu, // kk_Cyrl_KZ
-    0xA54A434D4C61746Ellu, // kkj_Latn_CM
-    0x6B6C474C4C61746Ellu, // kl_Latn_GL
-    0xB56A4B454C61746Ellu, // kln_Latn_KE
-    0x6B6D4B484B686D72llu, // km_Khmr_KH
-    0x858A414F4C61746Ellu, // kmb_Latn_AO
-    0x6B6E494E4B6E6461llu, // kn_Knda_IN
-    0x6B6F4B524B6F7265llu, // ko_Kore_KR
-    0xA1CA52554379726Cllu, // koi_Cyrl_RU
-    0xA9CA494E44657661llu, // kok_Deva_IN
-    0xC9CA464D4C61746Ellu, // kos_Latn_FM
-    0x91EA4C524C61746Ellu, // kpe_Latn_LR
-    0x8A2A52554379726Cllu, // krc_Cyrl_RU
-    0xA22A534C4C61746Ellu, // kri_Latn_SL
-    0xA62A50484C61746Ellu, // krj_Latn_PH
-    0xAE2A52554C61746Ellu, // krl_Latn_RU
-    0xD22A494E44657661llu, // kru_Deva_IN
-    0x6B73494E41726162llu, // ks_Arab_IN
-    0x864A545A4C61746Ellu, // ksb_Latn_TZ
-    0x964A434D4C61746Ellu, // ksf_Latn_CM
-    0x9E4A44454C61746Ellu, // ksh_Latn_DE
-    0x6B75495141726162llu, // ku_Arab_IQ
-    0x6B7554524C61746Ellu, // ku_Latn_TR
-    0xB28A52554379726Cllu, // kum_Cyrl_RU
-    0x6B7652554379726Cllu, // kv_Cyrl_RU
-    0xC6AA49444C61746Ellu, // kvr_Latn_ID
-    0xDEAA504B41726162llu, // kvx_Arab_PK
-    0x6B7747424C61746Ellu, // kw_Latn_GB
-    0xB2EA544854686169llu, // kxm_Thai_TH
-    0xBEEA504B41726162llu, // kxp_Arab_PK
-    0x6B79434E41726162llu, // ky_Arab_CN
-    0x6B794B474379726Cllu, // ky_Cyrl_KG
-    0x6B7954524C61746Ellu, // ky_Latn_TR
-    0x6C6156414C61746Ellu, // la_Latn_VA
-    0x840B47524C696E61llu, // lab_Lina_GR
-    0x8C0B494C48656272llu, // lad_Hebr_IL
-    0x980B545A4C61746Ellu, // lag_Latn_TZ
-    0x9C0B504B41726162llu, // lah_Arab_PK
-    0xA40B55474C61746Ellu, // laj_Latn_UG
-    0x6C624C554C61746Ellu, // lb_Latn_LU
-    0x902B52554379726Cllu, // lbe_Cyrl_RU
-    0xD82B49444C61746Ellu, // lbw_Latn_ID
-    0xBC4B434E54686169llu, // lcp_Thai_CN
-    0xBC8B494E4C657063llu, // lep_Lepc_IN
-    0xE48B52554379726Cllu, // lez_Cyrl_RU
-    0x6C6755474C61746Ellu, // lg_Latn_UG
-    0x6C694E4C4C61746Ellu, // li_Latn_NL
-    0x950B4E5044657661llu, // lif_Deva_NP
-    0x950B494E4C696D62llu, // lif_Limb_IN
-    0xA50B49544C61746Ellu, // lij_Latn_IT
-    0xC90B434E4C697375llu, // lis_Lisu_CN
-    0xBD2B49444C61746Ellu, // ljp_Latn_ID
-    0xA14B495241726162llu, // lki_Arab_IR
-    0xCD4B55534C61746Ellu, // lkt_Latn_US
-    0xB58B494E54656C75llu, // lmn_Telu_IN
-    0xB98B49544C61746Ellu, // lmo_Latn_IT
-    0x6C6E43444C61746Ellu, // ln_Latn_CD
-    0x6C6F4C414C616F6Fllu, // lo_Laoo_LA
-    0xADCB43444C61746Ellu, // lol_Latn_CD
-    0xE5CB5A4D4C61746Ellu, // loz_Latn_ZM
-    0x8A2B495241726162llu, // lrc_Arab_IR
-    0x6C744C544C61746Ellu, // lt_Latn_LT
-    0x9A6B4C564C61746Ellu, // ltg_Latn_LV
-    0x6C7543444C61746Ellu, // lu_Latn_CD
-    0x828B43444C61746Ellu, // lua_Latn_CD
-    0xBA8B4B454C61746Ellu, // luo_Latn_KE
-    0xE28B4B454C61746Ellu, // luy_Latn_KE
-    0xE68B495241726162llu, // luz_Arab_IR
-    0x6C764C564C61746Ellu, // lv_Latn_LV
-    0xAECB544854686169llu, // lwl_Thai_TH
-    0x9F2B434E48616E73llu, // lzh_Hans_CN
-    0xE72B54524C61746Ellu, // lzz_Latn_TR
-    0x8C0C49444C61746Ellu, // mad_Latn_ID
-    0x940C434D4C61746Ellu, // maf_Latn_CM
-    0x980C494E44657661llu, // mag_Deva_IN
-    0xA00C494E44657661llu, // mai_Deva_IN
-    0xA80C49444C61746Ellu, // mak_Latn_ID
-    0xB40C474D4C61746Ellu, // man_Latn_GM
-    0xB40C474E4E6B6F6Fllu, // man_Nkoo_GN
-    0xC80C4B454C61746Ellu, // mas_Latn_KE
-    0xE40C4D584C61746Ellu, // maz_Latn_MX
-    0x946C52554379726Cllu, // mdf_Cyrl_RU
-    0x9C6C50484C61746Ellu, // mdh_Latn_PH
-    0xC46C49444C61746Ellu, // mdr_Latn_ID
-    0xB48C534C4C61746Ellu, // men_Latn_SL
-    0xC48C4B454C61746Ellu, // mer_Latn_KE
-    0x80AC544841726162llu, // mfa_Arab_TH
-    0x90AC4D554C61746Ellu, // mfe_Latn_MU
-    0x6D674D474C61746Ellu, // mg_Latn_MG
-    0x9CCC4D5A4C61746Ellu, // mgh_Latn_MZ
-    0xB8CC434D4C61746Ellu, // mgo_Latn_CM
-    0xBCCC4E5044657661llu, // mgp_Deva_NP
-    0xE0CC545A4C61746Ellu, // mgy_Latn_TZ
-    0x6D684D484C61746Ellu, // mh_Latn_MH
-    0x6D694E5A4C61746Ellu, // mi_Latn_NZ
-    0xB50C49444C61746Ellu, // min_Latn_ID
-    0xC90C495148617472llu, // mis_Hatr_IQ
-    0x6D6B4D4B4379726Cllu, // mk_Cyrl_MK
-    0x6D6C494E4D6C796Dllu, // ml_Mlym_IN
-    0xC96C53444C61746Ellu, // mls_Latn_SD
-    0x6D6E4D4E4379726Cllu, // mn_Cyrl_MN
-    0x6D6E434E4D6F6E67llu, // mn_Mong_CN
-    0xA1AC494E42656E67llu, // mni_Beng_IN
-    0xD9AC4D4D4D796D72llu, // mnw_Mymr_MM
-    0x91CC43414C61746Ellu, // moe_Latn_CA
-    0x9DCC43414C61746Ellu, // moh_Latn_CA
-    0xC9CC42464C61746Ellu, // mos_Latn_BF
-    0x6D72494E44657661llu, // mr_Deva_IN
-    0x8E2C4E5044657661llu, // mrd_Deva_NP
-    0xA62C52554379726Cllu, // mrj_Cyrl_RU
-    0xBA2C42444D726F6Fllu, // mro_Mroo_BD
-    0x6D734D594C61746Ellu, // ms_Latn_MY
-    0x6D744D544C61746Ellu, // mt_Latn_MT
-    0xC66C494E44657661llu, // mtr_Deva_IN
-    0x828C434D4C61746Ellu, // mua_Latn_CM
-    0xCA8C55534C61746Ellu, // mus_Latn_US
-    0xE2AC504B41726162llu, // mvy_Arab_PK
-    0xAACC4D4C4C61746Ellu, // mwk_Latn_ML
-    0xC6CC494E44657661llu, // mwr_Deva_IN
-    0xD6CC49444C61746Ellu, // mwv_Latn_ID
-    0x8AEC5A574C61746Ellu, // mxc_Latn_ZW
-    0x6D794D4D4D796D72llu, // my_Mymr_MM
-    0xD70C52554379726Cllu, // myv_Cyrl_RU
-    0xDF0C55474C61746Ellu, // myx_Latn_UG
-    0xE70C49524D616E64llu, // myz_Mand_IR
-    0xB72C495241726162llu, // mzn_Arab_IR
-    0x6E614E524C61746Ellu, // na_Latn_NR
-    0xB40D434E48616E73llu, // nan_Hans_CN
-    0xBC0D49544C61746Ellu, // nap_Latn_IT
-    0xC00D4E414C61746Ellu, // naq_Latn_NA
-    0x6E624E4F4C61746Ellu, // nb_Latn_NO
-    0x9C4D4D584C61746Ellu, // nch_Latn_MX
-    0x6E645A574C61746Ellu, // nd_Latn_ZW
-    0x886D4D5A4C61746Ellu, // ndc_Latn_MZ
-    0xC86D44454C61746Ellu, // nds_Latn_DE
-    0x6E654E5044657661llu, // ne_Deva_NP
-    0xD88D4E5044657661llu, // new_Deva_NP
-    0x6E674E414C61746Ellu, // ng_Latn_NA
-    0xACCD4D5A4C61746Ellu, // ngl_Latn_MZ
-    0x90ED4D584C61746Ellu, // nhe_Latn_MX
-    0xD8ED4D584C61746Ellu, // nhw_Latn_MX
-    0xA50D49444C61746Ellu, // nij_Latn_ID
-    0xD10D4E554C61746Ellu, // niu_Latn_NU
-    0xB92D494E4C61746Ellu, // njo_Latn_IN
-    0x6E6C4E4C4C61746Ellu, // nl_Latn_NL
-    0x998D434D4C61746Ellu, // nmg_Latn_CM
-    0x6E6E4E4F4C61746Ellu, // nn_Latn_NO
-    0x9DAD434D4C61746Ellu, // nnh_Latn_CM
-    0x6E6F4E4F4C61746Ellu, // no_Latn_NO
-    0x8DCD54484C616E61llu, // nod_Lana_TH
-    0x91CD494E44657661llu, // noe_Deva_IN
-    0xB5CD534552756E72llu, // non_Runr_SE
-    0xBA0D474E4E6B6F6Fllu, // nqo_Nkoo_GN
-    0x6E725A414C61746Ellu, // nr_Latn_ZA
-    0xAA4D434143616E73llu, // nsk_Cans_CA
-    0xBA4D5A414C61746Ellu, // nso_Latn_ZA
-    0xCA8D53534C61746Ellu, // nus_Latn_SS
-    0x6E7655534C61746Ellu, // nv_Latn_US
-    0xC2ED434E4C61746Ellu, // nxq_Latn_CN
-    0x6E794D574C61746Ellu, // ny_Latn_MW
-    0xB30D545A4C61746Ellu, // nym_Latn_TZ
-    0xB70D55474C61746Ellu, // nyn_Latn_UG
-    0xA32D47484C61746Ellu, // nzi_Latn_GH
-    0x6F6346524C61746Ellu, // oc_Latn_FR
-    0x6F6D45544C61746Ellu, // om_Latn_ET
-    0x6F72494E4F727961llu, // or_Orya_IN
-    0x6F7347454379726Cllu, // os_Cyrl_GE
-    0x824E55534F736765llu, // osa_Osge_US
-    0xAA6E4D4E4F726B68llu, // otk_Orkh_MN
-    0x7061504B41726162llu, // pa_Arab_PK
-    0x7061494E47757275llu, // pa_Guru_IN
-    0x980F50484C61746Ellu, // pag_Latn_PH
-    0xAC0F495250686C69llu, // pal_Phli_IR
-    0xAC0F434E50686C70llu, // pal_Phlp_CN
-    0xB00F50484C61746Ellu, // pam_Latn_PH
-    0xBC0F41574C61746Ellu, // pap_Latn_AW
-    0xD00F50574C61746Ellu, // pau_Latn_PW
-    0x8C4F46524C61746Ellu, // pcd_Latn_FR
-    0xB04F4E474C61746Ellu, // pcm_Latn_NG
-    0x886F55534C61746Ellu, // pdc_Latn_US
-    0xCC6F43414C61746Ellu, // pdt_Latn_CA
-    0xB88F49525870656Fllu, // peo_Xpeo_IR
-    0xACAF44454C61746Ellu, // pfl_Latn_DE
-    0xB4EF4C4250686E78llu, // phn_Phnx_LB
-    0x814F494E42726168llu, // pka_Brah_IN
-    0xB94F4B454C61746Ellu, // pko_Latn_KE
-    0x706C504C4C61746Ellu, // pl_Latn_PL
-    0xC98F49544C61746Ellu, // pms_Latn_IT
-    0xCDAF47524772656Bllu, // pnt_Grek_GR
-    0xB5CF464D4C61746Ellu, // pon_Latn_FM
-    0x822F504B4B686172llu, // pra_Khar_PK
-    0x8E2F495241726162llu, // prd_Arab_IR
-    0x7073414641726162llu, // ps_Arab_AF
-    0x707442524C61746Ellu, // pt_Latn_BR
-    0xD28F47414C61746Ellu, // puu_Latn_GA
-    0x717550454C61746Ellu, // qu_Latn_PE
-    0x8A9047544C61746Ellu, // quc_Latn_GT
-    0x9A9045434C61746Ellu, // qug_Latn_EC
-    0xA411494E44657661llu, // raj_Deva_IN
-    0x945152454C61746Ellu, // rcf_Latn_RE
-    0xA49149444C61746Ellu, // rej_Latn_ID
-    0xB4D149544C61746Ellu, // rgn_Latn_IT
-    0x8111494E4C61746Ellu, // ria_Latn_IN
-    0x95114D4154666E67llu, // rif_Tfng_MA
-    0xC9314E5044657661llu, // rjs_Deva_NP
-    0xCD51424442656E67llu, // rkt_Beng_BD
-    0x726D43484C61746Ellu, // rm_Latn_CH
-    0x959146494C61746Ellu, // rmf_Latn_FI
-    0xB99143484C61746Ellu, // rmo_Latn_CH
-    0xCD91495241726162llu, // rmt_Arab_IR
-    0xD19153454C61746Ellu, // rmu_Latn_SE
-    0x726E42494C61746Ellu, // rn_Latn_BI
-    0x99B14D5A4C61746Ellu, // rng_Latn_MZ
-    0x726F524F4C61746Ellu, // ro_Latn_RO
-    0x85D149444C61746Ellu, // rob_Latn_ID
-    0x95D1545A4C61746Ellu, // rof_Latn_TZ
-    0xB271464A4C61746Ellu, // rtm_Latn_FJ
-    0x727552554379726Cllu, // ru_Cyrl_RU
-    0x929155414379726Cllu, // rue_Cyrl_UA
-    0x9A9153424C61746Ellu, // rug_Latn_SB
-    0x727752574C61746Ellu, // rw_Latn_RW
-    0xAAD1545A4C61746Ellu, // rwk_Latn_TZ
-    0xD3114A504B616E61llu, // ryu_Kana_JP
-    0x7361494E44657661llu, // sa_Deva_IN
-    0x941247484C61746Ellu, // saf_Latn_GH
-    0x9C1252554379726Cllu, // sah_Cyrl_RU
-    0xC0124B454C61746Ellu, // saq_Latn_KE
-    0xC81249444C61746Ellu, // sas_Latn_ID
-    0xCC12494E4C61746Ellu, // sat_Latn_IN
-    0xE412494E53617572llu, // saz_Saur_IN
-    0xBC32545A4C61746Ellu, // sbp_Latn_TZ
-    0x736349544C61746Ellu, // sc_Latn_IT
-    0xA852494E44657661llu, // sck_Deva_IN
-    0xB45249544C61746Ellu, // scn_Latn_IT
-    0xB85247424C61746Ellu, // sco_Latn_GB
-    0xC85243414C61746Ellu, // scs_Latn_CA
-    0x7364504B41726162llu, // sd_Arab_PK
-    0x7364494E44657661llu, // sd_Deva_IN
-    0x7364494E4B686F6Allu, // sd_Khoj_IN
-    0x7364494E53696E64llu, // sd_Sind_IN
-    0x887249544C61746Ellu, // sdc_Latn_IT
-    0x9C72495241726162llu, // sdh_Arab_IR
-    0x73654E4F4C61746Ellu, // se_Latn_NO
-    0x949243494C61746Ellu, // sef_Latn_CI
-    0x9C924D5A4C61746Ellu, // seh_Latn_MZ
-    0xA0924D584C61746Ellu, // sei_Latn_MX
-    0xC8924D4C4C61746Ellu, // ses_Latn_ML
-    0x736743464C61746Ellu, // sg_Latn_CF
-    0x80D249454F67616Dllu, // sga_Ogam_IE
-    0xC8D24C544C61746Ellu, // sgs_Latn_LT
-    0xA0F24D4154666E67llu, // shi_Tfng_MA
-    0xB4F24D4D4D796D72llu, // shn_Mymr_MM
-    0x73694C4B53696E68llu, // si_Sinh_LK
-    0x8D1245544C61746Ellu, // sid_Latn_ET
-    0x736B534B4C61746Ellu, // sk_Latn_SK
-    0xC552504B41726162llu, // skr_Arab_PK
-    0x736C53494C61746Ellu, // sl_Latn_SI
-    0xA172504C4C61746Ellu, // sli_Latn_PL
-    0xE17249444C61746Ellu, // sly_Latn_ID
-    0x736D57534C61746Ellu, // sm_Latn_WS
-    0x819253454C61746Ellu, // sma_Latn_SE
-    0xA59253454C61746Ellu, // smj_Latn_SE
-    0xB59246494C61746Ellu, // smn_Latn_FI
-    0xBD92494C53616D72llu, // smp_Samr_IL
-    0xC99246494C61746Ellu, // sms_Latn_FI
-    0x736E5A574C61746Ellu, // sn_Latn_ZW
-    0xA9B24D4C4C61746Ellu, // snk_Latn_ML
-    0x736F534F4C61746Ellu, // so_Latn_SO
-    0xD1D2544854686169llu, // sou_Thai_TH
-    0x7371414C4C61746Ellu, // sq_Latn_AL
-    0x737252534379726Cllu, // sr_Cyrl_RS
-    0x737252534C61746Ellu, // sr_Latn_RS
-    0x8632494E536F7261llu, // srb_Sora_IN
-    0xB63253524C61746Ellu, // srn_Latn_SR
-    0xC632534E4C61746Ellu, // srr_Latn_SN
-    0xDE32494E44657661llu, // srx_Deva_IN
-    0x73735A414C61746Ellu, // ss_Latn_ZA
-    0xE25245524C61746Ellu, // ssy_Latn_ER
-    0x73745A414C61746Ellu, // st_Latn_ZA
-    0xC27244454C61746Ellu, // stq_Latn_DE
-    0x737549444C61746Ellu, // su_Latn_ID
-    0xAA92545A4C61746Ellu, // suk_Latn_TZ
-    0xCA92474E4C61746Ellu, // sus_Latn_GN
-    0x737653454C61746Ellu, // sv_Latn_SE
-    0x7377545A4C61746Ellu, // sw_Latn_TZ
-    0x86D2595441726162llu, // swb_Arab_YT
-    0x8AD243444C61746Ellu, // swc_Latn_CD
-    0x9AD244454C61746Ellu, // swg_Latn_DE
-    0xD6D2494E44657661llu, // swv_Deva_IN
-    0xB6F249444C61746Ellu, // sxn_Latn_ID
-    0xAF12424442656E67llu, // syl_Beng_BD
-    0xC712495153797263llu, // syr_Syrc_IQ
-    0xAF32504C4C61746Ellu, // szl_Latn_PL
-    0x7461494E54616D6Cllu, // ta_Taml_IN
-    0xA4134E5044657661llu, // taj_Deva_NP
-    0xD83350484C61746Ellu, // tbw_Latn_PH
-    0xE053494E4B6E6461llu, // tcy_Knda_IN
-    0x8C73434E54616C65llu, // tdd_Tale_CN
-    0x98734E5044657661llu, // tdg_Deva_NP
-    0x9C734E5044657661llu, // tdh_Deva_NP
-    0x7465494E54656C75llu, // te_Telu_IN
-    0xB093534C4C61746Ellu, // tem_Latn_SL
-    0xB89355474C61746Ellu, // teo_Latn_UG
-    0xCC93544C4C61746Ellu, // tet_Latn_TL
-    0x7467504B41726162llu, // tg_Arab_PK
-    0x7467544A4379726Cllu, // tg_Cyrl_TJ
-    0x7468544854686169llu, // th_Thai_TH
-    0xACF34E5044657661llu, // thl_Deva_NP
-    0xC0F34E5044657661llu, // thq_Deva_NP
-    0xC4F34E5044657661llu, // thr_Deva_NP
-    0x7469455445746869llu, // ti_Ethi_ET
-    0x9913455245746869llu, // tig_Ethi_ER
-    0xD5134E474C61746Ellu, // tiv_Latn_NG
-    0x746B544D4C61746Ellu, // tk_Latn_TM
-    0xAD53544B4C61746Ellu, // tkl_Latn_TK
-    0xC553415A4C61746Ellu, // tkr_Latn_AZ
-    0xCD534E5044657661llu, // tkt_Deva_NP
-    0x746C50484C61746Ellu, // tl_Latn_PH
-    0xE173415A4C61746Ellu, // tly_Latn_AZ
-    0x9D934E454C61746Ellu, // tmh_Latn_NE
-    0x746E5A414C61746Ellu, // tn_Latn_ZA
-    0x746F544F4C61746Ellu, // to_Latn_TO
-    0x99D34D574C61746Ellu, // tog_Latn_MW
-    0xA1F350474C61746Ellu, // tpi_Latn_PG
-    0x747254524C61746Ellu, // tr_Latn_TR
-    0xD23354524C61746Ellu, // tru_Latn_TR
-    0xD63354574C61746Ellu, // trv_Latn_TW
-    0x74735A414C61746Ellu, // ts_Latn_ZA
-    0x8E5347524772656Bllu, // tsd_Grek_GR
-    0x96534E5044657661llu, // tsf_Deva_NP
-    0x9A5350484C61746Ellu, // tsg_Latn_PH
-    0xA653425454696274llu, // tsj_Tibt_BT
-    0x747452554379726Cllu, // tt_Cyrl_RU
-    0xA67355474C61746Ellu, // ttj_Latn_UG
-    0xCA73544854686169llu, // tts_Thai_TH
-    0xCE73415A4C61746Ellu, // ttt_Latn_AZ
-    0xB2934D574C61746Ellu, // tum_Latn_MW
-    0xAEB354564C61746Ellu, // tvl_Latn_TV
-    0xC2D34E454C61746Ellu, // twq_Latn_NE
-    0x9AF3434E54616E67llu, // txg_Tang_CN
-    0x747950464C61746Ellu, // ty_Latn_PF
-    0xD71352554379726Cllu, // tyv_Cyrl_RU
-    0xB3334D414C61746Ellu, // tzm_Latn_MA
-    0xB07452554379726Cllu, // udm_Cyrl_RU
-    0x7567434E41726162llu, // ug_Arab_CN
-    0x75674B5A4379726Cllu, // ug_Cyrl_KZ
-    0x80D4535955676172llu, // uga_Ugar_SY
-    0x756B55414379726Cllu, // uk_Cyrl_UA
-    0xA174464D4C61746Ellu, // uli_Latn_FM
-    0x8594414F4C61746Ellu, // umb_Latn_AO
-    0xC5B4494E42656E67llu, // unr_Beng_IN
-    0xC5B44E5044657661llu, // unr_Deva_NP
-    0xDDB4494E42656E67llu, // unx_Beng_IN
-    0x7572504B41726162llu, // ur_Arab_PK
-    0x757A414641726162llu, // uz_Arab_AF
-    0x757A555A4C61746Ellu, // uz_Latn_UZ
-    0xA0154C5256616969llu, // vai_Vaii_LR
-    0x76655A414C61746Ellu, // ve_Latn_ZA
-    0x889549544C61746Ellu, // vec_Latn_IT
-    0xBC9552554C61746Ellu, // vep_Latn_RU
-    0x7669564E4C61746Ellu, // vi_Latn_VN
-    0x891553584C61746Ellu, // vic_Latn_SX
-    0xC97542454C61746Ellu, // vls_Latn_BE
-    0x959544454C61746Ellu, // vmf_Latn_DE
-    0xD9954D5A4C61746Ellu, // vmw_Latn_MZ
-    0xCDD552554C61746Ellu, // vot_Latn_RU
-    0xBA3545454C61746Ellu, // vro_Latn_EE
-    0xB695545A4C61746Ellu, // vun_Latn_TZ
-    0x776142454C61746Ellu, // wa_Latn_BE
-    0x901643484C61746Ellu, // wae_Latn_CH
-    0xAC16455445746869llu, // wal_Ethi_ET
-    0xC41650484C61746Ellu, // war_Latn_PH
-    0xBC3641554C61746Ellu, // wbp_Latn_AU
-    0xC036494E54656C75llu, // wbq_Telu_IN
-    0xC436494E44657661llu, // wbr_Deva_IN
-    0xC97657464C61746Ellu, // wls_Latn_WF
-    0xA1B64B4D41726162llu, // wni_Arab_KM
-    0x776F534E4C61746Ellu, // wo_Latn_SN
-    0xB276494E44657661llu, // wtm_Deva_IN
-    0xD296434E48616E73llu, // wuu_Hans_CN
-    0xD41742524C61746Ellu, // xav_Latn_BR
-    0xC457545243617269llu, // xcr_Cari_TR
-    0x78685A414C61746Ellu, // xh_Latn_ZA
-    0x897754524C796369llu, // xlc_Lyci_TR
-    0x8D7754524C796469llu, // xld_Lydi_TR
-    0x9597474547656F72llu, // xmf_Geor_GE
-    0xB597434E4D616E69llu, // xmn_Mani_CN
-    0xC59753444D657263llu, // xmr_Merc_SD
-    0x81B753414E617262llu, // xna_Narb_SA
-    0xC5B7494E44657661llu, // xnr_Deva_IN
-    0x99D755474C61746Ellu, // xog_Latn_UG
-    0xC5F7495250727469llu, // xpr_Prti_IR
-    0x8257594553617262llu, // xsa_Sarb_YE
-    0xC6574E5044657661llu, // xsr_Deva_NP
-    0xB8184D5A4C61746Ellu, // yao_Latn_MZ
-    0xBC18464D4C61746Ellu, // yap_Latn_FM
-    0xD418434D4C61746Ellu, // yav_Latn_CM
-    0x8438434D4C61746Ellu, // ybb_Latn_CM
-    0x796F4E474C61746Ellu, // yo_Latn_NG
-    0xAE3842524C61746Ellu, // yrl_Latn_BR
-    0x82984D584C61746Ellu, // yua_Latn_MX
-    0x9298434E48616E73llu, // yue_Hans_CN
-    0x9298484B48616E74llu, // yue_Hant_HK
-    0x7A61434E4C61746Ellu, // za_Latn_CN
-    0x981953444C61746Ellu, // zag_Latn_SD
-    0xA4794B4D41726162llu, // zdj_Arab_KM
-    0x80994E4C4C61746Ellu, // zea_Latn_NL
-    0x9CD94D4154666E67llu, // zgh_Tfng_MA
-    0x7A685457426F706Fllu, // zh_Bopo_TW
-    0x7A68545748616E62llu, // zh_Hanb_TW
-    0x7A68434E48616E73llu, // zh_Hans_CN
-    0x7A68545748616E74llu, // zh_Hant_TW
-    0xB17954474C61746Ellu, // zlm_Latn_TG
-    0xA1994D594C61746Ellu, // zmi_Latn_MY
-    0x7A755A414C61746Ellu, // zu_Latn_ZA
-    0x833954524C61746Ellu, // zza_Latn_TR
+    0x616145544C61746ELLU, // aa_Latn_ET
+    0x616247454379726CLLU, // ab_Cyrl_GE
+    0xC42047484C61746ELLU, // abr_Latn_GH
+    0x904049444C61746ELLU, // ace_Latn_ID
+    0x9C4055474C61746ELLU, // ach_Latn_UG
+    0x806047484C61746ELLU, // ada_Latn_GH
+    0xE06052554379726CLLU, // ady_Cyrl_RU
+    0x6165495241767374LLU, // ae_Avst_IR
+    0x8480544E41726162LLU, // aeb_Arab_TN
+    0x61665A414C61746ELLU, // af_Latn_ZA
+    0xC0C0434D4C61746ELLU, // agq_Latn_CM
+    0xB8E0494E41686F6DLLU, // aho_Ahom_IN
+    0x616B47484C61746ELLU, // ak_Latn_GH
+    0xA940495158737578LLU, // akk_Xsux_IQ
+    0xB560584B4C61746ELLU, // aln_Latn_XK
+    0xCD6052554379726CLLU, // alt_Cyrl_RU
+    0x616D455445746869LLU, // am_Ethi_ET
+    0xB9804E474C61746ELLU, // amo_Latn_NG
+    0xE5C049444C61746ELLU, // aoz_Latn_ID
+    0x8DE0544741726162LLU, // apd_Arab_TG
+    0x6172454741726162LLU, // ar_Arab_EG
+    0x8A20495241726D69LLU, // arc_Armi_IR
+    0x8A204A4F4E626174LLU, // arc_Nbat_JO
+    0x8A20535950616C6DLLU, // arc_Palm_SY
+    0xB620434C4C61746ELLU, // arn_Latn_CL
+    0xBA20424F4C61746ELLU, // aro_Latn_BO
+    0xC220445A41726162LLU, // arq_Arab_DZ
+    0xE2204D4141726162LLU, // ary_Arab_MA
+    0xE620454741726162LLU, // arz_Arab_EG
+    0x6173494E42656E67LLU, // as_Beng_IN
+    0x8240545A4C61746ELLU, // asa_Latn_TZ
+    0x9240555353676E77LLU, // ase_Sgnw_US
+    0xCE4045534C61746ELLU, // ast_Latn_ES
+    0xA66043414C61746ELLU, // atj_Latn_CA
+    0x617652554379726CLLU, // av_Cyrl_RU
+    0x82C0494E44657661LLU, // awa_Deva_IN
+    0x6179424F4C61746ELLU, // ay_Latn_BO
+    0x617A495241726162LLU, // az_Arab_IR
+    0x617A415A4C61746ELLU, // az_Latn_AZ
+    0x626152554379726CLLU, // ba_Cyrl_RU
+    0xAC01504B41726162LLU, // bal_Arab_PK
+    0xB40149444C61746ELLU, // ban_Latn_ID
+    0xBC014E5044657661LLU, // bap_Deva_NP
+    0xC40141544C61746ELLU, // bar_Latn_AT
+    0xC801434D4C61746ELLU, // bas_Latn_CM
+    0xDC01434D42616D75LLU, // bax_Bamu_CM
+    0x882149444C61746ELLU, // bbc_Latn_ID
+    0xA421434D4C61746ELLU, // bbj_Latn_CM
+    0xA04143494C61746ELLU, // bci_Latn_CI
+    0x626542594379726CLLU, // be_Cyrl_BY
+    0xA481534441726162LLU, // bej_Arab_SD
+    0xB0815A4D4C61746ELLU, // bem_Latn_ZM
+    0xD88149444C61746ELLU, // bew_Latn_ID
+    0xE481545A4C61746ELLU, // bez_Latn_TZ
+    0x8CA1434D4C61746ELLU, // bfd_Latn_CM
+    0xC0A1494E54616D6CLLU, // bfq_Taml_IN
+    0xCCA1504B41726162LLU, // bft_Arab_PK
+    0xE0A1494E44657661LLU, // bfy_Deva_IN
+    0x626742474379726CLLU, // bg_Cyrl_BG
+    0x88C1494E44657661LLU, // bgc_Deva_IN
+    0xB4C1504B41726162LLU, // bgn_Arab_PK
+    0xDCC154524772656BLLU, // bgx_Grek_TR
+    0x84E1494E44657661LLU, // bhb_Deva_IN
+    0xA0E1494E44657661LLU, // bhi_Deva_IN
+    0xA8E150484C61746ELLU, // bhk_Latn_PH
+    0xB8E1494E44657661LLU, // bho_Deva_IN
+    0x626956554C61746ELLU, // bi_Latn_VU
+    0xA90150484C61746ELLU, // bik_Latn_PH
+    0xB5014E474C61746ELLU, // bin_Latn_NG
+    0xA521494E44657661LLU, // bjj_Deva_IN
+    0xB52149444C61746ELLU, // bjn_Latn_ID
+    0xB141434D4C61746ELLU, // bkm_Latn_CM
+    0xD14150484C61746ELLU, // bku_Latn_PH
+    0xCD61564E54617674LLU, // blt_Tavt_VN
+    0x626D4D4C4C61746ELLU, // bm_Latn_ML
+    0xC1814D4C4C61746ELLU, // bmq_Latn_ML
+    0x626E424442656E67LLU, // bn_Beng_BD
+    0x626F434E54696274LLU, // bo_Tibt_CN
+    0xE1E1494E42656E67LLU, // bpy_Beng_IN
+    0xA201495241726162LLU, // bqi_Arab_IR
+    0xD60143494C61746ELLU, // bqv_Latn_CI
+    0x627246524C61746ELLU, // br_Latn_FR
+    0x8221494E44657661LLU, // bra_Deva_IN
+    0x9E21504B41726162LLU, // brh_Arab_PK
+    0xDE21494E44657661LLU, // brx_Deva_IN
+    0x627342414C61746ELLU, // bs_Latn_BA
+    0xC2414C5242617373LLU, // bsq_Bass_LR
+    0xCA41434D4C61746ELLU, // bss_Latn_CM
+    0xBA6150484C61746ELLU, // bto_Latn_PH
+    0xD661504B44657661LLU, // btv_Deva_PK
+    0x828152554379726CLLU, // bua_Cyrl_RU
+    0x8A8159544C61746ELLU, // buc_Latn_YT
+    0x9A8149444C61746ELLU, // bug_Latn_ID
+    0xB281434D4C61746ELLU, // bum_Latn_CM
+    0x86A147514C61746ELLU, // bvb_Latn_GQ
+    0xB701455245746869LLU, // byn_Ethi_ER
+    0xD701434D4C61746ELLU, // byv_Latn_CM
+    0x93214D4C4C61746ELLU, // bze_Latn_ML
+    0x636145534C61746ELLU, // ca_Latn_ES
+    0x9C424E474C61746ELLU, // cch_Latn_NG
+    0xBC42494E42656E67LLU, // ccp_Beng_IN
+    0xBC42424443616B6DLLU, // ccp_Cakm_BD
+    0x636552554379726CLLU, // ce_Cyrl_RU
+    0x848250484C61746ELLU, // ceb_Latn_PH
+    0x98C255474C61746ELLU, // cgg_Latn_UG
+    0x636847554C61746ELLU, // ch_Latn_GU
+    0xA8E2464D4C61746ELLU, // chk_Latn_FM
+    0xB0E252554379726CLLU, // chm_Cyrl_RU
+    0xB8E255534C61746ELLU, // cho_Latn_US
+    0xBCE243414C61746ELLU, // chp_Latn_CA
+    0xC4E2555343686572LLU, // chr_Cher_US
+    0x81224B4841726162LLU, // cja_Arab_KH
+    0xB122564E4368616DLLU, // cjm_Cham_VN
+    0x8542495141726162LLU, // ckb_Arab_IQ
+    0x636F46524C61746ELLU, // co_Latn_FR
+    0xBDC24547436F7074LLU, // cop_Copt_EG
+    0xC9E250484C61746ELLU, // cps_Latn_PH
+    0x6372434143616E73LLU, // cr_Cans_CA
+    0xA622434143616E73LLU, // crj_Cans_CA
+    0xAA22434143616E73LLU, // crk_Cans_CA
+    0xAE22434143616E73LLU, // crl_Cans_CA
+    0xB222434143616E73LLU, // crm_Cans_CA
+    0xCA2253434C61746ELLU, // crs_Latn_SC
+    0x6373435A4C61746ELLU, // cs_Latn_CZ
+    0x8642504C4C61746ELLU, // csb_Latn_PL
+    0xDA42434143616E73LLU, // csw_Cans_CA
+    0x8E624D4D50617563LLU, // ctd_Pauc_MM
+    0x637552554379726CLLU, // cu_Cyrl_RU
+    0x63754247476C6167LLU, // cu_Glag_BG
+    0x637652554379726CLLU, // cv_Cyrl_RU
+    0x637947424C61746ELLU, // cy_Latn_GB
+    0x6461444B4C61746ELLU, // da_Latn_DK
+    0xA80355534C61746ELLU, // dak_Latn_US
+    0xC40352554379726CLLU, // dar_Cyrl_RU
+    0xD4034B454C61746ELLU, // dav_Latn_KE
+    0x8843494E41726162LLU, // dcc_Arab_IN
+    0x646544454C61746ELLU, // de_Latn_DE
+    0xB48343414C61746ELLU, // den_Latn_CA
+    0xC4C343414C61746ELLU, // dgr_Latn_CA
+    0x91234E454C61746ELLU, // dje_Latn_NE
+    0xA5A343494C61746ELLU, // dnj_Latn_CI
+    0xA1C3494E41726162LLU, // doi_Arab_IN
+    0x864344454C61746ELLU, // dsb_Latn_DE
+    0xB2634D4C4C61746ELLU, // dtm_Latn_ML
+    0xBE634D594C61746ELLU, // dtp_Latn_MY
+    0xE2634E5044657661LLU, // dty_Deva_NP
+    0x8283434D4C61746ELLU, // dua_Latn_CM
+    0x64764D5654686161LLU, // dv_Thaa_MV
+    0xBB03534E4C61746ELLU, // dyo_Latn_SN
+    0xD30342464C61746ELLU, // dyu_Latn_BF
+    0x647A425454696274LLU, // dz_Tibt_BT
+    0xD0244B454C61746ELLU, // ebu_Latn_KE
+    0x656547484C61746ELLU, // ee_Latn_GH
+    0xA0A44E474C61746ELLU, // efi_Latn_NG
+    0xACC449544C61746ELLU, // egl_Latn_IT
+    0xE0C4454745677970LLU, // egy_Egyp_EG
+    0xE1444D4D4B616C69LLU, // eky_Kali_MM
+    0x656C47524772656BLLU, // el_Grek_GR
+    0x656E47424C61746ELLU, // en_Latn_GB
+    0x656E55534C61746ELLU, // en_Latn_US
+    0x656E474253686177LLU, // en_Shaw_GB
+    0x657345534C61746ELLU, // es_Latn_ES
+    0x65734D584C61746ELLU, // es_Latn_MX
+    0x657355534C61746ELLU, // es_Latn_US
+    0xD24455534C61746ELLU, // esu_Latn_US
+    0x657445454C61746ELLU, // et_Latn_EE
+    0xCE6449544974616CLLU, // ett_Ital_IT
+    0x657545534C61746ELLU, // eu_Latn_ES
+    0xBAC4434D4C61746ELLU, // ewo_Latn_CM
+    0xCEE445534C61746ELLU, // ext_Latn_ES
+    0x6661495241726162LLU, // fa_Arab_IR
+    0xB40547514C61746ELLU, // fan_Latn_GQ
+    0x6666474E41646C6DLLU, // ff_Adlm_GN
+    0x6666534E4C61746ELLU, // ff_Latn_SN
+    0xB0A54D4C4C61746ELLU, // ffm_Latn_ML
+    0x666946494C61746ELLU, // fi_Latn_FI
+    0x8105534441726162LLU, // fia_Arab_SD
+    0xAD0550484C61746ELLU, // fil_Latn_PH
+    0xCD0553454C61746ELLU, // fit_Latn_SE
+    0x666A464A4C61746ELLU, // fj_Latn_FJ
+    0x666F464F4C61746ELLU, // fo_Latn_FO
+    0xB5C5424A4C61746ELLU, // fon_Latn_BJ
+    0x667246524C61746ELLU, // fr_Latn_FR
+    0x8A2555534C61746ELLU, // frc_Latn_US
+    0xBE2546524C61746ELLU, // frp_Latn_FR
+    0xC62544454C61746ELLU, // frr_Latn_DE
+    0xCA2544454C61746ELLU, // frs_Latn_DE
+    0x8685434D41726162LLU, // fub_Arab_CM
+    0x8E8557464C61746ELLU, // fud_Latn_WF
+    0x9685474E4C61746ELLU, // fuf_Latn_GN
+    0xC2854E454C61746ELLU, // fuq_Latn_NE
+    0xC68549544C61746ELLU, // fur_Latn_IT
+    0xD6854E474C61746ELLU, // fuv_Latn_NG
+    0xC6A553444C61746ELLU, // fvr_Latn_SD
+    0x66794E4C4C61746ELLU, // fy_Latn_NL
+    0x676149454C61746ELLU, // ga_Latn_IE
+    0x800647484C61746ELLU, // gaa_Latn_GH
+    0x98064D444C61746ELLU, // gag_Latn_MD
+    0xB406434E48616E73LLU, // gan_Hans_CN
+    0xE00649444C61746ELLU, // gay_Latn_ID
+    0xB026494E44657661LLU, // gbm_Deva_IN
+    0xE426495241726162LLU, // gbz_Arab_IR
+    0xC44647464C61746ELLU, // gcr_Latn_GF
+    0x676447424C61746ELLU, // gd_Latn_GB
+    0xE486455445746869LLU, // gez_Ethi_ET
+    0xB4C64E5044657661LLU, // ggn_Deva_NP
+    0xAD064B494C61746ELLU, // gil_Latn_KI
+    0xA926504B41726162LLU, // gjk_Arab_PK
+    0xD126504B41726162LLU, // gju_Arab_PK
+    0x676C45534C61746ELLU, // gl_Latn_ES
+    0xA966495241726162LLU, // glk_Arab_IR
+    0x676E50594C61746ELLU, // gn_Latn_PY
+    0xB1C6494E44657661LLU, // gom_Deva_IN
+    0xB5C6494E54656C75LLU, // gon_Telu_IN
+    0xC5C649444C61746ELLU, // gor_Latn_ID
+    0xC9C64E4C4C61746ELLU, // gos_Latn_NL
+    0xCDC65541476F7468LLU, // got_Goth_UA
+    0x8A26435943707274LLU, // grc_Cprt_CY
+    0x8A2647524C696E62LLU, // grc_Linb_GR
+    0xCE26494E42656E67LLU, // grt_Beng_IN
+    0xDA4643484C61746ELLU, // gsw_Latn_CH
+    0x6775494E47756A72LLU, // gu_Gujr_IN
+    0x868642524C61746ELLU, // gub_Latn_BR
+    0x8A86434F4C61746ELLU, // guc_Latn_CO
+    0xC68647484C61746ELLU, // gur_Latn_GH
+    0xE6864B454C61746ELLU, // guz_Latn_KE
+    0x6776494D4C61746ELLU, // gv_Latn_IM
+    0xC6A64E5044657661LLU, // gvr_Deva_NP
+    0xA2C643414C61746ELLU, // gwi_Latn_CA
+    0x68614E474C61746ELLU, // ha_Latn_NG
+    0xA807434E48616E73LLU, // hak_Hans_CN
+    0xD80755534C61746ELLU, // haw_Latn_US
+    0xE407414641726162LLU, // haz_Arab_AF
+    0x6865494C48656272LLU, // he_Hebr_IL
+    0x6869494E44657661LLU, // hi_Deva_IN
+    0x9507464A4C61746ELLU, // hif_Latn_FJ
+    0xAD0750484C61746ELLU, // hil_Latn_PH
+    0xD1675452486C7577LLU, // hlu_Hluw_TR
+    0x8D87434E506C7264LLU, // hmd_Plrd_CN
+    0x8DA7504B41726162LLU, // hnd_Arab_PK
+    0x91A7494E44657661LLU, // hne_Deva_IN
+    0xA5A74C41486D6E67LLU, // hnj_Hmng_LA
+    0xB5A750484C61746ELLU, // hnn_Latn_PH
+    0xB9A7504B41726162LLU, // hno_Arab_PK
+    0x686F50474C61746ELLU, // ho_Latn_PG
+    0x89C7494E44657661LLU, // hoc_Deva_IN
+    0xA5C7494E44657661LLU, // hoj_Deva_IN
+    0x687248524C61746ELLU, // hr_Latn_HR
+    0x864744454C61746ELLU, // hsb_Latn_DE
+    0xB647434E48616E73LLU, // hsn_Hans_CN
+    0x687448544C61746ELLU, // ht_Latn_HT
+    0x687548554C61746ELLU, // hu_Latn_HU
+    0x6879414D41726D6ELLU, // hy_Armn_AM
+    0x687A4E414C61746ELLU, // hz_Latn_NA
+    0x696146524C61746ELLU, // ia_Latn_FR
+    0x80284D594C61746ELLU, // iba_Latn_MY
+    0x84284E474C61746ELLU, // ibb_Latn_NG
+    0x696449444C61746ELLU, // id_Latn_ID
+    0x69674E474C61746ELLU, // ig_Latn_NG
+    0x6969434E59696969LLU, // ii_Yiii_CN
+    0x696B55534C61746ELLU, // ik_Latn_US
+    0xCD4843414C61746ELLU, // ikt_Latn_CA
+    0xB96850484C61746ELLU, // ilo_Latn_PH
+    0x696E49444C61746ELLU, // in_Latn_ID
+    0x9DA852554379726CLLU, // inh_Cyrl_RU
+    0x697349534C61746ELLU, // is_Latn_IS
+    0x697449544C61746ELLU, // it_Latn_IT
+    0x6975434143616E73LLU, // iu_Cans_CA
+    0x6977494C48656272LLU, // iw_Hebr_IL
+    0x9F2852554C61746ELLU, // izh_Latn_RU
+    0x6A614A504A70616ELLU, // ja_Jpan_JP
+    0xB0094A4D4C61746ELLU, // jam_Latn_JM
+    0xB8C9434D4C61746ELLU, // jgo_Latn_CM
+    0x8989545A4C61746ELLU, // jmc_Latn_TZ
+    0xAD894E5044657661LLU, // jml_Deva_NP
+    0xCE89444B4C61746ELLU, // jut_Latn_DK
+    0x6A7649444C61746ELLU, // jv_Latn_ID
+    0x6A7749444C61746ELLU, // jw_Latn_ID
+    0x6B61474547656F72LLU, // ka_Geor_GE
+    0x800A555A4379726CLLU, // kaa_Cyrl_UZ
+    0x840A445A4C61746ELLU, // kab_Latn_DZ
+    0x880A4D4D4C61746ELLU, // kac_Latn_MM
+    0xA40A4E474C61746ELLU, // kaj_Latn_NG
+    0xB00A4B454C61746ELLU, // kam_Latn_KE
+    0xB80A4D4C4C61746ELLU, // kao_Latn_ML
+    0x8C2A52554379726CLLU, // kbd_Cyrl_RU
+    0xE02A4E4541726162LLU, // kby_Arab_NE
+    0x984A4E474C61746ELLU, // kcg_Latn_NG
+    0xA84A5A574C61746ELLU, // kck_Latn_ZW
+    0x906A545A4C61746ELLU, // kde_Latn_TZ
+    0x9C6A544741726162LLU, // kdh_Arab_TG
+    0xCC6A544854686169LLU, // kdt_Thai_TH
+    0x808A43564C61746ELLU, // kea_Latn_CV
+    0xB48A434D4C61746ELLU, // ken_Latn_CM
+    0xB8AA43494C61746ELLU, // kfo_Latn_CI
+    0xC4AA494E44657661LLU, // kfr_Deva_IN
+    0xE0AA494E44657661LLU, // kfy_Deva_IN
+    0x6B6743444C61746ELLU, // kg_Latn_CD
+    0x90CA49444C61746ELLU, // kge_Latn_ID
+    0xBCCA42524C61746ELLU, // kgp_Latn_BR
+    0x80EA494E4C61746ELLU, // kha_Latn_IN
+    0x84EA434E54616C75LLU, // khb_Talu_CN
+    0xB4EA494E44657661LLU, // khn_Deva_IN
+    0xC0EA4D4C4C61746ELLU, // khq_Latn_ML
+    0xCCEA494E4D796D72LLU, // kht_Mymr_IN
+    0xD8EA504B41726162LLU, // khw_Arab_PK
+    0x6B694B454C61746ELLU, // ki_Latn_KE
+    0xD10A54524C61746ELLU, // kiu_Latn_TR
+    0x6B6A4E414C61746ELLU, // kj_Latn_NA
+    0x992A4C414C616F6FLLU, // kjg_Laoo_LA
+    0x6B6B434E41726162LLU, // kk_Arab_CN
+    0x6B6B4B5A4379726CLLU, // kk_Cyrl_KZ
+    0xA54A434D4C61746ELLU, // kkj_Latn_CM
+    0x6B6C474C4C61746ELLU, // kl_Latn_GL
+    0xB56A4B454C61746ELLU, // kln_Latn_KE
+    0x6B6D4B484B686D72LLU, // km_Khmr_KH
+    0x858A414F4C61746ELLU, // kmb_Latn_AO
+    0x6B6E494E4B6E6461LLU, // kn_Knda_IN
+    0x6B6F4B524B6F7265LLU, // ko_Kore_KR
+    0xA1CA52554379726CLLU, // koi_Cyrl_RU
+    0xA9CA494E44657661LLU, // kok_Deva_IN
+    0xC9CA464D4C61746ELLU, // kos_Latn_FM
+    0x91EA4C524C61746ELLU, // kpe_Latn_LR
+    0x8A2A52554379726CLLU, // krc_Cyrl_RU
+    0xA22A534C4C61746ELLU, // kri_Latn_SL
+    0xA62A50484C61746ELLU, // krj_Latn_PH
+    0xAE2A52554C61746ELLU, // krl_Latn_RU
+    0xD22A494E44657661LLU, // kru_Deva_IN
+    0x6B73494E41726162LLU, // ks_Arab_IN
+    0x864A545A4C61746ELLU, // ksb_Latn_TZ
+    0x964A434D4C61746ELLU, // ksf_Latn_CM
+    0x9E4A44454C61746ELLU, // ksh_Latn_DE
+    0x6B75495141726162LLU, // ku_Arab_IQ
+    0x6B7554524C61746ELLU, // ku_Latn_TR
+    0xB28A52554379726CLLU, // kum_Cyrl_RU
+    0x6B7652554379726CLLU, // kv_Cyrl_RU
+    0xC6AA49444C61746ELLU, // kvr_Latn_ID
+    0xDEAA504B41726162LLU, // kvx_Arab_PK
+    0x6B7747424C61746ELLU, // kw_Latn_GB
+    0xB2EA544854686169LLU, // kxm_Thai_TH
+    0xBEEA504B41726162LLU, // kxp_Arab_PK
+    0x6B79434E41726162LLU, // ky_Arab_CN
+    0x6B794B474379726CLLU, // ky_Cyrl_KG
+    0x6B7954524C61746ELLU, // ky_Latn_TR
+    0x6C6156414C61746ELLU, // la_Latn_VA
+    0x840B47524C696E61LLU, // lab_Lina_GR
+    0x8C0B494C48656272LLU, // lad_Hebr_IL
+    0x980B545A4C61746ELLU, // lag_Latn_TZ
+    0x9C0B504B41726162LLU, // lah_Arab_PK
+    0xA40B55474C61746ELLU, // laj_Latn_UG
+    0x6C624C554C61746ELLU, // lb_Latn_LU
+    0x902B52554379726CLLU, // lbe_Cyrl_RU
+    0xD82B49444C61746ELLU, // lbw_Latn_ID
+    0xBC4B434E54686169LLU, // lcp_Thai_CN
+    0xBC8B494E4C657063LLU, // lep_Lepc_IN
+    0xE48B52554379726CLLU, // lez_Cyrl_RU
+    0x6C6755474C61746ELLU, // lg_Latn_UG
+    0x6C694E4C4C61746ELLU, // li_Latn_NL
+    0x950B4E5044657661LLU, // lif_Deva_NP
+    0x950B494E4C696D62LLU, // lif_Limb_IN
+    0xA50B49544C61746ELLU, // lij_Latn_IT
+    0xC90B434E4C697375LLU, // lis_Lisu_CN
+    0xBD2B49444C61746ELLU, // ljp_Latn_ID
+    0xA14B495241726162LLU, // lki_Arab_IR
+    0xCD4B55534C61746ELLU, // lkt_Latn_US
+    0xB58B494E54656C75LLU, // lmn_Telu_IN
+    0xB98B49544C61746ELLU, // lmo_Latn_IT
+    0x6C6E43444C61746ELLU, // ln_Latn_CD
+    0x6C6F4C414C616F6FLLU, // lo_Laoo_LA
+    0xADCB43444C61746ELLU, // lol_Latn_CD
+    0xE5CB5A4D4C61746ELLU, // loz_Latn_ZM
+    0x8A2B495241726162LLU, // lrc_Arab_IR
+    0x6C744C544C61746ELLU, // lt_Latn_LT
+    0x9A6B4C564C61746ELLU, // ltg_Latn_LV
+    0x6C7543444C61746ELLU, // lu_Latn_CD
+    0x828B43444C61746ELLU, // lua_Latn_CD
+    0xBA8B4B454C61746ELLU, // luo_Latn_KE
+    0xE28B4B454C61746ELLU, // luy_Latn_KE
+    0xE68B495241726162LLU, // luz_Arab_IR
+    0x6C764C564C61746ELLU, // lv_Latn_LV
+    0xAECB544854686169LLU, // lwl_Thai_TH
+    0x9F2B434E48616E73LLU, // lzh_Hans_CN
+    0xE72B54524C61746ELLU, // lzz_Latn_TR
+    0x8C0C49444C61746ELLU, // mad_Latn_ID
+    0x940C434D4C61746ELLU, // maf_Latn_CM
+    0x980C494E44657661LLU, // mag_Deva_IN
+    0xA00C494E44657661LLU, // mai_Deva_IN
+    0xA80C49444C61746ELLU, // mak_Latn_ID
+    0xB40C474D4C61746ELLU, // man_Latn_GM
+    0xB40C474E4E6B6F6FLLU, // man_Nkoo_GN
+    0xC80C4B454C61746ELLU, // mas_Latn_KE
+    0xE40C4D584C61746ELLU, // maz_Latn_MX
+    0x946C52554379726CLLU, // mdf_Cyrl_RU
+    0x9C6C50484C61746ELLU, // mdh_Latn_PH
+    0xC46C49444C61746ELLU, // mdr_Latn_ID
+    0xB48C534C4C61746ELLU, // men_Latn_SL
+    0xC48C4B454C61746ELLU, // mer_Latn_KE
+    0x80AC544841726162LLU, // mfa_Arab_TH
+    0x90AC4D554C61746ELLU, // mfe_Latn_MU
+    0x6D674D474C61746ELLU, // mg_Latn_MG
+    0x9CCC4D5A4C61746ELLU, // mgh_Latn_MZ
+    0xB8CC434D4C61746ELLU, // mgo_Latn_CM
+    0xBCCC4E5044657661LLU, // mgp_Deva_NP
+    0xE0CC545A4C61746ELLU, // mgy_Latn_TZ
+    0x6D684D484C61746ELLU, // mh_Latn_MH
+    0x6D694E5A4C61746ELLU, // mi_Latn_NZ
+    0xB50C49444C61746ELLU, // min_Latn_ID
+    0xC90C495148617472LLU, // mis_Hatr_IQ
+    0x6D6B4D4B4379726CLLU, // mk_Cyrl_MK
+    0x6D6C494E4D6C796DLLU, // ml_Mlym_IN
+    0xC96C53444C61746ELLU, // mls_Latn_SD
+    0x6D6E4D4E4379726CLLU, // mn_Cyrl_MN
+    0x6D6E434E4D6F6E67LLU, // mn_Mong_CN
+    0xA1AC494E42656E67LLU, // mni_Beng_IN
+    0xD9AC4D4D4D796D72LLU, // mnw_Mymr_MM
+    0x91CC43414C61746ELLU, // moe_Latn_CA
+    0x9DCC43414C61746ELLU, // moh_Latn_CA
+    0xC9CC42464C61746ELLU, // mos_Latn_BF
+    0x6D72494E44657661LLU, // mr_Deva_IN
+    0x8E2C4E5044657661LLU, // mrd_Deva_NP
+    0xA62C52554379726CLLU, // mrj_Cyrl_RU
+    0xBA2C42444D726F6FLLU, // mro_Mroo_BD
+    0x6D734D594C61746ELLU, // ms_Latn_MY
+    0x6D744D544C61746ELLU, // mt_Latn_MT
+    0xC66C494E44657661LLU, // mtr_Deva_IN
+    0x828C434D4C61746ELLU, // mua_Latn_CM
+    0xCA8C55534C61746ELLU, // mus_Latn_US
+    0xE2AC504B41726162LLU, // mvy_Arab_PK
+    0xAACC4D4C4C61746ELLU, // mwk_Latn_ML
+    0xC6CC494E44657661LLU, // mwr_Deva_IN
+    0xD6CC49444C61746ELLU, // mwv_Latn_ID
+    0x8AEC5A574C61746ELLU, // mxc_Latn_ZW
+    0x6D794D4D4D796D72LLU, // my_Mymr_MM
+    0xD70C52554379726CLLU, // myv_Cyrl_RU
+    0xDF0C55474C61746ELLU, // myx_Latn_UG
+    0xE70C49524D616E64LLU, // myz_Mand_IR
+    0xB72C495241726162LLU, // mzn_Arab_IR
+    0x6E614E524C61746ELLU, // na_Latn_NR
+    0xB40D434E48616E73LLU, // nan_Hans_CN
+    0xBC0D49544C61746ELLU, // nap_Latn_IT
+    0xC00D4E414C61746ELLU, // naq_Latn_NA
+    0x6E624E4F4C61746ELLU, // nb_Latn_NO
+    0x9C4D4D584C61746ELLU, // nch_Latn_MX
+    0x6E645A574C61746ELLU, // nd_Latn_ZW
+    0x886D4D5A4C61746ELLU, // ndc_Latn_MZ
+    0xC86D44454C61746ELLU, // nds_Latn_DE
+    0x6E654E5044657661LLU, // ne_Deva_NP
+    0xD88D4E5044657661LLU, // new_Deva_NP
+    0x6E674E414C61746ELLU, // ng_Latn_NA
+    0xACCD4D5A4C61746ELLU, // ngl_Latn_MZ
+    0x90ED4D584C61746ELLU, // nhe_Latn_MX
+    0xD8ED4D584C61746ELLU, // nhw_Latn_MX
+    0xA50D49444C61746ELLU, // nij_Latn_ID
+    0xD10D4E554C61746ELLU, // niu_Latn_NU
+    0xB92D494E4C61746ELLU, // njo_Latn_IN
+    0x6E6C4E4C4C61746ELLU, // nl_Latn_NL
+    0x998D434D4C61746ELLU, // nmg_Latn_CM
+    0x6E6E4E4F4C61746ELLU, // nn_Latn_NO
+    0x9DAD434D4C61746ELLU, // nnh_Latn_CM
+    0x6E6F4E4F4C61746ELLU, // no_Latn_NO
+    0x8DCD54484C616E61LLU, // nod_Lana_TH
+    0x91CD494E44657661LLU, // noe_Deva_IN
+    0xB5CD534552756E72LLU, // non_Runr_SE
+    0xBA0D474E4E6B6F6FLLU, // nqo_Nkoo_GN
+    0x6E725A414C61746ELLU, // nr_Latn_ZA
+    0xAA4D434143616E73LLU, // nsk_Cans_CA
+    0xBA4D5A414C61746ELLU, // nso_Latn_ZA
+    0xCA8D53534C61746ELLU, // nus_Latn_SS
+    0x6E7655534C61746ELLU, // nv_Latn_US
+    0xC2ED434E4C61746ELLU, // nxq_Latn_CN
+    0x6E794D574C61746ELLU, // ny_Latn_MW
+    0xB30D545A4C61746ELLU, // nym_Latn_TZ
+    0xB70D55474C61746ELLU, // nyn_Latn_UG
+    0xA32D47484C61746ELLU, // nzi_Latn_GH
+    0x6F6346524C61746ELLU, // oc_Latn_FR
+    0x6F6D45544C61746ELLU, // om_Latn_ET
+    0x6F72494E4F727961LLU, // or_Orya_IN
+    0x6F7347454379726CLLU, // os_Cyrl_GE
+    0x824E55534F736765LLU, // osa_Osge_US
+    0xAA6E4D4E4F726B68LLU, // otk_Orkh_MN
+    0x7061504B41726162LLU, // pa_Arab_PK
+    0x7061494E47757275LLU, // pa_Guru_IN
+    0x980F50484C61746ELLU, // pag_Latn_PH
+    0xAC0F495250686C69LLU, // pal_Phli_IR
+    0xAC0F434E50686C70LLU, // pal_Phlp_CN
+    0xB00F50484C61746ELLU, // pam_Latn_PH
+    0xBC0F41574C61746ELLU, // pap_Latn_AW
+    0xD00F50574C61746ELLU, // pau_Latn_PW
+    0x8C4F46524C61746ELLU, // pcd_Latn_FR
+    0xB04F4E474C61746ELLU, // pcm_Latn_NG
+    0x886F55534C61746ELLU, // pdc_Latn_US
+    0xCC6F43414C61746ELLU, // pdt_Latn_CA
+    0xB88F49525870656FLLU, // peo_Xpeo_IR
+    0xACAF44454C61746ELLU, // pfl_Latn_DE
+    0xB4EF4C4250686E78LLU, // phn_Phnx_LB
+    0x814F494E42726168LLU, // pka_Brah_IN
+    0xB94F4B454C61746ELLU, // pko_Latn_KE
+    0x706C504C4C61746ELLU, // pl_Latn_PL
+    0xC98F49544C61746ELLU, // pms_Latn_IT
+    0xCDAF47524772656BLLU, // pnt_Grek_GR
+    0xB5CF464D4C61746ELLU, // pon_Latn_FM
+    0x822F504B4B686172LLU, // pra_Khar_PK
+    0x8E2F495241726162LLU, // prd_Arab_IR
+    0x7073414641726162LLU, // ps_Arab_AF
+    0x707442524C61746ELLU, // pt_Latn_BR
+    0xD28F47414C61746ELLU, // puu_Latn_GA
+    0x717550454C61746ELLU, // qu_Latn_PE
+    0x8A9047544C61746ELLU, // quc_Latn_GT
+    0x9A9045434C61746ELLU, // qug_Latn_EC
+    0xA411494E44657661LLU, // raj_Deva_IN
+    0x945152454C61746ELLU, // rcf_Latn_RE
+    0xA49149444C61746ELLU, // rej_Latn_ID
+    0xB4D149544C61746ELLU, // rgn_Latn_IT
+    0x8111494E4C61746ELLU, // ria_Latn_IN
+    0x95114D4154666E67LLU, // rif_Tfng_MA
+    0xC9314E5044657661LLU, // rjs_Deva_NP
+    0xCD51424442656E67LLU, // rkt_Beng_BD
+    0x726D43484C61746ELLU, // rm_Latn_CH
+    0x959146494C61746ELLU, // rmf_Latn_FI
+    0xB99143484C61746ELLU, // rmo_Latn_CH
+    0xCD91495241726162LLU, // rmt_Arab_IR
+    0xD19153454C61746ELLU, // rmu_Latn_SE
+    0x726E42494C61746ELLU, // rn_Latn_BI
+    0x99B14D5A4C61746ELLU, // rng_Latn_MZ
+    0x726F524F4C61746ELLU, // ro_Latn_RO
+    0x85D149444C61746ELLU, // rob_Latn_ID
+    0x95D1545A4C61746ELLU, // rof_Latn_TZ
+    0xB271464A4C61746ELLU, // rtm_Latn_FJ
+    0x727552554379726CLLU, // ru_Cyrl_RU
+    0x929155414379726CLLU, // rue_Cyrl_UA
+    0x9A9153424C61746ELLU, // rug_Latn_SB
+    0x727752574C61746ELLU, // rw_Latn_RW
+    0xAAD1545A4C61746ELLU, // rwk_Latn_TZ
+    0xD3114A504B616E61LLU, // ryu_Kana_JP
+    0x7361494E44657661LLU, // sa_Deva_IN
+    0x941247484C61746ELLU, // saf_Latn_GH
+    0x9C1252554379726CLLU, // sah_Cyrl_RU
+    0xC0124B454C61746ELLU, // saq_Latn_KE
+    0xC81249444C61746ELLU, // sas_Latn_ID
+    0xCC12494E4C61746ELLU, // sat_Latn_IN
+    0xE412494E53617572LLU, // saz_Saur_IN
+    0xBC32545A4C61746ELLU, // sbp_Latn_TZ
+    0x736349544C61746ELLU, // sc_Latn_IT
+    0xA852494E44657661LLU, // sck_Deva_IN
+    0xB45249544C61746ELLU, // scn_Latn_IT
+    0xB85247424C61746ELLU, // sco_Latn_GB
+    0xC85243414C61746ELLU, // scs_Latn_CA
+    0x7364504B41726162LLU, // sd_Arab_PK
+    0x7364494E44657661LLU, // sd_Deva_IN
+    0x7364494E4B686F6ALLU, // sd_Khoj_IN
+    0x7364494E53696E64LLU, // sd_Sind_IN
+    0x887249544C61746ELLU, // sdc_Latn_IT
+    0x9C72495241726162LLU, // sdh_Arab_IR
+    0x73654E4F4C61746ELLU, // se_Latn_NO
+    0x949243494C61746ELLU, // sef_Latn_CI
+    0x9C924D5A4C61746ELLU, // seh_Latn_MZ
+    0xA0924D584C61746ELLU, // sei_Latn_MX
+    0xC8924D4C4C61746ELLU, // ses_Latn_ML
+    0x736743464C61746ELLU, // sg_Latn_CF
+    0x80D249454F67616DLLU, // sga_Ogam_IE
+    0xC8D24C544C61746ELLU, // sgs_Latn_LT
+    0xA0F24D4154666E67LLU, // shi_Tfng_MA
+    0xB4F24D4D4D796D72LLU, // shn_Mymr_MM
+    0x73694C4B53696E68LLU, // si_Sinh_LK
+    0x8D1245544C61746ELLU, // sid_Latn_ET
+    0x736B534B4C61746ELLU, // sk_Latn_SK
+    0xC552504B41726162LLU, // skr_Arab_PK
+    0x736C53494C61746ELLU, // sl_Latn_SI
+    0xA172504C4C61746ELLU, // sli_Latn_PL
+    0xE17249444C61746ELLU, // sly_Latn_ID
+    0x736D57534C61746ELLU, // sm_Latn_WS
+    0x819253454C61746ELLU, // sma_Latn_SE
+    0xA59253454C61746ELLU, // smj_Latn_SE
+    0xB59246494C61746ELLU, // smn_Latn_FI
+    0xBD92494C53616D72LLU, // smp_Samr_IL
+    0xC99246494C61746ELLU, // sms_Latn_FI
+    0x736E5A574C61746ELLU, // sn_Latn_ZW
+    0xA9B24D4C4C61746ELLU, // snk_Latn_ML
+    0x736F534F4C61746ELLU, // so_Latn_SO
+    0xD1D2544854686169LLU, // sou_Thai_TH
+    0x7371414C4C61746ELLU, // sq_Latn_AL
+    0x737252534379726CLLU, // sr_Cyrl_RS
+    0x737252534C61746ELLU, // sr_Latn_RS
+    0x8632494E536F7261LLU, // srb_Sora_IN
+    0xB63253524C61746ELLU, // srn_Latn_SR
+    0xC632534E4C61746ELLU, // srr_Latn_SN
+    0xDE32494E44657661LLU, // srx_Deva_IN
+    0x73735A414C61746ELLU, // ss_Latn_ZA
+    0xE25245524C61746ELLU, // ssy_Latn_ER
+    0x73745A414C61746ELLU, // st_Latn_ZA
+    0xC27244454C61746ELLU, // stq_Latn_DE
+    0x737549444C61746ELLU, // su_Latn_ID
+    0xAA92545A4C61746ELLU, // suk_Latn_TZ
+    0xCA92474E4C61746ELLU, // sus_Latn_GN
+    0x737653454C61746ELLU, // sv_Latn_SE
+    0x7377545A4C61746ELLU, // sw_Latn_TZ
+    0x86D2595441726162LLU, // swb_Arab_YT
+    0x8AD243444C61746ELLU, // swc_Latn_CD
+    0x9AD244454C61746ELLU, // swg_Latn_DE
+    0xD6D2494E44657661LLU, // swv_Deva_IN
+    0xB6F249444C61746ELLU, // sxn_Latn_ID
+    0xAF12424442656E67LLU, // syl_Beng_BD
+    0xC712495153797263LLU, // syr_Syrc_IQ
+    0xAF32504C4C61746ELLU, // szl_Latn_PL
+    0x7461494E54616D6CLLU, // ta_Taml_IN
+    0xA4134E5044657661LLU, // taj_Deva_NP
+    0xD83350484C61746ELLU, // tbw_Latn_PH
+    0xE053494E4B6E6461LLU, // tcy_Knda_IN
+    0x8C73434E54616C65LLU, // tdd_Tale_CN
+    0x98734E5044657661LLU, // tdg_Deva_NP
+    0x9C734E5044657661LLU, // tdh_Deva_NP
+    0x7465494E54656C75LLU, // te_Telu_IN
+    0xB093534C4C61746ELLU, // tem_Latn_SL
+    0xB89355474C61746ELLU, // teo_Latn_UG
+    0xCC93544C4C61746ELLU, // tet_Latn_TL
+    0x7467504B41726162LLU, // tg_Arab_PK
+    0x7467544A4379726CLLU, // tg_Cyrl_TJ
+    0x7468544854686169LLU, // th_Thai_TH
+    0xACF34E5044657661LLU, // thl_Deva_NP
+    0xC0F34E5044657661LLU, // thq_Deva_NP
+    0xC4F34E5044657661LLU, // thr_Deva_NP
+    0x7469455445746869LLU, // ti_Ethi_ET
+    0x9913455245746869LLU, // tig_Ethi_ER
+    0xD5134E474C61746ELLU, // tiv_Latn_NG
+    0x746B544D4C61746ELLU, // tk_Latn_TM
+    0xAD53544B4C61746ELLU, // tkl_Latn_TK
+    0xC553415A4C61746ELLU, // tkr_Latn_AZ
+    0xCD534E5044657661LLU, // tkt_Deva_NP
+    0x746C50484C61746ELLU, // tl_Latn_PH
+    0xE173415A4C61746ELLU, // tly_Latn_AZ
+    0x9D934E454C61746ELLU, // tmh_Latn_NE
+    0x746E5A414C61746ELLU, // tn_Latn_ZA
+    0x746F544F4C61746ELLU, // to_Latn_TO
+    0x99D34D574C61746ELLU, // tog_Latn_MW
+    0xA1F350474C61746ELLU, // tpi_Latn_PG
+    0x747254524C61746ELLU, // tr_Latn_TR
+    0xD23354524C61746ELLU, // tru_Latn_TR
+    0xD63354574C61746ELLU, // trv_Latn_TW
+    0x74735A414C61746ELLU, // ts_Latn_ZA
+    0x8E5347524772656BLLU, // tsd_Grek_GR
+    0x96534E5044657661LLU, // tsf_Deva_NP
+    0x9A5350484C61746ELLU, // tsg_Latn_PH
+    0xA653425454696274LLU, // tsj_Tibt_BT
+    0x747452554379726CLLU, // tt_Cyrl_RU
+    0xA67355474C61746ELLU, // ttj_Latn_UG
+    0xCA73544854686169LLU, // tts_Thai_TH
+    0xCE73415A4C61746ELLU, // ttt_Latn_AZ
+    0xB2934D574C61746ELLU, // tum_Latn_MW
+    0xAEB354564C61746ELLU, // tvl_Latn_TV
+    0xC2D34E454C61746ELLU, // twq_Latn_NE
+    0x9AF3434E54616E67LLU, // txg_Tang_CN
+    0x747950464C61746ELLU, // ty_Latn_PF
+    0xD71352554379726CLLU, // tyv_Cyrl_RU
+    0xB3334D414C61746ELLU, // tzm_Latn_MA
+    0xB07452554379726CLLU, // udm_Cyrl_RU
+    0x7567434E41726162LLU, // ug_Arab_CN
+    0x75674B5A4379726CLLU, // ug_Cyrl_KZ
+    0x80D4535955676172LLU, // uga_Ugar_SY
+    0x756B55414379726CLLU, // uk_Cyrl_UA
+    0xA174464D4C61746ELLU, // uli_Latn_FM
+    0x8594414F4C61746ELLU, // umb_Latn_AO
+    0xC5B4494E42656E67LLU, // unr_Beng_IN
+    0xC5B44E5044657661LLU, // unr_Deva_NP
+    0xDDB4494E42656E67LLU, // unx_Beng_IN
+    0x7572504B41726162LLU, // ur_Arab_PK
+    0x757A414641726162LLU, // uz_Arab_AF
+    0x757A555A4C61746ELLU, // uz_Latn_UZ
+    0xA0154C5256616969LLU, // vai_Vaii_LR
+    0x76655A414C61746ELLU, // ve_Latn_ZA
+    0x889549544C61746ELLU, // vec_Latn_IT
+    0xBC9552554C61746ELLU, // vep_Latn_RU
+    0x7669564E4C61746ELLU, // vi_Latn_VN
+    0x891553584C61746ELLU, // vic_Latn_SX
+    0xC97542454C61746ELLU, // vls_Latn_BE
+    0x959544454C61746ELLU, // vmf_Latn_DE
+    0xD9954D5A4C61746ELLU, // vmw_Latn_MZ
+    0xCDD552554C61746ELLU, // vot_Latn_RU
+    0xBA3545454C61746ELLU, // vro_Latn_EE
+    0xB695545A4C61746ELLU, // vun_Latn_TZ
+    0x776142454C61746ELLU, // wa_Latn_BE
+    0x901643484C61746ELLU, // wae_Latn_CH
+    0xAC16455445746869LLU, // wal_Ethi_ET
+    0xC41650484C61746ELLU, // war_Latn_PH
+    0xBC3641554C61746ELLU, // wbp_Latn_AU
+    0xC036494E54656C75LLU, // wbq_Telu_IN
+    0xC436494E44657661LLU, // wbr_Deva_IN
+    0xC97657464C61746ELLU, // wls_Latn_WF
+    0xA1B64B4D41726162LLU, // wni_Arab_KM
+    0x776F534E4C61746ELLU, // wo_Latn_SN
+    0xB276494E44657661LLU, // wtm_Deva_IN
+    0xD296434E48616E73LLU, // wuu_Hans_CN
+    0xD41742524C61746ELLU, // xav_Latn_BR
+    0xC457545243617269LLU, // xcr_Cari_TR
+    0x78685A414C61746ELLU, // xh_Latn_ZA
+    0x897754524C796369LLU, // xlc_Lyci_TR
+    0x8D7754524C796469LLU, // xld_Lydi_TR
+    0x9597474547656F72LLU, // xmf_Geor_GE
+    0xB597434E4D616E69LLU, // xmn_Mani_CN
+    0xC59753444D657263LLU, // xmr_Merc_SD
+    0x81B753414E617262LLU, // xna_Narb_SA
+    0xC5B7494E44657661LLU, // xnr_Deva_IN
+    0x99D755474C61746ELLU, // xog_Latn_UG
+    0xC5F7495250727469LLU, // xpr_Prti_IR
+    0x8257594553617262LLU, // xsa_Sarb_YE
+    0xC6574E5044657661LLU, // xsr_Deva_NP
+    0xB8184D5A4C61746ELLU, // yao_Latn_MZ
+    0xBC18464D4C61746ELLU, // yap_Latn_FM
+    0xD418434D4C61746ELLU, // yav_Latn_CM
+    0x8438434D4C61746ELLU, // ybb_Latn_CM
+    0x796F4E474C61746ELLU, // yo_Latn_NG
+    0xAE3842524C61746ELLU, // yrl_Latn_BR
+    0x82984D584C61746ELLU, // yua_Latn_MX
+    0x9298434E48616E73LLU, // yue_Hans_CN
+    0x9298484B48616E74LLU, // yue_Hant_HK
+    0x7A61434E4C61746ELLU, // za_Latn_CN
+    0x981953444C61746ELLU, // zag_Latn_SD
+    0xA4794B4D41726162LLU, // zdj_Arab_KM
+    0x80994E4C4C61746ELLU, // zea_Latn_NL
+    0x9CD94D4154666E67LLU, // zgh_Tfng_MA
+    0x7A685457426F706FLLU, // zh_Bopo_TW
+    0x7A68545748616E62LLU, // zh_Hanb_TW
+    0x7A68434E48616E73LLU, // zh_Hans_CN
+    0x7A68545748616E74LLU, // zh_Hant_TW
+    0xB17954474C61746ELLU, // zlm_Latn_TG
+    0xA1994D594C61746ELLU, // zmi_Latn_MY
+    0x7A755A414C61746ELLU, // zu_Latn_ZA
+    0x833954524C61746ELLU, // zza_Latn_TR
 });
 
 const std::unordered_map<uint32_t, uint32_t> ARAB_PARENTS({
diff --git a/media/java/android/media/AudioFocusInfo.java b/media/java/android/media/AudioFocusInfo.java
index 5467a69..0a9ca02 100644
--- a/media/java/android/media/AudioFocusInfo.java
+++ b/media/java/android/media/AudioFocusInfo.java
@@ -80,16 +80,12 @@
      * The audio attributes for the audio focus request.
      * @return non-null {@link AudioAttributes}.
      */
-    @SystemApi
     public AudioAttributes getAttributes() { return mAttributes; }
 
-    @SystemApi
     public int getClientUid() { return mClientUid; }
 
-    @SystemApi
     public String getClientId() { return mClientId; }
 
-    @SystemApi
     public String getPackageName() { return mPackageName; }
 
     /**
@@ -99,7 +95,6 @@
      *     {@link AudioManager#AUDIOFOCUS_GAIN_TRANSIENT_MAY_DUCK},
      *     {@link AudioManager#AUDIOFOCUS_GAIN_TRANSIENT_EXCLUSIVE}.
      */
-    @SystemApi
     public int getGainRequest() { return mGainRequest; }
 
     /**
@@ -109,7 +104,6 @@
      *   {@link AudioManager#AUDIOFOCUS_LOSS_TRANSIENT} or
      *   {@link AudioManager#AUDIOFOCUS_LOSS_TRANSIENT_CAN_DUCK}.
      */
-    @SystemApi
     public int getLossReceived() { return mLossReceived; }
 
     /** @hide */
@@ -124,7 +118,6 @@
      *     {@link AudioManager#AUDIOFOCUS_FLAG_PAUSES_ON_DUCKABLE_LOSS}, and
      *     {@link AudioManager#AUDIOFOCUS_FLAG_LOCK}.
      */
-    @SystemApi
     public int getFlags() { return mFlags; }
 
     @Override
diff --git a/media/java/android/media/AudioTrack.java b/media/java/android/media/AudioTrack.java
index aaf7dd7..1268c6f 100644
--- a/media/java/android/media/AudioTrack.java
+++ b/media/java/android/media/AudioTrack.java
@@ -3222,7 +3222,7 @@
                                                 int offsetInFloats, int sizeInFloats, int format,
                                                 boolean isBlocking);
 
-    private native final int native_write_native_bytes(Object audioData,
+    private native final int native_write_native_bytes(ByteBuffer audioData,
             int positionInBytes, int sizeInBytes, int format, boolean blocking);
 
     private native final int native_reload_static();
diff --git a/media/java/android/media/audiopolicy/AudioMix.java b/media/java/android/media/audiopolicy/AudioMix.java
index 8bc1d35..7fb3aa6 100644
--- a/media/java/android/media/audiopolicy/AudioMix.java
+++ b/media/java/android/media/audiopolicy/AudioMix.java
@@ -81,14 +81,12 @@
      * An audio mix behavior where the output of the mix is sent to the original destination of
      * the audio signal, i.e. an output device for an output mix, or a recording for an input mix.
      */
-    @SystemApi
     public static final int ROUTE_FLAG_RENDER    = 0x1;
     /**
      * An audio mix behavior where the output of the mix is rerouted back to the framework and
      * is accessible for injection or capture through the {@link AudioTrack} and {@link AudioRecord}
      * APIs.
      */
-    @SystemApi
     public static final int ROUTE_FLAG_LOOP_BACK = 0x1 << 1;
 
     private static final int ROUTE_FLAG_SUPPORTED = ROUTE_FLAG_RENDER | ROUTE_FLAG_LOOP_BACK;
@@ -113,31 +111,23 @@
 
     // MIX_STATE_* values to keep in sync with frameworks/av/include/media/AudioPolicy.h
     /**
-     * @hide
      * State of a mix before its policy is enabled.
      */
-    @SystemApi
     public static final int MIX_STATE_DISABLED = -1;
     /**
-     * @hide
      * State of a mix when there is no audio to mix.
      */
-    @SystemApi
     public static final int MIX_STATE_IDLE = 0;
     /**
-     * @hide
      * State of a mix that is actively mixing audio.
      */
-    @SystemApi
     public static final int MIX_STATE_MIXING = 1;
 
     /**
-     * @hide
      * The current mixing state.
      * @return one of {@link #MIX_STATE_DISABLED}, {@link #MIX_STATE_IDLE},
      *          {@link #MIX_STATE_MIXING}.
      */
-    @SystemApi
     public int getMixState() {
         return mMixState;
     }
@@ -201,9 +191,7 @@
 
     /**
      * Builder class for {@link AudioMix} objects
-     *
      */
-    @SystemApi
     public static class Builder {
         private AudioMixingRule mRule = null;
         private AudioFormat mFormat = null;
@@ -224,7 +212,6 @@
          * @param rule a non-null {@link AudioMixingRule} instance.
          * @throws IllegalArgumentException
          */
-        @SystemApi
         public Builder(AudioMixingRule rule)
                 throws IllegalArgumentException {
             if (rule == null) {
@@ -284,7 +271,6 @@
          * @return the same Builder instance.
          * @throws IllegalArgumentException
          */
-        @SystemApi
         public Builder setFormat(AudioFormat format)
                 throws IllegalArgumentException {
             if (format == null) {
@@ -302,7 +288,6 @@
          * @return the same Builder instance.
          * @throws IllegalArgumentException
          */
-        @SystemApi
         public Builder setRouteFlags(@RouteFlags int routeFlags)
                 throws IllegalArgumentException {
             if (routeFlags == 0) {
@@ -329,7 +314,6 @@
          * @return the same Builder instance
          * @throws IllegalArgumentException
          */
-        @SystemApi
         public Builder setDevice(@NonNull AudioDeviceInfo device) throws IllegalArgumentException {
             if (device == null) {
                 throw new IllegalArgumentException("Illegal null AudioDeviceInfo argument");
@@ -347,7 +331,6 @@
          * @return a new {@link AudioMix} object
          * @throws IllegalArgumentException if no {@link AudioMixingRule} has been set.
          */
-        @SystemApi
         public AudioMix build() throws IllegalArgumentException {
             if (mRule == null) {
                 throw new IllegalArgumentException("Illegal null AudioMixingRule");
diff --git a/media/java/android/media/audiopolicy/AudioMixingRule.java b/media/java/android/media/audiopolicy/AudioMixingRule.java
index fbee62a..6c48cdb 100644
--- a/media/java/android/media/audiopolicy/AudioMixingRule.java
+++ b/media/java/android/media/audiopolicy/AudioMixingRule.java
@@ -54,7 +54,6 @@
      * {@link Builder#addMixRule(int, Object)} where the Object parameter is an instance of
      * {@link AudioAttributes}.
      */
-    @SystemApi
     public static final int RULE_MATCH_ATTRIBUTE_USAGE = 0x1;
     /**
      * A rule requiring the capture preset information of the {@link AudioAttributes} to match.
@@ -62,14 +61,12 @@
      * {@link Builder#addMixRule(int, Object)} where the Object parameter is an instance of
      * {@link AudioAttributes}.
      */
-    @SystemApi
     public static final int RULE_MATCH_ATTRIBUTE_CAPTURE_PRESET = 0x1 << 1;
     /**
      * A rule requiring the UID of the audio stream to match that specified.
      * This mixing rule can be added with {@link Builder#addMixRule(int, Object)} where the Object
      * parameter is an instance of {@link java.lang.Integer}.
      */
-    @SystemApi
     public static final int RULE_MATCH_UID = 0x1 << 2;
 
     private final static int RULE_EXCLUSION_MASK = 0x8000;
@@ -239,7 +236,6 @@
     /**
      * Builder class for {@link AudioMixingRule} objects
      */
-    @SystemApi
     public static class Builder {
         private ArrayList<AudioMixMatchCriterion> mCriteria;
         private int mTargetMixType = AudioMix.MIX_TYPE_INVALID;
@@ -247,7 +243,6 @@
         /**
          * Constructs a new Builder with no rules.
          */
-        @SystemApi
         public Builder() {
             mCriteria = new ArrayList<AudioMixMatchCriterion>();
         }
@@ -262,7 +257,6 @@
          * @throws IllegalArgumentException
          * @see #excludeRule(AudioAttributes, int)
          */
-        @SystemApi
         public Builder addRule(AudioAttributes attrToMatch, int rule)
                 throws IllegalArgumentException {
             if (!isValidAttributesSystemApiRule(rule)) {
@@ -291,7 +285,6 @@
          * @throws IllegalArgumentException
          * @see #addRule(AudioAttributes, int)
          */
-        @SystemApi
         public Builder excludeRule(AudioAttributes attrToMatch, int rule)
                 throws IllegalArgumentException {
             if (!isValidAttributesSystemApiRule(rule)) {
@@ -313,7 +306,6 @@
          * @throws IllegalArgumentException
          * @see #excludeMixRule(int, Object)
          */
-        @SystemApi
         public Builder addMixRule(int rule, Object property) throws IllegalArgumentException {
             if (!isValidSystemApiRule(rule)) {
                 throw new IllegalArgumentException("Illegal rule value " + rule);
@@ -343,7 +335,6 @@
          * @return the same Builder instance.
          * @throws IllegalArgumentException
          */
-        @SystemApi
         public Builder excludeMixRule(int rule, Object property) throws IllegalArgumentException {
             if (!isValidSystemApiRule(rule)) {
                 throw new IllegalArgumentException("Illegal rule value " + rule);
diff --git a/media/java/android/media/audiopolicy/AudioPolicy.java b/media/java/android/media/audiopolicy/AudioPolicy.java
index 11107e2..6103f557 100644
--- a/media/java/android/media/audiopolicy/AudioPolicy.java
+++ b/media/java/android/media/audiopolicy/AudioPolicy.java
@@ -58,12 +58,10 @@
     /**
      * The status of an audio policy that is valid but cannot be used because it is not registered.
      */
-    @SystemApi
     public static final int POLICY_STATUS_UNREGISTERED = 1;
     /**
      * The status of an audio policy that is valid, successfully registered and thus active.
      */
-    @SystemApi
     public static final int POLICY_STATUS_REGISTERED = 2;
 
     private int mStatus;
@@ -75,7 +73,6 @@
      * The behavior of a policy with regards to audio focus where it relies on the application
      * to do the ducking, the is the legacy and default behavior.
      */
-    @SystemApi
     public static final int FOCUS_POLICY_DUCKING_IN_APP = 0;
     public static final int FOCUS_POLICY_DUCKING_DEFAULT = FOCUS_POLICY_DUCKING_IN_APP;
     /**
@@ -85,7 +82,6 @@
      * <br>Can only be used after having set a listener with
      * {@link AudioPolicy#setAudioPolicyFocusListener(AudioPolicyFocusListener)}.
      */
-    @SystemApi
     public static final int FOCUS_POLICY_DUCKING_IN_POLICY = 1;
 
     private AudioPolicyFocusListener mFocusListener;
@@ -133,7 +129,6 @@
      * Builder class for {@link AudioPolicy} objects.
      * By default the policy to be created doesn't govern audio focus decisions.
      */
-    @SystemApi
     public static class Builder {
         private ArrayList<AudioMix> mMixes;
         private Context mContext;
@@ -147,7 +142,6 @@
          * Constructs a new Builder with no audio mixes.
          * @param context the context for the policy
          */
-        @SystemApi
         public Builder(Context context) {
             mMixes = new ArrayList<AudioMix>();
             mContext = context;
@@ -159,7 +153,6 @@
          * @return the same Builder instance.
          * @throws IllegalArgumentException
          */
-        @SystemApi
         public Builder addMix(@NonNull AudioMix mix) throws IllegalArgumentException {
             if (mix == null) {
                 throw new IllegalArgumentException("Illegal null AudioMix argument");
@@ -174,7 +167,6 @@
          * @return the same Builder instance.
          * @throws IllegalArgumentException
          */
-        @SystemApi
         public Builder setLooper(@NonNull Looper looper) throws IllegalArgumentException {
             if (looper == null) {
                 throw new IllegalArgumentException("Illegal null Looper argument");
@@ -187,7 +179,6 @@
          * Sets the audio focus listener for the policy.
          * @param l a {@link AudioPolicy.AudioPolicyFocusListener}
          */
-        @SystemApi
         public void setAudioPolicyFocusListener(AudioPolicyFocusListener l) {
             mFocusListener = l;
         }
@@ -201,7 +192,6 @@
          * @param enforce true if the policy will govern audio focus decisions.
          * @return the same Builder instance.
          */
-        @SystemApi
         public Builder setIsAudioFocusPolicy(boolean isFocusPolicy) {
             mIsFocusPolicy = isFocusPolicy;
             return this;
@@ -211,12 +201,10 @@
          * Sets the audio policy status listener.
          * @param l a {@link AudioPolicy.AudioPolicyStatusListener}
          */
-        @SystemApi
         public void setAudioPolicyStatusListener(AudioPolicyStatusListener l) {
             mStatusListener = l;
         }
 
-        @SystemApi
         /**
          * Sets the callback to receive all volume key-related events.
          * The callback will only be called if the device is configured to handle volume events
@@ -240,7 +228,6 @@
          *     {@link AudioPolicy.AudioPolicyStatusListener} but the policy was configured
          *     as an audio focus policy with {@link #setIsAudioFocusPolicy(boolean)}.
          */
-        @SystemApi
         public AudioPolicy build() {
             if (mStatusListener != null) {
                 // the AudioPolicy status listener includes updates on each mix activity state
@@ -258,7 +245,6 @@
     }
 
     /**
-     * @hide
      * Update the current configuration of the set of audio mixes by adding new ones, while
      * keeping the policy registered.
      * This method can only be called on a registered policy.
@@ -266,7 +252,6 @@
      * @return {@link AudioManager#SUCCESS} if the change was successful, {@link AudioManager#ERROR}
      *    otherwise.
      */
-    @SystemApi
     public int attachMixes(@NonNull List<AudioMix> mixes) {
         if (mixes == null) {
             throw new IllegalArgumentException("Illegal null list of AudioMix");
@@ -299,7 +284,6 @@
     }
 
     /**
-     * @hide
      * Update the current configuration of the set of audio mixes by removing some, while
      * keeping the policy registered.
      * This method can only be called on a registered policy.
@@ -307,7 +291,6 @@
      * @return {@link AudioManager#SUCCESS} if the change was successful, {@link AudioManager#ERROR}
      *    otherwise.
      */
-    @SystemApi
     public int detachMixes(@NonNull List<AudioMix> mixes) {
         if (mixes == null) {
             throw new IllegalArgumentException("Illegal null list of AudioMix");
@@ -405,7 +388,6 @@
      * Returns the current behavior for audio focus-related ducking.
      * @return {@link #FOCUS_POLICY_DUCKING_IN_APP} or {@link #FOCUS_POLICY_DUCKING_IN_POLICY}
      */
-    @SystemApi
     public int getFocusDuckingBehavior() {
         return mConfig.mDuckingPolicy;
     }
@@ -422,7 +404,6 @@
      * @throws IllegalArgumentException
      * @throws IllegalStateException
      */
-    @SystemApi
     public int setFocusDuckingBehavior(int behavior)
             throws IllegalArgumentException, IllegalStateException {
         if ((behavior != FOCUS_POLICY_DUCKING_IN_APP)
@@ -466,7 +447,6 @@
      *     with {@link AudioManager#registerAudioPolicy(AudioPolicy)}.
      * @throws IllegalArgumentException
      */
-    @SystemApi
     public AudioRecord createAudioRecordSink(AudioMix mix) throws IllegalArgumentException {
         if (!policyReadyToUse()) {
             Log.e(TAG, "Cannot create AudioRecord sink for AudioMix");
@@ -506,7 +486,6 @@
      *     with {@link AudioManager#registerAudioPolicy(AudioPolicy)}.
      * @throws IllegalArgumentException
      */
-    @SystemApi
     public AudioTrack createAudioTrackSource(AudioMix mix) throws IllegalArgumentException {
         if (!policyReadyToUse()) {
             Log.e(TAG, "Cannot create AudioTrack source for AudioMix");
@@ -528,18 +507,15 @@
         return at;
     }
 
-    @SystemApi
     public int getStatus() {
         return mStatus;
     }
 
-    @SystemApi
     public static abstract class AudioPolicyStatusListener {
         public void onStatusChange() {}
         public void onMixStateUpdate(AudioMix mix) {}
     }
 
-    @SystemApi
     public static abstract class AudioPolicyFocusListener {
         public void onAudioFocusGrant(AudioFocusInfo afi, int requestResult) {}
         public void onAudioFocusLoss(AudioFocusInfo afi, boolean wasNotified) {}
@@ -563,7 +539,6 @@
         public void onAudioFocusAbandon(AudioFocusInfo afi) {}
     }
 
-    @SystemApi
     /**
      * Callback class to receive volume change-related events.
      * See {@link #Builder.setAudioPolicyVolumeCallback(AudioPolicyCallback)} to configure the
diff --git a/media/java/android/media/tv/TvInputManager.java b/media/java/android/media/tv/TvInputManager.java
index 143182f..a5121a0 100644
--- a/media/java/android/media/tv/TvInputManager.java
+++ b/media/java/android/media/tv/TvInputManager.java
@@ -1330,7 +1330,6 @@
      *
      * @return the list of content ratings blocked by the user.
      */
-    @SystemApi
     public List<TvContentRating> getBlockedRatings() {
         try {
             List<TvContentRating> ratings = new ArrayList<>();
diff --git a/media/jni/android_media_MediaExtractor.cpp b/media/jni/android_media_MediaExtractor.cpp
index 15957c6..dad0e53 100644
--- a/media/jni/android_media_MediaExtractor.cpp
+++ b/media/jni/android_media_MediaExtractor.cpp
@@ -494,17 +494,17 @@
 
     if (extractor == NULL) {
         jniThrowException(env, "java/lang/IllegalStateException", NULL);
-        return -1ll;
+        return -1LL;
     }
 
     int64_t sampleTimeUs;
     status_t err = extractor->getSampleTime(&sampleTimeUs);
 
     if (err == ERROR_END_OF_STREAM) {
-        return -1ll;
+        return -1LL;
     } else if (err != OK) {
         jniThrowException(env, "java/lang/IllegalArgumentException", NULL);
-        return -1ll;
+        return -1LL;
     }
 
     return (jlong) sampleTimeUs;
@@ -516,17 +516,17 @@
 
     if (extractor == NULL) {
         jniThrowException(env, "java/lang/IllegalStateException", NULL);
-        return -1ll;
+        return -1LL;
     }
 
     size_t sampleSize;
     status_t err = extractor->getSampleSize(&sampleSize);
 
     if (err == ERROR_END_OF_STREAM) {
-        return -1ll;
+        return -1LL;
     } else if (err != OK) {
         jniThrowException(env, "java/lang/IllegalArgumentException", NULL);
-        return -1ll;
+        return -1LL;
     }
 
     return (jlong) sampleSize;
@@ -828,13 +828,13 @@
 
     if (extractor == NULL) {
         jniThrowException(env, "java/lang/IllegalStateException", NULL);
-        return -1ll;
+        return -1LL;
     }
 
     int64_t cachedDurationUs;
     bool eos;
     if (!extractor->getCachedDuration(&cachedDurationUs, &eos)) {
-        return -1ll;
+        return -1LL;
     }
 
     return (jlong) cachedDurationUs;
diff --git a/media/jni/audioeffect/android_media_Visualizer.cpp b/media/jni/audioeffect/android_media_Visualizer.cpp
index b7d7b03..45de36e 100644
--- a/media/jni/audioeffect/android_media_Visualizer.cpp
+++ b/media/jni/audioeffect/android_media_Visualizer.cpp
@@ -440,6 +440,7 @@
         if (lpVisualizer == 0) {
             return;
         }
+        lpVisualizer->release();
     }
     // delete the JNI data
     VisualizerJniStorage* lpJniStorage =
diff --git a/packages/MtpDocumentsProvider/src/com/android/mtp/MtpManager.java b/packages/MtpDocumentsProvider/src/com/android/mtp/MtpManager.java
index 8f254e9..a7de631 100644
--- a/packages/MtpDocumentsProvider/src/com/android/mtp/MtpManager.java
+++ b/packages/MtpDocumentsProvider/src/com/android/mtp/MtpManager.java
@@ -200,7 +200,7 @@
             }
             if (objectInfo.getFormat() != MtpConstants.FORMAT_ASSOCIATION) {
                 if (!device.sendObject(sendObjectInfoResult.getObjectHandle(),
-                        sendObjectInfoResult.getCompressedSize(), source)) {
+                        sendObjectInfoResult.getCompressedSizeLong(), source)) {
                     throw new IOException("Failed to send contents of a document");
                 }
             }
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/EncryptionHelper.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/EncryptionHelper.java
index 639e50c..9c099f9 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/EncryptionHelper.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/EncryptionHelper.java
@@ -16,7 +16,7 @@
 
 package com.android.systemui.statusbar.policy;
 
-import android.os.SystemProperties;
+import android.sysprop.VoldProperties;
 
 /**
  * Helper for determining whether the phone is decrypted yet.
@@ -26,7 +26,7 @@
     public static final boolean IS_DATA_ENCRYPTED = isDataEncrypted();
 
     private static boolean isDataEncrypted() {
-        String voldState = SystemProperties.get("vold.decrypt");
+        String voldState = VoldProperties.decrypt().orElse("");
         return "1".equals(voldState) || "trigger_restart_min_framework".equals(voldState);
     }
 }
diff --git a/services/core/Android.bp b/services/core/Android.bp
index 4395f96..9b8f51e 100644
--- a/services/core/Android.bp
+++ b/services/core/Android.bp
@@ -6,15 +6,12 @@
             "frameworks/native/aidl/binder",
             "frameworks/native/cmds/dumpstate/binder",
             "system/core/storaged/binder",
-            "system/netd/server/binder",
             "system/vold/binder",
         ],
     },
     srcs: [
         "java/**/*.java",
         ":dumpstate_aidl",
-        ":netd_aidl",
-        ":netd_metrics_aidl",
         ":installd_aidl",
         ":storaged_aidl",
         ":vold_aidl",
@@ -50,6 +47,7 @@
         "android.hardware.contexthub-V1.0-java",
         "android.hidl.manager-V1.0-java",
         "netd_aidl_interface-java",
+        "netd_event_listener_interface-java",
     ],
 }
 
diff --git a/services/core/java/com/android/server/ConnectivityService.java b/services/core/java/com/android/server/ConnectivityService.java
index 14503f9..eda9fe1 100644
--- a/services/core/java/com/android/server/ConnectivityService.java
+++ b/services/core/java/com/android/server/ConnectivityService.java
@@ -902,6 +902,7 @@
         // Listen to package add and removal events for all users.
         intentFilter = new IntentFilter();
         intentFilter.addAction(Intent.ACTION_PACKAGE_ADDED);
+        intentFilter.addAction(Intent.ACTION_PACKAGE_REPLACED);
         intentFilter.addAction(Intent.ACTION_PACKAGE_REMOVED);
         intentFilter.addDataScheme("package");
         mContext.registerReceiverAsUser(
@@ -4203,12 +4204,46 @@
         mPermissionMonitor.onPackageAdded(packageName, uid);
     }
 
-    private void onPackageRemoved(String packageName, int uid) {
+    private void onPackageReplaced(String packageName, int uid) {
+        if (TextUtils.isEmpty(packageName) || uid < 0) {
+            Slog.wtf(TAG, "Invalid package in onPackageReplaced: " + packageName + " | " + uid);
+            return;
+        }
+        final int userId = UserHandle.getUserId(uid);
+        synchronized (mVpns) {
+            final Vpn vpn = mVpns.get(userId);
+            if (vpn == null) {
+                return;
+            }
+            // Legacy always-on VPN won't be affected since the package name is not set.
+            if (TextUtils.equals(vpn.getAlwaysOnPackage(), packageName)) {
+                Slog.d(TAG, "Restarting always-on VPN package " + packageName + " for user "
+                        + userId);
+                vpn.startAlwaysOnVpn();
+            }
+        }
+    }
+
+    private void onPackageRemoved(String packageName, int uid, boolean isReplacing) {
         if (TextUtils.isEmpty(packageName) || uid < 0) {
             Slog.wtf(TAG, "Invalid package in onPackageRemoved: " + packageName + " | " + uid);
             return;
         }
         mPermissionMonitor.onPackageRemoved(uid);
+
+        final int userId = UserHandle.getUserId(uid);
+        synchronized (mVpns) {
+            final Vpn vpn = mVpns.get(userId);
+            if (vpn == null) {
+                return;
+            }
+            // Legacy always-on VPN won't be affected since the package name is not set.
+            if (TextUtils.equals(vpn.getAlwaysOnPackage(), packageName) && !isReplacing) {
+                Slog.d(TAG, "Removing always-on VPN package " + packageName + " for user "
+                        + userId);
+                vpn.setAlwaysOnPackage(null, false);
+            }
+        }
     }
 
     private void onUserUnlocked(int userId) {
@@ -4245,8 +4280,12 @@
                 onUserUnlocked(userId);
             } else if (Intent.ACTION_PACKAGE_ADDED.equals(action)) {
                 onPackageAdded(packageName, uid);
+            } else if (Intent.ACTION_PACKAGE_REPLACED.equals(action)) {
+                onPackageReplaced(packageName, uid);
             } else if (Intent.ACTION_PACKAGE_REMOVED.equals(action)) {
-                onPackageRemoved(packageName, uid);
+                final boolean isReplacing = intent.getBooleanExtra(
+                        Intent.EXTRA_REPLACING, false);
+                onPackageRemoved(packageName, uid, isReplacing);
             }
         }
     };
diff --git a/services/core/java/com/android/server/NetworkManagementService.java b/services/core/java/com/android/server/NetworkManagementService.java
index fc1e1f0..d0e8b47 100644
--- a/services/core/java/com/android/server/NetworkManagementService.java
+++ b/services/core/java/com/android/server/NetworkManagementService.java
@@ -951,18 +951,6 @@
     // INetworkManagementService members
     //
     @Override
-    public INetd getNetdService() throws RemoteException {
-        final CountDownLatch connectedSignal = mConnectedSignal;
-        if (connectedSignal != null) {
-            try {
-                connectedSignal.await();
-            } catch (InterruptedException ignored) {}
-        }
-
-        return mNetdService;
-    }
-
-    @Override
     public String[] listInterfaces() {
         mContext.enforceCallingOrSelfPermission(CONNECTIVITY_INTERNAL, TAG);
         try {
diff --git a/services/core/java/com/android/server/StorageManagerService.java b/services/core/java/com/android/server/StorageManagerService.java
index a3e6ea2..371e517 100644
--- a/services/core/java/com/android/server/StorageManagerService.java
+++ b/services/core/java/com/android/server/StorageManagerService.java
@@ -99,6 +99,7 @@
 import android.os.storage.VolumeRecord;
 import android.provider.MediaStore;
 import android.provider.Settings;
+import android.sysprop.VoldProperties;
 import android.text.TextUtils;
 import android.text.format.DateUtils;
 import android.util.ArrayMap;
@@ -973,7 +974,7 @@
 
         // On an encrypted device we can't see system properties yet, so pull
         // the system locale out of the mount service.
-        if ("".equals(SystemProperties.get("vold.encrypt_progress"))) {
+        if ("".equals(VoldProperties.encrypt_progress().orElse(""))) {
             copyLocaleFromMountService();
         }
     }
diff --git a/services/core/java/com/android/server/TelephonyRegistry.java b/services/core/java/com/android/server/TelephonyRegistry.java
index 4bfcd25..66ae47c 100644
--- a/services/core/java/com/android/server/TelephonyRegistry.java
+++ b/services/core/java/com/android/server/TelephonyRegistry.java
@@ -47,6 +47,7 @@
 import android.telephony.SignalStrength;
 import android.telephony.SubscriptionManager;
 import android.telephony.TelephonyManager;
+import android.telephony.emergency.EmergencyNumber;
 import android.util.LocalLog;
 import android.util.StatsLog;
 
@@ -1665,6 +1666,14 @@
 
 
     @Override
+    public void notifyEmergencyNumberList(List<EmergencyNumber> emergencyNumberList) {
+        // TODO checkPermission, modify Listener constent documentation
+        // TODO implement multisim emergency number list update in listener
+        // TODO implement PhoneStateListenerTest
+    }
+
+
+    @Override
     public void dump(FileDescriptor fd, PrintWriter writer, String[] args) {
         final IndentingPrintWriter pw = new IndentingPrintWriter(writer, "  ");
 
diff --git a/services/core/java/com/android/server/am/ActivityManagerService.java b/services/core/java/com/android/server/am/ActivityManagerService.java
index a411af2..dad05b9 100644
--- a/services/core/java/com/android/server/am/ActivityManagerService.java
+++ b/services/core/java/com/android/server/am/ActivityManagerService.java
@@ -364,6 +364,7 @@
 import android.provider.Settings;
 import android.service.voice.IVoiceInteractionSession;
 import android.service.voice.VoiceInteractionManagerInternal;
+import android.sysprop.VoldProperties;
 import android.telecom.TelecomManager;
 import android.text.TextUtils;
 import android.text.format.DateUtils;
@@ -7958,8 +7959,8 @@
             SystemProperties.set("sys.boot_completed", "1");
 
             // And trigger dev.bootcomplete if we are not showing encryption progress
-            if (!"trigger_restart_min_framework".equals(SystemProperties.get("vold.decrypt"))
-                    || "".equals(SystemProperties.get("vold.encrypt_progress"))) {
+            if (!"trigger_restart_min_framework".equals(VoldProperties.decrypt().orElse(""))
+                    || "".equals(VoldProperties.encrypt_progress().orElse(""))){
                 SystemProperties.set("dev.bootcomplete", "1");
             }
             mUserController.sendBootCompleted(
@@ -13646,7 +13647,7 @@
         String extraOptions = null;
         switch (bugreportType) {
             case ActivityManager.BUGREPORT_OPTION_FULL:
-                // Default options.
+                extraOptions = "bugreportfull";
                 break;
             case ActivityManager.BUGREPORT_OPTION_INTERACTIVE:
                 extraOptions = "bugreportplus";
diff --git a/services/core/java/com/android/server/connectivity/Tethering.java b/services/core/java/com/android/server/connectivity/Tethering.java
index 3c14393..d75601b 100644
--- a/services/core/java/com/android/server/connectivity/Tethering.java
+++ b/services/core/java/com/android/server/connectivity/Tethering.java
@@ -944,10 +944,11 @@
     public boolean hasTetherableConfiguration() {
         final TetheringConfiguration cfg = mConfig;
         final boolean hasDownstreamConfiguration =
-                (cfg.tetherableUsbRegexs.length != 0) ||
-                (cfg.tetherableWifiRegexs.length != 0) ||
-                (cfg.tetherableBluetoothRegexs.length != 0);
-        final boolean hasUpstreamConfiguration = !cfg.preferredUpstreamIfaceTypes.isEmpty();
+                (cfg.tetherableUsbRegexs.length != 0)
+                || (cfg.tetherableWifiRegexs.length != 0)
+                || (cfg.tetherableBluetoothRegexs.length != 0);
+        final boolean hasUpstreamConfiguration = !cfg.preferredUpstreamIfaceTypes.isEmpty()
+                || cfg.chooseUpstreamAutomatically;
 
         return hasDownstreamConfiguration && hasUpstreamConfiguration;
     }
diff --git a/services/core/java/com/android/server/connectivity/Vpn.java b/services/core/java/com/android/server/connectivity/Vpn.java
index b7ed2f9..602aedb 100644
--- a/services/core/java/com/android/server/connectivity/Vpn.java
+++ b/services/core/java/com/android/server/connectivity/Vpn.java
@@ -206,45 +206,6 @@
     // Handle of the user initiating VPN.
     private final int mUserHandle;
 
-    // Listen to package removal and change events (update/uninstall) for this user
-    private final BroadcastReceiver mPackageIntentReceiver = new BroadcastReceiver() {
-        @Override
-        public void onReceive(Context context, Intent intent) {
-            final Uri data = intent.getData();
-            final String packageName = data == null ? null : data.getSchemeSpecificPart();
-            if (packageName == null) {
-                return;
-            }
-
-            synchronized (Vpn.this) {
-                // Avoid race where always-on package has been unset
-                if (!packageName.equals(getAlwaysOnPackage())) {
-                    return;
-                }
-
-                final String action = intent.getAction();
-                Log.i(TAG, "Received broadcast " + action + " for always-on VPN package "
-                        + packageName + " in user " + mUserHandle);
-
-                switch(action) {
-                    case Intent.ACTION_PACKAGE_REPLACED:
-                        // Start vpn after app upgrade
-                        startAlwaysOnVpn();
-                        break;
-                    case Intent.ACTION_PACKAGE_REMOVED:
-                        final boolean isPackageRemoved = !intent.getBooleanExtra(
-                                Intent.EXTRA_REPLACING, false);
-                        if (isPackageRemoved) {
-                            setAlwaysOnPackage(null, false);
-                        }
-                        break;
-                }
-            }
-        }
-    };
-
-    private boolean mIsPackageIntentReceiverRegistered = false;
-
     public Vpn(Looper looper, Context context, INetworkManagementService netService,
             @UserIdInt int userHandle) {
         this(looper, context, netService, userHandle, new SystemServices(context));
@@ -500,7 +461,6 @@
             // Prepare this app. The notification will update as a side-effect of updateState().
             prepareInternal(packageName);
         }
-        maybeRegisterPackageChangeReceiverLocked(packageName);
         setVpnForcedLocked(mLockdown);
         return true;
     }
@@ -509,31 +469,6 @@
         return packageName == null || VpnConfig.LEGACY_VPN.equals(packageName);
     }
 
-    private void unregisterPackageChangeReceiverLocked() {
-        if (mIsPackageIntentReceiverRegistered) {
-            mContext.unregisterReceiver(mPackageIntentReceiver);
-            mIsPackageIntentReceiverRegistered = false;
-        }
-    }
-
-    private void maybeRegisterPackageChangeReceiverLocked(String packageName) {
-        // Unregister IntentFilter listening for previous always-on package change
-        unregisterPackageChangeReceiverLocked();
-
-        if (!isNullOrLegacyVpn(packageName)) {
-            mIsPackageIntentReceiverRegistered = true;
-
-            IntentFilter intentFilter = new IntentFilter();
-            // Protected intent can only be sent by system. No permission required in register.
-            intentFilter.addAction(Intent.ACTION_PACKAGE_REPLACED);
-            intentFilter.addAction(Intent.ACTION_PACKAGE_REMOVED);
-            intentFilter.addDataScheme("package");
-            intentFilter.addDataSchemeSpecificPart(packageName, PatternMatcher.PATTERN_LITERAL);
-            mContext.registerReceiverAsUser(
-                    mPackageIntentReceiver, UserHandle.of(mUserHandle), intentFilter, null, null);
-        }
-    }
-
     /**
      * @return the package name of the VPN controller responsible for always-on VPN,
      *         or {@code null} if none is set or always-on VPN is controlled through
@@ -1302,7 +1237,6 @@
         setLockdown(false);
         mAlwaysOn = false;
 
-        unregisterPackageChangeReceiverLocked();
         // Quit any active connections
         agentDisconnect();
     }
diff --git a/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java b/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java
index de0f298..25ca278 100644
--- a/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java
+++ b/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java
@@ -1082,13 +1082,14 @@
         assertRunOnServiceThread();
 
         if (!canStartArcUpdateAction(message.getSource(), true)) {
-            if (getAvrDeviceInfo() == null) {
+            HdmiDeviceInfo avrDeviceInfo = getAvrDeviceInfo();
+            if (avrDeviceInfo == null) {
                 // AVR may not have been discovered yet. Delay the message processing.
                 mDelayedMessageBuffer.add(message);
                 return true;
             }
             mService.maySendFeatureAbortCommand(message, Constants.ABORT_REFUSED);
-            if (!isConnectedToArcPort(message.getSource())) {
+            if (!isConnectedToArcPort(avrDeviceInfo.getPhysicalAddress())) {
                 displayOsd(OSD_MESSAGE_ARC_CONNECTED_INVALID_PORT);
             }
             return true;
diff --git a/services/core/java/com/android/server/net/NetworkStatsRecorder.java b/services/core/java/com/android/server/net/NetworkStatsRecorder.java
index a16dcf3..a2e7e0c 100644
--- a/services/core/java/com/android/server/net/NetworkStatsRecorder.java
+++ b/services/core/java/com/android/server/net/NetworkStatsRecorder.java
@@ -352,7 +352,7 @@
 
         // Clear UID from current stats snapshot
         if (mLastSnapshot != null) {
-            mLastSnapshot = mLastSnapshot.withoutUids(uids);
+            mLastSnapshot.removeUids(uids);
         }
 
         final NetworkStatsCollection complete = mComplete != null ? mComplete.get() : null;
diff --git a/services/core/java/com/android/server/pm/PackageManagerShellCommand.java b/services/core/java/com/android/server/pm/PackageManagerShellCommand.java
index 580126f..7856bcf 100644
--- a/services/core/java/com/android/server/pm/PackageManagerShellCommand.java
+++ b/services/core/java/com/android/server/pm/PackageManagerShellCommand.java
@@ -534,6 +534,7 @@
         boolean listInstaller = false;
         boolean showUid = false;
         boolean showVersionCode = false;
+        boolean listApexOnly = false;
         int uid = -1;
         int userId = UserHandle.USER_SYSTEM;
         try {
@@ -573,6 +574,10 @@
                     case "--show-versioncode":
                         showVersionCode = true;
                         break;
+                    case "--apex-only":
+                        getFlags |= PackageManager.MATCH_APEX;
+                        listApexOnly = true;
+                        break;
                     case "--user":
                         userId = UserHandle.parseUserArg(getNextArgRequired());
                         break;
@@ -603,30 +608,34 @@
             if (filter != null && !info.packageName.contains(filter)) {
                 continue;
             }
-            if (uid != -1 && info.applicationInfo.uid != uid) {
+            final boolean isApex = info.isApex;
+            if (uid != -1 && !isApex && info.applicationInfo.uid != uid) {
                 continue;
             }
-            final boolean isSystem =
+
+            final boolean isSystem = !isApex &&
                     (info.applicationInfo.flags&ApplicationInfo.FLAG_SYSTEM) != 0;
-            if ((!listDisabled || !info.applicationInfo.enabled) &&
-                    (!listEnabled || info.applicationInfo.enabled) &&
+            final boolean isEnabled = !isApex && info.applicationInfo.enabled;
+            if ((!listDisabled || !isEnabled) &&
+                    (!listEnabled || isEnabled) &&
                     (!listSystem || isSystem) &&
-                    (!listThirdParty || !isSystem)) {
+                    (!listThirdParty || !isSystem) &&
+                    (!listApexOnly || isApex)) {
                 pw.print("package:");
-                if (showSourceDir) {
+                if (showSourceDir && !isApex) {
                     pw.print(info.applicationInfo.sourceDir);
                     pw.print("=");
                 }
                 pw.print(info.packageName);
-                if (showVersionCode) {
+                if (showVersionCode && !isApex) {
                     pw.print(" versionCode:");
                     pw.print(info.applicationInfo.versionCode);
                 }
-                if (listInstaller) {
+                if (listInstaller && !isApex) {
                     pw.print("  installer=");
                     pw.print(mInterface.getInstallerPackageName(info.packageName));
                 }
-                if (showUid) {
+                if (showUid && !isApex) {
                     pw.print(" uid:");
                     pw.print(info.applicationInfo.uid);
                 }
@@ -2692,11 +2701,11 @@
         pw.println("    Prints all system libraries.");
         pw.println("");
         pw.println("  list packages [-f] [-d] [-e] [-s] [-3] [-i] [-l] [-u] [-U] ");
-        pw.println("      [--uid UID] [--user USER_ID] [FILTER]");
+        pw.println("      [--apex-only] [--uid UID] [--user USER_ID] [FILTER]");
         pw.println("    Prints all packages; optionally only those whose name contains");
         pw.println("    the text in FILTER.  Options are:");
         pw.println("      -f: see their associated file");
-        pw.println("      -a: all known packages");
+        pw.println("      -a: all known packages (but excluding APEXes)");
         pw.println("      -d: filter to only show disabled packages");
         pw.println("      -e: filter to only show enabled packages");
         pw.println("      -s: filter to only show system packages");
@@ -2705,6 +2714,7 @@
         pw.println("      -l: ignored (used for compatibility with older releases)");
         pw.println("      -U: also show the package UID");
         pw.println("      -u: also include uninstalled packages");
+        pw.println("      --apex-only: only show APEX packages");
         pw.println("      --uid UID: filter to only show packages with the given UID");
         pw.println("      --user USER_ID: only list packages belonging to the given user");
         pw.println("");
diff --git a/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java b/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java
index b74a582..123d615 100644
--- a/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java
+++ b/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java
@@ -4787,14 +4787,16 @@
     private boolean resetPasswordInternal(String password, long tokenHandle, byte[] token,
             int flags, int callingUid, int userHandle) {
         int quality;
+        final int realQuality;
         synchronized (getLockObject()) {
             quality = getPasswordQuality(null, userHandle, /* parent */ false);
             if (quality == DevicePolicyManager.PASSWORD_QUALITY_MANAGED) {
                 quality = PASSWORD_QUALITY_UNSPECIFIED;
             }
             final PasswordMetrics metrics = PasswordMetrics.computeForPassword(password);
+            realQuality = metrics.quality;
             if (quality != PASSWORD_QUALITY_UNSPECIFIED) {
-                final int realQuality = metrics.quality;
+
                 if (realQuality < quality
                         && quality != DevicePolicyManager.PASSWORD_QUALITY_COMPLEX) {
                     Slog.w(LOG_TAG, "resetPassword: password quality 0x"
@@ -4881,7 +4883,7 @@
         try {
             if (token == null) {
                 if (!TextUtils.isEmpty(password)) {
-                    mLockPatternUtils.saveLockPassword(password, null, quality, userHandle);
+                    mLockPatternUtils.saveLockPassword(password, null, realQuality, userHandle);
                 } else {
                     mLockPatternUtils.clearLock(null, userHandle);
                 }
@@ -4890,7 +4892,7 @@
                 result = mLockPatternUtils.setLockCredentialWithToken(password,
                         TextUtils.isEmpty(password) ? LockPatternUtils.CREDENTIAL_TYPE_NONE
                                 : LockPatternUtils.CREDENTIAL_TYPE_PASSWORD,
-                                quality, tokenHandle, token, userHandle);
+                        realQuality, tokenHandle, token, userHandle);
             }
             boolean requireEntry = (flags & DevicePolicyManager.RESET_PASSWORD_REQUIRE_ENTRY) != 0;
             if (requireEntry) {
diff --git a/services/java/com/android/server/SystemServer.java b/services/java/com/android/server/SystemServer.java
index 80b0e6f..65ee52a 100644
--- a/services/java/com/android/server/SystemServer.java
+++ b/services/java/com/android/server/SystemServer.java
@@ -48,6 +48,7 @@
 import android.os.Trace;
 import android.os.UserHandle;
 import android.os.storage.IStorageManager;
+import android.sysprop.VoldProperties;
 import android.util.DisplayMetrics;
 import android.util.EventLog;
 import android.util.Slog;
@@ -625,7 +626,7 @@
         traceEnd();
 
         // Only run "core" apps if we're encrypting the device.
-        String cryptState = SystemProperties.get("vold.decrypt");
+        String cryptState = VoldProperties.decrypt().orElse("");
         if (ENCRYPTING_STATE.equals(cryptState)) {
             Slog.w(TAG, "Detected encryption in progress - only parsing core apps");
             mOnlyCore = true;
diff --git a/services/tests/servicestests/Android.bp b/services/tests/servicestests/Android.bp
index 225df5c..af8596d 100644
--- a/services/tests/servicestests/Android.bp
+++ b/services/tests/servicestests/Android.bp
@@ -66,10 +66,10 @@
         "liblog",
         "liblzma",
         "libnativehelper",
-        "libnetdaidl",
         "libui",
         "libunwind",
         "libutils",
+        "netd_aidl_interface-cpp",
     ],
 
     dxflags: ["--multi-dex"],
diff --git a/services/tests/servicestests/src/com/android/server/devicepolicy/DevicePolicyManagerTest.java b/services/tests/servicestests/src/com/android/server/devicepolicy/DevicePolicyManagerTest.java
index 1acecfc..26ce7e4 100644
--- a/services/tests/servicestests/src/com/android/server/devicepolicy/DevicePolicyManagerTest.java
+++ b/services/tests/servicestests/src/com/android/server/devicepolicy/DevicePolicyManagerTest.java
@@ -4181,7 +4181,7 @@
         // test reset password with token
         when(getServices().lockPatternUtils.setLockCredentialWithToken(eq(password),
                 eq(LockPatternUtils.CREDENTIAL_TYPE_PASSWORD),
-                eq(DevicePolicyManager.PASSWORD_QUALITY_UNSPECIFIED), eq(handle), eq(token),
+                eq(DevicePolicyManager.PASSWORD_QUALITY_ALPHABETIC), eq(handle), eq(token),
                 eq(UserHandle.USER_SYSTEM)))
                 .thenReturn(true);
         assertTrue(dpm.resetPasswordWithToken(admin1, password, token, 0));
diff --git a/services/tests/uiservicestests/Android.bp b/services/tests/uiservicestests/Android.bp
index 9b414f1..b0222b8 100644
--- a/services/tests/uiservicestests/Android.bp
+++ b/services/tests/uiservicestests/Android.bp
@@ -50,9 +50,9 @@
         "liblog",
         "liblzma",
         "libnativehelper",
-        "libnetdaidl",
         "libui",
         "libunwind",
         "libutils",
+        "netd_aidl_interface-cpp",
     ],
 }
diff --git a/services/usb/java/com/android/server/usb/UsbDebuggingManager.java b/services/usb/java/com/android/server/usb/UsbDebuggingManager.java
index 3b08505..4239099 100644
--- a/services/usb/java/com/android/server/usb/UsbDebuggingManager.java
+++ b/services/usb/java/com/android/server/usb/UsbDebuggingManager.java
@@ -34,10 +34,10 @@
 import android.os.Looper;
 import android.os.Message;
 import android.os.SystemClock;
-import android.os.SystemProperties;
 import android.os.UserHandle;
 import android.os.UserManager;
 import android.service.usb.UsbDebuggingManagerProto;
+import android.sysprop.VoldProperties;
 import android.util.Base64;
 import android.util.Slog;
 
@@ -263,7 +263,7 @@
 
                 case MESSAGE_ADB_CONFIRM: {
                     if ("trigger_restart_min_framework".equals(
-                            SystemProperties.get("vold.decrypt"))) {
+                            VoldProperties.decrypt().orElse(""))) {
                         Slog.d(TAG, "Deferring adb confirmation until after vold decrypt");
                         if (mThread != null) {
                             mThread.sendResponse("NO");
diff --git a/services/usb/java/com/android/server/usb/UsbDeviceManager.java b/services/usb/java/com/android/server/usb/UsbDeviceManager.java
index 4da7285..aa93c6b 100644
--- a/services/usb/java/com/android/server/usb/UsbDeviceManager.java
+++ b/services/usb/java/com/android/server/usb/UsbDeviceManager.java
@@ -69,6 +69,7 @@
 import android.provider.Settings;
 import android.service.usb.UsbDeviceManagerProto;
 import android.service.usb.UsbHandlerProto;
+import android.sysprop.VoldProperties;
 import android.util.Pair;
 import android.util.Slog;
 
@@ -285,7 +286,7 @@
         mControlFds.put(UsbManager.FUNCTION_PTP, ptpFd);
 
         boolean secureAdbEnabled = SystemProperties.getBoolean("ro.adb.secure", false);
-        boolean dataEncrypted = "1".equals(SystemProperties.get("vold.decrypt"));
+        boolean dataEncrypted = "1".equals(VoldProperties.decrypt().orElse(""));
         if (secureAdbEnabled && !dataEncrypted) {
             mDebuggingManager = new UsbDebuggingManager(context);
         }
diff --git a/telecomm/java/android/telecom/Call.java b/telecomm/java/android/telecom/Call.java
index cef99865..bf0ffb9 100644
--- a/telecomm/java/android/telecom/Call.java
+++ b/telecomm/java/android/telecom/Call.java
@@ -123,10 +123,21 @@
      * The key to retrieve the optional {@code PhoneAccount}s Telecom can bundle with its Call
      * extras. Used to pass the phone accounts to display on the front end to the user in order to
      * select phone accounts to (for example) place a call.
+     * @deprecated Use the list from {@link #EXTRA_SUGGESTED_PHONE_ACCOUNTS} instead.
      */
+    @Deprecated
     public static final String AVAILABLE_PHONE_ACCOUNTS = "selectPhoneAccountAccounts";
 
     /**
+     * Key for extra used to pass along a list of {@link PhoneAccountSuggestion}s to the in-call
+     * UI when a call enters the {@link #STATE_SELECT_PHONE_ACCOUNT} state. The list included here
+     * will have the same length and be in the same order as the list passed with
+     * {@link #AVAILABLE_PHONE_ACCOUNTS}.
+     */
+    public static final String EXTRA_SUGGESTED_PHONE_ACCOUNTS =
+            "android.telecom.extra.SUGGESTED_PHONE_ACCOUNTS";
+
+    /**
      * Extra key used to indicate the time (in milliseconds since midnight, January 1, 1970 UTC)
      * when the last outgoing emergency call was made.  This is used to identify potential emergency
      * callbacks.
diff --git a/telecomm/java/android/telecom/PhoneAccountSuggestion.java b/telecomm/java/android/telecom/PhoneAccountSuggestion.java
new file mode 100644
index 0000000..4e6a178
--- /dev/null
+++ b/telecomm/java/android/telecom/PhoneAccountSuggestion.java
@@ -0,0 +1,135 @@
+/*
+ * 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.
+ */
+
+package android.telecom;
+
+import android.annotation.IntDef;
+import android.annotation.SystemApi;
+import android.annotation.TestApi;
+import android.os.Parcel;
+import android.os.Parcelable;
+
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+
+public final class PhoneAccountSuggestion implements Parcelable {
+
+    /** @hide */
+    @Retention(RetentionPolicy.SOURCE)
+    @IntDef(value = {REASON_NONE, REASON_INTRA_CARRIER, REASON_FREQUENT,
+            REASON_USER_SET, REASON_OTHER}, prefix = { "REASON_" })
+    public @interface SuggestionReason {}
+
+    /**
+     * Indicates that this account is not suggested for use, but is still available.
+     */
+    public static final int REASON_NONE = 0;
+
+    /**
+     * Indicates that the {@link PhoneAccountHandle} is suggested because the number we're calling
+     * is on the same carrier, and therefore may have lower rates.
+     */
+    public static final int REASON_INTRA_CARRIER = 1;
+
+    /**
+     * Indicates that the {@link PhoneAccountHandle} is suggested because the user uses it
+     * frequently for the number that we are calling.
+     */
+    public static final int REASON_FREQUENT = 2;
+
+    /**
+     * Indicates that the {@link PhoneAccountHandle} is suggested because the user explicitly
+     * specified that it be used for the number we are calling.
+     */
+    public static final int REASON_USER_SET = 3;
+
+    /**
+     * Indicates that the {@link PhoneAccountHandle} is suggested for a reason not otherwise
+     * enumerated here.
+     */
+    public static final int REASON_OTHER = 4;
+
+    private PhoneAccountHandle mHandle;
+    private int mReason;
+    private boolean mShouldAutoSelect;
+
+    /**
+     * @hide
+     */
+    @SystemApi
+    @TestApi
+    public PhoneAccountSuggestion(PhoneAccountHandle handle, @SuggestionReason int reason,
+            boolean shouldAutoSelect) {
+        this.mHandle = handle;
+        this.mReason = reason;
+        this.mShouldAutoSelect = shouldAutoSelect;
+    }
+
+    private PhoneAccountSuggestion(Parcel in) {
+        mHandle = in.readParcelable(PhoneAccountHandle.class.getClassLoader());
+        mReason = in.readInt();
+        mShouldAutoSelect = in.readByte() != 0;
+    }
+
+    public static final Creator<PhoneAccountSuggestion> CREATOR =
+            new Creator<PhoneAccountSuggestion>() {
+                @Override
+                public PhoneAccountSuggestion createFromParcel(Parcel in) {
+                    return new PhoneAccountSuggestion(in);
+                }
+
+                @Override
+                public PhoneAccountSuggestion[] newArray(int size) {
+                    return new PhoneAccountSuggestion[size];
+                }
+            };
+
+    /**
+     * @return The {@link PhoneAccountHandle} for this suggestion.
+     */
+    public PhoneAccountHandle getPhoneAccountHandle() {
+        return mHandle;
+    }
+
+    /**
+     * @return The reason for this suggestion
+     */
+    public @SuggestionReason int getReason() {
+        return mReason;
+    }
+
+    /**
+     * Suggests whether the dialer should automatically place the call using this account without
+     * user interaction. This may be set on multiple {@link PhoneAccountSuggestion}s, and the dialer
+     * is free to choose which one to use.
+     * @return {@code true} if the hint is to auto-select, {@code false} otherwise.
+     */
+    public boolean shouldAutoSelect() {
+        return mShouldAutoSelect;
+    }
+
+    @Override
+    public int describeContents() {
+        return 0;
+    }
+
+    @Override
+    public void writeToParcel(Parcel dest, int flags) {
+        dest.writeParcelable(mHandle, flags);
+        dest.writeInt(mReason);
+        dest.writeByte((byte) (mShouldAutoSelect ? 1 : 0));
+    }
+}
diff --git a/telecomm/java/android/telecom/TelecomManager.java b/telecomm/java/android/telecom/TelecomManager.java
index 9f0bdd7..e7ce78a 100644
--- a/telecomm/java/android/telecom/TelecomManager.java
+++ b/telecomm/java/android/telecom/TelecomManager.java
@@ -1462,7 +1462,6 @@
      * otherwise.
      */
     @RequiresPermission(Manifest.permission.ANSWER_PHONE_CALLS)
-    @SystemApi
     public boolean endCall() {
         try {
             if (isServiceConnected()) {
@@ -1539,7 +1538,6 @@
     /**
      * Returns whether TTY is supported on this device.
      */
-    @SystemApi
     @RequiresPermission(anyOf = {
             android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE,
             android.Manifest.permission.READ_PHONE_STATE
diff --git a/telecomm/java/com/android/internal/telecom/ITelecomService.aidl b/telecomm/java/com/android/internal/telecom/ITelecomService.aidl
index 143b323..d64efea 100644
--- a/telecomm/java/com/android/internal/telecom/ITelecomService.aidl
+++ b/telecomm/java/com/android/internal/telecom/ITelecomService.aidl
@@ -305,6 +305,8 @@
      */
     void handleCallIntent(in Intent intent);
 
+    void setTestDefaultCallRedirectionApp(String packageName);
+
     void setTestDefaultCallScreeningApp(String packageName);
 
     void addOrRemoveTestCallCompanionApp(String packageName, boolean isAdded);
diff --git a/telephony/java/android/telephony/CarrierConfigManager.java b/telephony/java/android/telephony/CarrierConfigManager.java
index a0064e2..14e0909 100644
--- a/telephony/java/android/telephony/CarrierConfigManager.java
+++ b/telephony/java/android/telephony/CarrierConfigManager.java
@@ -78,6 +78,14 @@
     // system image, that can be added in packages/apps/CarrierConfig.
 
     /**
+     * Specifies a value that identifies the version of the carrier configuration that is
+     * currently in use. This string is displayed on the UI.
+     * The format of the string is not specified.
+     */
+    public static final String KEY_CARRIER_CONFIG_VERSION_STRING =
+            "carrier_config_version_string";
+
+    /**
      * This flag specifies whether VoLTE availability is based on provisioning. By default this is
      * false.
      */
@@ -394,7 +402,6 @@
      * @see SubscriptionManager#getSubscriptionPlans(int)
      * @see SubscriptionManager#setSubscriptionPlans(int, java.util.List)
      */
-    @SystemApi
     public static final String KEY_CONFIG_PLANS_PACKAGE_OVERRIDE_STRING =
             "config_plans_package_override_string";
 
@@ -2328,6 +2335,7 @@
 
     static {
         sDefaults = new PersistableBundle();
+        sDefaults.putString(KEY_CARRIER_CONFIG_VERSION_STRING, "");
         sDefaults.putBoolean(KEY_ALLOW_HOLD_IN_IMS_CALL_BOOL, true);
         sDefaults.putBoolean(KEY_CARRIER_ALLOW_DEFLECT_IMS_CALL_BOOL, false);
         sDefaults.putBoolean(KEY_ALWAYS_PLAY_REMOTE_HOLD_TONE_BOOL, false);
diff --git a/telephony/java/android/telephony/DataSpecificRegistrationStates.java b/telephony/java/android/telephony/DataSpecificRegistrationStates.java
index b6e6cba..5d809d0 100644
--- a/telephony/java/android/telephony/DataSpecificRegistrationStates.java
+++ b/telephony/java/android/telephony/DataSpecificRegistrationStates.java
@@ -33,17 +33,31 @@
      */
     public final boolean isNrAvailable;
 
+    /**
+     * Indicates that if E-UTRA-NR Dual Connectivity (EN-DC) is supported by the primary serving
+     * cell.
+     *
+     * True the primary serving cell is LTE cell and the plmn-InfoList-r15 is present in SIB2 and
+     * at least one bit in this list is true, otherwise this value should be false.
+     *
+     * Reference: 3GPP TS 36.331 v15.2.2 6.3.1 System information blocks.
+     */
+    public final boolean isEnDcAvailable;
+
     DataSpecificRegistrationStates(
-            int maxDataCalls, boolean isDcNrRestricted, boolean isNrAvailable) {
+            int maxDataCalls, boolean isDcNrRestricted, boolean isNrAvailable,
+            boolean isEnDcAvailable) {
         this.maxDataCalls = maxDataCalls;
         this.isDcNrRestricted = isDcNrRestricted;
         this.isNrAvailable = isNrAvailable;
+        this.isEnDcAvailable = isEnDcAvailable;
     }
 
     private DataSpecificRegistrationStates(Parcel source) {
         maxDataCalls = source.readInt();
         isDcNrRestricted = source.readBoolean();
         isNrAvailable = source.readBoolean();
+        isEnDcAvailable = source.readBoolean();
     }
 
     @Override
@@ -51,6 +65,7 @@
         dest.writeInt(maxDataCalls);
         dest.writeBoolean(isDcNrRestricted);
         dest.writeBoolean(isNrAvailable);
+        dest.writeBoolean(isEnDcAvailable);
     }
 
     @Override
@@ -65,13 +80,14 @@
                 .append(" maxDataCalls = " + maxDataCalls)
                 .append(" isDcNrRestricted = " + isDcNrRestricted)
                 .append(" isNrAvailable = " + isNrAvailable)
+                .append(" isEnDcAvailable = " + isEnDcAvailable)
                 .append(" }")
                 .toString();
     }
 
     @Override
     public int hashCode() {
-        return Objects.hash(maxDataCalls, isDcNrRestricted, isNrAvailable);
+        return Objects.hash(maxDataCalls, isDcNrRestricted, isNrAvailable, isEnDcAvailable);
     }
 
     @Override
@@ -83,7 +99,8 @@
         DataSpecificRegistrationStates other = (DataSpecificRegistrationStates) o;
         return this.maxDataCalls == other.maxDataCalls
                 && this.isDcNrRestricted == other.isDcNrRestricted
-                && this.isNrAvailable == other.isNrAvailable;
+                && this.isNrAvailable == other.isNrAvailable
+                && this.isEnDcAvailable == other.isEnDcAvailable;
     }
 
     public static final Parcelable.Creator<DataSpecificRegistrationStates> CREATOR =
diff --git a/telephony/java/android/telephony/NetworkRegistrationState.java b/telephony/java/android/telephony/NetworkRegistrationState.java
index aee744f..b00665e 100644
--- a/telephony/java/android/telephony/NetworkRegistrationState.java
+++ b/telephony/java/android/telephony/NetworkRegistrationState.java
@@ -219,12 +219,13 @@
     public NetworkRegistrationState(int domain, int transportType, int regState,
             int accessNetworkTechnology, int rejectCause, boolean emergencyOnly,
             int[] availableServices, @Nullable CellIdentity cellIdentity, int maxDataCalls,
-            boolean isDcNrRestricted, boolean isNrAvailable) {
+            boolean isDcNrRestricted, boolean isNrAvailable, boolean isEndcAvailable) {
         this(domain, transportType, regState, accessNetworkTechnology, rejectCause, emergencyOnly,
                 availableServices, cellIdentity);
 
         mDataSpecificStates = new DataSpecificRegistrationStates(
-                maxDataCalls, isDcNrRestricted, isNrAvailable);
+                maxDataCalls, isDcNrRestricted, isNrAvailable, isEndcAvailable);
+        updateNrStatus(mDataSpecificStates);
     }
 
     protected NetworkRegistrationState(Parcel source) {
@@ -448,6 +449,34 @@
         dest.writeInt(mNrStatus);
     }
 
+    /**
+     * Use the 5G NR Non-Standalone indicators from the network registration state to update the
+     * NR status. There are 3 indicators in the network registration state:
+     *
+     * 1. if E-UTRA-NR Dual Connectivity (EN-DC) is supported by the primary serving cell.
+     * 2. if NR is supported by the selected PLMN.
+     * 3. if the use of dual connectivity with NR is restricted.
+     *
+     * The network has 5G NR capability if E-UTRA-NR Dual Connectivity is supported by the primary
+     * serving cell.
+     *
+     * The use of NR 5G is not restricted If the network has 5G NR capability and both the use of
+     * DCNR is not restricted and NR is supported by the selected PLMN. Otherwise the use of 5G
+     * NR is restricted.
+     *
+     * @param state data specific registration state contains the 5G NR indicators.
+     */
+    private void updateNrStatus(DataSpecificRegistrationStates state) {
+        mNrStatus = NR_STATUS_NONE;
+        if (state.isEnDcAvailable) {
+            if (!state.isDcNrRestricted && state.isNrAvailable) {
+                mNrStatus = NR_STATUS_NOT_RESTRICTED;
+            } else {
+                mNrStatus = NR_STATUS_RESTRICTED;
+            }
+        }
+    }
+
     public static final Parcelable.Creator<NetworkRegistrationState> CREATOR =
             new Parcelable.Creator<NetworkRegistrationState>() {
         @Override
diff --git a/telephony/java/android/telephony/RadioAccessFamily.java b/telephony/java/android/telephony/RadioAccessFamily.java
index da3acc2..4482074 100644
--- a/telephony/java/android/telephony/RadioAccessFamily.java
+++ b/telephony/java/android/telephony/RadioAccessFamily.java
@@ -460,6 +460,9 @@
         if ((raf & (1 << ServiceState.RIL_RADIO_TECHNOLOGY_LTE_CA)) != 0) {
             networkTypeRaf |= TelephonyManager.NETWORK_TYPE_BITMASK_LTE_CA;
         }
+        if ((raf & (1 << ServiceState.RIL_RADIO_TECHNOLOGY_NR)) != 0) {
+            networkTypeRaf |= TelephonyManager.NETWORK_TYPE_BITMASK_NR;
+        }
 
         return (networkTypeRaf == 0) ? TelephonyManager.NETWORK_TYPE_UNKNOWN : networkTypeRaf;
     }
diff --git a/telephony/java/android/telephony/ServiceState.java b/telephony/java/android/telephony/ServiceState.java
index 777d219..13fbeaa 100644
--- a/telephony/java/android/telephony/ServiceState.java
+++ b/telephony/java/android/telephony/ServiceState.java
@@ -223,9 +223,15 @@
     public static final int RIL_RADIO_TECHNOLOGY_LTE_CA = 19;
 
     /**
-     * Number of radio technologies for GSM, UMTS and CDMA.
+     * NR(New Radio) 5G.
+     * @hide
      */
-    private static final int NEXT_RIL_RADIO_TECHNOLOGY = 20;
+    public static final int  RIL_RADIO_TECHNOLOGY_NR = 20;
+
+    /**
+     * The number of the radio technologies.
+     */
+    private static final int NEXT_RIL_RADIO_TECHNOLOGY = 21;
 
     /** @hide */
     public static final int RIL_RADIO_CDMA_TECHNOLOGY_BITMASK =
diff --git a/telephony/java/android/telephony/SmsManager.java b/telephony/java/android/telephony/SmsManager.java
index ea408bf..1b37bad 100644
--- a/telephony/java/android/telephony/SmsManager.java
+++ b/telephony/java/android/telephony/SmsManager.java
@@ -365,7 +365,6 @@
      *
      * @see #sendTextMessage(String, String, String, PendingIntent, PendingIntent)
      */
-    @SystemApi
     @SuppressAutoDoc // Blocked by b/72967236 - no support for carrier privileges
     @RequiresPermission(allOf = {
             android.Manifest.permission.MODIFY_PHONE_STATE,
diff --git a/telephony/java/android/telephony/SubscriptionInfo.java b/telephony/java/android/telephony/SubscriptionInfo.java
index bacfe61a..dacc5d8 100644
--- a/telephony/java/android/telephony/SubscriptionInfo.java
+++ b/telephony/java/android/telephony/SubscriptionInfo.java
@@ -155,6 +155,14 @@
     private boolean mIsMetered;
 
     /**
+     * Whether group of the subscription is disabled.
+     * This is only useful if it's a grouped opportunistic subscription. In this case, if all
+     * primary (non-opportunistic) subscriptions in the group are deactivated (unplugged pSIM
+     * or deactivated eSIM profile), we should disable this opportunistic subscription.
+     */
+    private boolean mIsGroupDisabled = false;
+
+    /**
      * @hide
      */
     public SubscriptionInfo(int id, String iccId, int simSlotIndex, CharSequence displayName,
@@ -174,6 +182,18 @@
             Bitmap icon, String mcc, String mnc, String countryIso, boolean isEmbedded,
             @Nullable UiccAccessRule[] accessRules, String cardId, boolean isOpportunistic,
             @Nullable String groupUUID, boolean isMetered) {
+        this(id, iccId, simSlotIndex, displayName, carrierName, nameSource, iconTint, number,
+                roaming, icon, mcc, mnc, countryIso, isEmbedded, accessRules, cardId,
+                isOpportunistic, groupUUID, isMetered, false);
+    }
+    /**
+     * @hide
+     */
+    public SubscriptionInfo(int id, String iccId, int simSlotIndex, CharSequence displayName,
+            CharSequence carrierName, int nameSource, int iconTint, String number, int roaming,
+            Bitmap icon, String mcc, String mnc, String countryIso, boolean isEmbedded,
+            @Nullable UiccAccessRule[] accessRules, String cardId, boolean isOpportunistic,
+            @Nullable String groupUUID, boolean isMetered, boolean isGroupDisabled) {
         this.mId = id;
         this.mIccId = iccId;
         this.mSimSlotIndex = simSlotIndex;
@@ -193,6 +213,7 @@
         this.mIsOpportunistic = isOpportunistic;
         this.mGroupUUID = groupUUID;
         this.mIsMetered = isMetered;
+        this.mIsGroupDisabled = isGroupDisabled;
     }
 
 
@@ -494,6 +515,22 @@
         return this.mCardId;
     }
 
+    /**
+     * Set whether the subscription's group is disabled.
+     * @hide
+     */
+    public void setGroupDisabled(boolean isGroupDisabled) {
+        this.mIsGroupDisabled = isGroupDisabled;
+    }
+
+    /**
+     * Return whether the subscription's group is disabled.
+     * @hide
+     */
+    public boolean isGroupDisabled() {
+        return mIsGroupDisabled;
+    }
+
     public static final Parcelable.Creator<SubscriptionInfo> CREATOR = new Parcelable.Creator<SubscriptionInfo>() {
         @Override
         public SubscriptionInfo createFromParcel(Parcel source) {
@@ -516,10 +553,12 @@
             boolean isOpportunistic = source.readBoolean();
             String groupUUID = source.readString();
             boolean isMetered = source.readBoolean();
+            boolean isGroupDisabled = source.readBoolean();
 
             return new SubscriptionInfo(id, iccId, simSlotIndex, displayName, carrierName,
                     nameSource, iconTint, number, dataRoaming, iconBitmap, mcc, mnc, countryIso,
-                    isEmbedded, accessRules, cardId, isOpportunistic, groupUUID, isMetered);
+                    isEmbedded, accessRules, cardId, isOpportunistic, groupUUID, isMetered,
+                    isGroupDisabled);
         }
 
         @Override
@@ -549,6 +588,7 @@
         dest.writeBoolean(mIsOpportunistic);
         dest.writeString(mGroupUUID);
         dest.writeBoolean(mIsMetered);
+        dest.writeBoolean(mIsGroupDisabled);
     }
 
     @Override
@@ -582,14 +622,15 @@
                 + " mnc " + mMnc + "mCountryIso=" + mCountryIso + " isEmbedded " + mIsEmbedded
                 + " accessRules " + Arrays.toString(mAccessRules)
                 + " cardId=" + cardIdToPrint + " isOpportunistic " + mIsOpportunistic
-                + " mGroupUUID=" + mGroupUUID + " isMetered=" + mIsMetered + "}";
+                + " mGroupUUID=" + mGroupUUID + " isMetered=" + mIsMetered
+                + " mIsGroupDisabled=" + mIsGroupDisabled + "}";
     }
 
     @Override
     public int hashCode() {
         return Objects.hash(mId, mSimSlotIndex, mNameSource, mIconTint, mDataRoaming, mIsEmbedded,
                 mIsOpportunistic, mGroupUUID, mIsMetered, mIccId, mNumber, mMcc, mMnc,
-                mCountryIso, mCardId, mDisplayName, mCarrierName, mAccessRules);
+                mCountryIso, mCardId, mDisplayName, mCarrierName, mAccessRules, mIsGroupDisabled);
     }
 
     @Override
@@ -611,6 +652,7 @@
                 && mDataRoaming == toCompare.mDataRoaming
                 && mIsEmbedded == toCompare.mIsEmbedded
                 && mIsOpportunistic == toCompare.mIsOpportunistic
+                && mIsGroupDisabled == toCompare.mIsGroupDisabled
                 && Objects.equals(mGroupUUID, toCompare.mGroupUUID)
                 && mIsMetered == toCompare.mIsMetered
                 && Objects.equals(mIccId, toCompare.mIccId)
@@ -623,4 +665,4 @@
                 && TextUtils.equals(mCarrierName, toCompare.mCarrierName)
                 && Arrays.equals(mAccessRules, toCompare.mAccessRules);
     }
-}
\ No newline at end of file
+}
diff --git a/telephony/java/android/telephony/SubscriptionManager.java b/telephony/java/android/telephony/SubscriptionManager.java
index ff20fd2..4181f11 100644
--- a/telephony/java/android/telephony/SubscriptionManager.java
+++ b/telephony/java/android/telephony/SubscriptionManager.java
@@ -635,7 +635,6 @@
      * the user is interested in.
      */
     @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION)
-    @SystemApi
     public static final String ACTION_MANAGE_SUBSCRIPTION_PLANS
             = "android.telephony.action.MANAGE_SUBSCRIPTION_PLANS";
 
@@ -655,7 +654,6 @@
      * {@code android.permission.MANAGE_SUBSCRIPTION_PLANS} permission.
      */
     @SdkConstant(SdkConstantType.BROADCAST_INTENT_ACTION)
-    @SystemApi
     public static final String ACTION_REFRESH_SUBSCRIPTION_PLANS
             = "android.telephony.action.REFRESH_SUBSCRIPTION_PLANS";
 
@@ -2043,7 +2041,6 @@
      * @throws SecurityException if the caller doesn't meet the requirements
      *             outlined above.
      */
-    @SystemApi
     public @NonNull List<SubscriptionPlan> getSubscriptionPlans(int subId) {
         try {
             SubscriptionPlan[] subscriptionPlans =
@@ -2075,7 +2072,6 @@
      * @throws SecurityException if the caller doesn't meet the requirements
      *             outlined above.
      */
-    @SystemApi
     public void setSubscriptionPlans(int subId, @NonNull List<SubscriptionPlan> plans) {
         try {
             getNetworkPolicy().setSubscriptionPlans(subId,
@@ -2117,7 +2113,6 @@
      * @throws SecurityException if the caller doesn't meet the requirements
      *             outlined above.
      */
-    @SystemApi
     public void setSubscriptionOverrideUnmetered(int subId, boolean overrideUnmetered,
             @DurationMillisLong long timeoutMillis) {
         try {
@@ -2153,7 +2148,6 @@
      * @throws SecurityException if the caller doesn't meet the requirements
      *             outlined above.
      */
-    @SystemApi
     public void setSubscriptionOverrideCongested(int subId, boolean overrideCongested,
             @DurationMillisLong long timeoutMillis) {
         try {
diff --git a/telephony/java/android/telephony/SubscriptionPlan.java b/telephony/java/android/telephony/SubscriptionPlan.java
index e8bbe42..d67169c 100644
--- a/telephony/java/android/telephony/SubscriptionPlan.java
+++ b/telephony/java/android/telephony/SubscriptionPlan.java
@@ -45,7 +45,6 @@
  * @see SubscriptionManager#setSubscriptionPlans(int, java.util.List)
  * @see SubscriptionManager#getSubscriptionPlans(int)
  */
-@SystemApi
 public final class SubscriptionPlan implements Parcelable {
     /** {@hide} */
     @IntDef(prefix = "LIMIT_BEHAVIOR_", value = {
diff --git a/telephony/java/android/telephony/TelephonyManager.java b/telephony/java/android/telephony/TelephonyManager.java
index 2f4a519..4290ab3 100644
--- a/telephony/java/android/telephony/TelephonyManager.java
+++ b/telephony/java/android/telephony/TelephonyManager.java
@@ -2225,9 +2225,11 @@
     /** Current network is LTE_CA {@hide} */
     @UnsupportedAppUsage
     public static final int NETWORK_TYPE_LTE_CA = TelephonyProtoEnums.NETWORK_TYPE_LTE_CA; // = 19.
+    /** Current network is NR(New Radio) 5G. */
+    public static final int NETWORK_TYPE_NR = TelephonyProtoEnums.NETWORK_TYPE_NR; // 20.
 
     /** Max network type number. Update as new types are added. Don't add negative types. {@hide} */
-    public static final int MAX_NETWORK_TYPE = NETWORK_TYPE_LTE_CA;
+    public static final int MAX_NETWORK_TYPE = NETWORK_TYPE_NR;
 
     /** @hide */
     @IntDef({
@@ -2251,6 +2253,7 @@
             NETWORK_TYPE_TD_SCDMA,
             NETWORK_TYPE_IWLAN,
             NETWORK_TYPE_LTE_CA,
+            NETWORK_TYPE_NR,
     })
     @Retention(RetentionPolicy.SOURCE)
     public @interface NetworkType{}
@@ -9307,6 +9310,7 @@
                     NETWORK_TYPE_BITMASK_TD_SCDMA,
                     NETWORK_TYPE_BITMASK_LTE,
                     NETWORK_TYPE_BITMASK_LTE_CA,
+                    NETWORK_TYPE_BITMASK_NR,
             })
     public @interface NetworkTypeBitMask {}
 
@@ -9423,6 +9427,13 @@
     public static final int NETWORK_TYPE_BITMASK_LTE_CA = (1 << NETWORK_TYPE_LTE_CA);
 
     /**
+     * network type bitmask indicating the support of radio tech NR(New Radio) 5G.
+     * @hide
+     */
+    @SystemApi
+    public static final int NETWORK_TYPE_BITMASK_NR = (1 << NETWORK_TYPE_NR);
+
+    /**
      * @return Modem supported radio access family bitmask
      *
      * <p>Requires permission: {@link android.Manifest.permission#READ_PRIVILEGED_PHONE_STATE} or
diff --git a/telephony/java/android/telephony/data/DataServiceCallback.java b/telephony/java/android/telephony/data/DataServiceCallback.java
index 4af31b5..bef1142 100644
--- a/telephony/java/android/telephony/data/DataServiceCallback.java
+++ b/telephony/java/android/telephony/data/DataServiceCallback.java
@@ -125,7 +125,6 @@
      *
      * @param result The result code. Must be one of the {@link ResultCode}.
      */
-    @SystemApi
     public void onSetDataProfileComplete(@ResultCode int result) {
         IDataServiceCallback callback = mCallback.get();
         if (callback != null) {
diff --git a/telephony/java/android/telephony/ims/ImsReasonInfo.java b/telephony/java/android/telephony/ims/ImsReasonInfo.java
index 8fcdb6e..f124595 100644
--- a/telephony/java/android/telephony/ims/ImsReasonInfo.java
+++ b/telephony/java/android/telephony/ims/ImsReasonInfo.java
@@ -16,11 +16,15 @@
 
 package android.telephony.ims;
 
+import android.annotation.IntDef;
 import android.annotation.SystemApi;
 import android.annotation.UnsupportedAppUsage;
 import android.os.Parcel;
 import android.os.Parcelable;
 
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+
 /**
  * This class enables an application to get details on why a method call failed.
  *
@@ -30,158 +34,292 @@
 public final class ImsReasonInfo implements Parcelable {
 
     /**
-     * Specific code of each types
+     * The Reason is unspecified.
      */
     public static final int CODE_UNSPECIFIED = 0;
 
-    /**
-     * LOCAL
-     */
+
+    // LOCAL
+
     // IMS -> Telephony
-    // The passed argument is an invalid
+    /**
+     * The passed argument is invalid.
+     */
     public static final int CODE_LOCAL_ILLEGAL_ARGUMENT = 101;
-    // The operation is invoked in invalid call state
+    /**
+     * The operation was invoked while in an invalid call state.
+     */
     public static final int CODE_LOCAL_ILLEGAL_STATE = 102;
-    // IMS service internal error
+    /**
+     * IMS service internal error
+     */
     public static final int CODE_LOCAL_INTERNAL_ERROR = 103;
-    // IMS service goes down (service connection is lost)
+    /**
+     * ImsService has crashed (service connection is lost).
+     */
     public static final int CODE_LOCAL_IMS_SERVICE_DOWN = 106;
-    // No pending incoming call exists
+    /**
+     * No pending incoming call exists
+     */
     public static final int CODE_LOCAL_NO_PENDING_CALL = 107;
-    // IMS Call ended during conference merge process
+    /**
+     * IMS Call ended during conference merge process
+     */
     public static final int CODE_LOCAL_ENDED_BY_CONFERENCE_MERGE = 108;
 
     // IMS -> Telephony
-    // Service unavailable; by power off
+    /**
+     * Service unavailable; radio power off
+     */
     public static final int CODE_LOCAL_POWER_OFF = 111;
-    // Service unavailable; by low battery
+    /**
+     * Service unavailable; low battery
+     */
     public static final int CODE_LOCAL_LOW_BATTERY = 112;
-    // Service unavailable; by out of service (data service state)
+    /**
+     * Service unavailable; out of service (data service state)
+     */
     public static final int CODE_LOCAL_NETWORK_NO_SERVICE = 121;
-    // Service unavailable; by no LTE coverage
-    // (VoLTE is not supported even though IMS is registered)
+    /**
+     * Service unavailable; no LTE coverage
+     * (VoLTE is not supported even though IMS is registered)
+     */
     public static final int CODE_LOCAL_NETWORK_NO_LTE_COVERAGE = 122;
-    // Service unavailable; by located in roaming area
+    /**
+     * Service unavailable; located in roaming area
+     */
     public static final int CODE_LOCAL_NETWORK_ROAMING = 123;
-    // Service unavailable; by IP changed
+    /**
+     * Service unavailable; IP changed
+     */
     public static final int CODE_LOCAL_NETWORK_IP_CHANGED = 124;
-    // Service unavailable; other
+    /**
+     * Service unavailable; for an unspecified reason
+     */
     public static final int CODE_LOCAL_SERVICE_UNAVAILABLE = 131;
-    // Service unavailable; IMS connection is lost (IMS is not registered)
+    /**
+     * Service unavailable; IMS is not registered
+     */
     public static final int CODE_LOCAL_NOT_REGISTERED = 132;
 
     // IMS <-> Telephony
-    // Max call exceeded
+    /**
+     * Maximum number of simultaneous calls exceeded
+     */
     public static final int CODE_LOCAL_CALL_EXCEEDED = 141;
     // IMS <- Telephony
-    // Call busy
+    /**
+     * The call is busy.
+     */
     public static final int CODE_LOCAL_CALL_BUSY = 142;
-    // Call decline
+    /**
+     * The Call has been declined locally on this device.
+     */
     public static final int CODE_LOCAL_CALL_DECLINE = 143;
     // IMS -> Telephony
-    // SRVCC is in progress
+    /**
+     * Can not complete call; an SRVCC is in progress.
+     */
     public static final int CODE_LOCAL_CALL_VCC_ON_PROGRESSING = 144;
-    // Resource reservation is failed (QoS precondition)
+    /**
+     * Can not complete call; resource reservation is failed (QoS precondition)
+     */
     public static final int CODE_LOCAL_CALL_RESOURCE_RESERVATION_FAILED = 145;
-    // Retry CS call; VoLTE service can't be provided by the network or remote end
-    // Resolve the extra code(EXTRA_CODE_CALL_RETRY_*) if the below code is set
+    /**
+     * VoLTE service can't be provided by the network or remote end, retry the call.
+     * Resolve the extra code provided in (EXTRA_CODE_CALL_RETRY_*) if the below code is set
+     */
     public static final int CODE_LOCAL_CALL_CS_RETRY_REQUIRED = 146;
-    // Retry VoLTE call; VoLTE service can't be provided by the network temporarily
+    /**
+     * VoLTE service can't be provided by the network temporarily, retry the call.
+     */
     public static final int CODE_LOCAL_CALL_VOLTE_RETRY_REQUIRED = 147;
-    // IMS call is already terminated (in TERMINATED state)
+    /**
+     * IMS call is already terminated (in TERMINATED state).
+     */
     public static final int CODE_LOCAL_CALL_TERMINATED = 148;
-    // Handover not feasible
+    /**
+     * Call was disconnected because a handover is not feasible due to network conditions.
+     */
     public static final int CODE_LOCAL_HO_NOT_FEASIBLE = 149;
 
-    /**
+    /*
      * TIMEOUT (IMS -> Telephony)
      */
-    // 1xx waiting timer is expired after sending INVITE request (MO only)
+    /**
+     * 1xx waiting timer is expired after sending INVITE request (MO calls only)
+     */
     public static final int CODE_TIMEOUT_1XX_WAITING = 201;
-    // User no answer during call setup operation (MO/MT)
-    // MO : 200 OK to INVITE request is not received,
-    // MT : No action from user after alerting the call
+    /**
+     * User didn't answer during call setup operation (MO/MT)
+     * MO : 200 OK to INVITE request is not received,
+     * MT : No action from user after alerting the call
+     */
     public static final int CODE_TIMEOUT_NO_ANSWER = 202;
-    // User no answer during call update operation (MO/MT)
-    // MO : 200 OK to re-INVITE request is not received,
-    // MT : No action from user after alerting the call
+    /**
+     * User no answer during call update operation (MO/MT)
+     * MO : 200 OK to re-INVITE request is not received,
+     * MT : No action from user after alerting the call
+     */
     public static final int CODE_TIMEOUT_NO_ANSWER_CALL_UPDATE = 203;
 
-    //Call was blocked by call barring
+    /**
+     * The call was blocked by call barring configuration.
+     */
     public static final int CODE_CALL_BARRED = 240;
 
-    //Call failures for FDN
+    /**
+     * The operation is restricted to fixed dialing numbers only.
+     */
     public static final int CODE_FDN_BLOCKED = 241;
 
-    // Network does not accept the emergency call request because IMEI was used as identification
-    // and this capability is not supported by the network.
+    /**
+     * Network rejected the emergency call request because IMEI was used as identification
+     * and this capability is not supported by the network.
+     */
     public static final int CODE_IMEI_NOT_ACCEPTED = 243;
 
     //STK CC errors
+    /**
+     * Stk Call Control modified DIAL request to USSD request.
+     */
     public static final int CODE_DIAL_MODIFIED_TO_USSD = 244;
+    /**
+     * Stk Call Control modified DIAL request to SS request.
+     */
     public static final int CODE_DIAL_MODIFIED_TO_SS = 245;
+    /**
+     * Stk Call Control modified DIAL request to DIAL with modified data.
+     */
     public static final int CODE_DIAL_MODIFIED_TO_DIAL = 246;
+    /**
+     * Stk Call Control modified DIAL request to Video DIAL request.
+     */
     public static final int CODE_DIAL_MODIFIED_TO_DIAL_VIDEO = 247;
+    /**
+     * Stk Call Control modified Video DIAL request to DIAL request.
+     */
     public static final int CODE_DIAL_VIDEO_MODIFIED_TO_DIAL = 248;
+    /**
+     * Stk Call Control modified Video DIAL request to Video DIAL request.
+     */
     public static final int CODE_DIAL_VIDEO_MODIFIED_TO_DIAL_VIDEO = 249;
+    /**
+     * Stk Call Control modified Video DIAL request to SS request.
+     */
     public static final int CODE_DIAL_VIDEO_MODIFIED_TO_SS = 250;
+    /**
+     * Stk Call Control modified Video DIAL request to USSD request.
+     */
     public static final int CODE_DIAL_VIDEO_MODIFIED_TO_USSD = 251;
 
-    /**
+    /*
      * STATUSCODE (SIP response code) (IMS -> Telephony)
      */
     // 3xx responses
-    // SIP request is redirected
+    /**
+     * SIP 3xx response: SIP request is redirected
+     */
     public static final int CODE_SIP_REDIRECTED = 321;
     // 4xx responses
-    // 400 : Bad Request
+    /**
+     * Sip 400 response : Bad Request
+     */
     public static final int CODE_SIP_BAD_REQUEST = 331;
-    // 403 : Forbidden
+    /**
+     * Sip 403 response : Forbidden
+     */
     public static final int CODE_SIP_FORBIDDEN = 332;
-    // 404 : Not Found
+    /**
+     * Sip 404 response : Not Found
+     */
     public static final int CODE_SIP_NOT_FOUND = 333;
-    // 415 : Unsupported Media Type
-    // 416 : Unsupported URI Scheme
-    // 420 : Bad Extension
+    /**
+     * Not supported, because of one of the following:
+     * SIP response 415 : Unsupported Media Type,
+     * SIP response 416 : Unsupported URI Scheme,
+     * SIP response 420 : Bad Extension
+     */
     public static final int CODE_SIP_NOT_SUPPORTED = 334;
-    // 408 : Request Timeout
+    /**
+     * SIP response 408 : Request Timeout.
+     */
     public static final int CODE_SIP_REQUEST_TIMEOUT = 335;
-    // 480 : Temporarily Unavailable
+    /**
+     * SIP response 480 : Temporarily Unavailable
+     */
     public static final int CODE_SIP_TEMPRARILY_UNAVAILABLE = 336;
-    // 484 : Address Incomplete
+    /**
+     * SIP response 484 : Address Incomplete
+     */
     public static final int CODE_SIP_BAD_ADDRESS = 337;
-    // 486 : Busy Here
-    // 600 : Busy Everywhere
+    /**
+     * Returned a busy response, may be one of the following:
+     * SIP response 486 : Busy Here,
+     * SIP response 600 : Busy Everywhere
+     */
     public static final int CODE_SIP_BUSY = 338;
-    // 487 : Request Terminated
+    /**
+     * SIP response 487 : Request Terminated
+     */
     public static final int CODE_SIP_REQUEST_CANCELLED = 339;
-    // 406 : Not Acceptable
-    // 488 : Not Acceptable Here
-    // 606 : Not Acceptable
+    /**
+     * Received a not acceptable response, will be one of the following:
+     * SIP response 406 : Not Acceptable
+     * SIP response 488 : Not Acceptable Here
+     * SIP response 606 : Not Acceptable
+     */
     public static final int CODE_SIP_NOT_ACCEPTABLE = 340;
-    // 410 : Gone
-    // 604 : Does Not Exist Anywhere
+    /**
+     * Received a not acceptable response, will be one of the following:
+     * SIP response 410 : Gone
+     * SIP response 604 : Does Not Exist Anywhere
+     */
     public static final int CODE_SIP_NOT_REACHABLE = 341;
-    // Others
+    /**
+     * Received another unspecified error SIP response from the client.
+     */
     public static final int CODE_SIP_CLIENT_ERROR = 342;
-    // 481 Transaction Does Not Exist
+    /**
+     * SIP response 481: Transaction Does Not Exist
+     */
     public static final int CODE_SIP_TRANSACTION_DOES_NOT_EXIST = 343;
     // 5xx responses
-    // 501 : Server Internal Error
+    /**
+     * SIP response 501 : Server Internal Error
+     */
     public static final int CODE_SIP_SERVER_INTERNAL_ERROR = 351;
-    // 503 : Service Unavailable
+    /**
+     * SIP response 503 : Service Unavailable
+     */
     public static final int CODE_SIP_SERVICE_UNAVAILABLE = 352;
-    // 504 : Server Time-out
+    /**
+     * SIP response 504 : Server Time-out
+     */
     public static final int CODE_SIP_SERVER_TIMEOUT = 353;
-    // Others
+    /**
+     * Received an unspecified SIP server error response.
+     */
     public static final int CODE_SIP_SERVER_ERROR = 354;
     // 6xx responses
-    // 603 : Decline
+    /**
+     * 603 : Decline
+     */
     public static final int CODE_SIP_USER_REJECTED = 361;
-    // Others
+    /**
+     * Unspecified 6xx error.
+     */
     public static final int CODE_SIP_GLOBAL_ERROR = 362;
-    // Emergency failure
+
+    /**
+     * Emergency call failed in the modem with a temporary fail cause and should be redialed on this
+     * slot.
+     */
     public static final int CODE_EMERGENCY_TEMP_FAILURE = 363;
+    /**
+     * Emergency call failed in the modem with a permanent fail cause and should not be redialed on
+     * this slot. If there are any other slots available for emergency calling, try those.
+     */
     public static final int CODE_EMERGENCY_PERM_FAILURE = 364;
 
     /**
@@ -193,82 +331,149 @@
      */
     public static final int CODE_SIP_USER_MARKED_UNWANTED = 365;
 
-    /**
+    /*
      * MEDIA (IMS -> Telephony)
      */
-    // Media resource initialization failed
+    /**
+     * Media resource initialization failed
+     */
     public static final int CODE_MEDIA_INIT_FAILED = 401;
-    // RTP timeout (no audio / video traffic in the session)
+    /**
+     * RTP timeout (no audio / video traffic in the session)
+     */
     public static final int CODE_MEDIA_NO_DATA = 402;
-    // Media is not supported; so dropped the call
+    /**
+     * Media is not supported; so dropped the call
+     */
     public static final int CODE_MEDIA_NOT_ACCEPTABLE = 403;
-    // Unknown media related errors
+    /**
+     * Unspecified media related error.
+     */
     public static final int CODE_MEDIA_UNSPECIFIED = 404;
 
-    /**
+    /*
      * USER
      */
     // Telephony -> IMS
-    // User triggers the call end
+    /**
+     * User triggers the call to be terminated.
+     */
     public static final int CODE_USER_TERMINATED = 501;
-    // No action while an incoming call is ringing
+    /**
+     * No action was taken while an incoming call was ringing.
+     */
     public static final int CODE_USER_NOANSWER = 502;
-    // User ignores an incoming call
+    /**
+     * User ignored an incoming call.
+     */
     public static final int CODE_USER_IGNORE = 503;
-    // User declines an incoming call
+    /**
+     * User declined an incoming call.
+     */
     public static final int CODE_USER_DECLINE = 504;
-    // Device declines/ends a call due to low battery
+    /**
+     * Device declined/ended a call due to a low battery condition.
+     */
     public static final int CODE_LOW_BATTERY = 505;
-    // Device declines call due to blacklisted call ID
+    /**
+     * Device declined a call due to a blacklisted caller ID.
+     */
     public static final int CODE_BLACKLISTED_CALL_ID = 506;
     // IMS -> Telephony
-    // The call is terminated by the network or remote user
+    /**
+     * The call has been terminated by the network or remote user.
+     */
     public static final int CODE_USER_TERMINATED_BY_REMOTE = 510;
 
-    /**
-     * Extra codes for the specific code value
-     * This value can be referred when the code is CODE_LOCAL_CALL_CS_RETRY_REQUIRED.
-     */
-    // Try to connect CS call; normal
-    public static final int EXTRA_CODE_CALL_RETRY_NORMAL = 1;
-    // Try to connect CS call without the notification to user
-    public static final int EXTRA_CODE_CALL_RETRY_SILENT_REDIAL = 2;
-    // Try to connect CS call by the settings of the menu
-    public static final int EXTRA_CODE_CALL_RETRY_BY_SETTINGS = 3;
-
-    /**
+    /*
      * UT
      */
+    /**
+     * UT is currently not supported on this device.
+     */
     public static final int CODE_UT_NOT_SUPPORTED = 801;
+    /**
+     * UT services are currently not available on this device.
+     */
     public static final int CODE_UT_SERVICE_UNAVAILABLE = 802;
+    /**
+     * The requested UT operation is not allowed.
+     */
     public static final int CODE_UT_OPERATION_NOT_ALLOWED = 803;
+    /**
+     * The UT request resulted in a network error.
+     */
     public static final int CODE_UT_NETWORK_ERROR = 804;
+    /**
+     * The password entered for UT operations does not match the stored password.
+     */
     public static final int CODE_UT_CB_PASSWORD_MISMATCH = 821;
     //STK CC errors
+    /**
+     * Sim Toolkit Call Control modified the UT operation to a dial command.
+     */
     public static final int CODE_UT_SS_MODIFIED_TO_DIAL = 822;
+    /**
+     * Sim Toolkit Call Control modified the UT operation to a USSD command.
+     */
     public static final int CODE_UT_SS_MODIFIED_TO_USSD = 823;
+    /**
+     * Sim Toolkit Call Control modified the UT operation to another supplementary service command.
+     */
     public static final int CODE_UT_SS_MODIFIED_TO_SS = 824;
+    /**
+     * Sim Toolkit Call Control modified the UT operation to a video call dial command.
+     */
     public static final int CODE_UT_SS_MODIFIED_TO_DIAL_VIDEO = 825;
 
+    /**@hide*/
+    @IntDef(value = {
+            CODE_UT_NOT_SUPPORTED,
+            CODE_UT_SERVICE_UNAVAILABLE,
+            CODE_UT_OPERATION_NOT_ALLOWED,
+            CODE_UT_NETWORK_ERROR,
+            CODE_UT_CB_PASSWORD_MISMATCH,
+            CODE_UT_SS_MODIFIED_TO_DIAL,
+            CODE_UT_SS_MODIFIED_TO_USSD,
+            CODE_UT_SS_MODIFIED_TO_SS,
+            CODE_UT_SS_MODIFIED_TO_DIAL_VIDEO
+    }, prefix = "CODE_UT_")
+    @Retention(RetentionPolicy.SOURCE)
+    public @interface UtReason {}
+
     /**
-     * ECBM
+     * Emergency callback mode is not supported.
      */
     public static final int CODE_ECBM_NOT_SUPPORTED = 901;
 
     /**
-     * Fail code used to indicate that Multi-endpoint is not supported by the Ims framework.
+     * Fail code used to indicate that Multi-endpoint is not supported by the IMS framework.
      */
     public static final int CODE_MULTIENDPOINT_NOT_SUPPORTED = 902;
 
     /**
-     * Ims Registration error code
+     * IMS Registration error code
      */
     public static final int CODE_REGISTRATION_ERROR = 1000;
 
-    /**
+    /*
      * CALL DROP error codes (Call could drop because of many reasons like Network not available,
      *  handover, failed, etc)
      */
+    /**
+     * MT call has ended due to a release from the network because the call was answered elsewhere.
+     */
+    public static final int CODE_ANSWERED_ELSEWHERE = 1014;
+
+    /**
+     * For MultiEndpoint - Call Pull request has failed.
+     */
+    public static final int CODE_CALL_PULL_OUT_OF_SYNC = 1015;
+
+    /**
+     * For MultiEndpoint - Call has been pulled from primary to secondary.
+     */
+    public static final int CODE_CALL_END_CAUSE_CALL_PULL = 1016;
 
     /**
      * CALL DROP error code for the case when a device is ePDG capable and when the user is on an
@@ -279,46 +484,35 @@
     public static final int CODE_CALL_DROP_IWLAN_TO_LTE_UNAVAILABLE = 1100;
 
     /**
-     * MT call has ended due to a release from the network
-     * because the call was answered elsewhere
-     */
-    public static final int CODE_ANSWERED_ELSEWHERE = 1014;
-
-    /**
-     * For MultiEndpoint - Call Pull request has failed
-     */
-    public static final int CODE_CALL_PULL_OUT_OF_SYNC = 1015;
-
-    /**
-     * For MultiEndpoint - Call has been pulled from primary to secondary
-     */
-    public static final int CODE_CALL_END_CAUSE_CALL_PULL = 1016;
-
-    /**
-     * Supplementary services (HOLD/RESUME) failure error codes.
-     * Values for Supplemetary services failure - Failed, Cancelled and Re-Invite collision.
+     * Supplementary Services (HOLD/RESUME) - the command failed.
      */
     public static final int CODE_SUPP_SVC_FAILED = 1201;
+    /**
+     * Supplementary Services (HOLD/RESUME) - the command was cancelled.
+     */
     public static final int CODE_SUPP_SVC_CANCELLED = 1202;
+    /**
+     * Supplementary Services (HOLD/RESUME) - the command resulted in a re-invite collision.
+     */
     public static final int CODE_SUPP_SVC_REINVITE_COLLISION = 1203;
 
     /**
-     * DPD Procedure received no response or send failed
+     * DPD Procedure received no response or send failed.
      */
     public static final int CODE_IWLAN_DPD_FAILURE = 1300;
 
     /**
-     * Establishment of the ePDG Tunnel Failed
+     * Establishment of the ePDG Tunnel Failed.
      */
     public static final int CODE_EPDG_TUNNEL_ESTABLISH_FAILURE = 1400;
 
     /**
-     * Re-keying of the ePDG Tunnel Failed; may not always result in teardown
+     * Re-keying of the ePDG Tunnel Failed; may not always result in teardown.
      */
     public static final int CODE_EPDG_TUNNEL_REKEY_FAILURE = 1401;
 
     /**
-     * Connection to the packet gateway is lost
+     * Connection to the packet gateway is lost.
      */
     public static final int CODE_EPDG_TUNNEL_LOST_CONNECTION = 1402;
 
@@ -571,8 +765,10 @@
      */
     public static final int CODE_REJECT_ONGOING_CS_CALL = 1621;
 
-    /* OEM specific error codes. To be used by OEMs when they don't want to
-   reveal error code which would be replaced by ERROR_UNSPECIFIED */
+    /*
+     * OEM specific error codes. To be used by OEMs when they don't want to reveal error code which
+     * would be replaced by ERROR_UNSPECIFIED.
+     */
     public static final int CODE_OEM_CAUSE_1 = 0xf001;
     public static final int CODE_OEM_CAUSE_2 = 0xf002;
     public static final int CODE_OEM_CAUSE_3 = 0xf003;
@@ -597,6 +793,33 @@
             = "Forbidden. Not Authorized for Service";
 
 
+    /*
+     * Extra codes for the specific code value
+     * This value can be referred when the code is CODE_LOCAL_CALL_CS_RETRY_REQUIRED.
+     */
+    /**
+     * An extra that may be populated when the {@link CODE_LOCAL_CALL_CS_RETRY_REQUIRED} result has
+     * been returned.
+     * <p>
+     * Try to connect the call using CS
+     */
+    public static final int EXTRA_CODE_CALL_RETRY_NORMAL = 1;
+    /**
+     * An extra that may be populated when the {@link CODE_LOCAL_CALL_CS_RETRY_REQUIRED} result has
+     * been returned.
+     * <p>
+     * Try to connect the call using CS and do not notify the user.
+     */
+    public static final int EXTRA_CODE_CALL_RETRY_SILENT_REDIAL = 2;
+    /**
+     * An extra that may be populated when the {@link CODE_LOCAL_CALL_CS_RETRY_REQUIRED} result has
+     * been returned.
+     * <p>
+     * Try to connect the call using CS by using the settings.
+     */
+    public static final int EXTRA_CODE_CALL_RETRY_BY_SETTINGS = 3;
+
+
     // For main reason code
     /** @hide */
     @UnsupportedAppUsage
@@ -638,29 +861,28 @@
     }
 
     /**
-     *
+     * @return an integer representing more information about the completion of an operation.
      */
     public int getCode() {
         return mCode;
     }
 
     /**
-     *
+     * @return an optional OEM specified code that provides extra information.
      */
     public int getExtraCode() {
         return mExtraCode;
     }
 
     /**
-     *
+     * @return an optional OEM specified string that provides extra information about the operation
+     * result.
      */
     public String getExtraMessage() {
         return mExtraMessage;
     }
 
     /**
-     * Returns the string format of {@link ImsReasonInfo}
-     *
      * @return the string format of {@link ImsReasonInfo}
      */
     public String toString() {
diff --git a/telephony/java/android/telephony/ims/ImsSsData.java b/telephony/java/android/telephony/ims/ImsSsData.java
index db5ba47..3a82517 100644
--- a/telephony/java/android/telephony/ims/ImsSsData.java
+++ b/telephony/java/android/telephony/ims/ImsSsData.java
@@ -65,6 +65,17 @@
     public static final int SS_INCOMING_BARRING_DN = 21;
     public static final int SS_INCOMING_BARRING_ANONYMOUS = 22;
 
+
+    /**@hide*/
+    @IntDef(flag = true, prefix = {"SS_"}, value = {
+            SS_ACTIVATION,
+            SS_DEACTIVATION,
+            SS_INTERROGATION,
+            SS_REGISTRATION,
+            SS_ERASURE})
+    @Retention(RetentionPolicy.SOURCE)
+    public @interface RequestType{}
+
     //Supplementary Service Request Types
     public static final int SS_ACTIVATION = 0;
     public static final int SS_DEACTIVATION = 1;
@@ -72,6 +83,17 @@
     public static final int SS_REGISTRATION = 3;
     public static final int SS_ERASURE = 4;
 
+    /**@hide*/
+    @IntDef(flag = true, prefix = {"SS_"}, value = {
+            SS_ALL_TELE_AND_BEARER_SERVICES,
+            SS_ALL_TELESEVICES,
+            SS_TELEPHONY,
+            SS_ALL_DATA_TELESERVICES,
+            SS_SMS_SERVICES,
+            SS_ALL_TELESERVICES_EXCEPT_SMS})
+    @Retention(RetentionPolicy.SOURCE)
+    public @interface TeleserviceType{}
+
     // Supplementary Service Teleservice Type
     public static final int SS_ALL_TELE_AND_BEARER_SERVICES = 0;
     public static final int SS_ALL_TELESEVICES = 1;
@@ -191,21 +213,6 @@
     @Retention(RetentionPolicy.SOURCE)
     public @interface ServiceType{}
 
-    /** @hide */
-    @IntDef(flag = true, prefix = { "SERVICE_CLASS" }, value = {
-            SERVICE_CLASS_NONE,
-            SERVICE_CLASS_VOICE,
-            SERVICE_CLASS_DATA,
-            SERVICE_CLASS_FAX,
-            SERVICE_CLASS_SMS,
-            SERVICE_CLASS_DATA_CIRCUIT_SYNC,
-            SERVICE_CLASS_DATA_CIRCUIT_ASYNC,
-            SERVICE_CLASS_DATA_PACKET_ACCESS,
-            SERVICE_CLASS_DATA_PAD
-    })
-    @Retention(RetentionPolicy.SOURCE)
-    public @interface ServiceClass{}
-
     /**
      * The Service type of this Supplementary service.
      * @hide
@@ -221,7 +228,7 @@
      *     {@link #SS_ERASURE}
      * @hide
      */
-    public final int requestType;
+    public final @RequestType int requestType;
 
     /**
      * Supplementary Service teleservice type:
@@ -234,14 +241,14 @@
      *
      * @hide
      */
-    public final int teleserviceType;
+    public final @TeleserviceType int teleserviceType;
 
     /**
      * Supplementary Service service class.
      *
      * @hide
      */
-    public final @ServiceClass int serviceClass;
+    public final @ServiceClassFlags int serviceClass;
 
     /**
      * Result of Supplementary Service operation. Valid values are:
@@ -285,7 +292,7 @@
          * @see #build()
          */
         public Builder(@ServiceType int serviceType, int requestType, int teleserviceType,
-                @ServiceClass int serviceClass, int result) {
+                @ServiceClassFlags int serviceClass, int result) {
             mImsSsData = new ImsSsData(serviceType, requestType, teleserviceType, serviceClass,
                     result);
         }
@@ -294,7 +301,7 @@
          * Set the array of {@link ImsSsInfo}s that are associated with this supplementary service
          * data.
          */
-        public Builder setSuppServiceInfo(@NonNull ImsSsInfo[] imsSsInfos) {
+        public @NonNull Builder setSuppServiceInfo(@NonNull ImsSsInfo[] imsSsInfos) {
             mImsSsData.mImsSsInfo = imsSsInfos;
             return this;
         }
@@ -303,7 +310,8 @@
          * Set the array of {@link ImsCallForwardInfo}s that are associated with this supplementary
          * service data.
          */
-        public Builder setCallForwardingInfo(@NonNull ImsCallForwardInfo[] imsCallForwardInfos) {
+        public @NonNull Builder setCallForwardingInfo(
+                @NonNull ImsCallForwardInfo[] imsCallForwardInfos) {
             mImsSsData.mCfInfo = imsCallForwardInfos;
             return this;
         }
@@ -311,7 +319,7 @@
         /**
          * @return an {@link ImsSsData} containing optional parameters.
          */
-        public ImsSsData build() {
+        public @NonNull ImsSsData build() {
             return mImsSsData;
         }
     }
@@ -337,7 +345,7 @@
      *               success, or ImsReasonInfo code if the result is a failure.
      */
     public ImsSsData(@ServiceType int serviceType, int requestType, int teleserviceType,
-            @ServiceClass int serviceClass, int result) {
+            @ServiceClassFlags int serviceClass, int result) {
         this.serviceType = serviceType;
         this.requestType = requestType;
         this.teleserviceType = teleserviceType;
@@ -449,14 +457,9 @@
     }
 
     /**
-     * Supplementary Service request Type:
-     *     {@link #SS_ACTIVATION),
-     *     {@link #SS_DEACTIVATION},
-     *     {@link #SS_INTERROGATION},
-     *     {@link #SS_REGISTRATION},
-     *     {@link #SS_ERASURE}
+     * Supplementary Service request Type.
      */
-    public int getRequestType() {
+    public @RequestType int getRequestType() {
         return requestType;
     }
 
@@ -468,31 +471,25 @@
     }
 
     /**
-     * Supplementary Service teleservice type:
-     *     {@link #SS_ALL_TELE_AND_BEARER_SERVICES},
-     *     {@link #SS_ALL_TELESEVICES},
-     *     {@link #SS_TELEPHONY},
-     *     {@link #SS_ALL_DATA_TELESERVICES},
-     *     {@link #SS_SMS_SERVICES},
-     *     {@link #SS_ALL_TELESERVICES_EXCEPT_SMS}
+     * Supplementary Service teleservice type.
      */
-    public int getTeleserviceType() {
+    public @TeleserviceType int getTeleserviceType() {
         return teleserviceType;
     }
 
     /**
      * Supplementary Service service class.
      */
-    public @ServiceClass int getServiceClass() {
+    public @ServiceClassFlags int getServiceClass() {
         return serviceClass;
     }
 
     /**
      * Result of Supplementary Service operation. Valid values are:
      *     {@link #RESULT_SUCCESS} if the result is success, or
-     *     {@link ImsReasonInfo} CODE_* code if the result is a failure.
+     *     {@link ImsReasonInfo.UtReason} code if the result is a failure.
      */
-    public int getResult() {
+    public @ImsReasonInfo.UtReason int getResult() {
         return result;
     }
 
diff --git a/telephony/java/android/telephony/ims/ImsSsInfo.java b/telephony/java/android/telephony/ims/ImsSsInfo.java
index 0af6e62..031f9e1 100644
--- a/telephony/java/android/telephony/ims/ImsSsInfo.java
+++ b/telephony/java/android/telephony/ims/ImsSsInfo.java
@@ -82,6 +82,7 @@
      */
     public static final int SERVICE_PROVISIONED = 1;
 
+    /**@hide*/
     @IntDef(value = {
             CLIR_OUTGOING_DEFAULT,
             CLIR_OUTGOING_INVOCATION,
@@ -141,6 +142,7 @@
      */
     public static final int CLIR_STATUS_TEMPORARILY_ALLOWED = 4;
 
+    /**@hide*/
     @IntDef(value = {
             CLIR_STATUS_NOT_PROVISIONED,
             CLIR_STATUS_PROVISIONED_PERMANENT,
@@ -184,7 +186,7 @@
          * Set the ICB number for IMS call barring.
          * @param number The number in E.164 international format.
          */
-        public Builder setIncomingCommunicationBarringNumber(@NonNull String number) {
+        public @NonNull Builder setIncomingCommunicationBarringNumber(@NonNull String number) {
             mImsSsInfo.mIcbNum = number;
             return this;
         }
@@ -192,7 +194,7 @@
         /**
          * Set the provisioning status for a Supplementary Service interrogation response.
          */
-        public Builder setProvisionStatus(@ServiceProvisionStatus int provisionStatus) {
+        public @NonNull Builder setProvisionStatus(@ServiceProvisionStatus int provisionStatus) {
             mImsSsInfo.mProvisionStatus = provisionStatus;
             return this;
         }
@@ -201,7 +203,7 @@
          * Set the Calling Line Identification Restriction (CLIR) status for a supplementary service
          * interrogation response.
          */
-        public Builder setClirInterrogationStatus(@ClirInterrogationStatus int status) {
+        public @NonNull Builder setClirInterrogationStatus(@ClirInterrogationStatus int status) {
             mImsSsInfo.mClirInterrogationStatus = status;
             return this;
         }
@@ -209,7 +211,7 @@
         /**
          * Set the Calling line identification Restriction (CLIR) state for outgoing calls.
          */
-        public Builder setClirOutgoingState(@ClirOutgoingState int state) {
+        public @NonNull Builder setClirOutgoingState(@ClirOutgoingState int state) {
             mImsSsInfo.mClirOutgoingState = state;
             return this;
         }
@@ -217,7 +219,7 @@
         /**
          * @return a built {@link ImsSsInfo} containing optional the parameters that were set.
          */
-        public ImsSsInfo build() {
+        public @NonNull ImsSsInfo build() {
             return mImsSsInfo;
         }
     }
diff --git a/telephony/java/com/android/internal/telephony/CallerInfo.java b/telephony/java/com/android/internal/telephony/CallerInfo.java
index 0abe45c..13539b8 100644
--- a/telephony/java/com/android/internal/telephony/CallerInfo.java
+++ b/telephony/java/com/android/internal/telephony/CallerInfo.java
@@ -17,6 +17,7 @@
 package com.android.internal.telephony;
 
 import android.annotation.UnsupportedAppUsage;
+import android.content.ComponentName;
 import android.content.ContentResolver;
 import android.content.Context;
 import android.database.Cursor;
@@ -32,15 +33,15 @@
 import android.provider.ContactsContract.RawContacts;
 import android.telephony.PhoneNumberUtils;
 import android.telephony.Rlog;
+import android.telephony.SubscriptionManager;
 import android.telephony.TelephonyManager;
 import android.text.TextUtils;
 import android.util.Log;
 
-import com.android.i18n.phonenumbers.geocoding.PhoneNumberOfflineGeocoder;
 import com.android.i18n.phonenumbers.NumberParseException;
 import com.android.i18n.phonenumbers.PhoneNumberUtil;
 import com.android.i18n.phonenumbers.Phonenumber.PhoneNumber;
-import android.telephony.SubscriptionManager;
+import com.android.i18n.phonenumbers.geocoding.PhoneNumberOfflineGeocoder;
 
 import java.util.Locale;
 
@@ -112,6 +113,9 @@
     public Uri contactRefUri;
     public String lookupKey;
 
+    public ComponentName preferredPhoneAccountComponent;
+    public String preferredPhoneAccountId;
+
     public long userType;
 
     /**
@@ -264,6 +268,17 @@
                     info.contactDisplayPhotoUri = null;
                 }
 
+                columnIndex = cursor.getColumnIndex(Data.PREFERRED_PHONE_ACCOUNT_COMPONENT_NAME);
+                if ((columnIndex != -1) && (cursor.getString(columnIndex) != null)) {
+                    info.preferredPhoneAccountComponent =
+                            ComponentName.unflattenFromString(cursor.getString(columnIndex));
+                }
+
+                columnIndex = cursor.getColumnIndex(Data.PREFERRED_PHONE_ACCOUNT_ID);
+                if ((columnIndex != -1) && (cursor.getString(columnIndex) != null)) {
+                    info.preferredPhoneAccountId = cursor.getString(columnIndex);
+                }
+
                 // look for the custom ringtone, create from the string stored
                 // in the database.
                 // An empty string ("") in the database indicates a silent ringtone,
diff --git a/telephony/java/com/android/internal/telephony/ITelephonyRegistry.aidl b/telephony/java/com/android/internal/telephony/ITelephonyRegistry.aidl
index e50cdcd..76e7509 100644
--- a/telephony/java/com/android/internal/telephony/ITelephonyRegistry.aidl
+++ b/telephony/java/com/android/internal/telephony/ITelephonyRegistry.aidl
@@ -25,6 +25,7 @@
 import android.telephony.PhysicalChannelConfig;
 import android.telephony.ServiceState;
 import android.telephony.SignalStrength;
+import android.telephony.emergency.EmergencyNumber;
 import com.android.internal.telephony.IPhoneStateListener;
 import com.android.internal.telephony.IOnSubscriptionsChangedListener;
 
@@ -78,6 +79,7 @@
     void notifyCarrierNetworkChange(in boolean active);
     void notifyUserMobileDataStateChangedForPhoneId(in int phoneId, in int subId, in boolean state);
     void notifyPhoneCapabilityChanged(in PhoneCapability capability);
-    void notifyRadioPowerStateChanged(in int state);
     void notifyPreferredDataSubIdChanged(int preferredSubId);
+    void notifyRadioPowerStateChanged(in int state);
+    void notifyEmergencyNumberList(in List<EmergencyNumber> emergencyNumberList);
 }
diff --git a/tests/net/Android.mk b/tests/net/Android.mk
index 132135d..9d1edbf 100644
--- a/tests/net/Android.mk
+++ b/tests/net/Android.mk
@@ -51,7 +51,6 @@
     liblog \
     liblzma \
     libnativehelper \
-    libnetdaidl \
     libpackagelistparser \
     libpcre2 \
     libselinux \
@@ -93,7 +92,6 @@
   liblog \
   libcutils \
   libnativehelper \
-  libnetdaidl \
   netd_aidl_interface-cpp
 
 LOCAL_STATIC_LIBRARIES := \
diff --git a/tests/net/java/android/net/NetworkCapabilitiesTest.java b/tests/net/java/android/net/NetworkCapabilitiesTest.java
index b40921f..84f7359 100644
--- a/tests/net/java/android/net/NetworkCapabilitiesTest.java
+++ b/tests/net/java/android/net/NetworkCapabilitiesTest.java
@@ -24,9 +24,9 @@
 import static android.net.NetworkCapabilities.NET_CAPABILITY_MMS;
 import static android.net.NetworkCapabilities.NET_CAPABILITY_NOT_METERED;
 import static android.net.NetworkCapabilities.NET_CAPABILITY_NOT_RESTRICTED;
-import static android.net.NetworkCapabilities.NET_CAPABILITY_OEM_PAID;
 import static android.net.NetworkCapabilities.NET_CAPABILITY_NOT_ROAMING;
 import static android.net.NetworkCapabilities.NET_CAPABILITY_NOT_VPN;
+import static android.net.NetworkCapabilities.NET_CAPABILITY_OEM_PAID;
 import static android.net.NetworkCapabilities.NET_CAPABILITY_VALIDATED;
 import static android.net.NetworkCapabilities.NET_CAPABILITY_WIFI_P2P;
 import static android.net.NetworkCapabilities.RESTRICTED_CAPABILITIES;
@@ -46,7 +46,6 @@
 import android.test.suitebuilder.annotation.SmallTest;
 import android.util.ArraySet;
 
-
 import org.junit.Test;
 import org.junit.runner.RunWith;
 
@@ -457,6 +456,69 @@
         assertEquals(nc1, nc2);
     }
 
+    @Test
+    public void testSetNetworkSpecifierOnMultiTransportNc() {
+        // Sequence 1: Transport + Transport + NetworkSpecifier
+        NetworkCapabilities nc1 = new NetworkCapabilities();
+        nc1.addTransportType(TRANSPORT_CELLULAR).addTransportType(TRANSPORT_WIFI);
+        try {
+            nc1.setNetworkSpecifier(new StringNetworkSpecifier("specs"));
+            fail("Cannot set NetworkSpecifier on a NetworkCapability with multiple transports!");
+        } catch (IllegalStateException expected) {
+            // empty
+        }
+
+        // Sequence 2: Transport + NetworkSpecifier + Transport
+        NetworkCapabilities nc2 = new NetworkCapabilities();
+        nc2.addTransportType(TRANSPORT_CELLULAR).setNetworkSpecifier(
+                new StringNetworkSpecifier("specs"));
+        try {
+            nc2.addTransportType(TRANSPORT_WIFI);
+            fail("Cannot set a second TransportType of a network which has a NetworkSpecifier!");
+        } catch (IllegalStateException expected) {
+            // empty
+        }
+    }
+
+    @Test
+    public void testSetTransportInfoOnMultiTransportNc() {
+        // Sequence 1: Transport + Transport + TransportInfo
+        NetworkCapabilities nc1 = new NetworkCapabilities();
+        nc1.addTransportType(TRANSPORT_CELLULAR).addTransportType(TRANSPORT_WIFI)
+                .setTransportInfo(new TransportInfo() {});
+
+        // Sequence 2: Transport + NetworkSpecifier + Transport
+        NetworkCapabilities nc2 = new NetworkCapabilities();
+        nc2.addTransportType(TRANSPORT_CELLULAR).setTransportInfo(new TransportInfo() {})
+                .addTransportType(TRANSPORT_WIFI);
+    }
+
+    @Test
+    public void testCombineTransportInfo() {
+        NetworkCapabilities nc1 = new NetworkCapabilities();
+        nc1.setTransportInfo(new TransportInfo() {
+            // empty
+        });
+        NetworkCapabilities nc2 = new NetworkCapabilities();
+        // new TransportInfo so that object is not #equals to nc1's TransportInfo (that's where
+        // combine fails)
+        nc2.setTransportInfo(new TransportInfo() {
+            // empty
+        });
+
+        try {
+            nc1.combineCapabilities(nc2);
+            fail("Should not be able to combine NetworkCabilities which contain TransportInfos");
+        } catch (IllegalStateException expected) {
+            // empty
+        }
+
+        // verify that can combine with identical TransportInfo objects
+        NetworkCapabilities nc3 = new NetworkCapabilities();
+        nc3.setTransportInfo(nc1.getTransportInfo());
+        nc1.combineCapabilities(nc3);
+    }
+
     private void assertEqualsThroughMarshalling(NetworkCapabilities netCap) {
         Parcel p = Parcel.obtain();
         netCap.writeToParcel(p, /* flags */ 0);
diff --git a/tests/net/java/android/net/NetworkStatsTest.java b/tests/net/java/android/net/NetworkStatsTest.java
index d6dbf5a..1e3a49b 100644
--- a/tests/net/java/android/net/NetworkStatsTest.java
+++ b/tests/net/java/android/net/NetworkStatsTest.java
@@ -448,22 +448,58 @@
     }
 
     @Test
-    public void testWithoutUid() throws Exception {
-        final NetworkStats before = new NetworkStats(TEST_START, 3)
-                .addValues(TEST_IFACE, 100, SET_DEFAULT, TAG_NONE, 128L, 8L, 0L, 2L, 20L)
-                .addValues(TEST_IFACE2, 100, SET_DEFAULT, TAG_NONE, 512L, 32L, 0L, 0L, 0L)
-                .addValues(TEST_IFACE2, 100, SET_DEFAULT, 0xF00D, 64L, 4L, 0L, 0L, 0L)
-                .addValues(TEST_IFACE2, 100, SET_FOREGROUND, TAG_NONE, 512L, 32L, 0L, 0L, 0L)
-                .addValues(TEST_IFACE, 101, SET_DEFAULT, TAG_NONE, 128L, 8L, 0L, 0L, 0L)
-                .addValues(TEST_IFACE, 101, SET_DEFAULT, 0xF00D, 128L, 8L, 0L, 0L, 0L);
+    public void testRemoveUids() throws Exception {
+        final NetworkStats before = new NetworkStats(TEST_START, 3);
 
-        final NetworkStats after = before.withoutUids(new int[] { 100 });
-        assertEquals(6, before.size());
-        assertEquals(2, after.size());
-        assertValues(after, 0, TEST_IFACE, 101, SET_DEFAULT, TAG_NONE, METERED_NO, ROAMING_NO,
-                DEFAULT_NETWORK_NO, 128L, 8L, 0L, 0L, 0L);
-        assertValues(after, 1, TEST_IFACE, 101, SET_DEFAULT, 0xF00D, METERED_NO, ROAMING_NO,
-                DEFAULT_NETWORK_NO, 128L, 8L, 0L, 0L, 0L);
+        // Test 0 item stats.
+        NetworkStats after = before.clone();
+        after.removeUids(new int[0]);
+        assertEquals(0, after.size());
+        after.removeUids(new int[] {100});
+        assertEquals(0, after.size());
+
+        // Test 1 item stats.
+        before.addValues(TEST_IFACE, 99, SET_DEFAULT, TAG_NONE, 1L, 128L, 0L, 2L, 20L);
+        after = before.clone();
+        after.removeUids(new int[0]);
+        assertEquals(1, after.size());
+        assertValues(after, 0, TEST_IFACE, 99, SET_DEFAULT, TAG_NONE, METERED_NO, ROAMING_NO,
+                DEFAULT_NETWORK_NO, 1L, 128L, 0L, 2L, 20L);
+        after.removeUids(new int[] {99});
+        assertEquals(0, after.size());
+
+        // Append remaining test items.
+        before.addValues(TEST_IFACE, 100, SET_DEFAULT, TAG_NONE, 2L, 64L, 0L, 2L, 20L)
+                .addValues(TEST_IFACE2, 100, SET_DEFAULT, TAG_NONE, 4L, 32L, 0L, 0L, 0L)
+                .addValues(TEST_IFACE2, 100, SET_DEFAULT, 0xF00D, 8L, 16L, 0L, 0L, 0L)
+                .addValues(TEST_IFACE2, 100, SET_FOREGROUND, TAG_NONE, 16L, 8L, 0L, 0L, 0L)
+                .addValues(TEST_IFACE, 101, SET_DEFAULT, TAG_NONE, 32L, 4L, 0L, 0L, 0L)
+                .addValues(TEST_IFACE, 101, SET_DEFAULT, 0xF00D, 64L, 2L, 0L, 0L, 0L);
+        assertEquals(7, before.size());
+
+        // Test remove with empty uid list.
+        after = before.clone();
+        after.removeUids(new int[0]);
+        assertValues(after.getTotalIncludingTags(null), 127L, 254L, 0L, 4L, 40L);
+
+        // Test remove uids don't exist in stats.
+        after.removeUids(new int[] {98, 0, Integer.MIN_VALUE, Integer.MAX_VALUE});
+        assertValues(after.getTotalIncludingTags(null), 127L, 254L, 0L, 4L, 40L);
+
+        // Test remove all uids.
+        after.removeUids(new int[] {99, 100, 100, 101});
+        assertEquals(0, after.size());
+
+        // Test remove in the middle.
+        after = before.clone();
+        after.removeUids(new int[] {100});
+        assertEquals(3, after.size());
+        assertValues(after, 0, TEST_IFACE, 99, SET_DEFAULT, TAG_NONE, METERED_NO, ROAMING_NO,
+                DEFAULT_NETWORK_NO, 1L, 128L, 0L, 2L, 20L);
+        assertValues(after, 1, TEST_IFACE, 101, SET_DEFAULT, TAG_NONE, METERED_NO, ROAMING_NO,
+                DEFAULT_NETWORK_NO, 32L, 4L, 0L, 0L, 0L);
+        assertValues(after, 2, TEST_IFACE, 101, SET_DEFAULT, 0xF00D, METERED_NO, ROAMING_NO,
+                DEFAULT_NETWORK_NO, 64L, 2L, 0L, 0L, 0L);
     }
 
     @Test
diff --git a/tests/net/java/android/net/ip/IpClientTest.java b/tests/net/java/android/net/ip/IpClientTest.java
index 5a8d2cd..cba3c65 100644
--- a/tests/net/java/android/net/ip/IpClientTest.java
+++ b/tests/net/java/android/net/ip/IpClientTest.java
@@ -81,7 +81,7 @@
     private static final int TEST_IFINDEX = 1001;
     // See RFC 7042#section-2.1.2 for EUI-48 documentation values.
     private static final MacAddress TEST_MAC = MacAddress.fromString("00:00:5E:00:53:01");
-    private static final int TEST_TIMEOUT_MS = 200;
+    private static final int TEST_TIMEOUT_MS = 400;
 
     @Mock private Context mContext;
     @Mock private INetworkManagementService mNMService;
diff --git a/tools/aapt2/configuration/ConfigurationParser_test.cpp b/tools/aapt2/configuration/ConfigurationParser_test.cpp
index 960880a..4c23bd3 100644
--- a/tools/aapt2/configuration/ConfigurationParser_test.cpp
+++ b/tools/aapt2/configuration/ConfigurationParser_test.cpp
@@ -230,7 +230,7 @@
                                       test::ParseConfigOrDie("fr"), test::ParseConfigOrDie("de")));
   ASSERT_TRUE(a1.android_sdk);
   ASSERT_TRUE(a1.android_sdk.value().min_sdk_version);
-  EXPECT_EQ(a1.android_sdk.value().min_sdk_version, 19l);
+  EXPECT_EQ(a1.android_sdk.value().min_sdk_version, 19L);
   EXPECT_THAT(a1.textures, SizeIs(1ul));
   EXPECT_THAT(a1.features, SizeIs(1ul));
 
@@ -250,7 +250,7 @@
                           test::ParseConfigOrDie("fr-rCA")));
   ASSERT_TRUE(a2.android_sdk);
   ASSERT_TRUE(a2.android_sdk.value().min_sdk_version);
-  EXPECT_EQ(a2.android_sdk.value().min_sdk_version, 19l);
+  EXPECT_EQ(a2.android_sdk.value().min_sdk_version, 19L);
   EXPECT_THAT(a2.textures, SizeIs(1ul));
   EXPECT_THAT(a2.features, SizeIs(1ul));
 }
diff --git a/tools/hiddenapi/exclude.sh b/tools/hiddenapi/exclude.sh
index 2291e5a..4ffcf68 100755
--- a/tools/hiddenapi/exclude.sh
+++ b/tools/hiddenapi/exclude.sh
@@ -11,6 +11,7 @@
   android.system \
   com.android.bouncycastle \
   com.android.conscrypt \
+  com.android.i18n.phonenumbers \
   com.android.okhttp \
   com.sun \
   dalvik \
diff --git a/tools/localedata/extract_icu_data.py b/tools/localedata/extract_icu_data.py
index 9dceba2..6b4c346 100755
--- a/tools/localedata/extract_icu_data.py
+++ b/tools/localedata/extract_icu_data.py
@@ -155,7 +155,7 @@
     print
     print 'std::unordered_set<uint64_t> REPRESENTATIVE_LOCALES({'
     for locale in sorted(representative_locales):
-        print '    0x%08Xllu, // %s' % (
+        print '    0x%08XLLU, // %s' % (
             pack_to_uint64(locale),
             locale)
     print '});'
diff --git a/wifi/java/android/net/wifi/WifiManager.java b/wifi/java/android/net/wifi/WifiManager.java
index 15e092b..2aed2de0 100644
--- a/wifi/java/android/net/wifi/WifiManager.java
+++ b/wifi/java/android/net/wifi/WifiManager.java
@@ -1550,7 +1550,6 @@
     /**
      * @return true if this adapter supports Device-to-AP RTT
      */
-    @SystemApi
     public boolean isDeviceToApRttSupported() {
         return isFeatureSupported(WIFI_FEATURE_D2AP_RTT);
     }