Merge "Fix oneway error on IUwbRangingCallbacks calls" into sc-dev
diff --git a/ProtoLibraries.bp b/ProtoLibraries.bp
index 14415db..7e3cc27 100644
--- a/ProtoLibraries.bp
+++ b/ProtoLibraries.bp
@@ -35,6 +35,7 @@
srcs: [
":ipconnectivity-proto-src",
":libstats_atom_enum_protos",
+ ":libstats_atom_message_protos",
":libtombstone_proto-src",
"core/proto/**/*.proto",
"libs/incident/**/*.proto",
@@ -64,6 +65,7 @@
srcs: [
":ipconnectivity-proto-src",
":libstats_atom_enum_protos",
+ ":libstats_atom_message_protos",
"core/proto/**/*.proto",
"libs/incident/**/*.proto",
":service-permission-protos",
@@ -78,6 +80,7 @@
srcs: [
":ipconnectivity-proto-src",
":libstats_atom_enum_protos",
+ ":libstats_atom_message_protos",
":libstats_internal_protos",
":statsd_internal_protos",
"cmds/am/proto/instrumentation_data.proto",
@@ -116,6 +119,7 @@
srcs: [
":ipconnectivity-proto-src",
":libstats_atom_enum_protos",
+ ":libstats_atom_message_protos",
"core/proto/**/*.proto",
"libs/incident/proto/android/os/**/*.proto",
":service-permission-protos",
@@ -133,6 +137,7 @@
srcs: [
":ipconnectivity-proto-src",
":libstats_atom_enum_protos",
+ ":libstats_atom_message_protos",
"core/proto/**/*.proto",
"libs/incident/proto/android/os/**/*.proto",
":service-permission-protos",
@@ -169,6 +174,7 @@
srcs: [
":ipconnectivity-proto-src",
":libstats_atom_enum_protos",
+ ":libstats_atom_message_protos",
"core/proto/**/*.proto",
":service-permission-protos",
],
diff --git a/TEST_MAPPING b/TEST_MAPPING
index 9ceef6b..c5c6012 100644
--- a/TEST_MAPPING
+++ b/TEST_MAPPING
@@ -1,4 +1,20 @@
{
+ "presubmit-large": [
+ {
+ "name": "FrameworksServicesTests",
+ "options": [
+ {
+ "include-annotation": "android.platform.test.annotations.Presubmit"
+ },
+ {
+ "exclude-annotation": "androidx.test.filters.FlakyTest"
+ },
+ {
+ "exclude-annotation": "org.junit.Ignore"
+ }
+ ]
+ }
+ ],
"presubmit": [
{
"name": "FrameworksUiServicesTests",
@@ -53,20 +69,6 @@
]
},
{
- "name": "FrameworksServicesTests",
- "options": [
- {
- "include-annotation": "android.platform.test.annotations.Presubmit"
- },
- {
- "exclude-annotation": "androidx.test.filters.FlakyTest"
- },
- {
- "exclude-annotation": "org.junit.Ignore"
- }
- ]
- },
- {
"name": "FrameworksInProcessTests",
"options": [
{
diff --git a/apex/jobscheduler/framework/java/android/app/AlarmManager.java b/apex/jobscheduler/framework/java/android/app/AlarmManager.java
index 9ea6f79..01f31e4 100644
--- a/apex/jobscheduler/framework/java/android/app/AlarmManager.java
+++ b/apex/jobscheduler/framework/java/android/app/AlarmManager.java
@@ -19,6 +19,7 @@
import android.Manifest;
import android.annotation.IntDef;
import android.annotation.NonNull;
+import android.annotation.Nullable;
import android.annotation.RequiresPermission;
import android.annotation.SdkConstant;
import android.annotation.SystemApi;
@@ -591,8 +592,8 @@
* in milliseconds. The alarm will be delivered no later than this many
* milliseconds after {@code windowStartMillis}. Note that this parameter
* is a <i>duration,</i> not the timestamp of the end of the window.
- * @param tag string describing the alarm, used for logging and battery-use
- * attribution
+ * @param tag Optional. A string describing the alarm, used for logging and battery-use
+ * attribution.
* @param listener {@link OnAlarmListener} instance whose
* {@link OnAlarmListener#onAlarm() onAlarm()} method will be
* called when the alarm time is reached. A given OnAlarmListener instance can
@@ -605,9 +606,8 @@
@SystemApi
@RequiresPermission(Manifest.permission.SCHEDULE_PRIORITIZED_ALARM)
public void setPrioritized(@AlarmType int type, long windowStartMillis, long windowLengthMillis,
- @NonNull String tag, @NonNull Executor executor, @NonNull OnAlarmListener listener) {
+ @Nullable String tag, @NonNull Executor executor, @NonNull OnAlarmListener listener) {
Objects.requireNonNull(executor);
- Objects.requireNonNull(tag);
Objects.requireNonNull(listener);
setImpl(type, windowStartMillis, windowLengthMillis, 0, FLAG_PRIORITIZE, null, listener,
tag, executor, null, null);
@@ -782,6 +782,50 @@
targetHandler, workSource, null);
}
+ /**
+ * Exact version of {@link #set(int, long, long, long, OnAlarmListener, Handler, WorkSource)}.
+ * This equivalent to calling the aforementioned API with {@code windowMillis} and
+ * {@code intervalMillis} set to 0.
+ * One subtle difference is that this API requires {@code workSource} to be non-null. If you
+ * don't want to attribute this alarm to another app for battery consumption, you should use
+ * {@link #setExact(int, long, String, OnAlarmListener, Handler)} instead.
+ *
+ * <p>
+ * Note that using this API requires you to hold
+ * {@link Manifest.permission#SCHEDULE_EXACT_ALARM}, unless you are on the system's power
+ * allowlist. This can be set, for example, by marking the app as {@code <allow-in-power-save>}
+ * within the system config.
+ *
+ * @param type type of alarm
+ * @param triggerAtMillis The exact time in milliseconds, that the alarm should be delivered,
+ * expressed in the appropriate clock's units (depending on the alarm
+ * type).
+ * @param listener {@link OnAlarmListener} instance whose
+ * {@link OnAlarmListener#onAlarm() onAlarm()} method will be called when
+ * the alarm time is reached.
+ * @param executor The {@link Executor} on which to execute the listener's onAlarm()
+ * callback.
+ * @param tag Optional. A string tag used to identify this alarm in logs and
+ * battery-attribution.
+ * @param workSource A {@link WorkSource} object to attribute this alarm to the app that
+ * requested this work.
+ * @hide
+ */
+ @SystemApi
+ @RequiresPermission(allOf = {
+ Manifest.permission.UPDATE_DEVICE_STATS,
+ Manifest.permission.SCHEDULE_EXACT_ALARM}, conditional = true)
+ public void setExact(@AlarmType int type, long triggerAtMillis, @Nullable String tag,
+ @NonNull Executor executor, @NonNull WorkSource workSource,
+ @NonNull OnAlarmListener listener) {
+ Objects.requireNonNull(executor);
+ Objects.requireNonNull(workSource);
+ Objects.requireNonNull(listener);
+ setImpl(type, triggerAtMillis, WINDOW_EXACT, 0, 0, null, listener, tag, executor,
+ workSource, null);
+ }
+
+
private void setImpl(@AlarmType int type, long triggerAtMillis, long windowMillis,
long intervalMillis, int flags, PendingIntent operation, final OnAlarmListener listener,
String listenerTag, Handler targetHandler, WorkSource workSource,
diff --git a/apex/jobscheduler/framework/java/android/os/PowerExemptionManager.java b/apex/jobscheduler/framework/java/android/os/PowerExemptionManager.java
index 93b6566..50f9a58 100644
--- a/apex/jobscheduler/framework/java/android/os/PowerExemptionManager.java
+++ b/apex/jobscheduler/framework/java/android/os/PowerExemptionManager.java
@@ -185,6 +185,11 @@
public static final int REASON_OP_ACTIVATE_VPN = 68;
/** @hide */
public static final int REASON_OP_ACTIVATE_PLATFORM_VPN = 69;
+ /**
+ * Temporarily allowed to have FGS while-in-use permissions.
+ * @hide
+ */
+ public static final int REASON_TEMP_ALLOWED_WHILE_IN_USE = 70;
/* BG-FGS-launch is allowed by temp-allow-list or system-allow-list.
Reason code for temp and system allow list starts here.
@@ -348,6 +353,7 @@
REASON_ACTIVITY_VISIBILITY_GRACE_PERIOD,
REASON_OP_ACTIVATE_VPN,
REASON_OP_ACTIVATE_PLATFORM_VPN,
+ REASON_TEMP_ALLOWED_WHILE_IN_USE,
// temp and system allow list reasons.
REASON_GEOFENCING,
REASON_PUSH_MESSAGING,
@@ -609,6 +615,8 @@
return "OP_ACTIVATE_VPN";
case REASON_OP_ACTIVATE_PLATFORM_VPN:
return "OP_ACTIVATE_PLATFORM_VPN";
+ case REASON_TEMP_ALLOWED_WHILE_IN_USE:
+ return "TEMP_ALLOWED_WHILE_IN_USE";
case REASON_GEOFENCING:
return "GEOFENCING";
case REASON_PUSH_MESSAGING:
diff --git a/apex/jobscheduler/service/java/com/android/server/job/JobConcurrencyManager.java b/apex/jobscheduler/service/java/com/android/server/job/JobConcurrencyManager.java
index 366e174..e60a5d1 100644
--- a/apex/jobscheduler/service/java/com/android/server/job/JobConcurrencyManager.java
+++ b/apex/jobscheduler/service/java/com/android/server/job/JobConcurrencyManager.java
@@ -179,7 +179,7 @@
new WorkConfigLimitsPerMemoryTrimLevel(
new WorkTypeConfig("screen_on_normal", 11,
// defaultMin
- List.of(Pair.create(WORK_TYPE_TOP, 2), Pair.create(WORK_TYPE_FGS, 1),
+ List.of(Pair.create(WORK_TYPE_TOP, 4), Pair.create(WORK_TYPE_FGS, 1),
Pair.create(WORK_TYPE_EJ, 3), Pair.create(WORK_TYPE_BG, 2),
Pair.create(WORK_TYPE_BGUSER_IMPORTANT, 1)),
// defaultMax
@@ -202,7 +202,7 @@
List.of(Pair.create(WORK_TYPE_TOP, 4), Pair.create(WORK_TYPE_FGS, 1),
Pair.create(WORK_TYPE_EJ, 1)),
// defaultMax
- List.of(Pair.create(WORK_TYPE_BG, 1),
+ List.of(Pair.create(WORK_TYPE_BG, 2),
Pair.create(WORK_TYPE_BGUSER_IMPORTANT, 1),
Pair.create(WORK_TYPE_BGUSER, 1))
),
@@ -218,23 +218,23 @@
);
private static final WorkConfigLimitsPerMemoryTrimLevel CONFIG_LIMITS_SCREEN_OFF =
new WorkConfigLimitsPerMemoryTrimLevel(
- new WorkTypeConfig("screen_off_normal", 15,
+ new WorkTypeConfig("screen_off_normal", 16,
// defaultMin
List.of(Pair.create(WORK_TYPE_TOP, 4), Pair.create(WORK_TYPE_FGS, 2),
Pair.create(WORK_TYPE_EJ, 3), Pair.create(WORK_TYPE_BG, 2),
Pair.create(WORK_TYPE_BGUSER_IMPORTANT, 1)),
// defaultMax
- List.of(Pair.create(WORK_TYPE_BG, 6),
+ List.of(Pair.create(WORK_TYPE_BG, 10),
Pair.create(WORK_TYPE_BGUSER_IMPORTANT, 2),
Pair.create(WORK_TYPE_BGUSER, 3))
),
- new WorkTypeConfig("screen_off_moderate", 15,
+ new WorkTypeConfig("screen_off_moderate", 14,
// defaultMin
- List.of(Pair.create(WORK_TYPE_TOP, 6), Pair.create(WORK_TYPE_FGS, 2),
+ List.of(Pair.create(WORK_TYPE_TOP, 4), Pair.create(WORK_TYPE_FGS, 2),
Pair.create(WORK_TYPE_EJ, 3), Pair.create(WORK_TYPE_BG, 2),
Pair.create(WORK_TYPE_BGUSER_IMPORTANT, 1)),
// defaultMax
- List.of(Pair.create(WORK_TYPE_BG, 4),
+ List.of(Pair.create(WORK_TYPE_BG, 7),
Pair.create(WORK_TYPE_BGUSER_IMPORTANT, 1),
Pair.create(WORK_TYPE_BGUSER, 1))
),
@@ -243,7 +243,7 @@
List.of(Pair.create(WORK_TYPE_TOP, 4), Pair.create(WORK_TYPE_FGS, 1),
Pair.create(WORK_TYPE_EJ, 2), Pair.create(WORK_TYPE_BG, 1)),
// defaultMax
- List.of(Pair.create(WORK_TYPE_BG, 1),
+ List.of(Pair.create(WORK_TYPE_BG, 3),
Pair.create(WORK_TYPE_BGUSER_IMPORTANT, 1),
Pair.create(WORK_TYPE_BGUSER, 1))
),
@@ -470,6 +470,11 @@
}
}
+ @GuardedBy("mLock")
+ boolean isJobRunningLocked(JobStatus job) {
+ return mRunningJobs.contains(job);
+ }
+
/** Return {@code true} if the state was updated. */
@GuardedBy("mLock")
private boolean refreshSystemStateLocked() {
diff --git a/apex/jobscheduler/service/java/com/android/server/job/JobSchedulerService.java b/apex/jobscheduler/service/java/com/android/server/job/JobSchedulerService.java
index 1815661..1eebae8 100644
--- a/apex/jobscheduler/service/java/com/android/server/job/JobSchedulerService.java
+++ b/apex/jobscheduler/service/java/com/android/server/job/JobSchedulerService.java
@@ -336,8 +336,6 @@
// (ScheduledJobStateChanged and JobStatusDumpProto).
public static final int RESTRICTED_INDEX = 5;
- // -- Pre-allocated temporaries only for use in assignJobsToContextsLocked --
-
private class ConstantsObserver implements DeviceConfig.OnPropertiesChangedListener {
public void start() {
DeviceConfig.addOnPropertiesChangedListener(DeviceConfig.NAMESPACE_JOB_SCHEDULER,
@@ -1632,22 +1630,6 @@
return false;
}
- /**
- * @param job JobStatus we are querying against.
- * @return Whether or not the job represented by the status object is currently being run or
- * is pending.
- */
- private boolean isCurrentlyActiveLocked(JobStatus job) {
- for (int i=0; i<mActiveServices.size(); i++) {
- JobServiceContext serviceContext = mActiveServices.get(i);
- final JobStatus running = serviceContext.getRunningJobLocked();
- if (running != null && running.matches(job.getUid(), job.getJobId())) {
- return true;
- }
- }
- return false;
- }
-
void noteJobsPending(List<JobStatus> jobs) {
for (int i = jobs.size() - 1; i >= 0; i--) {
JobStatus job = jobs.get(i);
@@ -2253,10 +2235,12 @@
* - The component is enabled and runnable.
*/
@VisibleForTesting
+ @GuardedBy("mLock")
boolean isReadyToBeExecutedLocked(JobStatus job) {
return isReadyToBeExecutedLocked(job, true);
}
+ @GuardedBy("mLock")
boolean isReadyToBeExecutedLocked(JobStatus job, boolean rejectActive) {
final boolean jobReady = job.isReady();
@@ -2296,7 +2280,7 @@
}
final boolean jobPending = mPendingJobs.contains(job);
- final boolean jobActive = rejectActive && isCurrentlyActiveLocked(job);
+ final boolean jobActive = rejectActive && mConcurrencyManager.isJobRunningLocked(job);
if (DEBUG) {
Slog.v(TAG, "isReadyToBeExecutedLocked: " + job.toShortString()
@@ -2452,7 +2436,7 @@
synchronized (mLock) {
final List<JobInfo> pendingJobs = new ArrayList<JobInfo>();
mJobs.forEachJob(Process.SYSTEM_UID, (job) -> {
- if (job.getJob().isPeriodic() || !isCurrentlyActiveLocked(job)) {
+ if (job.getJob().isPeriodic() || !mConcurrencyManager.isJobRunningLocked(job)) {
pendingJobs.add(job.getJob());
}
});
@@ -3101,7 +3085,7 @@
pw.print("pending");
printed = true;
}
- if (isCurrentlyActiveLocked(js)) {
+ if (mConcurrencyManager.isJobRunningLocked(js)) {
if (printed) {
pw.print(" ");
}
@@ -3284,7 +3268,7 @@
pw.print(" !pending=");
pw.print(!mPendingJobs.contains(job));
pw.print(" !active=");
- pw.print(!isCurrentlyActiveLocked(job));
+ pw.print(!mConcurrencyManager.isJobRunningLocked(job));
pw.print(" !backingup=");
pw.print(!(mBackingUpUids.indexOfKey(job.getSourceUid()) >= 0));
pw.print(" comp=");
@@ -3540,7 +3524,7 @@
proto.write(JobSchedulerServiceDumpProto.RegisteredJob.IS_JOB_PENDING,
mPendingJobs.contains(job));
proto.write(JobSchedulerServiceDumpProto.RegisteredJob.IS_JOB_CURRENTLY_ACTIVE,
- isCurrentlyActiveLocked(job));
+ mConcurrencyManager.isJobRunningLocked(job));
proto.write(JobSchedulerServiceDumpProto.RegisteredJob.IS_UID_BACKING_UP,
mBackingUpUids.indexOfKey(job.getSourceUid()) >= 0);
proto.write(JobSchedulerServiceDumpProto.RegisteredJob.IS_COMPONENT_USABLE,
diff --git a/apex/jobscheduler/service/jni/Android.bp b/apex/jobscheduler/service/jni/Android.bp
index 333da74..34a1fa2 100644
--- a/apex/jobscheduler/service/jni/Android.bp
+++ b/apex/jobscheduler/service/jni/Android.bp
@@ -29,14 +29,3 @@
"libbase",
],
}
-
-filegroup {
- name: "lib_alarmManagerService_native",
- srcs: [
- "com_android_server_alarm_AlarmManagerService.cpp",
- ],
- visibility: [
- // TODO: remove this
- "//vendor:__subpackages__",
- ],
-}
diff --git a/boot/Android.bp b/boot/Android.bp
index 844dd64..ef2abc8 100644
--- a/boot/Android.bp
+++ b/boot/Android.bp
@@ -44,6 +44,19 @@
platform_bootclasspath {
name: "platform-bootclasspath",
+ // The bootclasspath_fragments that contribute to the platform
+ // bootclasspath.
+ fragments: [
+ {
+ apex: "com.android.art",
+ module: "art-bootclasspath-fragment",
+ },
+ {
+ apex: "com.android.i18n",
+ module: "i18n-bootclasspath-fragment",
+ },
+ ],
+
// Additional information needed by hidden api processing.
hidden_api: {
unsupported: [
@@ -64,9 +77,6 @@
max_target_o_low_priority: [
"hiddenapi/hiddenapi-max-target-o.txt",
],
- blocked: [
- "hiddenapi/hiddenapi-force-blocked.txt",
- ],
unsupported_packages: [
"hiddenapi/hiddenapi-unsupported-packages.txt",
],
diff --git a/boot/hiddenapi/hiddenapi-force-blocked.txt b/boot/hiddenapi/hiddenapi-force-blocked.txt
deleted file mode 100644
index b328f2a..0000000
--- a/boot/hiddenapi/hiddenapi-force-blocked.txt
+++ /dev/null
@@ -1,40 +0,0 @@
-Ldalvik/system/VMRuntime;->setHiddenApiExemptions([Ljava/lang/String;)V
-Ldalvik/system/VMRuntime;->setTargetSdkVersion(I)V
-Ldalvik/system/VMRuntime;->setTargetSdkVersionNative(I)V
-Ljava/lang/invoke/MethodHandles$Lookup;->IMPL_LOOKUP:Ljava/lang/invoke/MethodHandles$Lookup;
-Ljava/lang/invoke/VarHandle;->acquireFence()V
-Ljava/lang/invoke/VarHandle;->compareAndExchange([Ljava/lang/Object;)Ljava/lang/Object;
-Ljava/lang/invoke/VarHandle;->compareAndExchangeAcquire([Ljava/lang/Object;)Ljava/lang/Object;
-Ljava/lang/invoke/VarHandle;->compareAndExchangeRelease([Ljava/lang/Object;)Ljava/lang/Object;
-Ljava/lang/invoke/VarHandle;->compareAndSet([Ljava/lang/Object;)Z
-Ljava/lang/invoke/VarHandle;->fullFence()V
-Ljava/lang/invoke/VarHandle;->get([Ljava/lang/Object;)Ljava/lang/Object;
-Ljava/lang/invoke/VarHandle;->getAcquire([Ljava/lang/Object;)Ljava/lang/Object;
-Ljava/lang/invoke/VarHandle;->getAndAdd([Ljava/lang/Object;)Ljava/lang/Object;
-Ljava/lang/invoke/VarHandle;->getAndAddAcquire([Ljava/lang/Object;)Ljava/lang/Object;
-Ljava/lang/invoke/VarHandle;->getAndAddRelease([Ljava/lang/Object;)Ljava/lang/Object;
-Ljava/lang/invoke/VarHandle;->getAndBitwiseAnd([Ljava/lang/Object;)Ljava/lang/Object;
-Ljava/lang/invoke/VarHandle;->getAndBitwiseAndAcquire([Ljava/lang/Object;)Ljava/lang/Object;
-Ljava/lang/invoke/VarHandle;->getAndBitwiseAndRelease([Ljava/lang/Object;)Ljava/lang/Object;
-Ljava/lang/invoke/VarHandle;->getAndBitwiseOr([Ljava/lang/Object;)Ljava/lang/Object;
-Ljava/lang/invoke/VarHandle;->getAndBitwiseOrAcquire([Ljava/lang/Object;)Ljava/lang/Object;
-Ljava/lang/invoke/VarHandle;->getAndBitwiseOrRelease([Ljava/lang/Object;)Ljava/lang/Object;
-Ljava/lang/invoke/VarHandle;->getAndBitwiseXor([Ljava/lang/Object;)Ljava/lang/Object;
-Ljava/lang/invoke/VarHandle;->getAndBitwiseXorAcquire([Ljava/lang/Object;)Ljava/lang/Object;
-Ljava/lang/invoke/VarHandle;->getAndBitwiseXorRelease([Ljava/lang/Object;)Ljava/lang/Object;
-Ljava/lang/invoke/VarHandle;->getAndSet([Ljava/lang/Object;)Ljava/lang/Object;
-Ljava/lang/invoke/VarHandle;->getAndSetAcquire([Ljava/lang/Object;)Ljava/lang/Object;
-Ljava/lang/invoke/VarHandle;->getAndSetRelease([Ljava/lang/Object;)Ljava/lang/Object;
-Ljava/lang/invoke/VarHandle;->getOpaque([Ljava/lang/Object;)Ljava/lang/Object;
-Ljava/lang/invoke/VarHandle;->getVolatile([Ljava/lang/Object;)Ljava/lang/Object;
-Ljava/lang/invoke/VarHandle;->loadLoadFence()V
-Ljava/lang/invoke/VarHandle;->releaseFence()V
-Ljava/lang/invoke/VarHandle;->set([Ljava/lang/Object;)V
-Ljava/lang/invoke/VarHandle;->setOpaque([Ljava/lang/Object;)V
-Ljava/lang/invoke/VarHandle;->setRelease([Ljava/lang/Object;)V
-Ljava/lang/invoke/VarHandle;->setVolatile([Ljava/lang/Object;)V
-Ljava/lang/invoke/VarHandle;->storeStoreFence()V
-Ljava/lang/invoke/VarHandle;->weakCompareAndSet([Ljava/lang/Object;)Z
-Ljava/lang/invoke/VarHandle;->weakCompareAndSetAcquire([Ljava/lang/Object;)Z
-Ljava/lang/invoke/VarHandle;->weakCompareAndSetPlain([Ljava/lang/Object;)Z
-Ljava/lang/invoke/VarHandle;->weakCompareAndSetRelease([Ljava/lang/Object;)Z
diff --git a/boot/hiddenapi/hiddenapi-max-target-o.txt b/boot/hiddenapi/hiddenapi-max-target-o.txt
index 3fee568..45ebbb1 100644
--- a/boot/hiddenapi/hiddenapi-max-target-o.txt
+++ b/boot/hiddenapi/hiddenapi-max-target-o.txt
@@ -25375,7248 +25375,6 @@
Landroid/hardware/usb/UsbRequest;->native_queue_array([BIZ)Z
Landroid/hardware/usb/UsbRequest;->native_queue_direct(Ljava/nio/ByteBuffer;IZ)Z
Landroid/hardware/usb/UsbRequest;->TAG:Ljava/lang/String;
-Landroid/icu/impl/BMPSet;->bmpBlockBits:[I
-Landroid/icu/impl/BMPSet;->containsSlow(III)Z
-Landroid/icu/impl/BMPSet;->findCodePoint(III)I
-Landroid/icu/impl/BMPSet;->initBits()V
-Landroid/icu/impl/BMPSet;->latin1Contains:[Z
-Landroid/icu/impl/BMPSet;->list4kStarts:[I
-Landroid/icu/impl/BMPSet;->list:[I
-Landroid/icu/impl/BMPSet;->listLength:I
-Landroid/icu/impl/BMPSet;->set32x64Bits([III)V
-Landroid/icu/impl/BMPSet;->table7FF:[I
-Landroid/icu/impl/CacheValue$NullValue;-><init>()V
-Landroid/icu/impl/CacheValue$SoftValue;-><init>(Ljava/lang/Object;)V
-Landroid/icu/impl/CacheValue$SoftValue;->ref:Ljava/lang/ref/Reference;
-Landroid/icu/impl/CacheValue$StrongValue;-><init>(Ljava/lang/Object;)V
-Landroid/icu/impl/CacheValue$StrongValue;->value:Ljava/lang/Object;
-Landroid/icu/impl/CacheValue;->NULL_VALUE:Landroid/icu/impl/CacheValue;
-Landroid/icu/impl/CacheValue;->strength:Landroid/icu/impl/CacheValue$Strength;
-Landroid/icu/impl/CalendarAstronomer$AngleFunc;->eval()D
-Landroid/icu/impl/CalendarAstronomer$CoordFunc;->eval()Landroid/icu/impl/CalendarAstronomer$Equatorial;
-Landroid/icu/impl/CalendarAstronomer$MoonAge;-><init>(D)V
-Landroid/icu/impl/CalendarAstronomer$MoonAge;->value:D
-Landroid/icu/impl/CalendarAstronomer$SolarLongitude;-><init>(D)V
-Landroid/icu/impl/CalendarAstronomer$SolarLongitude;->value:D
-Landroid/icu/impl/CalendarAstronomer;->clearCache()V
-Landroid/icu/impl/CalendarAstronomer;->DEG_RAD:D
-Landroid/icu/impl/CalendarAstronomer;->eclipObliquity:D
-Landroid/icu/impl/CalendarAstronomer;->eclipticObliquity()D
-Landroid/icu/impl/CalendarAstronomer;->EPOCH_2000_MS:J
-Landroid/icu/impl/CalendarAstronomer;->fGmtOffset:J
-Landroid/icu/impl/CalendarAstronomer;->fLatitude:D
-Landroid/icu/impl/CalendarAstronomer;->fLongitude:D
-Landroid/icu/impl/CalendarAstronomer;->getSiderealOffset()D
-Landroid/icu/impl/CalendarAstronomer;->getSunLongitude(D)[D
-Landroid/icu/impl/CalendarAstronomer;->INVALID:D
-Landroid/icu/impl/CalendarAstronomer;->JD_EPOCH:D
-Landroid/icu/impl/CalendarAstronomer;->julianCentury:D
-Landroid/icu/impl/CalendarAstronomer;->julianDay:D
-Landroid/icu/impl/CalendarAstronomer;->lstToUT(D)J
-Landroid/icu/impl/CalendarAstronomer;->meanAnomalySun:D
-Landroid/icu/impl/CalendarAstronomer;->moonA:D
-Landroid/icu/impl/CalendarAstronomer;->moonE:D
-Landroid/icu/impl/CalendarAstronomer;->moonEclipLong:D
-Landroid/icu/impl/CalendarAstronomer;->moonI:D
-Landroid/icu/impl/CalendarAstronomer;->moonL0:D
-Landroid/icu/impl/CalendarAstronomer;->moonLongitude:D
-Landroid/icu/impl/CalendarAstronomer;->moonN0:D
-Landroid/icu/impl/CalendarAstronomer;->moonP0:D
-Landroid/icu/impl/CalendarAstronomer;->moonPi:D
-Landroid/icu/impl/CalendarAstronomer;->moonPosition:Landroid/icu/impl/CalendarAstronomer$Equatorial;
-Landroid/icu/impl/CalendarAstronomer;->moonT0:D
-Landroid/icu/impl/CalendarAstronomer;->norm2PI(D)D
-Landroid/icu/impl/CalendarAstronomer;->normalize(DD)D
-Landroid/icu/impl/CalendarAstronomer;->normPI(D)D
-Landroid/icu/impl/CalendarAstronomer;->PI2:D
-Landroid/icu/impl/CalendarAstronomer;->PI:D
-Landroid/icu/impl/CalendarAstronomer;->radToDms(D)Ljava/lang/String;
-Landroid/icu/impl/CalendarAstronomer;->radToHms(D)Ljava/lang/String;
-Landroid/icu/impl/CalendarAstronomer;->RAD_DEG:D
-Landroid/icu/impl/CalendarAstronomer;->RAD_HOUR:D
-Landroid/icu/impl/CalendarAstronomer;->riseOrSet(Landroid/icu/impl/CalendarAstronomer$CoordFunc;ZDDJ)J
-Landroid/icu/impl/CalendarAstronomer;->siderealT0:D
-Landroid/icu/impl/CalendarAstronomer;->siderealTime:D
-Landroid/icu/impl/CalendarAstronomer;->sunLongitude:D
-Landroid/icu/impl/CalendarAstronomer;->SUN_E:D
-Landroid/icu/impl/CalendarAstronomer;->SUN_ETA_G:D
-Landroid/icu/impl/CalendarAstronomer;->SUN_OMEGA_G:D
-Landroid/icu/impl/CalendarAstronomer;->time:J
-Landroid/icu/impl/CalendarAstronomer;->timeOfAngle(Landroid/icu/impl/CalendarAstronomer$AngleFunc;DDJZ)J
-Landroid/icu/impl/CalendarAstronomer;->trueAnomaly(DD)D
-Landroid/icu/impl/CalendarCache;->arraySize:I
-Landroid/icu/impl/CalendarCache;->findIndex(J)I
-Landroid/icu/impl/CalendarCache;->hash(J)I
-Landroid/icu/impl/CalendarCache;->hash2(J)I
-Landroid/icu/impl/CalendarCache;->keys:[J
-Landroid/icu/impl/CalendarCache;->makeArrays(I)V
-Landroid/icu/impl/CalendarCache;->pIndex:I
-Landroid/icu/impl/CalendarCache;->primes:[I
-Landroid/icu/impl/CalendarCache;->rehash()V
-Landroid/icu/impl/CalendarCache;->size:I
-Landroid/icu/impl/CalendarCache;->threshold:I
-Landroid/icu/impl/CalendarCache;->values:[J
-Landroid/icu/impl/CharTrie;->m_data_:[C
-Landroid/icu/impl/CharTrie;->m_initialValue_:C
-Landroid/icu/impl/CurrencyData$CurrencySpacingInfo;->DEFAULT_CTX_MATCH:Ljava/lang/String;
-Landroid/icu/impl/CurrencyData$CurrencySpacingInfo;->DEFAULT_CUR_MATCH:Ljava/lang/String;
-Landroid/icu/impl/CurrencyData$CurrencySpacingInfo;->DEFAULT_INSERT:Ljava/lang/String;
-Landroid/icu/impl/CurrencyData$CurrencySpacingInfo;->symbols:[[Ljava/lang/String;
-Landroid/icu/impl/CurrencyData$DefaultInfo;-><init>(Z)V
-Landroid/icu/impl/CurrencyData$DefaultInfo;->fallback:Z
-Landroid/icu/impl/CurrencyData$DefaultInfo;->FALLBACK_INSTANCE:Landroid/icu/impl/CurrencyData$CurrencyDisplayInfo;
-Landroid/icu/impl/CurrencyData$DefaultInfo;->NO_FALLBACK_INSTANCE:Landroid/icu/impl/CurrencyData$CurrencyDisplayInfo;
-Landroid/icu/impl/DayPeriodRules$CutoffType;->AFTER:Landroid/icu/impl/DayPeriodRules$CutoffType;
-Landroid/icu/impl/DayPeriodRules$CutoffType;->AT:Landroid/icu/impl/DayPeriodRules$CutoffType;
-Landroid/icu/impl/DayPeriodRules$CutoffType;->BEFORE:Landroid/icu/impl/DayPeriodRules$CutoffType;
-Landroid/icu/impl/DayPeriodRules$CutoffType;->FROM:Landroid/icu/impl/DayPeriodRules$CutoffType;
-Landroid/icu/impl/DayPeriodRules$CutoffType;->fromStringOrNull(Ljava/lang/CharSequence;)Landroid/icu/impl/DayPeriodRules$CutoffType;
-Landroid/icu/impl/DayPeriodRules$CutoffType;->valueOf(Ljava/lang/String;)Landroid/icu/impl/DayPeriodRules$CutoffType;
-Landroid/icu/impl/DayPeriodRules$CutoffType;->values()[Landroid/icu/impl/DayPeriodRules$CutoffType;
-Landroid/icu/impl/DayPeriodRules$DayPeriod;->fromStringOrNull(Ljava/lang/CharSequence;)Landroid/icu/impl/DayPeriodRules$DayPeriod;
-Landroid/icu/impl/DayPeriodRules$DayPeriodRulesCountSink;-><init>(Landroid/icu/impl/DayPeriodRules$DayPeriodRulesData;)V
-Landroid/icu/impl/DayPeriodRules$DayPeriodRulesCountSink;->data:Landroid/icu/impl/DayPeriodRules$DayPeriodRulesData;
-Landroid/icu/impl/DayPeriodRules$DayPeriodRulesData;-><init>()V
-Landroid/icu/impl/DayPeriodRules$DayPeriodRulesData;->localesToRuleSetNumMap:Ljava/util/Map;
-Landroid/icu/impl/DayPeriodRules$DayPeriodRulesData;->maxRuleSetNum:I
-Landroid/icu/impl/DayPeriodRules$DayPeriodRulesData;->rules:[Landroid/icu/impl/DayPeriodRules;
-Landroid/icu/impl/DayPeriodRules$DayPeriodRulesDataSink;-><init>(Landroid/icu/impl/DayPeriodRules$DayPeriodRulesData;)V
-Landroid/icu/impl/DayPeriodRules$DayPeriodRulesDataSink;->addCutoff(Landroid/icu/impl/DayPeriodRules$CutoffType;Ljava/lang/String;)V
-Landroid/icu/impl/DayPeriodRules$DayPeriodRulesDataSink;->cutoffs:[I
-Landroid/icu/impl/DayPeriodRules$DayPeriodRulesDataSink;->cutoffType:Landroid/icu/impl/DayPeriodRules$CutoffType;
-Landroid/icu/impl/DayPeriodRules$DayPeriodRulesDataSink;->data:Landroid/icu/impl/DayPeriodRules$DayPeriodRulesData;
-Landroid/icu/impl/DayPeriodRules$DayPeriodRulesDataSink;->parseHour(Ljava/lang/String;)I
-Landroid/icu/impl/DayPeriodRules$DayPeriodRulesDataSink;->period:Landroid/icu/impl/DayPeriodRules$DayPeriod;
-Landroid/icu/impl/DayPeriodRules$DayPeriodRulesDataSink;->processRules(Landroid/icu/impl/UResource$Table;Landroid/icu/impl/UResource$Key;Landroid/icu/impl/UResource$Value;)V
-Landroid/icu/impl/DayPeriodRules$DayPeriodRulesDataSink;->ruleSetNum:I
-Landroid/icu/impl/DayPeriodRules$DayPeriodRulesDataSink;->setDayPeriodForHoursFromCutoffs()V
-Landroid/icu/impl/DayPeriodRules;-><init>()V
-Landroid/icu/impl/DayPeriodRules;->add(IILandroid/icu/impl/DayPeriodRules$DayPeriod;)V
-Landroid/icu/impl/DayPeriodRules;->DATA:Landroid/icu/impl/DayPeriodRules$DayPeriodRulesData;
-Landroid/icu/impl/DayPeriodRules;->dayPeriodForHour:[Landroid/icu/impl/DayPeriodRules$DayPeriod;
-Landroid/icu/impl/DayPeriodRules;->getEndHourForDayPeriod(Landroid/icu/impl/DayPeriodRules$DayPeriod;)I
-Landroid/icu/impl/DayPeriodRules;->getStartHourForDayPeriod(Landroid/icu/impl/DayPeriodRules$DayPeriod;)I
-Landroid/icu/impl/DayPeriodRules;->hasMidnight:Z
-Landroid/icu/impl/DayPeriodRules;->hasNoon:Z
-Landroid/icu/impl/DayPeriodRules;->loadData()Landroid/icu/impl/DayPeriodRules$DayPeriodRulesData;
-Landroid/icu/impl/DayPeriodRules;->parseSetNum(Ljava/lang/String;)I
-Landroid/icu/impl/ICUBinary$DataFile;-><init>(Ljava/lang/String;)V
-Landroid/icu/impl/ICUBinary$DataFile;->addBaseNamesInFolder(Ljava/lang/String;Ljava/lang/String;Ljava/util/Set;)V
-Landroid/icu/impl/ICUBinary$DataFile;->getData(Ljava/lang/String;)Ljava/nio/ByteBuffer;
-Landroid/icu/impl/ICUBinary$DataFile;->itemPath:Ljava/lang/String;
-Landroid/icu/impl/ICUBinary$DatPackageReader$IsAcceptable;-><init>()V
-Landroid/icu/impl/ICUBinary$DatPackageReader;-><init>()V
-Landroid/icu/impl/ICUBinary$DatPackageReader;->addBaseName(Ljava/nio/ByteBuffer;ILjava/lang/String;Ljava/lang/String;Ljava/lang/StringBuilder;Ljava/util/Set;)Z
-Landroid/icu/impl/ICUBinary$DatPackageReader;->addBaseNamesInFolder(Ljava/nio/ByteBuffer;Ljava/lang/String;Ljava/lang/String;Ljava/util/Set;)V
-Landroid/icu/impl/ICUBinary$DatPackageReader;->binarySearch(Ljava/nio/ByteBuffer;Ljava/lang/CharSequence;)I
-Landroid/icu/impl/ICUBinary$DatPackageReader;->DATA_FORMAT:I
-Landroid/icu/impl/ICUBinary$DatPackageReader;->getData(Ljava/nio/ByteBuffer;Ljava/lang/CharSequence;)Ljava/nio/ByteBuffer;
-Landroid/icu/impl/ICUBinary$DatPackageReader;->getDataOffset(Ljava/nio/ByteBuffer;I)I
-Landroid/icu/impl/ICUBinary$DatPackageReader;->getNameOffset(Ljava/nio/ByteBuffer;I)I
-Landroid/icu/impl/ICUBinary$DatPackageReader;->IS_ACCEPTABLE:Landroid/icu/impl/ICUBinary$DatPackageReader$IsAcceptable;
-Landroid/icu/impl/ICUBinary$DatPackageReader;->startsWithPackageName(Ljava/nio/ByteBuffer;I)Z
-Landroid/icu/impl/ICUBinary$DatPackageReader;->validate(Ljava/nio/ByteBuffer;)Z
-Landroid/icu/impl/ICUBinary$PackageDataFile;-><init>(Ljava/lang/String;Ljava/nio/ByteBuffer;)V
-Landroid/icu/impl/ICUBinary$PackageDataFile;->addBaseNamesInFolder(Ljava/lang/String;Ljava/lang/String;Ljava/util/Set;)V
-Landroid/icu/impl/ICUBinary$PackageDataFile;->getData(Ljava/lang/String;)Ljava/nio/ByteBuffer;
-Landroid/icu/impl/ICUBinary$PackageDataFile;->pkgBytes:Ljava/nio/ByteBuffer;
-Landroid/icu/impl/ICUBinary$SingleDataFile;-><init>(Ljava/lang/String;Ljava/io/File;)V
-Landroid/icu/impl/ICUBinary$SingleDataFile;->addBaseNamesInFolder(Ljava/lang/String;Ljava/lang/String;Ljava/util/Set;)V
-Landroid/icu/impl/ICUBinary$SingleDataFile;->getData(Ljava/lang/String;)Ljava/nio/ByteBuffer;
-Landroid/icu/impl/ICUBinary$SingleDataFile;->path:Ljava/io/File;
-Landroid/icu/impl/ICUBinary;->addDataFilesFromFolder(Ljava/io/File;Ljava/lang/StringBuilder;Ljava/util/List;)V
-Landroid/icu/impl/ICUBinary;->addDataFilesFromPath(Ljava/lang/String;Ljava/util/List;)V
-Landroid/icu/impl/ICUBinary;->CHAR_SET_:B
-Landroid/icu/impl/ICUBinary;->CHAR_SIZE_:B
-Landroid/icu/impl/ICUBinary;->compareKeys(Ljava/lang/CharSequence;Ljava/nio/ByteBuffer;I)I
-Landroid/icu/impl/ICUBinary;->compareKeys(Ljava/lang/CharSequence;[BI)I
-Landroid/icu/impl/ICUBinary;->getData(Ljava/lang/ClassLoader;Ljava/lang/String;Ljava/lang/String;Z)Ljava/nio/ByteBuffer;
-Landroid/icu/impl/ICUBinary;->getDataFromFile(Ljava/lang/String;)Ljava/nio/ByteBuffer;
-Landroid/icu/impl/ICUBinary;->HEADER_AUTHENTICATION_FAILED_:Ljava/lang/String;
-Landroid/icu/impl/ICUBinary;->icuDataFiles:Ljava/util/List;
-Landroid/icu/impl/ICUBinary;->MAGIC1:B
-Landroid/icu/impl/ICUBinary;->MAGIC2:B
-Landroid/icu/impl/ICUBinary;->MAGIC_NUMBER_AUTHENTICATION_FAILED_:Ljava/lang/String;
-Landroid/icu/impl/ICUBinary;->mapFile(Ljava/io/File;)Ljava/nio/ByteBuffer;
-Landroid/icu/impl/ICUResourceBundle$AvailEntry;-><init>(Ljava/lang/String;Ljava/lang/ClassLoader;)V
-Landroid/icu/impl/ICUResourceBundle$AvailEntry;->fullNameSet:Ljava/util/Set;
-Landroid/icu/impl/ICUResourceBundle$AvailEntry;->getFullLocaleNameSet()Ljava/util/Set;
-Landroid/icu/impl/ICUResourceBundle$AvailEntry;->getLocaleList()[Ljava/util/Locale;
-Landroid/icu/impl/ICUResourceBundle$AvailEntry;->getLocaleNameSet()Ljava/util/Set;
-Landroid/icu/impl/ICUResourceBundle$AvailEntry;->getULocaleList()[Landroid/icu/util/ULocale;
-Landroid/icu/impl/ICUResourceBundle$AvailEntry;->loader:Ljava/lang/ClassLoader;
-Landroid/icu/impl/ICUResourceBundle$AvailEntry;->locales:[Ljava/util/Locale;
-Landroid/icu/impl/ICUResourceBundle$AvailEntry;->nameSet:Ljava/util/Set;
-Landroid/icu/impl/ICUResourceBundle$AvailEntry;->prefix:Ljava/lang/String;
-Landroid/icu/impl/ICUResourceBundle$AvailEntry;->ulocales:[Landroid/icu/util/ULocale;
-Landroid/icu/impl/ICUResourceBundle$Loader;-><init>()V
-Landroid/icu/impl/ICUResourceBundle$Loader;->load()Landroid/icu/impl/ICUResourceBundle;
-Landroid/icu/impl/ICUResourceBundle$WholeBundle;-><init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/ClassLoader;Landroid/icu/impl/ICUResourceBundleReader;)V
-Landroid/icu/impl/ICUResourceBundle$WholeBundle;->baseName:Ljava/lang/String;
-Landroid/icu/impl/ICUResourceBundle$WholeBundle;->loader:Ljava/lang/ClassLoader;
-Landroid/icu/impl/ICUResourceBundle$WholeBundle;->localeID:Ljava/lang/String;
-Landroid/icu/impl/ICUResourceBundle$WholeBundle;->reader:Landroid/icu/impl/ICUResourceBundleReader;
-Landroid/icu/impl/ICUResourceBundle$WholeBundle;->topLevelKeys:Ljava/util/Set;
-Landroid/icu/impl/ICUResourceBundle$WholeBundle;->ulocale:Landroid/icu/util/ULocale;
-Landroid/icu/impl/ICUResourceBundle;->addBundleBaseNamesFromClassLoader(Ljava/lang/String;Ljava/lang/ClassLoader;Ljava/util/Set;)V
-Landroid/icu/impl/ICUResourceBundle;->addLocaleIDsFromIndexBundle(Ljava/lang/String;Ljava/lang/ClassLoader;Ljava/util/Set;)V
-Landroid/icu/impl/ICUResourceBundle;->addLocaleIDsFromListFile(Ljava/lang/String;Ljava/lang/ClassLoader;Ljava/util/Set;)V
-Landroid/icu/impl/ICUResourceBundle;->BUNDLE_CACHE:Landroid/icu/impl/CacheBase;
-Landroid/icu/impl/ICUResourceBundle;->container:Landroid/icu/impl/ICUResourceBundle;
-Landroid/icu/impl/ICUResourceBundle;->countPathKeys(Ljava/lang/String;)I
-Landroid/icu/impl/ICUResourceBundle;->createFullLocaleNameSet(Ljava/lang/String;Ljava/lang/ClassLoader;)Ljava/util/Set;
-Landroid/icu/impl/ICUResourceBundle;->createLocaleNameSet(Ljava/lang/String;Ljava/lang/ClassLoader;)Ljava/util/Set;
-Landroid/icu/impl/ICUResourceBundle;->createULocaleList(Ljava/lang/String;Ljava/lang/ClassLoader;)[Landroid/icu/util/ULocale;
-Landroid/icu/impl/ICUResourceBundle;->DEBUG:Z
-Landroid/icu/impl/ICUResourceBundle;->DEFAULT_TAG:Ljava/lang/String;
-Landroid/icu/impl/ICUResourceBundle;->findResourceWithFallback(Ljava/lang/String;Landroid/icu/util/UResourceBundle;Landroid/icu/util/UResourceBundle;)Landroid/icu/impl/ICUResourceBundle;
-Landroid/icu/impl/ICUResourceBundle;->findResourceWithFallback([Ljava/lang/String;ILandroid/icu/impl/ICUResourceBundle;Landroid/icu/util/UResourceBundle;)Landroid/icu/impl/ICUResourceBundle;
-Landroid/icu/impl/ICUResourceBundle;->findStringWithFallback(Ljava/lang/String;Landroid/icu/util/UResourceBundle;Landroid/icu/util/UResourceBundle;)Ljava/lang/String;
-Landroid/icu/impl/ICUResourceBundle;->FULL_LOCALE_NAMES_LIST:Ljava/lang/String;
-Landroid/icu/impl/ICUResourceBundle;->get(Ljava/lang/String;Ljava/util/HashMap;Landroid/icu/util/UResourceBundle;)Landroid/icu/impl/ICUResourceBundle;
-Landroid/icu/impl/ICUResourceBundle;->getAllItemsWithFallback(Landroid/icu/impl/UResource$Key;Landroid/icu/impl/ICUResourceBundleReader$ReaderValue;Landroid/icu/impl/UResource$Sink;)V
-Landroid/icu/impl/ICUResourceBundle;->getAvailEntry(Ljava/lang/String;Ljava/lang/ClassLoader;)Landroid/icu/impl/ICUResourceBundle$AvailEntry;
-Landroid/icu/impl/ICUResourceBundle;->getBundle(Landroid/icu/impl/ICUResourceBundleReader;Ljava/lang/String;Ljava/lang/String;Ljava/lang/ClassLoader;)Landroid/icu/impl/ICUResourceBundle;
-Landroid/icu/impl/ICUResourceBundle;->getNoFallback()Z
-Landroid/icu/impl/ICUResourceBundle;->getResDepth()I
-Landroid/icu/impl/ICUResourceBundle;->getResPathKeys(Ljava/lang/String;I[Ljava/lang/String;I)V
-Landroid/icu/impl/ICUResourceBundle;->getResPathKeys([Ljava/lang/String;I)V
-Landroid/icu/impl/ICUResourceBundle;->GET_AVAILABLE_CACHE:Landroid/icu/impl/CacheBase;
-Landroid/icu/impl/ICUResourceBundle;->HYPHEN:C
-Landroid/icu/impl/ICUResourceBundle;->ICUDATA:Ljava/lang/String;
-Landroid/icu/impl/ICUResourceBundle;->ICU_RESOURCE_INDEX:Ljava/lang/String;
-Landroid/icu/impl/ICUResourceBundle;->instantiateBundle(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/ClassLoader;Landroid/icu/impl/ICUResourceBundle$OpenType;)Landroid/icu/impl/ICUResourceBundle;
-Landroid/icu/impl/ICUResourceBundle;->LOCALE:Ljava/lang/String;
-Landroid/icu/impl/ICUResourceBundle;->localeIDStartsWithLangSubtag(Ljava/lang/String;Ljava/lang/String;)Z
-Landroid/icu/impl/ICUResourceBundle;->RES_PATH_SEP_CHAR:C
-Landroid/icu/impl/ICUResourceBundle;->RES_PATH_SEP_STR:Ljava/lang/String;
-Landroid/icu/impl/ICUResourceBundle;->wholeBundle:Landroid/icu/impl/ICUResourceBundle$WholeBundle;
-Landroid/icu/impl/ICUResourceBundleReader$Array16;-><init>(Landroid/icu/impl/ICUResourceBundleReader;I)V
-Landroid/icu/impl/ICUResourceBundleReader$Array16;->getContainerResource(Landroid/icu/impl/ICUResourceBundleReader;I)I
-Landroid/icu/impl/ICUResourceBundleReader$Array32;-><init>(Landroid/icu/impl/ICUResourceBundleReader;I)V
-Landroid/icu/impl/ICUResourceBundleReader$Array32;->getContainerResource(Landroid/icu/impl/ICUResourceBundleReader;I)I
-Landroid/icu/impl/ICUResourceBundleReader$Array;-><init>()V
-Landroid/icu/impl/ICUResourceBundleReader$Container;-><init>()V
-Landroid/icu/impl/ICUResourceBundleReader$Container;->getContainer16Resource(Landroid/icu/impl/ICUResourceBundleReader;I)I
-Landroid/icu/impl/ICUResourceBundleReader$Container;->getContainer32Resource(Landroid/icu/impl/ICUResourceBundleReader;I)I
-Landroid/icu/impl/ICUResourceBundleReader$Container;->getContainerResource(Landroid/icu/impl/ICUResourceBundleReader;I)I
-Landroid/icu/impl/ICUResourceBundleReader$Container;->getResource(Landroid/icu/impl/ICUResourceBundleReader;Ljava/lang/String;)I
-Landroid/icu/impl/ICUResourceBundleReader$Container;->getSize()I
-Landroid/icu/impl/ICUResourceBundleReader$Container;->itemsOffset:I
-Landroid/icu/impl/ICUResourceBundleReader$Container;->size:I
-Landroid/icu/impl/ICUResourceBundleReader$IsAcceptable;-><init>()V
-Landroid/icu/impl/ICUResourceBundleReader$ReaderCache;-><init>()V
-Landroid/icu/impl/ICUResourceBundleReader$ReaderCache;->createInstance(Landroid/icu/impl/ICUResourceBundleReader$ReaderCacheKey;Ljava/lang/ClassLoader;)Landroid/icu/impl/ICUResourceBundleReader;
-Landroid/icu/impl/ICUResourceBundleReader$ReaderCache;->createInstance(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
-Landroid/icu/impl/ICUResourceBundleReader$ReaderCacheKey;-><init>(Ljava/lang/String;Ljava/lang/String;)V
-Landroid/icu/impl/ICUResourceBundleReader$ReaderCacheKey;->baseName:Ljava/lang/String;
-Landroid/icu/impl/ICUResourceBundleReader$ReaderCacheKey;->localeID:Ljava/lang/String;
-Landroid/icu/impl/ICUResourceBundleReader$ReaderValue;-><init>()V
-Landroid/icu/impl/ICUResourceBundleReader$ReaderValue;->getStringArray(Landroid/icu/impl/ICUResourceBundleReader$Array;)[Ljava/lang/String;
-Landroid/icu/impl/ICUResourceBundleReader$ReaderValue;->reader:Landroid/icu/impl/ICUResourceBundleReader;
-Landroid/icu/impl/ICUResourceBundleReader$ReaderValue;->res:I
-Landroid/icu/impl/ICUResourceBundleReader$ResourceCache$Level;-><init>(II)V
-Landroid/icu/impl/ICUResourceBundleReader$ResourceCache$Level;->get(I)Ljava/lang/Object;
-Landroid/icu/impl/ICUResourceBundleReader$ResourceCache$Level;->keys:[I
-Landroid/icu/impl/ICUResourceBundleReader$ResourceCache$Level;->levelBitsList:I
-Landroid/icu/impl/ICUResourceBundleReader$ResourceCache$Level;->mask:I
-Landroid/icu/impl/ICUResourceBundleReader$ResourceCache$Level;->putIfAbsent(ILjava/lang/Object;I)Ljava/lang/Object;
-Landroid/icu/impl/ICUResourceBundleReader$ResourceCache$Level;->shift:I
-Landroid/icu/impl/ICUResourceBundleReader$ResourceCache$Level;->values:[Ljava/lang/Object;
-Landroid/icu/impl/ICUResourceBundleReader$ResourceCache;-><init>(I)V
-Landroid/icu/impl/ICUResourceBundleReader$ResourceCache;->findSimple(I)I
-Landroid/icu/impl/ICUResourceBundleReader$ResourceCache;->get(I)Ljava/lang/Object;
-Landroid/icu/impl/ICUResourceBundleReader$ResourceCache;->keys:[I
-Landroid/icu/impl/ICUResourceBundleReader$ResourceCache;->length:I
-Landroid/icu/impl/ICUResourceBundleReader$ResourceCache;->levelBitsList:I
-Landroid/icu/impl/ICUResourceBundleReader$ResourceCache;->makeKey(I)I
-Landroid/icu/impl/ICUResourceBundleReader$ResourceCache;->maxOffsetBits:I
-Landroid/icu/impl/ICUResourceBundleReader$ResourceCache;->NEXT_BITS:I
-Landroid/icu/impl/ICUResourceBundleReader$ResourceCache;->putIfAbsent(ILjava/lang/Object;I)Ljava/lang/Object;
-Landroid/icu/impl/ICUResourceBundleReader$ResourceCache;->putIfCleared([Ljava/lang/Object;ILjava/lang/Object;I)Ljava/lang/Object;
-Landroid/icu/impl/ICUResourceBundleReader$ResourceCache;->rootLevel:Landroid/icu/impl/ICUResourceBundleReader$ResourceCache$Level;
-Landroid/icu/impl/ICUResourceBundleReader$ResourceCache;->ROOT_BITS:I
-Landroid/icu/impl/ICUResourceBundleReader$ResourceCache;->SIMPLE_LENGTH:I
-Landroid/icu/impl/ICUResourceBundleReader$ResourceCache;->storeDirectly(I)Z
-Landroid/icu/impl/ICUResourceBundleReader$ResourceCache;->values:[Ljava/lang/Object;
-Landroid/icu/impl/ICUResourceBundleReader$Table1632;-><init>(Landroid/icu/impl/ICUResourceBundleReader;I)V
-Landroid/icu/impl/ICUResourceBundleReader$Table1632;->getContainerResource(Landroid/icu/impl/ICUResourceBundleReader;I)I
-Landroid/icu/impl/ICUResourceBundleReader$Table16;-><init>(Landroid/icu/impl/ICUResourceBundleReader;I)V
-Landroid/icu/impl/ICUResourceBundleReader$Table16;->getContainerResource(Landroid/icu/impl/ICUResourceBundleReader;I)I
-Landroid/icu/impl/ICUResourceBundleReader$Table32;-><init>(Landroid/icu/impl/ICUResourceBundleReader;I)V
-Landroid/icu/impl/ICUResourceBundleReader$Table32;->getContainerResource(Landroid/icu/impl/ICUResourceBundleReader;I)I
-Landroid/icu/impl/ICUResourceBundleReader$Table;-><init>()V
-Landroid/icu/impl/ICUResourceBundleReader$Table;->findTableItem(Landroid/icu/impl/ICUResourceBundleReader;Ljava/lang/CharSequence;)I
-Landroid/icu/impl/ICUResourceBundleReader$Table;->getKey(Landroid/icu/impl/ICUResourceBundleReader;I)Ljava/lang/String;
-Landroid/icu/impl/ICUResourceBundleReader$Table;->getResource(Landroid/icu/impl/ICUResourceBundleReader;Ljava/lang/String;)I
-Landroid/icu/impl/ICUResourceBundleReader$Table;->key32Offsets:[I
-Landroid/icu/impl/ICUResourceBundleReader$Table;->keyOffsets:[C
-Landroid/icu/impl/ICUResourceBundleReader$Table;->URESDATA_ITEM_NOT_FOUND:I
-Landroid/icu/impl/ICUResourceBundleReader;-><init>()V
-Landroid/icu/impl/ICUResourceBundleReader;-><init>(Ljava/nio/ByteBuffer;Ljava/lang/String;Ljava/lang/String;Ljava/lang/ClassLoader;)V
-Landroid/icu/impl/ICUResourceBundleReader;->b16BitUnits:Ljava/nio/CharBuffer;
-Landroid/icu/impl/ICUResourceBundleReader;->bytes:Ljava/nio/ByteBuffer;
-Landroid/icu/impl/ICUResourceBundleReader;->CACHE:Landroid/icu/impl/ICUResourceBundleReader$ReaderCache;
-Landroid/icu/impl/ICUResourceBundleReader;->compareKeys(Ljava/lang/CharSequence;C)I
-Landroid/icu/impl/ICUResourceBundleReader;->compareKeys32(Ljava/lang/CharSequence;I)I
-Landroid/icu/impl/ICUResourceBundleReader;->dataVersion:I
-Landroid/icu/impl/ICUResourceBundleReader;->DATA_FORMAT:I
-Landroid/icu/impl/ICUResourceBundleReader;->DEBUG:Z
-Landroid/icu/impl/ICUResourceBundleReader;->emptyByteBuffer:Ljava/nio/ByteBuffer;
-Landroid/icu/impl/ICUResourceBundleReader;->emptyBytes:[B
-Landroid/icu/impl/ICUResourceBundleReader;->emptyChars:[C
-Landroid/icu/impl/ICUResourceBundleReader;->emptyInts:[I
-Landroid/icu/impl/ICUResourceBundleReader;->emptyString:Ljava/lang/String;
-Landroid/icu/impl/ICUResourceBundleReader;->EMPTY_16_BIT_UNITS:Ljava/nio/CharBuffer;
-Landroid/icu/impl/ICUResourceBundleReader;->EMPTY_ARRAY:Landroid/icu/impl/ICUResourceBundleReader$Array;
-Landroid/icu/impl/ICUResourceBundleReader;->EMPTY_TABLE:Landroid/icu/impl/ICUResourceBundleReader$Table;
-Landroid/icu/impl/ICUResourceBundleReader;->getAlias(I)Ljava/lang/String;
-Landroid/icu/impl/ICUResourceBundleReader;->getArray(I)Landroid/icu/impl/ICUResourceBundleReader$Array;
-Landroid/icu/impl/ICUResourceBundleReader;->getBinary(I)Ljava/nio/ByteBuffer;
-Landroid/icu/impl/ICUResourceBundleReader;->getBinary(I[B)[B
-Landroid/icu/impl/ICUResourceBundleReader;->getChars(II)[C
-Landroid/icu/impl/ICUResourceBundleReader;->getIndexesInt(I)I
-Landroid/icu/impl/ICUResourceBundleReader;->getInt(I)I
-Landroid/icu/impl/ICUResourceBundleReader;->getInts(II)[I
-Landroid/icu/impl/ICUResourceBundleReader;->getIntVector(I)[I
-Landroid/icu/impl/ICUResourceBundleReader;->getKey16String(I)Ljava/lang/String;
-Landroid/icu/impl/ICUResourceBundleReader;->getKey32String(I)Ljava/lang/String;
-Landroid/icu/impl/ICUResourceBundleReader;->getNoFallback()Z
-Landroid/icu/impl/ICUResourceBundleReader;->getReader(Ljava/lang/String;Ljava/lang/String;Ljava/lang/ClassLoader;)Landroid/icu/impl/ICUResourceBundleReader;
-Landroid/icu/impl/ICUResourceBundleReader;->getResourceByteOffset(I)I
-Landroid/icu/impl/ICUResourceBundleReader;->getRootResource()I
-Landroid/icu/impl/ICUResourceBundleReader;->getString(I)Ljava/lang/String;
-Landroid/icu/impl/ICUResourceBundleReader;->getStringV2(I)Ljava/lang/String;
-Landroid/icu/impl/ICUResourceBundleReader;->getTable(I)Landroid/icu/impl/ICUResourceBundleReader$Table;
-Landroid/icu/impl/ICUResourceBundleReader;->getTable16KeyOffsets(I)[C
-Landroid/icu/impl/ICUResourceBundleReader;->getTable32KeyOffsets(I)[I
-Landroid/icu/impl/ICUResourceBundleReader;->getTableKeyOffsets(I)[C
-Landroid/icu/impl/ICUResourceBundleReader;->getUsesPoolBundle()Z
-Landroid/icu/impl/ICUResourceBundleReader;->getVersion()Landroid/icu/util/VersionInfo;
-Landroid/icu/impl/ICUResourceBundleReader;->ICU_RESOURCE_SUFFIX:Ljava/lang/String;
-Landroid/icu/impl/ICUResourceBundleReader;->init(Ljava/nio/ByteBuffer;)V
-Landroid/icu/impl/ICUResourceBundleReader;->isNoInheritanceMarker(I)Z
-Landroid/icu/impl/ICUResourceBundleReader;->isPoolBundle:Z
-Landroid/icu/impl/ICUResourceBundleReader;->isStringV2NoInheritanceMarker(I)Z
-Landroid/icu/impl/ICUResourceBundleReader;->IS_ACCEPTABLE:Landroid/icu/impl/ICUResourceBundleReader$IsAcceptable;
-Landroid/icu/impl/ICUResourceBundleReader;->keyBytes:[B
-Landroid/icu/impl/ICUResourceBundleReader;->LARGE_SIZE:I
-Landroid/icu/impl/ICUResourceBundleReader;->localKeyLimit:I
-Landroid/icu/impl/ICUResourceBundleReader;->makeKeyStringFromBytes([BI)Ljava/lang/String;
-Landroid/icu/impl/ICUResourceBundleReader;->makeStringFromBytes(II)Ljava/lang/String;
-Landroid/icu/impl/ICUResourceBundleReader;->noFallback:Z
-Landroid/icu/impl/ICUResourceBundleReader;->NULL_READER:Landroid/icu/impl/ICUResourceBundleReader;
-Landroid/icu/impl/ICUResourceBundleReader;->poolBundleReader:Landroid/icu/impl/ICUResourceBundleReader;
-Landroid/icu/impl/ICUResourceBundleReader;->poolCheckSum:I
-Landroid/icu/impl/ICUResourceBundleReader;->poolStringIndex16Limit:I
-Landroid/icu/impl/ICUResourceBundleReader;->poolStringIndexLimit:I
-Landroid/icu/impl/ICUResourceBundleReader;->PUBLIC_TYPES:[I
-Landroid/icu/impl/ICUResourceBundleReader;->resourceCache:Landroid/icu/impl/ICUResourceBundleReader$ResourceCache;
-Landroid/icu/impl/ICUResourceBundleReader;->RES_GET_INT(I)I
-Landroid/icu/impl/ICUResourceBundleReader;->RES_GET_OFFSET(I)I
-Landroid/icu/impl/ICUResourceBundleReader;->RES_GET_TYPE(I)I
-Landroid/icu/impl/ICUResourceBundleReader;->RES_GET_UINT(I)I
-Landroid/icu/impl/ICUResourceBundleReader;->rootRes:I
-Landroid/icu/impl/ICUResourceBundleReader;->setKeyFromKey16(ILandroid/icu/impl/UResource$Key;)V
-Landroid/icu/impl/ICUResourceBundleReader;->setKeyFromKey32(ILandroid/icu/impl/UResource$Key;)V
-Landroid/icu/impl/ICUResourceBundleReader;->URES_ATT_IS_POOL_BUNDLE:I
-Landroid/icu/impl/ICUResourceBundleReader;->URES_ATT_NO_FALLBACK:I
-Landroid/icu/impl/ICUResourceBundleReader;->URES_ATT_USES_POOL_BUNDLE:I
-Landroid/icu/impl/ICUResourceBundleReader;->URES_INDEX_16BIT_TOP:I
-Landroid/icu/impl/ICUResourceBundleReader;->URES_INDEX_ATTRIBUTES:I
-Landroid/icu/impl/ICUResourceBundleReader;->URES_INDEX_BUNDLE_TOP:I
-Landroid/icu/impl/ICUResourceBundleReader;->URES_INDEX_KEYS_TOP:I
-Landroid/icu/impl/ICUResourceBundleReader;->URES_INDEX_LENGTH:I
-Landroid/icu/impl/ICUResourceBundleReader;->URES_INDEX_MAX_TABLE_LENGTH:I
-Landroid/icu/impl/ICUResourceBundleReader;->URES_INDEX_POOL_CHECKSUM:I
-Landroid/icu/impl/ICUResourceBundleReader;->URES_IS_ARRAY(I)Z
-Landroid/icu/impl/ICUResourceBundleReader;->URES_IS_TABLE(I)Z
-Landroid/icu/impl/ICUResourceBundleReader;->usesPoolBundle:Z
-Landroid/icu/impl/locale/AsciiUtil$CaseInsensitiveKey;->_hash:I
-Landroid/icu/impl/locale/AsciiUtil$CaseInsensitiveKey;->_key:Ljava/lang/String;
-Landroid/icu/impl/locale/BaseLocale$Cache;-><init>()V
-Landroid/icu/impl/locale/BaseLocale$Cache;->createObject(Landroid/icu/impl/locale/BaseLocale$Key;)Landroid/icu/impl/locale/BaseLocale;
-Landroid/icu/impl/locale/BaseLocale$Cache;->createObject(Ljava/lang/Object;)Ljava/lang/Object;
-Landroid/icu/impl/locale/BaseLocale$Cache;->normalizeKey(Landroid/icu/impl/locale/BaseLocale$Key;)Landroid/icu/impl/locale/BaseLocale$Key;
-Landroid/icu/impl/locale/BaseLocale$Cache;->normalizeKey(Ljava/lang/Object;)Ljava/lang/Object;
-Landroid/icu/impl/locale/BaseLocale$Key;-><init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
-Landroid/icu/impl/locale/BaseLocale$Key;->compareTo(Landroid/icu/impl/locale/BaseLocale$Key;)I
-Landroid/icu/impl/locale/BaseLocale$Key;->compareTo(Ljava/lang/Object;)I
-Landroid/icu/impl/locale/BaseLocale$Key;->normalize(Landroid/icu/impl/locale/BaseLocale$Key;)Landroid/icu/impl/locale/BaseLocale$Key;
-Landroid/icu/impl/locale/BaseLocale$Key;->_hash:I
-Landroid/icu/impl/locale/BaseLocale$Key;->_lang:Ljava/lang/String;
-Landroid/icu/impl/locale/BaseLocale$Key;->_regn:Ljava/lang/String;
-Landroid/icu/impl/locale/BaseLocale$Key;->_scrt:Ljava/lang/String;
-Landroid/icu/impl/locale/BaseLocale$Key;->_vart:Ljava/lang/String;
-Landroid/icu/impl/locale/BaseLocale;-><init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
-Landroid/icu/impl/locale/BaseLocale;->CACHE:Landroid/icu/impl/locale/BaseLocale$Cache;
-Landroid/icu/impl/locale/BaseLocale;->JDKIMPL:Z
-Landroid/icu/impl/locale/BaseLocale;->_hash:I
-Landroid/icu/impl/locale/BaseLocale;->_language:Ljava/lang/String;
-Landroid/icu/impl/locale/BaseLocale;->_region:Ljava/lang/String;
-Landroid/icu/impl/locale/BaseLocale;->_script:Ljava/lang/String;
-Landroid/icu/impl/locale/BaseLocale;->_variant:Ljava/lang/String;
-Landroid/icu/impl/locale/Extension;-><init>(CLjava/lang/String;)V
-Landroid/icu/impl/locale/Extension;->_key:C
-Landroid/icu/impl/locale/InternalLocaleBuilder$CaseInsensitiveChar;-><init>(C)V
-Landroid/icu/impl/locale/InternalLocaleBuilder$CaseInsensitiveChar;->value()C
-Landroid/icu/impl/locale/InternalLocaleBuilder$CaseInsensitiveChar;->_c:C
-Landroid/icu/impl/locale/InternalLocaleBuilder$CaseInsensitiveString;-><init>(Ljava/lang/String;)V
-Landroid/icu/impl/locale/InternalLocaleBuilder$CaseInsensitiveString;->value()Ljava/lang/String;
-Landroid/icu/impl/locale/InternalLocaleBuilder$CaseInsensitiveString;->_s:Ljava/lang/String;
-Landroid/icu/impl/locale/InternalLocaleBuilder;->checkVariants(Ljava/lang/String;Ljava/lang/String;)I
-Landroid/icu/impl/locale/InternalLocaleBuilder;->JDKIMPL:Z
-Landroid/icu/impl/locale/InternalLocaleBuilder;->PRIVUSE_KEY:Landroid/icu/impl/locale/InternalLocaleBuilder$CaseInsensitiveChar;
-Landroid/icu/impl/locale/InternalLocaleBuilder;->removePrivateuseVariant(Ljava/lang/String;)Ljava/lang/String;
-Landroid/icu/impl/locale/InternalLocaleBuilder;->setExtensions(Ljava/util/List;Ljava/lang/String;)Landroid/icu/impl/locale/InternalLocaleBuilder;
-Landroid/icu/impl/locale/InternalLocaleBuilder;->setUnicodeLocaleExtension(Ljava/lang/String;)V
-Landroid/icu/impl/locale/InternalLocaleBuilder;->_extensions:Ljava/util/HashMap;
-Landroid/icu/impl/locale/InternalLocaleBuilder;->_language:Ljava/lang/String;
-Landroid/icu/impl/locale/InternalLocaleBuilder;->_region:Ljava/lang/String;
-Landroid/icu/impl/locale/InternalLocaleBuilder;->_script:Ljava/lang/String;
-Landroid/icu/impl/locale/InternalLocaleBuilder;->_uattributes:Ljava/util/HashSet;
-Landroid/icu/impl/locale/InternalLocaleBuilder;->_ukeywords:Ljava/util/HashMap;
-Landroid/icu/impl/locale/InternalLocaleBuilder;->_variant:Ljava/lang/String;
-Landroid/icu/impl/locale/LanguageTag;-><init>()V
-Landroid/icu/impl/locale/LanguageTag;->GRANDFATHERED:Ljava/util/Map;
-Landroid/icu/impl/locale/LanguageTag;->JDKIMPL:Z
-Landroid/icu/impl/locale/LanguageTag;->parseExtensions(Landroid/icu/impl/locale/StringTokenIterator;Landroid/icu/impl/locale/ParseStatus;)Z
-Landroid/icu/impl/locale/LanguageTag;->parseExtlangs(Landroid/icu/impl/locale/StringTokenIterator;Landroid/icu/impl/locale/ParseStatus;)Z
-Landroid/icu/impl/locale/LanguageTag;->parseLanguage(Landroid/icu/impl/locale/StringTokenIterator;Landroid/icu/impl/locale/ParseStatus;)Z
-Landroid/icu/impl/locale/LanguageTag;->parsePrivateuse(Landroid/icu/impl/locale/StringTokenIterator;Landroid/icu/impl/locale/ParseStatus;)Z
-Landroid/icu/impl/locale/LanguageTag;->parseRegion(Landroid/icu/impl/locale/StringTokenIterator;Landroid/icu/impl/locale/ParseStatus;)Z
-Landroid/icu/impl/locale/LanguageTag;->parseScript(Landroid/icu/impl/locale/StringTokenIterator;Landroid/icu/impl/locale/ParseStatus;)Z
-Landroid/icu/impl/locale/LanguageTag;->parseVariants(Landroid/icu/impl/locale/StringTokenIterator;Landroid/icu/impl/locale/ParseStatus;)Z
-Landroid/icu/impl/locale/LanguageTag;->_extensions:Ljava/util/List;
-Landroid/icu/impl/locale/LanguageTag;->_extlangs:Ljava/util/List;
-Landroid/icu/impl/locale/LanguageTag;->_language:Ljava/lang/String;
-Landroid/icu/impl/locale/LanguageTag;->_privateuse:Ljava/lang/String;
-Landroid/icu/impl/locale/LanguageTag;->_region:Ljava/lang/String;
-Landroid/icu/impl/locale/LanguageTag;->_script:Ljava/lang/String;
-Landroid/icu/impl/locale/LanguageTag;->_variants:Ljava/util/List;
-Landroid/icu/impl/locale/LocaleExtensions;-><init>()V
-Landroid/icu/impl/locale/LocaleExtensions;-><init>(Ljava/util/Map;Ljava/util/Set;Ljava/util/Map;)V
-Landroid/icu/impl/locale/LocaleExtensions;->EMPTY_MAP:Ljava/util/SortedMap;
-Landroid/icu/impl/locale/LocaleExtensions;->toID(Ljava/util/SortedMap;)Ljava/lang/String;
-Landroid/icu/impl/locale/LocaleExtensions;->_id:Ljava/lang/String;
-Landroid/icu/impl/locale/LocaleExtensions;->_map:Ljava/util/SortedMap;
-Landroid/icu/impl/locale/LocaleObjectCache$CacheEntry;-><init>(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/ref/ReferenceQueue;)V
-Landroid/icu/impl/locale/LocaleObjectCache$CacheEntry;->getKey()Ljava/lang/Object;
-Landroid/icu/impl/locale/LocaleObjectCache$CacheEntry;->_key:Ljava/lang/Object;
-Landroid/icu/impl/locale/LocaleObjectCache;->cleanStaleEntries()V
-Landroid/icu/impl/locale/LocaleObjectCache;->_map:Ljava/util/concurrent/ConcurrentHashMap;
-Landroid/icu/impl/locale/LocaleObjectCache;->_queue:Ljava/lang/ref/ReferenceQueue;
-Landroid/icu/impl/locale/LocaleSyntaxException;->_index:I
-Landroid/icu/impl/locale/ParseStatus;->_errorIndex:I
-Landroid/icu/impl/locale/ParseStatus;->_errorMsg:Ljava/lang/String;
-Landroid/icu/impl/locale/ParseStatus;->_parseLength:I
-Landroid/icu/impl/locale/StringTokenIterator;->nextDelimiter(I)I
-Landroid/icu/impl/locale/StringTokenIterator;->_dlms:Ljava/lang/String;
-Landroid/icu/impl/locale/StringTokenIterator;->_done:Z
-Landroid/icu/impl/locale/StringTokenIterator;->_end:I
-Landroid/icu/impl/locale/StringTokenIterator;->_start:I
-Landroid/icu/impl/locale/StringTokenIterator;->_text:Ljava/lang/String;
-Landroid/icu/impl/locale/StringTokenIterator;->_token:Ljava/lang/String;
-Landroid/icu/impl/locale/XCldrStub$HashMultimap;-><init>()V
-Landroid/icu/impl/locale/XCldrStub$Joiner;-><init>(Ljava/lang/String;)V
-Landroid/icu/impl/locale/XCldrStub$Joiner;->separator:Ljava/lang/String;
-Landroid/icu/impl/locale/XCldrStub$LinkedHashMultimap;-><init>()V
-Landroid/icu/impl/locale/XCldrStub$Multimap;-><init>(Ljava/util/Map;Ljava/lang/Class;)V
-Landroid/icu/impl/locale/XCldrStub$Multimap;->createSetIfMissing(Ljava/lang/Object;)Ljava/util/Set;
-Landroid/icu/impl/locale/XCldrStub$Multimap;->getInstance()Ljava/util/Set;
-Landroid/icu/impl/locale/XCldrStub$Multimap;->map:Ljava/util/Map;
-Landroid/icu/impl/locale/XCldrStub$Multimap;->setClass:Ljava/lang/Class;
-Landroid/icu/impl/locale/XCldrStub$MultimapIterator;-><init>(Ljava/util/Map;)V
-Landroid/icu/impl/locale/XCldrStub$MultimapIterator;->entry:Landroid/icu/impl/locale/XCldrStub$ReusableEntry;
-Landroid/icu/impl/locale/XCldrStub$MultimapIterator;->it1:Ljava/util/Iterator;
-Landroid/icu/impl/locale/XCldrStub$MultimapIterator;->it2:Ljava/util/Iterator;
-Landroid/icu/impl/locale/XCldrStub$ReusableEntry;-><init>()V
-Landroid/icu/impl/locale/XCldrStub$ReusableEntry;->key:Ljava/lang/Object;
-Landroid/icu/impl/locale/XCldrStub$ReusableEntry;->value:Ljava/lang/Object;
-Landroid/icu/impl/locale/XCldrStub$Splitter;->pattern:Ljava/util/regex/Pattern;
-Landroid/icu/impl/locale/XCldrStub$Splitter;->trimResults:Z
-Landroid/icu/impl/locale/XCldrStub$TreeMultimap;-><init>()V
-Landroid/icu/impl/locale/XLikelySubtags$Aliases;->toAliases:Landroid/icu/impl/locale/XCldrStub$Multimap;
-Landroid/icu/impl/locale/XLikelySubtags$Aliases;->toCanonical:Ljava/util/Map;
-Landroid/icu/impl/locale/XLikelySubtags$LSR;->from(Ljava/lang/String;)Landroid/icu/impl/locale/XLikelySubtags$LSR;
-Landroid/icu/impl/locale/XLikelySubtags$Maker;-><init>()V
-Landroid/icu/impl/locale/XLikelySubtags$Maker;->getSubtable(Ljava/util/Map;Ljava/lang/Object;)Ljava/lang/Object;
-Landroid/icu/impl/locale/XLikelySubtags$Maker;->HASHMAP:Landroid/icu/impl/locale/XLikelySubtags$Maker;
-Landroid/icu/impl/locale/XLikelySubtags$Maker;->make()Ljava/lang/Object;
-Landroid/icu/impl/locale/XLikelySubtags$Maker;->TREEMAP:Landroid/icu/impl/locale/XLikelySubtags$Maker;
-Landroid/icu/impl/locale/XLikelySubtags;->DEFAULT:Landroid/icu/impl/locale/XLikelySubtags;
-Landroid/icu/impl/locale/XLikelySubtags;->getDefaultRawData()Ljava/util/Map;
-Landroid/icu/impl/locale/XLikelySubtags;->init(Ljava/util/Map;Z)Ljava/util/Map;
-Landroid/icu/impl/locale/XLikelySubtags;->langTable:Ljava/util/Map;
-Landroid/icu/impl/locale/XLikelySubtags;->minimizeSubtags(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Landroid/icu/util/ULocale$Minimize;)Landroid/icu/impl/locale/XLikelySubtags$LSR;
-Landroid/icu/impl/locale/XLikelySubtags;->set(Ljava/util/Map;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Landroid/icu/impl/locale/XLikelySubtags$LSR;)V
-Landroid/icu/impl/locale/XLikelySubtags;->set(Ljava/util/Map;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/util/Map;)V
-Landroid/icu/impl/locale/XLikelySubtags;->show(Ljava/util/Map;Ljava/lang/String;Ljava/lang/StringBuilder;)Ljava/lang/StringBuilder;
-Landroid/icu/impl/locale/XLocaleDistance$AddSub;-><init>(Ljava/lang/String;Ljava/lang/String;Landroid/icu/impl/locale/XLocaleDistance$StringDistanceTable;)V
-Landroid/icu/impl/locale/XLocaleDistance$AddSub;->desiredSub:Ljava/lang/String;
-Landroid/icu/impl/locale/XLocaleDistance$AddSub;->r:Landroid/icu/impl/locale/XLocaleDistance$CopyIfEmpty;
-Landroid/icu/impl/locale/XLocaleDistance$AddSub;->supportedSub:Ljava/lang/String;
-Landroid/icu/impl/locale/XLocaleDistance$AddSub;->test(Landroid/icu/impl/locale/XLocaleDistance$DistanceNode;)Z
-Landroid/icu/impl/locale/XLocaleDistance$AddSub;->test(Ljava/lang/Object;)Z
-Landroid/icu/impl/locale/XLocaleDistance$CompactAndImmutablizer;-><init>()V
-Landroid/icu/impl/locale/XLocaleDistance$CompactAndImmutablizer;->compact(Landroid/icu/impl/locale/XLocaleDistance$DistanceNode;)Landroid/icu/impl/locale/XLocaleDistance$DistanceNode;
-Landroid/icu/impl/locale/XLocaleDistance$CompactAndImmutablizer;->compact(Landroid/icu/impl/locale/XLocaleDistance$StringDistanceTable;)Landroid/icu/impl/locale/XLocaleDistance$StringDistanceTable;
-Landroid/icu/impl/locale/XLocaleDistance$CompactAndImmutablizer;->compact(Ljava/util/Map;I)Ljava/util/Map;
-Landroid/icu/impl/locale/XLocaleDistance$CopyIfEmpty;-><init>(Landroid/icu/impl/locale/XLocaleDistance$StringDistanceTable;)V
-Landroid/icu/impl/locale/XLocaleDistance$CopyIfEmpty;->test(Landroid/icu/impl/locale/XLocaleDistance$DistanceNode;)Z
-Landroid/icu/impl/locale/XLocaleDistance$CopyIfEmpty;->test(Ljava/lang/Object;)Z
-Landroid/icu/impl/locale/XLocaleDistance$CopyIfEmpty;->toCopy:Landroid/icu/impl/locale/XLocaleDistance$StringDistanceTable;
-Landroid/icu/impl/locale/XLocaleDistance$DistanceNode;->distance:I
-Landroid/icu/impl/locale/XLocaleDistance$DistanceTable;->getCloser(I)Ljava/util/Set;
-Landroid/icu/impl/locale/XLocaleDistance$DistanceTable;->getDistance(Ljava/lang/String;Ljava/lang/String;Landroid/icu/util/Output;Z)I
-Landroid/icu/impl/locale/XLocaleDistance$DistanceTable;->toString(Z)Ljava/lang/String;
-Landroid/icu/impl/locale/XLocaleDistance$IdMakerFull;-><init>()V
-Landroid/icu/impl/locale/XLocaleDistance$IdMakerFull;-><init>(Ljava/lang/String;)V
-Landroid/icu/impl/locale/XLocaleDistance$IdMakerFull;-><init>(Ljava/lang/String;Ljava/lang/Object;)V
-Landroid/icu/impl/locale/XLocaleDistance$IdMakerFull;->add(Ljava/lang/Object;)Ljava/lang/Integer;
-Landroid/icu/impl/locale/XLocaleDistance$IdMakerFull;->fromId(I)Ljava/lang/Object;
-Landroid/icu/impl/locale/XLocaleDistance$IdMakerFull;->getOldAndAdd(Ljava/lang/Object;)Ljava/lang/Integer;
-Landroid/icu/impl/locale/XLocaleDistance$IdMakerFull;->intern(Ljava/lang/Object;)Ljava/lang/Object;
-Landroid/icu/impl/locale/XLocaleDistance$IdMakerFull;->intToObject:Ljava/util/List;
-Landroid/icu/impl/locale/XLocaleDistance$IdMakerFull;->name:Ljava/lang/String;
-Landroid/icu/impl/locale/XLocaleDistance$IdMakerFull;->objectToInt:Ljava/util/Map;
-Landroid/icu/impl/locale/XLocaleDistance$IdMakerFull;->size()I
-Landroid/icu/impl/locale/XLocaleDistance$IdMakerFull;->toId(Ljava/lang/Object;)Ljava/lang/Integer;
-Landroid/icu/impl/locale/XLocaleDistance$IdMakerFull;->toId(Ljava/lang/Object;)Ljava/lang/Object;
-Landroid/icu/impl/locale/XLocaleDistance$IdMapper;->toId(Ljava/lang/Object;)Ljava/lang/Object;
-Landroid/icu/impl/locale/XLocaleDistance$RegionMapper$Builder;-><init>()V
-Landroid/icu/impl/locale/XLocaleDistance$RegionMapper$Builder;->add(Ljava/lang/String;Ljava/lang/String;)V
-Landroid/icu/impl/locale/XLocaleDistance$RegionMapper$Builder;->build()Landroid/icu/impl/locale/XLocaleDistance$RegionMapper;
-Landroid/icu/impl/locale/XLocaleDistance$RegionMapper$Builder;->paradigms:Ljava/util/Set;
-Landroid/icu/impl/locale/XLocaleDistance$RegionMapper$Builder;->regionSet:Landroid/icu/impl/locale/XLocaleDistance$RegionSet;
-Landroid/icu/impl/locale/XLocaleDistance$RegionMapper$Builder;->regionToRawPartition:Landroid/icu/impl/locale/XCldrStub$Multimap;
-Landroid/icu/impl/locale/XLocaleDistance$RegionMapper;-><init>(Landroid/icu/impl/locale/XCldrStub$Multimap;Ljava/util/Map;Landroid/icu/impl/locale/XCldrStub$Multimap;Ljava/util/Set;)V
-Landroid/icu/impl/locale/XLocaleDistance$RegionMapper;->getIdsFromVariable(Ljava/lang/String;)Ljava/util/Collection;
-Landroid/icu/impl/locale/XLocaleDistance$RegionMapper;->macroToPartitions:Landroid/icu/impl/locale/XCldrStub$Multimap;
-Landroid/icu/impl/locale/XLocaleDistance$RegionMapper;->paradigms:Ljava/util/Set;
-Landroid/icu/impl/locale/XLocaleDistance$RegionMapper;->regions()Ljava/util/Set;
-Landroid/icu/impl/locale/XLocaleDistance$RegionMapper;->regionToPartition:Ljava/util/Map;
-Landroid/icu/impl/locale/XLocaleDistance$RegionMapper;->toId(Ljava/lang/Object;)Ljava/lang/Object;
-Landroid/icu/impl/locale/XLocaleDistance$RegionMapper;->toId(Ljava/lang/String;)Ljava/lang/String;
-Landroid/icu/impl/locale/XLocaleDistance$RegionMapper;->variables()Ljava/util/Set;
-Landroid/icu/impl/locale/XLocaleDistance$RegionMapper;->variableToPartition:Landroid/icu/impl/locale/XCldrStub$Multimap;
-Landroid/icu/impl/locale/XLocaleDistance$RegionSet$Operation;->add:Landroid/icu/impl/locale/XLocaleDistance$RegionSet$Operation;
-Landroid/icu/impl/locale/XLocaleDistance$RegionSet$Operation;->remove:Landroid/icu/impl/locale/XLocaleDistance$RegionSet$Operation;
-Landroid/icu/impl/locale/XLocaleDistance$RegionSet$Operation;->valueOf(Ljava/lang/String;)Landroid/icu/impl/locale/XLocaleDistance$RegionSet$Operation;
-Landroid/icu/impl/locale/XLocaleDistance$RegionSet$Operation;->values()[Landroid/icu/impl/locale/XLocaleDistance$RegionSet$Operation;
-Landroid/icu/impl/locale/XLocaleDistance$RegionSet;-><init>()V
-Landroid/icu/impl/locale/XLocaleDistance$RegionSet;->add(Ljava/lang/String;II)V
-Landroid/icu/impl/locale/XLocaleDistance$RegionSet;->changeSet(Landroid/icu/impl/locale/XLocaleDistance$RegionSet$Operation;Ljava/lang/String;)V
-Landroid/icu/impl/locale/XLocaleDistance$RegionSet;->inverse()Ljava/util/Set;
-Landroid/icu/impl/locale/XLocaleDistance$RegionSet;->operation:Landroid/icu/impl/locale/XLocaleDistance$RegionSet$Operation;
-Landroid/icu/impl/locale/XLocaleDistance$RegionSet;->parseSet(Ljava/lang/String;)Ljava/util/Set;
-Landroid/icu/impl/locale/XLocaleDistance$RegionSet;->tempRegions:Ljava/util/Set;
-Landroid/icu/impl/locale/XLocaleDistance$StringDistanceNode;-><init>(I)V
-Landroid/icu/impl/locale/XLocaleDistance$StringDistanceNode;-><init>(ILandroid/icu/impl/locale/XLocaleDistance$DistanceTable;)V
-Landroid/icu/impl/locale/XLocaleDistance$StringDistanceNode;->addSubtables(Ljava/lang/String;Ljava/lang/String;Landroid/icu/impl/locale/XLocaleDistance$CopyIfEmpty;)V
-Landroid/icu/impl/locale/XLocaleDistance$StringDistanceNode;->copyTables(Landroid/icu/impl/locale/XLocaleDistance$StringDistanceTable;)V
-Landroid/icu/impl/locale/XLocaleDistance$StringDistanceNode;->distanceTable:Landroid/icu/impl/locale/XLocaleDistance$DistanceTable;
-Landroid/icu/impl/locale/XLocaleDistance$StringDistanceTable;-><init>()V
-Landroid/icu/impl/locale/XLocaleDistance$StringDistanceTable;-><init>(Ljava/util/Map;)V
-Landroid/icu/impl/locale/XLocaleDistance$StringDistanceTable;->addSubtable(Ljava/lang/String;Ljava/lang/String;I)Landroid/icu/impl/locale/XLocaleDistance$DistanceNode;
-Landroid/icu/impl/locale/XLocaleDistance$StringDistanceTable;->getNode(Ljava/lang/String;Ljava/lang/String;)Landroid/icu/impl/locale/XLocaleDistance$DistanceNode;
-Landroid/icu/impl/locale/XLocaleDistance$StringDistanceTable;->subtables:Ljava/util/Map;
-Landroid/icu/impl/locale/XLocaleDistance;->ALL_FINAL_REGIONS:Ljava/util/Set;
-Landroid/icu/impl/locale/XLocaleDistance;->CONTAINER_TO_CONTAINED:Landroid/icu/impl/locale/XCldrStub$Multimap;
-Landroid/icu/impl/locale/XLocaleDistance;->CONTAINER_TO_CONTAINED_FINAL:Landroid/icu/impl/locale/XCldrStub$Multimap;
-Landroid/icu/impl/locale/XLocaleDistance;->DEFAULT:Landroid/icu/impl/locale/XLocaleDistance;
-Landroid/icu/impl/locale/XLocaleDistance;->defaultLanguageDistance:I
-Landroid/icu/impl/locale/XLocaleDistance;->defaultRegionDistance:I
-Landroid/icu/impl/locale/XLocaleDistance;->defaultScriptDistance:I
-Landroid/icu/impl/locale/XLocaleDistance;->english:Landroid/icu/text/LocaleDisplayNames;
-Landroid/icu/impl/locale/XLocaleDistance;->fill(Ljava/lang/String;Landroid/icu/impl/locale/XCldrStub$TreeMultimap;Landroid/icu/impl/locale/XCldrStub$Multimap;)Ljava/util/Set;
-Landroid/icu/impl/locale/XLocaleDistance;->fixAny(Ljava/lang/String;)Ljava/lang/String;
-Landroid/icu/impl/locale/XLocaleDistance;->fixedName(Ljava/util/List;)Ljava/lang/String;
-Landroid/icu/impl/locale/XLocaleDistance;->getContainingMacrosFor(Ljava/util/Collection;Ljava/util/Set;)Ljava/util/Set;
-Landroid/icu/impl/locale/XLocaleDistance;->languageDesired2Supported:Landroid/icu/impl/locale/XLocaleDistance$DistanceTable;
-Landroid/icu/impl/locale/XLocaleDistance;->newMap()Ljava/util/Map;
-Landroid/icu/impl/locale/XLocaleDistance;->printMatchXml(Ljava/util/List;Ljava/util/List;Ljava/lang/Integer;Ljava/lang/Boolean;)V
-Landroid/icu/impl/locale/XLocaleDistance;->PRINT_OVERRIDES:Z
-Landroid/icu/impl/locale/XLocaleDistance;->regionMapper:Landroid/icu/impl/locale/XLocaleDistance$RegionMapper;
-Landroid/icu/impl/locale/XLocaleDistance;->xGetContainment()Landroid/icu/impl/locale/XCldrStub$Multimap;
-Landroid/icu/impl/locale/XLocaleDistance;->xGetLanguageMatcherData()Ljava/util/List;
-Landroid/icu/impl/locale/XLocaleDistance;->xGetMatchVariables()Ljava/util/Map;
-Landroid/icu/impl/locale/XLocaleDistance;->xGetParadigmLocales()Ljava/util/Set;
-Landroid/icu/impl/locale/XLocaleMatcher$Builder;->defaultLanguage:Landroid/icu/util/ULocale;
-Landroid/icu/impl/locale/XLocaleMatcher$Builder;->demotionPerAdditionalDesiredLocale:I
-Landroid/icu/impl/locale/XLocaleMatcher$Builder;->distanceOption:Landroid/icu/impl/locale/XLocaleDistance$DistanceOption;
-Landroid/icu/impl/locale/XLocaleMatcher$Builder;->localeDistance:Landroid/icu/impl/locale/XLocaleDistance;
-Landroid/icu/impl/locale/XLocaleMatcher$Builder;->supportedLanguagesList:Ljava/util/Set;
-Landroid/icu/impl/locale/XLocaleMatcher$Builder;->thresholdDistance:I
-Landroid/icu/impl/locale/XLocaleMatcher;-><init>(Landroid/icu/impl/locale/XLocaleMatcher$Builder;)V
-Landroid/icu/impl/locale/XLocaleMatcher;->asSet(Landroid/icu/util/LocalePriorityList;)Ljava/util/Set;
-Landroid/icu/impl/locale/XLocaleMatcher;->defaultLanguage:Landroid/icu/util/ULocale;
-Landroid/icu/impl/locale/XLocaleMatcher;->demotionPerAdditionalDesiredLocale:I
-Landroid/icu/impl/locale/XLocaleMatcher;->distanceOption:Landroid/icu/impl/locale/XLocaleDistance$DistanceOption;
-Landroid/icu/impl/locale/XLocaleMatcher;->exactSupportedLocales:Ljava/util/Set;
-Landroid/icu/impl/locale/XLocaleMatcher;->extractLsrMap(Ljava/util/Set;Ljava/util/Set;)Landroid/icu/impl/locale/XCldrStub$Multimap;
-Landroid/icu/impl/locale/XLocaleMatcher;->extractLsrSet(Ljava/util/Set;)Ljava/util/Set;
-Landroid/icu/impl/locale/XLocaleMatcher;->localeDistance:Landroid/icu/impl/locale/XLocaleDistance;
-Landroid/icu/impl/locale/XLocaleMatcher;->supportedLanguages:Ljava/util/Map;
-Landroid/icu/impl/locale/XLocaleMatcher;->thresholdDistance:I
-Landroid/icu/impl/locale/XLocaleMatcher;->UND:Landroid/icu/impl/locale/XLikelySubtags$LSR;
-Landroid/icu/impl/locale/XLocaleMatcher;->UND_LOCALE:Landroid/icu/util/ULocale;
-Landroid/icu/impl/Normalizer2Impl$IsAcceptable;-><init>()V
-Landroid/icu/impl/Normalizer2Impl$ReorderingBuffer;->app:Ljava/lang/Appendable;
-Landroid/icu/impl/Normalizer2Impl$ReorderingBuffer;->appIsStringBuilder:Z
-Landroid/icu/impl/Normalizer2Impl$ReorderingBuffer;->codePointLimit:I
-Landroid/icu/impl/Normalizer2Impl$ReorderingBuffer;->codePointStart:I
-Landroid/icu/impl/Normalizer2Impl$ReorderingBuffer;->impl:Landroid/icu/impl/Normalizer2Impl;
-Landroid/icu/impl/Normalizer2Impl$ReorderingBuffer;->insert(II)V
-Landroid/icu/impl/Normalizer2Impl$ReorderingBuffer;->lastCC:I
-Landroid/icu/impl/Normalizer2Impl$ReorderingBuffer;->previousCC()I
-Landroid/icu/impl/Normalizer2Impl$ReorderingBuffer;->reorderStart:I
-Landroid/icu/impl/Normalizer2Impl$ReorderingBuffer;->setIterator()V
-Landroid/icu/impl/Normalizer2Impl$ReorderingBuffer;->skipPrevious()V
-Landroid/icu/impl/Normalizer2Impl$ReorderingBuffer;->str:Ljava/lang/StringBuilder;
-Landroid/icu/impl/Normalizer2Impl;->addComposites(ILandroid/icu/text/UnicodeSet;)V
-Landroid/icu/impl/Normalizer2Impl;->addToStartSet(Landroid/icu/impl/Trie2Writable;II)V
-Landroid/icu/impl/Normalizer2Impl;->canonIterData:Landroid/icu/impl/Trie2_32;
-Landroid/icu/impl/Normalizer2Impl;->canonStartSets:Ljava/util/ArrayList;
-Landroid/icu/impl/Normalizer2Impl;->CANON_HAS_COMPOSITIONS:I
-Landroid/icu/impl/Normalizer2Impl;->CANON_HAS_SET:I
-Landroid/icu/impl/Normalizer2Impl;->CANON_NOT_SEGMENT_STARTER:I
-Landroid/icu/impl/Normalizer2Impl;->CANON_VALUE_MASK:I
-Landroid/icu/impl/Normalizer2Impl;->centerNoNoDelta:I
-Landroid/icu/impl/Normalizer2Impl;->combine(Ljava/lang/String;II)I
-Landroid/icu/impl/Normalizer2Impl;->dataVersion:Landroid/icu/util/VersionInfo;
-Landroid/icu/impl/Normalizer2Impl;->DATA_FORMAT:I
-Landroid/icu/impl/Normalizer2Impl;->decompose(IILandroid/icu/impl/Normalizer2Impl$ReorderingBuffer;)V
-Landroid/icu/impl/Normalizer2Impl;->decomposeShort(Ljava/lang/CharSequence;IIZZLandroid/icu/impl/Normalizer2Impl$ReorderingBuffer;)I
-Landroid/icu/impl/Normalizer2Impl;->enumLcccRange(IIILandroid/icu/text/UnicodeSet;)V
-Landroid/icu/impl/Normalizer2Impl;->enumNorm16PropertyStartsRange(IIILandroid/icu/text/UnicodeSet;)V
-Landroid/icu/impl/Normalizer2Impl;->extraData:Ljava/lang/String;
-Landroid/icu/impl/Normalizer2Impl;->findNextCompBoundary(Ljava/lang/CharSequence;IIZ)I
-Landroid/icu/impl/Normalizer2Impl;->findNextFCDBoundary(Ljava/lang/CharSequence;II)I
-Landroid/icu/impl/Normalizer2Impl;->findPreviousCompBoundary(Ljava/lang/CharSequence;IZ)I
-Landroid/icu/impl/Normalizer2Impl;->findPreviousFCDBoundary(Ljava/lang/CharSequence;I)I
-Landroid/icu/impl/Normalizer2Impl;->getCCFromNoNo(I)I
-Landroid/icu/impl/Normalizer2Impl;->getCompositionsList(I)I
-Landroid/icu/impl/Normalizer2Impl;->getCompositionsListForComposite(I)I
-Landroid/icu/impl/Normalizer2Impl;->getCompositionsListForDecompYes(I)I
-Landroid/icu/impl/Normalizer2Impl;->getCompositionsListForMaybe(I)I
-Landroid/icu/impl/Normalizer2Impl;->getPreviousTrailCC(Ljava/lang/CharSequence;II)I
-Landroid/icu/impl/Normalizer2Impl;->getTrailCCFromCompYesAndZeroCC(I)I
-Landroid/icu/impl/Normalizer2Impl;->hangulLVT()I
-Landroid/icu/impl/Normalizer2Impl;->hasCompBoundaryAfter(Ljava/lang/CharSequence;IIZ)Z
-Landroid/icu/impl/Normalizer2Impl;->hasCompBoundaryBefore(II)Z
-Landroid/icu/impl/Normalizer2Impl;->hasCompBoundaryBefore(Ljava/lang/CharSequence;II)Z
-Landroid/icu/impl/Normalizer2Impl;->isCompYesAndZeroCC(I)Z
-Landroid/icu/impl/Normalizer2Impl;->isDecompNoAlgorithmic(I)Z
-Landroid/icu/impl/Normalizer2Impl;->isDecompYesAndZeroCC(I)Z
-Landroid/icu/impl/Normalizer2Impl;->isHangulLV(I)Z
-Landroid/icu/impl/Normalizer2Impl;->isHangulLVT(I)Z
-Landroid/icu/impl/Normalizer2Impl;->isInert(I)Z
-Landroid/icu/impl/Normalizer2Impl;->isJamoL(I)Z
-Landroid/icu/impl/Normalizer2Impl;->isJamoVT(I)Z
-Landroid/icu/impl/Normalizer2Impl;->isMaybe(I)Z
-Landroid/icu/impl/Normalizer2Impl;->isMaybeOrNonZeroCC(I)Z
-Landroid/icu/impl/Normalizer2Impl;->isMostDecompYesAndZeroCC(I)Z
-Landroid/icu/impl/Normalizer2Impl;->isTrailCC01ForCompBoundaryAfter(I)Z
-Landroid/icu/impl/Normalizer2Impl;->IS_ACCEPTABLE:Landroid/icu/impl/Normalizer2Impl$IsAcceptable;
-Landroid/icu/impl/Normalizer2Impl;->limitNoNo:I
-Landroid/icu/impl/Normalizer2Impl;->mapAlgorithmic(II)I
-Landroid/icu/impl/Normalizer2Impl;->maybeYesCompositions:Ljava/lang/String;
-Landroid/icu/impl/Normalizer2Impl;->minCompNoMaybeCP:I
-Landroid/icu/impl/Normalizer2Impl;->minDecompNoCP:I
-Landroid/icu/impl/Normalizer2Impl;->minLcccCP:I
-Landroid/icu/impl/Normalizer2Impl;->minMaybeYes:I
-Landroid/icu/impl/Normalizer2Impl;->minNoNo:I
-Landroid/icu/impl/Normalizer2Impl;->minNoNoCompBoundaryBefore:I
-Landroid/icu/impl/Normalizer2Impl;->minNoNoCompNoMaybeCC:I
-Landroid/icu/impl/Normalizer2Impl;->minNoNoEmpty:I
-Landroid/icu/impl/Normalizer2Impl;->minYesNo:I
-Landroid/icu/impl/Normalizer2Impl;->minYesNoMappingsOnly:I
-Landroid/icu/impl/Normalizer2Impl;->norm16HasCompBoundaryAfter(IZ)Z
-Landroid/icu/impl/Normalizer2Impl;->norm16HasCompBoundaryBefore(I)Z
-Landroid/icu/impl/Normalizer2Impl;->normTrie:Landroid/icu/impl/Trie2_16;
-Landroid/icu/impl/Normalizer2Impl;->recompose(Landroid/icu/impl/Normalizer2Impl$ReorderingBuffer;IZ)V
-Landroid/icu/impl/Normalizer2Impl;->segmentStarterMapper:Landroid/icu/impl/Trie2$ValueMapper;
-Landroid/icu/impl/Normalizer2Impl;->smallFCD:[B
-Landroid/icu/impl/number/AffixUtils;->getCodePoint(J)I
-Landroid/icu/impl/number/AffixUtils;->getOffset(J)I
-Landroid/icu/impl/number/AffixUtils;->getState(J)I
-Landroid/icu/impl/number/AffixUtils;->getType(J)I
-Landroid/icu/impl/number/AffixUtils;->makeTag(IIII)J
-Landroid/icu/impl/number/AffixUtils;->STATE_AFTER_QUOTE:I
-Landroid/icu/impl/number/AffixUtils;->STATE_BASE:I
-Landroid/icu/impl/number/AffixUtils;->STATE_FIFTH_CURR:I
-Landroid/icu/impl/number/AffixUtils;->STATE_FIRST_CURR:I
-Landroid/icu/impl/number/AffixUtils;->STATE_FIRST_QUOTE:I
-Landroid/icu/impl/number/AffixUtils;->STATE_FOURTH_CURR:I
-Landroid/icu/impl/number/AffixUtils;->STATE_INSIDE_QUOTE:I
-Landroid/icu/impl/number/AffixUtils;->STATE_OVERFLOW_CURR:I
-Landroid/icu/impl/number/AffixUtils;->STATE_SECOND_CURR:I
-Landroid/icu/impl/number/AffixUtils;->STATE_THIRD_CURR:I
-Landroid/icu/impl/number/AffixUtils;->TYPE_CODEPOINT:I
-Landroid/icu/impl/number/CompactData$CompactDataSink;-><init>(Landroid/icu/impl/number/CompactData;)V
-Landroid/icu/impl/number/CompactData$CompactDataSink;->data:Landroid/icu/impl/number/CompactData;
-Landroid/icu/impl/number/CompactData;->COMPACT_MAX_DIGITS:I
-Landroid/icu/impl/number/CompactData;->countZeros(Ljava/lang/String;)I
-Landroid/icu/impl/number/CompactData;->getIndex(ILandroid/icu/impl/StandardPlural;)I
-Landroid/icu/impl/number/CompactData;->getResourceBundleKey(Ljava/lang/String;Landroid/icu/text/CompactDecimalFormat$CompactStyle;Landroid/icu/impl/number/CompactData$CompactType;Ljava/lang/StringBuilder;)V
-Landroid/icu/impl/number/CompactData;->isEmpty:Z
-Landroid/icu/impl/number/CompactData;->largestMagnitude:B
-Landroid/icu/impl/number/CompactData;->multipliers:[B
-Landroid/icu/impl/number/CompactData;->patterns:[Ljava/lang/String;
-Landroid/icu/impl/number/CompactData;->USE_FALLBACK:Ljava/lang/String;
-Landroid/icu/impl/number/ConstantMultiFieldModifier;->strong:Z
-Landroid/icu/impl/number/DecimalFormatProperties;->compactCustomData:Ljava/util/Map;
-Landroid/icu/impl/number/DecimalFormatProperties;->compactStyle:Landroid/icu/text/CompactDecimalFormat$CompactStyle;
-Landroid/icu/impl/number/DecimalFormatProperties;->currency:Landroid/icu/util/Currency;
-Landroid/icu/impl/number/DecimalFormatProperties;->currencyPluralInfo:Landroid/icu/text/CurrencyPluralInfo;
-Landroid/icu/impl/number/DecimalFormatProperties;->currencyUsage:Landroid/icu/util/Currency$CurrencyUsage;
-Landroid/icu/impl/number/DecimalFormatProperties;->decimalPatternMatchRequired:Z
-Landroid/icu/impl/number/DecimalFormatProperties;->decimalSeparatorAlwaysShown:Z
-Landroid/icu/impl/number/DecimalFormatProperties;->DEFAULT:Landroid/icu/impl/number/DecimalFormatProperties;
-Landroid/icu/impl/number/DecimalFormatProperties;->exponentSignAlwaysShown:Z
-Landroid/icu/impl/number/DecimalFormatProperties;->formatWidth:I
-Landroid/icu/impl/number/DecimalFormatProperties;->groupingSize:I
-Landroid/icu/impl/number/DecimalFormatProperties;->magnitudeMultiplier:I
-Landroid/icu/impl/number/DecimalFormatProperties;->mathContext:Ljava/math/MathContext;
-Landroid/icu/impl/number/DecimalFormatProperties;->maximumFractionDigits:I
-Landroid/icu/impl/number/DecimalFormatProperties;->maximumIntegerDigits:I
-Landroid/icu/impl/number/DecimalFormatProperties;->maximumSignificantDigits:I
-Landroid/icu/impl/number/DecimalFormatProperties;->minimumExponentDigits:I
-Landroid/icu/impl/number/DecimalFormatProperties;->minimumFractionDigits:I
-Landroid/icu/impl/number/DecimalFormatProperties;->minimumGroupingDigits:I
-Landroid/icu/impl/number/DecimalFormatProperties;->minimumIntegerDigits:I
-Landroid/icu/impl/number/DecimalFormatProperties;->minimumSignificantDigits:I
-Landroid/icu/impl/number/DecimalFormatProperties;->multiplier:Ljava/math/BigDecimal;
-Landroid/icu/impl/number/DecimalFormatProperties;->negativePrefix:Ljava/lang/String;
-Landroid/icu/impl/number/DecimalFormatProperties;->negativePrefixPattern:Ljava/lang/String;
-Landroid/icu/impl/number/DecimalFormatProperties;->negativeSuffix:Ljava/lang/String;
-Landroid/icu/impl/number/DecimalFormatProperties;->negativeSuffixPattern:Ljava/lang/String;
-Landroid/icu/impl/number/DecimalFormatProperties;->padPosition:Landroid/icu/impl/number/Padder$PadPosition;
-Landroid/icu/impl/number/DecimalFormatProperties;->padString:Ljava/lang/String;
-Landroid/icu/impl/number/DecimalFormatProperties;->parseCaseSensitive:Z
-Landroid/icu/impl/number/DecimalFormatProperties;->parseGroupingMode:Landroid/icu/impl/number/Parse$GroupingMode;
-Landroid/icu/impl/number/DecimalFormatProperties;->parseIntegerOnly:Z
-Landroid/icu/impl/number/DecimalFormatProperties;->parseMode:Landroid/icu/impl/number/Parse$ParseMode;
-Landroid/icu/impl/number/DecimalFormatProperties;->parseNoExponent:Z
-Landroid/icu/impl/number/DecimalFormatProperties;->parseToBigDecimal:Z
-Landroid/icu/impl/number/DecimalFormatProperties;->pluralRules:Landroid/icu/text/PluralRules;
-Landroid/icu/impl/number/DecimalFormatProperties;->positivePrefix:Ljava/lang/String;
-Landroid/icu/impl/number/DecimalFormatProperties;->positivePrefixPattern:Ljava/lang/String;
-Landroid/icu/impl/number/DecimalFormatProperties;->positiveSuffix:Ljava/lang/String;
-Landroid/icu/impl/number/DecimalFormatProperties;->positiveSuffixPattern:Ljava/lang/String;
-Landroid/icu/impl/number/DecimalFormatProperties;->readObjectImpl(Ljava/io/ObjectInputStream;)V
-Landroid/icu/impl/number/DecimalFormatProperties;->roundingIncrement:Ljava/math/BigDecimal;
-Landroid/icu/impl/number/DecimalFormatProperties;->roundingMode:Ljava/math/RoundingMode;
-Landroid/icu/impl/number/DecimalFormatProperties;->secondaryGroupingSize:I
-Landroid/icu/impl/number/DecimalFormatProperties;->signAlwaysShown:Z
-Landroid/icu/impl/number/DecimalFormatProperties;->writeObjectImpl(Ljava/io/ObjectOutputStream;)V
-Landroid/icu/impl/number/DecimalFormatProperties;->_clear()Landroid/icu/impl/number/DecimalFormatProperties;
-Landroid/icu/impl/number/DecimalFormatProperties;->_copyFrom(Landroid/icu/impl/number/DecimalFormatProperties;)Landroid/icu/impl/number/DecimalFormatProperties;
-Landroid/icu/impl/number/DecimalFormatProperties;->_equals(Landroid/icu/impl/number/DecimalFormatProperties;)Z
-Landroid/icu/impl/number/DecimalFormatProperties;->_equalsHelper(II)Z
-Landroid/icu/impl/number/DecimalFormatProperties;->_equalsHelper(Ljava/lang/Object;Ljava/lang/Object;)Z
-Landroid/icu/impl/number/DecimalFormatProperties;->_equalsHelper(ZZ)Z
-Landroid/icu/impl/number/DecimalFormatProperties;->_hashCode()I
-Landroid/icu/impl/number/DecimalFormatProperties;->_hashCodeHelper(I)I
-Landroid/icu/impl/number/DecimalFormatProperties;->_hashCodeHelper(Ljava/lang/Object;)I
-Landroid/icu/impl/number/DecimalFormatProperties;->_hashCodeHelper(Z)I
-Landroid/icu/impl/number/DecimalQuantity_AbstractBCD;->convertToAccurateDouble()V
-Landroid/icu/impl/number/DecimalQuantity_AbstractBCD;->DOUBLE_MULTIPLIERS:[D
-Landroid/icu/impl/number/DecimalQuantity_AbstractBCD;->fractionCount()I
-Landroid/icu/impl/number/DecimalQuantity_AbstractBCD;->fractionCountWithoutTrailingZeros()I
-Landroid/icu/impl/number/DecimalQuantity_AbstractBCD;->safeSubtract(II)I
-Landroid/icu/impl/number/DecimalQuantity_AbstractBCD;->SECTION_LOWER_EDGE:I
-Landroid/icu/impl/number/DecimalQuantity_AbstractBCD;->SECTION_UPPER_EDGE:I
-Landroid/icu/impl/number/DecimalQuantity_AbstractBCD;->_setToBigDecimal(Ljava/math/BigDecimal;)V
-Landroid/icu/impl/number/DecimalQuantity_AbstractBCD;->_setToBigInteger(Ljava/math/BigInteger;)V
-Landroid/icu/impl/number/DecimalQuantity_AbstractBCD;->_setToDoubleFast(D)V
-Landroid/icu/impl/number/DecimalQuantity_AbstractBCD;->_setToInt(I)V
-Landroid/icu/impl/number/DecimalQuantity_AbstractBCD;->_setToLong(J)V
-Landroid/icu/impl/number/DecimalQuantity_DualStorageBCD;->bcdBytes:[B
-Landroid/icu/impl/number/DecimalQuantity_DualStorageBCD;->bcdLong:J
-Landroid/icu/impl/number/DecimalQuantity_DualStorageBCD;->ensureCapacity()V
-Landroid/icu/impl/number/DecimalQuantity_DualStorageBCD;->ensureCapacity(I)V
-Landroid/icu/impl/number/DecimalQuantity_DualStorageBCD;->switchStorage()V
-Landroid/icu/impl/number/DecimalQuantity_DualStorageBCD;->usingBytes:Z
-Landroid/icu/impl/number/MicroProps;->exhausted:Z
-Landroid/icu/impl/number/MicroProps;->immutable:Z
-Landroid/icu/impl/number/MultiplierImpl;-><init>(Landroid/icu/impl/number/MultiplierImpl;Landroid/icu/impl/number/MicroPropsGenerator;)V
-Landroid/icu/impl/number/MultiplierImpl;->bigDecimalMultiplier:Ljava/math/BigDecimal;
-Landroid/icu/impl/number/MultiplierImpl;->magnitudeMultiplier:I
-Landroid/icu/impl/number/MultiplierImpl;->parent:Landroid/icu/impl/number/MicroPropsGenerator;
-Landroid/icu/impl/number/MutablePatternModifier$ImmutablePatternModifier;-><init>(Landroid/icu/impl/number/ParameterizedModifier;Landroid/icu/text/PluralRules;Landroid/icu/impl/number/MicroPropsGenerator;)V
-Landroid/icu/impl/number/MutablePatternModifier$ImmutablePatternModifier;->parent:Landroid/icu/impl/number/MicroPropsGenerator;
-Landroid/icu/impl/number/MutablePatternModifier$ImmutablePatternModifier;->pm:Landroid/icu/impl/number/ParameterizedModifier;
-Landroid/icu/impl/number/MutablePatternModifier$ImmutablePatternModifier;->rules:Landroid/icu/text/PluralRules;
-Landroid/icu/impl/number/MutablePatternModifier;->createConstantModifier(Landroid/icu/impl/number/NumberStringBuilder;Landroid/icu/impl/number/NumberStringBuilder;)Landroid/icu/impl/number/ConstantMultiFieldModifier;
-Landroid/icu/impl/number/MutablePatternModifier;->currency:Landroid/icu/util/Currency;
-Landroid/icu/impl/number/MutablePatternModifier;->enterCharSequenceMode(Z)V
-Landroid/icu/impl/number/MutablePatternModifier;->exitCharSequenceMode()V
-Landroid/icu/impl/number/MutablePatternModifier;->flags:I
-Landroid/icu/impl/number/MutablePatternModifier;->inCharSequenceMode:Z
-Landroid/icu/impl/number/MutablePatternModifier;->insertPrefix(Landroid/icu/impl/number/NumberStringBuilder;I)I
-Landroid/icu/impl/number/MutablePatternModifier;->insertSuffix(Landroid/icu/impl/number/NumberStringBuilder;I)I
-Landroid/icu/impl/number/MutablePatternModifier;->isNegative:Z
-Landroid/icu/impl/number/MutablePatternModifier;->isStrong:Z
-Landroid/icu/impl/number/MutablePatternModifier;->length:I
-Landroid/icu/impl/number/MutablePatternModifier;->parent:Landroid/icu/impl/number/MicroPropsGenerator;
-Landroid/icu/impl/number/MutablePatternModifier;->patternInfo:Landroid/icu/impl/number/AffixPatternProvider;
-Landroid/icu/impl/number/MutablePatternModifier;->perMilleReplacesPercent:Z
-Landroid/icu/impl/number/MutablePatternModifier;->plural:Landroid/icu/impl/StandardPlural;
-Landroid/icu/impl/number/MutablePatternModifier;->plusReplacesMinusSign:Z
-Landroid/icu/impl/number/MutablePatternModifier;->prependSign:Z
-Landroid/icu/impl/number/MutablePatternModifier;->rules:Landroid/icu/text/PluralRules;
-Landroid/icu/impl/number/MutablePatternModifier;->signDisplay:Landroid/icu/number/NumberFormatter$SignDisplay;
-Landroid/icu/impl/number/MutablePatternModifier;->symbols:Landroid/icu/text/DecimalFormatSymbols;
-Landroid/icu/impl/number/MutablePatternModifier;->unitWidth:Landroid/icu/number/NumberFormatter$UnitWidth;
-Landroid/icu/impl/number/NumberStringBuilder;->chars:[C
-Landroid/icu/impl/number/NumberStringBuilder;->fields:[Landroid/icu/text/NumberFormat$Field;
-Landroid/icu/impl/number/NumberStringBuilder;->fieldToDebugChar:Ljava/util/Map;
-Landroid/icu/impl/number/NumberStringBuilder;->getCapacity()I
-Landroid/icu/impl/number/NumberStringBuilder;->length:I
-Landroid/icu/impl/number/NumberStringBuilder;->prepareForInsert(II)I
-Landroid/icu/impl/number/NumberStringBuilder;->prepareForInsertHelper(II)I
-Landroid/icu/impl/number/NumberStringBuilder;->zero:I
-Landroid/icu/impl/number/Padder;->addPaddingHelper(Ljava/lang/String;ILandroid/icu/impl/number/NumberStringBuilder;I)I
-Landroid/icu/impl/number/Padder;->paddingString:Ljava/lang/String;
-Landroid/icu/impl/number/Padder;->position:Landroid/icu/impl/number/Padder$PadPosition;
-Landroid/icu/impl/number/Padder;->targetWidth:I
-Landroid/icu/impl/number/ParameterizedModifier;->frozen:Z
-Landroid/icu/impl/number/ParameterizedModifier;->getModIndex(ZLandroid/icu/impl/StandardPlural;)I
-Landroid/icu/impl/number/ParameterizedModifier;->mods:[Landroid/icu/impl/number/Modifier;
-Landroid/icu/impl/number/ParameterizedModifier;->negative:Landroid/icu/impl/number/Modifier;
-Landroid/icu/impl/number/ParameterizedModifier;->positive:Landroid/icu/impl/number/Modifier;
-Landroid/icu/impl/number/Parse$AffixHolder;-><init>(Ljava/lang/String;Ljava/lang/String;ZZ)V
-Landroid/icu/impl/number/Parse$AffixHolder;->addToState(Landroid/icu/impl/number/Parse$ParserState;Landroid/icu/impl/number/DecimalFormatProperties;)V
-Landroid/icu/impl/number/Parse$AffixHolder;->EMPTY_NEGATIVE:Landroid/icu/impl/number/Parse$AffixHolder;
-Landroid/icu/impl/number/Parse$AffixHolder;->EMPTY_POSITIVE:Landroid/icu/impl/number/Parse$AffixHolder;
-Landroid/icu/impl/number/Parse$AffixHolder;->fromPropertiesNegativePattern(Landroid/icu/impl/number/DecimalFormatProperties;)Landroid/icu/impl/number/Parse$AffixHolder;
-Landroid/icu/impl/number/Parse$AffixHolder;->fromPropertiesNegativeString(Landroid/icu/impl/number/DecimalFormatProperties;)Landroid/icu/impl/number/Parse$AffixHolder;
-Landroid/icu/impl/number/Parse$AffixHolder;->fromPropertiesPositivePattern(Landroid/icu/impl/number/DecimalFormatProperties;)Landroid/icu/impl/number/Parse$AffixHolder;
-Landroid/icu/impl/number/Parse$AffixHolder;->fromPropertiesPositiveString(Landroid/icu/impl/number/DecimalFormatProperties;)Landroid/icu/impl/number/Parse$AffixHolder;
-Landroid/icu/impl/number/Parse$AffixHolder;->getInstance(Ljava/lang/String;Ljava/lang/String;ZZ)Landroid/icu/impl/number/Parse$AffixHolder;
-Landroid/icu/impl/number/Parse$AffixHolder;->negative:Z
-Landroid/icu/impl/number/Parse$AffixHolder;->p:Ljava/lang/String;
-Landroid/icu/impl/number/Parse$AffixHolder;->s:Ljava/lang/String;
-Landroid/icu/impl/number/Parse$AffixHolder;->strings:Z
-Landroid/icu/impl/number/Parse$CurrencyAffixPatterns;-><init>(Landroid/icu/util/ULocale;)V
-Landroid/icu/impl/number/Parse$CurrencyAffixPatterns;->addPattern(Ljava/lang/String;)V
-Landroid/icu/impl/number/Parse$CurrencyAffixPatterns;->addToState(Landroid/icu/util/ULocale;Landroid/icu/impl/number/Parse$ParserState;)V
-Landroid/icu/impl/number/Parse$CurrencyAffixPatterns;->currencyAffixPatterns:Ljava/util/concurrent/ConcurrentHashMap;
-Landroid/icu/impl/number/Parse$CurrencyAffixPatterns;->set:Ljava/util/Set;
-Landroid/icu/impl/number/Parse$CurrencyAffixPatterns;->threadLocalProperties:Ljava/lang/ThreadLocal;
-Landroid/icu/impl/number/Parse$DigitType;->EXPONENT:Landroid/icu/impl/number/Parse$DigitType;
-Landroid/icu/impl/number/Parse$DigitType;->FRACTION:Landroid/icu/impl/number/Parse$DigitType;
-Landroid/icu/impl/number/Parse$DigitType;->INTEGER:Landroid/icu/impl/number/Parse$DigitType;
-Landroid/icu/impl/number/Parse$DigitType;->valueOf(Ljava/lang/String;)Landroid/icu/impl/number/Parse$DigitType;
-Landroid/icu/impl/number/Parse$DigitType;->values()[Landroid/icu/impl/number/Parse$DigitType;
-Landroid/icu/impl/number/Parse$ParserState;-><init>()V
-Landroid/icu/impl/number/Parse$ParserState;->affixHolders:Ljava/util/Set;
-Landroid/icu/impl/number/Parse$ParserState;->caseSensitive:Z
-Landroid/icu/impl/number/Parse$ParserState;->clear()Landroid/icu/impl/number/Parse$ParserState;
-Landroid/icu/impl/number/Parse$ParserState;->decimalCp1:I
-Landroid/icu/impl/number/Parse$ParserState;->decimalCp2:I
-Landroid/icu/impl/number/Parse$ParserState;->decimalType1:Landroid/icu/impl/number/Parse$SeparatorType;
-Landroid/icu/impl/number/Parse$ParserState;->decimalType2:Landroid/icu/impl/number/Parse$SeparatorType;
-Landroid/icu/impl/number/Parse$ParserState;->digitTrie:Landroid/icu/impl/TextTrieMap;
-Landroid/icu/impl/number/Parse$ParserState;->getItem(I)Landroid/icu/impl/number/Parse$StateItem;
-Landroid/icu/impl/number/Parse$ParserState;->getNext()Landroid/icu/impl/number/Parse$StateItem;
-Landroid/icu/impl/number/Parse$ParserState;->groupingCp1:I
-Landroid/icu/impl/number/Parse$ParserState;->groupingCp2:I
-Landroid/icu/impl/number/Parse$ParserState;->groupingMode:Landroid/icu/impl/number/Parse$GroupingMode;
-Landroid/icu/impl/number/Parse$ParserState;->groupingType1:Landroid/icu/impl/number/Parse$SeparatorType;
-Landroid/icu/impl/number/Parse$ParserState;->groupingType2:Landroid/icu/impl/number/Parse$SeparatorType;
-Landroid/icu/impl/number/Parse$ParserState;->items:[Landroid/icu/impl/number/Parse$StateItem;
-Landroid/icu/impl/number/Parse$ParserState;->lastInsertedIndex()I
-Landroid/icu/impl/number/Parse$ParserState;->length:I
-Landroid/icu/impl/number/Parse$ParserState;->mode:Landroid/icu/impl/number/Parse$ParseMode;
-Landroid/icu/impl/number/Parse$ParserState;->parseCurrency:Z
-Landroid/icu/impl/number/Parse$ParserState;->prevItems:[Landroid/icu/impl/number/Parse$StateItem;
-Landroid/icu/impl/number/Parse$ParserState;->prevLength:I
-Landroid/icu/impl/number/Parse$ParserState;->properties:Landroid/icu/impl/number/DecimalFormatProperties;
-Landroid/icu/impl/number/Parse$ParserState;->swap()V
-Landroid/icu/impl/number/Parse$ParserState;->swapBack()V
-Landroid/icu/impl/number/Parse$ParserState;->symbols:Landroid/icu/text/DecimalFormatSymbols;
-Landroid/icu/impl/number/Parse$SeparatorType;->COMMA_LIKE:Landroid/icu/impl/number/Parse$SeparatorType;
-Landroid/icu/impl/number/Parse$SeparatorType;->fromCp(ILandroid/icu/impl/number/Parse$ParseMode;)Landroid/icu/impl/number/Parse$SeparatorType;
-Landroid/icu/impl/number/Parse$SeparatorType;->OTHER_GROUPING:Landroid/icu/impl/number/Parse$SeparatorType;
-Landroid/icu/impl/number/Parse$SeparatorType;->PERIOD_LIKE:Landroid/icu/impl/number/Parse$SeparatorType;
-Landroid/icu/impl/number/Parse$SeparatorType;->UNKNOWN:Landroid/icu/impl/number/Parse$SeparatorType;
-Landroid/icu/impl/number/Parse$SeparatorType;->valueOf(Ljava/lang/String;)Landroid/icu/impl/number/Parse$SeparatorType;
-Landroid/icu/impl/number/Parse$SeparatorType;->values()[Landroid/icu/impl/number/Parse$SeparatorType;
-Landroid/icu/impl/number/Parse$StateItem;-><init>(C)V
-Landroid/icu/impl/number/Parse$StateItem;->affix:Landroid/icu/impl/number/Parse$AffixHolder;
-Landroid/icu/impl/number/Parse$StateItem;->appendDigit(BLandroid/icu/impl/number/Parse$DigitType;)V
-Landroid/icu/impl/number/Parse$StateItem;->clear()Landroid/icu/impl/number/Parse$StateItem;
-Landroid/icu/impl/number/Parse$StateItem;->copyFrom(Landroid/icu/impl/number/Parse$StateItem;Landroid/icu/impl/number/Parse$StateName;I)Landroid/icu/impl/number/Parse$StateItem;
-Landroid/icu/impl/number/Parse$StateItem;->currentAffixPattern:Ljava/lang/CharSequence;
-Landroid/icu/impl/number/Parse$StateItem;->currentCurrencyTrieState:Landroid/icu/impl/TextTrieMap$ParseState;
-Landroid/icu/impl/number/Parse$StateItem;->currentDigitTrieState:Landroid/icu/impl/TextTrieMap$ParseState;
-Landroid/icu/impl/number/Parse$StateItem;->currentDigitType:Landroid/icu/impl/number/Parse$DigitType;
-Landroid/icu/impl/number/Parse$StateItem;->currentOffset:I
-Landroid/icu/impl/number/Parse$StateItem;->currentStepwiseParserTag:J
-Landroid/icu/impl/number/Parse$StateItem;->currentString:Ljava/lang/CharSequence;
-Landroid/icu/impl/number/Parse$StateItem;->currentTrailing:Z
-Landroid/icu/impl/number/Parse$StateItem;->exponent:I
-Landroid/icu/impl/number/Parse$StateItem;->fq:Landroid/icu/impl/number/DecimalQuantity_DualStorageBCD;
-Landroid/icu/impl/number/Parse$StateItem;->groupingCp:I
-Landroid/icu/impl/number/Parse$StateItem;->groupingWidths:J
-Landroid/icu/impl/number/Parse$StateItem;->hasNumber()Z
-Landroid/icu/impl/number/Parse$StateItem;->id:C
-Landroid/icu/impl/number/Parse$StateItem;->isoCode:Ljava/lang/String;
-Landroid/icu/impl/number/Parse$StateItem;->name:Landroid/icu/impl/number/Parse$StateName;
-Landroid/icu/impl/number/Parse$StateItem;->numDigits:I
-Landroid/icu/impl/number/Parse$StateItem;->path:Ljava/lang/String;
-Landroid/icu/impl/number/Parse$StateItem;->returnTo1:Landroid/icu/impl/number/Parse$StateName;
-Landroid/icu/impl/number/Parse$StateItem;->returnTo2:Landroid/icu/impl/number/Parse$StateName;
-Landroid/icu/impl/number/Parse$StateItem;->sawCurrency:Z
-Landroid/icu/impl/number/Parse$StateItem;->sawDecimalPoint:Z
-Landroid/icu/impl/number/Parse$StateItem;->sawExponentDigit:Z
-Landroid/icu/impl/number/Parse$StateItem;->sawInfinity:Z
-Landroid/icu/impl/number/Parse$StateItem;->sawNaN:Z
-Landroid/icu/impl/number/Parse$StateItem;->sawNegative:Z
-Landroid/icu/impl/number/Parse$StateItem;->sawNegativeExponent:Z
-Landroid/icu/impl/number/Parse$StateItem;->sawPrefix:Z
-Landroid/icu/impl/number/Parse$StateItem;->sawSuffix:Z
-Landroid/icu/impl/number/Parse$StateItem;->score:I
-Landroid/icu/impl/number/Parse$StateItem;->toCurrencyAmount(Landroid/icu/impl/number/DecimalFormatProperties;)Landroid/icu/util/CurrencyAmount;
-Landroid/icu/impl/number/Parse$StateItem;->toNumber(Landroid/icu/impl/number/DecimalFormatProperties;)Ljava/lang/Number;
-Landroid/icu/impl/number/Parse$StateItem;->trailingCount:I
-Landroid/icu/impl/number/Parse$StateItem;->trailingZeros:I
-Landroid/icu/impl/number/Parse$StateName;->AFTER_EXPONENT_DIGIT:Landroid/icu/impl/number/Parse$StateName;
-Landroid/icu/impl/number/Parse$StateName;->AFTER_EXPONENT_SEPARATOR:Landroid/icu/impl/number/Parse$StateName;
-Landroid/icu/impl/number/Parse$StateName;->AFTER_FRACTION_DIGIT:Landroid/icu/impl/number/Parse$StateName;
-Landroid/icu/impl/number/Parse$StateName;->AFTER_INTEGER_DIGIT:Landroid/icu/impl/number/Parse$StateName;
-Landroid/icu/impl/number/Parse$StateName;->AFTER_PREFIX:Landroid/icu/impl/number/Parse$StateName;
-Landroid/icu/impl/number/Parse$StateName;->AFTER_SUFFIX:Landroid/icu/impl/number/Parse$StateName;
-Landroid/icu/impl/number/Parse$StateName;->BEFORE_PREFIX:Landroid/icu/impl/number/Parse$StateName;
-Landroid/icu/impl/number/Parse$StateName;->BEFORE_SUFFIX:Landroid/icu/impl/number/Parse$StateName;
-Landroid/icu/impl/number/Parse$StateName;->BEFORE_SUFFIX_SEEN_EXPONENT:Landroid/icu/impl/number/Parse$StateName;
-Landroid/icu/impl/number/Parse$StateName;->INSIDE_AFFIX_PATTERN:Landroid/icu/impl/number/Parse$StateName;
-Landroid/icu/impl/number/Parse$StateName;->INSIDE_CURRENCY:Landroid/icu/impl/number/Parse$StateName;
-Landroid/icu/impl/number/Parse$StateName;->INSIDE_DIGIT:Landroid/icu/impl/number/Parse$StateName;
-Landroid/icu/impl/number/Parse$StateName;->INSIDE_STRING:Landroid/icu/impl/number/Parse$StateName;
-Landroid/icu/impl/number/Parse$StateName;->valueOf(Ljava/lang/String;)Landroid/icu/impl/number/Parse$StateName;
-Landroid/icu/impl/number/Parse$StateName;->values()[Landroid/icu/impl/number/Parse$StateName;
-Landroid/icu/impl/number/Parse;->acceptAffixHolder(ILandroid/icu/impl/number/Parse$StateName;Landroid/icu/impl/number/Parse$ParserState;Landroid/icu/impl/number/Parse$StateItem;Landroid/icu/impl/number/Parse$AffixHolder;Z)V
-Landroid/icu/impl/number/Parse;->acceptAffixPattern(ILandroid/icu/impl/number/Parse$StateName;Landroid/icu/impl/number/Parse$ParserState;Landroid/icu/impl/number/Parse$StateItem;Ljava/lang/CharSequence;J)J
-Landroid/icu/impl/number/Parse;->acceptAffixPatternHelper(ILandroid/icu/impl/number/Parse$StateName;Landroid/icu/impl/number/Parse$ParserState;Landroid/icu/impl/number/Parse$StateItem;Ljava/lang/CharSequence;J)J
-Landroid/icu/impl/number/Parse;->acceptAffixPatternNonIgnorable(ILandroid/icu/impl/number/Parse$StateName;Landroid/icu/impl/number/Parse$ParserState;Landroid/icu/impl/number/Parse$StateItem;Ljava/lang/CharSequence;IJJ)J
-Landroid/icu/impl/number/Parse;->acceptAffixPatternOffset(ILandroid/icu/impl/number/Parse$ParserState;Landroid/icu/impl/number/Parse$StateItem;)J
-Landroid/icu/impl/number/Parse;->acceptBidi(ILandroid/icu/impl/number/Parse$StateName;Landroid/icu/impl/number/Parse$ParserState;Landroid/icu/impl/number/Parse$StateItem;)V
-Landroid/icu/impl/number/Parse;->acceptCurrency(ILandroid/icu/impl/number/Parse$StateName;Landroid/icu/impl/number/Parse$ParserState;Landroid/icu/impl/number/Parse$StateItem;)V
-Landroid/icu/impl/number/Parse;->acceptCurrency(ILandroid/icu/impl/number/Parse$StateName;Landroid/icu/impl/number/Parse$StateName;Landroid/icu/impl/number/Parse$ParserState;Landroid/icu/impl/number/Parse$StateItem;)J
-Landroid/icu/impl/number/Parse;->acceptCurrencyHelper(ILandroid/icu/impl/number/Parse$StateName;Landroid/icu/impl/number/Parse$StateName;Landroid/icu/impl/number/Parse$ParserState;Landroid/icu/impl/number/Parse$StateItem;Landroid/icu/impl/TextTrieMap$ParseState;)J
-Landroid/icu/impl/number/Parse;->acceptCurrencyOffset(ILandroid/icu/impl/number/Parse$ParserState;Landroid/icu/impl/number/Parse$StateItem;)V
-Landroid/icu/impl/number/Parse;->acceptDecimalPoint(ILandroid/icu/impl/number/Parse$StateName;Landroid/icu/impl/number/Parse$ParserState;Landroid/icu/impl/number/Parse$StateItem;)V
-Landroid/icu/impl/number/Parse;->acceptDigitHelper(ILandroid/icu/impl/number/Parse$StateName;Landroid/icu/impl/number/Parse$ParserState;Landroid/icu/impl/number/Parse$StateItem;Landroid/icu/impl/number/Parse$DigitType;)V
-Landroid/icu/impl/number/Parse;->acceptDigitTrie(ILandroid/icu/impl/number/Parse$StateName;Landroid/icu/impl/number/Parse$ParserState;Landroid/icu/impl/number/Parse$StateItem;Landroid/icu/impl/number/Parse$DigitType;)J
-Landroid/icu/impl/number/Parse;->acceptDigitTrieHelper(ILandroid/icu/impl/number/Parse$StateName;Landroid/icu/impl/number/Parse$ParserState;Landroid/icu/impl/number/Parse$StateItem;Landroid/icu/impl/number/Parse$DigitType;Landroid/icu/impl/TextTrieMap$ParseState;)J
-Landroid/icu/impl/number/Parse;->acceptDigitTrieOffset(ILandroid/icu/impl/number/Parse$ParserState;Landroid/icu/impl/number/Parse$StateItem;)V
-Landroid/icu/impl/number/Parse;->acceptExponentDigit(ILandroid/icu/impl/number/Parse$StateName;Landroid/icu/impl/number/Parse$ParserState;Landroid/icu/impl/number/Parse$StateItem;)V
-Landroid/icu/impl/number/Parse;->acceptExponentSeparator(ILandroid/icu/impl/number/Parse$StateName;Landroid/icu/impl/number/Parse$ParserState;Landroid/icu/impl/number/Parse$StateItem;)V
-Landroid/icu/impl/number/Parse;->acceptFractionDigit(ILandroid/icu/impl/number/Parse$StateName;Landroid/icu/impl/number/Parse$ParserState;Landroid/icu/impl/number/Parse$StateItem;)V
-Landroid/icu/impl/number/Parse;->acceptGrouping(ILandroid/icu/impl/number/Parse$StateName;Landroid/icu/impl/number/Parse$ParserState;Landroid/icu/impl/number/Parse$StateItem;)V
-Landroid/icu/impl/number/Parse;->acceptInfinity(ILandroid/icu/impl/number/Parse$StateName;Landroid/icu/impl/number/Parse$ParserState;Landroid/icu/impl/number/Parse$StateItem;)V
-Landroid/icu/impl/number/Parse;->acceptIntegerDigit(ILandroid/icu/impl/number/Parse$StateName;Landroid/icu/impl/number/Parse$ParserState;Landroid/icu/impl/number/Parse$StateItem;)V
-Landroid/icu/impl/number/Parse;->acceptMinusOrPlusSign(ILandroid/icu/impl/number/Parse$StateName;Landroid/icu/impl/number/Parse$ParserState;Landroid/icu/impl/number/Parse$StateItem;Z)V
-Landroid/icu/impl/number/Parse;->acceptMinusSign(ILandroid/icu/impl/number/Parse$StateName;Landroid/icu/impl/number/Parse$StateName;Landroid/icu/impl/number/Parse$ParserState;Landroid/icu/impl/number/Parse$StateItem;Z)J
-Landroid/icu/impl/number/Parse;->acceptNan(ILandroid/icu/impl/number/Parse$StateName;Landroid/icu/impl/number/Parse$ParserState;Landroid/icu/impl/number/Parse$StateItem;)V
-Landroid/icu/impl/number/Parse;->acceptPadding(ILandroid/icu/impl/number/Parse$StateName;Landroid/icu/impl/number/Parse$ParserState;Landroid/icu/impl/number/Parse$StateItem;)V
-Landroid/icu/impl/number/Parse;->acceptPlusSign(ILandroid/icu/impl/number/Parse$StateName;Landroid/icu/impl/number/Parse$StateName;Landroid/icu/impl/number/Parse$ParserState;Landroid/icu/impl/number/Parse$StateItem;Z)J
-Landroid/icu/impl/number/Parse;->acceptPrefix(ILandroid/icu/impl/number/Parse$StateName;Landroid/icu/impl/number/Parse$ParserState;Landroid/icu/impl/number/Parse$StateItem;)V
-Landroid/icu/impl/number/Parse;->acceptString(ILandroid/icu/impl/number/Parse$StateName;Landroid/icu/impl/number/Parse$StateName;Landroid/icu/impl/number/Parse$ParserState;Landroid/icu/impl/number/Parse$StateItem;Ljava/lang/CharSequence;IZ)J
-Landroid/icu/impl/number/Parse;->acceptStringHelper(ILandroid/icu/impl/number/Parse$StateName;Landroid/icu/impl/number/Parse$StateName;Landroid/icu/impl/number/Parse$ParserState;Landroid/icu/impl/number/Parse$StateItem;Ljava/lang/CharSequence;IZ)J
-Landroid/icu/impl/number/Parse;->acceptStringNonIgnorable(ILandroid/icu/impl/number/Parse$StateName;Landroid/icu/impl/number/Parse$StateName;Landroid/icu/impl/number/Parse$ParserState;Landroid/icu/impl/number/Parse$StateItem;Ljava/lang/CharSequence;ZIJJ)J
-Landroid/icu/impl/number/Parse;->acceptStringOffset(ILandroid/icu/impl/number/Parse$ParserState;Landroid/icu/impl/number/Parse$StateItem;)J
-Landroid/icu/impl/number/Parse;->acceptStringOrAffixPatternWithIgnorables(ILandroid/icu/impl/number/Parse$StateName;Landroid/icu/impl/number/Parse$StateName;Landroid/icu/impl/number/Parse$ParserState;Landroid/icu/impl/number/Parse$StateItem;Ljava/lang/CharSequence;JZZ)J
-Landroid/icu/impl/number/Parse;->acceptSuffix(ILandroid/icu/impl/number/Parse$StateName;Landroid/icu/impl/number/Parse$ParserState;Landroid/icu/impl/number/Parse$StateItem;)V
-Landroid/icu/impl/number/Parse;->acceptWhitespace(ILandroid/icu/impl/number/Parse$StateName;Landroid/icu/impl/number/Parse$ParserState;Landroid/icu/impl/number/Parse$StateItem;)V
-Landroid/icu/impl/number/Parse;->codePointEquals(IILandroid/icu/impl/number/Parse$ParserState;)Z
-Landroid/icu/impl/number/Parse;->isIgnorable(ILandroid/icu/impl/number/Parse$ParserState;)Z
-Landroid/icu/impl/number/Parse;->makeDigitTrie([Ljava/lang/String;)Landroid/icu/impl/TextTrieMap;
-Landroid/icu/impl/number/Parse;->MAX_LONG_AS_BIG_DECIMAL:Ljava/math/BigDecimal;
-Landroid/icu/impl/number/Parse;->MIN_LONG_AS_BIG_DECIMAL:Ljava/math/BigDecimal;
-Landroid/icu/impl/number/Parse;->recordDigit(Landroid/icu/impl/number/Parse$StateItem;BLandroid/icu/impl/number/Parse$DigitType;)V
-Landroid/icu/impl/number/Parse;->UNISET_BIDI:Landroid/icu/text/UnicodeSet;
-Landroid/icu/impl/number/Parse;->UNISET_COMMA_LIKE:Landroid/icu/text/UnicodeSet;
-Landroid/icu/impl/number/Parse;->UNISET_OTHER_GROUPING_SEPARATORS:Landroid/icu/text/UnicodeSet;
-Landroid/icu/impl/number/Parse;->UNISET_PERIOD_LIKE:Landroid/icu/text/UnicodeSet;
-Landroid/icu/impl/number/Parse;->UNISET_STRICT_COMMA_LIKE:Landroid/icu/text/UnicodeSet;
-Landroid/icu/impl/number/Parse;->UNISET_STRICT_PERIOD_LIKE:Landroid/icu/text/UnicodeSet;
-Landroid/icu/impl/number/Parse;->UNISET_WHITESPACE:Landroid/icu/text/UnicodeSet;
-Landroid/icu/impl/number/Parse;->_parse(Ljava/lang/CharSequence;Ljava/text/ParsePosition;ZLandroid/icu/impl/number/DecimalFormatProperties;Landroid/icu/text/DecimalFormatSymbols;)Landroid/icu/impl/number/Parse$StateItem;
-Landroid/icu/impl/number/PatternStringParser$ParsedPatternInfo;-><init>(Ljava/lang/String;)V
-Landroid/icu/impl/number/PatternStringParser$ParsedPatternInfo;->getEndpoints(I)J
-Landroid/icu/impl/number/PatternStringParser$ParserState;-><init>(Ljava/lang/String;)V
-Landroid/icu/impl/number/PatternStringParser$ParserState;->next()I
-Landroid/icu/impl/number/PatternStringParser$ParserState;->offset:I
-Landroid/icu/impl/number/PatternStringParser$ParserState;->pattern:Ljava/lang/String;
-Landroid/icu/impl/number/PatternStringParser$ParserState;->peek()I
-Landroid/icu/impl/number/PatternStringParser$ParserState;->toParseException(Ljava/lang/String;)Ljava/lang/IllegalArgumentException;
-Landroid/icu/impl/number/PatternStringParser;->consumeAffix(Landroid/icu/impl/number/PatternStringParser$ParserState;Landroid/icu/impl/number/PatternStringParser$ParsedSubpatternInfo;)J
-Landroid/icu/impl/number/PatternStringParser;->consumeExponent(Landroid/icu/impl/number/PatternStringParser$ParserState;Landroid/icu/impl/number/PatternStringParser$ParsedSubpatternInfo;)V
-Landroid/icu/impl/number/PatternStringParser;->consumeFormat(Landroid/icu/impl/number/PatternStringParser$ParserState;Landroid/icu/impl/number/PatternStringParser$ParsedSubpatternInfo;)V
-Landroid/icu/impl/number/PatternStringParser;->consumeFractionFormat(Landroid/icu/impl/number/PatternStringParser$ParserState;Landroid/icu/impl/number/PatternStringParser$ParsedSubpatternInfo;)V
-Landroid/icu/impl/number/PatternStringParser;->consumeIntegerFormat(Landroid/icu/impl/number/PatternStringParser$ParserState;Landroid/icu/impl/number/PatternStringParser$ParsedSubpatternInfo;)V
-Landroid/icu/impl/number/PatternStringParser;->consumeLiteral(Landroid/icu/impl/number/PatternStringParser$ParserState;)V
-Landroid/icu/impl/number/PatternStringParser;->consumePadding(Landroid/icu/impl/number/PatternStringParser$ParserState;Landroid/icu/impl/number/PatternStringParser$ParsedSubpatternInfo;Landroid/icu/impl/number/Padder$PadPosition;)V
-Landroid/icu/impl/number/PatternStringParser;->consumePattern(Landroid/icu/impl/number/PatternStringParser$ParserState;Landroid/icu/impl/number/PatternStringParser$ParsedPatternInfo;)V
-Landroid/icu/impl/number/PatternStringParser;->consumeSubpattern(Landroid/icu/impl/number/PatternStringParser$ParserState;Landroid/icu/impl/number/PatternStringParser$ParsedSubpatternInfo;)V
-Landroid/icu/impl/number/PatternStringParser;->parseToExistingPropertiesImpl(Ljava/lang/String;Landroid/icu/impl/number/DecimalFormatProperties;I)V
-Landroid/icu/impl/number/PatternStringParser;->patternInfoToProperties(Landroid/icu/impl/number/DecimalFormatProperties;Landroid/icu/impl/number/PatternStringParser$ParsedPatternInfo;I)V
-Landroid/icu/impl/PatternTokenizer;->AFTER_QUOTE:I
-Landroid/icu/impl/PatternTokenizer;->appendEscaped(Ljava/lang/StringBuffer;I)V
-Landroid/icu/impl/PatternTokenizer;->escapeCharacters:Landroid/icu/text/UnicodeSet;
-Landroid/icu/impl/PatternTokenizer;->extraQuotingCharacters:Landroid/icu/text/UnicodeSet;
-Landroid/icu/impl/PatternTokenizer;->HEX:I
-Landroid/icu/impl/PatternTokenizer;->ignorableCharacters:Landroid/icu/text/UnicodeSet;
-Landroid/icu/impl/PatternTokenizer;->IN_QUOTE:I
-Landroid/icu/impl/PatternTokenizer;->limit:I
-Landroid/icu/impl/PatternTokenizer;->needingQuoteCharacters:Landroid/icu/text/UnicodeSet;
-Landroid/icu/impl/PatternTokenizer;->NONE:I
-Landroid/icu/impl/PatternTokenizer;->NORMAL_QUOTE:I
-Landroid/icu/impl/PatternTokenizer;->NO_QUOTE:I
-Landroid/icu/impl/PatternTokenizer;->pattern:Ljava/lang/String;
-Landroid/icu/impl/PatternTokenizer;->SLASH_START:I
-Landroid/icu/impl/PatternTokenizer;->start:I
-Landroid/icu/impl/PatternTokenizer;->START_QUOTE:I
-Landroid/icu/impl/PatternTokenizer;->syntaxCharacters:Landroid/icu/text/UnicodeSet;
-Landroid/icu/impl/PatternTokenizer;->usingQuote:Z
-Landroid/icu/impl/PatternTokenizer;->usingSlash:Z
-Landroid/icu/impl/PluralRulesLoader;-><init>()V
-Landroid/icu/impl/PluralRulesLoader;->checkBuildRulesIdMaps()V
-Landroid/icu/impl/PluralRulesLoader;->getLocaleIdToRulesIdMap(Landroid/icu/text/PluralRules$PluralType;)Ljava/util/Map;
-Landroid/icu/impl/PluralRulesLoader;->getRulesIdToEquivalentULocaleMap()Ljava/util/Map;
-Landroid/icu/impl/PluralRulesLoader;->localeIdToCardinalRulesId:Ljava/util/Map;
-Landroid/icu/impl/PluralRulesLoader;->localeIdToOrdinalRulesId:Ljava/util/Map;
-Landroid/icu/impl/PluralRulesLoader;->localeIdToPluralRanges:Ljava/util/Map;
-Landroid/icu/impl/PluralRulesLoader;->rulesIdToEquivalentULocale:Ljava/util/Map;
-Landroid/icu/impl/PluralRulesLoader;->rulesIdToRules:Ljava/util/Map;
-Landroid/icu/impl/PluralRulesLoader;->UNKNOWN_RANGE:Landroid/icu/text/PluralRanges;
-Landroid/icu/impl/Relation$SimpleEntry;-><init>(Ljava/lang/Object;Ljava/lang/Object;)V
-Landroid/icu/impl/Relation$SimpleEntry;-><init>(Ljava/util/Map$Entry;)V
-Landroid/icu/impl/Relation$SimpleEntry;->key:Ljava/lang/Object;
-Landroid/icu/impl/Relation$SimpleEntry;->value:Ljava/lang/Object;
-Landroid/icu/impl/Relation;->data:Ljava/util/Map;
-Landroid/icu/impl/Relation;->frozen:Z
-Landroid/icu/impl/Relation;->newSet()Ljava/util/Set;
-Landroid/icu/impl/Relation;->setComparatorParam:[Ljava/lang/Object;
-Landroid/icu/impl/Relation;->setCreator:Ljava/lang/reflect/Constructor;
-Landroid/icu/impl/RuleCharacterIterator;->buf:[C
-Landroid/icu/impl/RuleCharacterIterator;->bufPos:I
-Landroid/icu/impl/RuleCharacterIterator;->isEscaped:Z
-Landroid/icu/impl/RuleCharacterIterator;->pos:Ljava/text/ParsePosition;
-Landroid/icu/impl/RuleCharacterIterator;->sym:Landroid/icu/text/SymbolTable;
-Landroid/icu/impl/RuleCharacterIterator;->text:Ljava/lang/String;
-Landroid/icu/impl/RuleCharacterIterator;->_advance(I)V
-Landroid/icu/impl/RuleCharacterIterator;->_current()I
-Landroid/icu/impl/SimpleCache;->cacheRef:Ljava/lang/ref/Reference;
-Landroid/icu/impl/SimpleCache;->capacity:I
-Landroid/icu/impl/SimpleCache;->DEFAULT_CAPACITY:I
-Landroid/icu/impl/SimpleCache;->type:I
-Landroid/icu/impl/SoftCache;->map:Ljava/util/concurrent/ConcurrentHashMap;
-Landroid/icu/impl/StandardPlural;->keyword:Ljava/lang/String;
-Landroid/icu/impl/TextTrieMap$CharIterator;-><init>(Ljava/lang/CharSequence;IZ)V
-Landroid/icu/impl/TextTrieMap$CharIterator;->_ignoreCase:Z
-Landroid/icu/impl/TextTrieMap$CharIterator;->_nextIdx:I
-Landroid/icu/impl/TextTrieMap$CharIterator;->_remainingChar:Ljava/lang/Character;
-Landroid/icu/impl/TextTrieMap$CharIterator;->_startIdx:I
-Landroid/icu/impl/TextTrieMap$CharIterator;->_text:Ljava/lang/CharSequence;
-Landroid/icu/impl/TextTrieMap$LongestMatchHandler;-><init>()V
-Landroid/icu/impl/TextTrieMap$LongestMatchHandler;->getMatches()Ljava/util/Iterator;
-Landroid/icu/impl/TextTrieMap$LongestMatchHandler;->getMatchLength()I
-Landroid/icu/impl/TextTrieMap$LongestMatchHandler;->length:I
-Landroid/icu/impl/TextTrieMap$LongestMatchHandler;->matches:Ljava/util/Iterator;
-Landroid/icu/impl/TextTrieMap$Node$StepResult;->node:Landroid/icu/impl/TextTrieMap$Node;
-Landroid/icu/impl/TextTrieMap$Node$StepResult;->offset:I
-Landroid/icu/impl/TextTrieMap$Node;->add(Landroid/icu/impl/TextTrieMap$CharIterator;Ljava/lang/Object;)V
-Landroid/icu/impl/TextTrieMap$Node;->add([CILjava/lang/Object;)V
-Landroid/icu/impl/TextTrieMap$Node;->addValue(Ljava/util/List;Ljava/lang/Object;)Ljava/util/List;
-Landroid/icu/impl/TextTrieMap$Node;->charCount()I
-Landroid/icu/impl/TextTrieMap$Node;->findMatch(Landroid/icu/impl/TextTrieMap$CharIterator;)Landroid/icu/impl/TextTrieMap$Node;
-Landroid/icu/impl/TextTrieMap$Node;->hasChildFor(C)Z
-Landroid/icu/impl/TextTrieMap$Node;->lenMatches([CI)I
-Landroid/icu/impl/TextTrieMap$Node;->matchFollowing(Landroid/icu/impl/TextTrieMap$CharIterator;)Z
-Landroid/icu/impl/TextTrieMap$Node;->split(I)V
-Landroid/icu/impl/TextTrieMap$Node;->takeStep(CILandroid/icu/impl/TextTrieMap$Node$StepResult;)V
-Landroid/icu/impl/TextTrieMap$Node;->values()Ljava/util/Iterator;
-Landroid/icu/impl/TextTrieMap$Node;->_children:Ljava/util/List;
-Landroid/icu/impl/TextTrieMap$Node;->_text:[C
-Landroid/icu/impl/TextTrieMap$Node;->_values:Ljava/util/List;
-Landroid/icu/impl/TextTrieMap$ParseState;->node:Landroid/icu/impl/TextTrieMap$Node;
-Landroid/icu/impl/TextTrieMap$ParseState;->offset:I
-Landroid/icu/impl/TextTrieMap$ParseState;->result:Landroid/icu/impl/TextTrieMap$Node$StepResult;
-Landroid/icu/impl/TextTrieMap;->find(Landroid/icu/impl/TextTrieMap$Node;Landroid/icu/impl/TextTrieMap$CharIterator;Landroid/icu/impl/TextTrieMap$ResultHandler;)V
-Landroid/icu/impl/TextTrieMap;->subArray([CI)[C
-Landroid/icu/impl/TextTrieMap;->subArray([CII)[C
-Landroid/icu/impl/TextTrieMap;->toCharArray(Ljava/lang/CharSequence;)[C
-Landroid/icu/impl/TextTrieMap;->_ignoreCase:Z
-Landroid/icu/impl/TextTrieMap;->_root:Landroid/icu/impl/TextTrieMap$Node;
-Landroid/icu/impl/TimeZoneGenericNames$Cache;-><init>()V
-Landroid/icu/impl/TimeZoneGenericNames$Cache;->createInstance(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
-Landroid/icu/impl/TimeZoneGenericNames$Cache;->createInstance(Ljava/lang/String;Landroid/icu/util/ULocale;)Landroid/icu/impl/TimeZoneGenericNames;
-Landroid/icu/impl/TimeZoneGenericNames$GenericMatchInfo;-><init>(Landroid/icu/impl/TimeZoneGenericNames$GenericNameType;Ljava/lang/String;I)V
-Landroid/icu/impl/TimeZoneGenericNames$GenericMatchInfo;-><init>(Landroid/icu/impl/TimeZoneGenericNames$GenericNameType;Ljava/lang/String;ILandroid/icu/text/TimeZoneFormat$TimeType;)V
-Landroid/icu/impl/TimeZoneGenericNames$GenericMatchInfo;->matchLength:I
-Landroid/icu/impl/TimeZoneGenericNames$GenericMatchInfo;->nameType:Landroid/icu/impl/TimeZoneGenericNames$GenericNameType;
-Landroid/icu/impl/TimeZoneGenericNames$GenericMatchInfo;->timeType:Landroid/icu/text/TimeZoneFormat$TimeType;
-Landroid/icu/impl/TimeZoneGenericNames$GenericMatchInfo;->tzID:Ljava/lang/String;
-Landroid/icu/impl/TimeZoneGenericNames$GenericNameSearchHandler;-><init>(Ljava/util/EnumSet;)V
-Landroid/icu/impl/TimeZoneGenericNames$GenericNameSearchHandler;->getMatches()Ljava/util/Collection;
-Landroid/icu/impl/TimeZoneGenericNames$GenericNameSearchHandler;->getMaxMatchLen()I
-Landroid/icu/impl/TimeZoneGenericNames$GenericNameSearchHandler;->handlePrefixMatch(ILjava/util/Iterator;)Z
-Landroid/icu/impl/TimeZoneGenericNames$GenericNameSearchHandler;->resetResults()V
-Landroid/icu/impl/TimeZoneGenericNames$GenericNameSearchHandler;->_matches:Ljava/util/Collection;
-Landroid/icu/impl/TimeZoneGenericNames$GenericNameSearchHandler;->_maxMatchLen:I
-Landroid/icu/impl/TimeZoneGenericNames$GenericNameSearchHandler;->_types:Ljava/util/EnumSet;
-Landroid/icu/impl/TimeZoneGenericNames$GenericNameType;->_fallbackTypeOf:[Ljava/lang/String;
-Landroid/icu/impl/TimeZoneGenericNames$NameInfo;-><init>(Ljava/lang/String;Landroid/icu/impl/TimeZoneGenericNames$GenericNameType;)V
-Landroid/icu/impl/TimeZoneGenericNames$NameInfo;->type:Landroid/icu/impl/TimeZoneGenericNames$GenericNameType;
-Landroid/icu/impl/TimeZoneGenericNames$NameInfo;->tzID:Ljava/lang/String;
-Landroid/icu/impl/TimeZoneGenericNames$Pattern;->defaultValue()Ljava/lang/String;
-Landroid/icu/impl/TimeZoneGenericNames$Pattern;->key()Ljava/lang/String;
-Landroid/icu/impl/TimeZoneGenericNames$Pattern;->_defaultVal:Ljava/lang/String;
-Landroid/icu/impl/TimeZoneGenericNames$Pattern;->_key:Ljava/lang/String;
-Landroid/icu/impl/TimeZoneGenericNames;-><init>(Landroid/icu/util/ULocale;)V
-Landroid/icu/impl/TimeZoneGenericNames;->createGenericMatchInfo(Landroid/icu/text/TimeZoneNames$MatchInfo;)Landroid/icu/impl/TimeZoneGenericNames$GenericMatchInfo;
-Landroid/icu/impl/TimeZoneGenericNames;->DST_CHECK_RANGE:J
-Landroid/icu/impl/TimeZoneGenericNames;->findLocal(Ljava/lang/String;ILjava/util/EnumSet;)Ljava/util/Collection;
-Landroid/icu/impl/TimeZoneGenericNames;->findTimeZoneNames(Ljava/lang/String;ILjava/util/EnumSet;)Ljava/util/Collection;
-Landroid/icu/impl/TimeZoneGenericNames;->formatGenericNonLocationName(Landroid/icu/util/TimeZone;Landroid/icu/impl/TimeZoneGenericNames$GenericNameType;J)Ljava/lang/String;
-Landroid/icu/impl/TimeZoneGenericNames;->GENERIC_NAMES_CACHE:Landroid/icu/impl/TimeZoneGenericNames$Cache;
-Landroid/icu/impl/TimeZoneGenericNames;->GENERIC_NON_LOCATION_TYPES:[Landroid/icu/text/TimeZoneNames$NameType;
-Landroid/icu/impl/TimeZoneGenericNames;->getLocaleDisplayNames()Landroid/icu/text/LocaleDisplayNames;
-Landroid/icu/impl/TimeZoneGenericNames;->getPartialLocationName(Ljava/lang/String;Ljava/lang/String;ZLjava/lang/String;)Ljava/lang/String;
-Landroid/icu/impl/TimeZoneGenericNames;->getTargetRegion()Ljava/lang/String;
-Landroid/icu/impl/TimeZoneGenericNames;->init()V
-Landroid/icu/impl/TimeZoneGenericNames;->loadStrings(Ljava/lang/String;)V
-Landroid/icu/impl/TimeZoneGenericNames;->_frozen:Z
-Landroid/icu/impl/TimeZoneGenericNames;->_genericLocationNamesMap:Ljava/util/concurrent/ConcurrentHashMap;
-Landroid/icu/impl/TimeZoneGenericNames;->_genericPartialLocationNamesMap:Ljava/util/concurrent/ConcurrentHashMap;
-Landroid/icu/impl/TimeZoneGenericNames;->_gnamesTrie:Landroid/icu/impl/TextTrieMap;
-Landroid/icu/impl/TimeZoneGenericNames;->_gnamesTrieFullyLoaded:Z
-Landroid/icu/impl/TimeZoneGenericNames;->_locale:Landroid/icu/util/ULocale;
-Landroid/icu/impl/TimeZoneGenericNames;->_localeDisplayNamesRef:Ljava/lang/ref/WeakReference;
-Landroid/icu/impl/TimeZoneGenericNames;->_patternFormatters:[Ljava/text/MessageFormat;
-Landroid/icu/impl/TimeZoneGenericNames;->_region:Ljava/lang/String;
-Landroid/icu/impl/TimeZoneGenericNames;->_tznames:Landroid/icu/text/TimeZoneNames;
-Landroid/icu/impl/Trie$DefaultGetFoldingOffset;-><init>()V
-Landroid/icu/impl/Trie2$CharSequenceIterator;->fResults:Landroid/icu/impl/Trie2$CharSequenceValues;
-Landroid/icu/impl/Trie2$CharSequenceIterator;->index:I
-Landroid/icu/impl/Trie2$CharSequenceIterator;->text:Ljava/lang/CharSequence;
-Landroid/icu/impl/Trie2$CharSequenceIterator;->textLength:I
-Landroid/icu/impl/Trie2$Trie2Iterator;->doingCodePoints:Z
-Landroid/icu/impl/Trie2$Trie2Iterator;->doLeadSurrogates:Z
-Landroid/icu/impl/Trie2$Trie2Iterator;->limitCP:I
-Landroid/icu/impl/Trie2$Trie2Iterator;->mapper:Landroid/icu/impl/Trie2$ValueMapper;
-Landroid/icu/impl/Trie2$Trie2Iterator;->nextStart:I
-Landroid/icu/impl/Trie2$Trie2Iterator;->rangeEndLS(C)I
-Landroid/icu/impl/Trie2$Trie2Iterator;->returnValue:Landroid/icu/impl/Trie2$Range;
-Landroid/icu/impl/Trie2$UTrie2Header;-><init>()V
-Landroid/icu/impl/Trie2$UTrie2Header;->dataNullOffset:I
-Landroid/icu/impl/Trie2$UTrie2Header;->index2NullOffset:I
-Landroid/icu/impl/Trie2$UTrie2Header;->indexLength:I
-Landroid/icu/impl/Trie2$UTrie2Header;->options:I
-Landroid/icu/impl/Trie2$UTrie2Header;->shiftedDataLength:I
-Landroid/icu/impl/Trie2$UTrie2Header;->shiftedHighStart:I
-Landroid/icu/impl/Trie2$UTrie2Header;->signature:I
-Landroid/icu/impl/Trie2$ValueWidth;->BITS_16:Landroid/icu/impl/Trie2$ValueWidth;
-Landroid/icu/impl/Trie2$ValueWidth;->BITS_32:Landroid/icu/impl/Trie2$ValueWidth;
-Landroid/icu/impl/Trie2$ValueWidth;->valueOf(Ljava/lang/String;)Landroid/icu/impl/Trie2$ValueWidth;
-Landroid/icu/impl/Trie2$ValueWidth;->values()[Landroid/icu/impl/Trie2$ValueWidth;
-Landroid/icu/impl/Trie2;->data16:I
-Landroid/icu/impl/Trie2;->data32:[I
-Landroid/icu/impl/Trie2;->dataLength:I
-Landroid/icu/impl/Trie2;->dataNullOffset:I
-Landroid/icu/impl/Trie2;->defaultValueMapper:Landroid/icu/impl/Trie2$ValueMapper;
-Landroid/icu/impl/Trie2;->errorValue:I
-Landroid/icu/impl/Trie2;->fHash:I
-Landroid/icu/impl/Trie2;->hashByte(II)I
-Landroid/icu/impl/Trie2;->hashInt(II)I
-Landroid/icu/impl/Trie2;->hashUChar32(II)I
-Landroid/icu/impl/Trie2;->header:Landroid/icu/impl/Trie2$UTrie2Header;
-Landroid/icu/impl/Trie2;->highStart:I
-Landroid/icu/impl/Trie2;->highValueIndex:I
-Landroid/icu/impl/Trie2;->index2NullOffset:I
-Landroid/icu/impl/Trie2;->index:[C
-Landroid/icu/impl/Trie2;->indexLength:I
-Landroid/icu/impl/Trie2;->initHash()I
-Landroid/icu/impl/Trie2;->initialValue:I
-Landroid/icu/impl/Trie2;->rangeEnd(III)I
-Landroid/icu/impl/Trie2;->UNEWTRIE2_INDEX_1_LENGTH:I
-Landroid/icu/impl/Trie2;->UNEWTRIE2_INDEX_GAP_LENGTH:I
-Landroid/icu/impl/Trie2;->UNEWTRIE2_INDEX_GAP_OFFSET:I
-Landroid/icu/impl/Trie2;->UNEWTRIE2_MAX_DATA_LENGTH:I
-Landroid/icu/impl/Trie2;->UNEWTRIE2_MAX_INDEX_2_LENGTH:I
-Landroid/icu/impl/Trie2;->UTRIE2_BAD_UTF8_DATA_OFFSET:I
-Landroid/icu/impl/Trie2;->UTRIE2_CP_PER_INDEX_1_ENTRY:I
-Landroid/icu/impl/Trie2;->UTRIE2_DATA_BLOCK_LENGTH:I
-Landroid/icu/impl/Trie2;->UTRIE2_DATA_GRANULARITY:I
-Landroid/icu/impl/Trie2;->UTRIE2_DATA_MASK:I
-Landroid/icu/impl/Trie2;->UTRIE2_DATA_START_OFFSET:I
-Landroid/icu/impl/Trie2;->UTRIE2_INDEX_1_OFFSET:I
-Landroid/icu/impl/Trie2;->UTRIE2_INDEX_2_BLOCK_LENGTH:I
-Landroid/icu/impl/Trie2;->UTRIE2_INDEX_2_BMP_LENGTH:I
-Landroid/icu/impl/Trie2;->UTRIE2_INDEX_2_MASK:I
-Landroid/icu/impl/Trie2;->UTRIE2_INDEX_2_OFFSET:I
-Landroid/icu/impl/Trie2;->UTRIE2_INDEX_SHIFT:I
-Landroid/icu/impl/Trie2;->UTRIE2_LSCP_INDEX_2_LENGTH:I
-Landroid/icu/impl/Trie2;->UTRIE2_LSCP_INDEX_2_OFFSET:I
-Landroid/icu/impl/Trie2;->UTRIE2_MAX_INDEX_1_LENGTH:I
-Landroid/icu/impl/Trie2;->UTRIE2_OMITTED_BMP_INDEX_1_LENGTH:I
-Landroid/icu/impl/Trie2;->UTRIE2_OPTIONS_VALUE_BITS_MASK:I
-Landroid/icu/impl/Trie2;->UTRIE2_SHIFT_1:I
-Landroid/icu/impl/Trie2;->UTRIE2_SHIFT_1_2:I
-Landroid/icu/impl/Trie2;->UTRIE2_SHIFT_2:I
-Landroid/icu/impl/Trie2;->UTRIE2_UTF8_2B_INDEX_2_LENGTH:I
-Landroid/icu/impl/Trie2;->UTRIE2_UTF8_2B_INDEX_2_OFFSET:I
-Landroid/icu/impl/Trie2Writable;->allocDataBlock(I)I
-Landroid/icu/impl/Trie2Writable;->allocIndex2Block()I
-Landroid/icu/impl/Trie2Writable;->compactData()V
-Landroid/icu/impl/Trie2Writable;->compactIndex2()V
-Landroid/icu/impl/Trie2Writable;->compactTrie()V
-Landroid/icu/impl/Trie2Writable;->data:[I
-Landroid/icu/impl/Trie2Writable;->dataCapacity:I
-Landroid/icu/impl/Trie2Writable;->equal_int([IIII)Z
-Landroid/icu/impl/Trie2Writable;->fillBlock(IIIIIZ)V
-Landroid/icu/impl/Trie2Writable;->findHighStart(I)I
-Landroid/icu/impl/Trie2Writable;->findSameDataBlock(III)I
-Landroid/icu/impl/Trie2Writable;->findSameIndex2Block(II)I
-Landroid/icu/impl/Trie2Writable;->firstFreeBlock:I
-Landroid/icu/impl/Trie2Writable;->freeze(Landroid/icu/impl/Trie2;Landroid/icu/impl/Trie2$ValueWidth;)V
-Landroid/icu/impl/Trie2Writable;->get(IZ)I
-Landroid/icu/impl/Trie2Writable;->getDataBlock(IZ)I
-Landroid/icu/impl/Trie2Writable;->getIndex2Block(IZ)I
-Landroid/icu/impl/Trie2Writable;->index1:[I
-Landroid/icu/impl/Trie2Writable;->index2:[I
-Landroid/icu/impl/Trie2Writable;->index2Length:I
-Landroid/icu/impl/Trie2Writable;->index2NullOffset:I
-Landroid/icu/impl/Trie2Writable;->init(II)V
-Landroid/icu/impl/Trie2Writable;->isCompacted:Z
-Landroid/icu/impl/Trie2Writable;->isInNullBlock(IZ)Z
-Landroid/icu/impl/Trie2Writable;->isWritableBlock(I)Z
-Landroid/icu/impl/Trie2Writable;->map:[I
-Landroid/icu/impl/Trie2Writable;->releaseDataBlock(I)V
-Landroid/icu/impl/Trie2Writable;->set(IZI)Landroid/icu/impl/Trie2Writable;
-Landroid/icu/impl/Trie2Writable;->setIndex2Entry(II)V
-Landroid/icu/impl/Trie2Writable;->uncompact()V
-Landroid/icu/impl/Trie2Writable;->UNEWTRIE2_DATA_0800_OFFSET:I
-Landroid/icu/impl/Trie2Writable;->UNEWTRIE2_DATA_NULL_OFFSET:I
-Landroid/icu/impl/Trie2Writable;->UNEWTRIE2_DATA_START_OFFSET:I
-Landroid/icu/impl/Trie2Writable;->UNEWTRIE2_INDEX_2_NULL_OFFSET:I
-Landroid/icu/impl/Trie2Writable;->UNEWTRIE2_INDEX_2_START_OFFSET:I
-Landroid/icu/impl/Trie2Writable;->UNEWTRIE2_INITIAL_DATA_LENGTH:I
-Landroid/icu/impl/Trie2Writable;->UNEWTRIE2_MEDIUM_DATA_LENGTH:I
-Landroid/icu/impl/Trie2Writable;->UTRIE2_DEBUG:Z
-Landroid/icu/impl/Trie2Writable;->UTRIE2_MAX_DATA_LENGTH:I
-Landroid/icu/impl/Trie2Writable;->UTRIE2_MAX_INDEX_LENGTH:I
-Landroid/icu/impl/Trie2Writable;->writeBlock(II)V
-Landroid/icu/impl/Trie2_16;-><init>()V
-Landroid/icu/impl/Trie2_16;->rangeEnd(III)I
-Landroid/icu/impl/Trie2_32;-><init>()V
-Landroid/icu/impl/Trie2_32;->rangeEnd(III)I
-Landroid/icu/impl/Trie;->checkHeader(I)Z
-Landroid/icu/impl/Trie;->HEADER_OPTIONS_SHIFT_MASK_:I
-Landroid/icu/impl/Trie;->m_isLatin1Linear_:Z
-Landroid/icu/impl/Trie;->m_options_:I
-Landroid/icu/impl/UBiDiProps$IsAcceptable;-><init>()V
-Landroid/icu/impl/UBiDiProps;-><init>()V
-Landroid/icu/impl/UBiDiProps;->BIDI_CONTROL_SHIFT:I
-Landroid/icu/impl/UBiDiProps;->BPT_MASK:I
-Landroid/icu/impl/UBiDiProps;->BPT_SHIFT:I
-Landroid/icu/impl/UBiDiProps;->CLASS_MASK:I
-Landroid/icu/impl/UBiDiProps;->DATA_FILE_NAME:Ljava/lang/String;
-Landroid/icu/impl/UBiDiProps;->DATA_NAME:Ljava/lang/String;
-Landroid/icu/impl/UBiDiProps;->DATA_TYPE:Ljava/lang/String;
-Landroid/icu/impl/UBiDiProps;->ESC_MIRROR_DELTA:I
-Landroid/icu/impl/UBiDiProps;->FMT:I
-Landroid/icu/impl/UBiDiProps;->getClassFromProps(I)I
-Landroid/icu/impl/UBiDiProps;->getFlagFromProps(II)Z
-Landroid/icu/impl/UBiDiProps;->getMirror(II)I
-Landroid/icu/impl/UBiDiProps;->getMirrorCodePoint(I)I
-Landroid/icu/impl/UBiDiProps;->getMirrorDeltaFromProps(I)I
-Landroid/icu/impl/UBiDiProps;->getMirrorIndex(I)I
-Landroid/icu/impl/UBiDiProps;->indexes:[I
-Landroid/icu/impl/UBiDiProps;->IS_MIRRORED_SHIFT:I
-Landroid/icu/impl/UBiDiProps;->IX_JG_LIMIT2:I
-Landroid/icu/impl/UBiDiProps;->IX_JG_LIMIT:I
-Landroid/icu/impl/UBiDiProps;->IX_JG_START2:I
-Landroid/icu/impl/UBiDiProps;->IX_JG_START:I
-Landroid/icu/impl/UBiDiProps;->IX_MAX_VALUES:I
-Landroid/icu/impl/UBiDiProps;->IX_MIRROR_LENGTH:I
-Landroid/icu/impl/UBiDiProps;->IX_TOP:I
-Landroid/icu/impl/UBiDiProps;->IX_TRIE_SIZE:I
-Landroid/icu/impl/UBiDiProps;->jgArray2:[B
-Landroid/icu/impl/UBiDiProps;->jgArray:[B
-Landroid/icu/impl/UBiDiProps;->JOIN_CONTROL_SHIFT:I
-Landroid/icu/impl/UBiDiProps;->JT_MASK:I
-Landroid/icu/impl/UBiDiProps;->JT_SHIFT:I
-Landroid/icu/impl/UBiDiProps;->MAX_JG_MASK:I
-Landroid/icu/impl/UBiDiProps;->MAX_JG_SHIFT:I
-Landroid/icu/impl/UBiDiProps;->mirrors:[I
-Landroid/icu/impl/UBiDiProps;->MIRROR_DELTA_SHIFT:I
-Landroid/icu/impl/UBiDiProps;->MIRROR_INDEX_SHIFT:I
-Landroid/icu/impl/UBiDiProps;->readData(Ljava/nio/ByteBuffer;)V
-Landroid/icu/impl/UBiDiProps;->trie:Landroid/icu/impl/Trie2_16;
-Landroid/icu/impl/UnicodeSetStringSpan$OffsetList;-><init>()V
-Landroid/icu/impl/UnicodeSetStringSpan$OffsetList;->addOffset(I)V
-Landroid/icu/impl/UnicodeSetStringSpan$OffsetList;->addOffsetAndCount(II)V
-Landroid/icu/impl/UnicodeSetStringSpan$OffsetList;->clear()V
-Landroid/icu/impl/UnicodeSetStringSpan$OffsetList;->containsOffset(I)Z
-Landroid/icu/impl/UnicodeSetStringSpan$OffsetList;->hasCountAtOffset(II)Z
-Landroid/icu/impl/UnicodeSetStringSpan$OffsetList;->isEmpty()Z
-Landroid/icu/impl/UnicodeSetStringSpan$OffsetList;->length:I
-Landroid/icu/impl/UnicodeSetStringSpan$OffsetList;->list:[I
-Landroid/icu/impl/UnicodeSetStringSpan$OffsetList;->popMinimum(Landroid/icu/util/OutputInt;)I
-Landroid/icu/impl/UnicodeSetStringSpan$OffsetList;->setMaxLength(I)V
-Landroid/icu/impl/UnicodeSetStringSpan$OffsetList;->shift(I)V
-Landroid/icu/impl/UnicodeSetStringSpan$OffsetList;->start:I
-Landroid/icu/impl/UnicodeSetStringSpan;->addToSpanNotSet(I)V
-Landroid/icu/impl/UnicodeSetStringSpan;->all:Z
-Landroid/icu/impl/UnicodeSetStringSpan;->ALL_CP_CONTAINED:S
-Landroid/icu/impl/UnicodeSetStringSpan;->LONG_SPAN:S
-Landroid/icu/impl/UnicodeSetStringSpan;->makeSpanLengthByte(I)S
-Landroid/icu/impl/UnicodeSetStringSpan;->matches16(Ljava/lang/CharSequence;ILjava/lang/String;I)Z
-Landroid/icu/impl/UnicodeSetStringSpan;->matches16CPB(Ljava/lang/CharSequence;IILjava/lang/String;I)Z
-Landroid/icu/impl/UnicodeSetStringSpan;->maxLength16:I
-Landroid/icu/impl/UnicodeSetStringSpan;->offsets:Landroid/icu/impl/UnicodeSetStringSpan$OffsetList;
-Landroid/icu/impl/UnicodeSetStringSpan;->someRelevant:Z
-Landroid/icu/impl/UnicodeSetStringSpan;->spanContainedAndCount(Ljava/lang/CharSequence;ILandroid/icu/util/OutputInt;)I
-Landroid/icu/impl/UnicodeSetStringSpan;->spanLengths:[S
-Landroid/icu/impl/UnicodeSetStringSpan;->spanNot(Ljava/lang/CharSequence;ILandroid/icu/util/OutputInt;)I
-Landroid/icu/impl/UnicodeSetStringSpan;->spanNotBack(Ljava/lang/CharSequence;I)I
-Landroid/icu/impl/UnicodeSetStringSpan;->spanNotSet:Landroid/icu/text/UnicodeSet;
-Landroid/icu/impl/UnicodeSetStringSpan;->spanOne(Landroid/icu/text/UnicodeSet;Ljava/lang/CharSequence;II)I
-Landroid/icu/impl/UnicodeSetStringSpan;->spanOneBack(Landroid/icu/text/UnicodeSet;Ljava/lang/CharSequence;I)I
-Landroid/icu/impl/UnicodeSetStringSpan;->spanSet:Landroid/icu/text/UnicodeSet;
-Landroid/icu/impl/UnicodeSetStringSpan;->spanWithStrings(Ljava/lang/CharSequence;IILandroid/icu/text/UnicodeSet$SpanCondition;)I
-Landroid/icu/impl/UnicodeSetStringSpan;->strings:Ljava/util/ArrayList;
-Landroid/icu/impl/UResource$Key;-><init>([BII)V
-Landroid/icu/impl/UResource$Key;->bytes:[B
-Landroid/icu/impl/UResource$Key;->internalSubString(II)Ljava/lang/String;
-Landroid/icu/impl/UResource$Key;->length:I
-Landroid/icu/impl/UResource$Key;->offset:I
-Landroid/icu/impl/UResource$Key;->regionMatches(ILjava/lang/CharSequence;I)Z
-Landroid/icu/impl/UResource$Key;->regionMatches([BII)Z
-Landroid/icu/impl/UResource$Key;->s:Ljava/lang/String;
-Landroid/icu/lang/CharSequences;-><init>()V
-Landroid/icu/lang/CharSequences;->codePointLength(Ljava/lang/CharSequence;)I
-Landroid/icu/lang/CharSequences;->codePoints(Ljava/lang/CharSequence;)[I
-Landroid/icu/lang/CharSequences;->compare(ILjava/lang/CharSequence;)I
-Landroid/icu/lang/CharSequences;->compare(Ljava/lang/CharSequence;I)I
-Landroid/icu/lang/CharSequences;->compare(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)I
-Landroid/icu/lang/CharSequences;->equals(ILjava/lang/CharSequence;)Z
-Landroid/icu/lang/CharSequences;->equals(Ljava/lang/CharSequence;I)Z
-Landroid/icu/lang/CharSequences;->equals(Ljava/lang/Object;Ljava/lang/Object;)Z
-Landroid/icu/lang/CharSequences;->equalsChars(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Z
-Landroid/icu/lang/CharSequences;->getSingleCodePoint(Ljava/lang/CharSequence;)I
-Landroid/icu/lang/CharSequences;->indexOf(Ljava/lang/CharSequence;I)I
-Landroid/icu/lang/CharSequences;->matchAfter(Ljava/lang/CharSequence;Ljava/lang/CharSequence;II)I
-Landroid/icu/lang/CharSequences;->onCharacterBoundary(Ljava/lang/CharSequence;I)Z
-Landroid/icu/lang/UCharacter$BidiPairedBracketType;->COUNT:I
-Landroid/icu/lang/UCharacter$DecompositionType;->COUNT:I
-Landroid/icu/lang/UCharacter$DummyValueIterator;-><init>()V
-Landroid/icu/lang/UCharacter$EastAsianWidth;->COUNT:I
-Landroid/icu/lang/UCharacter$GraphemeClusterBreak;->COUNT:I
-Landroid/icu/lang/UCharacter$HangulSyllableType;->COUNT:I
-Landroid/icu/lang/UCharacter$JoiningGroup;->COUNT:I
-Landroid/icu/lang/UCharacter$JoiningType;->COUNT:I
-Landroid/icu/lang/UCharacter$LineBreak;->COUNT:I
-Landroid/icu/lang/UCharacter$NumericType;->COUNT:I
-Landroid/icu/lang/UCharacter$SentenceBreak;->COUNT:I
-Landroid/icu/lang/UCharacter$UCharacterTypeIterator$MaskType;-><init>()V
-Landroid/icu/lang/UCharacter$UCharacterTypeIterator;-><init>()V
-Landroid/icu/lang/UCharacter$UCharacterTypeIterator;->MASK_TYPE:Landroid/icu/lang/UCharacter$UCharacterTypeIterator$MaskType;
-Landroid/icu/lang/UCharacter$UCharacterTypeIterator;->range:Landroid/icu/impl/Trie2$Range;
-Landroid/icu/lang/UCharacter$UCharacterTypeIterator;->trieIterator:Ljava/util/Iterator;
-Landroid/icu/lang/UCharacter$UnicodeBlock;-><init>(Ljava/lang/String;I)V
-Landroid/icu/lang/UCharacter$UnicodeBlock;->BLOCKS_:[Landroid/icu/lang/UCharacter$UnicodeBlock;
-Landroid/icu/lang/UCharacter$UnicodeBlock;->COUNT:I
-Landroid/icu/lang/UCharacter$UnicodeBlock;->mref:Ljava/lang/ref/SoftReference;
-Landroid/icu/lang/UCharacter$UnicodeBlock;->m_id_:I
-Landroid/icu/lang/UCharacter$UnicodeBlock;->trimBlockName(Ljava/lang/String;)Ljava/lang/String;
-Landroid/icu/lang/UCharacter$WordBreak;->COUNT:I
-Landroid/icu/lang/UCharacter;-><init>()V
-Landroid/icu/lang/UCharacter;->APPLICATION_PROGRAM_COMMAND_:I
-Landroid/icu/lang/UCharacter;->CJK_IDEOGRAPH_COMPLEX_EIGHT_:I
-Landroid/icu/lang/UCharacter;->CJK_IDEOGRAPH_COMPLEX_FIVE_:I
-Landroid/icu/lang/UCharacter;->CJK_IDEOGRAPH_COMPLEX_FOUR_:I
-Landroid/icu/lang/UCharacter;->CJK_IDEOGRAPH_COMPLEX_HUNDRED_:I
-Landroid/icu/lang/UCharacter;->CJK_IDEOGRAPH_COMPLEX_NINE_:I
-Landroid/icu/lang/UCharacter;->CJK_IDEOGRAPH_COMPLEX_ONE_:I
-Landroid/icu/lang/UCharacter;->CJK_IDEOGRAPH_COMPLEX_SEVEN_:I
-Landroid/icu/lang/UCharacter;->CJK_IDEOGRAPH_COMPLEX_SIX_:I
-Landroid/icu/lang/UCharacter;->CJK_IDEOGRAPH_COMPLEX_TEN_:I
-Landroid/icu/lang/UCharacter;->CJK_IDEOGRAPH_COMPLEX_THOUSAND_:I
-Landroid/icu/lang/UCharacter;->CJK_IDEOGRAPH_COMPLEX_THREE_:I
-Landroid/icu/lang/UCharacter;->CJK_IDEOGRAPH_COMPLEX_TWO_:I
-Landroid/icu/lang/UCharacter;->CJK_IDEOGRAPH_COMPLEX_ZERO_:I
-Landroid/icu/lang/UCharacter;->CJK_IDEOGRAPH_EIGHTH_:I
-Landroid/icu/lang/UCharacter;->CJK_IDEOGRAPH_FIFTH_:I
-Landroid/icu/lang/UCharacter;->CJK_IDEOGRAPH_FIRST_:I
-Landroid/icu/lang/UCharacter;->CJK_IDEOGRAPH_FOURTH_:I
-Landroid/icu/lang/UCharacter;->CJK_IDEOGRAPH_HUNDRED_:I
-Landroid/icu/lang/UCharacter;->CJK_IDEOGRAPH_HUNDRED_MILLION_:I
-Landroid/icu/lang/UCharacter;->CJK_IDEOGRAPH_NINETH_:I
-Landroid/icu/lang/UCharacter;->CJK_IDEOGRAPH_SECOND_:I
-Landroid/icu/lang/UCharacter;->CJK_IDEOGRAPH_SEVENTH_:I
-Landroid/icu/lang/UCharacter;->CJK_IDEOGRAPH_SIXTH_:I
-Landroid/icu/lang/UCharacter;->CJK_IDEOGRAPH_TEN_:I
-Landroid/icu/lang/UCharacter;->CJK_IDEOGRAPH_TEN_THOUSAND_:I
-Landroid/icu/lang/UCharacter;->CJK_IDEOGRAPH_THIRD_:I
-Landroid/icu/lang/UCharacter;->CJK_IDEOGRAPH_THOUSAND_:I
-Landroid/icu/lang/UCharacter;->DELETE_:I
-Landroid/icu/lang/UCharacter;->FIGURE_SPACE_:I
-Landroid/icu/lang/UCharacter;->getCaseLocale(Landroid/icu/util/ULocale;)I
-Landroid/icu/lang/UCharacter;->getCaseLocale(Ljava/util/Locale;)I
-Landroid/icu/lang/UCharacter;->getCharFromName1_0(Ljava/lang/String;)I
-Landroid/icu/lang/UCharacter;->getDefaultCaseLocale()I
-Landroid/icu/lang/UCharacter;->getISOComment(I)Ljava/lang/String;
-Landroid/icu/lang/UCharacter;->getName1_0(I)Ljava/lang/String;
-Landroid/icu/lang/UCharacter;->getName1_0Iterator()Landroid/icu/util/ValueIterator;
-Landroid/icu/lang/UCharacter;->getPropertyValueEnumNoThrow(ILjava/lang/CharSequence;)I
-Landroid/icu/lang/UCharacter;->getStringPropertyValue(III)Ljava/lang/String;
-Landroid/icu/lang/UCharacter;->IDEOGRAPHIC_NUMBER_ZERO_:I
-Landroid/icu/lang/UCharacter;->isJavaLetter(I)Z
-Landroid/icu/lang/UCharacter;->isJavaLetterOrDigit(I)Z
-Landroid/icu/lang/UCharacter;->isSpace(I)Z
-Landroid/icu/lang/UCharacter;->LAST_CHAR_MASK_:I
-Landroid/icu/lang/UCharacter;->NARROW_NO_BREAK_SPACE_:I
-Landroid/icu/lang/UCharacter;->NO_BREAK_SPACE_:I
-Landroid/icu/lang/UCharacter;->toTitleFirst(Landroid/icu/util/ULocale;Ljava/lang/String;)Ljava/lang/String;
-Landroid/icu/lang/UCharacter;->TO_TITLE_WHOLE_STRING_NO_LOWERCASE:Landroid/icu/text/CaseMap$Title;
-Landroid/icu/lang/UCharacter;->UNIT_SEPARATOR_:I
-Landroid/icu/lang/UCharacterCategory;-><init>()V
-Landroid/icu/lang/UCharacterDirection;-><init>()V
-Landroid/icu/lang/UCharacterEnums$ECharacterCategory;->CHAR_CATEGORY_COUNT:B
-Landroid/icu/lang/UCharacterEnums$ECharacterDirection;->CHAR_DIRECTION_COUNT:I
-Landroid/icu/lang/UCharacterEnums;-><init>()V
-Landroid/icu/lang/UProperty$NameChoice;->COUNT:I
-Landroid/icu/lang/UProperty;->BINARY_LIMIT:I
-Landroid/icu/lang/UProperty;->DOUBLE_LIMIT:I
-Landroid/icu/lang/UProperty;->INT_LIMIT:I
-Landroid/icu/lang/UProperty;->ISO_COMMENT:I
-Landroid/icu/lang/UProperty;->MASK_LIMIT:I
-Landroid/icu/lang/UProperty;->OTHER_PROPERTY_LIMIT:I
-Landroid/icu/lang/UProperty;->STRING_LIMIT:I
-Landroid/icu/lang/UProperty;->UNDEFINED:I
-Landroid/icu/lang/UProperty;->UNICODE_1_NAME:I
-Landroid/icu/lang/UScript$ScriptMetadata;-><init>()V
-Landroid/icu/lang/UScript$ScriptMetadata;->CASED:I
-Landroid/icu/lang/UScript$ScriptMetadata;->EXCLUSION:I
-Landroid/icu/lang/UScript$ScriptMetadata;->getScriptProps(I)I
-Landroid/icu/lang/UScript$ScriptMetadata;->LB_LETTERS:I
-Landroid/icu/lang/UScript$ScriptMetadata;->LIMITED_USE:I
-Landroid/icu/lang/UScript$ScriptMetadata;->RECOMMENDED:I
-Landroid/icu/lang/UScript$ScriptMetadata;->RTL:I
-Landroid/icu/lang/UScript$ScriptMetadata;->SCRIPT_PROPS:[I
-Landroid/icu/lang/UScript$ScriptMetadata;->UNKNOWN:I
-Landroid/icu/lang/UScript;-><init>()V
-Landroid/icu/lang/UScript;->CODE_LIMIT:I
-Landroid/icu/lang/UScript;->DUPLOYAN_SHORTAND:I
-Landroid/icu/lang/UScript;->findCodeFromLocale(Landroid/icu/util/ULocale;)[I
-Landroid/icu/lang/UScript;->getCodesFromLocale(Landroid/icu/util/ULocale;)[I
-Landroid/icu/lang/UScript;->usageValues:[Landroid/icu/lang/UScript$ScriptUsage;
-Landroid/icu/lang/UScriptRun$ParenStackEntry;-><init>(II)V
-Landroid/icu/lang/UScriptRun$ParenStackEntry;->pairIndex:I
-Landroid/icu/lang/UScriptRun$ParenStackEntry;->scriptCode:I
-Landroid/icu/lang/UScriptRun;-><init>()V
-Landroid/icu/lang/UScriptRun;-><init>(Ljava/lang/String;)V
-Landroid/icu/lang/UScriptRun;-><init>(Ljava/lang/String;II)V
-Landroid/icu/lang/UScriptRun;-><init>([C)V
-Landroid/icu/lang/UScriptRun;-><init>([CII)V
-Landroid/icu/lang/UScriptRun;->dec(I)I
-Landroid/icu/lang/UScriptRun;->dec(II)I
-Landroid/icu/lang/UScriptRun;->emptyCharArray:[C
-Landroid/icu/lang/UScriptRun;->fixup(I)V
-Landroid/icu/lang/UScriptRun;->fixupCount:I
-Landroid/icu/lang/UScriptRun;->getPairIndex(I)I
-Landroid/icu/lang/UScriptRun;->getScriptCode()I
-Landroid/icu/lang/UScriptRun;->getScriptLimit()I
-Landroid/icu/lang/UScriptRun;->getScriptStart()I
-Landroid/icu/lang/UScriptRun;->highBit(I)B
-Landroid/icu/lang/UScriptRun;->inc(I)I
-Landroid/icu/lang/UScriptRun;->inc(II)I
-Landroid/icu/lang/UScriptRun;->limitInc(I)I
-Landroid/icu/lang/UScriptRun;->mod(I)I
-Landroid/icu/lang/UScriptRun;->next()Z
-Landroid/icu/lang/UScriptRun;->pairedCharExtra:I
-Landroid/icu/lang/UScriptRun;->pairedCharPower:I
-Landroid/icu/lang/UScriptRun;->pairedChars:[I
-Landroid/icu/lang/UScriptRun;->parenSP:I
-Landroid/icu/lang/UScriptRun;->parenStack:[Landroid/icu/lang/UScriptRun$ParenStackEntry;
-Landroid/icu/lang/UScriptRun;->PAREN_STACK_DEPTH:I
-Landroid/icu/lang/UScriptRun;->pop()V
-Landroid/icu/lang/UScriptRun;->push(II)V
-Landroid/icu/lang/UScriptRun;->pushCount:I
-Landroid/icu/lang/UScriptRun;->reset()V
-Landroid/icu/lang/UScriptRun;->reset(II)V
-Landroid/icu/lang/UScriptRun;->reset(Ljava/lang/String;)V
-Landroid/icu/lang/UScriptRun;->reset(Ljava/lang/String;II)V
-Landroid/icu/lang/UScriptRun;->reset([C)V
-Landroid/icu/lang/UScriptRun;->reset([CII)V
-Landroid/icu/lang/UScriptRun;->sameScript(II)Z
-Landroid/icu/lang/UScriptRun;->scriptCode:I
-Landroid/icu/lang/UScriptRun;->scriptLimit:I
-Landroid/icu/lang/UScriptRun;->scriptStart:I
-Landroid/icu/lang/UScriptRun;->stackIsEmpty()Z
-Landroid/icu/lang/UScriptRun;->stackIsNotEmpty()Z
-Landroid/icu/lang/UScriptRun;->syncFixup()V
-Landroid/icu/lang/UScriptRun;->text:[C
-Landroid/icu/lang/UScriptRun;->textIndex:I
-Landroid/icu/lang/UScriptRun;->textLimit:I
-Landroid/icu/lang/UScriptRun;->textStart:I
-Landroid/icu/lang/UScriptRun;->top()Landroid/icu/lang/UScriptRun$ParenStackEntry;
-Landroid/icu/math/BigDecimal;-><init>()V
-Landroid/icu/math/BigDecimal;->allzero([BI)Z
-Landroid/icu/math/BigDecimal;->bad([C)V
-Landroid/icu/math/BigDecimal;->badarg(Ljava/lang/String;ILjava/lang/String;)V
-Landroid/icu/math/BigDecimal;->byteaddsub([BI[BIIZ)[B
-Landroid/icu/math/BigDecimal;->bytecar:[B
-Landroid/icu/math/BigDecimal;->bytedig:[B
-Landroid/icu/math/BigDecimal;->checkdigits(Landroid/icu/math/BigDecimal;I)V
-Landroid/icu/math/BigDecimal;->clone(Landroid/icu/math/BigDecimal;)Landroid/icu/math/BigDecimal;
-Landroid/icu/math/BigDecimal;->diginit()[B
-Landroid/icu/math/BigDecimal;->dodivide(CLandroid/icu/math/BigDecimal;Landroid/icu/math/MathContext;I)Landroid/icu/math/BigDecimal;
-Landroid/icu/math/BigDecimal;->exp:I
-Landroid/icu/math/BigDecimal;->extend([BI)[B
-Landroid/icu/math/BigDecimal;->finish(Landroid/icu/math/MathContext;Z)Landroid/icu/math/BigDecimal;
-Landroid/icu/math/BigDecimal;->form:B
-Landroid/icu/math/BigDecimal;->ind:B
-Landroid/icu/math/BigDecimal;->intcheck(II)I
-Landroid/icu/math/BigDecimal;->isneg:B
-Landroid/icu/math/BigDecimal;->ispos:B
-Landroid/icu/math/BigDecimal;->iszero:B
-Landroid/icu/math/BigDecimal;->layout()[C
-Landroid/icu/math/BigDecimal;->mant:[B
-Landroid/icu/math/BigDecimal;->MaxArg:I
-Landroid/icu/math/BigDecimal;->MaxExp:I
-Landroid/icu/math/BigDecimal;->MinArg:I
-Landroid/icu/math/BigDecimal;->MinExp:I
-Landroid/icu/math/BigDecimal;->plainMC:Landroid/icu/math/MathContext;
-Landroid/icu/math/BigDecimal;->round(II)Landroid/icu/math/BigDecimal;
-Landroid/icu/math/BigDecimal;->round(Landroid/icu/math/MathContext;)Landroid/icu/math/BigDecimal;
-Landroid/icu/math/MathContext;->DEFAULT_DIGITS:I
-Landroid/icu/math/MathContext;->DEFAULT_FORM:I
-Landroid/icu/math/MathContext;->DEFAULT_LOSTDIGITS:Z
-Landroid/icu/math/MathContext;->DEFAULT_ROUNDINGMODE:I
-Landroid/icu/math/MathContext;->digits:I
-Landroid/icu/math/MathContext;->form:I
-Landroid/icu/math/MathContext;->isValidRound(I)Z
-Landroid/icu/math/MathContext;->lostDigits:Z
-Landroid/icu/math/MathContext;->MAX_DIGITS:I
-Landroid/icu/math/MathContext;->MIN_DIGITS:I
-Landroid/icu/math/MathContext;->roundingMode:I
-Landroid/icu/math/MathContext;->ROUNDS:[I
-Landroid/icu/math/MathContext;->ROUNDWORDS:[Ljava/lang/String;
-Landroid/icu/text/AlphabeticIndex$Bucket;-><init>(Ljava/lang/String;Ljava/lang/String;Landroid/icu/text/AlphabeticIndex$Bucket$LabelType;)V
-Landroid/icu/text/AlphabeticIndex$Bucket;->displayBucket:Landroid/icu/text/AlphabeticIndex$Bucket;
-Landroid/icu/text/AlphabeticIndex$Bucket;->displayIndex:I
-Landroid/icu/text/AlphabeticIndex$Bucket;->label:Ljava/lang/String;
-Landroid/icu/text/AlphabeticIndex$Bucket;->labelType:Landroid/icu/text/AlphabeticIndex$Bucket$LabelType;
-Landroid/icu/text/AlphabeticIndex$Bucket;->lowerBoundary:Ljava/lang/String;
-Landroid/icu/text/AlphabeticIndex$Bucket;->records:Ljava/util/List;
-Landroid/icu/text/AlphabeticIndex$BucketList;-><init>(Ljava/util/ArrayList;Ljava/util/ArrayList;)V
-Landroid/icu/text/AlphabeticIndex$BucketList;->bucketList:Ljava/util/ArrayList;
-Landroid/icu/text/AlphabeticIndex$BucketList;->fullIterator()Ljava/util/Iterator;
-Landroid/icu/text/AlphabeticIndex$BucketList;->getBucketCount()I
-Landroid/icu/text/AlphabeticIndex$BucketList;->getBucketIndex(Ljava/lang/CharSequence;Landroid/icu/text/Collator;)I
-Landroid/icu/text/AlphabeticIndex$BucketList;->immutableVisibleList:Ljava/util/List;
-Landroid/icu/text/AlphabeticIndex$ImmutableIndex;-><init>(Landroid/icu/text/AlphabeticIndex$BucketList;Landroid/icu/text/Collator;)V
-Landroid/icu/text/AlphabeticIndex$ImmutableIndex;->buckets:Landroid/icu/text/AlphabeticIndex$BucketList;
-Landroid/icu/text/AlphabeticIndex$ImmutableIndex;->collatorPrimaryOnly:Landroid/icu/text/Collator;
-Landroid/icu/text/AlphabeticIndex$Record;-><init>(Ljava/lang/CharSequence;Ljava/lang/Object;)V
-Landroid/icu/text/AlphabeticIndex$Record;->data:Ljava/lang/Object;
-Landroid/icu/text/AlphabeticIndex$Record;->name:Ljava/lang/CharSequence;
-Landroid/icu/text/AlphabeticIndex;-><init>(Landroid/icu/util/ULocale;Landroid/icu/text/RuleBasedCollator;)V
-Landroid/icu/text/AlphabeticIndex;->addChineseIndexCharacters()Z
-Landroid/icu/text/AlphabeticIndex;->addIndexExemplars(Landroid/icu/util/ULocale;)V
-Landroid/icu/text/AlphabeticIndex;->BASE:Ljava/lang/String;
-Landroid/icu/text/AlphabeticIndex;->binaryCmp:Ljava/util/Comparator;
-Landroid/icu/text/AlphabeticIndex;->buckets:Landroid/icu/text/AlphabeticIndex$BucketList;
-Landroid/icu/text/AlphabeticIndex;->CGJ:C
-Landroid/icu/text/AlphabeticIndex;->collatorExternal:Landroid/icu/text/RuleBasedCollator;
-Landroid/icu/text/AlphabeticIndex;->collatorOriginal:Landroid/icu/text/RuleBasedCollator;
-Landroid/icu/text/AlphabeticIndex;->collatorPrimaryOnly:Landroid/icu/text/RuleBasedCollator;
-Landroid/icu/text/AlphabeticIndex;->createBucketList()Landroid/icu/text/AlphabeticIndex$BucketList;
-Landroid/icu/text/AlphabeticIndex;->firstCharsInScripts:Ljava/util/List;
-Landroid/icu/text/AlphabeticIndex;->fixLabel(Ljava/lang/String;)Ljava/lang/String;
-Landroid/icu/text/AlphabeticIndex;->GC_CN_MASK:I
-Landroid/icu/text/AlphabeticIndex;->GC_LL_MASK:I
-Landroid/icu/text/AlphabeticIndex;->GC_LM_MASK:I
-Landroid/icu/text/AlphabeticIndex;->GC_LO_MASK:I
-Landroid/icu/text/AlphabeticIndex;->GC_LT_MASK:I
-Landroid/icu/text/AlphabeticIndex;->GC_LU_MASK:I
-Landroid/icu/text/AlphabeticIndex;->GC_L_MASK:I
-Landroid/icu/text/AlphabeticIndex;->getFirstCharactersInScripts()Ljava/util/List;
-Landroid/icu/text/AlphabeticIndex;->hasMultiplePrimaryWeights(Landroid/icu/text/RuleBasedCollator;JLjava/lang/String;)Z
-Landroid/icu/text/AlphabeticIndex;->inflowLabel:Ljava/lang/String;
-Landroid/icu/text/AlphabeticIndex;->initBuckets()V
-Landroid/icu/text/AlphabeticIndex;->initialLabels:Landroid/icu/text/UnicodeSet;
-Landroid/icu/text/AlphabeticIndex;->initLabels()Ljava/util/List;
-Landroid/icu/text/AlphabeticIndex;->inputList:Ljava/util/List;
-Landroid/icu/text/AlphabeticIndex;->isOneLabelBetterThanOther(Landroid/icu/text/Normalizer2;Ljava/lang/String;Ljava/lang/String;)Z
-Landroid/icu/text/AlphabeticIndex;->maxLabelCount:I
-Landroid/icu/text/AlphabeticIndex;->overflowLabel:Ljava/lang/String;
-Landroid/icu/text/AlphabeticIndex;->recordComparator:Ljava/util/Comparator;
-Landroid/icu/text/AlphabeticIndex;->separated(Ljava/lang/String;)Ljava/lang/String;
-Landroid/icu/text/AlphabeticIndex;->underflowLabel:Ljava/lang/String;
-Landroid/icu/text/ArabicShaping;->ALEFTYPE:I
-Landroid/icu/text/ArabicShaping;->araLink:[I
-Landroid/icu/text/ArabicShaping;->calculateSize([CII)I
-Landroid/icu/text/ArabicShaping;->changeLamAlef(C)C
-Landroid/icu/text/ArabicShaping;->convertFEto06:[I
-Landroid/icu/text/ArabicShaping;->convertNormalizedLamAlef:[C
-Landroid/icu/text/ArabicShaping;->countSpacesLeft([CII)I
-Landroid/icu/text/ArabicShaping;->countSpacesRight([CII)I
-Landroid/icu/text/ArabicShaping;->countSpaceSub([CIC)I
-Landroid/icu/text/ArabicShaping;->deshapeNormalize([CII)I
-Landroid/icu/text/ArabicShaping;->deShapeUnicode([CIII)I
-Landroid/icu/text/ArabicShaping;->DESHAPE_MODE:I
-Landroid/icu/text/ArabicShaping;->DIGITS_AN2EN:I
-Landroid/icu/text/ArabicShaping;->DIGITS_EN2AN:I
-Landroid/icu/text/ArabicShaping;->DIGITS_EN2AN_INIT_AL:I
-Landroid/icu/text/ArabicShaping;->DIGITS_EN2AN_INIT_LR:I
-Landroid/icu/text/ArabicShaping;->DIGITS_MASK:I
-Landroid/icu/text/ArabicShaping;->DIGITS_NOOP:I
-Landroid/icu/text/ArabicShaping;->DIGIT_TYPE_AN:I
-Landroid/icu/text/ArabicShaping;->DIGIT_TYPE_AN_EXTENDED:I
-Landroid/icu/text/ArabicShaping;->DIGIT_TYPE_MASK:I
-Landroid/icu/text/ArabicShaping;->expandCompositChar([CIIII)I
-Landroid/icu/text/ArabicShaping;->expandCompositCharAtBegin([CIII)Z
-Landroid/icu/text/ArabicShaping;->expandCompositCharAtEnd([CIII)Z
-Landroid/icu/text/ArabicShaping;->expandCompositCharAtNear([CIIIII)Z
-Landroid/icu/text/ArabicShaping;->flipArray([CIII)I
-Landroid/icu/text/ArabicShaping;->getLink(C)I
-Landroid/icu/text/ArabicShaping;->HAMZA06_CHAR:C
-Landroid/icu/text/ArabicShaping;->HAMZAFE_CHAR:C
-Landroid/icu/text/ArabicShaping;->handleGeneratedSpaces([CII)I
-Landroid/icu/text/ArabicShaping;->handleTashkeelWithTatweel([CI)I
-Landroid/icu/text/ArabicShaping;->internalShape([CII[CII)I
-Landroid/icu/text/ArabicShaping;->invertBuffer([CII)V
-Landroid/icu/text/ArabicShaping;->IRRELEVANT:I
-Landroid/icu/text/ArabicShaping;->irrelevantPos:[I
-Landroid/icu/text/ArabicShaping;->isAlefChar(C)Z
-Landroid/icu/text/ArabicShaping;->isIsolatedTashkeelChar(C)I
-Landroid/icu/text/ArabicShaping;->isLamAlefChar(C)Z
-Landroid/icu/text/ArabicShaping;->isLogical:Z
-Landroid/icu/text/ArabicShaping;->isNormalizedLamAlefChar(C)Z
-Landroid/icu/text/ArabicShaping;->isSeenFamilyChar(C)I
-Landroid/icu/text/ArabicShaping;->isTashkeelChar(C)Z
-Landroid/icu/text/ArabicShaping;->isTashkeelCharFE(C)Z
-Landroid/icu/text/ArabicShaping;->isTashkeelOnTatweelChar(C)I
-Landroid/icu/text/ArabicShaping;->LAMALEF_AUTO:I
-Landroid/icu/text/ArabicShaping;->LAMALEF_BEGIN:I
-Landroid/icu/text/ArabicShaping;->LAMALEF_END:I
-Landroid/icu/text/ArabicShaping;->LAMALEF_MASK:I
-Landroid/icu/text/ArabicShaping;->LAMALEF_NEAR:I
-Landroid/icu/text/ArabicShaping;->LAMALEF_RESIZE:I
-Landroid/icu/text/ArabicShaping;->LAMALEF_SPACE_SUB:C
-Landroid/icu/text/ArabicShaping;->LAMTYPE:I
-Landroid/icu/text/ArabicShaping;->LAM_CHAR:C
-Landroid/icu/text/ArabicShaping;->LENGTH_FIXED_SPACES_AT_BEGINNING:I
-Landroid/icu/text/ArabicShaping;->LENGTH_FIXED_SPACES_AT_END:I
-Landroid/icu/text/ArabicShaping;->LENGTH_FIXED_SPACES_NEAR:I
-Landroid/icu/text/ArabicShaping;->LENGTH_GROW_SHRINK:I
-Landroid/icu/text/ArabicShaping;->LENGTH_MASK:I
-Landroid/icu/text/ArabicShaping;->LETTERS_MASK:I
-Landroid/icu/text/ArabicShaping;->LETTERS_NOOP:I
-Landroid/icu/text/ArabicShaping;->LETTERS_SHAPE:I
-Landroid/icu/text/ArabicShaping;->LETTERS_SHAPE_TASHKEEL_ISOLATED:I
-Landroid/icu/text/ArabicShaping;->LETTERS_UNSHAPE:I
-Landroid/icu/text/ArabicShaping;->LINKL:I
-Landroid/icu/text/ArabicShaping;->LINKR:I
-Landroid/icu/text/ArabicShaping;->LINK_MASK:I
-Landroid/icu/text/ArabicShaping;->NEW_TAIL_CHAR:C
-Landroid/icu/text/ArabicShaping;->normalize([CII)I
-Landroid/icu/text/ArabicShaping;->OLD_TAIL_CHAR:C
-Landroid/icu/text/ArabicShaping;->options:I
-Landroid/icu/text/ArabicShaping;->presLink:[I
-Landroid/icu/text/ArabicShaping;->SEEN_MASK:I
-Landroid/icu/text/ArabicShaping;->SEEN_TWOCELL_NEAR:I
-Landroid/icu/text/ArabicShaping;->SHADDA06_CHAR:C
-Landroid/icu/text/ArabicShaping;->SHADDA_CHAR:C
-Landroid/icu/text/ArabicShaping;->SHADDA_TATWEEL_CHAR:C
-Landroid/icu/text/ArabicShaping;->shape([CII)V
-Landroid/icu/text/ArabicShaping;->shape([CII[CII)I
-Landroid/icu/text/ArabicShaping;->shapeTable:[[[I
-Landroid/icu/text/ArabicShaping;->shapeToArabicDigitsWithContext([CIICZ)V
-Landroid/icu/text/ArabicShaping;->shapeUnicode([CIIII)I
-Landroid/icu/text/ArabicShaping;->SHAPE_MODE:I
-Landroid/icu/text/ArabicShaping;->SHAPE_TAIL_NEW_UNICODE:I
-Landroid/icu/text/ArabicShaping;->SHAPE_TAIL_TYPE_MASK:I
-Landroid/icu/text/ArabicShaping;->shiftArray([CIIC)V
-Landroid/icu/text/ArabicShaping;->spacesRelativeToTextBeginEnd:Z
-Landroid/icu/text/ArabicShaping;->SPACES_RELATIVE_TO_TEXT_BEGIN_END:I
-Landroid/icu/text/ArabicShaping;->SPACES_RELATIVE_TO_TEXT_MASK:I
-Landroid/icu/text/ArabicShaping;->SPACE_CHAR:C
-Landroid/icu/text/ArabicShaping;->specialChar(C)I
-Landroid/icu/text/ArabicShaping;->tailChar:C
-Landroid/icu/text/ArabicShaping;->tailFamilyIsolatedFinal:[I
-Landroid/icu/text/ArabicShaping;->tashkeelMedial:[I
-Landroid/icu/text/ArabicShaping;->TASHKEEL_BEGIN:I
-Landroid/icu/text/ArabicShaping;->TASHKEEL_END:I
-Landroid/icu/text/ArabicShaping;->TASHKEEL_MASK:I
-Landroid/icu/text/ArabicShaping;->TASHKEEL_REPLACE_BY_TATWEEL:I
-Landroid/icu/text/ArabicShaping;->TASHKEEL_RESIZE:I
-Landroid/icu/text/ArabicShaping;->TASHKEEL_SPACE_SUB:C
-Landroid/icu/text/ArabicShaping;->TATWEEL_CHAR:C
-Landroid/icu/text/ArabicShaping;->TEXT_DIRECTION_LOGICAL:I
-Landroid/icu/text/ArabicShaping;->TEXT_DIRECTION_MASK:I
-Landroid/icu/text/ArabicShaping;->TEXT_DIRECTION_VISUAL_LTR:I
-Landroid/icu/text/ArabicShaping;->TEXT_DIRECTION_VISUAL_RTL:I
-Landroid/icu/text/ArabicShaping;->yehHamzaToYeh:[C
-Landroid/icu/text/ArabicShaping;->YEHHAMZA_MASK:I
-Landroid/icu/text/ArabicShaping;->YEHHAMZA_TWOCELL_NEAR:I
-Landroid/icu/text/ArabicShaping;->YEH_HAMZAFE_CHAR:C
-Landroid/icu/text/ArabicShaping;->YEH_HAMZA_CHAR:C
-Landroid/icu/text/ArabicShapingException;-><init>(Ljava/lang/String;)V
-Landroid/icu/text/Bidi$BracketData;-><init>()V
-Landroid/icu/text/Bidi$BracketData;->isNumbersSpecial:Z
-Landroid/icu/text/Bidi$BracketData;->isoRunLast:I
-Landroid/icu/text/Bidi$BracketData;->isoRuns:[Landroid/icu/text/Bidi$IsoRun;
-Landroid/icu/text/Bidi$BracketData;->openings:[Landroid/icu/text/Bidi$Opening;
-Landroid/icu/text/Bidi$ImpTabPair;-><init>([[B[[B[S[S)V
-Landroid/icu/text/Bidi$ImpTabPair;->impact:[[S
-Landroid/icu/text/Bidi$ImpTabPair;->imptab:[[[B
-Landroid/icu/text/Bidi$InsertPoints;-><init>()V
-Landroid/icu/text/Bidi$InsertPoints;->confirmed:I
-Landroid/icu/text/Bidi$InsertPoints;->points:[Landroid/icu/text/Bidi$Point;
-Landroid/icu/text/Bidi$InsertPoints;->size:I
-Landroid/icu/text/Bidi$Isolate;-><init>()V
-Landroid/icu/text/Bidi$Isolate;->start1:I
-Landroid/icu/text/Bidi$Isolate;->startON:I
-Landroid/icu/text/Bidi$Isolate;->state:S
-Landroid/icu/text/Bidi$Isolate;->stateImp:S
-Landroid/icu/text/Bidi$IsoRun;-><init>()V
-Landroid/icu/text/Bidi$IsoRun;->contextDir:B
-Landroid/icu/text/Bidi$IsoRun;->contextPos:I
-Landroid/icu/text/Bidi$IsoRun;->lastBase:B
-Landroid/icu/text/Bidi$IsoRun;->lastStrong:B
-Landroid/icu/text/Bidi$IsoRun;->level:B
-Landroid/icu/text/Bidi$IsoRun;->limit:S
-Landroid/icu/text/Bidi$IsoRun;->start:S
-Landroid/icu/text/Bidi$LevState;-><init>()V
-Landroid/icu/text/Bidi$LevState;->impAct:[S
-Landroid/icu/text/Bidi$LevState;->impTab:[[B
-Landroid/icu/text/Bidi$LevState;->lastStrongRTL:I
-Landroid/icu/text/Bidi$LevState;->runLevel:B
-Landroid/icu/text/Bidi$LevState;->runStart:I
-Landroid/icu/text/Bidi$LevState;->startL2EN:I
-Landroid/icu/text/Bidi$LevState;->startON:I
-Landroid/icu/text/Bidi$LevState;->state:S
-Landroid/icu/text/Bidi$Opening;-><init>()V
-Landroid/icu/text/Bidi$Opening;->contextDir:B
-Landroid/icu/text/Bidi$Opening;->contextPos:I
-Landroid/icu/text/Bidi$Opening;->flags:S
-Landroid/icu/text/Bidi$Opening;->match:I
-Landroid/icu/text/Bidi$Opening;->position:I
-Landroid/icu/text/Bidi$Point;-><init>()V
-Landroid/icu/text/Bidi$Point;->flag:I
-Landroid/icu/text/Bidi$Point;->pos:I
-Landroid/icu/text/Bidi;-><init>()V
-Landroid/icu/text/Bidi;-><init>(II)V
-Landroid/icu/text/Bidi;-><init>(Ljava/lang/String;I)V
-Landroid/icu/text/Bidi;-><init>(Ljava/text/AttributedCharacterIterator;)V
-Landroid/icu/text/Bidi;-><init>([CI[BIII)V
-Landroid/icu/text/Bidi;->addPoint(II)V
-Landroid/icu/text/Bidi;->adjustWSLevels()V
-Landroid/icu/text/Bidi;->AL:B
-Landroid/icu/text/Bidi;->AN:B
-Landroid/icu/text/Bidi;->B:B
-Landroid/icu/text/Bidi;->baseIsLeftToRight()Z
-Landroid/icu/text/Bidi;->bdp:Landroid/icu/impl/UBiDiProps;
-Landroid/icu/text/Bidi;->Bidi_Abs(I)I
-Landroid/icu/text/Bidi;->Bidi_Min(II)I
-Landroid/icu/text/Bidi;->BN:B
-Landroid/icu/text/Bidi;->bracketAddOpening(Landroid/icu/text/Bidi$BracketData;CI)V
-Landroid/icu/text/Bidi;->bracketInit(Landroid/icu/text/Bidi$BracketData;)V
-Landroid/icu/text/Bidi;->bracketProcessB(Landroid/icu/text/Bidi$BracketData;B)V
-Landroid/icu/text/Bidi;->bracketProcessBoundary(Landroid/icu/text/Bidi$BracketData;IBB)V
-Landroid/icu/text/Bidi;->bracketProcessChar(Landroid/icu/text/Bidi$BracketData;I)V
-Landroid/icu/text/Bidi;->bracketProcessClosing(Landroid/icu/text/Bidi$BracketData;II)B
-Landroid/icu/text/Bidi;->bracketProcessLRI_RLI(Landroid/icu/text/Bidi$BracketData;B)V
-Landroid/icu/text/Bidi;->bracketProcessPDI(Landroid/icu/text/Bidi$BracketData;)V
-Landroid/icu/text/Bidi;->checkExplicitLevels()B
-Landroid/icu/text/Bidi;->checkParaCount()V
-Landroid/icu/text/Bidi;->CLASS_DEFAULT:I
-Landroid/icu/text/Bidi;->controlCount:I
-Landroid/icu/text/Bidi;->countParagraphs()I
-Landroid/icu/text/Bidi;->countRuns()I
-Landroid/icu/text/Bidi;->CR:C
-Landroid/icu/text/Bidi;->createLineBidi(II)Landroid/icu/text/Bidi;
-Landroid/icu/text/Bidi;->CS:B
-Landroid/icu/text/Bidi;->customClassifier:Landroid/icu/text/BidiClassifier;
-Landroid/icu/text/Bidi;->defaultParaLevel:B
-Landroid/icu/text/Bidi;->direction:B
-Landroid/icu/text/Bidi;->directionFromFlags()B
-Landroid/icu/text/Bidi;->DIRECTION_DEFAULT_LEFT_TO_RIGHT:I
-Landroid/icu/text/Bidi;->DIRECTION_DEFAULT_RIGHT_TO_LEFT:I
-Landroid/icu/text/Bidi;->DIRECTION_LEFT_TO_RIGHT:I
-Landroid/icu/text/Bidi;->DIRECTION_RIGHT_TO_LEFT:I
-Landroid/icu/text/Bidi;->DirFromStrong(B)B
-Landroid/icu/text/Bidi;->DirPropFlag(B)I
-Landroid/icu/text/Bidi;->DirPropFlagE(B)I
-Landroid/icu/text/Bidi;->DirPropFlagE:[I
-Landroid/icu/text/Bidi;->DirPropFlagLR(B)I
-Landroid/icu/text/Bidi;->DirPropFlagLR:[I
-Landroid/icu/text/Bidi;->DirPropFlagMultiRuns:I
-Landroid/icu/text/Bidi;->DirPropFlagO(B)I
-Landroid/icu/text/Bidi;->DirPropFlagO:[I
-Landroid/icu/text/Bidi;->dirProps:[B
-Landroid/icu/text/Bidi;->dirPropsMemory:[B
-Landroid/icu/text/Bidi;->DO_MIRRORING:S
-Landroid/icu/text/Bidi;->EN:B
-Landroid/icu/text/Bidi;->ENL:B
-Landroid/icu/text/Bidi;->ENR:B
-Landroid/icu/text/Bidi;->epilogue:Ljava/lang/String;
-Landroid/icu/text/Bidi;->ES:B
-Landroid/icu/text/Bidi;->ET:B
-Landroid/icu/text/Bidi;->FIRSTALLOC:I
-Landroid/icu/text/Bidi;->firstL_R_AL()B
-Landroid/icu/text/Bidi;->firstL_R_AL_EN_AN()B
-Landroid/icu/text/Bidi;->fixN0c(Landroid/icu/text/Bidi$BracketData;IIB)V
-Landroid/icu/text/Bidi;->flags:I
-Landroid/icu/text/Bidi;->FOUND_L:B
-Landroid/icu/text/Bidi;->FOUND_R:B
-Landroid/icu/text/Bidi;->FSI:B
-Landroid/icu/text/Bidi;->GetAction(B)S
-Landroid/icu/text/Bidi;->GetActionProps(S)S
-Landroid/icu/text/Bidi;->getBaseDirection(Ljava/lang/CharSequence;)B
-Landroid/icu/text/Bidi;->getBaseLevel()I
-Landroid/icu/text/Bidi;->getCustomClassifier()Landroid/icu/text/BidiClassifier;
-Landroid/icu/text/Bidi;->getCustomizedClass(I)I
-Landroid/icu/text/Bidi;->getDirection()B
-Landroid/icu/text/Bidi;->getDirProps()V
-Landroid/icu/text/Bidi;->getDirPropsMemory(I)V
-Landroid/icu/text/Bidi;->getDirPropsMemory(ZI)V
-Landroid/icu/text/Bidi;->getInitialDirPropsMemory(I)V
-Landroid/icu/text/Bidi;->getInitialLevelsMemory(I)V
-Landroid/icu/text/Bidi;->getInitialRunsMemory(I)V
-Landroid/icu/text/Bidi;->getLength()I
-Landroid/icu/text/Bidi;->getLevelAt(I)B
-Landroid/icu/text/Bidi;->getLevels()[B
-Landroid/icu/text/Bidi;->getLevelsMemory(I)V
-Landroid/icu/text/Bidi;->getLevelsMemory(ZI)V
-Landroid/icu/text/Bidi;->getLogicalIndex(I)I
-Landroid/icu/text/Bidi;->getLogicalMap()[I
-Landroid/icu/text/Bidi;->getLogicalRun(I)Landroid/icu/text/BidiRun;
-Landroid/icu/text/Bidi;->getLogicalToVisualRunsMap()V
-Landroid/icu/text/Bidi;->GetLRFromLevel(B)B
-Landroid/icu/text/Bidi;->getMemory(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Class;ZI)Ljava/lang/Object;
-Landroid/icu/text/Bidi;->getParagraph(I)Landroid/icu/text/BidiRun;
-Landroid/icu/text/Bidi;->getParagraphByIndex(I)Landroid/icu/text/BidiRun;
-Landroid/icu/text/Bidi;->getParagraphIndex(I)I
-Landroid/icu/text/Bidi;->getParaLevel()B
-Landroid/icu/text/Bidi;->GetParaLevelAt(I)B
-Landroid/icu/text/Bidi;->getProcessedLength()I
-Landroid/icu/text/Bidi;->getReorderingMode()I
-Landroid/icu/text/Bidi;->getReorderingOptions()I
-Landroid/icu/text/Bidi;->getResultLength()I
-Landroid/icu/text/Bidi;->getRunCount()I
-Landroid/icu/text/Bidi;->getRunLevel(I)I
-Landroid/icu/text/Bidi;->getRunLimit(I)I
-Landroid/icu/text/Bidi;->getRunsMemory(I)V
-Landroid/icu/text/Bidi;->getRunsMemory(ZI)V
-Landroid/icu/text/Bidi;->getRunStart(I)I
-Landroid/icu/text/Bidi;->GetState(B)S
-Landroid/icu/text/Bidi;->GetStateProps(S)S
-Landroid/icu/text/Bidi;->getText()[C
-Landroid/icu/text/Bidi;->getTextAsString()Ljava/lang/String;
-Landroid/icu/text/Bidi;->getVisualIndex(I)I
-Landroid/icu/text/Bidi;->getVisualMap()[I
-Landroid/icu/text/Bidi;->getVisualRun(I)Landroid/icu/text/BidiRun;
-Landroid/icu/text/Bidi;->groupProp:[S
-Landroid/icu/text/Bidi;->impAct0:[S
-Landroid/icu/text/Bidi;->impAct1:[S
-Landroid/icu/text/Bidi;->impAct2:[S
-Landroid/icu/text/Bidi;->impAct3:[S
-Landroid/icu/text/Bidi;->IMPTABLEVELS_COLUMNS:I
-Landroid/icu/text/Bidi;->IMPTABLEVELS_RES:I
-Landroid/icu/text/Bidi;->impTabL_DEFAULT:[[B
-Landroid/icu/text/Bidi;->impTabL_GROUP_NUMBERS_WITH_R:[[B
-Landroid/icu/text/Bidi;->impTabL_INVERSE_FOR_NUMBERS_SPECIAL_WITH_MARKS:[[B
-Landroid/icu/text/Bidi;->impTabL_INVERSE_LIKE_DIRECT_WITH_MARKS:[[B
-Landroid/icu/text/Bidi;->impTabL_INVERSE_NUMBERS_AS_L:[[B
-Landroid/icu/text/Bidi;->impTabL_NUMBERS_SPECIAL:[[B
-Landroid/icu/text/Bidi;->impTabPair:Landroid/icu/text/Bidi$ImpTabPair;
-Landroid/icu/text/Bidi;->impTabProps:[[S
-Landroid/icu/text/Bidi;->IMPTABPROPS_COLUMNS:I
-Landroid/icu/text/Bidi;->IMPTABPROPS_RES:I
-Landroid/icu/text/Bidi;->impTabR_DEFAULT:[[B
-Landroid/icu/text/Bidi;->impTabR_GROUP_NUMBERS_WITH_R:[[B
-Landroid/icu/text/Bidi;->impTabR_INVERSE_LIKE_DIRECT:[[B
-Landroid/icu/text/Bidi;->impTabR_INVERSE_LIKE_DIRECT_WITH_MARKS:[[B
-Landroid/icu/text/Bidi;->impTabR_INVERSE_NUMBERS_AS_L:[[B
-Landroid/icu/text/Bidi;->impTab_DEFAULT:Landroid/icu/text/Bidi$ImpTabPair;
-Landroid/icu/text/Bidi;->impTab_GROUP_NUMBERS_WITH_R:Landroid/icu/text/Bidi$ImpTabPair;
-Landroid/icu/text/Bidi;->impTab_INVERSE_FOR_NUMBERS_SPECIAL:Landroid/icu/text/Bidi$ImpTabPair;
-Landroid/icu/text/Bidi;->impTab_INVERSE_FOR_NUMBERS_SPECIAL_WITH_MARKS:Landroid/icu/text/Bidi$ImpTabPair;
-Landroid/icu/text/Bidi;->impTab_INVERSE_LIKE_DIRECT:Landroid/icu/text/Bidi$ImpTabPair;
-Landroid/icu/text/Bidi;->impTab_INVERSE_LIKE_DIRECT_WITH_MARKS:Landroid/icu/text/Bidi$ImpTabPair;
-Landroid/icu/text/Bidi;->impTab_INVERSE_NUMBERS_AS_L:Landroid/icu/text/Bidi$ImpTabPair;
-Landroid/icu/text/Bidi;->impTab_NUMBERS_SPECIAL:Landroid/icu/text/Bidi$ImpTabPair;
-Landroid/icu/text/Bidi;->insertPoints:Landroid/icu/text/Bidi$InsertPoints;
-Landroid/icu/text/Bidi;->INSERT_LRM_FOR_NUMERIC:S
-Landroid/icu/text/Bidi;->invertMap([I)[I
-Landroid/icu/text/Bidi;->IsBidiControlChar(I)Z
-Landroid/icu/text/Bidi;->IsDefaultLevel(B)Z
-Landroid/icu/text/Bidi;->isGoodLogicalToVisualRunsMap:Z
-Landroid/icu/text/Bidi;->isInverse()Z
-Landroid/icu/text/Bidi;->isInverse:Z
-Landroid/icu/text/Bidi;->isLeftToRight()Z
-Landroid/icu/text/Bidi;->isMixed()Z
-Landroid/icu/text/Bidi;->ISOLATE:I
-Landroid/icu/text/Bidi;->isolateCount:I
-Landroid/icu/text/Bidi;->isolates:[Landroid/icu/text/Bidi$Isolate;
-Landroid/icu/text/Bidi;->isOrderParagraphsLTR()Z
-Landroid/icu/text/Bidi;->isRightToLeft()Z
-Landroid/icu/text/Bidi;->KEEP_BASE_COMBINING:S
-Landroid/icu/text/Bidi;->L:B
-Landroid/icu/text/Bidi;->lastArabicPos:I
-Landroid/icu/text/Bidi;->lastL_R_AL()B
-Landroid/icu/text/Bidi;->length:I
-Landroid/icu/text/Bidi;->levels:[B
-Landroid/icu/text/Bidi;->levelsMemory:[B
-Landroid/icu/text/Bidi;->LEVEL_DEFAULT_LTR:B
-Landroid/icu/text/Bidi;->LEVEL_DEFAULT_RTL:B
-Landroid/icu/text/Bidi;->LEVEL_OVERRIDE:B
-Landroid/icu/text/Bidi;->LF:C
-Landroid/icu/text/Bidi;->logicalToVisualRunsMap:[I
-Landroid/icu/text/Bidi;->LOOKING_FOR_PDI:I
-Landroid/icu/text/Bidi;->LRE:B
-Landroid/icu/text/Bidi;->LRI:B
-Landroid/icu/text/Bidi;->LRM_AFTER:I
-Landroid/icu/text/Bidi;->LRM_BEFORE:I
-Landroid/icu/text/Bidi;->LRO:B
-Landroid/icu/text/Bidi;->LTR:B
-Landroid/icu/text/Bidi;->MAP_NOWHERE:I
-Landroid/icu/text/Bidi;->MASK_BN_EXPLICIT:I
-Landroid/icu/text/Bidi;->MASK_B_S:I
-Landroid/icu/text/Bidi;->MASK_EMBEDDING:I
-Landroid/icu/text/Bidi;->MASK_EXPLICIT:I
-Landroid/icu/text/Bidi;->MASK_ISO:I
-Landroid/icu/text/Bidi;->MASK_LTR:I
-Landroid/icu/text/Bidi;->MASK_POSSIBLE_N:I
-Landroid/icu/text/Bidi;->MASK_RTL:I
-Landroid/icu/text/Bidi;->MASK_R_AL:I
-Landroid/icu/text/Bidi;->MASK_STRONG_EN_AN:I
-Landroid/icu/text/Bidi;->MASK_WS:I
-Landroid/icu/text/Bidi;->MAX_EXPLICIT_LEVEL:B
-Landroid/icu/text/Bidi;->mayAllocateRuns:Z
-Landroid/icu/text/Bidi;->mayAllocateText:Z
-Landroid/icu/text/Bidi;->MIXED:B
-Landroid/icu/text/Bidi;->NEUTRAL:B
-Landroid/icu/text/Bidi;->NoOverride(B)B
-Landroid/icu/text/Bidi;->NOT_SEEKING_STRONG:I
-Landroid/icu/text/Bidi;->NSM:B
-Landroid/icu/text/Bidi;->ON:B
-Landroid/icu/text/Bidi;->OPTION_DEFAULT:I
-Landroid/icu/text/Bidi;->OPTION_INSERT_MARKS:I
-Landroid/icu/text/Bidi;->OPTION_REMOVE_CONTROLS:I
-Landroid/icu/text/Bidi;->OPTION_STREAMING:I
-Landroid/icu/text/Bidi;->orderParagraphsLTR(Z)V
-Landroid/icu/text/Bidi;->orderParagraphsLTR:Z
-Landroid/icu/text/Bidi;->originalLength:I
-Landroid/icu/text/Bidi;->OUTPUT_REVERSE:S
-Landroid/icu/text/Bidi;->paraBidi:Landroid/icu/text/Bidi;
-Landroid/icu/text/Bidi;->paraCount:I
-Landroid/icu/text/Bidi;->paraLevel:B
-Landroid/icu/text/Bidi;->paras_level:[B
-Landroid/icu/text/Bidi;->paras_limit:[I
-Landroid/icu/text/Bidi;->PDF:B
-Landroid/icu/text/Bidi;->PDI:B
-Landroid/icu/text/Bidi;->processPropertySeq(Landroid/icu/text/Bidi$LevState;SII)V
-Landroid/icu/text/Bidi;->prologue:Ljava/lang/String;
-Landroid/icu/text/Bidi;->R:B
-Landroid/icu/text/Bidi;->REMOVE_BIDI_CONTROLS:S
-Landroid/icu/text/Bidi;->reorderingMode:I
-Landroid/icu/text/Bidi;->reorderingOptions:I
-Landroid/icu/text/Bidi;->reorderLogical([B)[I
-Landroid/icu/text/Bidi;->reorderVisual([B)[I
-Landroid/icu/text/Bidi;->reorderVisually([BI[Ljava/lang/Object;II)V
-Landroid/icu/text/Bidi;->REORDER_COUNT:S
-Landroid/icu/text/Bidi;->REORDER_DEFAULT:S
-Landroid/icu/text/Bidi;->REORDER_GROUP_NUMBERS_WITH_R:S
-Landroid/icu/text/Bidi;->REORDER_INVERSE_FOR_NUMBERS_SPECIAL:S
-Landroid/icu/text/Bidi;->REORDER_INVERSE_LIKE_DIRECT:S
-Landroid/icu/text/Bidi;->REORDER_INVERSE_NUMBERS_AS_L:S
-Landroid/icu/text/Bidi;->REORDER_LAST_LOGICAL_TO_VISUAL:S
-Landroid/icu/text/Bidi;->REORDER_NUMBERS_SPECIAL:S
-Landroid/icu/text/Bidi;->REORDER_RUNS_ONLY:S
-Landroid/icu/text/Bidi;->requiresBidi([CII)Z
-Landroid/icu/text/Bidi;->resolveExplicitLevels()B
-Landroid/icu/text/Bidi;->resolveImplicitLevels(IISS)V
-Landroid/icu/text/Bidi;->resultLength:I
-Landroid/icu/text/Bidi;->RLE:B
-Landroid/icu/text/Bidi;->RLI:B
-Landroid/icu/text/Bidi;->RLM_AFTER:I
-Landroid/icu/text/Bidi;->RLM_BEFORE:I
-Landroid/icu/text/Bidi;->RLO:B
-Landroid/icu/text/Bidi;->RTL:B
-Landroid/icu/text/Bidi;->runCount:I
-Landroid/icu/text/Bidi;->runs:[Landroid/icu/text/BidiRun;
-Landroid/icu/text/Bidi;->runsMemory:[Landroid/icu/text/BidiRun;
-Landroid/icu/text/Bidi;->S:B
-Landroid/icu/text/Bidi;->SEEKING_STRONG_FOR_FSI:I
-Landroid/icu/text/Bidi;->SEEKING_STRONG_FOR_PARA:I
-Landroid/icu/text/Bidi;->setContext(Ljava/lang/String;Ljava/lang/String;)V
-Landroid/icu/text/Bidi;->setCustomClassifier(Landroid/icu/text/BidiClassifier;)V
-Landroid/icu/text/Bidi;->setInverse(Z)V
-Landroid/icu/text/Bidi;->setLevelsOutsideIsolates(IIB)V
-Landroid/icu/text/Bidi;->setLine(II)Landroid/icu/text/Bidi;
-Landroid/icu/text/Bidi;->setPara(Ljava/lang/String;B[B)V
-Landroid/icu/text/Bidi;->setPara(Ljava/text/AttributedCharacterIterator;)V
-Landroid/icu/text/Bidi;->setPara([CB[B)V
-Landroid/icu/text/Bidi;->setParaRunsOnly([CB)V
-Landroid/icu/text/Bidi;->setParaSuccess()V
-Landroid/icu/text/Bidi;->setReorderingMode(I)V
-Landroid/icu/text/Bidi;->setReorderingOptions(I)V
-Landroid/icu/text/Bidi;->simpleRuns:[Landroid/icu/text/BidiRun;
-Landroid/icu/text/Bidi;->SIMPLE_OPENINGS_COUNT:I
-Landroid/icu/text/Bidi;->SIMPLE_PARAS_COUNT:I
-Landroid/icu/text/Bidi;->testDirPropFlagAt(II)Z
-Landroid/icu/text/Bidi;->text:[C
-Landroid/icu/text/Bidi;->trailingWSStart:I
-Landroid/icu/text/Bidi;->verifyRange(III)V
-Landroid/icu/text/Bidi;->verifyValidPara()V
-Landroid/icu/text/Bidi;->verifyValidParaOrLine()V
-Landroid/icu/text/Bidi;->writeReordered(I)Ljava/lang/String;
-Landroid/icu/text/Bidi;->writeReverse(Ljava/lang/String;I)Ljava/lang/String;
-Landroid/icu/text/Bidi;->WS:B
-Landroid/icu/text/Bidi;->_AN:S
-Landroid/icu/text/Bidi;->_B:S
-Landroid/icu/text/Bidi;->_EN:S
-Landroid/icu/text/Bidi;->_L:S
-Landroid/icu/text/Bidi;->_ON:S
-Landroid/icu/text/Bidi;->_R:S
-Landroid/icu/text/Bidi;->_S:S
-Landroid/icu/text/BidiClassifier;-><init>(Ljava/lang/Object;)V
-Landroid/icu/text/BidiClassifier;->classify(I)I
-Landroid/icu/text/BidiClassifier;->context:Ljava/lang/Object;
-Landroid/icu/text/BidiClassifier;->getContext()Ljava/lang/Object;
-Landroid/icu/text/BidiClassifier;->setContext(Ljava/lang/Object;)V
-Landroid/icu/text/BidiRun;-><init>()V
-Landroid/icu/text/BidiRun;-><init>(IIB)V
-Landroid/icu/text/BidiRun;->copyFrom(Landroid/icu/text/BidiRun;)V
-Landroid/icu/text/BidiRun;->getDirection()B
-Landroid/icu/text/BidiRun;->getEmbeddingLevel()B
-Landroid/icu/text/BidiRun;->getLength()I
-Landroid/icu/text/BidiRun;->getLimit()I
-Landroid/icu/text/BidiRun;->getStart()I
-Landroid/icu/text/BidiRun;->insertRemove:I
-Landroid/icu/text/BidiRun;->isEvenRun()Z
-Landroid/icu/text/BidiRun;->isOddRun()Z
-Landroid/icu/text/BidiRun;->level:B
-Landroid/icu/text/BidiRun;->limit:I
-Landroid/icu/text/BidiRun;->start:I
-Landroid/icu/text/BidiTransform$Mirroring;->OFF:Landroid/icu/text/BidiTransform$Mirroring;
-Landroid/icu/text/BidiTransform$Mirroring;->ON:Landroid/icu/text/BidiTransform$Mirroring;
-Landroid/icu/text/BidiTransform$Mirroring;->valueOf(Ljava/lang/String;)Landroid/icu/text/BidiTransform$Mirroring;
-Landroid/icu/text/BidiTransform$Mirroring;->values()[Landroid/icu/text/BidiTransform$Mirroring;
-Landroid/icu/text/BidiTransform$Order;->LOGICAL:Landroid/icu/text/BidiTransform$Order;
-Landroid/icu/text/BidiTransform$Order;->valueOf(Ljava/lang/String;)Landroid/icu/text/BidiTransform$Order;
-Landroid/icu/text/BidiTransform$Order;->values()[Landroid/icu/text/BidiTransform$Order;
-Landroid/icu/text/BidiTransform$Order;->VISUAL:Landroid/icu/text/BidiTransform$Order;
-Landroid/icu/text/BidiTransform$ReorderingScheme;->doTransform(Landroid/icu/text/BidiTransform;)V
-Landroid/icu/text/BidiTransform$ReorderingScheme;->LOG_LTR_TO_LOG_LTR:Landroid/icu/text/BidiTransform$ReorderingScheme;
-Landroid/icu/text/BidiTransform$ReorderingScheme;->LOG_LTR_TO_LOG_RTL:Landroid/icu/text/BidiTransform$ReorderingScheme;
-Landroid/icu/text/BidiTransform$ReorderingScheme;->LOG_LTR_TO_VIS_LTR:Landroid/icu/text/BidiTransform$ReorderingScheme;
-Landroid/icu/text/BidiTransform$ReorderingScheme;->LOG_LTR_TO_VIS_RTL:Landroid/icu/text/BidiTransform$ReorderingScheme;
-Landroid/icu/text/BidiTransform$ReorderingScheme;->LOG_RTL_TO_LOG_LTR:Landroid/icu/text/BidiTransform$ReorderingScheme;
-Landroid/icu/text/BidiTransform$ReorderingScheme;->LOG_RTL_TO_LOG_RTL:Landroid/icu/text/BidiTransform$ReorderingScheme;
-Landroid/icu/text/BidiTransform$ReorderingScheme;->LOG_RTL_TO_VIS_LTR:Landroid/icu/text/BidiTransform$ReorderingScheme;
-Landroid/icu/text/BidiTransform$ReorderingScheme;->LOG_RTL_TO_VIS_RTL:Landroid/icu/text/BidiTransform$ReorderingScheme;
-Landroid/icu/text/BidiTransform$ReorderingScheme;->matches(BLandroid/icu/text/BidiTransform$Order;BLandroid/icu/text/BidiTransform$Order;)Z
-Landroid/icu/text/BidiTransform$ReorderingScheme;->valueOf(Ljava/lang/String;)Landroid/icu/text/BidiTransform$ReorderingScheme;
-Landroid/icu/text/BidiTransform$ReorderingScheme;->values()[Landroid/icu/text/BidiTransform$ReorderingScheme;
-Landroid/icu/text/BidiTransform$ReorderingScheme;->VIS_LTR_TO_LOG_LTR:Landroid/icu/text/BidiTransform$ReorderingScheme;
-Landroid/icu/text/BidiTransform$ReorderingScheme;->VIS_LTR_TO_LOG_RTL:Landroid/icu/text/BidiTransform$ReorderingScheme;
-Landroid/icu/text/BidiTransform$ReorderingScheme;->VIS_LTR_TO_VIS_LTR:Landroid/icu/text/BidiTransform$ReorderingScheme;
-Landroid/icu/text/BidiTransform$ReorderingScheme;->VIS_LTR_TO_VIS_RTL:Landroid/icu/text/BidiTransform$ReorderingScheme;
-Landroid/icu/text/BidiTransform$ReorderingScheme;->VIS_RTL_TO_LOG_LTR:Landroid/icu/text/BidiTransform$ReorderingScheme;
-Landroid/icu/text/BidiTransform$ReorderingScheme;->VIS_RTL_TO_LOG_RTL:Landroid/icu/text/BidiTransform$ReorderingScheme;
-Landroid/icu/text/BidiTransform$ReorderingScheme;->VIS_RTL_TO_VIS_LTR:Landroid/icu/text/BidiTransform$ReorderingScheme;
-Landroid/icu/text/BidiTransform$ReorderingScheme;->VIS_RTL_TO_VIS_RTL:Landroid/icu/text/BidiTransform$ReorderingScheme;
-Landroid/icu/text/BidiTransform;-><init>()V
-Landroid/icu/text/BidiTransform;->bidi:Landroid/icu/text/Bidi;
-Landroid/icu/text/BidiTransform;->findMatchingScheme(BLandroid/icu/text/BidiTransform$Order;BLandroid/icu/text/BidiTransform$Order;)Landroid/icu/text/BidiTransform$ReorderingScheme;
-Landroid/icu/text/BidiTransform;->IsLogical(Landroid/icu/text/BidiTransform$Order;)Z
-Landroid/icu/text/BidiTransform;->IsLTR(B)Z
-Landroid/icu/text/BidiTransform;->IsRTL(B)Z
-Landroid/icu/text/BidiTransform;->IsVisual(Landroid/icu/text/BidiTransform$Order;)Z
-Landroid/icu/text/BidiTransform;->mirror()V
-Landroid/icu/text/BidiTransform;->reorder()V
-Landroid/icu/text/BidiTransform;->reorderingOptions:I
-Landroid/icu/text/BidiTransform;->resolve(BI)V
-Landroid/icu/text/BidiTransform;->resolveBaseDirection([B)V
-Landroid/icu/text/BidiTransform;->reverse()V
-Landroid/icu/text/BidiTransform;->shapeArabic(I)V
-Landroid/icu/text/BidiTransform;->shapeArabic(II)V
-Landroid/icu/text/BidiTransform;->shapingOptions:I
-Landroid/icu/text/BidiTransform;->text:Ljava/lang/String;
-Landroid/icu/text/BidiTransform;->transform(Ljava/lang/CharSequence;BLandroid/icu/text/BidiTransform$Order;BLandroid/icu/text/BidiTransform$Order;Landroid/icu/text/BidiTransform$Mirroring;I)Ljava/lang/String;
-Landroid/icu/text/BreakIterator$BreakIteratorCache;-><init>(Landroid/icu/util/ULocale;Landroid/icu/text/BreakIterator;)V
-Landroid/icu/text/BreakIterator$BreakIteratorCache;->createBreakInstance()Landroid/icu/text/BreakIterator;
-Landroid/icu/text/BreakIterator$BreakIteratorCache;->getLocale()Landroid/icu/util/ULocale;
-Landroid/icu/text/BreakIterator$BreakIteratorCache;->iter:Landroid/icu/text/BreakIterator;
-Landroid/icu/text/BreakIterator$BreakIteratorCache;->where:Landroid/icu/util/ULocale;
-Landroid/icu/text/BreakIterator$BreakIteratorServiceShim;-><init>()V
-Landroid/icu/text/BreakIterator$BreakIteratorServiceShim;->createBreakIterator(Landroid/icu/util/ULocale;I)Landroid/icu/text/BreakIterator;
-Landroid/icu/text/BreakIterator$BreakIteratorServiceShim;->getAvailableLocales()[Ljava/util/Locale;
-Landroid/icu/text/BreakIterator$BreakIteratorServiceShim;->getAvailableULocales()[Landroid/icu/util/ULocale;
-Landroid/icu/text/BreakIterator$BreakIteratorServiceShim;->registerInstance(Landroid/icu/text/BreakIterator;Landroid/icu/util/ULocale;I)Ljava/lang/Object;
-Landroid/icu/text/BreakIterator$BreakIteratorServiceShim;->unregister(Ljava/lang/Object;)Z
-Landroid/icu/text/BreakIterator;->actualLocale:Landroid/icu/util/ULocale;
-Landroid/icu/text/BreakIterator;->DEBUG:Z
-Landroid/icu/text/BreakIterator;->getAvailableULocales()[Landroid/icu/util/ULocale;
-Landroid/icu/text/BreakIterator;->getBreakInstance(Landroid/icu/util/ULocale;I)Landroid/icu/text/BreakIterator;
-Landroid/icu/text/BreakIterator;->getLocale(Landroid/icu/util/ULocale$Type;)Landroid/icu/util/ULocale;
-Landroid/icu/text/BreakIterator;->getShim()Landroid/icu/text/BreakIterator$BreakIteratorServiceShim;
-Landroid/icu/text/BreakIterator;->iterCache:[Landroid/icu/impl/CacheValue;
-Landroid/icu/text/BreakIterator;->KIND_COUNT:I
-Landroid/icu/text/BreakIterator;->registerInstance(Landroid/icu/text/BreakIterator;Landroid/icu/util/ULocale;I)Ljava/lang/Object;
-Landroid/icu/text/BreakIterator;->registerInstance(Landroid/icu/text/BreakIterator;Ljava/util/Locale;I)Ljava/lang/Object;
-Landroid/icu/text/BreakIterator;->setLocale(Landroid/icu/util/ULocale;Landroid/icu/util/ULocale;)V
-Landroid/icu/text/BreakIterator;->setText(Ljava/lang/CharSequence;)V
-Landroid/icu/text/BreakIterator;->shim:Landroid/icu/text/BreakIterator$BreakIteratorServiceShim;
-Landroid/icu/text/BreakIterator;->unregister(Ljava/lang/Object;)Z
-Landroid/icu/text/BreakIterator;->validLocale:Landroid/icu/util/ULocale;
-Landroid/icu/text/CanonicalIterator;-><init>(Ljava/lang/String;)V
-Landroid/icu/text/CanonicalIterator;->buffer:Ljava/lang/StringBuilder;
-Landroid/icu/text/CanonicalIterator;->current:[I
-Landroid/icu/text/CanonicalIterator;->done:Z
-Landroid/icu/text/CanonicalIterator;->extract(ILjava/lang/String;ILjava/lang/StringBuffer;)Ljava/util/Set;
-Landroid/icu/text/CanonicalIterator;->getEquivalents(Ljava/lang/String;)[Ljava/lang/String;
-Landroid/icu/text/CanonicalIterator;->getEquivalents2(Ljava/lang/String;)Ljava/util/Set;
-Landroid/icu/text/CanonicalIterator;->getSource()Ljava/lang/String;
-Landroid/icu/text/CanonicalIterator;->next()Ljava/lang/String;
-Landroid/icu/text/CanonicalIterator;->nfcImpl:Landroid/icu/impl/Normalizer2Impl;
-Landroid/icu/text/CanonicalIterator;->nfd:Landroid/icu/text/Normalizer2;
-Landroid/icu/text/CanonicalIterator;->permute(Ljava/lang/String;ZLjava/util/Set;)V
-Landroid/icu/text/CanonicalIterator;->pieces:[[Ljava/lang/String;
-Landroid/icu/text/CanonicalIterator;->PROGRESS:Z
-Landroid/icu/text/CanonicalIterator;->reset()V
-Landroid/icu/text/CanonicalIterator;->setSource(Ljava/lang/String;)V
-Landroid/icu/text/CanonicalIterator;->SET_WITH_NULL_STRING:Ljava/util/Set;
-Landroid/icu/text/CanonicalIterator;->SKIP_ZEROS:Z
-Landroid/icu/text/CanonicalIterator;->source:Ljava/lang/String;
-Landroid/icu/text/CaseMap$Fold;-><init>(I)V
-Landroid/icu/text/CaseMap$Fold;->apply(Ljava/lang/CharSequence;)Ljava/lang/String;
-Landroid/icu/text/CaseMap$Fold;->apply(Ljava/lang/CharSequence;Ljava/lang/Appendable;Landroid/icu/text/Edits;)Ljava/lang/Appendable;
-Landroid/icu/text/CaseMap$Fold;->DEFAULT:Landroid/icu/text/CaseMap$Fold;
-Landroid/icu/text/CaseMap$Fold;->omitUnchangedText()Landroid/icu/text/CaseMap$Fold;
-Landroid/icu/text/CaseMap$Fold;->OMIT_UNCHANGED:Landroid/icu/text/CaseMap$Fold;
-Landroid/icu/text/CaseMap$Fold;->turkic()Landroid/icu/text/CaseMap$Fold;
-Landroid/icu/text/CaseMap$Fold;->TURKIC:Landroid/icu/text/CaseMap$Fold;
-Landroid/icu/text/CaseMap$Fold;->TURKIC_OMIT_UNCHANGED:Landroid/icu/text/CaseMap$Fold;
-Landroid/icu/text/CaseMap$Lower;-><init>(I)V
-Landroid/icu/text/CaseMap$Lower;->apply(Ljava/util/Locale;Ljava/lang/CharSequence;)Ljava/lang/String;
-Landroid/icu/text/CaseMap$Lower;->apply(Ljava/util/Locale;Ljava/lang/CharSequence;Ljava/lang/Appendable;Landroid/icu/text/Edits;)Ljava/lang/Appendable;
-Landroid/icu/text/CaseMap$Lower;->DEFAULT:Landroid/icu/text/CaseMap$Lower;
-Landroid/icu/text/CaseMap$Lower;->omitUnchangedText()Landroid/icu/text/CaseMap$Lower;
-Landroid/icu/text/CaseMap$Lower;->OMIT_UNCHANGED:Landroid/icu/text/CaseMap$Lower;
-Landroid/icu/text/CaseMap$Title;-><init>(I)V
-Landroid/icu/text/CaseMap$Title;->adjustToCased()Landroid/icu/text/CaseMap$Title;
-Landroid/icu/text/CaseMap$Title;->apply(Ljava/util/Locale;Landroid/icu/text/BreakIterator;Ljava/lang/CharSequence;)Ljava/lang/String;
-Landroid/icu/text/CaseMap$Title;->apply(Ljava/util/Locale;Landroid/icu/text/BreakIterator;Ljava/lang/CharSequence;Ljava/lang/Appendable;Landroid/icu/text/Edits;)Ljava/lang/Appendable;
-Landroid/icu/text/CaseMap$Title;->DEFAULT:Landroid/icu/text/CaseMap$Title;
-Landroid/icu/text/CaseMap$Title;->noBreakAdjustment()Landroid/icu/text/CaseMap$Title;
-Landroid/icu/text/CaseMap$Title;->noLowercase()Landroid/icu/text/CaseMap$Title;
-Landroid/icu/text/CaseMap$Title;->omitUnchangedText()Landroid/icu/text/CaseMap$Title;
-Landroid/icu/text/CaseMap$Title;->OMIT_UNCHANGED:Landroid/icu/text/CaseMap$Title;
-Landroid/icu/text/CaseMap$Title;->sentences()Landroid/icu/text/CaseMap$Title;
-Landroid/icu/text/CaseMap$Title;->wholeString()Landroid/icu/text/CaseMap$Title;
-Landroid/icu/text/CaseMap$Upper;-><init>(I)V
-Landroid/icu/text/CaseMap$Upper;->apply(Ljava/util/Locale;Ljava/lang/CharSequence;)Ljava/lang/String;
-Landroid/icu/text/CaseMap$Upper;->apply(Ljava/util/Locale;Ljava/lang/CharSequence;Ljava/lang/Appendable;Landroid/icu/text/Edits;)Ljava/lang/Appendable;
-Landroid/icu/text/CaseMap$Upper;->DEFAULT:Landroid/icu/text/CaseMap$Upper;
-Landroid/icu/text/CaseMap$Upper;->omitUnchangedText()Landroid/icu/text/CaseMap$Upper;
-Landroid/icu/text/CaseMap$Upper;->OMIT_UNCHANGED:Landroid/icu/text/CaseMap$Upper;
-Landroid/icu/text/CaseMap;-><init>(I)V
-Landroid/icu/text/CaseMap;->fold()Landroid/icu/text/CaseMap$Fold;
-Landroid/icu/text/CaseMap;->getCaseLocale(Ljava/util/Locale;)I
-Landroid/icu/text/CaseMap;->internalOptions:I
-Landroid/icu/text/CaseMap;->omitUnchangedText()Landroid/icu/text/CaseMap;
-Landroid/icu/text/CaseMap;->toLower()Landroid/icu/text/CaseMap$Lower;
-Landroid/icu/text/CaseMap;->toTitle()Landroid/icu/text/CaseMap$Title;
-Landroid/icu/text/CaseMap;->toUpper()Landroid/icu/text/CaseMap$Upper;
-Landroid/icu/text/CharsetDetector$CSRecognizerInfo;-><init>(Landroid/icu/text/CharsetRecognizer;Z)V
-Landroid/icu/text/CharsetDetector$CSRecognizerInfo;->isDefaultEnabled:Z
-Landroid/icu/text/CharsetDetector$CSRecognizerInfo;->recognizer:Landroid/icu/text/CharsetRecognizer;
-Landroid/icu/text/CharsetDetector;-><init>()V
-Landroid/icu/text/CharsetDetector;->ALL_CS_RECOGNIZERS:Ljava/util/List;
-Landroid/icu/text/CharsetDetector;->detect()Landroid/icu/text/CharsetMatch;
-Landroid/icu/text/CharsetDetector;->detectAll()[Landroid/icu/text/CharsetMatch;
-Landroid/icu/text/CharsetDetector;->enableInputFilter(Z)Z
-Landroid/icu/text/CharsetDetector;->fByteStats:[S
-Landroid/icu/text/CharsetDetector;->fC1Bytes:Z
-Landroid/icu/text/CharsetDetector;->fDeclaredEncoding:Ljava/lang/String;
-Landroid/icu/text/CharsetDetector;->fEnabledRecognizers:[Z
-Landroid/icu/text/CharsetDetector;->fInputBytes:[B
-Landroid/icu/text/CharsetDetector;->fInputLen:I
-Landroid/icu/text/CharsetDetector;->fInputStream:Ljava/io/InputStream;
-Landroid/icu/text/CharsetDetector;->fRawInput:[B
-Landroid/icu/text/CharsetDetector;->fRawLength:I
-Landroid/icu/text/CharsetDetector;->fStripTags:Z
-Landroid/icu/text/CharsetDetector;->getAllDetectableCharsets()[Ljava/lang/String;
-Landroid/icu/text/CharsetDetector;->getDetectableCharsets()[Ljava/lang/String;
-Landroid/icu/text/CharsetDetector;->getReader(Ljava/io/InputStream;Ljava/lang/String;)Ljava/io/Reader;
-Landroid/icu/text/CharsetDetector;->getString([BLjava/lang/String;)Ljava/lang/String;
-Landroid/icu/text/CharsetDetector;->inputFilterEnabled()Z
-Landroid/icu/text/CharsetDetector;->kBufSize:I
-Landroid/icu/text/CharsetDetector;->MungeInput()V
-Landroid/icu/text/CharsetDetector;->setDeclaredEncoding(Ljava/lang/String;)Landroid/icu/text/CharsetDetector;
-Landroid/icu/text/CharsetDetector;->setDetectableCharset(Ljava/lang/String;Z)Landroid/icu/text/CharsetDetector;
-Landroid/icu/text/CharsetDetector;->setText(Ljava/io/InputStream;)Landroid/icu/text/CharsetDetector;
-Landroid/icu/text/CharsetDetector;->setText([B)Landroid/icu/text/CharsetDetector;
-Landroid/icu/text/CharsetMatch;-><init>(Landroid/icu/text/CharsetDetector;Landroid/icu/text/CharsetRecognizer;I)V
-Landroid/icu/text/CharsetMatch;-><init>(Landroid/icu/text/CharsetDetector;Landroid/icu/text/CharsetRecognizer;ILjava/lang/String;Ljava/lang/String;)V
-Landroid/icu/text/CharsetMatch;->compareTo(Landroid/icu/text/CharsetMatch;)I
-Landroid/icu/text/CharsetMatch;->fCharsetName:Ljava/lang/String;
-Landroid/icu/text/CharsetMatch;->fConfidence:I
-Landroid/icu/text/CharsetMatch;->fInputStream:Ljava/io/InputStream;
-Landroid/icu/text/CharsetMatch;->fLang:Ljava/lang/String;
-Landroid/icu/text/CharsetMatch;->fRawInput:[B
-Landroid/icu/text/CharsetMatch;->fRawLength:I
-Landroid/icu/text/CharsetMatch;->getConfidence()I
-Landroid/icu/text/CharsetMatch;->getLanguage()Ljava/lang/String;
-Landroid/icu/text/CharsetMatch;->getName()Ljava/lang/String;
-Landroid/icu/text/CharsetMatch;->getReader()Ljava/io/Reader;
-Landroid/icu/text/CharsetMatch;->getString()Ljava/lang/String;
-Landroid/icu/text/CharsetMatch;->getString(I)Ljava/lang/String;
-Landroid/icu/text/CharsetRecognizer;-><init>()V
-Landroid/icu/text/CharsetRecognizer;->getLanguage()Ljava/lang/String;
-Landroid/icu/text/CharsetRecognizer;->getName()Ljava/lang/String;
-Landroid/icu/text/CharsetRecognizer;->match(Landroid/icu/text/CharsetDetector;)Landroid/icu/text/CharsetMatch;
-Landroid/icu/text/ChineseDateFormat$Field;-><init>(Ljava/lang/String;I)V
-Landroid/icu/text/ChineseDateFormat$Field;->IS_LEAP_MONTH:Landroid/icu/text/ChineseDateFormat$Field;
-Landroid/icu/text/ChineseDateFormat$Field;->ofCalendarField(I)Landroid/icu/text/DateFormat$Field;
-Landroid/icu/text/ChineseDateFormat;-><init>(Ljava/lang/String;Landroid/icu/util/ULocale;)V
-Landroid/icu/text/ChineseDateFormat;-><init>(Ljava/lang/String;Ljava/lang/String;Landroid/icu/util/ULocale;)V
-Landroid/icu/text/ChineseDateFormat;-><init>(Ljava/lang/String;Ljava/util/Locale;)V
-Landroid/icu/text/ChineseDateFormat;->subFormat(Ljava/lang/StringBuffer;CIIILandroid/icu/text/DisplayContext;Ljava/text/FieldPosition;Landroid/icu/util/Calendar;)V
-Landroid/icu/text/ChineseDateFormatSymbols;-><init>()V
-Landroid/icu/text/ChineseDateFormatSymbols;-><init>(Landroid/icu/util/Calendar;Landroid/icu/util/ULocale;)V
-Landroid/icu/text/ChineseDateFormatSymbols;-><init>(Landroid/icu/util/Calendar;Ljava/util/Locale;)V
-Landroid/icu/text/ChineseDateFormatSymbols;-><init>(Landroid/icu/util/ULocale;)V
-Landroid/icu/text/ChineseDateFormatSymbols;-><init>(Ljava/util/Locale;)V
-Landroid/icu/text/ChineseDateFormatSymbols;->getLeapMonth(I)Ljava/lang/String;
-Landroid/icu/text/ChineseDateFormatSymbols;->initializeData(Landroid/icu/text/DateFormatSymbols;)V
-Landroid/icu/text/ChineseDateFormatSymbols;->initializeData(Landroid/icu/util/ULocale;Landroid/icu/impl/ICUResourceBundle;Ljava/lang/String;)V
-Landroid/icu/text/ChineseDateFormatSymbols;->initializeIsLeapMonth()V
-Landroid/icu/text/ChineseDateFormatSymbols;->isLeapMonth:[Ljava/lang/String;
-Landroid/icu/text/CollationElementIterator$MaxExpSink;-><init>(Ljava/util/Map;)V
-Landroid/icu/text/CollationElementIterator$MaxExpSink;->maxExpansions:Ljava/util/Map;
-Landroid/icu/text/CollationElementIterator;-><init>(Landroid/icu/text/RuleBasedCollator;)V
-Landroid/icu/text/CollationElementIterator;-><init>(Landroid/icu/text/UCharacterIterator;Landroid/icu/text/RuleBasedCollator;)V
-Landroid/icu/text/CollationElementIterator;-><init>(Ljava/lang/String;Landroid/icu/text/RuleBasedCollator;)V
-Landroid/icu/text/CollationElementIterator;-><init>(Ljava/text/CharacterIterator;Landroid/icu/text/RuleBasedCollator;)V
-Landroid/icu/text/CollationElementIterator;->ceNeedsTwoParts(J)Z
-Landroid/icu/text/CollationElementIterator;->computeMaxExpansions(Landroid/icu/impl/coll/CollationData;)Ljava/util/Map;
-Landroid/icu/text/CollationElementIterator;->dir_:B
-Landroid/icu/text/CollationElementIterator;->getFirstHalf(JI)I
-Landroid/icu/text/CollationElementIterator;->getMaxExpansion(Ljava/util/Map;I)I
-Landroid/icu/text/CollationElementIterator;->getRuleBasedCollator()Landroid/icu/text/RuleBasedCollator;
-Landroid/icu/text/CollationElementIterator;->getSecondHalf(JI)I
-Landroid/icu/text/CollationElementIterator;->iter_:Landroid/icu/impl/coll/CollationIterator;
-Landroid/icu/text/CollationElementIterator;->normalizeDir()B
-Landroid/icu/text/CollationElementIterator;->offsets_:Landroid/icu/impl/coll/UVector32;
-Landroid/icu/text/CollationElementIterator;->otherHalf_:I
-Landroid/icu/text/CollationElementIterator;->rbc_:Landroid/icu/text/RuleBasedCollator;
-Landroid/icu/text/CollationElementIterator;->string_:Ljava/lang/String;
-Landroid/icu/text/CollationKey$BoundMode;-><init>()V
-Landroid/icu/text/CollationKey$BoundMode;->COUNT:I
-Landroid/icu/text/CollationKey;-><init>(Ljava/lang/String;Landroid/icu/text/RawCollationKey;)V
-Landroid/icu/text/CollationKey;-><init>(Ljava/lang/String;[BI)V
-Landroid/icu/text/CollationKey;->getLength()I
-Landroid/icu/text/CollationKey;->MERGE_SEPERATOR_:I
-Landroid/icu/text/CollationKey;->m_hashCode_:I
-Landroid/icu/text/CollationKey;->m_key_:[B
-Landroid/icu/text/CollationKey;->m_length_:I
-Landroid/icu/text/CollationKey;->m_source_:Ljava/lang/String;
-Landroid/icu/text/Collator$ASCII;-><init>()V
-Landroid/icu/text/Collator$ASCII;->equalIgnoreCase(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Z
-Landroid/icu/text/Collator$CollatorFactory;-><init>()V
-Landroid/icu/text/Collator$CollatorFactory;->createCollator(Landroid/icu/util/ULocale;)Landroid/icu/text/Collator;
-Landroid/icu/text/Collator$CollatorFactory;->createCollator(Ljava/util/Locale;)Landroid/icu/text/Collator;
-Landroid/icu/text/Collator$CollatorFactory;->getDisplayName(Landroid/icu/util/ULocale;Landroid/icu/util/ULocale;)Ljava/lang/String;
-Landroid/icu/text/Collator$CollatorFactory;->getDisplayName(Ljava/util/Locale;Ljava/util/Locale;)Ljava/lang/String;
-Landroid/icu/text/Collator$CollatorFactory;->getSupportedLocaleIDs()Ljava/util/Set;
-Landroid/icu/text/Collator$CollatorFactory;->visible()Z
-Landroid/icu/text/Collator$KeywordsSink;-><init>()V
-Landroid/icu/text/Collator$KeywordsSink;->hasDefault:Z
-Landroid/icu/text/Collator$KeywordsSink;->values:Ljava/util/LinkedList;
-Landroid/icu/text/Collator$ReorderCodes;->LIMIT:I
-Landroid/icu/text/Collator$ServiceShim;-><init>()V
-Landroid/icu/text/Collator$ServiceShim;->getAvailableLocales()[Ljava/util/Locale;
-Landroid/icu/text/Collator$ServiceShim;->getAvailableULocales()[Landroid/icu/util/ULocale;
-Landroid/icu/text/Collator$ServiceShim;->getDisplayName(Landroid/icu/util/ULocale;Landroid/icu/util/ULocale;)Ljava/lang/String;
-Landroid/icu/text/Collator$ServiceShim;->getInstance(Landroid/icu/util/ULocale;)Landroid/icu/text/Collator;
-Landroid/icu/text/Collator$ServiceShim;->registerFactory(Landroid/icu/text/Collator$CollatorFactory;)Ljava/lang/Object;
-Landroid/icu/text/Collator$ServiceShim;->registerInstance(Landroid/icu/text/Collator;Landroid/icu/util/ULocale;)Ljava/lang/Object;
-Landroid/icu/text/Collator$ServiceShim;->unregister(Ljava/lang/Object;)Z
-Landroid/icu/text/Collator;->BASE:Ljava/lang/String;
-Landroid/icu/text/Collator;->checkNotFrozen()V
-Landroid/icu/text/Collator;->DEBUG:Z
-Landroid/icu/text/Collator;->doCompare(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)I
-Landroid/icu/text/Collator;->getLocale(Landroid/icu/util/ULocale$Type;)Landroid/icu/util/ULocale;
-Landroid/icu/text/Collator;->getRawCollationKey(Ljava/lang/String;Landroid/icu/text/RawCollationKey;)Landroid/icu/text/RawCollationKey;
-Landroid/icu/text/Collator;->getReorderCode(Ljava/lang/String;Ljava/lang/String;)I
-Landroid/icu/text/Collator;->getShim()Landroid/icu/text/Collator$ServiceShim;
-Landroid/icu/text/Collator;->getYesOrNo(Ljava/lang/String;Ljava/lang/String;)Z
-Landroid/icu/text/Collator;->KEYWORDS:[Ljava/lang/String;
-Landroid/icu/text/Collator;->registerFactory(Landroid/icu/text/Collator$CollatorFactory;)Ljava/lang/Object;
-Landroid/icu/text/Collator;->registerInstance(Landroid/icu/text/Collator;Landroid/icu/util/ULocale;)Ljava/lang/Object;
-Landroid/icu/text/Collator;->RESOURCE:Ljava/lang/String;
-Landroid/icu/text/Collator;->setAttributesFromKeywords(Landroid/icu/util/ULocale;Landroid/icu/text/Collator;Landroid/icu/text/RuleBasedCollator;)V
-Landroid/icu/text/Collator;->setLocale(Landroid/icu/util/ULocale;Landroid/icu/util/ULocale;)V
-Landroid/icu/text/Collator;->setStrength2(I)Landroid/icu/text/Collator;
-Landroid/icu/text/Collator;->setVariableTop(I)V
-Landroid/icu/text/Collator;->setVariableTop(Ljava/lang/String;)I
-Landroid/icu/text/Collator;->shim:Landroid/icu/text/Collator$ServiceShim;
-Landroid/icu/text/Collator;->unregister(Ljava/lang/Object;)Z
-Landroid/icu/text/CompactDecimalFormat;-><init>(Landroid/icu/util/ULocale;Landroid/icu/text/CompactDecimalFormat$CompactStyle;)V
-Landroid/icu/text/ComposedCharIter;-><init>()V
-Landroid/icu/text/ComposedCharIter;-><init>(ZI)V
-Landroid/icu/text/ComposedCharIter;->curChar:I
-Landroid/icu/text/ComposedCharIter;->decompBuf:Ljava/lang/String;
-Landroid/icu/text/ComposedCharIter;->decomposition()Ljava/lang/String;
-Landroid/icu/text/ComposedCharIter;->DONE:C
-Landroid/icu/text/ComposedCharIter;->findNextChar()V
-Landroid/icu/text/ComposedCharIter;->hasNext()Z
-Landroid/icu/text/ComposedCharIter;->n2impl:Landroid/icu/impl/Normalizer2Impl;
-Landroid/icu/text/ComposedCharIter;->next()C
-Landroid/icu/text/ComposedCharIter;->nextChar:I
-Landroid/icu/text/CurrencyDisplayNames;-><init>()V
-Landroid/icu/text/CurrencyDisplayNames;->getInstance(Landroid/icu/util/ULocale;)Landroid/icu/text/CurrencyDisplayNames;
-Landroid/icu/text/CurrencyDisplayNames;->getInstance(Landroid/icu/util/ULocale;Z)Landroid/icu/text/CurrencyDisplayNames;
-Landroid/icu/text/CurrencyDisplayNames;->getInstance(Ljava/util/Locale;)Landroid/icu/text/CurrencyDisplayNames;
-Landroid/icu/text/CurrencyDisplayNames;->getInstance(Ljava/util/Locale;Z)Landroid/icu/text/CurrencyDisplayNames;
-Landroid/icu/text/CurrencyDisplayNames;->getName(Ljava/lang/String;)Ljava/lang/String;
-Landroid/icu/text/CurrencyDisplayNames;->getPluralName(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
-Landroid/icu/text/CurrencyDisplayNames;->getSymbol(Ljava/lang/String;)Ljava/lang/String;
-Landroid/icu/text/CurrencyDisplayNames;->getULocale()Landroid/icu/util/ULocale;
-Landroid/icu/text/CurrencyDisplayNames;->hasData()Z
-Landroid/icu/text/CurrencyDisplayNames;->nameMap()Ljava/util/Map;
-Landroid/icu/text/CurrencyDisplayNames;->symbolMap()Ljava/util/Map;
-Landroid/icu/text/CurrencyMetaInfo$CurrencyDigits;-><init>(II)V
-Landroid/icu/text/CurrencyMetaInfo$CurrencyDigits;->fractionDigits:I
-Landroid/icu/text/CurrencyMetaInfo$CurrencyDigits;->roundingIncrement:I
-Landroid/icu/text/CurrencyMetaInfo$CurrencyFilter;-><init>(Ljava/lang/String;Ljava/lang/String;JJZ)V
-Landroid/icu/text/CurrencyMetaInfo$CurrencyFilter;->all()Landroid/icu/text/CurrencyMetaInfo$CurrencyFilter;
-Landroid/icu/text/CurrencyMetaInfo$CurrencyFilter;->ALL:Landroid/icu/text/CurrencyMetaInfo$CurrencyFilter;
-Landroid/icu/text/CurrencyMetaInfo$CurrencyFilter;->currency:Ljava/lang/String;
-Landroid/icu/text/CurrencyMetaInfo$CurrencyFilter;->equals(Landroid/icu/text/CurrencyMetaInfo$CurrencyFilter;)Z
-Landroid/icu/text/CurrencyMetaInfo$CurrencyFilter;->equals(Ljava/lang/String;Ljava/lang/String;)Z
-Landroid/icu/text/CurrencyMetaInfo$CurrencyFilter;->from:J
-Landroid/icu/text/CurrencyMetaInfo$CurrencyFilter;->now()Landroid/icu/text/CurrencyMetaInfo$CurrencyFilter;
-Landroid/icu/text/CurrencyMetaInfo$CurrencyFilter;->onCurrency(Ljava/lang/String;)Landroid/icu/text/CurrencyMetaInfo$CurrencyFilter;
-Landroid/icu/text/CurrencyMetaInfo$CurrencyFilter;->onDate(J)Landroid/icu/text/CurrencyMetaInfo$CurrencyFilter;
-Landroid/icu/text/CurrencyMetaInfo$CurrencyFilter;->onDate(Ljava/util/Date;)Landroid/icu/text/CurrencyMetaInfo$CurrencyFilter;
-Landroid/icu/text/CurrencyMetaInfo$CurrencyFilter;->onDateRange(JJ)Landroid/icu/text/CurrencyMetaInfo$CurrencyFilter;
-Landroid/icu/text/CurrencyMetaInfo$CurrencyFilter;->onDateRange(Ljava/util/Date;Ljava/util/Date;)Landroid/icu/text/CurrencyMetaInfo$CurrencyFilter;
-Landroid/icu/text/CurrencyMetaInfo$CurrencyFilter;->onRegion(Ljava/lang/String;)Landroid/icu/text/CurrencyMetaInfo$CurrencyFilter;
-Landroid/icu/text/CurrencyMetaInfo$CurrencyFilter;->onTender()Landroid/icu/text/CurrencyMetaInfo$CurrencyFilter;
-Landroid/icu/text/CurrencyMetaInfo$CurrencyFilter;->region:Ljava/lang/String;
-Landroid/icu/text/CurrencyMetaInfo$CurrencyFilter;->tenderOnly:Z
-Landroid/icu/text/CurrencyMetaInfo$CurrencyFilter;->to:J
-Landroid/icu/text/CurrencyMetaInfo$CurrencyFilter;->withCurrency(Ljava/lang/String;)Landroid/icu/text/CurrencyMetaInfo$CurrencyFilter;
-Landroid/icu/text/CurrencyMetaInfo$CurrencyFilter;->withDate(J)Landroid/icu/text/CurrencyMetaInfo$CurrencyFilter;
-Landroid/icu/text/CurrencyMetaInfo$CurrencyFilter;->withDate(Ljava/util/Date;)Landroid/icu/text/CurrencyMetaInfo$CurrencyFilter;
-Landroid/icu/text/CurrencyMetaInfo$CurrencyFilter;->withDateRange(JJ)Landroid/icu/text/CurrencyMetaInfo$CurrencyFilter;
-Landroid/icu/text/CurrencyMetaInfo$CurrencyFilter;->withDateRange(Ljava/util/Date;Ljava/util/Date;)Landroid/icu/text/CurrencyMetaInfo$CurrencyFilter;
-Landroid/icu/text/CurrencyMetaInfo$CurrencyFilter;->withRegion(Ljava/lang/String;)Landroid/icu/text/CurrencyMetaInfo$CurrencyFilter;
-Landroid/icu/text/CurrencyMetaInfo$CurrencyFilter;->withTender()Landroid/icu/text/CurrencyMetaInfo$CurrencyFilter;
-Landroid/icu/text/CurrencyMetaInfo$CurrencyInfo;-><init>(Ljava/lang/String;Ljava/lang/String;JJI)V
-Landroid/icu/text/CurrencyMetaInfo$CurrencyInfo;-><init>(Ljava/lang/String;Ljava/lang/String;JJIZ)V
-Landroid/icu/text/CurrencyMetaInfo$CurrencyInfo;->code:Ljava/lang/String;
-Landroid/icu/text/CurrencyMetaInfo$CurrencyInfo;->from:J
-Landroid/icu/text/CurrencyMetaInfo$CurrencyInfo;->isTender()Z
-Landroid/icu/text/CurrencyMetaInfo$CurrencyInfo;->priority:I
-Landroid/icu/text/CurrencyMetaInfo$CurrencyInfo;->region:Ljava/lang/String;
-Landroid/icu/text/CurrencyMetaInfo$CurrencyInfo;->tender:Z
-Landroid/icu/text/CurrencyMetaInfo$CurrencyInfo;->to:J
-Landroid/icu/text/CurrencyMetaInfo;-><init>()V
-Landroid/icu/text/CurrencyMetaInfo;->currencies(Landroid/icu/text/CurrencyMetaInfo$CurrencyFilter;)Ljava/util/List;
-Landroid/icu/text/CurrencyMetaInfo;->currencyDigits(Ljava/lang/String;)Landroid/icu/text/CurrencyMetaInfo$CurrencyDigits;
-Landroid/icu/text/CurrencyMetaInfo;->currencyDigits(Ljava/lang/String;Landroid/icu/util/Currency$CurrencyUsage;)Landroid/icu/text/CurrencyMetaInfo$CurrencyDigits;
-Landroid/icu/text/CurrencyMetaInfo;->currencyInfo(Landroid/icu/text/CurrencyMetaInfo$CurrencyFilter;)Ljava/util/List;
-Landroid/icu/text/CurrencyMetaInfo;->dateString(J)Ljava/lang/String;
-Landroid/icu/text/CurrencyMetaInfo;->debugString(Ljava/lang/Object;)Ljava/lang/String;
-Landroid/icu/text/CurrencyMetaInfo;->defaultDigits:Landroid/icu/text/CurrencyMetaInfo$CurrencyDigits;
-Landroid/icu/text/CurrencyMetaInfo;->getInstance()Landroid/icu/text/CurrencyMetaInfo;
-Landroid/icu/text/CurrencyMetaInfo;->getInstance(Z)Landroid/icu/text/CurrencyMetaInfo;
-Landroid/icu/text/CurrencyMetaInfo;->hasData()Z
-Landroid/icu/text/CurrencyMetaInfo;->hasData:Z
-Landroid/icu/text/CurrencyMetaInfo;->impl:Landroid/icu/text/CurrencyMetaInfo;
-Landroid/icu/text/CurrencyMetaInfo;->regions(Landroid/icu/text/CurrencyMetaInfo$CurrencyFilter;)Ljava/util/List;
-Landroid/icu/text/CurrencyPluralInfo;->defaultCurrencyPluralPattern:Ljava/lang/String;
-Landroid/icu/text/CurrencyPluralInfo;->defaultCurrencyPluralPatternChar:[C
-Landroid/icu/text/CurrencyPluralInfo;->initialize(Landroid/icu/util/ULocale;)V
-Landroid/icu/text/CurrencyPluralInfo;->pluralCountToCurrencyUnitPattern:Ljava/util/Map;
-Landroid/icu/text/CurrencyPluralInfo;->pluralPatternIterator()Ljava/util/Iterator;
-Landroid/icu/text/CurrencyPluralInfo;->pluralRules:Landroid/icu/text/PluralRules;
-Landroid/icu/text/CurrencyPluralInfo;->select(D)Ljava/lang/String;
-Landroid/icu/text/CurrencyPluralInfo;->select(Landroid/icu/text/PluralRules$FixedDecimal;)Ljava/lang/String;
-Landroid/icu/text/CurrencyPluralInfo;->setupCurrencyPluralPattern(Landroid/icu/util/ULocale;)V
-Landroid/icu/text/CurrencyPluralInfo;->tripleCurrencySign:[C
-Landroid/icu/text/CurrencyPluralInfo;->tripleCurrencyStr:Ljava/lang/String;
-Landroid/icu/text/CurrencyPluralInfo;->ulocale:Landroid/icu/util/ULocale;
-Landroid/icu/text/DateFormat$BooleanAttribute;->PARSE_PARTIAL_MATCH:Landroid/icu/text/DateFormat$BooleanAttribute;
-Landroid/icu/text/DateFormat$Field;->calendarField:I
-Landroid/icu/text/DateFormat$Field;->CAL_FIELDS:[Landroid/icu/text/DateFormat$Field;
-Landroid/icu/text/DateFormat$Field;->CAL_FIELD_COUNT:I
-Landroid/icu/text/DateFormat$Field;->FIELD_NAME_MAP:Ljava/util/Map;
-Landroid/icu/text/DateFormat$Field;->RELATED_YEAR:Landroid/icu/text/DateFormat$Field;
-Landroid/icu/text/DateFormat$Field;->TIME_SEPARATOR:Landroid/icu/text/DateFormat$Field;
-Landroid/icu/text/DateFormat;->ABBR_STANDALONE_MONTH:Ljava/lang/String;
-Landroid/icu/text/DateFormat;->booleanAttributes:Ljava/util/EnumSet;
-Landroid/icu/text/DateFormat;->capitalizationSetting:Landroid/icu/text/DisplayContext;
-Landroid/icu/text/DateFormat;->currentSerialVersion:I
-Landroid/icu/text/DateFormat;->DATE_SKELETONS:Ljava/util/List;
-Landroid/icu/text/DateFormat;->FIELD_COUNT:I
-Landroid/icu/text/DateFormat;->fixNumberFormatForDates(Landroid/icu/text/NumberFormat;)V
-Landroid/icu/text/DateFormat;->get(IILandroid/icu/util/ULocale;Landroid/icu/util/Calendar;)Landroid/icu/text/DateFormat;
-Landroid/icu/text/DateFormat;->getAvailableULocales()[Landroid/icu/util/ULocale;
-Landroid/icu/text/DateFormat;->getInstance(Landroid/icu/util/Calendar;Landroid/icu/util/ULocale;)Landroid/icu/text/DateFormat;
-Landroid/icu/text/DateFormat;->HOUR_GENERIC_TZ:Ljava/lang/String;
-Landroid/icu/text/DateFormat;->HOUR_MINUTE_GENERIC_TZ:Ljava/lang/String;
-Landroid/icu/text/DateFormat;->HOUR_MINUTE_TZ:Ljava/lang/String;
-Landroid/icu/text/DateFormat;->HOUR_TZ:Ljava/lang/String;
-Landroid/icu/text/DateFormat;->RELATED_YEAR:I
-Landroid/icu/text/DateFormat;->serialVersionOnStream:I
-Landroid/icu/text/DateFormat;->STANDALONE_MONTH:Ljava/lang/String;
-Landroid/icu/text/DateFormat;->TIME_SEPARATOR:I
-Landroid/icu/text/DateFormat;->TIME_SKELETONS:Ljava/util/List;
-Landroid/icu/text/DateFormat;->ZONE_SKELETONS:Ljava/util/List;
-Landroid/icu/text/DateFormatSymbols$CalendarDataSink$AliasType;->DIFFERENT_CALENDAR:Landroid/icu/text/DateFormatSymbols$CalendarDataSink$AliasType;
-Landroid/icu/text/DateFormatSymbols$CalendarDataSink$AliasType;->GREGORIAN:Landroid/icu/text/DateFormatSymbols$CalendarDataSink$AliasType;
-Landroid/icu/text/DateFormatSymbols$CalendarDataSink$AliasType;->NONE:Landroid/icu/text/DateFormatSymbols$CalendarDataSink$AliasType;
-Landroid/icu/text/DateFormatSymbols$CalendarDataSink$AliasType;->SAME_CALENDAR:Landroid/icu/text/DateFormatSymbols$CalendarDataSink$AliasType;
-Landroid/icu/text/DateFormatSymbols$CalendarDataSink$AliasType;->valueOf(Ljava/lang/String;)Landroid/icu/text/DateFormatSymbols$CalendarDataSink$AliasType;
-Landroid/icu/text/DateFormatSymbols$CalendarDataSink$AliasType;->values()[Landroid/icu/text/DateFormatSymbols$CalendarDataSink$AliasType;
-Landroid/icu/text/DateFormatSymbols$CalendarDataSink;-><init>()V
-Landroid/icu/text/DateFormatSymbols$CalendarDataSink;->aliasPathPairs:Ljava/util/List;
-Landroid/icu/text/DateFormatSymbols$CalendarDataSink;->aliasRelativePath:Ljava/lang/String;
-Landroid/icu/text/DateFormatSymbols$CalendarDataSink;->arrays:Ljava/util/Map;
-Landroid/icu/text/DateFormatSymbols$CalendarDataSink;->CALENDAR_ALIAS_PREFIX:Ljava/lang/String;
-Landroid/icu/text/DateFormatSymbols$CalendarDataSink;->currentCalendarType:Ljava/lang/String;
-Landroid/icu/text/DateFormatSymbols$CalendarDataSink;->maps:Ljava/util/Map;
-Landroid/icu/text/DateFormatSymbols$CalendarDataSink;->nextCalendarType:Ljava/lang/String;
-Landroid/icu/text/DateFormatSymbols$CalendarDataSink;->preEnumerate(Ljava/lang/String;)V
-Landroid/icu/text/DateFormatSymbols$CalendarDataSink;->processAliasFromValue(Ljava/lang/String;Landroid/icu/impl/UResource$Value;)Landroid/icu/text/DateFormatSymbols$CalendarDataSink$AliasType;
-Landroid/icu/text/DateFormatSymbols$CalendarDataSink;->processResource(Ljava/lang/String;Landroid/icu/impl/UResource$Key;Landroid/icu/impl/UResource$Value;)V
-Landroid/icu/text/DateFormatSymbols$CalendarDataSink;->resourcesToVisit:Ljava/util/Set;
-Landroid/icu/text/DateFormatSymbols$CalendarDataSink;->visitAllResources()V
-Landroid/icu/text/DateFormatSymbols$CapitalizationContextUsage;->DAY_FORMAT:Landroid/icu/text/DateFormatSymbols$CapitalizationContextUsage;
-Landroid/icu/text/DateFormatSymbols$CapitalizationContextUsage;->DAY_NARROW:Landroid/icu/text/DateFormatSymbols$CapitalizationContextUsage;
-Landroid/icu/text/DateFormatSymbols$CapitalizationContextUsage;->DAY_STANDALONE:Landroid/icu/text/DateFormatSymbols$CapitalizationContextUsage;
-Landroid/icu/text/DateFormatSymbols$CapitalizationContextUsage;->ERA_ABBREV:Landroid/icu/text/DateFormatSymbols$CapitalizationContextUsage;
-Landroid/icu/text/DateFormatSymbols$CapitalizationContextUsage;->ERA_NARROW:Landroid/icu/text/DateFormatSymbols$CapitalizationContextUsage;
-Landroid/icu/text/DateFormatSymbols$CapitalizationContextUsage;->ERA_WIDE:Landroid/icu/text/DateFormatSymbols$CapitalizationContextUsage;
-Landroid/icu/text/DateFormatSymbols$CapitalizationContextUsage;->METAZONE_LONG:Landroid/icu/text/DateFormatSymbols$CapitalizationContextUsage;
-Landroid/icu/text/DateFormatSymbols$CapitalizationContextUsage;->METAZONE_SHORT:Landroid/icu/text/DateFormatSymbols$CapitalizationContextUsage;
-Landroid/icu/text/DateFormatSymbols$CapitalizationContextUsage;->MONTH_FORMAT:Landroid/icu/text/DateFormatSymbols$CapitalizationContextUsage;
-Landroid/icu/text/DateFormatSymbols$CapitalizationContextUsage;->MONTH_NARROW:Landroid/icu/text/DateFormatSymbols$CapitalizationContextUsage;
-Landroid/icu/text/DateFormatSymbols$CapitalizationContextUsage;->MONTH_STANDALONE:Landroid/icu/text/DateFormatSymbols$CapitalizationContextUsage;
-Landroid/icu/text/DateFormatSymbols$CapitalizationContextUsage;->OTHER:Landroid/icu/text/DateFormatSymbols$CapitalizationContextUsage;
-Landroid/icu/text/DateFormatSymbols$CapitalizationContextUsage;->valueOf(Ljava/lang/String;)Landroid/icu/text/DateFormatSymbols$CapitalizationContextUsage;
-Landroid/icu/text/DateFormatSymbols$CapitalizationContextUsage;->values()[Landroid/icu/text/DateFormatSymbols$CapitalizationContextUsage;
-Landroid/icu/text/DateFormatSymbols$CapitalizationContextUsage;->ZONE_LONG:Landroid/icu/text/DateFormatSymbols$CapitalizationContextUsage;
-Landroid/icu/text/DateFormatSymbols$CapitalizationContextUsage;->ZONE_SHORT:Landroid/icu/text/DateFormatSymbols$CapitalizationContextUsage;
-Landroid/icu/text/DateFormatSymbols;-><init>(Landroid/icu/util/ULocale;Landroid/icu/impl/ICUResourceBundle;Ljava/lang/String;)V
-Landroid/icu/text/DateFormatSymbols;-><init>(Landroid/icu/util/ULocale;Ljava/lang/String;)V
-Landroid/icu/text/DateFormatSymbols;->abbreviatedDayPeriods:[Ljava/lang/String;
-Landroid/icu/text/DateFormatSymbols;->actualLocale:Landroid/icu/util/ULocale;
-Landroid/icu/text/DateFormatSymbols;->ALTERNATE_TIME_SEPARATOR:Ljava/lang/String;
-Landroid/icu/text/DateFormatSymbols;->ampms:[Ljava/lang/String;
-Landroid/icu/text/DateFormatSymbols;->ampmsNarrow:[Ljava/lang/String;
-Landroid/icu/text/DateFormatSymbols;->arrayOfArrayEquals([[Ljava/lang/Object;[[Ljava/lang/Object;)Z
-Landroid/icu/text/DateFormatSymbols;->CALENDAR_CLASSES:[[Ljava/lang/String;
-Landroid/icu/text/DateFormatSymbols;->capitalization:Ljava/util/Map;
-Landroid/icu/text/DateFormatSymbols;->contextUsageTypeMap:Ljava/util/Map;
-Landroid/icu/text/DateFormatSymbols;->DAY_PERIOD_KEYS:[Ljava/lang/String;
-Landroid/icu/text/DateFormatSymbols;->DEFAULT_TIME_SEPARATOR:Ljava/lang/String;
-Landroid/icu/text/DateFormatSymbols;->DFSCACHE:Landroid/icu/impl/CacheBase;
-Landroid/icu/text/DateFormatSymbols;->DT_CONTEXT_COUNT:I
-Landroid/icu/text/DateFormatSymbols;->DT_LEAP_MONTH_PATTERN_FORMAT_ABBREV:I
-Landroid/icu/text/DateFormatSymbols;->DT_LEAP_MONTH_PATTERN_FORMAT_NARROW:I
-Landroid/icu/text/DateFormatSymbols;->DT_LEAP_MONTH_PATTERN_FORMAT_WIDE:I
-Landroid/icu/text/DateFormatSymbols;->DT_LEAP_MONTH_PATTERN_NUMERIC:I
-Landroid/icu/text/DateFormatSymbols;->DT_LEAP_MONTH_PATTERN_STANDALONE_ABBREV:I
-Landroid/icu/text/DateFormatSymbols;->DT_LEAP_MONTH_PATTERN_STANDALONE_NARROW:I
-Landroid/icu/text/DateFormatSymbols;->DT_LEAP_MONTH_PATTERN_STANDALONE_WIDE:I
-Landroid/icu/text/DateFormatSymbols;->DT_MONTH_PATTERN_COUNT:I
-Landroid/icu/text/DateFormatSymbols;->DT_WIDTH_COUNT:I
-Landroid/icu/text/DateFormatSymbols;->duplicate([Ljava/lang/String;)[Ljava/lang/String;
-Landroid/icu/text/DateFormatSymbols;->duplicate([[Ljava/lang/String;)[[Ljava/lang/String;
-Landroid/icu/text/DateFormatSymbols;->eraNames:[Ljava/lang/String;
-Landroid/icu/text/DateFormatSymbols;->eras:[Ljava/lang/String;
-Landroid/icu/text/DateFormatSymbols;->getAvailableULocales()[Landroid/icu/util/ULocale;
-Landroid/icu/text/DateFormatSymbols;->getDateFormatBundle(Landroid/icu/util/Calendar;Landroid/icu/util/ULocale;)Ljava/util/ResourceBundle;
-Landroid/icu/text/DateFormatSymbols;->getDateFormatBundle(Landroid/icu/util/Calendar;Ljava/util/Locale;)Ljava/util/ResourceBundle;
-Landroid/icu/text/DateFormatSymbols;->getDateFormatBundle(Ljava/lang/Class;Landroid/icu/util/ULocale;)Ljava/util/ResourceBundle;
-Landroid/icu/text/DateFormatSymbols;->getDateFormatBundle(Ljava/lang/Class;Ljava/util/Locale;)Ljava/util/ResourceBundle;
-Landroid/icu/text/DateFormatSymbols;->getLeapMonthPattern(II)Ljava/lang/String;
-Landroid/icu/text/DateFormatSymbols;->getNarrowEras()[Ljava/lang/String;
-Landroid/icu/text/DateFormatSymbols;->getTimeSeparatorString()Ljava/lang/String;
-Landroid/icu/text/DateFormatSymbols;->initializeData(Landroid/icu/text/DateFormatSymbols;)V
-Landroid/icu/text/DateFormatSymbols;->initializeData(Landroid/icu/util/ULocale;Landroid/icu/impl/ICUResourceBundle;Ljava/lang/String;)V
-Landroid/icu/text/DateFormatSymbols;->leapMonthPatterns:[Ljava/lang/String;
-Landroid/icu/text/DateFormatSymbols;->LEAP_MONTH_PATTERNS_PATHS:[Ljava/lang/String;
-Landroid/icu/text/DateFormatSymbols;->loadDayPeriodStrings(Ljava/util/Map;)[Ljava/lang/String;
-Landroid/icu/text/DateFormatSymbols;->localPatternChars:Ljava/lang/String;
-Landroid/icu/text/DateFormatSymbols;->millisPerHour:I
-Landroid/icu/text/DateFormatSymbols;->months:[Ljava/lang/String;
-Landroid/icu/text/DateFormatSymbols;->narrowDayPeriods:[Ljava/lang/String;
-Landroid/icu/text/DateFormatSymbols;->narrowEras:[Ljava/lang/String;
-Landroid/icu/text/DateFormatSymbols;->narrowMonths:[Ljava/lang/String;
-Landroid/icu/text/DateFormatSymbols;->narrowWeekdays:[Ljava/lang/String;
-Landroid/icu/text/DateFormatSymbols;->NUMERIC:I
-Landroid/icu/text/DateFormatSymbols;->patternChars:Ljava/lang/String;
-Landroid/icu/text/DateFormatSymbols;->quarters:[Ljava/lang/String;
-Landroid/icu/text/DateFormatSymbols;->requestedLocale:Landroid/icu/util/ULocale;
-Landroid/icu/text/DateFormatSymbols;->setLeapMonthPattern(Ljava/lang/String;II)V
-Landroid/icu/text/DateFormatSymbols;->setLocale(Landroid/icu/util/ULocale;Landroid/icu/util/ULocale;)V
-Landroid/icu/text/DateFormatSymbols;->setTimeSeparatorString(Ljava/lang/String;)V
-Landroid/icu/text/DateFormatSymbols;->shorterWeekdays:[Ljava/lang/String;
-Landroid/icu/text/DateFormatSymbols;->shortMonths:[Ljava/lang/String;
-Landroid/icu/text/DateFormatSymbols;->shortQuarters:[Ljava/lang/String;
-Landroid/icu/text/DateFormatSymbols;->shortWeekdays:[Ljava/lang/String;
-Landroid/icu/text/DateFormatSymbols;->shortYearNames:[Ljava/lang/String;
-Landroid/icu/text/DateFormatSymbols;->shortZodiacNames:[Ljava/lang/String;
-Landroid/icu/text/DateFormatSymbols;->standaloneAbbreviatedDayPeriods:[Ljava/lang/String;
-Landroid/icu/text/DateFormatSymbols;->standaloneMonths:[Ljava/lang/String;
-Landroid/icu/text/DateFormatSymbols;->standaloneNarrowDayPeriods:[Ljava/lang/String;
-Landroid/icu/text/DateFormatSymbols;->standaloneNarrowMonths:[Ljava/lang/String;
-Landroid/icu/text/DateFormatSymbols;->standaloneNarrowWeekdays:[Ljava/lang/String;
-Landroid/icu/text/DateFormatSymbols;->standaloneQuarters:[Ljava/lang/String;
-Landroid/icu/text/DateFormatSymbols;->standaloneShorterWeekdays:[Ljava/lang/String;
-Landroid/icu/text/DateFormatSymbols;->standaloneShortMonths:[Ljava/lang/String;
-Landroid/icu/text/DateFormatSymbols;->standaloneShortQuarters:[Ljava/lang/String;
-Landroid/icu/text/DateFormatSymbols;->standaloneShortWeekdays:[Ljava/lang/String;
-Landroid/icu/text/DateFormatSymbols;->standaloneWeekdays:[Ljava/lang/String;
-Landroid/icu/text/DateFormatSymbols;->standaloneWideDayPeriods:[Ljava/lang/String;
-Landroid/icu/text/DateFormatSymbols;->timeSeparator:Ljava/lang/String;
-Landroid/icu/text/DateFormatSymbols;->validLocale:Landroid/icu/util/ULocale;
-Landroid/icu/text/DateFormatSymbols;->weekdays:[Ljava/lang/String;
-Landroid/icu/text/DateFormatSymbols;->wideDayPeriods:[Ljava/lang/String;
-Landroid/icu/text/DateFormatSymbols;->zoneStrings:[[Ljava/lang/String;
-Landroid/icu/text/DateIntervalFormat$BestMatchInfo;-><init>(Ljava/lang/String;I)V
-Landroid/icu/text/DateIntervalFormat$BestMatchInfo;->bestMatchDistanceInfo:I
-Landroid/icu/text/DateIntervalFormat$BestMatchInfo;->bestMatchSkeleton:Ljava/lang/String;
-Landroid/icu/text/DateIntervalFormat$SkeletonAndItsBestMatch;-><init>(Ljava/lang/String;Ljava/lang/String;)V
-Landroid/icu/text/DateIntervalFormat$SkeletonAndItsBestMatch;->bestMatchSkeleton:Ljava/lang/String;
-Landroid/icu/text/DateIntervalFormat$SkeletonAndItsBestMatch;->skeleton:Ljava/lang/String;
-Landroid/icu/text/DateIntervalFormat;-><init>(Ljava/lang/String;Landroid/icu/text/DateIntervalInfo;Landroid/icu/text/SimpleDateFormat;)V
-Landroid/icu/text/DateIntervalFormat;-><init>(Ljava/lang/String;Landroid/icu/util/ULocale;Landroid/icu/text/SimpleDateFormat;)V
-Landroid/icu/text/DateIntervalFormat;->adjustFieldWidth(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;I)Ljava/lang/String;
-Landroid/icu/text/DateIntervalFormat;->adjustPosition(Ljava/lang/String;Ljava/lang/String;Ljava/text/FieldPosition;Ljava/lang/String;Ljava/text/FieldPosition;Ljava/text/FieldPosition;)V
-Landroid/icu/text/DateIntervalFormat;->concatSingleDate2TimeInterval(Ljava/lang/String;Ljava/lang/String;ILjava/util/Map;)V
-Landroid/icu/text/DateIntervalFormat;->fallbackFormat(Landroid/icu/util/Calendar;Landroid/icu/util/Calendar;ZLjava/lang/StringBuffer;Ljava/text/FieldPosition;)Ljava/lang/StringBuffer;
-Landroid/icu/text/DateIntervalFormat;->fallbackFormat(Landroid/icu/util/Calendar;Landroid/icu/util/Calendar;ZLjava/lang/StringBuffer;Ljava/text/FieldPosition;Ljava/lang/String;)Ljava/lang/StringBuffer;
-Landroid/icu/text/DateIntervalFormat;->fDateFormat:Landroid/icu/text/SimpleDateFormat;
-Landroid/icu/text/DateIntervalFormat;->fDatePattern:Ljava/lang/String;
-Landroid/icu/text/DateIntervalFormat;->fDateTimeFormat:Ljava/lang/String;
-Landroid/icu/text/DateIntervalFormat;->fFromCalendar:Landroid/icu/util/Calendar;
-Landroid/icu/text/DateIntervalFormat;->fieldExistsInSkeleton(ILjava/lang/String;)Z
-Landroid/icu/text/DateIntervalFormat;->fInfo:Landroid/icu/text/DateIntervalInfo;
-Landroid/icu/text/DateIntervalFormat;->fIntervalPatterns:Ljava/util/Map;
-Landroid/icu/text/DateIntervalFormat;->fSkeleton:Ljava/lang/String;
-Landroid/icu/text/DateIntervalFormat;->fTimePattern:Ljava/lang/String;
-Landroid/icu/text/DateIntervalFormat;->fToCalendar:Landroid/icu/util/Calendar;
-Landroid/icu/text/DateIntervalFormat;->genFallbackPattern(ILjava/lang/String;Ljava/util/Map;Landroid/icu/text/DateTimePatternGenerator;)V
-Landroid/icu/text/DateIntervalFormat;->genIntervalPattern(ILjava/lang/String;Ljava/lang/String;ILjava/util/Map;)Landroid/icu/text/DateIntervalFormat$SkeletonAndItsBestMatch;
-Landroid/icu/text/DateIntervalFormat;->genSeparateDateTimePtn(Ljava/lang/String;Ljava/lang/String;Ljava/util/Map;Landroid/icu/text/DateTimePatternGenerator;)Z
-Landroid/icu/text/DateIntervalFormat;->getConcatenationPattern(Landroid/icu/util/ULocale;)Ljava/lang/String;
-Landroid/icu/text/DateIntervalFormat;->getDateTimeSkeleton(Ljava/lang/String;Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;)V
-Landroid/icu/text/DateIntervalFormat;->getPatterns(Landroid/icu/util/Calendar;Landroid/icu/util/Calendar;Landroid/icu/util/Output;)Ljava/lang/String;
-Landroid/icu/text/DateIntervalFormat;->getRawPatterns()Ljava/util/Map;
-Landroid/icu/text/DateIntervalFormat;->initializeIntervalPattern(Ljava/lang/String;Landroid/icu/util/ULocale;)Ljava/util/Map;
-Landroid/icu/text/DateIntervalFormat;->initializePattern(Landroid/icu/impl/ICUCache;)V
-Landroid/icu/text/DateIntervalFormat;->isDateIntervalInfoDefault:Z
-Landroid/icu/text/DateIntervalFormat;->LOCAL_PATTERN_CACHE:Landroid/icu/impl/ICUCache;
-Landroid/icu/text/DateIntervalInfo$DateIntervalSink;-><init>(Landroid/icu/text/DateIntervalInfo;)V
-Landroid/icu/text/DateIntervalInfo$DateIntervalSink;->ACCEPTED_PATTERN_LETTERS:Ljava/lang/String;
-Landroid/icu/text/DateIntervalInfo$DateIntervalSink;->dateIntervalInfo:Landroid/icu/text/DateIntervalInfo;
-Landroid/icu/text/DateIntervalInfo$DateIntervalSink;->DATE_INTERVAL_PATH_PREFIX:Ljava/lang/String;
-Landroid/icu/text/DateIntervalInfo$DateIntervalSink;->DATE_INTERVAL_PATH_SUFFIX:Ljava/lang/String;
-Landroid/icu/text/DateIntervalInfo$DateIntervalSink;->getAndResetNextCalendarType()Ljava/lang/String;
-Landroid/icu/text/DateIntervalInfo$DateIntervalSink;->getCalendarTypeFromPath(Ljava/lang/String;)Ljava/lang/String;
-Landroid/icu/text/DateIntervalInfo$DateIntervalSink;->nextCalendarType:Ljava/lang/String;
-Landroid/icu/text/DateIntervalInfo$DateIntervalSink;->processSkeletonTable(Landroid/icu/impl/UResource$Key;Landroid/icu/impl/UResource$Value;)V
-Landroid/icu/text/DateIntervalInfo$DateIntervalSink;->setIntervalPatternIfAbsent(Ljava/lang/String;Ljava/lang/String;Landroid/icu/impl/UResource$Value;)V
-Landroid/icu/text/DateIntervalInfo$DateIntervalSink;->validateAndProcessPatternLetter(Ljava/lang/CharSequence;)Ljava/lang/CharSequence;
-Landroid/icu/text/DateIntervalInfo$PatternInfo;->currentSerialVersion:I
-Landroid/icu/text/DateIntervalInfo$PatternInfo;->fFirstDateInPtnIsLaterDate:Z
-Landroid/icu/text/DateIntervalInfo$PatternInfo;->fIntervalPatternFirstPart:Ljava/lang/String;
-Landroid/icu/text/DateIntervalInfo$PatternInfo;->fIntervalPatternSecondPart:Ljava/lang/String;
-Landroid/icu/text/DateIntervalInfo;-><init>()V
-Landroid/icu/text/DateIntervalInfo;->CALENDAR_FIELD_TO_PATTERN_LETTER:[Ljava/lang/String;
-Landroid/icu/text/DateIntervalInfo;->CALENDAR_KEY:Ljava/lang/String;
-Landroid/icu/text/DateIntervalInfo;->cloneIntervalPatterns(Ljava/util/Map;)Ljava/util/Map;
-Landroid/icu/text/DateIntervalInfo;->cloneUnfrozenDII()Ljava/lang/Object;
-Landroid/icu/text/DateIntervalInfo;->currentSerialVersion:I
-Landroid/icu/text/DateIntervalInfo;->DIICACHE:Landroid/icu/impl/ICUCache;
-Landroid/icu/text/DateIntervalInfo;->EARLIEST_FIRST_PREFIX:Ljava/lang/String;
-Landroid/icu/text/DateIntervalInfo;->FALLBACK_STRING:Ljava/lang/String;
-Landroid/icu/text/DateIntervalInfo;->fFallbackIntervalPattern:Ljava/lang/String;
-Landroid/icu/text/DateIntervalInfo;->fFirstDateInPtnIsLaterDate:Z
-Landroid/icu/text/DateIntervalInfo;->fIntervalPatterns:Ljava/util/Map;
-Landroid/icu/text/DateIntervalInfo;->fIntervalPatternsReadOnly:Z
-Landroid/icu/text/DateIntervalInfo;->frozen:Z
-Landroid/icu/text/DateIntervalInfo;->genPatternInfo(Ljava/lang/String;Z)Landroid/icu/text/DateIntervalInfo$PatternInfo;
-Landroid/icu/text/DateIntervalInfo;->getBestSkeleton(Ljava/lang/String;)Landroid/icu/text/DateIntervalFormat$BestMatchInfo;
-Landroid/icu/text/DateIntervalInfo;->getPatterns()Ljava/util/Map;
-Landroid/icu/text/DateIntervalInfo;->getRawPatterns()Ljava/util/Map;
-Landroid/icu/text/DateIntervalInfo;->initializeData(Landroid/icu/util/ULocale;)V
-Landroid/icu/text/DateIntervalInfo;->initializeFromReadOnlyPatterns(Landroid/icu/text/DateIntervalInfo;)V
-Landroid/icu/text/DateIntervalInfo;->INTERVAL_FORMATS_KEY:Ljava/lang/String;
-Landroid/icu/text/DateIntervalInfo;->LATEST_FIRST_PREFIX:Ljava/lang/String;
-Landroid/icu/text/DateIntervalInfo;->MINIMUM_SUPPORTED_CALENDAR_FIELD:I
-Landroid/icu/text/DateIntervalInfo;->parseSkeleton(Ljava/lang/String;[I)V
-Landroid/icu/text/DateIntervalInfo;->setIntervalPattern(Ljava/lang/String;Ljava/lang/String;Landroid/icu/text/DateIntervalInfo$PatternInfo;)V
-Landroid/icu/text/DateIntervalInfo;->setIntervalPatternInternally(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Landroid/icu/text/DateIntervalInfo$PatternInfo;
-Landroid/icu/text/DateIntervalInfo;->setup(Landroid/icu/util/ULocale;)V
-Landroid/icu/text/DateIntervalInfo;->splitPatternInto2Part(Ljava/lang/String;)I
-Landroid/icu/text/DateIntervalInfo;->stringNumeric(IIC)Z
-Landroid/icu/text/DateTimePatternGenerator$AvailableFormatsSink;->returnInfo:Landroid/icu/text/DateTimePatternGenerator$PatternInfo;
-Landroid/icu/text/DateTimePatternGenerator$DateTimeMatcher;-><init>()V
-Landroid/icu/text/DateTimePatternGenerator$DateTimeMatcher;->addedDefaultDayPeriod:Z
-Landroid/icu/text/DateTimePatternGenerator$DateTimeMatcher;->baseOriginal:Landroid/icu/text/DateTimePatternGenerator$SkeletonFields;
-Landroid/icu/text/DateTimePatternGenerator$DateTimeMatcher;->compareTo(Landroid/icu/text/DateTimePatternGenerator$DateTimeMatcher;)I
-Landroid/icu/text/DateTimePatternGenerator$DateTimeMatcher;->extractFrom(Landroid/icu/text/DateTimePatternGenerator$DateTimeMatcher;I)V
-Landroid/icu/text/DateTimePatternGenerator$DateTimeMatcher;->fieldIsNumeric(I)Z
-Landroid/icu/text/DateTimePatternGenerator$DateTimeMatcher;->getBasePattern()Ljava/lang/String;
-Landroid/icu/text/DateTimePatternGenerator$DateTimeMatcher;->getDistance(Landroid/icu/text/DateTimePatternGenerator$DateTimeMatcher;ILandroid/icu/text/DateTimePatternGenerator$DistanceInfo;)I
-Landroid/icu/text/DateTimePatternGenerator$DateTimeMatcher;->getFieldMask()I
-Landroid/icu/text/DateTimePatternGenerator$DateTimeMatcher;->original:Landroid/icu/text/DateTimePatternGenerator$SkeletonFields;
-Landroid/icu/text/DateTimePatternGenerator$DateTimeMatcher;->set(Ljava/lang/String;Landroid/icu/text/DateTimePatternGenerator$FormatParser;Z)Landroid/icu/text/DateTimePatternGenerator$DateTimeMatcher;
-Landroid/icu/text/DateTimePatternGenerator$DateTimeMatcher;->toCanonicalString()Ljava/lang/String;
-Landroid/icu/text/DateTimePatternGenerator$DateTimeMatcher;->type:[I
-Landroid/icu/text/DateTimePatternGenerator$DayPeriodAllowedHoursSink;-><init>(Ljava/util/HashMap;)V
-Landroid/icu/text/DateTimePatternGenerator$DayPeriodAllowedHoursSink;->tempMap:Ljava/util/HashMap;
-Landroid/icu/text/DateTimePatternGenerator$DistanceInfo;->addExtra(I)V
-Landroid/icu/text/DateTimePatternGenerator$DistanceInfo;->addMissing(I)V
-Landroid/icu/text/DateTimePatternGenerator$DistanceInfo;->clear()V
-Landroid/icu/text/DateTimePatternGenerator$DistanceInfo;->extraFieldMask:I
-Landroid/icu/text/DateTimePatternGenerator$DistanceInfo;->missingFieldMask:I
-Landroid/icu/text/DateTimePatternGenerator$DistanceInfo;->setTo(Landroid/icu/text/DateTimePatternGenerator$DistanceInfo;)V
-Landroid/icu/text/DateTimePatternGenerator$DTPGflags;->FIX_FRACTIONAL_SECONDS:Landroid/icu/text/DateTimePatternGenerator$DTPGflags;
-Landroid/icu/text/DateTimePatternGenerator$DTPGflags;->SKELETON_USES_CAP_J:Landroid/icu/text/DateTimePatternGenerator$DTPGflags;
-Landroid/icu/text/DateTimePatternGenerator$DTPGflags;->valueOf(Ljava/lang/String;)Landroid/icu/text/DateTimePatternGenerator$DTPGflags;
-Landroid/icu/text/DateTimePatternGenerator$DTPGflags;->values()[Landroid/icu/text/DateTimePatternGenerator$DTPGflags;
-Landroid/icu/text/DateTimePatternGenerator$FormatParser;-><init>()V
-Landroid/icu/text/DateTimePatternGenerator$FormatParser;->addVariable(Ljava/lang/StringBuffer;Z)V
-Landroid/icu/text/DateTimePatternGenerator$FormatParser;->getItems()Ljava/util/List;
-Landroid/icu/text/DateTimePatternGenerator$FormatParser;->hasDateAndTimeFields()Z
-Landroid/icu/text/DateTimePatternGenerator$FormatParser;->items:Ljava/util/List;
-Landroid/icu/text/DateTimePatternGenerator$FormatParser;->quoteLiteral(Ljava/lang/String;)Ljava/lang/Object;
-Landroid/icu/text/DateTimePatternGenerator$FormatParser;->QUOTING_CHARS:Landroid/icu/text/UnicodeSet;
-Landroid/icu/text/DateTimePatternGenerator$FormatParser;->set(Ljava/lang/String;)Landroid/icu/text/DateTimePatternGenerator$FormatParser;
-Landroid/icu/text/DateTimePatternGenerator$FormatParser;->set(Ljava/lang/String;Z)Landroid/icu/text/DateTimePatternGenerator$FormatParser;
-Landroid/icu/text/DateTimePatternGenerator$FormatParser;->SYNTAX_CHARS:Landroid/icu/text/UnicodeSet;
-Landroid/icu/text/DateTimePatternGenerator$FormatParser;->tokenizer:Landroid/icu/impl/PatternTokenizer;
-Landroid/icu/text/DateTimePatternGenerator$FormatParser;->toString(II)Ljava/lang/String;
-Landroid/icu/text/DateTimePatternGenerator$PatternWithMatcher;-><init>(Ljava/lang/String;Landroid/icu/text/DateTimePatternGenerator$DateTimeMatcher;)V
-Landroid/icu/text/DateTimePatternGenerator$PatternWithMatcher;->matcherWithSkeleton:Landroid/icu/text/DateTimePatternGenerator$DateTimeMatcher;
-Landroid/icu/text/DateTimePatternGenerator$PatternWithMatcher;->pattern:Ljava/lang/String;
-Landroid/icu/text/DateTimePatternGenerator$PatternWithSkeletonFlag;-><init>(Ljava/lang/String;Z)V
-Landroid/icu/text/DateTimePatternGenerator$PatternWithSkeletonFlag;->pattern:Ljava/lang/String;
-Landroid/icu/text/DateTimePatternGenerator$PatternWithSkeletonFlag;->skeletonWasSpecified:Z
-Landroid/icu/text/DateTimePatternGenerator$SkeletonFields;-><init>()V
-Landroid/icu/text/DateTimePatternGenerator$SkeletonFields;->appendFieldTo(ILjava/lang/StringBuilder;)Ljava/lang/StringBuilder;
-Landroid/icu/text/DateTimePatternGenerator$SkeletonFields;->appendFieldTo(ILjava/lang/StringBuilder;Z)Ljava/lang/StringBuilder;
-Landroid/icu/text/DateTimePatternGenerator$SkeletonFields;->appendTo(Ljava/lang/StringBuilder;)Ljava/lang/StringBuilder;
-Landroid/icu/text/DateTimePatternGenerator$SkeletonFields;->appendTo(Ljava/lang/StringBuilder;ZZ)Ljava/lang/StringBuilder;
-Landroid/icu/text/DateTimePatternGenerator$SkeletonFields;->chars:[B
-Landroid/icu/text/DateTimePatternGenerator$SkeletonFields;->clear()V
-Landroid/icu/text/DateTimePatternGenerator$SkeletonFields;->clearField(I)V
-Landroid/icu/text/DateTimePatternGenerator$SkeletonFields;->compareTo(Landroid/icu/text/DateTimePatternGenerator$SkeletonFields;)I
-Landroid/icu/text/DateTimePatternGenerator$SkeletonFields;->copyFieldFrom(Landroid/icu/text/DateTimePatternGenerator$SkeletonFields;I)V
-Landroid/icu/text/DateTimePatternGenerator$SkeletonFields;->DEFAULT_CHAR:B
-Landroid/icu/text/DateTimePatternGenerator$SkeletonFields;->DEFAULT_LENGTH:B
-Landroid/icu/text/DateTimePatternGenerator$SkeletonFields;->getFieldChar(I)C
-Landroid/icu/text/DateTimePatternGenerator$SkeletonFields;->getFieldLength(I)I
-Landroid/icu/text/DateTimePatternGenerator$SkeletonFields;->isFieldEmpty(I)Z
-Landroid/icu/text/DateTimePatternGenerator$SkeletonFields;->lengths:[B
-Landroid/icu/text/DateTimePatternGenerator$SkeletonFields;->populate(ICI)V
-Landroid/icu/text/DateTimePatternGenerator$SkeletonFields;->populate(ILjava/lang/String;)V
-Landroid/icu/text/DateTimePatternGenerator$SkeletonFields;->toCanonicalString()Ljava/lang/String;
-Landroid/icu/text/DateTimePatternGenerator$SkeletonFields;->toCanonicalString(Z)Ljava/lang/String;
-Landroid/icu/text/DateTimePatternGenerator$SkeletonFields;->toString(Z)Ljava/lang/String;
-Landroid/icu/text/DateTimePatternGenerator$VariableField;-><init>(Ljava/lang/String;)V
-Landroid/icu/text/DateTimePatternGenerator$VariableField;-><init>(Ljava/lang/String;Z)V
-Landroid/icu/text/DateTimePatternGenerator$VariableField;->canonicalIndex:I
-Landroid/icu/text/DateTimePatternGenerator$VariableField;->getCanonicalCode(I)Ljava/lang/String;
-Landroid/icu/text/DateTimePatternGenerator$VariableField;->getCanonicalIndex()I
-Landroid/icu/text/DateTimePatternGenerator$VariableField;->getType()I
-Landroid/icu/text/DateTimePatternGenerator$VariableField;->isNumeric()Z
-Landroid/icu/text/DateTimePatternGenerator$VariableField;->string:Ljava/lang/String;
-Landroid/icu/text/DateTimePatternGenerator;->addCanonicalItems()V
-Landroid/icu/text/DateTimePatternGenerator;->addCLDRData(Landroid/icu/text/DateTimePatternGenerator$PatternInfo;Landroid/icu/util/ULocale;)V
-Landroid/icu/text/DateTimePatternGenerator;->addICUPatterns(Landroid/icu/text/DateTimePatternGenerator$PatternInfo;Landroid/icu/util/ULocale;)V
-Landroid/icu/text/DateTimePatternGenerator;->addPatternWithSkeleton(Ljava/lang/String;Ljava/lang/String;ZLandroid/icu/text/DateTimePatternGenerator$PatternInfo;)Landroid/icu/text/DateTimePatternGenerator;
-Landroid/icu/text/DateTimePatternGenerator;->adjustFieldTypes(Landroid/icu/text/DateTimePatternGenerator$PatternWithMatcher;Landroid/icu/text/DateTimePatternGenerator$DateTimeMatcher;Ljava/util/EnumSet;I)Ljava/lang/String;
-Landroid/icu/text/DateTimePatternGenerator;->allowedHourFormats:[Ljava/lang/String;
-Landroid/icu/text/DateTimePatternGenerator;->appendItemFormats:[Ljava/lang/String;
-Landroid/icu/text/DateTimePatternGenerator;->appendItemNames:[Ljava/lang/String;
-Landroid/icu/text/DateTimePatternGenerator;->basePattern_pattern:Ljava/util/TreeMap;
-Landroid/icu/text/DateTimePatternGenerator;->CANONICAL_ITEMS:[Ljava/lang/String;
-Landroid/icu/text/DateTimePatternGenerator;->CANONICAL_SET:Ljava/util/Set;
-Landroid/icu/text/DateTimePatternGenerator;->checkFrozen()V
-Landroid/icu/text/DateTimePatternGenerator;->cldrAvailableFormatKeys:Ljava/util/Set;
-Landroid/icu/text/DateTimePatternGenerator;->CLDR_FIELD_APPEND:[Ljava/lang/String;
-Landroid/icu/text/DateTimePatternGenerator;->CLDR_FIELD_NAME:[Ljava/lang/String;
-Landroid/icu/text/DateTimePatternGenerator;->consumeShortTimePattern(Ljava/lang/String;Landroid/icu/text/DateTimePatternGenerator$PatternInfo;)V
-Landroid/icu/text/DateTimePatternGenerator;->current:Landroid/icu/text/DateTimePatternGenerator$DateTimeMatcher;
-Landroid/icu/text/DateTimePatternGenerator;->dateTimeFormat:Ljava/lang/String;
-Landroid/icu/text/DateTimePatternGenerator;->DATE_MASK:I
-Landroid/icu/text/DateTimePatternGenerator;->DEBUG:Z
-Landroid/icu/text/DateTimePatternGenerator;->decimal:Ljava/lang/String;
-Landroid/icu/text/DateTimePatternGenerator;->defaultHourFormatChar:C
-Landroid/icu/text/DateTimePatternGenerator;->DELTA:I
-Landroid/icu/text/DateTimePatternGenerator;->DTPNG_CACHE:Landroid/icu/impl/ICUCache;
-Landroid/icu/text/DateTimePatternGenerator;->EXTRA_FIELD:I
-Landroid/icu/text/DateTimePatternGenerator;->FIELD_NAME:[Ljava/lang/String;
-Landroid/icu/text/DateTimePatternGenerator;->fillInMissing()V
-Landroid/icu/text/DateTimePatternGenerator;->fp:Landroid/icu/text/DateTimePatternGenerator$FormatParser;
-Landroid/icu/text/DateTimePatternGenerator;->FRACTIONAL_MASK:I
-Landroid/icu/text/DateTimePatternGenerator;->frozen:Z
-Landroid/icu/text/DateTimePatternGenerator;->getAllowedHourFormats(Landroid/icu/util/ULocale;)V
-Landroid/icu/text/DateTimePatternGenerator;->getAppendFormat(I)Ljava/lang/String;
-Landroid/icu/text/DateTimePatternGenerator;->getAppendFormatNumber(Landroid/icu/impl/UResource$Key;)I
-Landroid/icu/text/DateTimePatternGenerator;->getAppendFormatNumber(Ljava/lang/String;)I
-Landroid/icu/text/DateTimePatternGenerator;->getAppendName(I)Ljava/lang/String;
-Landroid/icu/text/DateTimePatternGenerator;->getBestAppending(Landroid/icu/text/DateTimePatternGenerator$DateTimeMatcher;ILandroid/icu/text/DateTimePatternGenerator$DistanceInfo;Landroid/icu/text/DateTimePatternGenerator$DateTimeMatcher;Ljava/util/EnumSet;I)Ljava/lang/String;
-Landroid/icu/text/DateTimePatternGenerator;->getBestPattern(Ljava/lang/String;Landroid/icu/text/DateTimePatternGenerator$DateTimeMatcher;I)Ljava/lang/String;
-Landroid/icu/text/DateTimePatternGenerator;->getBestRaw(Landroid/icu/text/DateTimePatternGenerator$DateTimeMatcher;ILandroid/icu/text/DateTimePatternGenerator$DistanceInfo;Landroid/icu/text/DateTimePatternGenerator$DateTimeMatcher;)Landroid/icu/text/DateTimePatternGenerator$PatternWithMatcher;
-Landroid/icu/text/DateTimePatternGenerator;->getCalendarTypeToUse(Landroid/icu/util/ULocale;)Ljava/lang/String;
-Landroid/icu/text/DateTimePatternGenerator;->getCanonicalChar(IC)C
-Landroid/icu/text/DateTimePatternGenerator;->getCanonicalIndex(Ljava/lang/String;Z)I
-Landroid/icu/text/DateTimePatternGenerator;->getCanonicalSkeletonAllowingDuplicates(Ljava/lang/String;)Ljava/lang/String;
-Landroid/icu/text/DateTimePatternGenerator;->getCLDRFieldNumber(Landroid/icu/impl/UResource$Key;)I
-Landroid/icu/text/DateTimePatternGenerator;->getDefaultHourFormatChar()C
-Landroid/icu/text/DateTimePatternGenerator;->getFields(Ljava/lang/String;)Ljava/lang/String;
-Landroid/icu/text/DateTimePatternGenerator;->getFilteredPattern(Landroid/icu/text/DateTimePatternGenerator$FormatParser;Ljava/util/BitSet;)Ljava/lang/String;
-Landroid/icu/text/DateTimePatternGenerator;->getFrozenInstance(Landroid/icu/util/ULocale;)Landroid/icu/text/DateTimePatternGenerator;
-Landroid/icu/text/DateTimePatternGenerator;->getName(Ljava/lang/String;)Ljava/lang/String;
-Landroid/icu/text/DateTimePatternGenerator;->getRedundants(Ljava/util/Collection;)Ljava/util/Collection;
-Landroid/icu/text/DateTimePatternGenerator;->getSet(Ljava/lang/String;)Ljava/util/TreeSet;
-Landroid/icu/text/DateTimePatternGenerator;->getSkeletonAllowingDuplicates(Ljava/lang/String;)Ljava/lang/String;
-Landroid/icu/text/DateTimePatternGenerator;->getTopBitNumber(I)I
-Landroid/icu/text/DateTimePatternGenerator;->hackTimes(Landroid/icu/text/DateTimePatternGenerator$PatternInfo;Ljava/lang/String;)V
-Landroid/icu/text/DateTimePatternGenerator;->initData(Landroid/icu/util/ULocale;)V
-Landroid/icu/text/DateTimePatternGenerator;->isAvailableFormatSet(Ljava/lang/String;)Z
-Landroid/icu/text/DateTimePatternGenerator;->isSingleField(Ljava/lang/String;)Z
-Landroid/icu/text/DateTimePatternGenerator;->LAST_RESORT_ALLOWED_HOUR_FORMAT:[Ljava/lang/String;
-Landroid/icu/text/DateTimePatternGenerator;->LOCALE_TO_ALLOWED_HOUR:Ljava/util/Map;
-Landroid/icu/text/DateTimePatternGenerator;->LONG:I
-Landroid/icu/text/DateTimePatternGenerator;->mapSkeletonMetacharacters(Ljava/lang/String;Ljava/util/EnumSet;)Ljava/lang/String;
-Landroid/icu/text/DateTimePatternGenerator;->MATCH_MINUTE_FIELD_LENGTH:I
-Landroid/icu/text/DateTimePatternGenerator;->MATCH_SECOND_FIELD_LENGTH:I
-Landroid/icu/text/DateTimePatternGenerator;->MISSING_FIELD:I
-Landroid/icu/text/DateTimePatternGenerator;->NARROW:I
-Landroid/icu/text/DateTimePatternGenerator;->NONE:I
-Landroid/icu/text/DateTimePatternGenerator;->NUMERIC:I
-Landroid/icu/text/DateTimePatternGenerator;->SECOND_AND_FRACTIONAL_MASK:I
-Landroid/icu/text/DateTimePatternGenerator;->setAvailableFormat(Ljava/lang/String;)V
-Landroid/icu/text/DateTimePatternGenerator;->setDateTimeFromCalendar(Landroid/icu/util/ULocale;)V
-Landroid/icu/text/DateTimePatternGenerator;->setDecimalSymbols(Landroid/icu/util/ULocale;)V
-Landroid/icu/text/DateTimePatternGenerator;->setDefaultHourFormatChar(C)V
-Landroid/icu/text/DateTimePatternGenerator;->SHORT:I
-Landroid/icu/text/DateTimePatternGenerator;->SHORTER:I
-Landroid/icu/text/DateTimePatternGenerator;->showMask(I)Ljava/lang/String;
-Landroid/icu/text/DateTimePatternGenerator;->skeleton2pattern:Ljava/util/TreeMap;
-Landroid/icu/text/DateTimePatternGenerator;->skeletonsAreSimilar(Ljava/lang/String;Ljava/lang/String;)Z
-Landroid/icu/text/DateTimePatternGenerator;->TIME_MASK:I
-Landroid/icu/text/DateTimePatternGenerator;->types:[[I
-Landroid/icu/text/DateTimePatternGenerator;->TYPE_LIMIT:I
-Landroid/icu/text/DateTimePatternGenerator;->_distanceInfo:Landroid/icu/text/DateTimePatternGenerator$DistanceInfo;
-Landroid/icu/text/DecimalFormat$PropertySetter;->set(Landroid/icu/impl/number/DecimalFormatProperties;)V
-Landroid/icu/text/DecimalFormat;-><init>(Ljava/lang/String;Landroid/icu/text/DecimalFormatSymbols;I)V
-Landroid/icu/text/DecimalFormat;->exportedProperties:Landroid/icu/impl/number/DecimalFormatProperties;
-Landroid/icu/text/DecimalFormat;->formatter:Landroid/icu/number/LocalizedNumberFormatter;
-Landroid/icu/text/DecimalFormat;->getDefaultSymbols()Landroid/icu/text/DecimalFormatSymbols;
-Landroid/icu/text/DecimalFormat;->getFixedDecimal(D)Landroid/icu/text/PluralRules$IFixedDecimal;
-Landroid/icu/text/DecimalFormat;->getMinimumGroupingDigits()I
-Landroid/icu/text/DecimalFormat;->getParseCaseSensitive()Z
-Landroid/icu/text/DecimalFormat;->getParseNoExponent()Z
-Landroid/icu/text/DecimalFormat;->getSignAlwaysShown()Z
-Landroid/icu/text/DecimalFormat;->icuMathContextForm:I
-Landroid/icu/text/DecimalFormat;->properties:Landroid/icu/impl/number/DecimalFormatProperties;
-Landroid/icu/text/DecimalFormat;->refreshFormatter()V
-Landroid/icu/text/DecimalFormat;->safeConvertBigDecimal(Ljava/math/BigDecimal;)Ljava/lang/Number;
-Landroid/icu/text/DecimalFormat;->serialVersionOnStream:I
-Landroid/icu/text/DecimalFormat;->setMinimumGroupingDigits(I)V
-Landroid/icu/text/DecimalFormat;->setParseCaseSensitive(Z)V
-Landroid/icu/text/DecimalFormat;->setParseNoExponent(Z)V
-Landroid/icu/text/DecimalFormat;->setProperties(Landroid/icu/text/DecimalFormat$PropertySetter;)V
-Landroid/icu/text/DecimalFormat;->setPropertiesFromPattern(Ljava/lang/String;I)V
-Landroid/icu/text/DecimalFormat;->setSignAlwaysShown(Z)V
-Landroid/icu/text/DecimalFormat;->symbols:Landroid/icu/text/DecimalFormatSymbols;
-Landroid/icu/text/DecimalFormat;->threadLocalProperties:Ljava/lang/ThreadLocal;
-Landroid/icu/text/DecimalFormat;->toNumberFormatter()Landroid/icu/number/LocalizedNumberFormatter;
-Landroid/icu/text/DecimalFormat;->useCurrency(Landroid/icu/impl/number/DecimalFormatProperties;)Z
-Landroid/icu/text/DecimalFormatSymbols$CacheData;-><init>(Landroid/icu/util/ULocale;[Ljava/lang/String;[Ljava/lang/String;)V
-Landroid/icu/text/DecimalFormatSymbols$CacheData;->digits:[Ljava/lang/String;
-Landroid/icu/text/DecimalFormatSymbols$CacheData;->numberElements:[Ljava/lang/String;
-Landroid/icu/text/DecimalFormatSymbols$CacheData;->validLocale:Landroid/icu/util/ULocale;
-Landroid/icu/text/DecimalFormatSymbols$DecFmtDataSink;-><init>([Ljava/lang/String;)V
-Landroid/icu/text/DecimalFormatSymbols$DecFmtDataSink;->numberElements:[Ljava/lang/String;
-Landroid/icu/text/DecimalFormatSymbols;-><init>(Landroid/icu/util/ULocale;Landroid/icu/text/NumberingSystem;)V
-Landroid/icu/text/DecimalFormatSymbols;-><init>(Ljava/util/Locale;Landroid/icu/text/NumberingSystem;)V
-Landroid/icu/text/DecimalFormatSymbols;->actualLocale:Landroid/icu/util/ULocale;
-Landroid/icu/text/DecimalFormatSymbols;->cachedLocaleData:Landroid/icu/impl/CacheBase;
-Landroid/icu/text/DecimalFormatSymbols;->codePointZero:I
-Landroid/icu/text/DecimalFormatSymbols;->currency:Landroid/icu/util/Currency;
-Landroid/icu/text/DecimalFormatSymbols;->currencyPattern:Ljava/lang/String;
-Landroid/icu/text/DecimalFormatSymbols;->currencySpcAfterSym:[Ljava/lang/String;
-Landroid/icu/text/DecimalFormatSymbols;->currencySpcBeforeSym:[Ljava/lang/String;
-Landroid/icu/text/DecimalFormatSymbols;->currencySymbol:Ljava/lang/String;
-Landroid/icu/text/DecimalFormatSymbols;->currentSerialVersion:I
-Landroid/icu/text/DecimalFormatSymbols;->decimalSeparator:C
-Landroid/icu/text/DecimalFormatSymbols;->decimalSeparatorString:Ljava/lang/String;
-Landroid/icu/text/DecimalFormatSymbols;->DEF_DECIMAL_SEPARATOR:C
-Landroid/icu/text/DecimalFormatSymbols;->DEF_DIGIT_CHARS_ARRAY:[C
-Landroid/icu/text/DecimalFormatSymbols;->DEF_DIGIT_STRINGS_ARRAY:[Ljava/lang/String;
-Landroid/icu/text/DecimalFormatSymbols;->DEF_GROUPING_SEPARATOR:C
-Landroid/icu/text/DecimalFormatSymbols;->DEF_MINUS_SIGN:C
-Landroid/icu/text/DecimalFormatSymbols;->DEF_PERCENT:C
-Landroid/icu/text/DecimalFormatSymbols;->DEF_PERMILL:C
-Landroid/icu/text/DecimalFormatSymbols;->DEF_PLUS_SIGN:C
-Landroid/icu/text/DecimalFormatSymbols;->digit:C
-Landroid/icu/text/DecimalFormatSymbols;->digits:[C
-Landroid/icu/text/DecimalFormatSymbols;->digitStrings:[Ljava/lang/String;
-Landroid/icu/text/DecimalFormatSymbols;->exponential:C
-Landroid/icu/text/DecimalFormatSymbols;->exponentMultiplicationSign:Ljava/lang/String;
-Landroid/icu/text/DecimalFormatSymbols;->exponentSeparator:Ljava/lang/String;
-Landroid/icu/text/DecimalFormatSymbols;->forNumberingSystem(Landroid/icu/util/ULocale;Landroid/icu/text/NumberingSystem;)Landroid/icu/text/DecimalFormatSymbols;
-Landroid/icu/text/DecimalFormatSymbols;->forNumberingSystem(Ljava/util/Locale;Landroid/icu/text/NumberingSystem;)Landroid/icu/text/DecimalFormatSymbols;
-Landroid/icu/text/DecimalFormatSymbols;->getAvailableULocales()[Landroid/icu/util/ULocale;
-Landroid/icu/text/DecimalFormatSymbols;->getCodePointZero()I
-Landroid/icu/text/DecimalFormatSymbols;->getCurrencyPattern()Ljava/lang/String;
-Landroid/icu/text/DecimalFormatSymbols;->getDigitStringsLocal()[Ljava/lang/String;
-Landroid/icu/text/DecimalFormatSymbols;->groupingSeparator:C
-Landroid/icu/text/DecimalFormatSymbols;->groupingSeparatorString:Ljava/lang/String;
-Landroid/icu/text/DecimalFormatSymbols;->infinity:Ljava/lang/String;
-Landroid/icu/text/DecimalFormatSymbols;->initialize(Landroid/icu/util/ULocale;Landroid/icu/text/NumberingSystem;)V
-Landroid/icu/text/DecimalFormatSymbols;->initSpacingInfo(Landroid/icu/impl/CurrencyData$CurrencySpacingInfo;)V
-Landroid/icu/text/DecimalFormatSymbols;->intlCurrencySymbol:Ljava/lang/String;
-Landroid/icu/text/DecimalFormatSymbols;->LATIN_NUMBERING_SYSTEM:Ljava/lang/String;
-Landroid/icu/text/DecimalFormatSymbols;->loadData(Landroid/icu/util/ULocale;)Landroid/icu/text/DecimalFormatSymbols$CacheData;
-Landroid/icu/text/DecimalFormatSymbols;->minusSign:C
-Landroid/icu/text/DecimalFormatSymbols;->minusString:Ljava/lang/String;
-Landroid/icu/text/DecimalFormatSymbols;->monetaryGroupingSeparator:C
-Landroid/icu/text/DecimalFormatSymbols;->monetaryGroupingSeparatorString:Ljava/lang/String;
-Landroid/icu/text/DecimalFormatSymbols;->monetarySeparator:C
-Landroid/icu/text/DecimalFormatSymbols;->monetarySeparatorString:Ljava/lang/String;
-Landroid/icu/text/DecimalFormatSymbols;->NaN:Ljava/lang/String;
-Landroid/icu/text/DecimalFormatSymbols;->NUMBER_ELEMENTS:Ljava/lang/String;
-Landroid/icu/text/DecimalFormatSymbols;->padEscape:C
-Landroid/icu/text/DecimalFormatSymbols;->patternSeparator:C
-Landroid/icu/text/DecimalFormatSymbols;->percent:C
-Landroid/icu/text/DecimalFormatSymbols;->percentString:Ljava/lang/String;
-Landroid/icu/text/DecimalFormatSymbols;->perMill:C
-Landroid/icu/text/DecimalFormatSymbols;->perMillString:Ljava/lang/String;
-Landroid/icu/text/DecimalFormatSymbols;->plusSign:C
-Landroid/icu/text/DecimalFormatSymbols;->plusString:Ljava/lang/String;
-Landroid/icu/text/DecimalFormatSymbols;->requestedLocale:Ljava/util/Locale;
-Landroid/icu/text/DecimalFormatSymbols;->serialVersionOnStream:I
-Landroid/icu/text/DecimalFormatSymbols;->setLocale(Landroid/icu/util/ULocale;Landroid/icu/util/ULocale;)V
-Landroid/icu/text/DecimalFormatSymbols;->sigDigit:C
-Landroid/icu/text/DecimalFormatSymbols;->SYMBOLS:Ljava/lang/String;
-Landroid/icu/text/DecimalFormatSymbols;->SYMBOL_DEFAULTS:[Ljava/lang/String;
-Landroid/icu/text/DecimalFormatSymbols;->SYMBOL_KEYS:[Ljava/lang/String;
-Landroid/icu/text/DecimalFormatSymbols;->ulocale:Landroid/icu/util/ULocale;
-Landroid/icu/text/DecimalFormatSymbols;->validLocale:Landroid/icu/util/ULocale;
-Landroid/icu/text/DecimalFormatSymbols;->zeroDigit:C
-Landroid/icu/text/DecimalFormat_ICU58_Android$AffixForCurrency;-><init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;I)V
-Landroid/icu/text/DecimalFormat_ICU58_Android$AffixForCurrency;->getNegPrefix()Ljava/lang/String;
-Landroid/icu/text/DecimalFormat_ICU58_Android$AffixForCurrency;->getNegSuffix()Ljava/lang/String;
-Landroid/icu/text/DecimalFormat_ICU58_Android$AffixForCurrency;->getPatternType()I
-Landroid/icu/text/DecimalFormat_ICU58_Android$AffixForCurrency;->getPosPrefix()Ljava/lang/String;
-Landroid/icu/text/DecimalFormat_ICU58_Android$AffixForCurrency;->getPosSuffix()Ljava/lang/String;
-Landroid/icu/text/DecimalFormat_ICU58_Android$AffixForCurrency;->negPrefixPatternForCurrency:Ljava/lang/String;
-Landroid/icu/text/DecimalFormat_ICU58_Android$AffixForCurrency;->negSuffixPatternForCurrency:Ljava/lang/String;
-Landroid/icu/text/DecimalFormat_ICU58_Android$AffixForCurrency;->patternType:I
-Landroid/icu/text/DecimalFormat_ICU58_Android$AffixForCurrency;->posPrefixPatternForCurrency:Ljava/lang/String;
-Landroid/icu/text/DecimalFormat_ICU58_Android$AffixForCurrency;->posSuffixPatternForCurrency:Ljava/lang/String;
-Landroid/icu/text/DecimalFormat_ICU58_Android$Unit;-><init>(Ljava/lang/String;Ljava/lang/String;)V
-Landroid/icu/text/DecimalFormat_ICU58_Android$Unit;->prefix:Ljava/lang/String;
-Landroid/icu/text/DecimalFormat_ICU58_Android$Unit;->suffix:Ljava/lang/String;
-Landroid/icu/text/DecimalFormat_ICU58_Android$Unit;->writePrefix(Ljava/lang/StringBuffer;)V
-Landroid/icu/text/DecimalFormat_ICU58_Android$Unit;->writeSuffix(Ljava/lang/StringBuffer;)V
-Landroid/icu/text/DecimalFormat_ICU58_Android;-><init>()V
-Landroid/icu/text/DecimalFormat_ICU58_Android;-><init>(Ljava/lang/String;)V
-Landroid/icu/text/DecimalFormat_ICU58_Android;-><init>(Ljava/lang/String;Landroid/icu/text/DecimalFormatSymbols;)V
-Landroid/icu/text/DecimalFormat_ICU58_Android;-><init>(Ljava/lang/String;Landroid/icu/text/DecimalFormatSymbols;I)V
-Landroid/icu/text/DecimalFormat_ICU58_Android;-><init>(Ljava/lang/String;Landroid/icu/text/DecimalFormatSymbols;Landroid/icu/text/CurrencyPluralInfo;I)V
-Landroid/icu/text/DecimalFormat_ICU58_Android;->actualRoundingIncrement:Ljava/math/BigDecimal;
-Landroid/icu/text/DecimalFormat_ICU58_Android;->actualRoundingIncrementICU:Landroid/icu/math/BigDecimal;
-Landroid/icu/text/DecimalFormat_ICU58_Android;->addAttribute(Landroid/icu/text/NumberFormat$Field;II)V
-Landroid/icu/text/DecimalFormat_ICU58_Android;->addPadding(Ljava/lang/StringBuffer;Ljava/text/FieldPosition;II)V
-Landroid/icu/text/DecimalFormat_ICU58_Android;->adjustNumberAsInFormatting(D)D
-Landroid/icu/text/DecimalFormat_ICU58_Android;->affixPatternsForCurrency:Ljava/util/Set;
-Landroid/icu/text/DecimalFormat_ICU58_Android;->appendAffix(Ljava/lang/StringBuffer;ZZLjava/text/FieldPosition;Z)I
-Landroid/icu/text/DecimalFormat_ICU58_Android;->appendAffixPattern(Ljava/lang/StringBuffer;ZZZ)V
-Landroid/icu/text/DecimalFormat_ICU58_Android;->applyLocalizedPattern(Ljava/lang/String;)V
-Landroid/icu/text/DecimalFormat_ICU58_Android;->applyPattern(Ljava/lang/String;)V
-Landroid/icu/text/DecimalFormat_ICU58_Android;->applyPattern(Ljava/lang/String;Z)V
-Landroid/icu/text/DecimalFormat_ICU58_Android;->applyPatternWithoutExpandAffix(Ljava/lang/String;Z)V
-Landroid/icu/text/DecimalFormat_ICU58_Android;->areSignificantDigitsUsed()Z
-Landroid/icu/text/DecimalFormat_ICU58_Android;->attributes:Ljava/util/ArrayList;
-Landroid/icu/text/DecimalFormat_ICU58_Android;->commaEquivalents:Landroid/icu/text/UnicodeSet;
-Landroid/icu/text/DecimalFormat_ICU58_Android;->compareAffix(Ljava/lang/String;IZZLjava/lang/String;ZI[Landroid/icu/util/Currency;)I
-Landroid/icu/text/DecimalFormat_ICU58_Android;->compareComplexAffix(Ljava/lang/String;Ljava/lang/String;II[Landroid/icu/util/Currency;)I
-Landroid/icu/text/DecimalFormat_ICU58_Android;->compareSimpleAffix(Ljava/lang/String;Ljava/lang/String;I)I
-Landroid/icu/text/DecimalFormat_ICU58_Android;->create(Ljava/lang/String;Landroid/icu/text/DecimalFormatSymbols;Landroid/icu/text/CurrencyPluralInfo;I)V
-Landroid/icu/text/DecimalFormat_ICU58_Android;->createFromPatternAndSymbols(Ljava/lang/String;Landroid/icu/text/DecimalFormatSymbols;)V
-Landroid/icu/text/DecimalFormat_ICU58_Android;->currencyChoice:Ljava/text/ChoiceFormat;
-Landroid/icu/text/DecimalFormat_ICU58_Android;->currencyPluralInfo:Landroid/icu/text/CurrencyPluralInfo;
-Landroid/icu/text/DecimalFormat_ICU58_Android;->currencySignCount:I
-Landroid/icu/text/DecimalFormat_ICU58_Android;->currencyUsage:Landroid/icu/util/Currency$CurrencyUsage;
-Landroid/icu/text/DecimalFormat_ICU58_Android;->CURRENCY_SIGN:C
-Landroid/icu/text/DecimalFormat_ICU58_Android;->CURRENCY_SIGN_COUNT_IN_ISO_FORMAT:I
-Landroid/icu/text/DecimalFormat_ICU58_Android;->CURRENCY_SIGN_COUNT_IN_PLURAL_FORMAT:I
-Landroid/icu/text/DecimalFormat_ICU58_Android;->CURRENCY_SIGN_COUNT_IN_SYMBOL_FORMAT:I
-Landroid/icu/text/DecimalFormat_ICU58_Android;->CURRENCY_SIGN_COUNT_ZERO:I
-Landroid/icu/text/DecimalFormat_ICU58_Android;->currentSerialVersion:I
-Landroid/icu/text/DecimalFormat_ICU58_Android;->decimalSeparatorAlwaysShown:Z
-Landroid/icu/text/DecimalFormat_ICU58_Android;->defaultGroupingSeparators:Landroid/icu/text/UnicodeSet;
-Landroid/icu/text/DecimalFormat_ICU58_Android;->digitList:Landroid/icu/text/DigitList_Android;
-Landroid/icu/text/DecimalFormat_ICU58_Android;->dotEquivalents:Landroid/icu/text/UnicodeSet;
-Landroid/icu/text/DecimalFormat_ICU58_Android;->DOUBLE_FRACTION_DIGITS:I
-Landroid/icu/text/DecimalFormat_ICU58_Android;->DOUBLE_INTEGER_DIGITS:I
-Landroid/icu/text/DecimalFormat_ICU58_Android;->epsilon:D
-Landroid/icu/text/DecimalFormat_ICU58_Android;->equals(Ljava/lang/String;Ljava/lang/String;)Z
-Landroid/icu/text/DecimalFormat_ICU58_Android;->equalWithSignCompatibility(II)Z
-Landroid/icu/text/DecimalFormat_ICU58_Android;->expandAffix(Ljava/lang/String;Ljava/lang/String;Ljava/lang/StringBuffer;)V
-Landroid/icu/text/DecimalFormat_ICU58_Android;->expandAffixAdjustWidth(Ljava/lang/String;)V
-Landroid/icu/text/DecimalFormat_ICU58_Android;->expandAffixes(Ljava/lang/String;)V
-Landroid/icu/text/DecimalFormat_ICU58_Android;->exponentSignAlwaysShown:Z
-Landroid/icu/text/DecimalFormat_ICU58_Android;->format(DLjava/lang/StringBuffer;Ljava/text/FieldPosition;Z)Ljava/lang/StringBuffer;
-Landroid/icu/text/DecimalFormat_ICU58_Android;->format(JLjava/lang/StringBuffer;Ljava/text/FieldPosition;Z)Ljava/lang/StringBuffer;
-Landroid/icu/text/DecimalFormat_ICU58_Android;->format(Ljava/math/BigDecimal;Ljava/lang/StringBuffer;Ljava/text/FieldPosition;Z)Ljava/lang/StringBuffer;
-Landroid/icu/text/DecimalFormat_ICU58_Android;->format(Ljava/math/BigInteger;Ljava/lang/StringBuffer;Ljava/text/FieldPosition;Z)Ljava/lang/StringBuffer;
-Landroid/icu/text/DecimalFormat_ICU58_Android;->formatAffix2Attribute(ZLandroid/icu/text/NumberFormat$Field;Ljava/lang/StringBuffer;II)V
-Landroid/icu/text/DecimalFormat_ICU58_Android;->formatPattern:Ljava/lang/String;
-Landroid/icu/text/DecimalFormat_ICU58_Android;->formatToCharacterIterator(Ljava/lang/Object;Landroid/icu/text/DecimalFormat_ICU58_Android$Unit;)Ljava/text/AttributedCharacterIterator;
-Landroid/icu/text/DecimalFormat_ICU58_Android;->formatWidth:I
-Landroid/icu/text/DecimalFormat_ICU58_Android;->getCurrencyPluralInfo()Landroid/icu/text/CurrencyPluralInfo;
-Landroid/icu/text/DecimalFormat_ICU58_Android;->getCurrencyUsage()Landroid/icu/util/Currency$CurrencyUsage;
-Landroid/icu/text/DecimalFormat_ICU58_Android;->getDecimalFormatSymbols()Landroid/icu/text/DecimalFormatSymbols;
-Landroid/icu/text/DecimalFormat_ICU58_Android;->getEffectiveCurrency()Landroid/icu/util/Currency;
-Landroid/icu/text/DecimalFormat_ICU58_Android;->getEquivalentDecimals(Ljava/lang/String;Z)Landroid/icu/text/UnicodeSet;
-Landroid/icu/text/DecimalFormat_ICU58_Android;->getFixedDecimal(D)Landroid/icu/text/PluralRules$FixedDecimal;
-Landroid/icu/text/DecimalFormat_ICU58_Android;->getFixedDecimal(DLandroid/icu/text/DigitList_Android;)Landroid/icu/text/PluralRules$FixedDecimal;
-Landroid/icu/text/DecimalFormat_ICU58_Android;->getFormatWidth()I
-Landroid/icu/text/DecimalFormat_ICU58_Android;->getGroupingSize()I
-Landroid/icu/text/DecimalFormat_ICU58_Android;->getMathContext()Ljava/math/MathContext;
-Landroid/icu/text/DecimalFormat_ICU58_Android;->getMathContextICU()Landroid/icu/math/MathContext;
-Landroid/icu/text/DecimalFormat_ICU58_Android;->getMaximumSignificantDigits()I
-Landroid/icu/text/DecimalFormat_ICU58_Android;->getMinimumExponentDigits()B
-Landroid/icu/text/DecimalFormat_ICU58_Android;->getMinimumSignificantDigits()I
-Landroid/icu/text/DecimalFormat_ICU58_Android;->getMultiplier()I
-Landroid/icu/text/DecimalFormat_ICU58_Android;->getNegativePrefix()Ljava/lang/String;
-Landroid/icu/text/DecimalFormat_ICU58_Android;->getNegativeSuffix()Ljava/lang/String;
-Landroid/icu/text/DecimalFormat_ICU58_Android;->getPadCharacter()C
-Landroid/icu/text/DecimalFormat_ICU58_Android;->getPadPosition()I
-Landroid/icu/text/DecimalFormat_ICU58_Android;->getParseMaxDigits()I
-Landroid/icu/text/DecimalFormat_ICU58_Android;->getPositivePrefix()Ljava/lang/String;
-Landroid/icu/text/DecimalFormat_ICU58_Android;->getPositiveSuffix()Ljava/lang/String;
-Landroid/icu/text/DecimalFormat_ICU58_Android;->getRoundingIncrement()Ljava/math/BigDecimal;
-Landroid/icu/text/DecimalFormat_ICU58_Android;->getSecondaryGroupingSize()I
-Landroid/icu/text/DecimalFormat_ICU58_Android;->groupingSize2:B
-Landroid/icu/text/DecimalFormat_ICU58_Android;->groupingSize:B
-Landroid/icu/text/DecimalFormat_ICU58_Android;->isBidiMark(I)Z
-Landroid/icu/text/DecimalFormat_ICU58_Android;->isDecimalPatternMatchRequired()Z
-Landroid/icu/text/DecimalFormat_ICU58_Android;->isDecimalSeparatorAlwaysShown()Z
-Landroid/icu/text/DecimalFormat_ICU58_Android;->isExponentSignAlwaysShown()Z
-Landroid/icu/text/DecimalFormat_ICU58_Android;->isGroupingPosition(I)Z
-Landroid/icu/text/DecimalFormat_ICU58_Android;->isNegative(D)Z
-Landroid/icu/text/DecimalFormat_ICU58_Android;->isNumberNegative(D)Z
-Landroid/icu/text/DecimalFormat_ICU58_Android;->isParseBigDecimal()Z
-Landroid/icu/text/DecimalFormat_ICU58_Android;->isReadyForParsing:Z
-Landroid/icu/text/DecimalFormat_ICU58_Android;->isScientificNotation()Z
-Landroid/icu/text/DecimalFormat_ICU58_Android;->match(Ljava/lang/String;II)I
-Landroid/icu/text/DecimalFormat_ICU58_Android;->match(Ljava/lang/String;ILjava/lang/String;)I
-Landroid/icu/text/DecimalFormat_ICU58_Android;->matchesDigit(Ljava/lang/String;I[I)I
-Landroid/icu/text/DecimalFormat_ICU58_Android;->mathContext:Landroid/icu/math/MathContext;
-Landroid/icu/text/DecimalFormat_ICU58_Android;->maxSignificantDigits:I
-Landroid/icu/text/DecimalFormat_ICU58_Android;->MAX_INTEGER_DIGITS:I
-Landroid/icu/text/DecimalFormat_ICU58_Android;->MAX_SCIENTIFIC_INTEGER_DIGITS:I
-Landroid/icu/text/DecimalFormat_ICU58_Android;->minExponentDigits:B
-Landroid/icu/text/DecimalFormat_ICU58_Android;->minSignificantDigits:I
-Landroid/icu/text/DecimalFormat_ICU58_Android;->minusSigns:Landroid/icu/text/UnicodeSet;
-Landroid/icu/text/DecimalFormat_ICU58_Android;->multiplier:I
-Landroid/icu/text/DecimalFormat_ICU58_Android;->multiply(D)D
-Landroid/icu/text/DecimalFormat_ICU58_Android;->negativePrefix:Ljava/lang/String;
-Landroid/icu/text/DecimalFormat_ICU58_Android;->negativeSuffix:Ljava/lang/String;
-Landroid/icu/text/DecimalFormat_ICU58_Android;->negPrefixPattern:Ljava/lang/String;
-Landroid/icu/text/DecimalFormat_ICU58_Android;->negSuffixPattern:Ljava/lang/String;
-Landroid/icu/text/DecimalFormat_ICU58_Android;->NULL_UNIT:Landroid/icu/text/DecimalFormat_ICU58_Android$Unit;
-Landroid/icu/text/DecimalFormat_ICU58_Android;->pad:C
-Landroid/icu/text/DecimalFormat_ICU58_Android;->padPosition:I
-Landroid/icu/text/DecimalFormat_ICU58_Android;->PAD_AFTER_PREFIX:I
-Landroid/icu/text/DecimalFormat_ICU58_Android;->PAD_AFTER_SUFFIX:I
-Landroid/icu/text/DecimalFormat_ICU58_Android;->PAD_BEFORE_PREFIX:I
-Landroid/icu/text/DecimalFormat_ICU58_Android;->PAD_BEFORE_SUFFIX:I
-Landroid/icu/text/DecimalFormat_ICU58_Android;->parse(Ljava/lang/String;Ljava/text/ParsePosition;[Landroid/icu/util/Currency;)Ljava/lang/Object;
-Landroid/icu/text/DecimalFormat_ICU58_Android;->parseBigDecimal:Z
-Landroid/icu/text/DecimalFormat_ICU58_Android;->parseForCurrency(Ljava/lang/String;Ljava/text/ParsePosition;[Landroid/icu/util/Currency;[Z)Z
-Landroid/icu/text/DecimalFormat_ICU58_Android;->parseRequireDecimalPoint:Z
-Landroid/icu/text/DecimalFormat_ICU58_Android;->PARSE_MAX_EXPONENT:I
-Landroid/icu/text/DecimalFormat_ICU58_Android;->patternError(Ljava/lang/String;Ljava/lang/String;)V
-Landroid/icu/text/DecimalFormat_ICU58_Android;->PATTERN_DECIMAL_SEPARATOR:C
-Landroid/icu/text/DecimalFormat_ICU58_Android;->PATTERN_DIGIT:C
-Landroid/icu/text/DecimalFormat_ICU58_Android;->PATTERN_EIGHT_DIGIT:C
-Landroid/icu/text/DecimalFormat_ICU58_Android;->PATTERN_EXPONENT:C
-Landroid/icu/text/DecimalFormat_ICU58_Android;->PATTERN_FIVE_DIGIT:C
-Landroid/icu/text/DecimalFormat_ICU58_Android;->PATTERN_FOUR_DIGIT:C
-Landroid/icu/text/DecimalFormat_ICU58_Android;->PATTERN_GROUPING_SEPARATOR:C
-Landroid/icu/text/DecimalFormat_ICU58_Android;->PATTERN_MINUS_SIGN:C
-Landroid/icu/text/DecimalFormat_ICU58_Android;->PATTERN_NINE_DIGIT:C
-Landroid/icu/text/DecimalFormat_ICU58_Android;->PATTERN_ONE_DIGIT:C
-Landroid/icu/text/DecimalFormat_ICU58_Android;->PATTERN_PAD_ESCAPE:C
-Landroid/icu/text/DecimalFormat_ICU58_Android;->PATTERN_PERCENT:C
-Landroid/icu/text/DecimalFormat_ICU58_Android;->PATTERN_PER_MILLE:C
-Landroid/icu/text/DecimalFormat_ICU58_Android;->PATTERN_PLUS_SIGN:C
-Landroid/icu/text/DecimalFormat_ICU58_Android;->PATTERN_SEPARATOR:C
-Landroid/icu/text/DecimalFormat_ICU58_Android;->PATTERN_SEVEN_DIGIT:C
-Landroid/icu/text/DecimalFormat_ICU58_Android;->PATTERN_SIGNIFICANT_DIGIT:C
-Landroid/icu/text/DecimalFormat_ICU58_Android;->PATTERN_SIX_DIGIT:C
-Landroid/icu/text/DecimalFormat_ICU58_Android;->PATTERN_THREE_DIGIT:C
-Landroid/icu/text/DecimalFormat_ICU58_Android;->PATTERN_TWO_DIGIT:C
-Landroid/icu/text/DecimalFormat_ICU58_Android;->PATTERN_ZERO_DIGIT:C
-Landroid/icu/text/DecimalFormat_ICU58_Android;->plusSigns:Landroid/icu/text/UnicodeSet;
-Landroid/icu/text/DecimalFormat_ICU58_Android;->positivePrefix:Ljava/lang/String;
-Landroid/icu/text/DecimalFormat_ICU58_Android;->positiveSuffix:Ljava/lang/String;
-Landroid/icu/text/DecimalFormat_ICU58_Android;->posPrefixPattern:Ljava/lang/String;
-Landroid/icu/text/DecimalFormat_ICU58_Android;->posSuffixPattern:Ljava/lang/String;
-Landroid/icu/text/DecimalFormat_ICU58_Android;->precision(Z)I
-Landroid/icu/text/DecimalFormat_ICU58_Android;->QUOTE:C
-Landroid/icu/text/DecimalFormat_ICU58_Android;->resetActualRounding()V
-Landroid/icu/text/DecimalFormat_ICU58_Android;->round(D)D
-Landroid/icu/text/DecimalFormat_ICU58_Android;->round(DDDIZ)D
-Landroid/icu/text/DecimalFormat_ICU58_Android;->roundingDouble:D
-Landroid/icu/text/DecimalFormat_ICU58_Android;->roundingDoubleReciprocal:D
-Landroid/icu/text/DecimalFormat_ICU58_Android;->roundingIncrement:Ljava/math/BigDecimal;
-Landroid/icu/text/DecimalFormat_ICU58_Android;->roundingIncrementEpsilon:D
-Landroid/icu/text/DecimalFormat_ICU58_Android;->roundingIncrementICU:Landroid/icu/math/BigDecimal;
-Landroid/icu/text/DecimalFormat_ICU58_Android;->roundingMode:I
-Landroid/icu/text/DecimalFormat_ICU58_Android;->serialVersionOnStream:I
-Landroid/icu/text/DecimalFormat_ICU58_Android;->setCurrencyForSymbols()V
-Landroid/icu/text/DecimalFormat_ICU58_Android;->setCurrencyPluralInfo(Landroid/icu/text/CurrencyPluralInfo;)V
-Landroid/icu/text/DecimalFormat_ICU58_Android;->setCurrencyUsage(Landroid/icu/util/Currency$CurrencyUsage;)V
-Landroid/icu/text/DecimalFormat_ICU58_Android;->setDecimalFormatSymbols(Landroid/icu/text/DecimalFormatSymbols;)V
-Landroid/icu/text/DecimalFormat_ICU58_Android;->setDecimalPatternMatchRequired(Z)V
-Landroid/icu/text/DecimalFormat_ICU58_Android;->setDecimalSeparatorAlwaysShown(Z)V
-Landroid/icu/text/DecimalFormat_ICU58_Android;->setExponentSignAlwaysShown(Z)V
-Landroid/icu/text/DecimalFormat_ICU58_Android;->setFormatWidth(I)V
-Landroid/icu/text/DecimalFormat_ICU58_Android;->setGroupingSize(I)V
-Landroid/icu/text/DecimalFormat_ICU58_Android;->setInternalRoundingIncrement(Landroid/icu/math/BigDecimal;)V
-Landroid/icu/text/DecimalFormat_ICU58_Android;->setMathContext(Ljava/math/MathContext;)V
-Landroid/icu/text/DecimalFormat_ICU58_Android;->setMathContextICU(Landroid/icu/math/MathContext;)V
-Landroid/icu/text/DecimalFormat_ICU58_Android;->setMaximumSignificantDigits(I)V
-Landroid/icu/text/DecimalFormat_ICU58_Android;->setMinimumExponentDigits(B)V
-Landroid/icu/text/DecimalFormat_ICU58_Android;->setMinimumSignificantDigits(I)V
-Landroid/icu/text/DecimalFormat_ICU58_Android;->setMultiplier(I)V
-Landroid/icu/text/DecimalFormat_ICU58_Android;->setNegativePrefix(Ljava/lang/String;)V
-Landroid/icu/text/DecimalFormat_ICU58_Android;->setNegativeSuffix(Ljava/lang/String;)V
-Landroid/icu/text/DecimalFormat_ICU58_Android;->setPadCharacter(C)V
-Landroid/icu/text/DecimalFormat_ICU58_Android;->setPadPosition(I)V
-Landroid/icu/text/DecimalFormat_ICU58_Android;->setParseBigDecimal(Z)V
-Landroid/icu/text/DecimalFormat_ICU58_Android;->setParseMaxDigits(I)V
-Landroid/icu/text/DecimalFormat_ICU58_Android;->setPositivePrefix(Ljava/lang/String;)V
-Landroid/icu/text/DecimalFormat_ICU58_Android;->setPositiveSuffix(Ljava/lang/String;)V
-Landroid/icu/text/DecimalFormat_ICU58_Android;->setRoundingDouble(D)V
-Landroid/icu/text/DecimalFormat_ICU58_Android;->setRoundingIncrement(D)V
-Landroid/icu/text/DecimalFormat_ICU58_Android;->setRoundingIncrement(Landroid/icu/math/BigDecimal;)V
-Landroid/icu/text/DecimalFormat_ICU58_Android;->setRoundingIncrement(Ljava/math/BigDecimal;)V
-Landroid/icu/text/DecimalFormat_ICU58_Android;->setScientificNotation(Z)V
-Landroid/icu/text/DecimalFormat_ICU58_Android;->setSecondaryGroupingSize(I)V
-Landroid/icu/text/DecimalFormat_ICU58_Android;->setSignificantDigitsUsed(Z)V
-Landroid/icu/text/DecimalFormat_ICU58_Android;->setupCurrencyAffixForAllPatterns()V
-Landroid/icu/text/DecimalFormat_ICU58_Android;->skipBidiMarks(Ljava/lang/String;I)I
-Landroid/icu/text/DecimalFormat_ICU58_Android;->skipExtendedSeparatorParsing:Z
-Landroid/icu/text/DecimalFormat_ICU58_Android;->skipPadding(Ljava/lang/String;I)I
-Landroid/icu/text/DecimalFormat_ICU58_Android;->skipPatternWhiteSpace(Ljava/lang/String;I)I
-Landroid/icu/text/DecimalFormat_ICU58_Android;->skipUWhiteSpace(Ljava/lang/String;I)I
-Landroid/icu/text/DecimalFormat_ICU58_Android;->STATUS_INFINITE:I
-Landroid/icu/text/DecimalFormat_ICU58_Android;->STATUS_LENGTH:I
-Landroid/icu/text/DecimalFormat_ICU58_Android;->STATUS_POSITIVE:I
-Landroid/icu/text/DecimalFormat_ICU58_Android;->STATUS_UNDERFLOW:I
-Landroid/icu/text/DecimalFormat_ICU58_Android;->strictCommaEquivalents:Landroid/icu/text/UnicodeSet;
-Landroid/icu/text/DecimalFormat_ICU58_Android;->strictDefaultGroupingSeparators:Landroid/icu/text/UnicodeSet;
-Landroid/icu/text/DecimalFormat_ICU58_Android;->strictDotEquivalents:Landroid/icu/text/UnicodeSet;
-Landroid/icu/text/DecimalFormat_ICU58_Android;->style:I
-Landroid/icu/text/DecimalFormat_ICU58_Android;->subformat(DLjava/lang/StringBuffer;Ljava/text/FieldPosition;ZZZ)Ljava/lang/StringBuffer;
-Landroid/icu/text/DecimalFormat_ICU58_Android;->subformat(ILjava/lang/StringBuffer;Ljava/text/FieldPosition;ZZZ)Ljava/lang/StringBuffer;
-Landroid/icu/text/DecimalFormat_ICU58_Android;->subformat(Ljava/lang/String;Ljava/lang/StringBuffer;Ljava/text/FieldPosition;ZZZ)Ljava/lang/StringBuffer;
-Landroid/icu/text/DecimalFormat_ICU58_Android;->subformat(Ljava/lang/StringBuffer;Ljava/text/FieldPosition;ZZZ)Ljava/lang/StringBuffer;
-Landroid/icu/text/DecimalFormat_ICU58_Android;->subformatExponential(Ljava/lang/StringBuffer;Ljava/text/FieldPosition;Z)V
-Landroid/icu/text/DecimalFormat_ICU58_Android;->subformatFixed(Ljava/lang/StringBuffer;Ljava/text/FieldPosition;ZZ)V
-Landroid/icu/text/DecimalFormat_ICU58_Android;->subparse(Ljava/lang/String;Ljava/text/ParsePosition;Landroid/icu/text/DigitList_Android;[Z[Landroid/icu/util/Currency;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ZI)Z
-Landroid/icu/text/DecimalFormat_ICU58_Android;->symbols:Landroid/icu/text/DecimalFormatSymbols;
-Landroid/icu/text/DecimalFormat_ICU58_Android;->toDigitList(D)Landroid/icu/text/DigitList_Android;
-Landroid/icu/text/DecimalFormat_ICU58_Android;->toLocalizedPattern()Ljava/lang/String;
-Landroid/icu/text/DecimalFormat_ICU58_Android;->toPattern()Ljava/lang/String;
-Landroid/icu/text/DecimalFormat_ICU58_Android;->toPattern(Z)Ljava/lang/String;
-Landroid/icu/text/DecimalFormat_ICU58_Android;->trimMarksFromAffix(Ljava/lang/String;)Ljava/lang/String;
-Landroid/icu/text/DecimalFormat_ICU58_Android;->unquote(Ljava/lang/String;)Ljava/lang/String;
-Landroid/icu/text/DecimalFormat_ICU58_Android;->useExponentialNotation:Z
-Landroid/icu/text/DecimalFormat_ICU58_Android;->useSignificantDigits:Z
-Landroid/icu/text/DecimalFormat_ICU58_Android;->_setMaximumFractionDigits(I)V
-Landroid/icu/text/DictionaryBreakEngine$DequeI;-><init>()V
-Landroid/icu/text/DictionaryBreakEngine$DequeI;->contains(I)Z
-Landroid/icu/text/DictionaryBreakEngine$DequeI;->data:[I
-Landroid/icu/text/DictionaryBreakEngine$DequeI;->elementAt(I)I
-Landroid/icu/text/DictionaryBreakEngine$DequeI;->firstIdx:I
-Landroid/icu/text/DictionaryBreakEngine$DequeI;->grow()V
-Landroid/icu/text/DictionaryBreakEngine$DequeI;->isEmpty()Z
-Landroid/icu/text/DictionaryBreakEngine$DequeI;->lastIdx:I
-Landroid/icu/text/DictionaryBreakEngine$DequeI;->offer(I)V
-Landroid/icu/text/DictionaryBreakEngine$DequeI;->peek()I
-Landroid/icu/text/DictionaryBreakEngine$DequeI;->peekLast()I
-Landroid/icu/text/DictionaryBreakEngine$DequeI;->pollLast()I
-Landroid/icu/text/DictionaryBreakEngine$DequeI;->pop()I
-Landroid/icu/text/DictionaryBreakEngine$DequeI;->push(I)V
-Landroid/icu/text/DictionaryBreakEngine$DequeI;->removeAllElements()V
-Landroid/icu/text/DictionaryBreakEngine$DequeI;->size()I
-Landroid/icu/text/DictionaryBreakEngine$PossibleWord;-><init>()V
-Landroid/icu/text/DictionaryBreakEngine$PossibleWord;->acceptMarked(Ljava/text/CharacterIterator;)I
-Landroid/icu/text/DictionaryBreakEngine$PossibleWord;->backUp(Ljava/text/CharacterIterator;)Z
-Landroid/icu/text/DictionaryBreakEngine$PossibleWord;->candidates(Ljava/text/CharacterIterator;Landroid/icu/text/DictionaryMatcher;I)I
-Landroid/icu/text/DictionaryBreakEngine$PossibleWord;->count:[I
-Landroid/icu/text/DictionaryBreakEngine$PossibleWord;->current:I
-Landroid/icu/text/DictionaryBreakEngine$PossibleWord;->lengths:[I
-Landroid/icu/text/DictionaryBreakEngine$PossibleWord;->longestPrefix()I
-Landroid/icu/text/DictionaryBreakEngine$PossibleWord;->mark:I
-Landroid/icu/text/DictionaryBreakEngine$PossibleWord;->markCurrent()V
-Landroid/icu/text/DictionaryBreakEngine$PossibleWord;->offset:I
-Landroid/icu/text/DictionaryBreakEngine$PossibleWord;->POSSIBLE_WORD_LIST_MAX:I
-Landroid/icu/text/DictionaryBreakEngine$PossibleWord;->prefix:I
-Landroid/icu/text/DictionaryBreakEngine;->divideUpDictionaryRange(Ljava/text/CharacterIterator;IILandroid/icu/text/DictionaryBreakEngine$DequeI;)I
-Landroid/icu/text/DictionaryBreakEngine;->findBreaks(Ljava/text/CharacterIterator;IIILandroid/icu/text/DictionaryBreakEngine$DequeI;)I
-Landroid/icu/text/DictionaryBreakEngine;->fSet:Landroid/icu/text/UnicodeSet;
-Landroid/icu/text/DictionaryBreakEngine;->fTypes:Ljava/util/BitSet;
-Landroid/icu/text/DictionaryBreakEngine;->handles(II)Z
-Landroid/icu/text/DictionaryBreakEngine;->setCharacters(Landroid/icu/text/UnicodeSet;)V
-Landroid/icu/text/DictionaryMatcher;-><init>()V
-Landroid/icu/text/DictionaryMatcher;->getType()I
-Landroid/icu/text/DictionaryMatcher;->matches(Ljava/text/CharacterIterator;I[I[II)I
-Landroid/icu/text/DictionaryMatcher;->matches(Ljava/text/CharacterIterator;I[I[II[I)I
-Landroid/icu/text/DigitList_Android;-><init>()V
-Landroid/icu/text/DigitList_Android;->append(I)V
-Landroid/icu/text/DigitList_Android;->count:I
-Landroid/icu/text/DigitList_Android;->DBL_DIG:I
-Landroid/icu/text/DigitList_Android;->decimalAt:I
-Landroid/icu/text/DigitList_Android;->didRound:Z
-Landroid/icu/text/DigitList_Android;->digits:[B
-Landroid/icu/text/DigitList_Android;->ensureCapacity(II)V
-Landroid/icu/text/DigitList_Android;->getBigDecimalICU(Z)Landroid/icu/math/BigDecimal;
-Landroid/icu/text/DigitList_Android;->getBigInteger(Z)Ljava/math/BigInteger;
-Landroid/icu/text/DigitList_Android;->getDigitValue(I)B
-Landroid/icu/text/DigitList_Android;->getDouble()D
-Landroid/icu/text/DigitList_Android;->getLong()J
-Landroid/icu/text/DigitList_Android;->getStringRep(Z)Ljava/lang/String;
-Landroid/icu/text/DigitList_Android;->isIntegral()Z
-Landroid/icu/text/DigitList_Android;->isLongMIN_VALUE()Z
-Landroid/icu/text/DigitList_Android;->isZero()Z
-Landroid/icu/text/DigitList_Android;->LONG_MIN_REP:[B
-Landroid/icu/text/DigitList_Android;->MAX_LONG_DIGITS:I
-Landroid/icu/text/DigitList_Android;->round(I)V
-Landroid/icu/text/DigitList_Android;->set(DIZ)V
-Landroid/icu/text/DigitList_Android;->set(J)V
-Landroid/icu/text/DigitList_Android;->set(JI)V
-Landroid/icu/text/DigitList_Android;->set(Landroid/icu/math/BigDecimal;IZ)V
-Landroid/icu/text/DigitList_Android;->set(Ljava/lang/String;I)V
-Landroid/icu/text/DigitList_Android;->set(Ljava/math/BigDecimal;IZ)V
-Landroid/icu/text/DigitList_Android;->set(Ljava/math/BigInteger;I)V
-Landroid/icu/text/DigitList_Android;->setBigDecimalDigits(Ljava/lang/String;IZ)V
-Landroid/icu/text/DigitList_Android;->shouldRoundUp(I)Z
-Landroid/icu/text/DigitList_Android;->wasRounded()Z
-Landroid/icu/text/DisplayContext;->type:Landroid/icu/text/DisplayContext$Type;
-Landroid/icu/text/DisplayContext;->value:I
-Landroid/icu/text/DurationFormat;-><init>()V
-Landroid/icu/text/DurationFormat;-><init>(Landroid/icu/util/ULocale;)V
-Landroid/icu/text/DurationFormat;->formatDurationFrom(JJ)Ljava/lang/String;
-Landroid/icu/text/DurationFormat;->formatDurationFromNow(J)Ljava/lang/String;
-Landroid/icu/text/DurationFormat;->formatDurationFromNowTo(Ljava/util/Date;)Ljava/lang/String;
-Landroid/icu/text/DurationFormat;->getInstance(Landroid/icu/util/ULocale;)Landroid/icu/text/DurationFormat;
-Landroid/icu/text/Edits$Iterator;-><init>([CIZZ)V
-Landroid/icu/text/Edits$Iterator;->array:[C
-Landroid/icu/text/Edits$Iterator;->changed:Z
-Landroid/icu/text/Edits$Iterator;->coarse:Z
-Landroid/icu/text/Edits$Iterator;->destinationIndex()I
-Landroid/icu/text/Edits$Iterator;->destinationIndexFromSourceIndex(I)I
-Landroid/icu/text/Edits$Iterator;->destIndex:I
-Landroid/icu/text/Edits$Iterator;->dir:I
-Landroid/icu/text/Edits$Iterator;->findDestinationIndex(I)Z
-Landroid/icu/text/Edits$Iterator;->findIndex(IZ)I
-Landroid/icu/text/Edits$Iterator;->findSourceIndex(I)Z
-Landroid/icu/text/Edits$Iterator;->hasChange()Z
-Landroid/icu/text/Edits$Iterator;->index:I
-Landroid/icu/text/Edits$Iterator;->length:I
-Landroid/icu/text/Edits$Iterator;->newLength()I
-Landroid/icu/text/Edits$Iterator;->newLength_:I
-Landroid/icu/text/Edits$Iterator;->next()Z
-Landroid/icu/text/Edits$Iterator;->next(Z)Z
-Landroid/icu/text/Edits$Iterator;->noNext()Z
-Landroid/icu/text/Edits$Iterator;->oldLength()I
-Landroid/icu/text/Edits$Iterator;->oldLength_:I
-Landroid/icu/text/Edits$Iterator;->onlyChanges_:Z
-Landroid/icu/text/Edits$Iterator;->previous()Z
-Landroid/icu/text/Edits$Iterator;->readLength(I)I
-Landroid/icu/text/Edits$Iterator;->remaining:I
-Landroid/icu/text/Edits$Iterator;->replacementIndex()I
-Landroid/icu/text/Edits$Iterator;->replIndex:I
-Landroid/icu/text/Edits$Iterator;->sourceIndex()I
-Landroid/icu/text/Edits$Iterator;->sourceIndexFromDestinationIndex(I)I
-Landroid/icu/text/Edits$Iterator;->srcIndex:I
-Landroid/icu/text/Edits$Iterator;->updateNextIndexes()V
-Landroid/icu/text/Edits$Iterator;->updatePreviousIndexes()V
-Landroid/icu/text/Edits;-><init>()V
-Landroid/icu/text/Edits;->addReplace(II)V
-Landroid/icu/text/Edits;->addUnchanged(I)V
-Landroid/icu/text/Edits;->append(I)V
-Landroid/icu/text/Edits;->array:[C
-Landroid/icu/text/Edits;->delta:I
-Landroid/icu/text/Edits;->getCoarseChangesIterator()Landroid/icu/text/Edits$Iterator;
-Landroid/icu/text/Edits;->getCoarseIterator()Landroid/icu/text/Edits$Iterator;
-Landroid/icu/text/Edits;->getFineChangesIterator()Landroid/icu/text/Edits$Iterator;
-Landroid/icu/text/Edits;->getFineIterator()Landroid/icu/text/Edits$Iterator;
-Landroid/icu/text/Edits;->growArray()Z
-Landroid/icu/text/Edits;->hasChanges()Z
-Landroid/icu/text/Edits;->lastUnit()I
-Landroid/icu/text/Edits;->length:I
-Landroid/icu/text/Edits;->lengthDelta()I
-Landroid/icu/text/Edits;->LENGTH_IN_1TRAIL:I
-Landroid/icu/text/Edits;->LENGTH_IN_2TRAIL:I
-Landroid/icu/text/Edits;->MAX_SHORT_CHANGE:I
-Landroid/icu/text/Edits;->MAX_SHORT_CHANGE_NEW_LENGTH:I
-Landroid/icu/text/Edits;->MAX_SHORT_CHANGE_OLD_LENGTH:I
-Landroid/icu/text/Edits;->MAX_UNCHANGED:I
-Landroid/icu/text/Edits;->MAX_UNCHANGED_LENGTH:I
-Landroid/icu/text/Edits;->mergeAndAppend(Landroid/icu/text/Edits;Landroid/icu/text/Edits;)Landroid/icu/text/Edits;
-Landroid/icu/text/Edits;->numberOfChanges()I
-Landroid/icu/text/Edits;->numChanges:I
-Landroid/icu/text/Edits;->reset()V
-Landroid/icu/text/Edits;->setLastUnit(I)V
-Landroid/icu/text/Edits;->SHORT_CHANGE_NUM_MASK:I
-Landroid/icu/text/Edits;->STACK_CAPACITY:I
-Landroid/icu/text/FilteredBreakIteratorBuilder;-><init>()V
-Landroid/icu/text/FilteredBreakIteratorBuilder;->getEmptyInstance()Landroid/icu/text/FilteredBreakIteratorBuilder;
-Landroid/icu/text/FilteredBreakIteratorBuilder;->getInstance(Landroid/icu/util/ULocale;)Landroid/icu/text/FilteredBreakIteratorBuilder;
-Landroid/icu/text/FilteredBreakIteratorBuilder;->getInstance(Ljava/util/Locale;)Landroid/icu/text/FilteredBreakIteratorBuilder;
-Landroid/icu/text/FilteredBreakIteratorBuilder;->suppressBreakAfter(Ljava/lang/CharSequence;)Z
-Landroid/icu/text/FilteredBreakIteratorBuilder;->unsuppressBreakAfter(Ljava/lang/CharSequence;)Z
-Landroid/icu/text/FilteredBreakIteratorBuilder;->wrapIteratorWithFilter(Landroid/icu/text/BreakIterator;)Landroid/icu/text/BreakIterator;
-Landroid/icu/text/FilteredNormalizer2;-><init>(Landroid/icu/text/Normalizer2;Landroid/icu/text/UnicodeSet;)V
-Landroid/icu/text/FilteredNormalizer2;->norm2:Landroid/icu/text/Normalizer2;
-Landroid/icu/text/FilteredNormalizer2;->normalize(Ljava/lang/CharSequence;Ljava/lang/Appendable;Landroid/icu/text/UnicodeSet$SpanCondition;)Ljava/lang/Appendable;
-Landroid/icu/text/FilteredNormalizer2;->normalizeSecondAndAppend(Ljava/lang/StringBuilder;Ljava/lang/CharSequence;Z)Ljava/lang/StringBuilder;
-Landroid/icu/text/FilteredNormalizer2;->set:Landroid/icu/text/UnicodeSet;
-Landroid/icu/text/IDNA$Info;->errors:Ljava/util/EnumSet;
-Landroid/icu/text/IDNA$Info;->isBiDi:Z
-Landroid/icu/text/IDNA$Info;->isOkBiDi:Z
-Landroid/icu/text/IDNA$Info;->isTransDiff:Z
-Landroid/icu/text/IDNA$Info;->labelErrors:Ljava/util/EnumSet;
-Landroid/icu/text/IDNA$Info;->reset()V
-Landroid/icu/text/IDNA;-><init>()V
-Landroid/icu/text/IDNA;->addError(Landroid/icu/text/IDNA$Info;Landroid/icu/text/IDNA$Error;)V
-Landroid/icu/text/IDNA;->addLabelError(Landroid/icu/text/IDNA$Info;Landroid/icu/text/IDNA$Error;)V
-Landroid/icu/text/IDNA;->ALLOW_UNASSIGNED:I
-Landroid/icu/text/IDNA;->compare(Landroid/icu/text/UCharacterIterator;Landroid/icu/text/UCharacterIterator;I)I
-Landroid/icu/text/IDNA;->compare(Ljava/lang/String;Ljava/lang/String;I)I
-Landroid/icu/text/IDNA;->compare(Ljava/lang/StringBuffer;Ljava/lang/StringBuffer;I)I
-Landroid/icu/text/IDNA;->convertIDNToASCII(Landroid/icu/text/UCharacterIterator;I)Ljava/lang/StringBuffer;
-Landroid/icu/text/IDNA;->convertIDNToASCII(Ljava/lang/String;I)Ljava/lang/StringBuffer;
-Landroid/icu/text/IDNA;->convertIDNToASCII(Ljava/lang/StringBuffer;I)Ljava/lang/StringBuffer;
-Landroid/icu/text/IDNA;->convertIDNToUnicode(Landroid/icu/text/UCharacterIterator;I)Ljava/lang/StringBuffer;
-Landroid/icu/text/IDNA;->convertIDNToUnicode(Ljava/lang/String;I)Ljava/lang/StringBuffer;
-Landroid/icu/text/IDNA;->convertIDNToUnicode(Ljava/lang/StringBuffer;I)Ljava/lang/StringBuffer;
-Landroid/icu/text/IDNA;->convertToASCII(Landroid/icu/text/UCharacterIterator;I)Ljava/lang/StringBuffer;
-Landroid/icu/text/IDNA;->convertToASCII(Ljava/lang/String;I)Ljava/lang/StringBuffer;
-Landroid/icu/text/IDNA;->convertToASCII(Ljava/lang/StringBuffer;I)Ljava/lang/StringBuffer;
-Landroid/icu/text/IDNA;->convertToUnicode(Landroid/icu/text/UCharacterIterator;I)Ljava/lang/StringBuffer;
-Landroid/icu/text/IDNA;->convertToUnicode(Ljava/lang/String;I)Ljava/lang/StringBuffer;
-Landroid/icu/text/IDNA;->convertToUnicode(Ljava/lang/StringBuffer;I)Ljava/lang/StringBuffer;
-Landroid/icu/text/IDNA;->hasCertainErrors(Landroid/icu/text/IDNA$Info;Ljava/util/EnumSet;)Z
-Landroid/icu/text/IDNA;->hasCertainLabelErrors(Landroid/icu/text/IDNA$Info;Ljava/util/EnumSet;)Z
-Landroid/icu/text/IDNA;->isBiDi(Landroid/icu/text/IDNA$Info;)Z
-Landroid/icu/text/IDNA;->isOkBiDi(Landroid/icu/text/IDNA$Info;)Z
-Landroid/icu/text/IDNA;->promoteAndResetLabelErrors(Landroid/icu/text/IDNA$Info;)V
-Landroid/icu/text/IDNA;->resetInfo(Landroid/icu/text/IDNA$Info;)V
-Landroid/icu/text/IDNA;->setBiDi(Landroid/icu/text/IDNA$Info;)V
-Landroid/icu/text/IDNA;->setNotOkBiDi(Landroid/icu/text/IDNA$Info;)V
-Landroid/icu/text/IDNA;->setTransitionalDifferent(Landroid/icu/text/IDNA$Info;)V
-Landroid/icu/text/LanguageBreakEngine;->findBreaks(Ljava/text/CharacterIterator;IIILandroid/icu/text/DictionaryBreakEngine$DequeI;)I
-Landroid/icu/text/LanguageBreakEngine;->handles(II)Z
-Landroid/icu/text/ListFormatter$Cache;-><init>()V
-Landroid/icu/text/ListFormatter$Cache;->cache:Landroid/icu/impl/ICUCache;
-Landroid/icu/text/ListFormatter$Cache;->get(Landroid/icu/util/ULocale;Ljava/lang/String;)Landroid/icu/text/ListFormatter;
-Landroid/icu/text/ListFormatter$Cache;->load(Landroid/icu/util/ULocale;Ljava/lang/String;)Landroid/icu/text/ListFormatter;
-Landroid/icu/text/ListFormatter$FormattedListBuilder;-><init>(Ljava/lang/Object;Z)V
-Landroid/icu/text/ListFormatter$FormattedListBuilder;->append(Ljava/lang/String;Ljava/lang/Object;Z)Landroid/icu/text/ListFormatter$FormattedListBuilder;
-Landroid/icu/text/ListFormatter$FormattedListBuilder;->current:Ljava/lang/StringBuilder;
-Landroid/icu/text/ListFormatter$FormattedListBuilder;->getOffset()I
-Landroid/icu/text/ListFormatter$FormattedListBuilder;->offset:I
-Landroid/icu/text/ListFormatter$FormattedListBuilder;->offsetRecorded()Z
-Landroid/icu/text/ListFormatter$Style;->DURATION:Landroid/icu/text/ListFormatter$Style;
-Landroid/icu/text/ListFormatter$Style;->DURATION_NARROW:Landroid/icu/text/ListFormatter$Style;
-Landroid/icu/text/ListFormatter$Style;->DURATION_SHORT:Landroid/icu/text/ListFormatter$Style;
-Landroid/icu/text/ListFormatter$Style;->getName()Ljava/lang/String;
-Landroid/icu/text/ListFormatter$Style;->name:Ljava/lang/String;
-Landroid/icu/text/ListFormatter$Style;->STANDARD:Landroid/icu/text/ListFormatter$Style;
-Landroid/icu/text/ListFormatter$Style;->valueOf(Ljava/lang/String;)Landroid/icu/text/ListFormatter$Style;
-Landroid/icu/text/ListFormatter$Style;->values()[Landroid/icu/text/ListFormatter$Style;
-Landroid/icu/text/ListFormatter;-><init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
-Landroid/icu/text/ListFormatter;-><init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Landroid/icu/util/ULocale;)V
-Landroid/icu/text/ListFormatter;->cache:Landroid/icu/text/ListFormatter$Cache;
-Landroid/icu/text/ListFormatter;->compilePattern(Ljava/lang/String;Ljava/lang/StringBuilder;)Ljava/lang/String;
-Landroid/icu/text/ListFormatter;->end:Ljava/lang/String;
-Landroid/icu/text/ListFormatter;->format(Ljava/util/Collection;I)Landroid/icu/text/ListFormatter$FormattedListBuilder;
-Landroid/icu/text/ListFormatter;->getInstance(Landroid/icu/util/ULocale;Landroid/icu/text/ListFormatter$Style;)Landroid/icu/text/ListFormatter;
-Landroid/icu/text/ListFormatter;->getLocale()Landroid/icu/util/ULocale;
-Landroid/icu/text/ListFormatter;->locale:Landroid/icu/util/ULocale;
-Landroid/icu/text/ListFormatter;->middle:Ljava/lang/String;
-Landroid/icu/text/ListFormatter;->start:Ljava/lang/String;
-Landroid/icu/text/ListFormatter;->two:Ljava/lang/String;
-Landroid/icu/text/LocaleDisplayNames$LastResortLocaleDisplayNames;-><init>(Landroid/icu/util/ULocale;Landroid/icu/text/LocaleDisplayNames$DialectHandling;)V
-Landroid/icu/text/LocaleDisplayNames$LastResortLocaleDisplayNames;->contexts:[Landroid/icu/text/DisplayContext;
-Landroid/icu/text/LocaleDisplayNames$LastResortLocaleDisplayNames;->locale:Landroid/icu/util/ULocale;
-Landroid/icu/text/LocaleDisplayNames$UiListItem$UiListItemComparator;-><init>(Ljava/util/Comparator;Z)V
-Landroid/icu/text/LocaleDisplayNames$UiListItem$UiListItemComparator;->collator:Ljava/util/Comparator;
-Landroid/icu/text/LocaleDisplayNames$UiListItem$UiListItemComparator;->compare(Landroid/icu/text/LocaleDisplayNames$UiListItem;Landroid/icu/text/LocaleDisplayNames$UiListItem;)I
-Landroid/icu/text/LocaleDisplayNames$UiListItem$UiListItemComparator;->useSelf:Z
-Landroid/icu/text/LocaleDisplayNames;-><init>()V
-Landroid/icu/text/LocaleDisplayNames;->FACTORY_DIALECTHANDLING:Ljava/lang/reflect/Method;
-Landroid/icu/text/LocaleDisplayNames;->FACTORY_DISPLAYCONTEXT:Ljava/lang/reflect/Method;
-Landroid/icu/text/LocaleDisplayNames;->scriptDisplayNameInContext(Ljava/lang/String;)Ljava/lang/String;
-Landroid/icu/text/MeasureFormat$FormatWidth;->currencyStyle:I
-Landroid/icu/text/MeasureFormat$FormatWidth;->getCurrencyStyle()I
-Landroid/icu/text/MeasureFormat$FormatWidth;->getListFormatterStyle()Landroid/icu/text/ListFormatter$Style;
-Landroid/icu/text/MeasureFormat$FormatWidth;->INDEX_COUNT:I
-Landroid/icu/text/MeasureFormat$FormatWidth;->listFormatterStyle:Landroid/icu/text/ListFormatter$Style;
-Landroid/icu/text/MeasureFormat$ImmutableNumberFormat;-><init>(Landroid/icu/text/NumberFormat;)V
-Landroid/icu/text/MeasureFormat$ImmutableNumberFormat;->format(Landroid/icu/util/CurrencyAmount;Ljava/lang/StringBuffer;Ljava/text/FieldPosition;)Ljava/lang/StringBuffer;
-Landroid/icu/text/MeasureFormat$ImmutableNumberFormat;->format(Ljava/lang/Number;)Ljava/lang/String;
-Landroid/icu/text/MeasureFormat$ImmutableNumberFormat;->format(Ljava/lang/Number;Ljava/lang/StringBuffer;Ljava/text/FieldPosition;)Ljava/lang/StringBuffer;
-Landroid/icu/text/MeasureFormat$ImmutableNumberFormat;->get()Landroid/icu/text/NumberFormat;
-Landroid/icu/text/MeasureFormat$ImmutableNumberFormat;->getPrefix(Z)Ljava/lang/String;
-Landroid/icu/text/MeasureFormat$ImmutableNumberFormat;->getSuffix(Z)Ljava/lang/String;
-Landroid/icu/text/MeasureFormat$ImmutableNumberFormat;->nf:Landroid/icu/text/NumberFormat;
-Landroid/icu/text/MeasureFormat$MeasureFormatData;-><init>()V
-Landroid/icu/text/MeasureFormat$MeasureFormatData;->hasPerFormatter(Landroid/icu/text/MeasureFormat$FormatWidth;)Z
-Landroid/icu/text/MeasureFormat$MeasureFormatData;->PATTERN_COUNT:I
-Landroid/icu/text/MeasureFormat$MeasureFormatData;->PER_UNIT_INDEX:I
-Landroid/icu/text/MeasureFormat$MeasureFormatData;->styleToPerPattern:Ljava/util/EnumMap;
-Landroid/icu/text/MeasureFormat$MeasureFormatData;->unitToStyleToDnam:Ljava/util/Map;
-Landroid/icu/text/MeasureFormat$MeasureFormatData;->unitToStyleToPatterns:Ljava/util/Map;
-Landroid/icu/text/MeasureFormat$MeasureFormatData;->widthFallback:[Landroid/icu/text/MeasureFormat$FormatWidth;
-Landroid/icu/text/MeasureFormat$MeasureProxy;-><init>()V
-Landroid/icu/text/MeasureFormat$MeasureProxy;-><init>(Landroid/icu/util/ULocale;Landroid/icu/text/MeasureFormat$FormatWidth;Landroid/icu/text/NumberFormat;I)V
-Landroid/icu/text/MeasureFormat$MeasureProxy;->createTimeUnitFormat()Landroid/icu/text/TimeUnitFormat;
-Landroid/icu/text/MeasureFormat$MeasureProxy;->formatWidth:Landroid/icu/text/MeasureFormat$FormatWidth;
-Landroid/icu/text/MeasureFormat$MeasureProxy;->keyValues:Ljava/util/HashMap;
-Landroid/icu/text/MeasureFormat$MeasureProxy;->locale:Landroid/icu/util/ULocale;
-Landroid/icu/text/MeasureFormat$MeasureProxy;->numberFormat:Landroid/icu/text/NumberFormat;
-Landroid/icu/text/MeasureFormat$MeasureProxy;->subClass:I
-Landroid/icu/text/MeasureFormat$NumericFormatters;-><init>(Landroid/icu/text/DateFormat;Landroid/icu/text/DateFormat;Landroid/icu/text/DateFormat;)V
-Landroid/icu/text/MeasureFormat$NumericFormatters;->getHourMinute()Landroid/icu/text/DateFormat;
-Landroid/icu/text/MeasureFormat$NumericFormatters;->getHourMinuteSecond()Landroid/icu/text/DateFormat;
-Landroid/icu/text/MeasureFormat$NumericFormatters;->getMinuteSecond()Landroid/icu/text/DateFormat;
-Landroid/icu/text/MeasureFormat$NumericFormatters;->hourMinute:Landroid/icu/text/DateFormat;
-Landroid/icu/text/MeasureFormat$NumericFormatters;->hourMinuteSecond:Landroid/icu/text/DateFormat;
-Landroid/icu/text/MeasureFormat$NumericFormatters;->minuteSecond:Landroid/icu/text/DateFormat;
-Landroid/icu/text/MeasureFormat$PatternData;-><init>(Ljava/lang/String;)V
-Landroid/icu/text/MeasureFormat$PatternData;->prefix:Ljava/lang/String;
-Landroid/icu/text/MeasureFormat$PatternData;->suffix:Ljava/lang/String;
-Landroid/icu/text/MeasureFormat$UnitDataSink;-><init>(Landroid/icu/text/MeasureFormat$MeasureFormatData;)V
-Landroid/icu/text/MeasureFormat$UnitDataSink;->cacheData:Landroid/icu/text/MeasureFormat$MeasureFormatData;
-Landroid/icu/text/MeasureFormat$UnitDataSink;->consumeAlias(Landroid/icu/impl/UResource$Key;Landroid/icu/impl/UResource$Value;)V
-Landroid/icu/text/MeasureFormat$UnitDataSink;->consumeCompoundPattern(Landroid/icu/impl/UResource$Key;Landroid/icu/impl/UResource$Value;)V
-Landroid/icu/text/MeasureFormat$UnitDataSink;->consumePattern(Landroid/icu/impl/UResource$Key;Landroid/icu/impl/UResource$Value;)V
-Landroid/icu/text/MeasureFormat$UnitDataSink;->consumeSubtypeTable(Landroid/icu/impl/UResource$Key;Landroid/icu/impl/UResource$Value;)V
-Landroid/icu/text/MeasureFormat$UnitDataSink;->consumeTable(Landroid/icu/impl/UResource$Key;Landroid/icu/impl/UResource$Value;)V
-Landroid/icu/text/MeasureFormat$UnitDataSink;->consumeUnitTypesTable(Landroid/icu/impl/UResource$Key;Landroid/icu/impl/UResource$Value;)V
-Landroid/icu/text/MeasureFormat$UnitDataSink;->patterns:[Ljava/lang/String;
-Landroid/icu/text/MeasureFormat$UnitDataSink;->sb:Ljava/lang/StringBuilder;
-Landroid/icu/text/MeasureFormat$UnitDataSink;->setDnamIfAbsent(Landroid/icu/impl/UResource$Value;)V
-Landroid/icu/text/MeasureFormat$UnitDataSink;->setFormatterIfAbsent(ILandroid/icu/impl/UResource$Value;I)V
-Landroid/icu/text/MeasureFormat$UnitDataSink;->type:Ljava/lang/String;
-Landroid/icu/text/MeasureFormat$UnitDataSink;->unit:Landroid/icu/util/MeasureUnit;
-Landroid/icu/text/MeasureFormat$UnitDataSink;->width:Landroid/icu/text/MeasureFormat$FormatWidth;
-Landroid/icu/text/MeasureFormat$UnitDataSink;->widthFromAlias(Landroid/icu/impl/UResource$Value;)Landroid/icu/text/MeasureFormat$FormatWidth;
-Landroid/icu/text/MeasureFormat$UnitDataSink;->widthFromKey(Landroid/icu/impl/UResource$Key;)Landroid/icu/text/MeasureFormat$FormatWidth;
-Landroid/icu/text/MeasureFormat;-><init>()V
-Landroid/icu/text/MeasureFormat;-><init>(Landroid/icu/util/ULocale;Landroid/icu/text/MeasureFormat$MeasureFormatData;Landroid/icu/text/MeasureFormat$FormatWidth;Landroid/icu/text/MeasureFormat$ImmutableNumberFormat;Landroid/icu/text/PluralRules;Landroid/icu/text/MeasureFormat$NumericFormatters;Landroid/icu/text/MeasureFormat$ImmutableNumberFormat;Landroid/icu/text/MeasureFormat$ImmutableNumberFormat;)V
-Landroid/icu/text/MeasureFormat;->appendReplacingCurrency(Ljava/lang/String;Landroid/icu/util/Currency;Landroid/icu/impl/StandardPlural;Ljava/lang/StringBuilder;)V
-Landroid/icu/text/MeasureFormat;->cache:Landroid/icu/text/MeasureFormat$MeasureFormatData;
-Landroid/icu/text/MeasureFormat;->currencyFormat:Landroid/icu/text/MeasureFormat$ImmutableNumberFormat;
-Landroid/icu/text/MeasureFormat;->CURRENCY_FORMAT:I
-Landroid/icu/text/MeasureFormat;->formatMeasure(Landroid/icu/util/Measure;Landroid/icu/text/MeasureFormat$ImmutableNumberFormat;)Ljava/lang/String;
-Landroid/icu/text/MeasureFormat;->formatMeasure(Landroid/icu/util/Measure;Landroid/icu/text/MeasureFormat$ImmutableNumberFormat;Ljava/lang/StringBuilder;Ljava/text/FieldPosition;)Ljava/lang/StringBuilder;
-Landroid/icu/text/MeasureFormat;->formatMeasureRange(Landroid/icu/util/Measure;Landroid/icu/util/Measure;)Ljava/lang/String;
-Landroid/icu/text/MeasureFormat;->formatNumeric(Ljava/util/Date;Landroid/icu/text/DateFormat;Landroid/icu/text/DateFormat$Field;Ljava/lang/Number;Ljava/lang/StringBuilder;)Ljava/lang/StringBuilder;
-Landroid/icu/text/MeasureFormat;->formatNumeric([Ljava/lang/Number;Ljava/lang/StringBuilder;)Ljava/lang/StringBuilder;
-Landroid/icu/text/MeasureFormat;->formatWidth:Landroid/icu/text/MeasureFormat$FormatWidth;
-Landroid/icu/text/MeasureFormat;->fromFormatWidthOrdinal(I)Landroid/icu/text/MeasureFormat$FormatWidth;
-Landroid/icu/text/MeasureFormat;->getFormatter(Landroid/icu/util/MeasureUnit;Landroid/icu/text/MeasureFormat$FormatWidth;I)Ljava/lang/String;
-Landroid/icu/text/MeasureFormat;->getFormatterOrNull(Landroid/icu/util/MeasureUnit;Landroid/icu/text/MeasureFormat$FormatWidth;I)Ljava/lang/String;
-Landroid/icu/text/MeasureFormat;->getPerFormatter(Landroid/icu/text/MeasureFormat$FormatWidth;)Ljava/lang/String;
-Landroid/icu/text/MeasureFormat;->getPluralFormatter(Landroid/icu/util/MeasureUnit;Landroid/icu/text/MeasureFormat$FormatWidth;I)Ljava/lang/String;
-Landroid/icu/text/MeasureFormat;->getRangeFormat(Landroid/icu/util/ULocale;Landroid/icu/text/MeasureFormat$FormatWidth;)Ljava/lang/String;
-Landroid/icu/text/MeasureFormat;->getRegularWidth(Landroid/icu/text/MeasureFormat$FormatWidth;)Landroid/icu/text/MeasureFormat$FormatWidth;
-Landroid/icu/text/MeasureFormat;->hmsTo012:Ljava/util/Map;
-Landroid/icu/text/MeasureFormat;->integerFormat:Landroid/icu/text/MeasureFormat$ImmutableNumberFormat;
-Landroid/icu/text/MeasureFormat;->loadLocaleData(Landroid/icu/util/ULocale;)Landroid/icu/text/MeasureFormat$MeasureFormatData;
-Landroid/icu/text/MeasureFormat;->loadNumericDurationFormat(Landroid/icu/impl/ICUResourceBundle;Ljava/lang/String;)Landroid/icu/text/DateFormat;
-Landroid/icu/text/MeasureFormat;->loadNumericFormatters(Landroid/icu/util/ULocale;)Landroid/icu/text/MeasureFormat$NumericFormatters;
-Landroid/icu/text/MeasureFormat;->localeIdToRangeFormat:Ljava/util/Map;
-Landroid/icu/text/MeasureFormat;->localeMeasureFormatData:Landroid/icu/impl/SimpleCache;
-Landroid/icu/text/MeasureFormat;->localeToNumericDurationFormatters:Landroid/icu/impl/SimpleCache;
-Landroid/icu/text/MeasureFormat;->MEASURE_FORMAT:I
-Landroid/icu/text/MeasureFormat;->numberFormat:Landroid/icu/text/MeasureFormat$ImmutableNumberFormat;
-Landroid/icu/text/MeasureFormat;->numericFormatters:Landroid/icu/text/MeasureFormat$NumericFormatters;
-Landroid/icu/text/MeasureFormat;->rules:Landroid/icu/text/PluralRules;
-Landroid/icu/text/MeasureFormat;->TIME_UNIT_FORMAT:I
-Landroid/icu/text/MeasureFormat;->toCurrencyProxy()Ljava/lang/Object;
-Landroid/icu/text/MeasureFormat;->toHMS([Landroid/icu/util/Measure;)[Ljava/lang/Number;
-Landroid/icu/text/MeasureFormat;->toTimeUnitProxy()Ljava/lang/Object;
-Landroid/icu/text/MeasureFormat;->withLocale(Landroid/icu/util/ULocale;)Landroid/icu/text/MeasureFormat;
-Landroid/icu/text/MeasureFormat;->withNumberFormat(Landroid/icu/text/NumberFormat;)Landroid/icu/text/MeasureFormat;
-Landroid/icu/text/MeasureFormat;->withPerUnitAndAppend(Ljava/lang/CharSequence;Landroid/icu/util/MeasureUnit;Ljava/lang/StringBuilder;)I
-Landroid/icu/text/MessageFormat$AppendableWrapper;-><init>(Ljava/lang/StringBuffer;)V
-Landroid/icu/text/MessageFormat$AppendableWrapper;-><init>(Ljava/lang/StringBuilder;)V
-Landroid/icu/text/MessageFormat$AppendableWrapper;->app:Ljava/lang/Appendable;
-Landroid/icu/text/MessageFormat$AppendableWrapper;->append(Ljava/lang/Appendable;Ljava/text/CharacterIterator;)I
-Landroid/icu/text/MessageFormat$AppendableWrapper;->append(Ljava/lang/CharSequence;)V
-Landroid/icu/text/MessageFormat$AppendableWrapper;->append(Ljava/lang/CharSequence;II)V
-Landroid/icu/text/MessageFormat$AppendableWrapper;->append(Ljava/text/CharacterIterator;)V
-Landroid/icu/text/MessageFormat$AppendableWrapper;->attributes:Ljava/util/List;
-Landroid/icu/text/MessageFormat$AppendableWrapper;->formatAndAppend(Ljava/text/Format;Ljava/lang/Object;)V
-Landroid/icu/text/MessageFormat$AppendableWrapper;->formatAndAppend(Ljava/text/Format;Ljava/lang/Object;Ljava/lang/String;)V
-Landroid/icu/text/MessageFormat$AppendableWrapper;->length:I
-Landroid/icu/text/MessageFormat$AppendableWrapper;->useAttributes()V
-Landroid/icu/text/MessageFormat$AttributeAndPosition;-><init>(Ljava/lang/Object;II)V
-Landroid/icu/text/MessageFormat$AttributeAndPosition;-><init>(Ljava/text/AttributedCharacterIterator$Attribute;Ljava/lang/Object;II)V
-Landroid/icu/text/MessageFormat$AttributeAndPosition;->init(Ljava/text/AttributedCharacterIterator$Attribute;Ljava/lang/Object;II)V
-Landroid/icu/text/MessageFormat$AttributeAndPosition;->key:Ljava/text/AttributedCharacterIterator$Attribute;
-Landroid/icu/text/MessageFormat$AttributeAndPosition;->limit:I
-Landroid/icu/text/MessageFormat$AttributeAndPosition;->start:I
-Landroid/icu/text/MessageFormat$AttributeAndPosition;->value:Ljava/lang/Object;
-Landroid/icu/text/MessageFormat$PluralSelectorContext;-><init>(ILjava/lang/String;Ljava/lang/Number;D)V
-Landroid/icu/text/MessageFormat$PluralSelectorContext;->argName:Ljava/lang/String;
-Landroid/icu/text/MessageFormat$PluralSelectorContext;->formatter:Ljava/text/Format;
-Landroid/icu/text/MessageFormat$PluralSelectorContext;->forReplaceNumber:Z
-Landroid/icu/text/MessageFormat$PluralSelectorContext;->number:Ljava/lang/Number;
-Landroid/icu/text/MessageFormat$PluralSelectorContext;->numberArgIndex:I
-Landroid/icu/text/MessageFormat$PluralSelectorContext;->numberString:Ljava/lang/String;
-Landroid/icu/text/MessageFormat$PluralSelectorContext;->offset:D
-Landroid/icu/text/MessageFormat$PluralSelectorContext;->startIndex:I
-Landroid/icu/text/MessageFormat$PluralSelectorProvider;-><init>(Landroid/icu/text/MessageFormat;Landroid/icu/text/PluralRules$PluralType;)V
-Landroid/icu/text/MessageFormat$PluralSelectorProvider;->msgFormat:Landroid/icu/text/MessageFormat;
-Landroid/icu/text/MessageFormat$PluralSelectorProvider;->rules:Landroid/icu/text/PluralRules;
-Landroid/icu/text/MessageFormat$PluralSelectorProvider;->select(Ljava/lang/Object;D)Ljava/lang/String;
-Landroid/icu/text/MessageFormat$PluralSelectorProvider;->type:Landroid/icu/text/PluralRules$PluralType;
-Landroid/icu/text/MessageFormat;->argNameMatches(ILjava/lang/String;I)Z
-Landroid/icu/text/MessageFormat;->cachedFormatters:Ljava/util/Map;
-Landroid/icu/text/MessageFormat;->cacheExplicitFormats()V
-Landroid/icu/text/MessageFormat;->createAppropriateFormat(Ljava/lang/String;Ljava/lang/String;)Ljava/text/Format;
-Landroid/icu/text/MessageFormat;->CURLY_BRACE_LEFT:C
-Landroid/icu/text/MessageFormat;->CURLY_BRACE_RIGHT:C
-Landroid/icu/text/MessageFormat;->customFormatArgStarts:Ljava/util/Set;
-Landroid/icu/text/MessageFormat;->dateModifierList:[Ljava/lang/String;
-Landroid/icu/text/MessageFormat;->DATE_MODIFIER_EMPTY:I
-Landroid/icu/text/MessageFormat;->DATE_MODIFIER_FULL:I
-Landroid/icu/text/MessageFormat;->DATE_MODIFIER_LONG:I
-Landroid/icu/text/MessageFormat;->DATE_MODIFIER_MEDIUM:I
-Landroid/icu/text/MessageFormat;->DATE_MODIFIER_SHORT:I
-Landroid/icu/text/MessageFormat;->findChoiceSubMessage(Landroid/icu/text/MessagePattern;ID)I
-Landroid/icu/text/MessageFormat;->findFirstPluralNumberArg(ILjava/lang/String;)I
-Landroid/icu/text/MessageFormat;->findKeyword(Ljava/lang/String;[Ljava/lang/String;)I
-Landroid/icu/text/MessageFormat;->findOtherSubMessage(I)I
-Landroid/icu/text/MessageFormat;->format(ILandroid/icu/text/MessageFormat$PluralSelectorContext;[Ljava/lang/Object;Ljava/util/Map;Landroid/icu/text/MessageFormat$AppendableWrapper;Ljava/text/FieldPosition;)V
-Landroid/icu/text/MessageFormat;->format(Ljava/lang/Object;Landroid/icu/text/MessageFormat$AppendableWrapper;Ljava/text/FieldPosition;)V
-Landroid/icu/text/MessageFormat;->format([Ljava/lang/Object;Ljava/util/Map;Landroid/icu/text/MessageFormat$AppendableWrapper;Ljava/text/FieldPosition;)V
-Landroid/icu/text/MessageFormat;->formatComplexSubMessage(ILandroid/icu/text/MessageFormat$PluralSelectorContext;[Ljava/lang/Object;Ljava/util/Map;Landroid/icu/text/MessageFormat$AppendableWrapper;)V
-Landroid/icu/text/MessageFormat;->getArgName(I)Ljava/lang/String;
-Landroid/icu/text/MessageFormat;->getLiteralStringUntilNextArgument(I)Ljava/lang/String;
-Landroid/icu/text/MessageFormat;->getStockDateFormatter()Landroid/icu/text/DateFormat;
-Landroid/icu/text/MessageFormat;->getStockNumberFormatter()Landroid/icu/text/NumberFormat;
-Landroid/icu/text/MessageFormat;->matchStringUntilLimitPart(Landroid/icu/text/MessagePattern;IILjava/lang/String;I)I
-Landroid/icu/text/MessageFormat;->modifierList:[Ljava/lang/String;
-Landroid/icu/text/MessageFormat;->MODIFIER_CURRENCY:I
-Landroid/icu/text/MessageFormat;->MODIFIER_EMPTY:I
-Landroid/icu/text/MessageFormat;->MODIFIER_INTEGER:I
-Landroid/icu/text/MessageFormat;->MODIFIER_PERCENT:I
-Landroid/icu/text/MessageFormat;->msgPattern:Landroid/icu/text/MessagePattern;
-Landroid/icu/text/MessageFormat;->nextTopLevelArgStart(I)I
-Landroid/icu/text/MessageFormat;->ordinalProvider:Landroid/icu/text/MessageFormat$PluralSelectorProvider;
-Landroid/icu/text/MessageFormat;->parse(ILjava/lang/String;Ljava/text/ParsePosition;[Ljava/lang/Object;Ljava/util/Map;)V
-Landroid/icu/text/MessageFormat;->parseChoiceArgument(Landroid/icu/text/MessagePattern;ILjava/lang/String;Ljava/text/ParsePosition;)D
-Landroid/icu/text/MessageFormat;->pluralProvider:Landroid/icu/text/MessageFormat$PluralSelectorProvider;
-Landroid/icu/text/MessageFormat;->resetPattern()V
-Landroid/icu/text/MessageFormat;->rootLocale:Ljava/util/Locale;
-Landroid/icu/text/MessageFormat;->setArgStartFormat(ILjava/text/Format;)V
-Landroid/icu/text/MessageFormat;->setCustomArgStartFormat(ILjava/text/Format;)V
-Landroid/icu/text/MessageFormat;->SINGLE_QUOTE:C
-Landroid/icu/text/MessageFormat;->STATE_INITIAL:I
-Landroid/icu/text/MessageFormat;->STATE_IN_QUOTE:I
-Landroid/icu/text/MessageFormat;->STATE_MSG_ELEMENT:I
-Landroid/icu/text/MessageFormat;->STATE_SINGLE_QUOTE:I
-Landroid/icu/text/MessageFormat;->stockDateFormatter:Landroid/icu/text/DateFormat;
-Landroid/icu/text/MessageFormat;->stockNumberFormatter:Landroid/icu/text/NumberFormat;
-Landroid/icu/text/MessageFormat;->typeList:[Ljava/lang/String;
-Landroid/icu/text/MessageFormat;->TYPE_DATE:I
-Landroid/icu/text/MessageFormat;->TYPE_DURATION:I
-Landroid/icu/text/MessageFormat;->TYPE_NUMBER:I
-Landroid/icu/text/MessageFormat;->TYPE_ORDINAL:I
-Landroid/icu/text/MessageFormat;->TYPE_SPELLOUT:I
-Landroid/icu/text/MessageFormat;->TYPE_TIME:I
-Landroid/icu/text/MessageFormat;->ulocale:Landroid/icu/util/ULocale;
-Landroid/icu/text/MessageFormat;->updateMetaData(Landroid/icu/text/MessageFormat$AppendableWrapper;ILjava/text/FieldPosition;Ljava/lang/Object;)Ljava/text/FieldPosition;
-Landroid/icu/text/MessagePattern$Part;-><init>(Landroid/icu/text/MessagePattern$Part$Type;III)V
-Landroid/icu/text/MessagePattern$Part;->index:I
-Landroid/icu/text/MessagePattern$Part;->length:C
-Landroid/icu/text/MessagePattern$Part;->limitPartIndex:I
-Landroid/icu/text/MessagePattern$Part;->MAX_LENGTH:I
-Landroid/icu/text/MessagePattern$Part;->MAX_VALUE:I
-Landroid/icu/text/MessagePattern$Part;->type:Landroid/icu/text/MessagePattern$Part$Type;
-Landroid/icu/text/MessagePattern$Part;->value:S
-Landroid/icu/text/MessagePattern;->addArgDoublePart(DII)V
-Landroid/icu/text/MessagePattern;->addLimitPart(ILandroid/icu/text/MessagePattern$Part$Type;III)V
-Landroid/icu/text/MessagePattern;->addPart(Landroid/icu/text/MessagePattern$Part$Type;III)V
-Landroid/icu/text/MessagePattern;->aposMode:Landroid/icu/text/MessagePattern$ApostropheMode;
-Landroid/icu/text/MessagePattern;->appendReducedApostrophes(Ljava/lang/String;IILjava/lang/StringBuilder;)V
-Landroid/icu/text/MessagePattern;->argTypes:[Landroid/icu/text/MessagePattern$ArgType;
-Landroid/icu/text/MessagePattern;->defaultAposMode:Landroid/icu/text/MessagePattern$ApostropheMode;
-Landroid/icu/text/MessagePattern;->frozen:Z
-Landroid/icu/text/MessagePattern;->hasArgNames:Z
-Landroid/icu/text/MessagePattern;->hasArgNumbers:Z
-Landroid/icu/text/MessagePattern;->inMessageFormatPattern(I)Z
-Landroid/icu/text/MessagePattern;->inTopLevelChoiceMessage(ILandroid/icu/text/MessagePattern$ArgType;)Z
-Landroid/icu/text/MessagePattern;->isArgTypeChar(I)Z
-Landroid/icu/text/MessagePattern;->isChoice(I)Z
-Landroid/icu/text/MessagePattern;->isOrdinal(I)Z
-Landroid/icu/text/MessagePattern;->isPlural(I)Z
-Landroid/icu/text/MessagePattern;->isSelect(I)Z
-Landroid/icu/text/MessagePattern;->jdkAposMode()Z
-Landroid/icu/text/MessagePattern;->MAX_PREFIX_LENGTH:I
-Landroid/icu/text/MessagePattern;->msg:Ljava/lang/String;
-Landroid/icu/text/MessagePattern;->needsAutoQuoting:Z
-Landroid/icu/text/MessagePattern;->numericValues:Ljava/util/ArrayList;
-Landroid/icu/text/MessagePattern;->parseArg(III)I
-Landroid/icu/text/MessagePattern;->parseArgNumber(II)I
-Landroid/icu/text/MessagePattern;->parseArgNumber(Ljava/lang/CharSequence;II)I
-Landroid/icu/text/MessagePattern;->parseChoiceStyle(II)I
-Landroid/icu/text/MessagePattern;->parseDouble(IIZ)V
-Landroid/icu/text/MessagePattern;->parseMessage(IIILandroid/icu/text/MessagePattern$ArgType;)I
-Landroid/icu/text/MessagePattern;->parsePluralOrSelectStyle(Landroid/icu/text/MessagePattern$ArgType;II)I
-Landroid/icu/text/MessagePattern;->parseSimpleStyle(I)I
-Landroid/icu/text/MessagePattern;->parts:Ljava/util/ArrayList;
-Landroid/icu/text/MessagePattern;->postParse()V
-Landroid/icu/text/MessagePattern;->prefix()Ljava/lang/String;
-Landroid/icu/text/MessagePattern;->prefix(I)Ljava/lang/String;
-Landroid/icu/text/MessagePattern;->prefix(Ljava/lang/String;)Ljava/lang/String;
-Landroid/icu/text/MessagePattern;->prefix(Ljava/lang/String;I)Ljava/lang/String;
-Landroid/icu/text/MessagePattern;->preParse(Ljava/lang/String;)V
-Landroid/icu/text/MessagePattern;->skipDouble(I)I
-Landroid/icu/text/MessagePattern;->skipIdentifier(I)I
-Landroid/icu/text/MessagePattern;->skipWhiteSpace(I)I
-Landroid/icu/text/MessagePatternUtil$ArgNode;-><init>()V
-Landroid/icu/text/MessagePatternUtil$ArgNode;->argType:Landroid/icu/text/MessagePattern$ArgType;
-Landroid/icu/text/MessagePatternUtil$ArgNode;->complexStyle:Landroid/icu/text/MessagePatternUtil$ComplexArgStyleNode;
-Landroid/icu/text/MessagePatternUtil$ArgNode;->createArgNode()Landroid/icu/text/MessagePatternUtil$ArgNode;
-Landroid/icu/text/MessagePatternUtil$ArgNode;->getArgType()Landroid/icu/text/MessagePattern$ArgType;
-Landroid/icu/text/MessagePatternUtil$ArgNode;->getComplexStyle()Landroid/icu/text/MessagePatternUtil$ComplexArgStyleNode;
-Landroid/icu/text/MessagePatternUtil$ArgNode;->getName()Ljava/lang/String;
-Landroid/icu/text/MessagePatternUtil$ArgNode;->getNumber()I
-Landroid/icu/text/MessagePatternUtil$ArgNode;->getSimpleStyle()Ljava/lang/String;
-Landroid/icu/text/MessagePatternUtil$ArgNode;->getTypeName()Ljava/lang/String;
-Landroid/icu/text/MessagePatternUtil$ArgNode;->name:Ljava/lang/String;
-Landroid/icu/text/MessagePatternUtil$ArgNode;->number:I
-Landroid/icu/text/MessagePatternUtil$ArgNode;->style:Ljava/lang/String;
-Landroid/icu/text/MessagePatternUtil$ArgNode;->typeName:Ljava/lang/String;
-Landroid/icu/text/MessagePatternUtil$ComplexArgStyleNode;-><init>(Landroid/icu/text/MessagePattern$ArgType;)V
-Landroid/icu/text/MessagePatternUtil$ComplexArgStyleNode;->addVariant(Landroid/icu/text/MessagePatternUtil$VariantNode;)V
-Landroid/icu/text/MessagePatternUtil$ComplexArgStyleNode;->argType:Landroid/icu/text/MessagePattern$ArgType;
-Landroid/icu/text/MessagePatternUtil$ComplexArgStyleNode;->explicitOffset:Z
-Landroid/icu/text/MessagePatternUtil$ComplexArgStyleNode;->freeze()Landroid/icu/text/MessagePatternUtil$ComplexArgStyleNode;
-Landroid/icu/text/MessagePatternUtil$ComplexArgStyleNode;->getArgType()Landroid/icu/text/MessagePattern$ArgType;
-Landroid/icu/text/MessagePatternUtil$ComplexArgStyleNode;->getOffset()D
-Landroid/icu/text/MessagePatternUtil$ComplexArgStyleNode;->getVariants()Ljava/util/List;
-Landroid/icu/text/MessagePatternUtil$ComplexArgStyleNode;->getVariantsByType(Ljava/util/List;Ljava/util/List;)Landroid/icu/text/MessagePatternUtil$VariantNode;
-Landroid/icu/text/MessagePatternUtil$ComplexArgStyleNode;->hasExplicitOffset()Z
-Landroid/icu/text/MessagePatternUtil$ComplexArgStyleNode;->list:Ljava/util/List;
-Landroid/icu/text/MessagePatternUtil$ComplexArgStyleNode;->offset:D
-Landroid/icu/text/MessagePatternUtil$MessageContentsNode$Type;->ARG:Landroid/icu/text/MessagePatternUtil$MessageContentsNode$Type;
-Landroid/icu/text/MessagePatternUtil$MessageContentsNode$Type;->REPLACE_NUMBER:Landroid/icu/text/MessagePatternUtil$MessageContentsNode$Type;
-Landroid/icu/text/MessagePatternUtil$MessageContentsNode$Type;->TEXT:Landroid/icu/text/MessagePatternUtil$MessageContentsNode$Type;
-Landroid/icu/text/MessagePatternUtil$MessageContentsNode$Type;->valueOf(Ljava/lang/String;)Landroid/icu/text/MessagePatternUtil$MessageContentsNode$Type;
-Landroid/icu/text/MessagePatternUtil$MessageContentsNode$Type;->values()[Landroid/icu/text/MessagePatternUtil$MessageContentsNode$Type;
-Landroid/icu/text/MessagePatternUtil$MessageContentsNode;-><init>(Landroid/icu/text/MessagePatternUtil$MessageContentsNode$Type;)V
-Landroid/icu/text/MessagePatternUtil$MessageContentsNode;->createReplaceNumberNode()Landroid/icu/text/MessagePatternUtil$MessageContentsNode;
-Landroid/icu/text/MessagePatternUtil$MessageContentsNode;->getType()Landroid/icu/text/MessagePatternUtil$MessageContentsNode$Type;
-Landroid/icu/text/MessagePatternUtil$MessageContentsNode;->type:Landroid/icu/text/MessagePatternUtil$MessageContentsNode$Type;
-Landroid/icu/text/MessagePatternUtil$MessageNode;-><init>()V
-Landroid/icu/text/MessagePatternUtil$MessageNode;->addContentsNode(Landroid/icu/text/MessagePatternUtil$MessageContentsNode;)V
-Landroid/icu/text/MessagePatternUtil$MessageNode;->freeze()Landroid/icu/text/MessagePatternUtil$MessageNode;
-Landroid/icu/text/MessagePatternUtil$MessageNode;->getContents()Ljava/util/List;
-Landroid/icu/text/MessagePatternUtil$MessageNode;->list:Ljava/util/List;
-Landroid/icu/text/MessagePatternUtil$Node;-><init>()V
-Landroid/icu/text/MessagePatternUtil$TextNode;-><init>(Ljava/lang/String;)V
-Landroid/icu/text/MessagePatternUtil$TextNode;->getText()Ljava/lang/String;
-Landroid/icu/text/MessagePatternUtil$TextNode;->text:Ljava/lang/String;
-Landroid/icu/text/MessagePatternUtil$VariantNode;-><init>()V
-Landroid/icu/text/MessagePatternUtil$VariantNode;->getMessage()Landroid/icu/text/MessagePatternUtil$MessageNode;
-Landroid/icu/text/MessagePatternUtil$VariantNode;->getSelector()Ljava/lang/String;
-Landroid/icu/text/MessagePatternUtil$VariantNode;->getSelectorValue()D
-Landroid/icu/text/MessagePatternUtil$VariantNode;->isSelectorNumeric()Z
-Landroid/icu/text/MessagePatternUtil$VariantNode;->msgNode:Landroid/icu/text/MessagePatternUtil$MessageNode;
-Landroid/icu/text/MessagePatternUtil$VariantNode;->numericValue:D
-Landroid/icu/text/MessagePatternUtil$VariantNode;->selector:Ljava/lang/String;
-Landroid/icu/text/MessagePatternUtil;-><init>()V
-Landroid/icu/text/MessagePatternUtil;->buildArgNode(Landroid/icu/text/MessagePattern;II)Landroid/icu/text/MessagePatternUtil$ArgNode;
-Landroid/icu/text/MessagePatternUtil;->buildChoiceStyleNode(Landroid/icu/text/MessagePattern;II)Landroid/icu/text/MessagePatternUtil$ComplexArgStyleNode;
-Landroid/icu/text/MessagePatternUtil;->buildMessageNode(Landroid/icu/text/MessagePattern;)Landroid/icu/text/MessagePatternUtil$MessageNode;
-Landroid/icu/text/MessagePatternUtil;->buildMessageNode(Landroid/icu/text/MessagePattern;II)Landroid/icu/text/MessagePatternUtil$MessageNode;
-Landroid/icu/text/MessagePatternUtil;->buildMessageNode(Ljava/lang/String;)Landroid/icu/text/MessagePatternUtil$MessageNode;
-Landroid/icu/text/MessagePatternUtil;->buildPluralStyleNode(Landroid/icu/text/MessagePattern;IILandroid/icu/text/MessagePattern$ArgType;)Landroid/icu/text/MessagePatternUtil$ComplexArgStyleNode;
-Landroid/icu/text/MessagePatternUtil;->buildSelectStyleNode(Landroid/icu/text/MessagePattern;II)Landroid/icu/text/MessagePatternUtil$ComplexArgStyleNode;
-Landroid/icu/text/NFRule;-><init>(Landroid/icu/text/RuleBasedNumberFormat;Ljava/lang/String;)V
-Landroid/icu/text/NFRule;->allIgnorable(Ljava/lang/String;)Z
-Landroid/icu/text/NFRule;->baseValue:J
-Landroid/icu/text/NFRule;->decimalPoint:C
-Landroid/icu/text/NFRule;->doFormat(DLjava/lang/StringBuilder;II)V
-Landroid/icu/text/NFRule;->doFormat(JLjava/lang/StringBuilder;II)V
-Landroid/icu/text/NFRule;->doParse(Ljava/lang/String;Ljava/text/ParsePosition;ZD)Ljava/lang/Number;
-Landroid/icu/text/NFRule;->expectedExponent()S
-Landroid/icu/text/NFRule;->exponent:S
-Landroid/icu/text/NFRule;->extractSubstitution(Landroid/icu/text/NFRuleSet;Landroid/icu/text/NFRule;)Landroid/icu/text/NFSubstitution;
-Landroid/icu/text/NFRule;->extractSubstitutions(Landroid/icu/text/NFRuleSet;Ljava/lang/String;Landroid/icu/text/NFRule;)V
-Landroid/icu/text/NFRule;->findText(Ljava/lang/String;Ljava/lang/String;Landroid/icu/text/PluralFormat;I)[I
-Landroid/icu/text/NFRule;->formatter:Landroid/icu/text/RuleBasedNumberFormat;
-Landroid/icu/text/NFRule;->getBaseValue()J
-Landroid/icu/text/NFRule;->getDecimalPoint()C
-Landroid/icu/text/NFRule;->getDivisor()J
-Landroid/icu/text/NFRule;->IMPROPER_FRACTION_RULE:I
-Landroid/icu/text/NFRule;->indexOfAnyRulePrefix(Ljava/lang/String;)I
-Landroid/icu/text/NFRule;->INFINITY_RULE:I
-Landroid/icu/text/NFRule;->makeRules(Ljava/lang/String;Landroid/icu/text/NFRuleSet;Landroid/icu/text/NFRule;Landroid/icu/text/RuleBasedNumberFormat;Ljava/util/List;)V
-Landroid/icu/text/NFRule;->MASTER_RULE:I
-Landroid/icu/text/NFRule;->matchToDelimiter(Ljava/lang/String;IDLjava/lang/String;Landroid/icu/text/PluralFormat;Ljava/text/ParsePosition;Landroid/icu/text/NFSubstitution;D)Ljava/lang/Number;
-Landroid/icu/text/NFRule;->NAN_RULE:I
-Landroid/icu/text/NFRule;->NEGATIVE_NUMBER_RULE:I
-Landroid/icu/text/NFRule;->parseRuleDescriptor(Ljava/lang/String;)Ljava/lang/String;
-Landroid/icu/text/NFRule;->power(JS)J
-Landroid/icu/text/NFRule;->prefixLength(Ljava/lang/String;Ljava/lang/String;)I
-Landroid/icu/text/NFRule;->PROPER_FRACTION_RULE:I
-Landroid/icu/text/NFRule;->radix:I
-Landroid/icu/text/NFRule;->rulePatternFormat:Landroid/icu/text/PluralFormat;
-Landroid/icu/text/NFRule;->ruleText:Ljava/lang/String;
-Landroid/icu/text/NFRule;->RULE_PREFIXES:[Ljava/lang/String;
-Landroid/icu/text/NFRule;->setBaseValue(J)V
-Landroid/icu/text/NFRule;->setDecimalFormatSymbols(Landroid/icu/text/DecimalFormatSymbols;)V
-Landroid/icu/text/NFRule;->shouldRollBack(J)Z
-Landroid/icu/text/NFRule;->stripPrefix(Ljava/lang/String;Ljava/lang/String;Ljava/text/ParsePosition;)Ljava/lang/String;
-Landroid/icu/text/NFRule;->sub1:Landroid/icu/text/NFSubstitution;
-Landroid/icu/text/NFRule;->sub2:Landroid/icu/text/NFSubstitution;
-Landroid/icu/text/NFRule;->ZERO:Ljava/lang/Long;
-Landroid/icu/text/NFRuleSet;-><init>(Landroid/icu/text/RuleBasedNumberFormat;[Ljava/lang/String;I)V
-Landroid/icu/text/NFRuleSet;->findFractionRuleSetRule(D)Landroid/icu/text/NFRule;
-Landroid/icu/text/NFRuleSet;->findNormalRule(J)Landroid/icu/text/NFRule;
-Landroid/icu/text/NFRuleSet;->findRule(D)Landroid/icu/text/NFRule;
-Landroid/icu/text/NFRuleSet;->format(DLjava/lang/StringBuilder;II)V
-Landroid/icu/text/NFRuleSet;->format(JLjava/lang/StringBuilder;II)V
-Landroid/icu/text/NFRuleSet;->fractionRules:Ljava/util/LinkedList;
-Landroid/icu/text/NFRuleSet;->getName()Ljava/lang/String;
-Landroid/icu/text/NFRuleSet;->IMPROPER_FRACTION_RULE_INDEX:I
-Landroid/icu/text/NFRuleSet;->INFINITY_RULE_INDEX:I
-Landroid/icu/text/NFRuleSet;->isFractionRuleSet:Z
-Landroid/icu/text/NFRuleSet;->isFractionSet()Z
-Landroid/icu/text/NFRuleSet;->isParseable()Z
-Landroid/icu/text/NFRuleSet;->isParseable:Z
-Landroid/icu/text/NFRuleSet;->isPublic()Z
-Landroid/icu/text/NFRuleSet;->lcm(JJ)J
-Landroid/icu/text/NFRuleSet;->makeIntoFractionRuleSet()V
-Landroid/icu/text/NFRuleSet;->MASTER_RULE_INDEX:I
-Landroid/icu/text/NFRuleSet;->name:Ljava/lang/String;
-Landroid/icu/text/NFRuleSet;->NAN_RULE_INDEX:I
-Landroid/icu/text/NFRuleSet;->NEGATIVE_RULE_INDEX:I
-Landroid/icu/text/NFRuleSet;->nonNumericalRules:[Landroid/icu/text/NFRule;
-Landroid/icu/text/NFRuleSet;->owner:Landroid/icu/text/RuleBasedNumberFormat;
-Landroid/icu/text/NFRuleSet;->parse(Ljava/lang/String;Ljava/text/ParsePosition;D)Ljava/lang/Number;
-Landroid/icu/text/NFRuleSet;->parseRules(Ljava/lang/String;)V
-Landroid/icu/text/NFRuleSet;->PROPER_FRACTION_RULE_INDEX:I
-Landroid/icu/text/NFRuleSet;->RECURSION_LIMIT:I
-Landroid/icu/text/NFRuleSet;->rules:[Landroid/icu/text/NFRule;
-Landroid/icu/text/NFRuleSet;->setBestFractionRule(ILandroid/icu/text/NFRule;Z)V
-Landroid/icu/text/NFRuleSet;->setDecimalFormatSymbols(Landroid/icu/text/DecimalFormatSymbols;)V
-Landroid/icu/text/NFRuleSet;->setNonNumericalRule(Landroid/icu/text/NFRule;)V
-Landroid/icu/text/NFSubstitution;-><init>(ILandroid/icu/text/NFRuleSet;Ljava/lang/String;)V
-Landroid/icu/text/NFSubstitution;->calcUpperBound(D)D
-Landroid/icu/text/NFSubstitution;->composeRuleValue(DD)D
-Landroid/icu/text/NFSubstitution;->doParse(Ljava/lang/String;Ljava/text/ParsePosition;DDZ)Ljava/lang/Number;
-Landroid/icu/text/NFSubstitution;->doSubstitution(DLjava/lang/StringBuilder;II)V
-Landroid/icu/text/NFSubstitution;->doSubstitution(JLjava/lang/StringBuilder;II)V
-Landroid/icu/text/NFSubstitution;->getPos()I
-Landroid/icu/text/NFSubstitution;->isModulusSubstitution()Z
-Landroid/icu/text/NFSubstitution;->makeSubstitution(ILandroid/icu/text/NFRule;Landroid/icu/text/NFRule;Landroid/icu/text/NFRuleSet;Landroid/icu/text/RuleBasedNumberFormat;Ljava/lang/String;)Landroid/icu/text/NFSubstitution;
-Landroid/icu/text/NFSubstitution;->MAX_INT64_IN_DOUBLE:J
-Landroid/icu/text/NFSubstitution;->numberFormat:Landroid/icu/text/DecimalFormat;
-Landroid/icu/text/NFSubstitution;->pos:I
-Landroid/icu/text/NFSubstitution;->ruleSet:Landroid/icu/text/NFRuleSet;
-Landroid/icu/text/NFSubstitution;->setDecimalFormatSymbols(Landroid/icu/text/DecimalFormatSymbols;)V
-Landroid/icu/text/NFSubstitution;->setDivisor(IS)V
-Landroid/icu/text/NFSubstitution;->tokenChar()C
-Landroid/icu/text/NFSubstitution;->transformNumber(D)D
-Landroid/icu/text/NFSubstitution;->transformNumber(J)J
-Landroid/icu/text/Normalizer$CharsAppendable;-><init>([CII)V
-Landroid/icu/text/Normalizer$CharsAppendable;->chars:[C
-Landroid/icu/text/Normalizer$CharsAppendable;->length()I
-Landroid/icu/text/Normalizer$CharsAppendable;->limit:I
-Landroid/icu/text/Normalizer$CharsAppendable;->offset:I
-Landroid/icu/text/Normalizer$CharsAppendable;->start:I
-Landroid/icu/text/Normalizer$CmpEquivLevel;-><init>()V
-Landroid/icu/text/Normalizer$CmpEquivLevel;->cs:Ljava/lang/CharSequence;
-Landroid/icu/text/Normalizer$CmpEquivLevel;->s:I
-Landroid/icu/text/Normalizer$FCD32ModeImpl;-><init>()V
-Landroid/icu/text/Normalizer$FCD32ModeImpl;->INSTANCE:Landroid/icu/text/Normalizer$ModeImpl;
-Landroid/icu/text/Normalizer$FCDMode;-><init>()V
-Landroid/icu/text/Normalizer$FCDMode;->getNormalizer2(I)Landroid/icu/text/Normalizer2;
-Landroid/icu/text/Normalizer$FCDModeImpl;-><init>()V
-Landroid/icu/text/Normalizer$FCDModeImpl;->INSTANCE:Landroid/icu/text/Normalizer$ModeImpl;
-Landroid/icu/text/Normalizer$Mode;-><init>()V
-Landroid/icu/text/Normalizer$Mode;->getNormalizer2(I)Landroid/icu/text/Normalizer2;
-Landroid/icu/text/Normalizer$ModeImpl;-><init>(Landroid/icu/text/Normalizer2;)V
-Landroid/icu/text/Normalizer$ModeImpl;->normalizer2:Landroid/icu/text/Normalizer2;
-Landroid/icu/text/Normalizer$NFC32ModeImpl;-><init>()V
-Landroid/icu/text/Normalizer$NFC32ModeImpl;->INSTANCE:Landroid/icu/text/Normalizer$ModeImpl;
-Landroid/icu/text/Normalizer$NFCMode;-><init>()V
-Landroid/icu/text/Normalizer$NFCMode;->getNormalizer2(I)Landroid/icu/text/Normalizer2;
-Landroid/icu/text/Normalizer$NFCModeImpl;-><init>()V
-Landroid/icu/text/Normalizer$NFCModeImpl;->INSTANCE:Landroid/icu/text/Normalizer$ModeImpl;
-Landroid/icu/text/Normalizer$NFD32ModeImpl;-><init>()V
-Landroid/icu/text/Normalizer$NFD32ModeImpl;->INSTANCE:Landroid/icu/text/Normalizer$ModeImpl;
-Landroid/icu/text/Normalizer$NFDMode;-><init>()V
-Landroid/icu/text/Normalizer$NFDMode;->getNormalizer2(I)Landroid/icu/text/Normalizer2;
-Landroid/icu/text/Normalizer$NFDModeImpl;-><init>()V
-Landroid/icu/text/Normalizer$NFDModeImpl;->INSTANCE:Landroid/icu/text/Normalizer$ModeImpl;
-Landroid/icu/text/Normalizer$NFKC32ModeImpl;-><init>()V
-Landroid/icu/text/Normalizer$NFKC32ModeImpl;->INSTANCE:Landroid/icu/text/Normalizer$ModeImpl;
-Landroid/icu/text/Normalizer$NFKCMode;-><init>()V
-Landroid/icu/text/Normalizer$NFKCMode;->getNormalizer2(I)Landroid/icu/text/Normalizer2;
-Landroid/icu/text/Normalizer$NFKCModeImpl;-><init>()V
-Landroid/icu/text/Normalizer$NFKCModeImpl;->INSTANCE:Landroid/icu/text/Normalizer$ModeImpl;
-Landroid/icu/text/Normalizer$NFKD32ModeImpl;-><init>()V
-Landroid/icu/text/Normalizer$NFKD32ModeImpl;->INSTANCE:Landroid/icu/text/Normalizer$ModeImpl;
-Landroid/icu/text/Normalizer$NFKDMode;-><init>()V
-Landroid/icu/text/Normalizer$NFKDMode;->getNormalizer2(I)Landroid/icu/text/Normalizer2;
-Landroid/icu/text/Normalizer$NFKDModeImpl;-><init>()V
-Landroid/icu/text/Normalizer$NFKDModeImpl;->INSTANCE:Landroid/icu/text/Normalizer$ModeImpl;
-Landroid/icu/text/Normalizer$NONEMode;-><init>()V
-Landroid/icu/text/Normalizer$NONEMode;->getNormalizer2(I)Landroid/icu/text/Normalizer2;
-Landroid/icu/text/Normalizer$QuickCheckResult;-><init>(I)V
-Landroid/icu/text/Normalizer$Unicode32;-><init>()V
-Landroid/icu/text/Normalizer$Unicode32;->INSTANCE:Landroid/icu/text/UnicodeSet;
-Landroid/icu/text/Normalizer2;-><init>()V
-Landroid/icu/text/Normalizer;-><init>(Landroid/icu/text/UCharacterIterator;Landroid/icu/text/Normalizer$Mode;I)V
-Landroid/icu/text/Normalizer;-><init>(Ljava/lang/String;Landroid/icu/text/Normalizer$Mode;I)V
-Landroid/icu/text/Normalizer;-><init>(Ljava/text/CharacterIterator;Landroid/icu/text/Normalizer$Mode;I)V
-Landroid/icu/text/Normalizer;->buffer:Ljava/lang/StringBuilder;
-Landroid/icu/text/Normalizer;->bufferPos:I
-Landroid/icu/text/Normalizer;->clearBuffer()V
-Landroid/icu/text/Normalizer;->cmpEquivFold(Ljava/lang/CharSequence;Ljava/lang/CharSequence;I)I
-Landroid/icu/text/Normalizer;->COMPARE_EQUIV:I
-Landroid/icu/text/Normalizer;->COMPARE_NORM_OPTIONS_SHIFT:I
-Landroid/icu/text/Normalizer;->compose(Ljava/lang/String;Z)Ljava/lang/String;
-Landroid/icu/text/Normalizer;->compose(Ljava/lang/String;ZI)Ljava/lang/String;
-Landroid/icu/text/Normalizer;->compose([CII[CIIZI)I
-Landroid/icu/text/Normalizer;->compose([C[CZI)I
-Landroid/icu/text/Normalizer;->COMPOSE:Landroid/icu/text/Normalizer$Mode;
-Landroid/icu/text/Normalizer;->COMPOSE_COMPAT:Landroid/icu/text/Normalizer$Mode;
-Landroid/icu/text/Normalizer;->concatenate(Ljava/lang/String;Ljava/lang/String;Landroid/icu/text/Normalizer$Mode;I)Ljava/lang/String;
-Landroid/icu/text/Normalizer;->concatenate([CII[CII[CIILandroid/icu/text/Normalizer$Mode;I)I
-Landroid/icu/text/Normalizer;->concatenate([C[CLandroid/icu/text/Normalizer$Mode;I)Ljava/lang/String;
-Landroid/icu/text/Normalizer;->createCmpEquivLevelStack()[Landroid/icu/text/Normalizer$CmpEquivLevel;
-Landroid/icu/text/Normalizer;->current()I
-Landroid/icu/text/Normalizer;->currentIndex:I
-Landroid/icu/text/Normalizer;->DECOMP:Landroid/icu/text/Normalizer$Mode;
-Landroid/icu/text/Normalizer;->decompose(Ljava/lang/String;Z)Ljava/lang/String;
-Landroid/icu/text/Normalizer;->decompose(Ljava/lang/String;ZI)Ljava/lang/String;
-Landroid/icu/text/Normalizer;->decompose([CII[CIIZI)I
-Landroid/icu/text/Normalizer;->decompose([C[CZI)I
-Landroid/icu/text/Normalizer;->DECOMP_COMPAT:Landroid/icu/text/Normalizer$Mode;
-Landroid/icu/text/Normalizer;->DEFAULT:Landroid/icu/text/Normalizer$Mode;
-Landroid/icu/text/Normalizer;->DONE:I
-Landroid/icu/text/Normalizer;->endIndex()I
-Landroid/icu/text/Normalizer;->FCD:Landroid/icu/text/Normalizer$Mode;
-Landroid/icu/text/Normalizer;->first()I
-Landroid/icu/text/Normalizer;->getBeginIndex()I
-Landroid/icu/text/Normalizer;->getComposeNormalizer2(ZI)Landroid/icu/text/Normalizer2;
-Landroid/icu/text/Normalizer;->getDecomposeNormalizer2(ZI)Landroid/icu/text/Normalizer2;
-Landroid/icu/text/Normalizer;->getEndIndex()I
-Landroid/icu/text/Normalizer;->getFC_NFKC_Closure(I)Ljava/lang/String;
-Landroid/icu/text/Normalizer;->getFC_NFKC_Closure(I[C)I
-Landroid/icu/text/Normalizer;->getIndex()I
-Landroid/icu/text/Normalizer;->getLength()I
-Landroid/icu/text/Normalizer;->getMode()Landroid/icu/text/Normalizer$Mode;
-Landroid/icu/text/Normalizer;->getOption(I)I
-Landroid/icu/text/Normalizer;->getText()Ljava/lang/String;
-Landroid/icu/text/Normalizer;->getText([C)I
-Landroid/icu/text/Normalizer;->IGNORE_HANGUL:I
-Landroid/icu/text/Normalizer;->internalCompare(Ljava/lang/CharSequence;Ljava/lang/CharSequence;I)I
-Landroid/icu/text/Normalizer;->isNormalized(ILandroid/icu/text/Normalizer$Mode;I)Z
-Landroid/icu/text/Normalizer;->isNormalized(Ljava/lang/String;Landroid/icu/text/Normalizer$Mode;I)Z
-Landroid/icu/text/Normalizer;->isNormalized([CIILandroid/icu/text/Normalizer$Mode;I)Z
-Landroid/icu/text/Normalizer;->last()I
-Landroid/icu/text/Normalizer;->mode:Landroid/icu/text/Normalizer$Mode;
-Landroid/icu/text/Normalizer;->next()I
-Landroid/icu/text/Normalizer;->nextIndex:I
-Landroid/icu/text/Normalizer;->nextNormalize()Z
-Landroid/icu/text/Normalizer;->NFC:Landroid/icu/text/Normalizer$Mode;
-Landroid/icu/text/Normalizer;->NFD:Landroid/icu/text/Normalizer$Mode;
-Landroid/icu/text/Normalizer;->NFKC:Landroid/icu/text/Normalizer$Mode;
-Landroid/icu/text/Normalizer;->NFKD:Landroid/icu/text/Normalizer$Mode;
-Landroid/icu/text/Normalizer;->NONE:Landroid/icu/text/Normalizer$Mode;
-Landroid/icu/text/Normalizer;->norm2:Landroid/icu/text/Normalizer2;
-Landroid/icu/text/Normalizer;->normalize(ILandroid/icu/text/Normalizer$Mode;)Ljava/lang/String;
-Landroid/icu/text/Normalizer;->normalize(ILandroid/icu/text/Normalizer$Mode;I)Ljava/lang/String;
-Landroid/icu/text/Normalizer;->normalize(Ljava/lang/String;Landroid/icu/text/Normalizer$Mode;)Ljava/lang/String;
-Landroid/icu/text/Normalizer;->normalize(Ljava/lang/String;Landroid/icu/text/Normalizer$Mode;I)Ljava/lang/String;
-Landroid/icu/text/Normalizer;->normalize([CII[CIILandroid/icu/text/Normalizer$Mode;I)I
-Landroid/icu/text/Normalizer;->normalize([C[CLandroid/icu/text/Normalizer$Mode;I)I
-Landroid/icu/text/Normalizer;->NO_OP:Landroid/icu/text/Normalizer$Mode;
-Landroid/icu/text/Normalizer;->options:I
-Landroid/icu/text/Normalizer;->previous()I
-Landroid/icu/text/Normalizer;->previousNormalize()Z
-Landroid/icu/text/Normalizer;->quickCheck(Ljava/lang/String;Landroid/icu/text/Normalizer$Mode;)Landroid/icu/text/Normalizer$QuickCheckResult;
-Landroid/icu/text/Normalizer;->quickCheck(Ljava/lang/String;Landroid/icu/text/Normalizer$Mode;I)Landroid/icu/text/Normalizer$QuickCheckResult;
-Landroid/icu/text/Normalizer;->quickCheck([CIILandroid/icu/text/Normalizer$Mode;I)Landroid/icu/text/Normalizer$QuickCheckResult;
-Landroid/icu/text/Normalizer;->quickCheck([CLandroid/icu/text/Normalizer$Mode;I)Landroid/icu/text/Normalizer$QuickCheckResult;
-Landroid/icu/text/Normalizer;->reset()V
-Landroid/icu/text/Normalizer;->setIndex(I)I
-Landroid/icu/text/Normalizer;->setIndexOnly(I)V
-Landroid/icu/text/Normalizer;->setMode(Landroid/icu/text/Normalizer$Mode;)V
-Landroid/icu/text/Normalizer;->setOption(IZ)V
-Landroid/icu/text/Normalizer;->setText(Landroid/icu/text/UCharacterIterator;)V
-Landroid/icu/text/Normalizer;->setText(Ljava/lang/String;)V
-Landroid/icu/text/Normalizer;->setText(Ljava/lang/StringBuffer;)V
-Landroid/icu/text/Normalizer;->setText(Ljava/text/CharacterIterator;)V
-Landroid/icu/text/Normalizer;->setText([C)V
-Landroid/icu/text/Normalizer;->startIndex()I
-Landroid/icu/text/Normalizer;->text:Landroid/icu/text/UCharacterIterator;
-Landroid/icu/text/Normalizer;->UNICODE_3_2:I
-Landroid/icu/text/NumberFormat$NumberFormatFactory;-><init>()V
-Landroid/icu/text/NumberFormat$NumberFormatFactory;->createFormat(Landroid/icu/util/ULocale;I)Landroid/icu/text/NumberFormat;
-Landroid/icu/text/NumberFormat$NumberFormatFactory;->createFormat(Ljava/util/Locale;I)Landroid/icu/text/NumberFormat;
-Landroid/icu/text/NumberFormat$NumberFormatFactory;->FORMAT_CURRENCY:I
-Landroid/icu/text/NumberFormat$NumberFormatFactory;->FORMAT_INTEGER:I
-Landroid/icu/text/NumberFormat$NumberFormatFactory;->FORMAT_NUMBER:I
-Landroid/icu/text/NumberFormat$NumberFormatFactory;->FORMAT_PERCENT:I
-Landroid/icu/text/NumberFormat$NumberFormatFactory;->FORMAT_SCIENTIFIC:I
-Landroid/icu/text/NumberFormat$NumberFormatFactory;->getSupportedLocaleNames()Ljava/util/Set;
-Landroid/icu/text/NumberFormat$NumberFormatFactory;->visible()Z
-Landroid/icu/text/NumberFormat$NumberFormatShim;-><init>()V
-Landroid/icu/text/NumberFormat$NumberFormatShim;->createInstance(Landroid/icu/util/ULocale;I)Landroid/icu/text/NumberFormat;
-Landroid/icu/text/NumberFormat$NumberFormatShim;->getAvailableLocales()[Ljava/util/Locale;
-Landroid/icu/text/NumberFormat$NumberFormatShim;->getAvailableULocales()[Landroid/icu/util/ULocale;
-Landroid/icu/text/NumberFormat$NumberFormatShim;->registerFactory(Landroid/icu/text/NumberFormat$NumberFormatFactory;)Ljava/lang/Object;
-Landroid/icu/text/NumberFormat$NumberFormatShim;->unregister(Ljava/lang/Object;)Z
-Landroid/icu/text/NumberFormat$SimpleNumberFormatFactory;-><init>(Landroid/icu/util/ULocale;)V
-Landroid/icu/text/NumberFormat$SimpleNumberFormatFactory;-><init>(Landroid/icu/util/ULocale;Z)V
-Landroid/icu/text/NumberFormat$SimpleNumberFormatFactory;-><init>(Ljava/util/Locale;)V
-Landroid/icu/text/NumberFormat$SimpleNumberFormatFactory;-><init>(Ljava/util/Locale;Z)V
-Landroid/icu/text/NumberFormat$SimpleNumberFormatFactory;->getSupportedLocaleNames()Ljava/util/Set;
-Landroid/icu/text/NumberFormat$SimpleNumberFormatFactory;->localeNames:Ljava/util/Set;
-Landroid/icu/text/NumberFormat$SimpleNumberFormatFactory;->visible()Z
-Landroid/icu/text/NumberFormat$SimpleNumberFormatFactory;->visible:Z
-Landroid/icu/text/NumberFormat;->capitalizationSetting:Landroid/icu/text/DisplayContext;
-Landroid/icu/text/NumberFormat;->createInstance(Landroid/icu/util/ULocale;I)Landroid/icu/text/NumberFormat;
-Landroid/icu/text/NumberFormat;->currency:Landroid/icu/util/Currency;
-Landroid/icu/text/NumberFormat;->currentSerialVersion:I
-Landroid/icu/text/NumberFormat;->doubleCurrencySign:[C
-Landroid/icu/text/NumberFormat;->doubleCurrencyStr:Ljava/lang/String;
-Landroid/icu/text/NumberFormat;->getAvailableULocales()[Landroid/icu/util/ULocale;
-Landroid/icu/text/NumberFormat;->getEffectiveCurrency()Landroid/icu/util/Currency;
-Landroid/icu/text/NumberFormat;->getPattern(Ljava/util/Locale;I)Ljava/lang/String;
-Landroid/icu/text/NumberFormat;->getPatternForStyle(Landroid/icu/util/ULocale;I)Ljava/lang/String;
-Landroid/icu/text/NumberFormat;->getPatternForStyleAndNumberingSystem(Landroid/icu/util/ULocale;Ljava/lang/String;I)Ljava/lang/String;
-Landroid/icu/text/NumberFormat;->getShim()Landroid/icu/text/NumberFormat$NumberFormatShim;
-Landroid/icu/text/NumberFormat;->groupingUsed:Z
-Landroid/icu/text/NumberFormat;->maxFractionDigits:B
-Landroid/icu/text/NumberFormat;->maximumFractionDigits:I
-Landroid/icu/text/NumberFormat;->maximumIntegerDigits:I
-Landroid/icu/text/NumberFormat;->maxIntegerDigits:B
-Landroid/icu/text/NumberFormat;->minFractionDigits:B
-Landroid/icu/text/NumberFormat;->minimumFractionDigits:I
-Landroid/icu/text/NumberFormat;->minimumIntegerDigits:I
-Landroid/icu/text/NumberFormat;->minIntegerDigits:B
-Landroid/icu/text/NumberFormat;->parseIntegerOnly:Z
-Landroid/icu/text/NumberFormat;->parseStrict:Z
-Landroid/icu/text/NumberFormat;->registerFactory(Landroid/icu/text/NumberFormat$NumberFormatFactory;)Ljava/lang/Object;
-Landroid/icu/text/NumberFormat;->serialVersionOnStream:I
-Landroid/icu/text/NumberFormat;->shim:Landroid/icu/text/NumberFormat$NumberFormatShim;
-Landroid/icu/text/NumberFormat;->unregister(Ljava/lang/Object;)Z
-Landroid/icu/text/NumberingSystem$LocaleLookupData;-><init>(Landroid/icu/util/ULocale;Ljava/lang/String;)V
-Landroid/icu/text/NumberingSystem$LocaleLookupData;->locale:Landroid/icu/util/ULocale;
-Landroid/icu/text/NumberingSystem$LocaleLookupData;->numbersKeyword:Ljava/lang/String;
-Landroid/icu/text/NumberingSystem;->algorithmic:Z
-Landroid/icu/text/NumberingSystem;->cachedLocaleData:Landroid/icu/impl/CacheBase;
-Landroid/icu/text/NumberingSystem;->cachedStringData:Landroid/icu/impl/CacheBase;
-Landroid/icu/text/NumberingSystem;->desc:Ljava/lang/String;
-Landroid/icu/text/NumberingSystem;->getInstance(Ljava/lang/String;IZLjava/lang/String;)Landroid/icu/text/NumberingSystem;
-Landroid/icu/text/NumberingSystem;->LATIN:Landroid/icu/text/NumberingSystem;
-Landroid/icu/text/NumberingSystem;->lookupInstanceByLocale(Landroid/icu/text/NumberingSystem$LocaleLookupData;)Landroid/icu/text/NumberingSystem;
-Landroid/icu/text/NumberingSystem;->lookupInstanceByName(Ljava/lang/String;)Landroid/icu/text/NumberingSystem;
-Landroid/icu/text/NumberingSystem;->name:Ljava/lang/String;
-Landroid/icu/text/NumberingSystem;->OTHER_NS_KEYWORDS:[Ljava/lang/String;
-Landroid/icu/text/NumberingSystem;->radix:I
-Landroid/icu/text/PluralFormat$PluralSelector;->select(Ljava/lang/Object;D)Ljava/lang/String;
-Landroid/icu/text/PluralFormat$PluralSelectorAdapter;->select(Ljava/lang/Object;D)Ljava/lang/String;
-Landroid/icu/text/PluralFormat;-><init>(Landroid/icu/util/ULocale;Landroid/icu/text/PluralRules$PluralType;Ljava/lang/String;Landroid/icu/text/NumberFormat;)V
-Landroid/icu/text/PluralFormat;->findSubMessage(Landroid/icu/text/MessagePattern;ILandroid/icu/text/PluralFormat$PluralSelector;Ljava/lang/Object;D)I
-Landroid/icu/text/PluralFormat;->format(Ljava/lang/Number;D)Ljava/lang/String;
-Landroid/icu/text/PluralFormat;->init(Landroid/icu/text/PluralRules;Landroid/icu/text/PluralRules$PluralType;Landroid/icu/util/ULocale;Landroid/icu/text/NumberFormat;)V
-Landroid/icu/text/PluralFormat;->msgPattern:Landroid/icu/text/MessagePattern;
-Landroid/icu/text/PluralFormat;->numberFormat:Landroid/icu/text/NumberFormat;
-Landroid/icu/text/PluralFormat;->offset:D
-Landroid/icu/text/PluralFormat;->parsedValues:Ljava/util/Map;
-Landroid/icu/text/PluralFormat;->parseType(Ljava/lang/String;Landroid/icu/text/RbnfLenientScanner;Ljava/text/FieldPosition;)Ljava/lang/String;
-Landroid/icu/text/PluralFormat;->pattern:Ljava/lang/String;
-Landroid/icu/text/PluralFormat;->pluralRules:Landroid/icu/text/PluralRules;
-Landroid/icu/text/PluralFormat;->pluralRulesWrapper:Landroid/icu/text/PluralFormat$PluralSelectorAdapter;
-Landroid/icu/text/PluralFormat;->resetPattern()V
-Landroid/icu/text/PluralFormat;->setLocale(Landroid/icu/util/ULocale;)V
-Landroid/icu/text/PluralFormat;->ulocale:Landroid/icu/util/ULocale;
-Landroid/icu/text/PluralRanges$Matrix;-><init>()V
-Landroid/icu/text/PluralRanges$Matrix;->compareTo(Landroid/icu/text/PluralRanges$Matrix;)I
-Landroid/icu/text/PluralRanges$Matrix;->data:[B
-Landroid/icu/text/PluralRanges$Matrix;->endSame(Landroid/icu/impl/StandardPlural;)Landroid/icu/impl/StandardPlural;
-Landroid/icu/text/PluralRanges$Matrix;->get(Landroid/icu/impl/StandardPlural;Landroid/icu/impl/StandardPlural;)Landroid/icu/impl/StandardPlural;
-Landroid/icu/text/PluralRanges$Matrix;->set(Landroid/icu/impl/StandardPlural;Landroid/icu/impl/StandardPlural;Landroid/icu/impl/StandardPlural;)V
-Landroid/icu/text/PluralRanges$Matrix;->setIfNew(Landroid/icu/impl/StandardPlural;Landroid/icu/impl/StandardPlural;Landroid/icu/impl/StandardPlural;)V
-Landroid/icu/text/PluralRanges$Matrix;->startSame(Landroid/icu/impl/StandardPlural;Ljava/util/EnumSet;Landroid/icu/util/Output;)Landroid/icu/impl/StandardPlural;
-Landroid/icu/text/PluralRanges;-><init>()V
-Landroid/icu/text/PluralRanges;->add(Landroid/icu/impl/StandardPlural;Landroid/icu/impl/StandardPlural;Landroid/icu/impl/StandardPlural;)V
-Landroid/icu/text/PluralRanges;->compareTo(Landroid/icu/text/PluralRanges;)I
-Landroid/icu/text/PluralRanges;->explicit:[Z
-Landroid/icu/text/PluralRanges;->get(Landroid/icu/impl/StandardPlural;Landroid/icu/impl/StandardPlural;)Landroid/icu/impl/StandardPlural;
-Landroid/icu/text/PluralRanges;->isExplicit(Landroid/icu/impl/StandardPlural;Landroid/icu/impl/StandardPlural;)Z
-Landroid/icu/text/PluralRanges;->isExplicitlySet(Landroid/icu/impl/StandardPlural;)Z
-Landroid/icu/text/PluralRanges;->isFrozen:Z
-Landroid/icu/text/PluralRanges;->matrix:Landroid/icu/text/PluralRanges$Matrix;
-Landroid/icu/text/PluralRules$AndConstraint;-><init>(Landroid/icu/text/PluralRules$Constraint;Landroid/icu/text/PluralRules$Constraint;)V
-Landroid/icu/text/PluralRules$AndConstraint;->isFulfilled(Landroid/icu/text/PluralRules$IFixedDecimal;)Z
-Landroid/icu/text/PluralRules$AndConstraint;->isLimited(Landroid/icu/text/PluralRules$SampleType;)Z
-Landroid/icu/text/PluralRules$BinaryConstraint;-><init>(Landroid/icu/text/PluralRules$Constraint;Landroid/icu/text/PluralRules$Constraint;)V
-Landroid/icu/text/PluralRules$BinaryConstraint;->a:Landroid/icu/text/PluralRules$Constraint;
-Landroid/icu/text/PluralRules$BinaryConstraint;->b:Landroid/icu/text/PluralRules$Constraint;
-Landroid/icu/text/PluralRules$Constraint;->isFulfilled(Landroid/icu/text/PluralRules$IFixedDecimal;)Z
-Landroid/icu/text/PluralRules$Constraint;->isLimited(Landroid/icu/text/PluralRules$SampleType;)Z
-Landroid/icu/text/PluralRules$Factory;-><init>()V
-Landroid/icu/text/PluralRules$Factory;->forLocale(Landroid/icu/util/ULocale;)Landroid/icu/text/PluralRules;
-Landroid/icu/text/PluralRules$Factory;->forLocale(Landroid/icu/util/ULocale;Landroid/icu/text/PluralRules$PluralType;)Landroid/icu/text/PluralRules;
-Landroid/icu/text/PluralRules$Factory;->getAvailableULocales()[Landroid/icu/util/ULocale;
-Landroid/icu/text/PluralRules$Factory;->getDefaultFactory()Landroid/icu/impl/PluralRulesLoader;
-Landroid/icu/text/PluralRules$Factory;->getFunctionalEquivalent(Landroid/icu/util/ULocale;[Z)Landroid/icu/util/ULocale;
-Landroid/icu/text/PluralRules$Factory;->hasOverride(Landroid/icu/util/ULocale;)Z
-Landroid/icu/text/PluralRules$FixedDecimal;-><init>(D)V
-Landroid/icu/text/PluralRules$FixedDecimal;-><init>(DI)V
-Landroid/icu/text/PluralRules$FixedDecimal;-><init>(DIJ)V
-Landroid/icu/text/PluralRules$FixedDecimal;-><init>(J)V
-Landroid/icu/text/PluralRules$FixedDecimal;-><init>(Ljava/lang/String;)V
-Landroid/icu/text/PluralRules$FixedDecimal;->baseFactor:I
-Landroid/icu/text/PluralRules$FixedDecimal;->compareTo(Landroid/icu/text/PluralRules$FixedDecimal;)I
-Landroid/icu/text/PluralRules$FixedDecimal;->decimalDigits:J
-Landroid/icu/text/PluralRules$FixedDecimal;->decimalDigitsWithoutTrailingZeros:J
-Landroid/icu/text/PluralRules$FixedDecimal;->decimals(D)I
-Landroid/icu/text/PluralRules$FixedDecimal;->getBaseFactor()I
-Landroid/icu/text/PluralRules$FixedDecimal;->getDecimalDigits()J
-Landroid/icu/text/PluralRules$FixedDecimal;->getDecimalDigitsWithoutTrailingZeros()J
-Landroid/icu/text/PluralRules$FixedDecimal;->getFractionalDigits(DI)I
-Landroid/icu/text/PluralRules$FixedDecimal;->getIntegerValue()J
-Landroid/icu/text/PluralRules$FixedDecimal;->getOperand(Ljava/lang/String;)Landroid/icu/text/PluralRules$Operand;
-Landroid/icu/text/PluralRules$FixedDecimal;->getPluralOperand(Landroid/icu/text/PluralRules$Operand;)D
-Landroid/icu/text/PluralRules$FixedDecimal;->getShiftedValue()J
-Landroid/icu/text/PluralRules$FixedDecimal;->getSource()D
-Landroid/icu/text/PluralRules$FixedDecimal;->getVisibleDecimalDigitCount()I
-Landroid/icu/text/PluralRules$FixedDecimal;->getVisibleDecimalDigitCountWithoutTrailingZeros()I
-Landroid/icu/text/PluralRules$FixedDecimal;->getVisibleFractionCount(Ljava/lang/String;)I
-Landroid/icu/text/PluralRules$FixedDecimal;->hasIntegerValue()Z
-Landroid/icu/text/PluralRules$FixedDecimal;->hasIntegerValue:Z
-Landroid/icu/text/PluralRules$FixedDecimal;->integerValue:J
-Landroid/icu/text/PluralRules$FixedDecimal;->isHasIntegerValue()Z
-Landroid/icu/text/PluralRules$FixedDecimal;->isInfinite()Z
-Landroid/icu/text/PluralRules$FixedDecimal;->isNaN()Z
-Landroid/icu/text/PluralRules$FixedDecimal;->isNegative()Z
-Landroid/icu/text/PluralRules$FixedDecimal;->isNegative:Z
-Landroid/icu/text/PluralRules$FixedDecimal;->MAX:J
-Landroid/icu/text/PluralRules$FixedDecimal;->MAX_INTEGER_PART:J
-Landroid/icu/text/PluralRules$FixedDecimal;->source:D
-Landroid/icu/text/PluralRules$FixedDecimal;->visibleDecimalDigitCount:I
-Landroid/icu/text/PluralRules$FixedDecimal;->visibleDecimalDigitCountWithoutTrailingZeros:I
-Landroid/icu/text/PluralRules$FixedDecimalRange;-><init>(Landroid/icu/text/PluralRules$FixedDecimal;Landroid/icu/text/PluralRules$FixedDecimal;)V
-Landroid/icu/text/PluralRules$FixedDecimalRange;->end:Landroid/icu/text/PluralRules$FixedDecimal;
-Landroid/icu/text/PluralRules$FixedDecimalRange;->start:Landroid/icu/text/PluralRules$FixedDecimal;
-Landroid/icu/text/PluralRules$FixedDecimalSamples;-><init>(Landroid/icu/text/PluralRules$SampleType;Ljava/util/Set;Z)V
-Landroid/icu/text/PluralRules$FixedDecimalSamples;->addSamples(Ljava/util/Set;)Ljava/util/Set;
-Landroid/icu/text/PluralRules$FixedDecimalSamples;->bounded:Z
-Landroid/icu/text/PluralRules$FixedDecimalSamples;->checkDecimal(Landroid/icu/text/PluralRules$SampleType;Landroid/icu/text/PluralRules$FixedDecimal;)V
-Landroid/icu/text/PluralRules$FixedDecimalSamples;->getSamples()Ljava/util/Set;
-Landroid/icu/text/PluralRules$FixedDecimalSamples;->getStartEndSamples(Ljava/util/Set;)V
-Landroid/icu/text/PluralRules$FixedDecimalSamples;->parse(Ljava/lang/String;)Landroid/icu/text/PluralRules$FixedDecimalSamples;
-Landroid/icu/text/PluralRules$FixedDecimalSamples;->samples:Ljava/util/Set;
-Landroid/icu/text/PluralRules$FixedDecimalSamples;->sampleType:Landroid/icu/text/PluralRules$SampleType;
-Landroid/icu/text/PluralRules$IFixedDecimal;->getPluralOperand(Landroid/icu/text/PluralRules$Operand;)D
-Landroid/icu/text/PluralRules$IFixedDecimal;->isInfinite()Z
-Landroid/icu/text/PluralRules$IFixedDecimal;->isNaN()Z
-Landroid/icu/text/PluralRules$KeywordStatus;->BOUNDED:Landroid/icu/text/PluralRules$KeywordStatus;
-Landroid/icu/text/PluralRules$KeywordStatus;->INVALID:Landroid/icu/text/PluralRules$KeywordStatus;
-Landroid/icu/text/PluralRules$KeywordStatus;->SUPPRESSED:Landroid/icu/text/PluralRules$KeywordStatus;
-Landroid/icu/text/PluralRules$KeywordStatus;->UNBOUNDED:Landroid/icu/text/PluralRules$KeywordStatus;
-Landroid/icu/text/PluralRules$KeywordStatus;->UNIQUE:Landroid/icu/text/PluralRules$KeywordStatus;
-Landroid/icu/text/PluralRules$KeywordStatus;->valueOf(Ljava/lang/String;)Landroid/icu/text/PluralRules$KeywordStatus;
-Landroid/icu/text/PluralRules$KeywordStatus;->values()[Landroid/icu/text/PluralRules$KeywordStatus;
-Landroid/icu/text/PluralRules$Operand;->f:Landroid/icu/text/PluralRules$Operand;
-Landroid/icu/text/PluralRules$Operand;->i:Landroid/icu/text/PluralRules$Operand;
-Landroid/icu/text/PluralRules$Operand;->j:Landroid/icu/text/PluralRules$Operand;
-Landroid/icu/text/PluralRules$Operand;->n:Landroid/icu/text/PluralRules$Operand;
-Landroid/icu/text/PluralRules$Operand;->t:Landroid/icu/text/PluralRules$Operand;
-Landroid/icu/text/PluralRules$Operand;->v:Landroid/icu/text/PluralRules$Operand;
-Landroid/icu/text/PluralRules$Operand;->valueOf(Ljava/lang/String;)Landroid/icu/text/PluralRules$Operand;
-Landroid/icu/text/PluralRules$Operand;->values()[Landroid/icu/text/PluralRules$Operand;
-Landroid/icu/text/PluralRules$Operand;->w:Landroid/icu/text/PluralRules$Operand;
-Landroid/icu/text/PluralRules$OrConstraint;-><init>(Landroid/icu/text/PluralRules$Constraint;Landroid/icu/text/PluralRules$Constraint;)V
-Landroid/icu/text/PluralRules$OrConstraint;->isFulfilled(Landroid/icu/text/PluralRules$IFixedDecimal;)Z
-Landroid/icu/text/PluralRules$OrConstraint;->isLimited(Landroid/icu/text/PluralRules$SampleType;)Z
-Landroid/icu/text/PluralRules$RangeConstraint;-><init>(IZLandroid/icu/text/PluralRules$Operand;ZDD[J)V
-Landroid/icu/text/PluralRules$RangeConstraint;->inRange:Z
-Landroid/icu/text/PluralRules$RangeConstraint;->integersOnly:Z
-Landroid/icu/text/PluralRules$RangeConstraint;->isFulfilled(Landroid/icu/text/PluralRules$IFixedDecimal;)Z
-Landroid/icu/text/PluralRules$RangeConstraint;->isLimited(Landroid/icu/text/PluralRules$SampleType;)Z
-Landroid/icu/text/PluralRules$RangeConstraint;->lowerBound:D
-Landroid/icu/text/PluralRules$RangeConstraint;->mod:I
-Landroid/icu/text/PluralRules$RangeConstraint;->operand:Landroid/icu/text/PluralRules$Operand;
-Landroid/icu/text/PluralRules$RangeConstraint;->range_list:[J
-Landroid/icu/text/PluralRules$RangeConstraint;->upperBound:D
-Landroid/icu/text/PluralRules$Rule;-><init>(Ljava/lang/String;Landroid/icu/text/PluralRules$Constraint;Landroid/icu/text/PluralRules$FixedDecimalSamples;Landroid/icu/text/PluralRules$FixedDecimalSamples;)V
-Landroid/icu/text/PluralRules$Rule;->and(Landroid/icu/text/PluralRules$Constraint;)Landroid/icu/text/PluralRules$Rule;
-Landroid/icu/text/PluralRules$Rule;->appliesTo(Landroid/icu/text/PluralRules$IFixedDecimal;)Z
-Landroid/icu/text/PluralRules$Rule;->constraint:Landroid/icu/text/PluralRules$Constraint;
-Landroid/icu/text/PluralRules$Rule;->decimalSamples:Landroid/icu/text/PluralRules$FixedDecimalSamples;
-Landroid/icu/text/PluralRules$Rule;->getConstraint()Ljava/lang/String;
-Landroid/icu/text/PluralRules$Rule;->getKeyword()Ljava/lang/String;
-Landroid/icu/text/PluralRules$Rule;->integerSamples:Landroid/icu/text/PluralRules$FixedDecimalSamples;
-Landroid/icu/text/PluralRules$Rule;->isLimited(Landroid/icu/text/PluralRules$SampleType;)Z
-Landroid/icu/text/PluralRules$Rule;->keyword:Ljava/lang/String;
-Landroid/icu/text/PluralRules$Rule;->or(Landroid/icu/text/PluralRules$Constraint;)Landroid/icu/text/PluralRules$Rule;
-Landroid/icu/text/PluralRules$RuleList;-><init>()V
-Landroid/icu/text/PluralRules$RuleList;->addRule(Landroid/icu/text/PluralRules$Rule;)Landroid/icu/text/PluralRules$RuleList;
-Landroid/icu/text/PluralRules$RuleList;->computeLimited(Ljava/lang/String;Landroid/icu/text/PluralRules$SampleType;)Z
-Landroid/icu/text/PluralRules$RuleList;->finish()Landroid/icu/text/PluralRules$RuleList;
-Landroid/icu/text/PluralRules$RuleList;->getDecimalSamples(Ljava/lang/String;Landroid/icu/text/PluralRules$SampleType;)Landroid/icu/text/PluralRules$FixedDecimalSamples;
-Landroid/icu/text/PluralRules$RuleList;->getKeywords()Ljava/util/Set;
-Landroid/icu/text/PluralRules$RuleList;->getRules(Ljava/lang/String;)Ljava/lang/String;
-Landroid/icu/text/PluralRules$RuleList;->hasExplicitBoundingInfo:Z
-Landroid/icu/text/PluralRules$RuleList;->isLimited(Ljava/lang/String;Landroid/icu/text/PluralRules$SampleType;)Z
-Landroid/icu/text/PluralRules$RuleList;->rules:Ljava/util/List;
-Landroid/icu/text/PluralRules$RuleList;->select(Landroid/icu/text/PluralRules$IFixedDecimal;)Ljava/lang/String;
-Landroid/icu/text/PluralRules$RuleList;->select(Landroid/icu/text/PluralRules$IFixedDecimal;Ljava/lang/String;)Z
-Landroid/icu/text/PluralRules$RuleList;->selectRule(Landroid/icu/text/PluralRules$IFixedDecimal;)Landroid/icu/text/PluralRules$Rule;
-Landroid/icu/text/PluralRules$SampleType;->DECIMAL:Landroid/icu/text/PluralRules$SampleType;
-Landroid/icu/text/PluralRules$SampleType;->INTEGER:Landroid/icu/text/PluralRules$SampleType;
-Landroid/icu/text/PluralRules$SampleType;->valueOf(Ljava/lang/String;)Landroid/icu/text/PluralRules$SampleType;
-Landroid/icu/text/PluralRules$SampleType;->values()[Landroid/icu/text/PluralRules$SampleType;
-Landroid/icu/text/PluralRules$SimpleTokenizer;-><init>()V
-Landroid/icu/text/PluralRules$SimpleTokenizer;->BREAK_AND_IGNORE:Landroid/icu/text/UnicodeSet;
-Landroid/icu/text/PluralRules$SimpleTokenizer;->BREAK_AND_KEEP:Landroid/icu/text/UnicodeSet;
-Landroid/icu/text/PluralRules$SimpleTokenizer;->split(Ljava/lang/String;)[Ljava/lang/String;
-Landroid/icu/text/PluralRules;-><init>(Landroid/icu/text/PluralRules$RuleList;)V
-Landroid/icu/text/PluralRules;->addConditional(Ljava/util/Set;Ljava/util/Set;D)Z
-Landroid/icu/text/PluralRules;->addRange(Ljava/lang/StringBuilder;DDZ)V
-Landroid/icu/text/PluralRules;->addSample(Ljava/lang/String;Ljava/lang/Number;ILjava/util/Set;)Z
-Landroid/icu/text/PluralRules;->ALLOWED_ID:Landroid/icu/text/UnicodeSet;
-Landroid/icu/text/PluralRules;->AND_SEPARATED:Ljava/util/regex/Pattern;
-Landroid/icu/text/PluralRules;->AT_SEPARATED:Ljava/util/regex/Pattern;
-Landroid/icu/text/PluralRules;->CATEGORY_SEPARATOR:Ljava/lang/String;
-Landroid/icu/text/PluralRules;->COMMA_SEPARATED:Ljava/util/regex/Pattern;
-Landroid/icu/text/PluralRules;->compareTo(Landroid/icu/text/PluralRules;)I
-Landroid/icu/text/PluralRules;->computeLimited(Ljava/lang/String;Landroid/icu/text/PluralRules$SampleType;)Z
-Landroid/icu/text/PluralRules;->DEFAULT_RULE:Landroid/icu/text/PluralRules$Rule;
-Landroid/icu/text/PluralRules;->DOTDOT_SEPARATED:Ljava/util/regex/Pattern;
-Landroid/icu/text/PluralRules;->format(D)Ljava/lang/String;
-Landroid/icu/text/PluralRules;->getAllKeywordValues(Ljava/lang/String;Landroid/icu/text/PluralRules$SampleType;)Ljava/util/Collection;
-Landroid/icu/text/PluralRules;->getAvailableULocales()[Landroid/icu/util/ULocale;
-Landroid/icu/text/PluralRules;->getDecimalSamples(Ljava/lang/String;Landroid/icu/text/PluralRules$SampleType;)Landroid/icu/text/PluralRules$FixedDecimalSamples;
-Landroid/icu/text/PluralRules;->getFunctionalEquivalent(Landroid/icu/util/ULocale;[Z)Landroid/icu/util/ULocale;
-Landroid/icu/text/PluralRules;->getKeywordStatus(Ljava/lang/String;ILjava/util/Set;Landroid/icu/util/Output;)Landroid/icu/text/PluralRules$KeywordStatus;
-Landroid/icu/text/PluralRules;->getKeywordStatus(Ljava/lang/String;ILjava/util/Set;Landroid/icu/util/Output;Landroid/icu/text/PluralRules$SampleType;)Landroid/icu/text/PluralRules$KeywordStatus;
-Landroid/icu/text/PluralRules;->getRules(Ljava/lang/String;)Ljava/lang/String;
-Landroid/icu/text/PluralRules;->getSamples(Ljava/lang/String;Landroid/icu/text/PluralRules$SampleType;)Ljava/util/Collection;
-Landroid/icu/text/PluralRules;->isLimited(Ljava/lang/String;)Ljava/lang/Boolean;
-Landroid/icu/text/PluralRules;->isLimited(Ljava/lang/String;Landroid/icu/text/PluralRules$SampleType;)Z
-Landroid/icu/text/PluralRules;->isValidKeyword(Ljava/lang/String;)Z
-Landroid/icu/text/PluralRules;->keywords:Ljava/util/Set;
-Landroid/icu/text/PluralRules;->KEYWORD_RULE_SEPARATOR:Ljava/lang/String;
-Landroid/icu/text/PluralRules;->matches(Landroid/icu/text/PluralRules$FixedDecimal;Ljava/lang/String;)Z
-Landroid/icu/text/PluralRules;->nextToken([Ljava/lang/String;ILjava/lang/String;)Ljava/lang/String;
-Landroid/icu/text/PluralRules;->NO_CONSTRAINT:Landroid/icu/text/PluralRules$Constraint;
-Landroid/icu/text/PluralRules;->OR_SEPARATED:Ljava/util/regex/Pattern;
-Landroid/icu/text/PluralRules;->parseConstraint(Ljava/lang/String;)Landroid/icu/text/PluralRules$Constraint;
-Landroid/icu/text/PluralRules;->parseRule(Ljava/lang/String;)Landroid/icu/text/PluralRules$Rule;
-Landroid/icu/text/PluralRules;->parseRuleChain(Ljava/lang/String;)Landroid/icu/text/PluralRules$RuleList;
-Landroid/icu/text/PluralRules;->rules:Landroid/icu/text/PluralRules$RuleList;
-Landroid/icu/text/PluralRules;->select(DIJ)Ljava/lang/String;
-Landroid/icu/text/PluralRules;->select(Landroid/icu/text/PluralRules$IFixedDecimal;)Ljava/lang/String;
-Landroid/icu/text/PluralRules;->SEMI_SEPARATED:Ljava/util/regex/Pattern;
-Landroid/icu/text/PluralRules;->TILDE_SEPARATED:Ljava/util/regex/Pattern;
-Landroid/icu/text/PluralRules;->unexpected(Ljava/lang/String;Ljava/lang/String;)Ljava/text/ParseException;
-Landroid/icu/text/PluralSamples;-><init>(Landroid/icu/text/PluralRules;)V
-Landroid/icu/text/PluralSamples;->addIfNotPresent(DLjava/util/Set;Ljava/util/Map;)Z
-Landroid/icu/text/PluralSamples;->addRelation(Ljava/util/Map;Ljava/lang/String;Landroid/icu/text/PluralRules$FixedDecimal;)V
-Landroid/icu/text/PluralSamples;->addSimpleSamples(Landroid/icu/text/PluralRules;ILjava/util/Map;ID)I
-Landroid/icu/text/PluralSamples;->fractions(Ljava/util/Set;)Ljava/util/Set;
-Landroid/icu/text/PluralSamples;->getAllKeywordValues(Ljava/lang/String;)Ljava/util/Collection;
-Landroid/icu/text/PluralSamples;->getDifferentCategory(Ljava/util/List;Ljava/lang/String;)Ljava/lang/Integer;
-Landroid/icu/text/PluralSamples;->getFractionSamples()Ljava/util/Set;
-Landroid/icu/text/PluralSamples;->getKeyFractionSamplesMap()Ljava/util/Map;
-Landroid/icu/text/PluralSamples;->getKeySamplesMap()Ljava/util/Map;
-Landroid/icu/text/PluralSamples;->getStatus(Ljava/lang/String;ILjava/util/Set;Landroid/icu/util/Output;)Landroid/icu/text/PluralRules$KeywordStatus;
-Landroid/icu/text/PluralSamples;->LIMIT_FRACTION_SAMPLES:I
-Landroid/icu/text/PluralSamples;->pluralRules:Landroid/icu/text/PluralRules;
-Landroid/icu/text/PluralSamples;->TENS:[I
-Landroid/icu/text/PluralSamples;->_fractionSamples:Ljava/util/Set;
-Landroid/icu/text/PluralSamples;->_keyFractionSamplesMap:Ljava/util/Map;
-Landroid/icu/text/PluralSamples;->_keyLimitedMap:Ljava/util/Map;
-Landroid/icu/text/PluralSamples;->_keySamplesMap:Ljava/util/Map;
-Landroid/icu/text/RawCollationKey;-><init>()V
-Landroid/icu/text/RawCollationKey;-><init>(I)V
-Landroid/icu/text/RawCollationKey;-><init>([B)V
-Landroid/icu/text/RawCollationKey;-><init>([BI)V
-Landroid/icu/text/RawCollationKey;->compareTo(Landroid/icu/text/RawCollationKey;)I
-Landroid/icu/text/RBBIDataWrapper$IsAcceptable;-><init>()V
-Landroid/icu/text/RBBIDataWrapper$RBBIDataHeader;-><init>()V
-Landroid/icu/text/RBBIDataWrapper$RBBIDataHeader;->fCatCount:I
-Landroid/icu/text/RBBIDataWrapper$RBBIDataHeader;->fFormatVersion:[B
-Landroid/icu/text/RBBIDataWrapper$RBBIDataHeader;->fFTable:I
-Landroid/icu/text/RBBIDataWrapper$RBBIDataHeader;->fFTableLen:I
-Landroid/icu/text/RBBIDataWrapper$RBBIDataHeader;->fLength:I
-Landroid/icu/text/RBBIDataWrapper$RBBIDataHeader;->fMagic:I
-Landroid/icu/text/RBBIDataWrapper$RBBIDataHeader;->fRTable:I
-Landroid/icu/text/RBBIDataWrapper$RBBIDataHeader;->fRTableLen:I
-Landroid/icu/text/RBBIDataWrapper$RBBIDataHeader;->fRuleSource:I
-Landroid/icu/text/RBBIDataWrapper$RBBIDataHeader;->fRuleSourceLen:I
-Landroid/icu/text/RBBIDataWrapper$RBBIDataHeader;->fSFTable:I
-Landroid/icu/text/RBBIDataWrapper$RBBIDataHeader;->fSFTableLen:I
-Landroid/icu/text/RBBIDataWrapper$RBBIDataHeader;->fSRTable:I
-Landroid/icu/text/RBBIDataWrapper$RBBIDataHeader;->fSRTableLen:I
-Landroid/icu/text/RBBIDataWrapper$RBBIDataHeader;->fStatusTable:I
-Landroid/icu/text/RBBIDataWrapper$RBBIDataHeader;->fStatusTableLen:I
-Landroid/icu/text/RBBIDataWrapper$RBBIDataHeader;->fTrie:I
-Landroid/icu/text/RBBIDataWrapper$RBBIDataHeader;->fTrieLen:I
-Landroid/icu/text/RBBIDataWrapper;-><init>()V
-Landroid/icu/text/RBBIDataWrapper;->ACCEPTING:I
-Landroid/icu/text/RBBIDataWrapper;->DATA_FORMAT:I
-Landroid/icu/text/RBBIDataWrapper;->DH_CATCOUNT:I
-Landroid/icu/text/RBBIDataWrapper;->DH_FORMATVERSION:I
-Landroid/icu/text/RBBIDataWrapper;->DH_FTABLE:I
-Landroid/icu/text/RBBIDataWrapper;->DH_FTABLELEN:I
-Landroid/icu/text/RBBIDataWrapper;->DH_LENGTH:I
-Landroid/icu/text/RBBIDataWrapper;->DH_MAGIC:I
-Landroid/icu/text/RBBIDataWrapper;->DH_RTABLE:I
-Landroid/icu/text/RBBIDataWrapper;->DH_RTABLELEN:I
-Landroid/icu/text/RBBIDataWrapper;->DH_RULESOURCE:I
-Landroid/icu/text/RBBIDataWrapper;->DH_RULESOURCELEN:I
-Landroid/icu/text/RBBIDataWrapper;->DH_SFTABLE:I
-Landroid/icu/text/RBBIDataWrapper;->DH_SFTABLELEN:I
-Landroid/icu/text/RBBIDataWrapper;->DH_SIZE:I
-Landroid/icu/text/RBBIDataWrapper;->DH_SRTABLE:I
-Landroid/icu/text/RBBIDataWrapper;->DH_SRTABLELEN:I
-Landroid/icu/text/RBBIDataWrapper;->DH_STATUSTABLE:I
-Landroid/icu/text/RBBIDataWrapper;->DH_STATUSTABLELEN:I
-Landroid/icu/text/RBBIDataWrapper;->DH_TRIE:I
-Landroid/icu/text/RBBIDataWrapper;->DH_TRIELEN:I
-Landroid/icu/text/RBBIDataWrapper;->dump(Ljava/io/PrintStream;)V
-Landroid/icu/text/RBBIDataWrapper;->dumpCharCategories(Ljava/io/PrintStream;)V
-Landroid/icu/text/RBBIDataWrapper;->dumpRow(Ljava/io/PrintStream;[SI)V
-Landroid/icu/text/RBBIDataWrapper;->dumpTable(Ljava/io/PrintStream;[S)V
-Landroid/icu/text/RBBIDataWrapper;->fFTable:[S
-Landroid/icu/text/RBBIDataWrapper;->fHeader:Landroid/icu/text/RBBIDataWrapper$RBBIDataHeader;
-Landroid/icu/text/RBBIDataWrapper;->FLAGS:I
-Landroid/icu/text/RBBIDataWrapper;->FORMAT_VERSION:I
-Landroid/icu/text/RBBIDataWrapper;->fRTable:[S
-Landroid/icu/text/RBBIDataWrapper;->fRuleSource:Ljava/lang/String;
-Landroid/icu/text/RBBIDataWrapper;->fSFTable:[S
-Landroid/icu/text/RBBIDataWrapper;->fSRTable:[S
-Landroid/icu/text/RBBIDataWrapper;->fStatusTable:[I
-Landroid/icu/text/RBBIDataWrapper;->fTrie:Landroid/icu/impl/Trie2;
-Landroid/icu/text/RBBIDataWrapper;->get(Ljava/nio/ByteBuffer;)Landroid/icu/text/RBBIDataWrapper;
-Landroid/icu/text/RBBIDataWrapper;->getRowIndex(I)I
-Landroid/icu/text/RBBIDataWrapper;->getStateTableFlags([S)I
-Landroid/icu/text/RBBIDataWrapper;->getStateTableNumStates([S)I
-Landroid/icu/text/RBBIDataWrapper;->intToHexString(II)Ljava/lang/String;
-Landroid/icu/text/RBBIDataWrapper;->intToString(II)Ljava/lang/String;
-Landroid/icu/text/RBBIDataWrapper;->isBigEndian:Z
-Landroid/icu/text/RBBIDataWrapper;->IS_ACCEPTABLE:Landroid/icu/text/RBBIDataWrapper$IsAcceptable;
-Landroid/icu/text/RBBIDataWrapper;->LOOKAHEAD:I
-Landroid/icu/text/RBBIDataWrapper;->NEXTSTATES:I
-Landroid/icu/text/RBBIDataWrapper;->NUMSTATES:I
-Landroid/icu/text/RBBIDataWrapper;->RBBI_BOF_REQUIRED:I
-Landroid/icu/text/RBBIDataWrapper;->RBBI_LOOKAHEAD_HARD_BREAK:I
-Landroid/icu/text/RBBIDataWrapper;->RESERVED:I
-Landroid/icu/text/RBBIDataWrapper;->ROWLEN:I
-Landroid/icu/text/RBBIDataWrapper;->ROW_DATA:I
-Landroid/icu/text/RBBIDataWrapper;->TAGIDX:I
-Landroid/icu/text/RbnfLenientScanner;->allIgnorable(Ljava/lang/String;)Z
-Landroid/icu/text/RbnfLenientScanner;->findText(Ljava/lang/String;Ljava/lang/String;I)[I
-Landroid/icu/text/RbnfLenientScanner;->prefixLength(Ljava/lang/String;Ljava/lang/String;)I
-Landroid/icu/text/RbnfLenientScannerProvider;->get(Landroid/icu/util/ULocale;Ljava/lang/String;)Landroid/icu/text/RbnfLenientScanner;
-Landroid/icu/text/RBNFPostProcessor;->init(Landroid/icu/text/RuleBasedNumberFormat;Ljava/lang/String;)V
-Landroid/icu/text/RBNFPostProcessor;->process(Ljava/lang/StringBuilder;Landroid/icu/text/NFRuleSet;)V
-Landroid/icu/text/RelativeDateTimeFormatter$AbsoluteUnit;->QUARTER:Landroid/icu/text/RelativeDateTimeFormatter$AbsoluteUnit;
-Landroid/icu/text/RelativeDateTimeFormatter$Cache;-><init>()V
-Landroid/icu/text/RelativeDateTimeFormatter$Cache;->cache:Landroid/icu/impl/CacheBase;
-Landroid/icu/text/RelativeDateTimeFormatter$Cache;->get(Landroid/icu/util/ULocale;)Landroid/icu/text/RelativeDateTimeFormatter$RelativeDateTimeFormatterData;
-Landroid/icu/text/RelativeDateTimeFormatter$Loader;-><init>(Landroid/icu/util/ULocale;)V
-Landroid/icu/text/RelativeDateTimeFormatter$Loader;->getDateTimePattern(Landroid/icu/impl/ICUResourceBundle;)Ljava/lang/String;
-Landroid/icu/text/RelativeDateTimeFormatter$Loader;->load()Landroid/icu/text/RelativeDateTimeFormatter$RelativeDateTimeFormatterData;
-Landroid/icu/text/RelativeDateTimeFormatter$Loader;->ulocale:Landroid/icu/util/ULocale;
-Landroid/icu/text/RelativeDateTimeFormatter$RelativeDateTimeFormatterData;-><init>(Ljava/util/EnumMap;Ljava/util/EnumMap;Ljava/lang/String;)V
-Landroid/icu/text/RelativeDateTimeFormatter$RelativeDateTimeFormatterData;->dateTimePattern:Ljava/lang/String;
-Landroid/icu/text/RelativeDateTimeFormatter$RelativeDateTimeFormatterData;->qualitativeUnitMap:Ljava/util/EnumMap;
-Landroid/icu/text/RelativeDateTimeFormatter$RelativeDateTimeFormatterData;->relUnitPatternMap:Ljava/util/EnumMap;
-Landroid/icu/text/RelativeDateTimeFormatter$RelativeUnit;->QUARTERS:Landroid/icu/text/RelativeDateTimeFormatter$RelativeUnit;
-Landroid/icu/text/RelativeDateTimeFormatter$RelDateTimeDataSink$DateTimeUnit;->absUnit:Landroid/icu/text/RelativeDateTimeFormatter$AbsoluteUnit;
-Landroid/icu/text/RelativeDateTimeFormatter$RelDateTimeDataSink$DateTimeUnit;->DAY:Landroid/icu/text/RelativeDateTimeFormatter$RelDateTimeDataSink$DateTimeUnit;
-Landroid/icu/text/RelativeDateTimeFormatter$RelDateTimeDataSink$DateTimeUnit;->FRIDAY:Landroid/icu/text/RelativeDateTimeFormatter$RelDateTimeDataSink$DateTimeUnit;
-Landroid/icu/text/RelativeDateTimeFormatter$RelDateTimeDataSink$DateTimeUnit;->HOUR:Landroid/icu/text/RelativeDateTimeFormatter$RelDateTimeDataSink$DateTimeUnit;
-Landroid/icu/text/RelativeDateTimeFormatter$RelDateTimeDataSink$DateTimeUnit;->MINUTE:Landroid/icu/text/RelativeDateTimeFormatter$RelDateTimeDataSink$DateTimeUnit;
-Landroid/icu/text/RelativeDateTimeFormatter$RelDateTimeDataSink$DateTimeUnit;->MONDAY:Landroid/icu/text/RelativeDateTimeFormatter$RelDateTimeDataSink$DateTimeUnit;
-Landroid/icu/text/RelativeDateTimeFormatter$RelDateTimeDataSink$DateTimeUnit;->MONTH:Landroid/icu/text/RelativeDateTimeFormatter$RelDateTimeDataSink$DateTimeUnit;
-Landroid/icu/text/RelativeDateTimeFormatter$RelDateTimeDataSink$DateTimeUnit;->orNullFromString(Ljava/lang/CharSequence;)Landroid/icu/text/RelativeDateTimeFormatter$RelDateTimeDataSink$DateTimeUnit;
-Landroid/icu/text/RelativeDateTimeFormatter$RelDateTimeDataSink$DateTimeUnit;->QUARTER:Landroid/icu/text/RelativeDateTimeFormatter$RelDateTimeDataSink$DateTimeUnit;
-Landroid/icu/text/RelativeDateTimeFormatter$RelDateTimeDataSink$DateTimeUnit;->relUnit:Landroid/icu/text/RelativeDateTimeFormatter$RelativeUnit;
-Landroid/icu/text/RelativeDateTimeFormatter$RelDateTimeDataSink$DateTimeUnit;->SATURDAY:Landroid/icu/text/RelativeDateTimeFormatter$RelDateTimeDataSink$DateTimeUnit;
-Landroid/icu/text/RelativeDateTimeFormatter$RelDateTimeDataSink$DateTimeUnit;->SECOND:Landroid/icu/text/RelativeDateTimeFormatter$RelDateTimeDataSink$DateTimeUnit;
-Landroid/icu/text/RelativeDateTimeFormatter$RelDateTimeDataSink$DateTimeUnit;->SUNDAY:Landroid/icu/text/RelativeDateTimeFormatter$RelDateTimeDataSink$DateTimeUnit;
-Landroid/icu/text/RelativeDateTimeFormatter$RelDateTimeDataSink$DateTimeUnit;->THURSDAY:Landroid/icu/text/RelativeDateTimeFormatter$RelDateTimeDataSink$DateTimeUnit;
-Landroid/icu/text/RelativeDateTimeFormatter$RelDateTimeDataSink$DateTimeUnit;->TUESDAY:Landroid/icu/text/RelativeDateTimeFormatter$RelDateTimeDataSink$DateTimeUnit;
-Landroid/icu/text/RelativeDateTimeFormatter$RelDateTimeDataSink$DateTimeUnit;->valueOf(Ljava/lang/String;)Landroid/icu/text/RelativeDateTimeFormatter$RelDateTimeDataSink$DateTimeUnit;
-Landroid/icu/text/RelativeDateTimeFormatter$RelDateTimeDataSink$DateTimeUnit;->values()[Landroid/icu/text/RelativeDateTimeFormatter$RelDateTimeDataSink$DateTimeUnit;
-Landroid/icu/text/RelativeDateTimeFormatter$RelDateTimeDataSink$DateTimeUnit;->WEDNESDAY:Landroid/icu/text/RelativeDateTimeFormatter$RelDateTimeDataSink$DateTimeUnit;
-Landroid/icu/text/RelativeDateTimeFormatter$RelDateTimeDataSink$DateTimeUnit;->WEEK:Landroid/icu/text/RelativeDateTimeFormatter$RelDateTimeDataSink$DateTimeUnit;
-Landroid/icu/text/RelativeDateTimeFormatter$RelDateTimeDataSink$DateTimeUnit;->YEAR:Landroid/icu/text/RelativeDateTimeFormatter$RelDateTimeDataSink$DateTimeUnit;
-Landroid/icu/text/RelativeDateTimeFormatter$RelDateTimeDataSink;-><init>()V
-Landroid/icu/text/RelativeDateTimeFormatter$RelDateTimeDataSink;->consumeTableRelative(Landroid/icu/impl/UResource$Key;Landroid/icu/impl/UResource$Value;)V
-Landroid/icu/text/RelativeDateTimeFormatter$RelDateTimeDataSink;->consumeTableRelativeTime(Landroid/icu/impl/UResource$Key;Landroid/icu/impl/UResource$Value;)V
-Landroid/icu/text/RelativeDateTimeFormatter$RelDateTimeDataSink;->consumeTimeDetail(Landroid/icu/impl/UResource$Key;Landroid/icu/impl/UResource$Value;)V
-Landroid/icu/text/RelativeDateTimeFormatter$RelDateTimeDataSink;->consumeTimeUnit(Landroid/icu/impl/UResource$Key;Landroid/icu/impl/UResource$Value;)V
-Landroid/icu/text/RelativeDateTimeFormatter$RelDateTimeDataSink;->handleAlias(Landroid/icu/impl/UResource$Key;Landroid/icu/impl/UResource$Value;Z)V
-Landroid/icu/text/RelativeDateTimeFormatter$RelDateTimeDataSink;->handlePlainDirection(Landroid/icu/impl/UResource$Key;Landroid/icu/impl/UResource$Value;)V
-Landroid/icu/text/RelativeDateTimeFormatter$RelDateTimeDataSink;->pastFutureIndex:I
-Landroid/icu/text/RelativeDateTimeFormatter$RelDateTimeDataSink;->qualitativeUnitMap:Ljava/util/EnumMap;
-Landroid/icu/text/RelativeDateTimeFormatter$RelDateTimeDataSink;->sb:Ljava/lang/StringBuilder;
-Landroid/icu/text/RelativeDateTimeFormatter$RelDateTimeDataSink;->style:Landroid/icu/text/RelativeDateTimeFormatter$Style;
-Landroid/icu/text/RelativeDateTimeFormatter$RelDateTimeDataSink;->styleFromAlias(Landroid/icu/impl/UResource$Value;)Landroid/icu/text/RelativeDateTimeFormatter$Style;
-Landroid/icu/text/RelativeDateTimeFormatter$RelDateTimeDataSink;->styleFromKey(Landroid/icu/impl/UResource$Key;)Landroid/icu/text/RelativeDateTimeFormatter$Style;
-Landroid/icu/text/RelativeDateTimeFormatter$RelDateTimeDataSink;->styleRelUnitPatterns:Ljava/util/EnumMap;
-Landroid/icu/text/RelativeDateTimeFormatter$RelDateTimeDataSink;->styleSuffixLength(Landroid/icu/text/RelativeDateTimeFormatter$Style;)I
-Landroid/icu/text/RelativeDateTimeFormatter$RelDateTimeDataSink;->unit:Landroid/icu/text/RelativeDateTimeFormatter$RelDateTimeDataSink$DateTimeUnit;
-Landroid/icu/text/RelativeDateTimeFormatter$Style;->INDEX_COUNT:I
-Landroid/icu/text/RelativeDateTimeFormatter;-><init>(Ljava/util/EnumMap;Ljava/util/EnumMap;Ljava/lang/String;Landroid/icu/text/PluralRules;Landroid/icu/text/NumberFormat;Landroid/icu/text/RelativeDateTimeFormatter$Style;Landroid/icu/text/DisplayContext;Landroid/icu/text/BreakIterator;Landroid/icu/util/ULocale;)V
-Landroid/icu/text/RelativeDateTimeFormatter;->adjustForContext(Ljava/lang/String;)Ljava/lang/String;
-Landroid/icu/text/RelativeDateTimeFormatter;->breakIterator:Landroid/icu/text/BreakIterator;
-Landroid/icu/text/RelativeDateTimeFormatter;->cache:Landroid/icu/text/RelativeDateTimeFormatter$Cache;
-Landroid/icu/text/RelativeDateTimeFormatter;->capitalizationContext:Landroid/icu/text/DisplayContext;
-Landroid/icu/text/RelativeDateTimeFormatter;->combinedDateAndTime:Ljava/lang/String;
-Landroid/icu/text/RelativeDateTimeFormatter;->dateFormatSymbols:Landroid/icu/text/DateFormatSymbols;
-Landroid/icu/text/RelativeDateTimeFormatter;->fallbackCache:[Landroid/icu/text/RelativeDateTimeFormatter$Style;
-Landroid/icu/text/RelativeDateTimeFormatter;->getAbsoluteUnitString(Landroid/icu/text/RelativeDateTimeFormatter$Style;Landroid/icu/text/RelativeDateTimeFormatter$AbsoluteUnit;Landroid/icu/text/RelativeDateTimeFormatter$Direction;)Ljava/lang/String;
-Landroid/icu/text/RelativeDateTimeFormatter;->getRelativeUnitPattern(Landroid/icu/text/RelativeDateTimeFormatter$Style;Landroid/icu/text/RelativeDateTimeFormatter$RelativeUnit;ILandroid/icu/impl/StandardPlural;)Ljava/lang/String;
-Landroid/icu/text/RelativeDateTimeFormatter;->getRelativeUnitPluralPattern(Landroid/icu/text/RelativeDateTimeFormatter$Style;Landroid/icu/text/RelativeDateTimeFormatter$RelativeUnit;ILandroid/icu/impl/StandardPlural;)Ljava/lang/String;
-Landroid/icu/text/RelativeDateTimeFormatter;->keyToDirection(Landroid/icu/impl/UResource$Key;)Landroid/icu/text/RelativeDateTimeFormatter$Direction;
-Landroid/icu/text/RelativeDateTimeFormatter;->locale:Landroid/icu/util/ULocale;
-Landroid/icu/text/RelativeDateTimeFormatter;->numberFormat:Landroid/icu/text/NumberFormat;
-Landroid/icu/text/RelativeDateTimeFormatter;->patternMap:Ljava/util/EnumMap;
-Landroid/icu/text/RelativeDateTimeFormatter;->pluralRules:Landroid/icu/text/PluralRules;
-Landroid/icu/text/RelativeDateTimeFormatter;->qualitativeUnitMap:Ljava/util/EnumMap;
-Landroid/icu/text/RelativeDateTimeFormatter;->style:Landroid/icu/text/RelativeDateTimeFormatter$Style;
-Landroid/icu/text/RelativeDateTimeFormatter;->styleToDateFormatSymbolsWidth:[I
-Landroid/icu/text/ReplaceableString;-><init>()V
-Landroid/icu/text/ReplaceableString;-><init>(Ljava/lang/String;)V
-Landroid/icu/text/ReplaceableString;-><init>(Ljava/lang/StringBuffer;)V
-Landroid/icu/text/ReplaceableString;->buf:Ljava/lang/StringBuffer;
-Landroid/icu/text/ReplaceableString;->substring(II)Ljava/lang/String;
-Landroid/icu/text/RuleBasedBreakIterator$BreakCache;->addFollowing(IIZ)V
-Landroid/icu/text/RuleBasedBreakIterator$BreakCache;->addPreceding(IIZ)Z
-Landroid/icu/text/RuleBasedBreakIterator$BreakCache;->CACHE_SIZE:I
-Landroid/icu/text/RuleBasedBreakIterator$BreakCache;->current()I
-Landroid/icu/text/RuleBasedBreakIterator$BreakCache;->dumpCache()V
-Landroid/icu/text/RuleBasedBreakIterator$BreakCache;->fBoundaries:[I
-Landroid/icu/text/RuleBasedBreakIterator$BreakCache;->fBufIdx:I
-Landroid/icu/text/RuleBasedBreakIterator$BreakCache;->fEndBufIdx:I
-Landroid/icu/text/RuleBasedBreakIterator$BreakCache;->following(I)V
-Landroid/icu/text/RuleBasedBreakIterator$BreakCache;->fSideBuffer:Landroid/icu/text/DictionaryBreakEngine$DequeI;
-Landroid/icu/text/RuleBasedBreakIterator$BreakCache;->fStartBufIdx:I
-Landroid/icu/text/RuleBasedBreakIterator$BreakCache;->fStatuses:[S
-Landroid/icu/text/RuleBasedBreakIterator$BreakCache;->fTextIdx:I
-Landroid/icu/text/RuleBasedBreakIterator$BreakCache;->modChunkSize(I)I
-Landroid/icu/text/RuleBasedBreakIterator$BreakCache;->next()V
-Landroid/icu/text/RuleBasedBreakIterator$BreakCache;->populateFollowing()Z
-Landroid/icu/text/RuleBasedBreakIterator$BreakCache;->populateNear(I)Z
-Landroid/icu/text/RuleBasedBreakIterator$BreakCache;->populatePreceding()Z
-Landroid/icu/text/RuleBasedBreakIterator$BreakCache;->preceding(I)V
-Landroid/icu/text/RuleBasedBreakIterator$BreakCache;->previous()V
-Landroid/icu/text/RuleBasedBreakIterator$BreakCache;->reset()V
-Landroid/icu/text/RuleBasedBreakIterator$BreakCache;->reset(II)V
-Landroid/icu/text/RuleBasedBreakIterator$BreakCache;->RetainCachePosition:Z
-Landroid/icu/text/RuleBasedBreakIterator$BreakCache;->seek(I)Z
-Landroid/icu/text/RuleBasedBreakIterator$BreakCache;->UpdateCachePosition:Z
-Landroid/icu/text/RuleBasedBreakIterator$DictionaryCache;->fBoundary:I
-Landroid/icu/text/RuleBasedBreakIterator$DictionaryCache;->fBreaks:Landroid/icu/text/DictionaryBreakEngine$DequeI;
-Landroid/icu/text/RuleBasedBreakIterator$DictionaryCache;->fFirstRuleStatusIndex:I
-Landroid/icu/text/RuleBasedBreakIterator$DictionaryCache;->fLimit:I
-Landroid/icu/text/RuleBasedBreakIterator$DictionaryCache;->following(I)Z
-Landroid/icu/text/RuleBasedBreakIterator$DictionaryCache;->fOtherRuleStatusIndex:I
-Landroid/icu/text/RuleBasedBreakIterator$DictionaryCache;->fPositionInCache:I
-Landroid/icu/text/RuleBasedBreakIterator$DictionaryCache;->fStart:I
-Landroid/icu/text/RuleBasedBreakIterator$DictionaryCache;->fStatusIndex:I
-Landroid/icu/text/RuleBasedBreakIterator$DictionaryCache;->populateDictionary(IIII)V
-Landroid/icu/text/RuleBasedBreakIterator$DictionaryCache;->preceding(I)Z
-Landroid/icu/text/RuleBasedBreakIterator$DictionaryCache;->reset()V
-Landroid/icu/text/RuleBasedBreakIterator$LookAheadResults;-><init>()V
-Landroid/icu/text/RuleBasedBreakIterator$LookAheadResults;->fKeys:[I
-Landroid/icu/text/RuleBasedBreakIterator$LookAheadResults;->fPositions:[I
-Landroid/icu/text/RuleBasedBreakIterator$LookAheadResults;->fUsedSlotLimit:I
-Landroid/icu/text/RuleBasedBreakIterator$LookAheadResults;->getPosition(I)I
-Landroid/icu/text/RuleBasedBreakIterator$LookAheadResults;->reset()V
-Landroid/icu/text/RuleBasedBreakIterator$LookAheadResults;->setPosition(II)V
-Landroid/icu/text/RuleBasedBreakIterator;-><init>()V
-Landroid/icu/text/RuleBasedBreakIterator;-><init>(Ljava/lang/String;)V
-Landroid/icu/text/RuleBasedBreakIterator;->checkOffset(ILjava/text/CharacterIterator;)V
-Landroid/icu/text/RuleBasedBreakIterator;->CISetIndex32(Ljava/text/CharacterIterator;I)I
-Landroid/icu/text/RuleBasedBreakIterator;->compileRules(Ljava/lang/String;Ljava/io/OutputStream;)V
-Landroid/icu/text/RuleBasedBreakIterator;->dump(Ljava/io/PrintStream;)V
-Landroid/icu/text/RuleBasedBreakIterator;->fBreakCache:Landroid/icu/text/RuleBasedBreakIterator$BreakCache;
-Landroid/icu/text/RuleBasedBreakIterator;->fBreakEngines:Ljava/util/List;
-Landroid/icu/text/RuleBasedBreakIterator;->fBreakType:I
-Landroid/icu/text/RuleBasedBreakIterator;->fDebugEnv:Ljava/lang/String;
-Landroid/icu/text/RuleBasedBreakIterator;->fDictionaryCache:Landroid/icu/text/RuleBasedBreakIterator$DictionaryCache;
-Landroid/icu/text/RuleBasedBreakIterator;->fDictionaryCharCount:I
-Landroid/icu/text/RuleBasedBreakIterator;->fDone:Z
-Landroid/icu/text/RuleBasedBreakIterator;->fLookAheadMatches:Landroid/icu/text/RuleBasedBreakIterator$LookAheadResults;
-Landroid/icu/text/RuleBasedBreakIterator;->fPosition:I
-Landroid/icu/text/RuleBasedBreakIterator;->fRData:Landroid/icu/text/RBBIDataWrapper;
-Landroid/icu/text/RuleBasedBreakIterator;->fRuleStatusIndex:I
-Landroid/icu/text/RuleBasedBreakIterator;->fText:Ljava/text/CharacterIterator;
-Landroid/icu/text/RuleBasedBreakIterator;->gAllBreakEngines:Ljava/util/List;
-Landroid/icu/text/RuleBasedBreakIterator;->getBreakType()I
-Landroid/icu/text/RuleBasedBreakIterator;->getInstanceFromCompiledRules(Ljava/io/InputStream;)Landroid/icu/text/RuleBasedBreakIterator;
-Landroid/icu/text/RuleBasedBreakIterator;->getInstanceFromCompiledRules(Ljava/nio/ByteBuffer;)Landroid/icu/text/RuleBasedBreakIterator;
-Landroid/icu/text/RuleBasedBreakIterator;->getLanguageBreakEngine(I)Landroid/icu/text/LanguageBreakEngine;
-Landroid/icu/text/RuleBasedBreakIterator;->gUnhandledBreakEngine:Landroid/icu/text/UnhandledBreakEngine;
-Landroid/icu/text/RuleBasedBreakIterator;->handleNext()I
-Landroid/icu/text/RuleBasedBreakIterator;->handlePrevious(I)I
-Landroid/icu/text/RuleBasedBreakIterator;->kMaxLookaheads:I
-Landroid/icu/text/RuleBasedBreakIterator;->RBBI_DEBUG_ARG:Ljava/lang/String;
-Landroid/icu/text/RuleBasedBreakIterator;->RBBI_END:I
-Landroid/icu/text/RuleBasedBreakIterator;->RBBI_RUN:I
-Landroid/icu/text/RuleBasedBreakIterator;->RBBI_START:I
-Landroid/icu/text/RuleBasedBreakIterator;->setBreakType(I)V
-Landroid/icu/text/RuleBasedBreakIterator;->START_STATE:I
-Landroid/icu/text/RuleBasedBreakIterator;->STOP_STATE:I
-Landroid/icu/text/RuleBasedBreakIterator;->TRACE:Z
-Landroid/icu/text/RuleBasedCollator$CollationBuffer;-><init>(Landroid/icu/impl/coll/CollationData;)V
-Landroid/icu/text/RuleBasedCollator$CollationBuffer;->leftFCDUTF16Iter:Landroid/icu/impl/coll/FCDUTF16CollationIterator;
-Landroid/icu/text/RuleBasedCollator$CollationBuffer;->leftFCDUTF16NFDIter:Landroid/icu/text/RuleBasedCollator$FCDUTF16NFDIterator;
-Landroid/icu/text/RuleBasedCollator$CollationBuffer;->leftUTF16CollIter:Landroid/icu/impl/coll/UTF16CollationIterator;
-Landroid/icu/text/RuleBasedCollator$CollationBuffer;->leftUTF16NFDIter:Landroid/icu/text/RuleBasedCollator$UTF16NFDIterator;
-Landroid/icu/text/RuleBasedCollator$CollationBuffer;->rawCollationKey:Landroid/icu/text/RawCollationKey;
-Landroid/icu/text/RuleBasedCollator$CollationBuffer;->rightFCDUTF16Iter:Landroid/icu/impl/coll/FCDUTF16CollationIterator;
-Landroid/icu/text/RuleBasedCollator$CollationBuffer;->rightFCDUTF16NFDIter:Landroid/icu/text/RuleBasedCollator$FCDUTF16NFDIterator;
-Landroid/icu/text/RuleBasedCollator$CollationBuffer;->rightUTF16CollIter:Landroid/icu/impl/coll/UTF16CollationIterator;
-Landroid/icu/text/RuleBasedCollator$CollationBuffer;->rightUTF16NFDIter:Landroid/icu/text/RuleBasedCollator$UTF16NFDIterator;
-Landroid/icu/text/RuleBasedCollator$CollationKeyByteSink;-><init>(Landroid/icu/text/RawCollationKey;)V
-Landroid/icu/text/RuleBasedCollator$CollationKeyByteSink;->key_:Landroid/icu/text/RawCollationKey;
-Landroid/icu/text/RuleBasedCollator$FCDUTF16NFDIterator;-><init>()V
-Landroid/icu/text/RuleBasedCollator$FCDUTF16NFDIterator;->setText(Landroid/icu/impl/Normalizer2Impl;Ljava/lang/CharSequence;I)V
-Landroid/icu/text/RuleBasedCollator$FCDUTF16NFDIterator;->str:Ljava/lang/StringBuilder;
-Landroid/icu/text/RuleBasedCollator$NFDIterator;-><init>()V
-Landroid/icu/text/RuleBasedCollator$NFDIterator;->decomp:Ljava/lang/String;
-Landroid/icu/text/RuleBasedCollator$NFDIterator;->index:I
-Landroid/icu/text/RuleBasedCollator$NFDIterator;->nextCodePoint()I
-Landroid/icu/text/RuleBasedCollator$NFDIterator;->nextDecomposedCodePoint(Landroid/icu/impl/Normalizer2Impl;I)I
-Landroid/icu/text/RuleBasedCollator$NFDIterator;->nextRawCodePoint()I
-Landroid/icu/text/RuleBasedCollator$NFDIterator;->reset()V
-Landroid/icu/text/RuleBasedCollator$UTF16NFDIterator;-><init>()V
-Landroid/icu/text/RuleBasedCollator$UTF16NFDIterator;->nextRawCodePoint()I
-Landroid/icu/text/RuleBasedCollator$UTF16NFDIterator;->pos:I
-Landroid/icu/text/RuleBasedCollator$UTF16NFDIterator;->s:Ljava/lang/CharSequence;
-Landroid/icu/text/RuleBasedCollator$UTF16NFDIterator;->setText(Ljava/lang/CharSequence;I)V
-Landroid/icu/text/RuleBasedCollator;-><init>(Landroid/icu/impl/coll/CollationTailoring;Landroid/icu/util/ULocale;)V
-Landroid/icu/text/RuleBasedCollator;->actualLocaleIsSameAsValid:Z
-Landroid/icu/text/RuleBasedCollator;->adoptTailoring(Landroid/icu/impl/coll/CollationTailoring;)V
-Landroid/icu/text/RuleBasedCollator;->checkNotFrozen()V
-Landroid/icu/text/RuleBasedCollator;->collationBuffer:Landroid/icu/text/RuleBasedCollator$CollationBuffer;
-Landroid/icu/text/RuleBasedCollator;->compareNFDIter(Landroid/icu/impl/Normalizer2Impl;Landroid/icu/text/RuleBasedCollator$NFDIterator;Landroid/icu/text/RuleBasedCollator$NFDIterator;)I
-Landroid/icu/text/RuleBasedCollator;->data:Landroid/icu/impl/coll/CollationData;
-Landroid/icu/text/RuleBasedCollator;->doCompare(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)I
-Landroid/icu/text/RuleBasedCollator;->frozenLock:Ljava/util/concurrent/locks/Lock;
-Landroid/icu/text/RuleBasedCollator;->getCollationBuffer()Landroid/icu/text/RuleBasedCollator$CollationBuffer;
-Landroid/icu/text/RuleBasedCollator;->getCollationKey(Ljava/lang/String;Landroid/icu/text/RuleBasedCollator$CollationBuffer;)Landroid/icu/text/CollationKey;
-Landroid/icu/text/RuleBasedCollator;->getDefaultSettings()Landroid/icu/impl/coll/CollationSettings;
-Landroid/icu/text/RuleBasedCollator;->getOwnedSettings()Landroid/icu/impl/coll/CollationSettings;
-Landroid/icu/text/RuleBasedCollator;->getRawCollationKey(Ljava/lang/CharSequence;Landroid/icu/text/RawCollationKey;Landroid/icu/text/RuleBasedCollator$CollationBuffer;)Landroid/icu/text/RawCollationKey;
-Landroid/icu/text/RuleBasedCollator;->getRawCollationKey(Ljava/lang/String;Landroid/icu/text/RawCollationKey;)Landroid/icu/text/RawCollationKey;
-Landroid/icu/text/RuleBasedCollator;->initMaxExpansions()V
-Landroid/icu/text/RuleBasedCollator;->internalAddContractions(ILandroid/icu/text/UnicodeSet;)V
-Landroid/icu/text/RuleBasedCollator;->internalBuildTailoring(Ljava/lang/String;)V
-Landroid/icu/text/RuleBasedCollator;->internalGetCEs(Ljava/lang/CharSequence;)[J
-Landroid/icu/text/RuleBasedCollator;->internalSetVariableTop(J)V
-Landroid/icu/text/RuleBasedCollator;->isHiraganaQuaternary()Z
-Landroid/icu/text/RuleBasedCollator;->isUnsafe(I)Z
-Landroid/icu/text/RuleBasedCollator;->releaseCollationBuffer(Landroid/icu/text/RuleBasedCollator$CollationBuffer;)V
-Landroid/icu/text/RuleBasedCollator;->setFastLatinOptions(Landroid/icu/impl/coll/CollationSettings;)V
-Landroid/icu/text/RuleBasedCollator;->setHiraganaQuaternary(Z)V
-Landroid/icu/text/RuleBasedCollator;->setHiraganaQuaternaryDefault()V
-Landroid/icu/text/RuleBasedCollator;->setLocale(Landroid/icu/util/ULocale;Landroid/icu/util/ULocale;)V
-Landroid/icu/text/RuleBasedCollator;->settings:Landroid/icu/impl/coll/SharedObject$Reference;
-Landroid/icu/text/RuleBasedCollator;->setVariableTop(I)V
-Landroid/icu/text/RuleBasedCollator;->setVariableTop(Ljava/lang/String;)I
-Landroid/icu/text/RuleBasedCollator;->simpleKeyLengthEstimate(Ljava/lang/CharSequence;)I
-Landroid/icu/text/RuleBasedCollator;->tailoring:Landroid/icu/impl/coll/CollationTailoring;
-Landroid/icu/text/RuleBasedCollator;->validLocale:Landroid/icu/util/ULocale;
-Landroid/icu/text/RuleBasedCollator;->writeIdenticalLevel(Ljava/lang/CharSequence;Landroid/icu/text/RuleBasedCollator$CollationKeyByteSink;)V
-Landroid/icu/text/RuleBasedCollator;->writeSortKey(Ljava/lang/CharSequence;Landroid/icu/text/RuleBasedCollator$CollationKeyByteSink;Landroid/icu/text/RuleBasedCollator$CollationBuffer;)V
-Landroid/icu/text/RuleBasedNumberFormat;-><init>(I)V
-Landroid/icu/text/RuleBasedNumberFormat;-><init>(Landroid/icu/util/ULocale;I)V
-Landroid/icu/text/RuleBasedNumberFormat;-><init>(Ljava/lang/String;)V
-Landroid/icu/text/RuleBasedNumberFormat;-><init>(Ljava/lang/String;Landroid/icu/util/ULocale;)V
-Landroid/icu/text/RuleBasedNumberFormat;-><init>(Ljava/lang/String;Ljava/util/Locale;)V
-Landroid/icu/text/RuleBasedNumberFormat;-><init>(Ljava/lang/String;[[Ljava/lang/String;)V
-Landroid/icu/text/RuleBasedNumberFormat;-><init>(Ljava/lang/String;[[Ljava/lang/String;Landroid/icu/util/ULocale;)V
-Landroid/icu/text/RuleBasedNumberFormat;-><init>(Ljava/util/Locale;I)V
-Landroid/icu/text/RuleBasedNumberFormat;->adjustForContext(Ljava/lang/String;)Ljava/lang/String;
-Landroid/icu/text/RuleBasedNumberFormat;->capitalizationBrkIter:Landroid/icu/text/BreakIterator;
-Landroid/icu/text/RuleBasedNumberFormat;->capitalizationForListOrMenu:Z
-Landroid/icu/text/RuleBasedNumberFormat;->capitalizationForStandAlone:Z
-Landroid/icu/text/RuleBasedNumberFormat;->capitalizationInfoIsSet:Z
-Landroid/icu/text/RuleBasedNumberFormat;->createPluralFormat(Landroid/icu/text/PluralRules$PluralType;Ljava/lang/String;)Landroid/icu/text/PluralFormat;
-Landroid/icu/text/RuleBasedNumberFormat;->DEBUG:Z
-Landroid/icu/text/RuleBasedNumberFormat;->decimalFormat:Landroid/icu/text/DecimalFormat;
-Landroid/icu/text/RuleBasedNumberFormat;->decimalFormatSymbols:Landroid/icu/text/DecimalFormatSymbols;
-Landroid/icu/text/RuleBasedNumberFormat;->defaultInfinityRule:Landroid/icu/text/NFRule;
-Landroid/icu/text/RuleBasedNumberFormat;->defaultNaNRule:Landroid/icu/text/NFRule;
-Landroid/icu/text/RuleBasedNumberFormat;->defaultRuleSet:Landroid/icu/text/NFRuleSet;
-Landroid/icu/text/RuleBasedNumberFormat;->DURATION:I
-Landroid/icu/text/RuleBasedNumberFormat;->extractSpecial(Ljava/lang/StringBuilder;Ljava/lang/String;)Ljava/lang/String;
-Landroid/icu/text/RuleBasedNumberFormat;->findRuleSet(Ljava/lang/String;)Landroid/icu/text/NFRuleSet;
-Landroid/icu/text/RuleBasedNumberFormat;->format(DLandroid/icu/text/NFRuleSet;)Ljava/lang/String;
-Landroid/icu/text/RuleBasedNumberFormat;->format(DLjava/lang/String;)Ljava/lang/String;
-Landroid/icu/text/RuleBasedNumberFormat;->format(JLandroid/icu/text/NFRuleSet;)Ljava/lang/String;
-Landroid/icu/text/RuleBasedNumberFormat;->format(JLjava/lang/String;)Ljava/lang/String;
-Landroid/icu/text/RuleBasedNumberFormat;->getDecimalFormat()Landroid/icu/text/DecimalFormat;
-Landroid/icu/text/RuleBasedNumberFormat;->getDecimalFormatSymbols()Landroid/icu/text/DecimalFormatSymbols;
-Landroid/icu/text/RuleBasedNumberFormat;->getDefaultInfinityRule()Landroid/icu/text/NFRule;
-Landroid/icu/text/RuleBasedNumberFormat;->getDefaultNaNRule()Landroid/icu/text/NFRule;
-Landroid/icu/text/RuleBasedNumberFormat;->getDefaultRuleSet()Landroid/icu/text/NFRuleSet;
-Landroid/icu/text/RuleBasedNumberFormat;->getDefaultRuleSetName()Ljava/lang/String;
-Landroid/icu/text/RuleBasedNumberFormat;->getLenientScanner()Landroid/icu/text/RbnfLenientScanner;
-Landroid/icu/text/RuleBasedNumberFormat;->getLenientScannerProvider()Landroid/icu/text/RbnfLenientScannerProvider;
-Landroid/icu/text/RuleBasedNumberFormat;->getNameListForLocale(Landroid/icu/util/ULocale;)[Ljava/lang/String;
-Landroid/icu/text/RuleBasedNumberFormat;->getRuleSetDisplayName(Ljava/lang/String;)Ljava/lang/String;
-Landroid/icu/text/RuleBasedNumberFormat;->getRuleSetDisplayName(Ljava/lang/String;Landroid/icu/util/ULocale;)Ljava/lang/String;
-Landroid/icu/text/RuleBasedNumberFormat;->getRuleSetDisplayNameLocales()[Landroid/icu/util/ULocale;
-Landroid/icu/text/RuleBasedNumberFormat;->getRuleSetDisplayNames()[Ljava/lang/String;
-Landroid/icu/text/RuleBasedNumberFormat;->getRuleSetDisplayNames(Landroid/icu/util/ULocale;)[Ljava/lang/String;
-Landroid/icu/text/RuleBasedNumberFormat;->getRuleSetNames()[Ljava/lang/String;
-Landroid/icu/text/RuleBasedNumberFormat;->init(Ljava/lang/String;[[Ljava/lang/String;)V
-Landroid/icu/text/RuleBasedNumberFormat;->initCapitalizationContextInfo(Landroid/icu/util/ULocale;)V
-Landroid/icu/text/RuleBasedNumberFormat;->initLocalizations([[Ljava/lang/String;)V
-Landroid/icu/text/RuleBasedNumberFormat;->lenientParse:Z
-Landroid/icu/text/RuleBasedNumberFormat;->lenientParseEnabled()Z
-Landroid/icu/text/RuleBasedNumberFormat;->lenientParseRules:Ljava/lang/String;
-Landroid/icu/text/RuleBasedNumberFormat;->locale:Landroid/icu/util/ULocale;
-Landroid/icu/text/RuleBasedNumberFormat;->locnames:[Ljava/lang/String;
-Landroid/icu/text/RuleBasedNumberFormat;->lookedForScanner:Z
-Landroid/icu/text/RuleBasedNumberFormat;->MAX_VALUE:Landroid/icu/math/BigDecimal;
-Landroid/icu/text/RuleBasedNumberFormat;->MIN_VALUE:Landroid/icu/math/BigDecimal;
-Landroid/icu/text/RuleBasedNumberFormat;->NUMBERING_SYSTEM:I
-Landroid/icu/text/RuleBasedNumberFormat;->ORDINAL:I
-Landroid/icu/text/RuleBasedNumberFormat;->postProcess(Ljava/lang/StringBuilder;Landroid/icu/text/NFRuleSet;)V
-Landroid/icu/text/RuleBasedNumberFormat;->postProcessor:Landroid/icu/text/RBNFPostProcessor;
-Landroid/icu/text/RuleBasedNumberFormat;->postProcessRules:Ljava/lang/String;
-Landroid/icu/text/RuleBasedNumberFormat;->publicRuleSetNames:[Ljava/lang/String;
-Landroid/icu/text/RuleBasedNumberFormat;->roundingMode:I
-Landroid/icu/text/RuleBasedNumberFormat;->rulenames:[Ljava/lang/String;
-Landroid/icu/text/RuleBasedNumberFormat;->ruleSetDisplayNames:Ljava/util/Map;
-Landroid/icu/text/RuleBasedNumberFormat;->ruleSets:[Landroid/icu/text/NFRuleSet;
-Landroid/icu/text/RuleBasedNumberFormat;->ruleSetsMap:Ljava/util/Map;
-Landroid/icu/text/RuleBasedNumberFormat;->scannerProvider:Landroid/icu/text/RbnfLenientScannerProvider;
-Landroid/icu/text/RuleBasedNumberFormat;->setDecimalFormatSymbols(Landroid/icu/text/DecimalFormatSymbols;)V
-Landroid/icu/text/RuleBasedNumberFormat;->setDefaultRuleSet(Ljava/lang/String;)V
-Landroid/icu/text/RuleBasedNumberFormat;->setLenientParseMode(Z)V
-Landroid/icu/text/RuleBasedNumberFormat;->setLenientScannerProvider(Landroid/icu/text/RbnfLenientScannerProvider;)V
-Landroid/icu/text/RuleBasedNumberFormat;->SPELLOUT:I
-Landroid/icu/text/RuleBasedNumberFormat;->stripWhitespace(Ljava/lang/String;)Ljava/lang/StringBuilder;
-Landroid/icu/text/RuleBasedTransliterator$Data;-><init>()V
-Landroid/icu/text/RuleBasedTransliterator$Data;->lookupMatcher(I)Landroid/icu/text/UnicodeMatcher;
-Landroid/icu/text/RuleBasedTransliterator$Data;->lookupReplacer(I)Landroid/icu/text/UnicodeReplacer;
-Landroid/icu/text/RuleBasedTransliterator$Data;->ruleSet:Landroid/icu/text/TransliterationRuleSet;
-Landroid/icu/text/RuleBasedTransliterator$Data;->variableNames:Ljava/util/Map;
-Landroid/icu/text/RuleBasedTransliterator$Data;->variables:[Ljava/lang/Object;
-Landroid/icu/text/RuleBasedTransliterator$Data;->variablesBase:C
-Landroid/icu/text/RuleBasedTransliterator;-><init>(Ljava/lang/String;Landroid/icu/text/RuleBasedTransliterator$Data;Landroid/icu/text/UnicodeFilter;)V
-Landroid/icu/text/RuleBasedTransliterator;->addSourceTargetSet(Landroid/icu/text/UnicodeSet;Landroid/icu/text/UnicodeSet;Landroid/icu/text/UnicodeSet;)V
-Landroid/icu/text/RuleBasedTransliterator;->data:Landroid/icu/text/RuleBasedTransliterator$Data;
-Landroid/icu/text/RuleBasedTransliterator;->handleTransliterate(Landroid/icu/text/Replaceable;Landroid/icu/text/Transliterator$Position;Z)V
-Landroid/icu/text/RuleBasedTransliterator;->safeClone()Landroid/icu/text/Transliterator;
-Landroid/icu/text/RuleBasedTransliterator;->toRules(Z)Ljava/lang/String;
-Landroid/icu/text/ScientificNumberFormatter$MarkupStyle;-><init>(Ljava/lang/String;Ljava/lang/String;)V
-Landroid/icu/text/ScientificNumberFormatter$MarkupStyle;->beginMarkup:Ljava/lang/String;
-Landroid/icu/text/ScientificNumberFormatter$MarkupStyle;->endMarkup:Ljava/lang/String;
-Landroid/icu/text/ScientificNumberFormatter$MarkupStyle;->format(Ljava/text/AttributedCharacterIterator;Ljava/lang/String;)Ljava/lang/String;
-Landroid/icu/text/ScientificNumberFormatter$Style;-><init>()V
-Landroid/icu/text/ScientificNumberFormatter$Style;->append(Ljava/text/AttributedCharacterIterator;IILjava/lang/StringBuilder;)V
-Landroid/icu/text/ScientificNumberFormatter$Style;->format(Ljava/text/AttributedCharacterIterator;Ljava/lang/String;)Ljava/lang/String;
-Landroid/icu/text/ScientificNumberFormatter$SuperscriptStyle;-><init>()V
-Landroid/icu/text/ScientificNumberFormatter$SuperscriptStyle;->char32AtAndAdvance(Ljava/text/AttributedCharacterIterator;)I
-Landroid/icu/text/ScientificNumberFormatter$SuperscriptStyle;->copyAsSuperscript(Ljava/text/AttributedCharacterIterator;IILjava/lang/StringBuilder;)V
-Landroid/icu/text/ScientificNumberFormatter$SuperscriptStyle;->format(Ljava/text/AttributedCharacterIterator;Ljava/lang/String;)Ljava/lang/String;
-Landroid/icu/text/ScientificNumberFormatter$SuperscriptStyle;->SUPERSCRIPT_DIGITS:[C
-Landroid/icu/text/ScientificNumberFormatter$SuperscriptStyle;->SUPERSCRIPT_MINUS_SIGN:C
-Landroid/icu/text/ScientificNumberFormatter$SuperscriptStyle;->SUPERSCRIPT_PLUS_SIGN:C
-Landroid/icu/text/ScientificNumberFormatter;-><init>(Landroid/icu/text/DecimalFormat;Ljava/lang/String;Landroid/icu/text/ScientificNumberFormatter$Style;)V
-Landroid/icu/text/ScientificNumberFormatter;->fmt:Landroid/icu/text/DecimalFormat;
-Landroid/icu/text/ScientificNumberFormatter;->getInstance(Landroid/icu/text/DecimalFormat;Landroid/icu/text/ScientificNumberFormatter$Style;)Landroid/icu/text/ScientificNumberFormatter;
-Landroid/icu/text/ScientificNumberFormatter;->getInstanceForLocale(Landroid/icu/util/ULocale;Landroid/icu/text/ScientificNumberFormatter$Style;)Landroid/icu/text/ScientificNumberFormatter;
-Landroid/icu/text/ScientificNumberFormatter;->getPreExponent(Landroid/icu/text/DecimalFormatSymbols;)Ljava/lang/String;
-Landroid/icu/text/ScientificNumberFormatter;->preExponent:Ljava/lang/String;
-Landroid/icu/text/ScientificNumberFormatter;->style:Landroid/icu/text/ScientificNumberFormatter$Style;
-Landroid/icu/text/ScientificNumberFormatter;->SUPER_SCRIPT:Landroid/icu/text/ScientificNumberFormatter$Style;
-Landroid/icu/text/SCSU;->ARMENIANINDEX:I
-Landroid/icu/text/SCSU;->COMPRESSIONOFFSET:I
-Landroid/icu/text/SCSU;->GREEKINDEX:I
-Landroid/icu/text/SCSU;->HALFWIDTHKATAKANAINDEX:I
-Landroid/icu/text/SCSU;->HIRAGANAINDEX:I
-Landroid/icu/text/SCSU;->INVALIDCHAR:I
-Landroid/icu/text/SCSU;->INVALIDWINDOW:I
-Landroid/icu/text/SCSU;->IPAEXTENSIONINDEX:I
-Landroid/icu/text/SCSU;->KATAKANAINDEX:I
-Landroid/icu/text/SCSU;->LATININDEX:I
-Landroid/icu/text/SCSU;->MAXINDEX:I
-Landroid/icu/text/SCSU;->NUMSTATICWINDOWS:I
-Landroid/icu/text/SCSU;->NUMWINDOWS:I
-Landroid/icu/text/SCSU;->RESERVEDINDEX:I
-Landroid/icu/text/SCSU;->SCHANGE0:I
-Landroid/icu/text/SCSU;->SCHANGE1:I
-Landroid/icu/text/SCSU;->SCHANGE2:I
-Landroid/icu/text/SCSU;->SCHANGE3:I
-Landroid/icu/text/SCSU;->SCHANGE4:I
-Landroid/icu/text/SCSU;->SCHANGE5:I
-Landroid/icu/text/SCSU;->SCHANGE6:I
-Landroid/icu/text/SCSU;->SCHANGE7:I
-Landroid/icu/text/SCSU;->SCHANGEU:I
-Landroid/icu/text/SCSU;->SDEFINE0:I
-Landroid/icu/text/SCSU;->SDEFINE1:I
-Landroid/icu/text/SCSU;->SDEFINE2:I
-Landroid/icu/text/SCSU;->SDEFINE3:I
-Landroid/icu/text/SCSU;->SDEFINE4:I
-Landroid/icu/text/SCSU;->SDEFINE5:I
-Landroid/icu/text/SCSU;->SDEFINE6:I
-Landroid/icu/text/SCSU;->SDEFINE7:I
-Landroid/icu/text/SCSU;->SDEFINEX:I
-Landroid/icu/text/SCSU;->SINGLEBYTEMODE:I
-Landroid/icu/text/SCSU;->sOffsets:[I
-Landroid/icu/text/SCSU;->sOffsetTable:[I
-Landroid/icu/text/SCSU;->SQUOTE0:I
-Landroid/icu/text/SCSU;->SQUOTE1:I
-Landroid/icu/text/SCSU;->SQUOTE2:I
-Landroid/icu/text/SCSU;->SQUOTE3:I
-Landroid/icu/text/SCSU;->SQUOTE4:I
-Landroid/icu/text/SCSU;->SQUOTE5:I
-Landroid/icu/text/SCSU;->SQUOTE6:I
-Landroid/icu/text/SCSU;->SQUOTE7:I
-Landroid/icu/text/SCSU;->SQUOTEU:I
-Landroid/icu/text/SCSU;->SRESERVED:I
-Landroid/icu/text/SCSU;->UCHANGE0:I
-Landroid/icu/text/SCSU;->UCHANGE1:I
-Landroid/icu/text/SCSU;->UCHANGE2:I
-Landroid/icu/text/SCSU;->UCHANGE3:I
-Landroid/icu/text/SCSU;->UCHANGE4:I
-Landroid/icu/text/SCSU;->UCHANGE5:I
-Landroid/icu/text/SCSU;->UCHANGE6:I
-Landroid/icu/text/SCSU;->UCHANGE7:I
-Landroid/icu/text/SCSU;->UDEFINE0:I
-Landroid/icu/text/SCSU;->UDEFINE1:I
-Landroid/icu/text/SCSU;->UDEFINE2:I
-Landroid/icu/text/SCSU;->UDEFINE3:I
-Landroid/icu/text/SCSU;->UDEFINE4:I
-Landroid/icu/text/SCSU;->UDEFINE5:I
-Landroid/icu/text/SCSU;->UDEFINE6:I
-Landroid/icu/text/SCSU;->UDEFINE7:I
-Landroid/icu/text/SCSU;->UDEFINEX:I
-Landroid/icu/text/SCSU;->UNICODEMODE:I
-Landroid/icu/text/SCSU;->UQUOTEU:I
-Landroid/icu/text/SCSU;->URESERVED:I
-Landroid/icu/text/SearchIterator$Search;->beginIndex()I
-Landroid/icu/text/SearchIterator$Search;->breakIter()Landroid/icu/text/BreakIterator;
-Landroid/icu/text/SearchIterator$Search;->elementComparisonType_:Landroid/icu/text/SearchIterator$ElementComparisonType;
-Landroid/icu/text/SearchIterator$Search;->endIndex()I
-Landroid/icu/text/SearchIterator$Search;->internalBreakIter_:Landroid/icu/text/BreakIterator;
-Landroid/icu/text/SearchIterator$Search;->isCanonicalMatch_:Z
-Landroid/icu/text/SearchIterator$Search;->isForwardSearching_:Z
-Landroid/icu/text/SearchIterator$Search;->isOverlap_:Z
-Landroid/icu/text/SearchIterator$Search;->matchedIndex_:I
-Landroid/icu/text/SearchIterator$Search;->matchedLength()I
-Landroid/icu/text/SearchIterator$Search;->reset_:Z
-Landroid/icu/text/SearchIterator$Search;->setBreakIter(Landroid/icu/text/BreakIterator;)V
-Landroid/icu/text/SearchIterator$Search;->setMatchedLength(I)V
-Landroid/icu/text/SearchIterator$Search;->setTarget(Ljava/text/CharacterIterator;)V
-Landroid/icu/text/SearchIterator$Search;->text()Ljava/text/CharacterIterator;
-Landroid/icu/text/SearchIterator;->search_:Landroid/icu/text/SearchIterator$Search;
-Landroid/icu/text/SearchIterator;->setMatchNotFound()V
-Landroid/icu/text/SelectFormat;->findSubMessage(Landroid/icu/text/MessagePattern;ILjava/lang/String;)I
-Landroid/icu/text/SelectFormat;->msgPattern:Landroid/icu/text/MessagePattern;
-Landroid/icu/text/SelectFormat;->pattern:Ljava/lang/String;
-Landroid/icu/text/SelectFormat;->reset()V
-Landroid/icu/text/SimpleDateFormat$ContextValue;->CAPITALIZATION_FOR_BEGINNING_OF_SENTENCE:Landroid/icu/text/SimpleDateFormat$ContextValue;
-Landroid/icu/text/SimpleDateFormat$ContextValue;->CAPITALIZATION_FOR_MIDDLE_OF_SENTENCE:Landroid/icu/text/SimpleDateFormat$ContextValue;
-Landroid/icu/text/SimpleDateFormat$ContextValue;->CAPITALIZATION_FOR_STANDALONE:Landroid/icu/text/SimpleDateFormat$ContextValue;
-Landroid/icu/text/SimpleDateFormat$ContextValue;->CAPITALIZATION_FOR_UI_LIST_OR_MENU:Landroid/icu/text/SimpleDateFormat$ContextValue;
-Landroid/icu/text/SimpleDateFormat$ContextValue;->UNKNOWN:Landroid/icu/text/SimpleDateFormat$ContextValue;
-Landroid/icu/text/SimpleDateFormat$ContextValue;->valueOf(Ljava/lang/String;)Landroid/icu/text/SimpleDateFormat$ContextValue;
-Landroid/icu/text/SimpleDateFormat$ContextValue;->values()[Landroid/icu/text/SimpleDateFormat$ContextValue;
-Landroid/icu/text/SimpleDateFormat$PatternItem;-><init>(CI)V
-Landroid/icu/text/SimpleDateFormat$PatternItem;->isNumeric:Z
-Landroid/icu/text/SimpleDateFormat$PatternItem;->length:I
-Landroid/icu/text/SimpleDateFormat$PatternItem;->type:C
-Landroid/icu/text/SimpleDateFormat;-><init>(Ljava/lang/String;Landroid/icu/text/DateFormatSymbols;Landroid/icu/util/Calendar;Landroid/icu/text/NumberFormat;Landroid/icu/util/ULocale;ZLjava/lang/String;)V
-Landroid/icu/text/SimpleDateFormat;-><init>(Ljava/lang/String;Landroid/icu/text/DateFormatSymbols;Landroid/icu/util/Calendar;Landroid/icu/util/ULocale;ZLjava/lang/String;)V
-Landroid/icu/text/SimpleDateFormat;-><init>(Ljava/lang/String;Landroid/icu/text/DateFormatSymbols;Landroid/icu/util/ULocale;)V
-Landroid/icu/text/SimpleDateFormat;->allowNumericFallback(I)Z
-Landroid/icu/text/SimpleDateFormat;->cachedDefaultLocale:Landroid/icu/util/ULocale;
-Landroid/icu/text/SimpleDateFormat;->cachedDefaultPattern:Ljava/lang/String;
-Landroid/icu/text/SimpleDateFormat;->CALENDAR_FIELD_TO_LEVEL:[I
-Landroid/icu/text/SimpleDateFormat;->capitalizationBrkIter:Landroid/icu/text/BreakIterator;
-Landroid/icu/text/SimpleDateFormat;->countDigits(Ljava/lang/String;II)I
-Landroid/icu/text/SimpleDateFormat;->currentSerialVersion:I
-Landroid/icu/text/SimpleDateFormat;->DATE_PATTERN_TYPE:Landroid/icu/text/UnicodeSet;
-Landroid/icu/text/SimpleDateFormat;->decDigits:[C
-Landroid/icu/text/SimpleDateFormat;->decimalBuf:[C
-Landroid/icu/text/SimpleDateFormat;->DECIMAL_BUF_SIZE:I
-Landroid/icu/text/SimpleDateFormat;->defaultCenturyBase:J
-Landroid/icu/text/SimpleDateFormat;->defaultCenturyStart:Ljava/util/Date;
-Landroid/icu/text/SimpleDateFormat;->defaultCenturyStartYear:I
-Landroid/icu/text/SimpleDateFormat;->DelayedHebrewMonthCheck:Z
-Landroid/icu/text/SimpleDateFormat;->diffCalFieldValue(Landroid/icu/util/Calendar;Landroid/icu/util/Calendar;[Ljava/lang/Object;I)Z
-Landroid/icu/text/SimpleDateFormat;->FALLBACKPATTERN:Ljava/lang/String;
-Landroid/icu/text/SimpleDateFormat;->fastZeroPaddingNumber(Ljava/lang/StringBuffer;III)V
-Landroid/icu/text/SimpleDateFormat;->format(Landroid/icu/util/Calendar;Landroid/icu/text/DisplayContext;Ljava/lang/StringBuffer;Ljava/text/FieldPosition;Ljava/util/List;)Ljava/lang/StringBuffer;
-Landroid/icu/text/SimpleDateFormat;->formatData:Landroid/icu/text/DateFormatSymbols;
-Landroid/icu/text/SimpleDateFormat;->getDefaultCenturyStart()Ljava/util/Date;
-Landroid/icu/text/SimpleDateFormat;->getDefaultCenturyStartYear()I
-Landroid/icu/text/SimpleDateFormat;->getDefaultPattern()Ljava/lang/String;
-Landroid/icu/text/SimpleDateFormat;->getIndexFromChar(C)I
-Landroid/icu/text/SimpleDateFormat;->getInstance(Landroid/icu/util/Calendar$FormatConfiguration;)Landroid/icu/text/SimpleDateFormat;
-Landroid/icu/text/SimpleDateFormat;->getLevelFromChar(C)I
-Landroid/icu/text/SimpleDateFormat;->getLocale()Landroid/icu/util/ULocale;
-Landroid/icu/text/SimpleDateFormat;->getPatternItems()[Ljava/lang/Object;
-Landroid/icu/text/SimpleDateFormat;->hasMinute:Z
-Landroid/icu/text/SimpleDateFormat;->hasSecond:Z
-Landroid/icu/text/SimpleDateFormat;->HEBREW_CAL_CUR_MILLENIUM_END_YEAR:I
-Landroid/icu/text/SimpleDateFormat;->HEBREW_CAL_CUR_MILLENIUM_START_YEAR:I
-Landroid/icu/text/SimpleDateFormat;->initialize()V
-Landroid/icu/text/SimpleDateFormat;->initializeDefaultCenturyStart(J)V
-Landroid/icu/text/SimpleDateFormat;->initializeTimeZoneFormat(Z)V
-Landroid/icu/text/SimpleDateFormat;->initLocalZeroPaddingNumberFormat()V
-Landroid/icu/text/SimpleDateFormat;->initNumberFormatters(Landroid/icu/util/ULocale;)V
-Landroid/icu/text/SimpleDateFormat;->intervalFormatByAlgorithm(Landroid/icu/util/Calendar;Landroid/icu/util/Calendar;Ljava/lang/StringBuffer;Ljava/text/FieldPosition;)Ljava/lang/StringBuffer;
-Landroid/icu/text/SimpleDateFormat;->isFieldUnitIgnored(I)Z
-Landroid/icu/text/SimpleDateFormat;->isFieldUnitIgnored(Ljava/lang/String;I)Z
-Landroid/icu/text/SimpleDateFormat;->isNumeric(CI)Z
-Landroid/icu/text/SimpleDateFormat;->ISOSpecialEra:I
-Landroid/icu/text/SimpleDateFormat;->isSyntaxChar(C)Z
-Landroid/icu/text/SimpleDateFormat;->locale:Landroid/icu/util/ULocale;
-Landroid/icu/text/SimpleDateFormat;->lowerLevel([Ljava/lang/Object;II)Z
-Landroid/icu/text/SimpleDateFormat;->matchDayPeriodString(Ljava/lang/String;I[Ljava/lang/String;ILandroid/icu/util/Output;)I
-Landroid/icu/text/SimpleDateFormat;->matchLiteral(Ljava/lang/String;I[Ljava/lang/Object;I[Z)I
-Landroid/icu/text/SimpleDateFormat;->matchString(Ljava/lang/String;II[Ljava/lang/String;Ljava/lang/String;Landroid/icu/util/Calendar;)I
-Landroid/icu/text/SimpleDateFormat;->millisPerHour:I
-Landroid/icu/text/SimpleDateFormat;->numberFormatters:Ljava/util/HashMap;
-Landroid/icu/text/SimpleDateFormat;->NUMERIC_FORMAT_CHARS2:Ljava/lang/String;
-Landroid/icu/text/SimpleDateFormat;->NUMERIC_FORMAT_CHARS:Ljava/lang/String;
-Landroid/icu/text/SimpleDateFormat;->override:Ljava/lang/String;
-Landroid/icu/text/SimpleDateFormat;->overrideMap:Ljava/util/HashMap;
-Landroid/icu/text/SimpleDateFormat;->parseAmbiguousDatesAsAfter(Ljava/util/Date;)V
-Landroid/icu/text/SimpleDateFormat;->PARSED_PATTERN_CACHE:Landroid/icu/impl/ICUCache;
-Landroid/icu/text/SimpleDateFormat;->parseInt(Ljava/lang/String;ILjava/text/ParsePosition;ZLandroid/icu/text/NumberFormat;)Ljava/lang/Number;
-Landroid/icu/text/SimpleDateFormat;->parseInt(Ljava/lang/String;Ljava/text/ParsePosition;ZLandroid/icu/text/NumberFormat;)Ljava/lang/Number;
-Landroid/icu/text/SimpleDateFormat;->parsePattern()V
-Landroid/icu/text/SimpleDateFormat;->pattern:Ljava/lang/String;
-Landroid/icu/text/SimpleDateFormat;->patternItems:[Ljava/lang/Object;
-Landroid/icu/text/SimpleDateFormat;->PATTERN_CHAR_IS_SYNTAX:[Z
-Landroid/icu/text/SimpleDateFormat;->PATTERN_CHAR_TO_INDEX:[I
-Landroid/icu/text/SimpleDateFormat;->PATTERN_CHAR_TO_LEVEL:[I
-Landroid/icu/text/SimpleDateFormat;->PATTERN_INDEX_TO_CALENDAR_FIELD:[I
-Landroid/icu/text/SimpleDateFormat;->PATTERN_INDEX_TO_DATE_FORMAT_ATTRIBUTE:[Landroid/icu/text/DateFormat$Field;
-Landroid/icu/text/SimpleDateFormat;->PATTERN_INDEX_TO_DATE_FORMAT_FIELD:[I
-Landroid/icu/text/SimpleDateFormat;->processOverrideString(Landroid/icu/util/ULocale;Ljava/lang/String;)V
-Landroid/icu/text/SimpleDateFormat;->regionMatchesWithOptionalDot(Ljava/lang/String;ILjava/lang/String;I)I
-Landroid/icu/text/SimpleDateFormat;->safeAppend([Ljava/lang/String;ILjava/lang/StringBuffer;)V
-Landroid/icu/text/SimpleDateFormat;->safeAppendWithMonthPattern([Ljava/lang/String;ILjava/lang/StringBuffer;Ljava/lang/String;)V
-Landroid/icu/text/SimpleDateFormat;->serialVersionOnStream:I
-Landroid/icu/text/SimpleDateFormat;->subFormat(CIIILandroid/icu/text/DisplayContext;Ljava/text/FieldPosition;Landroid/icu/util/Calendar;)Ljava/lang/String;
-Landroid/icu/text/SimpleDateFormat;->subFormat(Ljava/lang/StringBuffer;CIIILandroid/icu/text/DisplayContext;Ljava/text/FieldPosition;Landroid/icu/util/Calendar;)V
-Landroid/icu/text/SimpleDateFormat;->subParse(Ljava/lang/String;ICIZZ[ZLandroid/icu/util/Calendar;Landroid/icu/text/MessageFormat;Landroid/icu/util/Output;)I
-Landroid/icu/text/SimpleDateFormat;->subParse(Ljava/lang/String;ICIZZ[ZLandroid/icu/util/Calendar;Landroid/icu/text/MessageFormat;Landroid/icu/util/Output;Landroid/icu/util/Output;)I
-Landroid/icu/text/SimpleDateFormat;->SUPPRESS_NEGATIVE_PREFIX:Ljava/lang/String;
-Landroid/icu/text/SimpleDateFormat;->translatePattern(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
-Landroid/icu/text/SimpleDateFormat;->tzFormat()Landroid/icu/text/TimeZoneFormat;
-Landroid/icu/text/SimpleDateFormat;->tzFormat:Landroid/icu/text/TimeZoneFormat;
-Landroid/icu/text/SimpleDateFormat;->useFastFormat:Z
-Landroid/icu/text/SimpleDateFormat;->useLocalZeroPaddingNumberFormat:Z
-Landroid/icu/text/SimpleDateFormat;->zeroPaddingNumber(Landroid/icu/text/NumberFormat;Ljava/lang/StringBuffer;III)V
-Landroid/icu/text/SimpleFormatter;-><init>(Ljava/lang/String;)V
-Landroid/icu/text/SimpleFormatter;->compile(Ljava/lang/CharSequence;)Landroid/icu/text/SimpleFormatter;
-Landroid/icu/text/SimpleFormatter;->compiledPattern:Ljava/lang/String;
-Landroid/icu/text/SimpleFormatter;->compileMinMaxArguments(Ljava/lang/CharSequence;II)Landroid/icu/text/SimpleFormatter;
-Landroid/icu/text/SimpleFormatter;->getArgumentLimit()I
-Landroid/icu/text/SimpleFormatter;->getTextWithNoArguments()Ljava/lang/String;
-Landroid/icu/text/SpoofChecker$Builder$ConfusabledataBuilder$SPUString;-><init>(Ljava/lang/String;)V
-Landroid/icu/text/SpoofChecker$Builder$ConfusabledataBuilder$SPUString;->fCharOrStrTableIndex:I
-Landroid/icu/text/SpoofChecker$Builder$ConfusabledataBuilder$SPUString;->fStr:Ljava/lang/String;
-Landroid/icu/text/SpoofChecker$Builder$ConfusabledataBuilder$SPUStringComparator;-><init>()V
-Landroid/icu/text/SpoofChecker$Builder$ConfusabledataBuilder$SPUStringComparator;->compare(Landroid/icu/text/SpoofChecker$Builder$ConfusabledataBuilder$SPUString;Landroid/icu/text/SpoofChecker$Builder$ConfusabledataBuilder$SPUString;)I
-Landroid/icu/text/SpoofChecker$Builder$ConfusabledataBuilder$SPUStringComparator;->INSTANCE:Landroid/icu/text/SpoofChecker$Builder$ConfusabledataBuilder$SPUStringComparator;
-Landroid/icu/text/SpoofChecker$Builder$ConfusabledataBuilder$SPUStringPool;-><init>()V
-Landroid/icu/text/SpoofChecker$Builder$ConfusabledataBuilder$SPUStringPool;->addString(Ljava/lang/String;)Landroid/icu/text/SpoofChecker$Builder$ConfusabledataBuilder$SPUString;
-Landroid/icu/text/SpoofChecker$Builder$ConfusabledataBuilder$SPUStringPool;->fHash:Ljava/util/Hashtable;
-Landroid/icu/text/SpoofChecker$Builder$ConfusabledataBuilder$SPUStringPool;->fVec:Ljava/util/Vector;
-Landroid/icu/text/SpoofChecker$Builder$ConfusabledataBuilder$SPUStringPool;->getByIndex(I)Landroid/icu/text/SpoofChecker$Builder$ConfusabledataBuilder$SPUString;
-Landroid/icu/text/SpoofChecker$Builder$ConfusabledataBuilder$SPUStringPool;->size()I
-Landroid/icu/text/SpoofChecker$Builder$ConfusabledataBuilder$SPUStringPool;->sort()V
-Landroid/icu/text/SpoofChecker$Builder$ConfusabledataBuilder;-><init>()V
-Landroid/icu/text/SpoofChecker$Builder$ConfusabledataBuilder;->build(Ljava/io/Reader;Landroid/icu/text/SpoofChecker$SpoofData;)V
-Landroid/icu/text/SpoofChecker$Builder$ConfusabledataBuilder;->buildConfusableData(Ljava/io/Reader;Landroid/icu/text/SpoofChecker$SpoofData;)V
-Landroid/icu/text/SpoofChecker$Builder$ConfusabledataBuilder;->fKeySet:Landroid/icu/text/UnicodeSet;
-Landroid/icu/text/SpoofChecker$Builder$ConfusabledataBuilder;->fKeyVec:Ljava/util/ArrayList;
-Landroid/icu/text/SpoofChecker$Builder$ConfusabledataBuilder;->fLineNum:I
-Landroid/icu/text/SpoofChecker$Builder$ConfusabledataBuilder;->fParseHexNum:Ljava/util/regex/Pattern;
-Landroid/icu/text/SpoofChecker$Builder$ConfusabledataBuilder;->fParseLine:Ljava/util/regex/Pattern;
-Landroid/icu/text/SpoofChecker$Builder$ConfusabledataBuilder;->fStringTable:Ljava/lang/StringBuffer;
-Landroid/icu/text/SpoofChecker$Builder$ConfusabledataBuilder;->fTable:Ljava/util/Hashtable;
-Landroid/icu/text/SpoofChecker$Builder$ConfusabledataBuilder;->fValueVec:Ljava/util/ArrayList;
-Landroid/icu/text/SpoofChecker$Builder$ConfusabledataBuilder;->stringPool:Landroid/icu/text/SpoofChecker$Builder$ConfusabledataBuilder$SPUStringPool;
-Landroid/icu/text/SpoofChecker$Builder;-><init>()V
-Landroid/icu/text/SpoofChecker$Builder;-><init>(Landroid/icu/text/SpoofChecker;)V
-Landroid/icu/text/SpoofChecker$Builder;->addScriptChars(Landroid/icu/util/ULocale;Landroid/icu/text/UnicodeSet;)V
-Landroid/icu/text/SpoofChecker$Builder;->build()Landroid/icu/text/SpoofChecker;
-Landroid/icu/text/SpoofChecker$Builder;->fAllowedCharsSet:Landroid/icu/text/UnicodeSet;
-Landroid/icu/text/SpoofChecker$Builder;->fAllowedLocales:Ljava/util/Set;
-Landroid/icu/text/SpoofChecker$Builder;->fChecks:I
-Landroid/icu/text/SpoofChecker$Builder;->fRestrictionLevel:Landroid/icu/text/SpoofChecker$RestrictionLevel;
-Landroid/icu/text/SpoofChecker$Builder;->fSpoofData:Landroid/icu/text/SpoofChecker$SpoofData;
-Landroid/icu/text/SpoofChecker$Builder;->setAllowedChars(Landroid/icu/text/UnicodeSet;)Landroid/icu/text/SpoofChecker$Builder;
-Landroid/icu/text/SpoofChecker$Builder;->setAllowedJavaLocales(Ljava/util/Set;)Landroid/icu/text/SpoofChecker$Builder;
-Landroid/icu/text/SpoofChecker$Builder;->setAllowedLocales(Ljava/util/Set;)Landroid/icu/text/SpoofChecker$Builder;
-Landroid/icu/text/SpoofChecker$Builder;->setChecks(I)Landroid/icu/text/SpoofChecker$Builder;
-Landroid/icu/text/SpoofChecker$Builder;->setData(Ljava/io/Reader;)Landroid/icu/text/SpoofChecker$Builder;
-Landroid/icu/text/SpoofChecker$Builder;->setData(Ljava/io/Reader;Ljava/io/Reader;)Landroid/icu/text/SpoofChecker$Builder;
-Landroid/icu/text/SpoofChecker$Builder;->setRestrictionLevel(Landroid/icu/text/SpoofChecker$RestrictionLevel;)Landroid/icu/text/SpoofChecker$Builder;
-Landroid/icu/text/SpoofChecker$CheckResult;-><init>()V
-Landroid/icu/text/SpoofChecker$CheckResult;->checks:I
-Landroid/icu/text/SpoofChecker$CheckResult;->numerics:Landroid/icu/text/UnicodeSet;
-Landroid/icu/text/SpoofChecker$CheckResult;->position:I
-Landroid/icu/text/SpoofChecker$CheckResult;->restrictionLevel:Landroid/icu/text/SpoofChecker$RestrictionLevel;
-Landroid/icu/text/SpoofChecker$ConfusableDataUtils;-><init>()V
-Landroid/icu/text/SpoofChecker$ConfusableDataUtils;->codePointAndLengthToKey(II)I
-Landroid/icu/text/SpoofChecker$ConfusableDataUtils;->FORMAT_VERSION:I
-Landroid/icu/text/SpoofChecker$ConfusableDataUtils;->keyToCodePoint(I)I
-Landroid/icu/text/SpoofChecker$ConfusableDataUtils;->keyToLength(I)I
-Landroid/icu/text/SpoofChecker$RestrictionLevel;->ASCII:Landroid/icu/text/SpoofChecker$RestrictionLevel;
-Landroid/icu/text/SpoofChecker$RestrictionLevel;->HIGHLY_RESTRICTIVE:Landroid/icu/text/SpoofChecker$RestrictionLevel;
-Landroid/icu/text/SpoofChecker$RestrictionLevel;->MINIMALLY_RESTRICTIVE:Landroid/icu/text/SpoofChecker$RestrictionLevel;
-Landroid/icu/text/SpoofChecker$RestrictionLevel;->MODERATELY_RESTRICTIVE:Landroid/icu/text/SpoofChecker$RestrictionLevel;
-Landroid/icu/text/SpoofChecker$RestrictionLevel;->SINGLE_SCRIPT_RESTRICTIVE:Landroid/icu/text/SpoofChecker$RestrictionLevel;
-Landroid/icu/text/SpoofChecker$RestrictionLevel;->UNRESTRICTIVE:Landroid/icu/text/SpoofChecker$RestrictionLevel;
-Landroid/icu/text/SpoofChecker$RestrictionLevel;->valueOf(Ljava/lang/String;)Landroid/icu/text/SpoofChecker$RestrictionLevel;
-Landroid/icu/text/SpoofChecker$RestrictionLevel;->values()[Landroid/icu/text/SpoofChecker$RestrictionLevel;
-Landroid/icu/text/SpoofChecker$ScriptSet;->appendStringTo(Ljava/lang/StringBuilder;)V
-Landroid/icu/text/SpoofChecker$SpoofData$DefaultData;-><init>()V
-Landroid/icu/text/SpoofChecker$SpoofData$DefaultData;->EXCEPTION:Ljava/io/IOException;
-Landroid/icu/text/SpoofChecker$SpoofData$DefaultData;->INSTANCE:Landroid/icu/text/SpoofChecker$SpoofData;
-Landroid/icu/text/SpoofChecker$SpoofData$IsAcceptable;-><init>()V
-Landroid/icu/text/SpoofChecker$SpoofData;-><init>()V
-Landroid/icu/text/SpoofChecker$SpoofData;-><init>(Ljava/nio/ByteBuffer;)V
-Landroid/icu/text/SpoofChecker$SpoofData;->appendValueTo(ILjava/lang/StringBuilder;)V
-Landroid/icu/text/SpoofChecker$SpoofData;->codePointAt(I)I
-Landroid/icu/text/SpoofChecker$SpoofData;->confusableLookup(ILjava/lang/StringBuilder;)V
-Landroid/icu/text/SpoofChecker$SpoofData;->DATA_FORMAT:I
-Landroid/icu/text/SpoofChecker$SpoofData;->fCFUKeys:[I
-Landroid/icu/text/SpoofChecker$SpoofData;->fCFUStrings:Ljava/lang/String;
-Landroid/icu/text/SpoofChecker$SpoofData;->fCFUValues:[S
-Landroid/icu/text/SpoofChecker$SpoofData;->getDefault()Landroid/icu/text/SpoofChecker$SpoofData;
-Landroid/icu/text/SpoofChecker$SpoofData;->IS_ACCEPTABLE:Landroid/icu/text/SpoofChecker$SpoofData$IsAcceptable;
-Landroid/icu/text/SpoofChecker$SpoofData;->length()I
-Landroid/icu/text/SpoofChecker$SpoofData;->readData(Ljava/nio/ByteBuffer;)V
-Landroid/icu/text/SpoofChecker;-><init>()V
-Landroid/icu/text/SpoofChecker;->ALL_CHECKS:I
-Landroid/icu/text/SpoofChecker;->ANY_CASE:I
-Landroid/icu/text/SpoofChecker;->areConfusable(Ljava/lang/String;Ljava/lang/String;)I
-Landroid/icu/text/SpoofChecker;->ASCII:Landroid/icu/text/UnicodeSet;
-Landroid/icu/text/SpoofChecker;->CHAR_LIMIT:I
-Landroid/icu/text/SpoofChecker;->CONFUSABLE:I
-Landroid/icu/text/SpoofChecker;->failsChecks(Ljava/lang/String;)Z
-Landroid/icu/text/SpoofChecker;->failsChecks(Ljava/lang/String;Landroid/icu/text/SpoofChecker$CheckResult;)Z
-Landroid/icu/text/SpoofChecker;->fAllowedCharsSet:Landroid/icu/text/UnicodeSet;
-Landroid/icu/text/SpoofChecker;->fAllowedLocales:Ljava/util/Set;
-Landroid/icu/text/SpoofChecker;->fChecks:I
-Landroid/icu/text/SpoofChecker;->fRestrictionLevel:Landroid/icu/text/SpoofChecker$RestrictionLevel;
-Landroid/icu/text/SpoofChecker;->fSpoofData:Landroid/icu/text/SpoofChecker$SpoofData;
-Landroid/icu/text/SpoofChecker;->getAllowedChars()Landroid/icu/text/UnicodeSet;
-Landroid/icu/text/SpoofChecker;->getAllowedJavaLocales()Ljava/util/Set;
-Landroid/icu/text/SpoofChecker;->getAllowedLocales()Ljava/util/Set;
-Landroid/icu/text/SpoofChecker;->getAugmentedScriptSet(ILandroid/icu/text/SpoofChecker$ScriptSet;)V
-Landroid/icu/text/SpoofChecker;->getChecks()I
-Landroid/icu/text/SpoofChecker;->getNumerics(Ljava/lang/String;Landroid/icu/text/UnicodeSet;)V
-Landroid/icu/text/SpoofChecker;->getResolvedScriptSet(Ljava/lang/CharSequence;Landroid/icu/text/SpoofChecker$ScriptSet;)V
-Landroid/icu/text/SpoofChecker;->getResolvedScriptSetWithout(Ljava/lang/CharSequence;ILandroid/icu/text/SpoofChecker$ScriptSet;)V
-Landroid/icu/text/SpoofChecker;->getRestrictionLevel()Landroid/icu/text/SpoofChecker$RestrictionLevel;
-Landroid/icu/text/SpoofChecker;->getRestrictionLevel(Ljava/lang/String;)Landroid/icu/text/SpoofChecker$RestrictionLevel;
-Landroid/icu/text/SpoofChecker;->getSkeleton(ILjava/lang/String;)Ljava/lang/String;
-Landroid/icu/text/SpoofChecker;->getSkeleton(Ljava/lang/CharSequence;)Ljava/lang/String;
-Landroid/icu/text/SpoofChecker;->INCLUSION:Landroid/icu/text/UnicodeSet;
-Landroid/icu/text/SpoofChecker;->INVISIBLE:I
-Landroid/icu/text/SpoofChecker;->MIXED_NUMBERS:I
-Landroid/icu/text/SpoofChecker;->MIXED_SCRIPT_CONFUSABLE:I
-Landroid/icu/text/SpoofChecker;->nfdNormalizer:Landroid/icu/text/Normalizer2;
-Landroid/icu/text/SpoofChecker;->RECOMMENDED:Landroid/icu/text/UnicodeSet;
-Landroid/icu/text/SpoofChecker;->RESTRICTION_LEVEL:I
-Landroid/icu/text/SpoofChecker;->SINGLE_SCRIPT:I
-Landroid/icu/text/SpoofChecker;->SINGLE_SCRIPT_CONFUSABLE:I
-Landroid/icu/text/SpoofChecker;->WHOLE_SCRIPT_CONFUSABLE:I
-Landroid/icu/text/StringCharacterIterator;-><init>(Ljava/lang/String;)V
-Landroid/icu/text/StringCharacterIterator;-><init>(Ljava/lang/String;I)V
-Landroid/icu/text/StringCharacterIterator;-><init>(Ljava/lang/String;III)V
-Landroid/icu/text/StringCharacterIterator;->begin:I
-Landroid/icu/text/StringCharacterIterator;->end:I
-Landroid/icu/text/StringCharacterIterator;->pos:I
-Landroid/icu/text/StringCharacterIterator;->setText(Ljava/lang/String;)V
-Landroid/icu/text/StringCharacterIterator;->text:Ljava/lang/String;
-Landroid/icu/text/StringMatcher;-><init>(Ljava/lang/String;IIILandroid/icu/text/RuleBasedTransliterator$Data;)V
-Landroid/icu/text/StringMatcher;-><init>(Ljava/lang/String;ILandroid/icu/text/RuleBasedTransliterator$Data;)V
-Landroid/icu/text/StringMatcher;->addReplacementSetTo(Landroid/icu/text/UnicodeSet;)V
-Landroid/icu/text/StringMatcher;->data:Landroid/icu/text/RuleBasedTransliterator$Data;
-Landroid/icu/text/StringMatcher;->matchLimit:I
-Landroid/icu/text/StringMatcher;->matchStart:I
-Landroid/icu/text/StringMatcher;->pattern:Ljava/lang/String;
-Landroid/icu/text/StringMatcher;->replace(Landroid/icu/text/Replaceable;II[I)I
-Landroid/icu/text/StringMatcher;->resetMatch()V
-Landroid/icu/text/StringMatcher;->segmentNumber:I
-Landroid/icu/text/StringMatcher;->toReplacerPattern(Z)Ljava/lang/String;
-Landroid/icu/text/StringPrep$Values;-><init>()V
-Landroid/icu/text/StringPrep$Values;->isIndex:Z
-Landroid/icu/text/StringPrep$Values;->reset()V
-Landroid/icu/text/StringPrep$Values;->type:I
-Landroid/icu/text/StringPrep$Values;->value:I
-Landroid/icu/text/StringPrep;-><init>(Ljava/io/InputStream;)V
-Landroid/icu/text/StringPrep;-><init>(Ljava/nio/ByteBuffer;)V
-Landroid/icu/text/StringPrep;->ALLOW_UNASSIGNED:I
-Landroid/icu/text/StringPrep;->bdp:Landroid/icu/impl/UBiDiProps;
-Landroid/icu/text/StringPrep;->CACHE:[Ljava/lang/ref/WeakReference;
-Landroid/icu/text/StringPrep;->checkBiDi:Z
-Landroid/icu/text/StringPrep;->CHECK_BIDI_ON:I
-Landroid/icu/text/StringPrep;->DEFAULT:I
-Landroid/icu/text/StringPrep;->DELETE:I
-Landroid/icu/text/StringPrep;->doNFKC:Z
-Landroid/icu/text/StringPrep;->FOUR_UCHARS_MAPPING_INDEX_START:I
-Landroid/icu/text/StringPrep;->getCodePointValue(I)C
-Landroid/icu/text/StringPrep;->getInstance(I)Landroid/icu/text/StringPrep;
-Landroid/icu/text/StringPrep;->getValues(CLandroid/icu/text/StringPrep$Values;)V
-Landroid/icu/text/StringPrep;->getVersionInfo(I)Landroid/icu/util/VersionInfo;
-Landroid/icu/text/StringPrep;->getVersionInfo([B)Landroid/icu/util/VersionInfo;
-Landroid/icu/text/StringPrep;->indexes:[I
-Landroid/icu/text/StringPrep;->INDEX_MAPPING_DATA_SIZE:I
-Landroid/icu/text/StringPrep;->INDEX_TOP:I
-Landroid/icu/text/StringPrep;->map(Landroid/icu/text/UCharacterIterator;I)Ljava/lang/StringBuffer;
-Landroid/icu/text/StringPrep;->MAP:I
-Landroid/icu/text/StringPrep;->mappingData:[C
-Landroid/icu/text/StringPrep;->MAX_INDEX_VALUE:I
-Landroid/icu/text/StringPrep;->MAX_PROFILE:I
-Landroid/icu/text/StringPrep;->NORMALIZATION_ON:I
-Landroid/icu/text/StringPrep;->normalize(Ljava/lang/StringBuffer;)Ljava/lang/StringBuffer;
-Landroid/icu/text/StringPrep;->normCorrVer:Landroid/icu/util/VersionInfo;
-Landroid/icu/text/StringPrep;->NORM_CORRECTNS_LAST_UNI_VERSION:I
-Landroid/icu/text/StringPrep;->ONE_UCHAR_MAPPING_INDEX_START:I
-Landroid/icu/text/StringPrep;->OPTIONS:I
-Landroid/icu/text/StringPrep;->prepare(Landroid/icu/text/UCharacterIterator;I)Ljava/lang/StringBuffer;
-Landroid/icu/text/StringPrep;->prepare(Ljava/lang/String;I)Ljava/lang/String;
-Landroid/icu/text/StringPrep;->PROFILE_NAMES:[Ljava/lang/String;
-Landroid/icu/text/StringPrep;->PROHIBITED:I
-Landroid/icu/text/StringPrep;->RFC3491_NAMEPREP:I
-Landroid/icu/text/StringPrep;->RFC3530_NFS4_CIS_PREP:I
-Landroid/icu/text/StringPrep;->RFC3530_NFS4_CS_PREP:I
-Landroid/icu/text/StringPrep;->RFC3530_NFS4_CS_PREP_CI:I
-Landroid/icu/text/StringPrep;->RFC3530_NFS4_MIXED_PREP_PREFIX:I
-Landroid/icu/text/StringPrep;->RFC3530_NFS4_MIXED_PREP_SUFFIX:I
-Landroid/icu/text/StringPrep;->RFC3722_ISCSI:I
-Landroid/icu/text/StringPrep;->RFC3920_NODEPREP:I
-Landroid/icu/text/StringPrep;->RFC3920_RESOURCEPREP:I
-Landroid/icu/text/StringPrep;->RFC4011_MIB:I
-Landroid/icu/text/StringPrep;->RFC4013_SASLPREP:I
-Landroid/icu/text/StringPrep;->RFC4505_TRACE:I
-Landroid/icu/text/StringPrep;->RFC4518_LDAP:I
-Landroid/icu/text/StringPrep;->RFC4518_LDAP_CI:I
-Landroid/icu/text/StringPrep;->sprepTrie:Landroid/icu/impl/CharTrie;
-Landroid/icu/text/StringPrep;->sprepUniVer:Landroid/icu/util/VersionInfo;
-Landroid/icu/text/StringPrep;->THREE_UCHARS_MAPPING_INDEX_START:I
-Landroid/icu/text/StringPrep;->TWO_UCHARS_MAPPING_INDEX_START:I
-Landroid/icu/text/StringPrep;->TYPE_LIMIT:I
-Landroid/icu/text/StringPrep;->TYPE_THRESHOLD:I
-Landroid/icu/text/StringPrep;->UNASSIGNED:I
-Landroid/icu/text/StringPrepParseException;->error:I
-Landroid/icu/text/StringPrepParseException;->line:I
-Landroid/icu/text/StringPrepParseException;->PARSE_CONTEXT_LEN:I
-Landroid/icu/text/StringPrepParseException;->postContext:Ljava/lang/StringBuffer;
-Landroid/icu/text/StringPrepParseException;->preContext:Ljava/lang/StringBuffer;
-Landroid/icu/text/StringPrepParseException;->setContext(Ljava/lang/String;I)V
-Landroid/icu/text/StringPrepParseException;->setPostContext(Ljava/lang/String;I)V
-Landroid/icu/text/StringPrepParseException;->setPostContext([CI)V
-Landroid/icu/text/StringPrepParseException;->setPreContext(Ljava/lang/String;I)V
-Landroid/icu/text/StringPrepParseException;->setPreContext([CI)V
-Landroid/icu/text/StringSearch$CEBuffer;-><init>(Landroid/icu/text/StringSearch;)V
-Landroid/icu/text/StringSearch$CEBuffer;->bufSize_:I
-Landroid/icu/text/StringSearch$CEBuffer;->buf_:[Landroid/icu/text/StringSearch$CEI;
-Landroid/icu/text/StringSearch$CEBuffer;->CEBUFFER_EXTRA:I
-Landroid/icu/text/StringSearch$CEBuffer;->firstIx_:I
-Landroid/icu/text/StringSearch$CEBuffer;->get(I)Landroid/icu/text/StringSearch$CEI;
-Landroid/icu/text/StringSearch$CEBuffer;->getPrevious(I)Landroid/icu/text/StringSearch$CEI;
-Landroid/icu/text/StringSearch$CEBuffer;->limitIx_:I
-Landroid/icu/text/StringSearch$CEBuffer;->MAX_TARGET_IGNORABLES_PER_PAT_JAMO_L:I
-Landroid/icu/text/StringSearch$CEBuffer;->MAX_TARGET_IGNORABLES_PER_PAT_OTHER:I
-Landroid/icu/text/StringSearch$CEBuffer;->MIGHT_BE_JAMO_L(C)Z
-Landroid/icu/text/StringSearch$CEBuffer;->strSearch_:Landroid/icu/text/StringSearch;
-Landroid/icu/text/StringSearch$CEI;-><init>()V
-Landroid/icu/text/StringSearch$CEI;->ce_:J
-Landroid/icu/text/StringSearch$CEI;->highIndex_:I
-Landroid/icu/text/StringSearch$CEI;->lowIndex_:I
-Landroid/icu/text/StringSearch$CollationPCE$PCEBuffer;-><init>()V
-Landroid/icu/text/StringSearch$CollationPCE$PCEBuffer;->bufferIndex_:I
-Landroid/icu/text/StringSearch$CollationPCE$PCEBuffer;->buffer_:[Landroid/icu/text/StringSearch$CollationPCE$PCEI;
-Landroid/icu/text/StringSearch$CollationPCE$PCEBuffer;->empty()Z
-Landroid/icu/text/StringSearch$CollationPCE$PCEBuffer;->get()Landroid/icu/text/StringSearch$CollationPCE$PCEI;
-Landroid/icu/text/StringSearch$CollationPCE$PCEBuffer;->put(JII)V
-Landroid/icu/text/StringSearch$CollationPCE$PCEBuffer;->reset()V
-Landroid/icu/text/StringSearch$CollationPCE$PCEI;-><init>()V
-Landroid/icu/text/StringSearch$CollationPCE$PCEI;->ce_:J
-Landroid/icu/text/StringSearch$CollationPCE$PCEI;->high_:I
-Landroid/icu/text/StringSearch$CollationPCE$PCEI;->low_:I
-Landroid/icu/text/StringSearch$CollationPCE$Range;-><init>()V
-Landroid/icu/text/StringSearch$CollationPCE$Range;->ixHigh_:I
-Landroid/icu/text/StringSearch$CollationPCE$Range;->ixLow_:I
-Landroid/icu/text/StringSearch$CollationPCE$RCEBuffer;-><init>()V
-Landroid/icu/text/StringSearch$CollationPCE$RCEBuffer;->bufferIndex_:I
-Landroid/icu/text/StringSearch$CollationPCE$RCEBuffer;->buffer_:[Landroid/icu/text/StringSearch$CollationPCE$RCEI;
-Landroid/icu/text/StringSearch$CollationPCE$RCEBuffer;->empty()Z
-Landroid/icu/text/StringSearch$CollationPCE$RCEBuffer;->get()Landroid/icu/text/StringSearch$CollationPCE$RCEI;
-Landroid/icu/text/StringSearch$CollationPCE$RCEBuffer;->put(III)V
-Landroid/icu/text/StringSearch$CollationPCE$RCEI;-><init>()V
-Landroid/icu/text/StringSearch$CollationPCE$RCEI;->ce_:I
-Landroid/icu/text/StringSearch$CollationPCE$RCEI;->high_:I
-Landroid/icu/text/StringSearch$CollationPCE$RCEI;->low_:I
-Landroid/icu/text/StringSearch$CollationPCE;-><init>(Landroid/icu/text/CollationElementIterator;)V
-Landroid/icu/text/StringSearch$CollationPCE;->BUFFER_GROW:I
-Landroid/icu/text/StringSearch$CollationPCE;->cei_:Landroid/icu/text/CollationElementIterator;
-Landroid/icu/text/StringSearch$CollationPCE;->CONTINUATION_MARKER:I
-Landroid/icu/text/StringSearch$CollationPCE;->DEFAULT_BUFFER_SIZE:I
-Landroid/icu/text/StringSearch$CollationPCE;->init(Landroid/icu/text/CollationElementIterator;)V
-Landroid/icu/text/StringSearch$CollationPCE;->init(Landroid/icu/text/RuleBasedCollator;)V
-Landroid/icu/text/StringSearch$CollationPCE;->isContinuation(I)Z
-Landroid/icu/text/StringSearch$CollationPCE;->isShifted_:Z
-Landroid/icu/text/StringSearch$CollationPCE;->nextProcessed(Landroid/icu/text/StringSearch$CollationPCE$Range;)J
-Landroid/icu/text/StringSearch$CollationPCE;->pceBuffer_:Landroid/icu/text/StringSearch$CollationPCE$PCEBuffer;
-Landroid/icu/text/StringSearch$CollationPCE;->previousProcessed(Landroid/icu/text/StringSearch$CollationPCE$Range;)J
-Landroid/icu/text/StringSearch$CollationPCE;->PRIMARYORDERMASK:I
-Landroid/icu/text/StringSearch$CollationPCE;->processCE(I)J
-Landroid/icu/text/StringSearch$CollationPCE;->PROCESSED_NULLORDER:J
-Landroid/icu/text/StringSearch$CollationPCE;->strength_:I
-Landroid/icu/text/StringSearch$CollationPCE;->toShift_:Z
-Landroid/icu/text/StringSearch$CollationPCE;->variableTop_:I
-Landroid/icu/text/StringSearch$Match;-><init>()V
-Landroid/icu/text/StringSearch$Match;->limit_:I
-Landroid/icu/text/StringSearch$Match;->start_:I
-Landroid/icu/text/StringSearch$Pattern;-><init>(Ljava/lang/String;)V
-Landroid/icu/text/StringSearch$Pattern;->CELength_:I
-Landroid/icu/text/StringSearch$Pattern;->CE_:[I
-Landroid/icu/text/StringSearch$Pattern;->PCELength_:I
-Landroid/icu/text/StringSearch$Pattern;->PCE_:[J
-Landroid/icu/text/StringSearch$Pattern;->text_:Ljava/lang/String;
-Landroid/icu/text/StringSearch;->addToIntArray([IIII)[I
-Landroid/icu/text/StringSearch;->addToLongArray([JIIJI)[J
-Landroid/icu/text/StringSearch;->ceMask_:I
-Landroid/icu/text/StringSearch;->CE_LEVEL2_BASE:I
-Landroid/icu/text/StringSearch;->CE_LEVEL3_BASE:I
-Landroid/icu/text/StringSearch;->CE_MATCH:I
-Landroid/icu/text/StringSearch;->CE_NO_MATCH:I
-Landroid/icu/text/StringSearch;->CE_SKIP_PATN:I
-Landroid/icu/text/StringSearch;->CE_SKIP_TARG:I
-Landroid/icu/text/StringSearch;->checkIdentical(II)Z
-Landroid/icu/text/StringSearch;->codePointAt(Ljava/text/CharacterIterator;I)I
-Landroid/icu/text/StringSearch;->codePointBefore(Ljava/text/CharacterIterator;I)I
-Landroid/icu/text/StringSearch;->collator_:Landroid/icu/text/RuleBasedCollator;
-Landroid/icu/text/StringSearch;->compareCE64s(JJLandroid/icu/text/SearchIterator$ElementComparisonType;)I
-Landroid/icu/text/StringSearch;->getCE(I)I
-Landroid/icu/text/StringSearch;->getMask(I)I
-Landroid/icu/text/StringSearch;->getString(Ljava/text/CharacterIterator;II)Ljava/lang/String;
-Landroid/icu/text/StringSearch;->handleNextCanonical()Z
-Landroid/icu/text/StringSearch;->handleNextCommonImpl()Z
-Landroid/icu/text/StringSearch;->handleNextExact()Z
-Landroid/icu/text/StringSearch;->handlePreviousCanonical()Z
-Landroid/icu/text/StringSearch;->handlePreviousCommonImpl()Z
-Landroid/icu/text/StringSearch;->handlePreviousExact()Z
-Landroid/icu/text/StringSearch;->initialize()V
-Landroid/icu/text/StringSearch;->initializePattern()I
-Landroid/icu/text/StringSearch;->initializePatternCETable()I
-Landroid/icu/text/StringSearch;->initializePatternPCETable()I
-Landroid/icu/text/StringSearch;->INITIAL_ARRAY_SIZE_:I
-Landroid/icu/text/StringSearch;->initTextProcessedIter()Z
-Landroid/icu/text/StringSearch;->isBreakBoundary(I)Z
-Landroid/icu/text/StringSearch;->isOutOfBounds(III)Z
-Landroid/icu/text/StringSearch;->nextBoundaryAfter(I)I
-Landroid/icu/text/StringSearch;->nfd_:Landroid/icu/text/Normalizer2;
-Landroid/icu/text/StringSearch;->pattern_:Landroid/icu/text/StringSearch$Pattern;
-Landroid/icu/text/StringSearch;->PRIMARYORDERMASK:I
-Landroid/icu/text/StringSearch;->search(ILandroid/icu/text/StringSearch$Match;)Z
-Landroid/icu/text/StringSearch;->searchBackwards(ILandroid/icu/text/StringSearch$Match;)Z
-Landroid/icu/text/StringSearch;->SECONDARYORDERMASK:I
-Landroid/icu/text/StringSearch;->setMatchNotFound()V
-Landroid/icu/text/StringSearch;->strength_:I
-Landroid/icu/text/StringSearch;->TERTIARYORDERMASK:I
-Landroid/icu/text/StringSearch;->textIter_:Landroid/icu/text/CollationElementIterator;
-Landroid/icu/text/StringSearch;->textProcessedIter_:Landroid/icu/text/StringSearch$CollationPCE;
-Landroid/icu/text/StringSearch;->toShift_:Z
-Landroid/icu/text/StringSearch;->utilIter_:Landroid/icu/text/CollationElementIterator;
-Landroid/icu/text/StringSearch;->variableTop_:I
-Landroid/icu/text/StringTransform;->transform(Ljava/lang/String;)Ljava/lang/String;
-Landroid/icu/text/TimeUnitFormat$TimeUnitFormatSetupSink;-><init>(Ljava/util/Map;ILjava/util/Set;Landroid/icu/util/ULocale;)V
-Landroid/icu/text/TimeUnitFormat$TimeUnitFormatSetupSink;->beenHere:Z
-Landroid/icu/text/TimeUnitFormat$TimeUnitFormatSetupSink;->locale:Landroid/icu/util/ULocale;
-Landroid/icu/text/TimeUnitFormat$TimeUnitFormatSetupSink;->pluralKeywords:Ljava/util/Set;
-Landroid/icu/text/TimeUnitFormat$TimeUnitFormatSetupSink;->style:I
-Landroid/icu/text/TimeUnitFormat$TimeUnitFormatSetupSink;->timeUnitToCountToPatterns:Ljava/util/Map;
-Landroid/icu/text/TimeUnitFormat;-><init>()V
-Landroid/icu/text/TimeUnitFormat;-><init>(Landroid/icu/util/ULocale;)V
-Landroid/icu/text/TimeUnitFormat;-><init>(Landroid/icu/util/ULocale;I)V
-Landroid/icu/text/TimeUnitFormat;-><init>(Landroid/icu/util/ULocale;ILandroid/icu/text/NumberFormat;)V
-Landroid/icu/text/TimeUnitFormat;-><init>(Ljava/util/Locale;)V
-Landroid/icu/text/TimeUnitFormat;-><init>(Ljava/util/Locale;I)V
-Landroid/icu/text/TimeUnitFormat;->ABBREVIATED_NAME:I
-Landroid/icu/text/TimeUnitFormat;->DEFAULT_PATTERN_FOR_DAY:Ljava/lang/String;
-Landroid/icu/text/TimeUnitFormat;->DEFAULT_PATTERN_FOR_HOUR:Ljava/lang/String;
-Landroid/icu/text/TimeUnitFormat;->DEFAULT_PATTERN_FOR_MINUTE:Ljava/lang/String;
-Landroid/icu/text/TimeUnitFormat;->DEFAULT_PATTERN_FOR_MONTH:Ljava/lang/String;
-Landroid/icu/text/TimeUnitFormat;->DEFAULT_PATTERN_FOR_SECOND:Ljava/lang/String;
-Landroid/icu/text/TimeUnitFormat;->DEFAULT_PATTERN_FOR_WEEK:Ljava/lang/String;
-Landroid/icu/text/TimeUnitFormat;->DEFAULT_PATTERN_FOR_YEAR:Ljava/lang/String;
-Landroid/icu/text/TimeUnitFormat;->format:Landroid/icu/text/NumberFormat;
-Landroid/icu/text/TimeUnitFormat;->FULL_NAME:I
-Landroid/icu/text/TimeUnitFormat;->isReady:Z
-Landroid/icu/text/TimeUnitFormat;->locale:Landroid/icu/util/ULocale;
-Landroid/icu/text/TimeUnitFormat;->mf:Landroid/icu/text/MeasureFormat;
-Landroid/icu/text/TimeUnitFormat;->pluralRules:Landroid/icu/text/PluralRules;
-Landroid/icu/text/TimeUnitFormat;->searchInTree(Ljava/lang/String;ILandroid/icu/util/TimeUnit;Ljava/lang/String;Ljava/lang/String;Ljava/util/Map;)V
-Landroid/icu/text/TimeUnitFormat;->setLocale(Landroid/icu/util/ULocale;)Landroid/icu/text/TimeUnitFormat;
-Landroid/icu/text/TimeUnitFormat;->setLocale(Ljava/util/Locale;)Landroid/icu/text/TimeUnitFormat;
-Landroid/icu/text/TimeUnitFormat;->setNumberFormat(Landroid/icu/text/NumberFormat;)Landroid/icu/text/TimeUnitFormat;
-Landroid/icu/text/TimeUnitFormat;->setup()V
-Landroid/icu/text/TimeUnitFormat;->setup(Ljava/lang/String;Ljava/util/Map;ILjava/util/Set;)V
-Landroid/icu/text/TimeUnitFormat;->style:I
-Landroid/icu/text/TimeUnitFormat;->timeUnitToCountToPatterns:Ljava/util/Map;
-Landroid/icu/text/TimeUnitFormat;->TOTAL_STYLES:I
-Landroid/icu/text/TimeZoneFormat$GMTOffsetField;-><init>(CI)V
-Landroid/icu/text/TimeZoneFormat$GMTOffsetField;->getType()C
-Landroid/icu/text/TimeZoneFormat$GMTOffsetField;->getWidth()I
-Landroid/icu/text/TimeZoneFormat$GMTOffsetField;->isValid(CI)Z
-Landroid/icu/text/TimeZoneFormat$GMTOffsetField;->_type:C
-Landroid/icu/text/TimeZoneFormat$GMTOffsetField;->_width:I
-Landroid/icu/text/TimeZoneFormat$GMTOffsetPatternType;->defaultPattern()Ljava/lang/String;
-Landroid/icu/text/TimeZoneFormat$GMTOffsetPatternType;->isPositive()Z
-Landroid/icu/text/TimeZoneFormat$GMTOffsetPatternType;->required()Ljava/lang/String;
-Landroid/icu/text/TimeZoneFormat$GMTOffsetPatternType;->_defaultPattern:Ljava/lang/String;
-Landroid/icu/text/TimeZoneFormat$GMTOffsetPatternType;->_isPositive:Z
-Landroid/icu/text/TimeZoneFormat$GMTOffsetPatternType;->_required:Ljava/lang/String;
-Landroid/icu/text/TimeZoneFormat$OffsetFields;->H:Landroid/icu/text/TimeZoneFormat$OffsetFields;
-Landroid/icu/text/TimeZoneFormat$OffsetFields;->HM:Landroid/icu/text/TimeZoneFormat$OffsetFields;
-Landroid/icu/text/TimeZoneFormat$OffsetFields;->HMS:Landroid/icu/text/TimeZoneFormat$OffsetFields;
-Landroid/icu/text/TimeZoneFormat$OffsetFields;->valueOf(Ljava/lang/String;)Landroid/icu/text/TimeZoneFormat$OffsetFields;
-Landroid/icu/text/TimeZoneFormat$OffsetFields;->values()[Landroid/icu/text/TimeZoneFormat$OffsetFields;
-Landroid/icu/text/TimeZoneFormat$Style;->flag:I
-Landroid/icu/text/TimeZoneFormat$TimeZoneFormatCache;-><init>()V
-Landroid/icu/text/TimeZoneFormat$TimeZoneFormatCache;->createInstance(Landroid/icu/util/ULocale;Landroid/icu/util/ULocale;)Landroid/icu/text/TimeZoneFormat;
-Landroid/icu/text/TimeZoneFormat;->ALL_GENERIC_NAME_TYPES:Ljava/util/EnumSet;
-Landroid/icu/text/TimeZoneFormat;->ALL_SIMPLE_NAME_TYPES:Ljava/util/EnumSet;
-Landroid/icu/text/TimeZoneFormat;->ALT_GMT_STRINGS:[Ljava/lang/String;
-Landroid/icu/text/TimeZoneFormat;->appendOffsetDigits(Ljava/lang/StringBuilder;II)V
-Landroid/icu/text/TimeZoneFormat;->ASCII_DIGITS:Ljava/lang/String;
-Landroid/icu/text/TimeZoneFormat;->checkAbuttingHoursAndMinutes()V
-Landroid/icu/text/TimeZoneFormat;->DEFAULT_GMT_DIGITS:[Ljava/lang/String;
-Landroid/icu/text/TimeZoneFormat;->DEFAULT_GMT_OFFSET_SEP:C
-Landroid/icu/text/TimeZoneFormat;->DEFAULT_GMT_PATTERN:Ljava/lang/String;
-Landroid/icu/text/TimeZoneFormat;->DEFAULT_GMT_ZERO:Ljava/lang/String;
-Landroid/icu/text/TimeZoneFormat;->expandOffsetPattern(Ljava/lang/String;)Ljava/lang/String;
-Landroid/icu/text/TimeZoneFormat;->formatExemplarLocation(Landroid/icu/util/TimeZone;)Ljava/lang/String;
-Landroid/icu/text/TimeZoneFormat;->formatOffsetISO8601(IZZZZ)Ljava/lang/String;
-Landroid/icu/text/TimeZoneFormat;->formatOffsetLocalizedGMT(IZ)Ljava/lang/String;
-Landroid/icu/text/TimeZoneFormat;->formatSpecific(Landroid/icu/util/TimeZone;Landroid/icu/text/TimeZoneNames$NameType;Landroid/icu/text/TimeZoneNames$NameType;JLandroid/icu/util/Output;)Ljava/lang/String;
-Landroid/icu/text/TimeZoneFormat;->getTargetRegion()Ljava/lang/String;
-Landroid/icu/text/TimeZoneFormat;->getTimeType(Landroid/icu/text/TimeZoneNames$NameType;)Landroid/icu/text/TimeZoneFormat$TimeType;
-Landroid/icu/text/TimeZoneFormat;->getTimeZoneForOffset(I)Landroid/icu/util/TimeZone;
-Landroid/icu/text/TimeZoneFormat;->getTimeZoneGenericNames()Landroid/icu/impl/TimeZoneGenericNames;
-Landroid/icu/text/TimeZoneFormat;->getTimeZoneID(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
-Landroid/icu/text/TimeZoneFormat;->getTZDBTimeZoneNames()Landroid/icu/text/TimeZoneNames;
-Landroid/icu/text/TimeZoneFormat;->initGMTOffsetPatterns([Ljava/lang/String;)V
-Landroid/icu/text/TimeZoneFormat;->initGMTPattern(Ljava/lang/String;)V
-Landroid/icu/text/TimeZoneFormat;->ISO8601_UTC:Ljava/lang/String;
-Landroid/icu/text/TimeZoneFormat;->ISO_LOCAL_STYLE_FLAG:I
-Landroid/icu/text/TimeZoneFormat;->ISO_Z_STYLE_FLAG:I
-Landroid/icu/text/TimeZoneFormat;->MAX_OFFSET:I
-Landroid/icu/text/TimeZoneFormat;->MAX_OFFSET_HOUR:I
-Landroid/icu/text/TimeZoneFormat;->MAX_OFFSET_MINUTE:I
-Landroid/icu/text/TimeZoneFormat;->MAX_OFFSET_SECOND:I
-Landroid/icu/text/TimeZoneFormat;->MILLIS_PER_HOUR:I
-Landroid/icu/text/TimeZoneFormat;->MILLIS_PER_MINUTE:I
-Landroid/icu/text/TimeZoneFormat;->MILLIS_PER_SECOND:I
-Landroid/icu/text/TimeZoneFormat;->parseAbuttingAsciiOffsetFields(Ljava/lang/String;Ljava/text/ParsePosition;Landroid/icu/text/TimeZoneFormat$OffsetFields;Landroid/icu/text/TimeZoneFormat$OffsetFields;Z)I
-Landroid/icu/text/TimeZoneFormat;->parseAbuttingOffsetFields(Ljava/lang/String;I[I)I
-Landroid/icu/text/TimeZoneFormat;->parseAsciiOffsetFields(Ljava/lang/String;Ljava/text/ParsePosition;CLandroid/icu/text/TimeZoneFormat$OffsetFields;Landroid/icu/text/TimeZoneFormat$OffsetFields;)I
-Landroid/icu/text/TimeZoneFormat;->parseDefaultOffsetFields(Ljava/lang/String;IC[I)I
-Landroid/icu/text/TimeZoneFormat;->parseExemplarLocation(Ljava/lang/String;Ljava/text/ParsePosition;)Ljava/lang/String;
-Landroid/icu/text/TimeZoneFormat;->parseOffsetDefaultLocalizedGMT(Ljava/lang/String;I[I)I
-Landroid/icu/text/TimeZoneFormat;->parseOffsetFields(Ljava/lang/String;IZ[I)I
-Landroid/icu/text/TimeZoneFormat;->parseOffsetFieldsWithPattern(Ljava/lang/String;I[Ljava/lang/Object;Z[I)I
-Landroid/icu/text/TimeZoneFormat;->parseOffsetFieldWithLocalizedDigits(Ljava/lang/String;IIIII[I)I
-Landroid/icu/text/TimeZoneFormat;->parseOffsetISO8601(Ljava/lang/String;Ljava/text/ParsePosition;ZLandroid/icu/util/Output;)I
-Landroid/icu/text/TimeZoneFormat;->parseOffsetLocalizedGMT(Ljava/lang/String;Ljava/text/ParsePosition;ZLandroid/icu/util/Output;)I
-Landroid/icu/text/TimeZoneFormat;->parseOffsetLocalizedGMTPattern(Ljava/lang/String;IZ[I)I
-Landroid/icu/text/TimeZoneFormat;->parseOffsetPattern(Ljava/lang/String;Ljava/lang/String;)[Ljava/lang/Object;
-Landroid/icu/text/TimeZoneFormat;->parseShortZoneID(Ljava/lang/String;Ljava/text/ParsePosition;)Ljava/lang/String;
-Landroid/icu/text/TimeZoneFormat;->parseSingleLocalizedDigit(Ljava/lang/String;I[I)I
-Landroid/icu/text/TimeZoneFormat;->parseZoneID(Ljava/lang/String;Ljava/text/ParsePosition;)Ljava/lang/String;
-Landroid/icu/text/TimeZoneFormat;->PARSE_GMT_OFFSET_TYPES:[Landroid/icu/text/TimeZoneFormat$GMTOffsetPatternType;
-Landroid/icu/text/TimeZoneFormat;->SHORT_ZONE_ID_TRIE:Landroid/icu/impl/TextTrieMap;
-Landroid/icu/text/TimeZoneFormat;->toCodePoints(Ljava/lang/String;)[Ljava/lang/String;
-Landroid/icu/text/TimeZoneFormat;->truncateOffsetPattern(Ljava/lang/String;)Ljava/lang/String;
-Landroid/icu/text/TimeZoneFormat;->TZID_GMT:Ljava/lang/String;
-Landroid/icu/text/TimeZoneFormat;->UNKNOWN_LOCATION:Ljava/lang/String;
-Landroid/icu/text/TimeZoneFormat;->UNKNOWN_OFFSET:I
-Landroid/icu/text/TimeZoneFormat;->UNKNOWN_SHORT_ZONE_ID:Ljava/lang/String;
-Landroid/icu/text/TimeZoneFormat;->UNKNOWN_ZONE_ID:Ljava/lang/String;
-Landroid/icu/text/TimeZoneFormat;->unquote(Ljava/lang/String;)Ljava/lang/String;
-Landroid/icu/text/TimeZoneFormat;->ZONE_ID_TRIE:Landroid/icu/impl/TextTrieMap;
-Landroid/icu/text/TimeZoneFormat;->_abuttingOffsetHoursAndMinutes:Z
-Landroid/icu/text/TimeZoneFormat;->_frozen:Z
-Landroid/icu/text/TimeZoneFormat;->_gmtOffsetDigits:[Ljava/lang/String;
-Landroid/icu/text/TimeZoneFormat;->_gmtOffsetPatternItems:[[Ljava/lang/Object;
-Landroid/icu/text/TimeZoneFormat;->_gmtOffsetPatterns:[Ljava/lang/String;
-Landroid/icu/text/TimeZoneFormat;->_gmtPattern:Ljava/lang/String;
-Landroid/icu/text/TimeZoneFormat;->_gmtPatternPrefix:Ljava/lang/String;
-Landroid/icu/text/TimeZoneFormat;->_gmtPatternSuffix:Ljava/lang/String;
-Landroid/icu/text/TimeZoneFormat;->_gmtZeroFormat:Ljava/lang/String;
-Landroid/icu/text/TimeZoneFormat;->_gnames:Landroid/icu/impl/TimeZoneGenericNames;
-Landroid/icu/text/TimeZoneFormat;->_locale:Landroid/icu/util/ULocale;
-Landroid/icu/text/TimeZoneFormat;->_parseAllStyles:Z
-Landroid/icu/text/TimeZoneFormat;->_parseTZDBNames:Z
-Landroid/icu/text/TimeZoneFormat;->_region:Ljava/lang/String;
-Landroid/icu/text/TimeZoneFormat;->_tzdbNames:Landroid/icu/text/TimeZoneNames;
-Landroid/icu/text/TimeZoneFormat;->_tzfCache:Landroid/icu/text/TimeZoneFormat$TimeZoneFormatCache;
-Landroid/icu/text/TimeZoneFormat;->_tznames:Landroid/icu/text/TimeZoneNames;
-Landroid/icu/text/TimeZoneNames$Cache;-><init>()V
-Landroid/icu/text/TimeZoneNames$Cache;->createInstance(Ljava/lang/String;Landroid/icu/util/ULocale;)Landroid/icu/text/TimeZoneNames;
-Landroid/icu/text/TimeZoneNames$DefaultTimeZoneNames$FactoryImpl;->getTimeZoneNames(Landroid/icu/util/ULocale;)Landroid/icu/text/TimeZoneNames;
-Landroid/icu/text/TimeZoneNames$DefaultTimeZoneNames;-><init>()V
-Landroid/icu/text/TimeZoneNames$DefaultTimeZoneNames;->find(Ljava/lang/CharSequence;ILjava/util/EnumSet;)Ljava/util/Collection;
-Landroid/icu/text/TimeZoneNames$DefaultTimeZoneNames;->INSTANCE:Landroid/icu/text/TimeZoneNames$DefaultTimeZoneNames;
-Landroid/icu/text/TimeZoneNames$Factory;-><init>()V
-Landroid/icu/text/TimeZoneNames$Factory;->getTimeZoneNames(Landroid/icu/util/ULocale;)Landroid/icu/text/TimeZoneNames;
-Landroid/icu/text/TimeZoneNames$MatchInfo;-><init>(Landroid/icu/text/TimeZoneNames$NameType;Ljava/lang/String;Ljava/lang/String;I)V
-Landroid/icu/text/TimeZoneNames$MatchInfo;->matchLength()I
-Landroid/icu/text/TimeZoneNames$MatchInfo;->mzID()Ljava/lang/String;
-Landroid/icu/text/TimeZoneNames$MatchInfo;->nameType()Landroid/icu/text/TimeZoneNames$NameType;
-Landroid/icu/text/TimeZoneNames$MatchInfo;->tzID()Ljava/lang/String;
-Landroid/icu/text/TimeZoneNames$MatchInfo;->_matchLength:I
-Landroid/icu/text/TimeZoneNames$MatchInfo;->_mzID:Ljava/lang/String;
-Landroid/icu/text/TimeZoneNames$MatchInfo;->_nameType:Landroid/icu/text/TimeZoneNames$NameType;
-Landroid/icu/text/TimeZoneNames$MatchInfo;->_tzID:Ljava/lang/String;
-Landroid/icu/text/TimeZoneNames;-><init>()V
-Landroid/icu/text/TimeZoneNames;->DEFAULT_FACTORY_CLASS:Ljava/lang/String;
-Landroid/icu/text/TimeZoneNames;->FACTORY_NAME_PROP:Ljava/lang/String;
-Landroid/icu/text/TimeZoneNames;->find(Ljava/lang/CharSequence;ILjava/util/EnumSet;)Ljava/util/Collection;
-Landroid/icu/text/TimeZoneNames;->getDisplayNames(Ljava/lang/String;[Landroid/icu/text/TimeZoneNames$NameType;J[Ljava/lang/String;I)V
-Landroid/icu/text/TimeZoneNames;->loadAllDisplayNames()V
-Landroid/icu/text/TimeZoneNames;->TZNAMES_CACHE:Landroid/icu/text/TimeZoneNames$Cache;
-Landroid/icu/text/TimeZoneNames;->TZNAMES_FACTORY:Landroid/icu/text/TimeZoneNames$Factory;
-Landroid/icu/text/Transform;->transform(Ljava/lang/Object;)Ljava/lang/Object;
-Landroid/icu/text/TransliterationRule;-><init>(Ljava/lang/String;IILjava/lang/String;II[Landroid/icu/text/UnicodeMatcher;ZZLandroid/icu/text/RuleBasedTransliterator$Data;)V
-Landroid/icu/text/TransliterationRule;->addSourceTargetSet(Landroid/icu/text/UnicodeSet;Landroid/icu/text/UnicodeSet;Landroid/icu/text/UnicodeSet;Landroid/icu/text/UnicodeSet;)V
-Landroid/icu/text/TransliterationRule;->ANCHOR_END:I
-Landroid/icu/text/TransliterationRule;->ANCHOR_START:I
-Landroid/icu/text/TransliterationRule;->anteContext:Landroid/icu/text/StringMatcher;
-Landroid/icu/text/TransliterationRule;->anteContextLength:I
-Landroid/icu/text/TransliterationRule;->data:Landroid/icu/text/RuleBasedTransliterator$Data;
-Landroid/icu/text/TransliterationRule;->flags:B
-Landroid/icu/text/TransliterationRule;->getAnteContextLength()I
-Landroid/icu/text/TransliterationRule;->getIndexValue()I
-Landroid/icu/text/TransliterationRule;->key:Landroid/icu/text/StringMatcher;
-Landroid/icu/text/TransliterationRule;->keyLength:I
-Landroid/icu/text/TransliterationRule;->masks(Landroid/icu/text/TransliterationRule;)Z
-Landroid/icu/text/TransliterationRule;->matchAndReplace(Landroid/icu/text/Replaceable;Landroid/icu/text/Transliterator$Position;Z)I
-Landroid/icu/text/TransliterationRule;->matchesIndexValue(I)Z
-Landroid/icu/text/TransliterationRule;->output:Landroid/icu/text/UnicodeReplacer;
-Landroid/icu/text/TransliterationRule;->pattern:Ljava/lang/String;
-Landroid/icu/text/TransliterationRule;->posAfter(Landroid/icu/text/Replaceable;I)I
-Landroid/icu/text/TransliterationRule;->posBefore(Landroid/icu/text/Replaceable;I)I
-Landroid/icu/text/TransliterationRule;->postContext:Landroid/icu/text/StringMatcher;
-Landroid/icu/text/TransliterationRule;->segments:[Landroid/icu/text/UnicodeMatcher;
-Landroid/icu/text/TransliterationRule;->toRule(Z)Ljava/lang/String;
-Landroid/icu/text/TransliterationRuleSet;-><init>()V
-Landroid/icu/text/TransliterationRuleSet;->addRule(Landroid/icu/text/TransliterationRule;)V
-Landroid/icu/text/TransliterationRuleSet;->addSourceTargetSet(Landroid/icu/text/UnicodeSet;Landroid/icu/text/UnicodeSet;Landroid/icu/text/UnicodeSet;)V
-Landroid/icu/text/TransliterationRuleSet;->freeze()V
-Landroid/icu/text/TransliterationRuleSet;->getMaximumContextLength()I
-Landroid/icu/text/TransliterationRuleSet;->index:[I
-Landroid/icu/text/TransliterationRuleSet;->maxContextLength:I
-Landroid/icu/text/TransliterationRuleSet;->rules:[Landroid/icu/text/TransliterationRule;
-Landroid/icu/text/TransliterationRuleSet;->ruleVector:Ljava/util/List;
-Landroid/icu/text/TransliterationRuleSet;->toRules(Z)Ljava/lang/String;
-Landroid/icu/text/TransliterationRuleSet;->transliterate(Landroid/icu/text/Replaceable;Landroid/icu/text/Transliterator$Position;Z)Z
-Landroid/icu/text/Transliterator$Factory;->getInstance(Ljava/lang/String;)Landroid/icu/text/Transliterator;
-Landroid/icu/text/Transliterator$Position;-><init>()V
-Landroid/icu/text/Transliterator$Position;-><init>(III)V
-Landroid/icu/text/Transliterator$Position;-><init>(IIII)V
-Landroid/icu/text/Transliterator$Position;-><init>(Landroid/icu/text/Transliterator$Position;)V
-Landroid/icu/text/Transliterator$Position;->contextLimit:I
-Landroid/icu/text/Transliterator$Position;->contextStart:I
-Landroid/icu/text/Transliterator$Position;->limit:I
-Landroid/icu/text/Transliterator$Position;->set(Landroid/icu/text/Transliterator$Position;)V
-Landroid/icu/text/Transliterator$Position;->start:I
-Landroid/icu/text/Transliterator$Position;->validate(I)V
-Landroid/icu/text/Transliterator;-><init>(Ljava/lang/String;Landroid/icu/text/UnicodeFilter;)V
-Landroid/icu/text/Transliterator;->addSourceTargetSet(Landroid/icu/text/UnicodeSet;Landroid/icu/text/UnicodeSet;Landroid/icu/text/UnicodeSet;)V
-Landroid/icu/text/Transliterator;->baseToRules(Z)Ljava/lang/String;
-Landroid/icu/text/Transliterator;->DEBUG:Z
-Landroid/icu/text/Transliterator;->displayNameCache:Ljava/util/Map;
-Landroid/icu/text/Transliterator;->filter:Landroid/icu/text/UnicodeSet;
-Landroid/icu/text/Transliterator;->filteredTransliterate(Landroid/icu/text/Replaceable;Landroid/icu/text/Transliterator$Position;Z)V
-Landroid/icu/text/Transliterator;->filteredTransliterate(Landroid/icu/text/Replaceable;Landroid/icu/text/Transliterator$Position;ZZ)V
-Landroid/icu/text/Transliterator;->finishTransliteration(Landroid/icu/text/Replaceable;Landroid/icu/text/Transliterator$Position;)V
-Landroid/icu/text/Transliterator;->FORWARD:I
-Landroid/icu/text/Transliterator;->getAvailableIDs()Ljava/util/Enumeration;
-Landroid/icu/text/Transliterator;->getAvailableSources()Ljava/util/Enumeration;
-Landroid/icu/text/Transliterator;->getAvailableTargets(Ljava/lang/String;)Ljava/util/Enumeration;
-Landroid/icu/text/Transliterator;->getAvailableVariants(Ljava/lang/String;Ljava/lang/String;)Ljava/util/Enumeration;
-Landroid/icu/text/Transliterator;->getBasicInstance(Ljava/lang/String;Ljava/lang/String;)Landroid/icu/text/Transliterator;
-Landroid/icu/text/Transliterator;->getDisplayName(Ljava/lang/String;)Ljava/lang/String;
-Landroid/icu/text/Transliterator;->getDisplayName(Ljava/lang/String;Landroid/icu/util/ULocale;)Ljava/lang/String;
-Landroid/icu/text/Transliterator;->getDisplayName(Ljava/lang/String;Ljava/util/Locale;)Ljava/lang/String;
-Landroid/icu/text/Transliterator;->getElements()[Landroid/icu/text/Transliterator;
-Landroid/icu/text/Transliterator;->getFilter()Landroid/icu/text/UnicodeFilter;
-Landroid/icu/text/Transliterator;->getFilterAsUnicodeSet(Landroid/icu/text/UnicodeSet;)Landroid/icu/text/UnicodeSet;
-Landroid/icu/text/Transliterator;->getID()Ljava/lang/String;
-Landroid/icu/text/Transliterator;->getInverse()Landroid/icu/text/Transliterator;
-Landroid/icu/text/Transliterator;->getMaximumContextLength()I
-Landroid/icu/text/Transliterator;->getSourceSet()Landroid/icu/text/UnicodeSet;
-Landroid/icu/text/Transliterator;->getTargetSet()Landroid/icu/text/UnicodeSet;
-Landroid/icu/text/Transliterator;->handleGetSourceSet()Landroid/icu/text/UnicodeSet;
-Landroid/icu/text/Transliterator;->handleTransliterate(Landroid/icu/text/Replaceable;Landroid/icu/text/Transliterator$Position;Z)V
-Landroid/icu/text/Transliterator;->ID:Ljava/lang/String;
-Landroid/icu/text/Transliterator;->ID_DELIM:C
-Landroid/icu/text/Transliterator;->ID_SEP:C
-Landroid/icu/text/Transliterator;->maximumContextLength:I
-Landroid/icu/text/Transliterator;->RB_DISPLAY_NAME_PATTERN:Ljava/lang/String;
-Landroid/icu/text/Transliterator;->RB_DISPLAY_NAME_PREFIX:Ljava/lang/String;
-Landroid/icu/text/Transliterator;->RB_RULE_BASED_IDS:Ljava/lang/String;
-Landroid/icu/text/Transliterator;->RB_SCRIPT_DISPLAY_NAME_PREFIX:Ljava/lang/String;
-Landroid/icu/text/Transliterator;->registerAlias(Ljava/lang/String;Ljava/lang/String;)V
-Landroid/icu/text/Transliterator;->registerAny()V
-Landroid/icu/text/Transliterator;->registerClass(Ljava/lang/String;Ljava/lang/Class;Ljava/lang/String;)V
-Landroid/icu/text/Transliterator;->registerFactory(Ljava/lang/String;Landroid/icu/text/Transliterator$Factory;)V
-Landroid/icu/text/Transliterator;->registerInstance(Landroid/icu/text/Transliterator;)V
-Landroid/icu/text/Transliterator;->registerInstance(Landroid/icu/text/Transliterator;Z)V
-Landroid/icu/text/Transliterator;->registerSpecialInverse(Ljava/lang/String;Ljava/lang/String;Z)V
-Landroid/icu/text/Transliterator;->registry:Landroid/icu/text/TransliteratorRegistry;
-Landroid/icu/text/Transliterator;->REVERSE:I
-Landroid/icu/text/Transliterator;->ROOT:Ljava/lang/String;
-Landroid/icu/text/Transliterator;->setFilter(Landroid/icu/text/UnicodeFilter;)V
-Landroid/icu/text/Transliterator;->setID(Ljava/lang/String;)V
-Landroid/icu/text/Transliterator;->setMaximumContextLength(I)V
-Landroid/icu/text/Transliterator;->toRules(Z)Ljava/lang/String;
-Landroid/icu/text/Transliterator;->transform(Ljava/lang/String;)Ljava/lang/String;
-Landroid/icu/text/Transliterator;->transliterate(Landroid/icu/text/Replaceable;)V
-Landroid/icu/text/Transliterator;->transliterate(Landroid/icu/text/Replaceable;II)I
-Landroid/icu/text/Transliterator;->transliterate(Landroid/icu/text/Replaceable;Landroid/icu/text/Transliterator$Position;)V
-Landroid/icu/text/Transliterator;->transliterate(Landroid/icu/text/Replaceable;Landroid/icu/text/Transliterator$Position;I)V
-Landroid/icu/text/Transliterator;->unregister(Ljava/lang/String;)V
-Landroid/icu/text/Transliterator;->VARIANT_SEP:C
-Landroid/icu/text/TransliteratorRegistry$AliasEntry;-><init>(Ljava/lang/String;)V
-Landroid/icu/text/TransliteratorRegistry$AliasEntry;->alias:Ljava/lang/String;
-Landroid/icu/text/TransliteratorRegistry$CompoundRBTEntry;-><init>(Ljava/lang/String;Ljava/util/List;Ljava/util/List;Landroid/icu/text/UnicodeSet;)V
-Landroid/icu/text/TransliteratorRegistry$CompoundRBTEntry;->compoundFilter:Landroid/icu/text/UnicodeSet;
-Landroid/icu/text/TransliteratorRegistry$CompoundRBTEntry;->dataVector:Ljava/util/List;
-Landroid/icu/text/TransliteratorRegistry$CompoundRBTEntry;->getInstance()Landroid/icu/text/Transliterator;
-Landroid/icu/text/TransliteratorRegistry$CompoundRBTEntry;->ID:Ljava/lang/String;
-Landroid/icu/text/TransliteratorRegistry$CompoundRBTEntry;->idBlockVector:Ljava/util/List;
-Landroid/icu/text/TransliteratorRegistry$IDEnumeration;-><init>(Ljava/util/Enumeration;)V
-Landroid/icu/text/TransliteratorRegistry$IDEnumeration;->en:Ljava/util/Enumeration;
-Landroid/icu/text/TransliteratorRegistry$LocaleEntry;-><init>(Ljava/lang/String;I)V
-Landroid/icu/text/TransliteratorRegistry$LocaleEntry;->direction:I
-Landroid/icu/text/TransliteratorRegistry$LocaleEntry;->rule:Ljava/lang/String;
-Landroid/icu/text/TransliteratorRegistry$ResourceEntry;-><init>(Ljava/lang/String;I)V
-Landroid/icu/text/TransliteratorRegistry$ResourceEntry;->direction:I
-Landroid/icu/text/TransliteratorRegistry$ResourceEntry;->resource:Ljava/lang/String;
-Landroid/icu/text/TransliteratorRegistry$Spec;-><init>(Ljava/lang/String;)V
-Landroid/icu/text/TransliteratorRegistry$Spec;->get()Ljava/lang/String;
-Landroid/icu/text/TransliteratorRegistry$Spec;->getBundle()Ljava/util/ResourceBundle;
-Landroid/icu/text/TransliteratorRegistry$Spec;->getTop()Ljava/lang/String;
-Landroid/icu/text/TransliteratorRegistry$Spec;->hasFallback()Z
-Landroid/icu/text/TransliteratorRegistry$Spec;->isLocale()Z
-Landroid/icu/text/TransliteratorRegistry$Spec;->isNextLocale:Z
-Landroid/icu/text/TransliteratorRegistry$Spec;->isSpecLocale:Z
-Landroid/icu/text/TransliteratorRegistry$Spec;->next()Ljava/lang/String;
-Landroid/icu/text/TransliteratorRegistry$Spec;->nextSpec:Ljava/lang/String;
-Landroid/icu/text/TransliteratorRegistry$Spec;->res:Landroid/icu/impl/ICUResourceBundle;
-Landroid/icu/text/TransliteratorRegistry$Spec;->reset()V
-Landroid/icu/text/TransliteratorRegistry$Spec;->scriptName:Ljava/lang/String;
-Landroid/icu/text/TransliteratorRegistry$Spec;->setupNext()V
-Landroid/icu/text/TransliteratorRegistry$Spec;->spec:Ljava/lang/String;
-Landroid/icu/text/TransliteratorRegistry$Spec;->top:Ljava/lang/String;
-Landroid/icu/text/TransliteratorRegistry;-><init>()V
-Landroid/icu/text/TransliteratorRegistry;->ANY:Ljava/lang/String;
-Landroid/icu/text/TransliteratorRegistry;->availableIDs:Ljava/util/List;
-Landroid/icu/text/TransliteratorRegistry;->DEBUG:Z
-Landroid/icu/text/TransliteratorRegistry;->find(Ljava/lang/String;)[Ljava/lang/Object;
-Landroid/icu/text/TransliteratorRegistry;->find(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)[Ljava/lang/Object;
-Landroid/icu/text/TransliteratorRegistry;->findInBundle(Landroid/icu/text/TransliteratorRegistry$Spec;Landroid/icu/text/TransliteratorRegistry$Spec;Ljava/lang/String;I)[Ljava/lang/Object;
-Landroid/icu/text/TransliteratorRegistry;->findInDynamicStore(Landroid/icu/text/TransliteratorRegistry$Spec;Landroid/icu/text/TransliteratorRegistry$Spec;Ljava/lang/String;)[Ljava/lang/Object;
-Landroid/icu/text/TransliteratorRegistry;->findInStaticStore(Landroid/icu/text/TransliteratorRegistry$Spec;Landroid/icu/text/TransliteratorRegistry$Spec;Ljava/lang/String;)[Ljava/lang/Object;
-Landroid/icu/text/TransliteratorRegistry;->get(Ljava/lang/String;Ljava/lang/StringBuffer;)Landroid/icu/text/Transliterator;
-Landroid/icu/text/TransliteratorRegistry;->getAvailableIDs()Ljava/util/Enumeration;
-Landroid/icu/text/TransliteratorRegistry;->getAvailableSources()Ljava/util/Enumeration;
-Landroid/icu/text/TransliteratorRegistry;->getAvailableTargets(Ljava/lang/String;)Ljava/util/Enumeration;
-Landroid/icu/text/TransliteratorRegistry;->getAvailableVariants(Ljava/lang/String;Ljava/lang/String;)Ljava/util/Enumeration;
-Landroid/icu/text/TransliteratorRegistry;->instantiateEntry(Ljava/lang/String;[Ljava/lang/Object;Ljava/lang/StringBuffer;)Landroid/icu/text/Transliterator;
-Landroid/icu/text/TransliteratorRegistry;->LOCALE_SEP:C
-Landroid/icu/text/TransliteratorRegistry;->NO_VARIANT:Ljava/lang/String;
-Landroid/icu/text/TransliteratorRegistry;->put(Ljava/lang/String;Landroid/icu/text/Transliterator$Factory;Z)V
-Landroid/icu/text/TransliteratorRegistry;->put(Ljava/lang/String;Landroid/icu/text/Transliterator;Z)V
-Landroid/icu/text/TransliteratorRegistry;->put(Ljava/lang/String;Ljava/lang/Class;Z)V
-Landroid/icu/text/TransliteratorRegistry;->put(Ljava/lang/String;Ljava/lang/String;IZ)V
-Landroid/icu/text/TransliteratorRegistry;->put(Ljava/lang/String;Ljava/lang/String;Z)V
-Landroid/icu/text/TransliteratorRegistry;->registerEntry(Ljava/lang/String;Ljava/lang/Object;Z)V
-Landroid/icu/text/TransliteratorRegistry;->registerEntry(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/Object;Z)V
-Landroid/icu/text/TransliteratorRegistry;->registerEntry(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/Object;Z)V
-Landroid/icu/text/TransliteratorRegistry;->registerSTV(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
-Landroid/icu/text/TransliteratorRegistry;->registry:Ljava/util/Map;
-Landroid/icu/text/TransliteratorRegistry;->remove(Ljava/lang/String;)V
-Landroid/icu/text/TransliteratorRegistry;->removeSTV(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
-Landroid/icu/text/TransliteratorRegistry;->specDAG:Ljava/util/Map;
-Landroid/icu/text/UFieldPosition;-><init>()V
-Landroid/icu/text/UFieldPosition;-><init>(I)V
-Landroid/icu/text/UFieldPosition;-><init>(Ljava/text/Format$Field;)V
-Landroid/icu/text/UFieldPosition;-><init>(Ljava/text/Format$Field;I)V
-Landroid/icu/text/UFieldPosition;->countVisibleFractionDigits:I
-Landroid/icu/text/UFieldPosition;->fractionDigits:J
-Landroid/icu/text/UFieldPosition;->getCountVisibleFractionDigits()I
-Landroid/icu/text/UFieldPosition;->getFractionDigits()J
-Landroid/icu/text/UFieldPosition;->setFractionDigits(IJ)V
-Landroid/icu/text/UFormat;->actualLocale:Landroid/icu/util/ULocale;
-Landroid/icu/text/UFormat;->setLocale(Landroid/icu/util/ULocale;Landroid/icu/util/ULocale;)V
-Landroid/icu/text/UFormat;->validLocale:Landroid/icu/util/ULocale;
-Landroid/icu/text/UForwardCharacterIterator;->next()I
-Landroid/icu/text/UForwardCharacterIterator;->nextCodePoint()I
-Landroid/icu/text/UnhandledBreakEngine;-><init>()V
-Landroid/icu/text/UnhandledBreakEngine;->fHandled:Ljava/util/concurrent/atomic/AtomicReferenceArray;
-Landroid/icu/text/UnhandledBreakEngine;->findBreaks(Ljava/text/CharacterIterator;IIILandroid/icu/text/DictionaryBreakEngine$DequeI;)I
-Landroid/icu/text/UnhandledBreakEngine;->handleChar(II)V
-Landroid/icu/text/UnhandledBreakEngine;->handles(II)Z
-Landroid/icu/text/UnicodeCompressor;-><init>()V
-Landroid/icu/text/UnicodeCompressor;->compress(Ljava/lang/String;)[B
-Landroid/icu/text/UnicodeCompressor;->compress([CII)[B
-Landroid/icu/text/UnicodeCompressor;->compress([CII[I[BII)I
-Landroid/icu/text/UnicodeCompressor;->fCurrentWindow:I
-Landroid/icu/text/UnicodeCompressor;->findDynamicWindow(I)I
-Landroid/icu/text/UnicodeCompressor;->fIndexCount:[I
-Landroid/icu/text/UnicodeCompressor;->findStaticWindow(I)I
-Landroid/icu/text/UnicodeCompressor;->fMode:I
-Landroid/icu/text/UnicodeCompressor;->fOffsets:[I
-Landroid/icu/text/UnicodeCompressor;->fTimeStamp:I
-Landroid/icu/text/UnicodeCompressor;->fTimeStamps:[I
-Landroid/icu/text/UnicodeCompressor;->getLRDefinedWindow()I
-Landroid/icu/text/UnicodeCompressor;->inDynamicWindow(II)Z
-Landroid/icu/text/UnicodeCompressor;->inStaticWindow(II)Z
-Landroid/icu/text/UnicodeCompressor;->isCompressible(I)Z
-Landroid/icu/text/UnicodeCompressor;->makeIndex(I)I
-Landroid/icu/text/UnicodeCompressor;->reset()V
-Landroid/icu/text/UnicodeCompressor;->sSingleTagTable:[Z
-Landroid/icu/text/UnicodeCompressor;->sUnicodeTagTable:[Z
-Landroid/icu/text/UnicodeDecompressor;-><init>()V
-Landroid/icu/text/UnicodeDecompressor;->BUFSIZE:I
-Landroid/icu/text/UnicodeDecompressor;->decompress([B)Ljava/lang/String;
-Landroid/icu/text/UnicodeDecompressor;->decompress([BII)[C
-Landroid/icu/text/UnicodeDecompressor;->decompress([BII[I[CII)I
-Landroid/icu/text/UnicodeDecompressor;->fBuffer:[B
-Landroid/icu/text/UnicodeDecompressor;->fBufferLength:I
-Landroid/icu/text/UnicodeDecompressor;->fCurrentWindow:I
-Landroid/icu/text/UnicodeDecompressor;->fMode:I
-Landroid/icu/text/UnicodeDecompressor;->fOffsets:[I
-Landroid/icu/text/UnicodeDecompressor;->reset()V
-Landroid/icu/text/UnicodeFilter;-><init>()V
-Landroid/icu/text/UnicodeReplacer;->addReplacementSetTo(Landroid/icu/text/UnicodeSet;)V
-Landroid/icu/text/UnicodeReplacer;->replace(Landroid/icu/text/Replaceable;II[I)I
-Landroid/icu/text/UnicodeReplacer;->toReplacerPattern(Z)Ljava/lang/String;
-Landroid/icu/text/UnicodeSet$EntryRange;-><init>()V
-Landroid/icu/text/UnicodeSet$EntryRangeIterator;->pos:I
-Landroid/icu/text/UnicodeSet$EntryRangeIterator;->result:Landroid/icu/text/UnicodeSet$EntryRange;
-Landroid/icu/text/UnicodeSet$Filter;->contains(I)Z
-Landroid/icu/text/UnicodeSet$GeneralCategoryMaskFilter;-><init>(I)V
-Landroid/icu/text/UnicodeSet$GeneralCategoryMaskFilter;->contains(I)Z
-Landroid/icu/text/UnicodeSet$GeneralCategoryMaskFilter;->mask:I
-Landroid/icu/text/UnicodeSet$IntPropertyFilter;-><init>(II)V
-Landroid/icu/text/UnicodeSet$IntPropertyFilter;->contains(I)Z
-Landroid/icu/text/UnicodeSet$IntPropertyFilter;->prop:I
-Landroid/icu/text/UnicodeSet$IntPropertyFilter;->value:I
-Landroid/icu/text/UnicodeSet$NumericValueFilter;-><init>(D)V
-Landroid/icu/text/UnicodeSet$NumericValueFilter;->contains(I)Z
-Landroid/icu/text/UnicodeSet$NumericValueFilter;->value:D
-Landroid/icu/text/UnicodeSet$ScriptExtensionsFilter;-><init>(I)V
-Landroid/icu/text/UnicodeSet$ScriptExtensionsFilter;->contains(I)Z
-Landroid/icu/text/UnicodeSet$ScriptExtensionsFilter;->script:I
-Landroid/icu/text/UnicodeSet$UnicodeSetIterator2;-><init>(Landroid/icu/text/UnicodeSet;)V
-Landroid/icu/text/UnicodeSet$UnicodeSetIterator2;->buffer:[C
-Landroid/icu/text/UnicodeSet$UnicodeSetIterator2;->current:I
-Landroid/icu/text/UnicodeSet$UnicodeSetIterator2;->item:I
-Landroid/icu/text/UnicodeSet$UnicodeSetIterator2;->len:I
-Landroid/icu/text/UnicodeSet$UnicodeSetIterator2;->limit:I
-Landroid/icu/text/UnicodeSet$UnicodeSetIterator2;->sourceList:[I
-Landroid/icu/text/UnicodeSet$UnicodeSetIterator2;->sourceStrings:Ljava/util/TreeSet;
-Landroid/icu/text/UnicodeSet$UnicodeSetIterator2;->stringIterator:Ljava/util/Iterator;
-Landroid/icu/text/UnicodeSet$VersionFilter;-><init>(Landroid/icu/util/VersionInfo;)V
-Landroid/icu/text/UnicodeSet$VersionFilter;->contains(I)Z
-Landroid/icu/text/UnicodeSet$VersionFilter;->version:Landroid/icu/util/VersionInfo;
-Landroid/icu/text/UnicodeSet$XSymbolTable;-><init>()V
-Landroid/icu/text/UnicodeSet$XSymbolTable;->applyPropertyAlias(Ljava/lang/String;Ljava/lang/String;Landroid/icu/text/UnicodeSet;)Z
-Landroid/icu/text/UnicodeSet;->add([III)Landroid/icu/text/UnicodeSet;
-Landroid/icu/text/UnicodeSet;->addAllTo(Ljava/lang/Iterable;Ljava/util/Collection;)Ljava/util/Collection;
-Landroid/icu/text/UnicodeSet;->addAllTo(Ljava/lang/Iterable;[Ljava/lang/Object;)[Ljava/lang/Object;
-Landroid/icu/text/UnicodeSet;->addAllTo([Ljava/lang/String;)[Ljava/lang/String;
-Landroid/icu/text/UnicodeSet;->addBridges(Landroid/icu/text/UnicodeSet;)Landroid/icu/text/UnicodeSet;
-Landroid/icu/text/UnicodeSet;->addCaseMapping(Landroid/icu/text/UnicodeSet;ILjava/lang/StringBuilder;)V
-Landroid/icu/text/UnicodeSet;->add_unchecked(I)Landroid/icu/text/UnicodeSet;
-Landroid/icu/text/UnicodeSet;->add_unchecked(II)Landroid/icu/text/UnicodeSet;
-Landroid/icu/text/UnicodeSet;->ANY_ID:Ljava/lang/String;
-Landroid/icu/text/UnicodeSet;->append(Ljava/lang/Appendable;Ljava/lang/CharSequence;)V
-Landroid/icu/text/UnicodeSet;->appendCodePoint(Ljava/lang/Appendable;I)V
-Landroid/icu/text/UnicodeSet;->appendNewPattern(Ljava/lang/Appendable;ZZ)Ljava/lang/Appendable;
-Landroid/icu/text/UnicodeSet;->applyFilter(Landroid/icu/text/UnicodeSet$Filter;I)Landroid/icu/text/UnicodeSet;
-Landroid/icu/text/UnicodeSet;->applyPattern(Landroid/icu/impl/RuleCharacterIterator;Landroid/icu/text/SymbolTable;Ljava/lang/Appendable;I)V
-Landroid/icu/text/UnicodeSet;->applyPattern(Ljava/lang/String;Ljava/text/ParsePosition;Landroid/icu/text/SymbolTable;I)Landroid/icu/text/UnicodeSet;
-Landroid/icu/text/UnicodeSet;->applyPropertyPattern(Landroid/icu/impl/RuleCharacterIterator;Ljava/lang/Appendable;Landroid/icu/text/SymbolTable;)V
-Landroid/icu/text/UnicodeSet;->applyPropertyPattern(Ljava/lang/String;Ljava/text/ParsePosition;Landroid/icu/text/SymbolTable;)Landroid/icu/text/UnicodeSet;
-Landroid/icu/text/UnicodeSet;->ASCII_ID:Ljava/lang/String;
-Landroid/icu/text/UnicodeSet;->ASSIGNED:Ljava/lang/String;
-Landroid/icu/text/UnicodeSet;->bmpSet:Landroid/icu/impl/BMPSet;
-Landroid/icu/text/UnicodeSet;->buffer:[I
-Landroid/icu/text/UnicodeSet;->checkFrozen()V
-Landroid/icu/text/UnicodeSet;->compare(ILjava/lang/CharSequence;)I
-Landroid/icu/text/UnicodeSet;->compare(Ljava/lang/CharSequence;I)I
-Landroid/icu/text/UnicodeSet;->compare(Ljava/lang/Iterable;Ljava/lang/Iterable;)I
-Landroid/icu/text/UnicodeSet;->compare(Ljava/util/Collection;Ljava/util/Collection;Landroid/icu/text/UnicodeSet$ComparisonStyle;)I
-Landroid/icu/text/UnicodeSet;->compare(Ljava/util/Iterator;Ljava/util/Iterator;)I
-Landroid/icu/text/UnicodeSet;->containsAll(Ljava/lang/String;I)Z
-Landroid/icu/text/UnicodeSet;->ensureBufferCapacity(I)V
-Landroid/icu/text/UnicodeSet;->ensureCapacity(I)V
-Landroid/icu/text/UnicodeSet;->findCodePoint(I)I
-Landroid/icu/text/UnicodeSet;->findIn(Ljava/lang/CharSequence;IZ)I
-Landroid/icu/text/UnicodeSet;->findLastIn(Ljava/lang/CharSequence;IZ)I
-Landroid/icu/text/UnicodeSet;->getDefaultXSymbolTable()Landroid/icu/text/UnicodeSet$XSymbolTable;
-Landroid/icu/text/UnicodeSet;->getInclusions(I)Landroid/icu/text/UnicodeSet;
-Landroid/icu/text/UnicodeSet;->getRegexEquivalent()Ljava/lang/String;
-Landroid/icu/text/UnicodeSet;->getSingleCodePoint(Ljava/lang/CharSequence;)I
-Landroid/icu/text/UnicodeSet;->getSingleCP(Ljava/lang/CharSequence;)I
-Landroid/icu/text/UnicodeSet;->GROW_EXTRA:I
-Landroid/icu/text/UnicodeSet;->HIGH:I
-Landroid/icu/text/UnicodeSet;->INCLUSIONS:[Landroid/icu/text/UnicodeSet;
-Landroid/icu/text/UnicodeSet;->LAST0_START:I
-Landroid/icu/text/UnicodeSet;->LAST1_RANGE:I
-Landroid/icu/text/UnicodeSet;->LAST2_SET:I
-Landroid/icu/text/UnicodeSet;->len:I
-Landroid/icu/text/UnicodeSet;->list:[I
-Landroid/icu/text/UnicodeSet;->LOW:I
-Landroid/icu/text/UnicodeSet;->matchesAt(Ljava/lang/CharSequence;I)I
-Landroid/icu/text/UnicodeSet;->matchesAt(Ljava/lang/CharSequence;ILjava/lang/CharSequence;)I
-Landroid/icu/text/UnicodeSet;->matchRest(Landroid/icu/text/Replaceable;IILjava/lang/String;)I
-Landroid/icu/text/UnicodeSet;->max(II)I
-Landroid/icu/text/UnicodeSet;->MODE0_NONE:I
-Landroid/icu/text/UnicodeSet;->MODE1_INBRACKET:I
-Landroid/icu/text/UnicodeSet;->MODE2_OUTBRACKET:I
-Landroid/icu/text/UnicodeSet;->mungeCharName(Ljava/lang/String;)Ljava/lang/String;
-Landroid/icu/text/UnicodeSet;->NO_VERSION:Landroid/icu/util/VersionInfo;
-Landroid/icu/text/UnicodeSet;->pat:Ljava/lang/String;
-Landroid/icu/text/UnicodeSet;->range(II)[I
-Landroid/icu/text/UnicodeSet;->rangeList:[I
-Landroid/icu/text/UnicodeSet;->resemblesPattern(Ljava/lang/String;I)Z
-Landroid/icu/text/UnicodeSet;->resemblesPropertyPattern(Landroid/icu/impl/RuleCharacterIterator;I)Z
-Landroid/icu/text/UnicodeSet;->resemblesPropertyPattern(Ljava/lang/String;I)Z
-Landroid/icu/text/UnicodeSet;->retain([III)Landroid/icu/text/UnicodeSet;
-Landroid/icu/text/UnicodeSet;->setDefaultXSymbolTable(Landroid/icu/text/UnicodeSet$XSymbolTable;)V
-Landroid/icu/text/UnicodeSet;->SETMODE0_NONE:I
-Landroid/icu/text/UnicodeSet;->SETMODE1_UNICODESET:I
-Landroid/icu/text/UnicodeSet;->SETMODE2_PROPERTYPAT:I
-Landroid/icu/text/UnicodeSet;->SETMODE3_PREPARSED:I
-Landroid/icu/text/UnicodeSet;->spanAndCount(Ljava/lang/CharSequence;ILandroid/icu/text/UnicodeSet$SpanCondition;Landroid/icu/util/OutputInt;)I
-Landroid/icu/text/UnicodeSet;->spanCodePointsAndCount(Ljava/lang/CharSequence;ILandroid/icu/text/UnicodeSet$SpanCondition;Landroid/icu/util/OutputInt;)I
-Landroid/icu/text/UnicodeSet;->START_EXTRA:I
-Landroid/icu/text/UnicodeSet;->strings:Ljava/util/TreeSet;
-Landroid/icu/text/UnicodeSet;->stringSpan:Landroid/icu/impl/UnicodeSetStringSpan;
-Landroid/icu/text/UnicodeSet;->stripFrom(Ljava/lang/CharSequence;Z)Ljava/lang/String;
-Landroid/icu/text/UnicodeSet;->syntaxError(Landroid/icu/impl/RuleCharacterIterator;Ljava/lang/String;)V
-Landroid/icu/text/UnicodeSet;->toArray(Landroid/icu/text/UnicodeSet;)[Ljava/lang/String;
-Landroid/icu/text/UnicodeSet;->xor([III)Landroid/icu/text/UnicodeSet;
-Landroid/icu/text/UnicodeSet;->XSYMBOL_TABLE:Landroid/icu/text/UnicodeSet$XSymbolTable;
-Landroid/icu/text/UnicodeSet;->_appendToPat(Ljava/lang/Appendable;IZ)Ljava/lang/Appendable;
-Landroid/icu/text/UnicodeSet;->_appendToPat(Ljava/lang/Appendable;Ljava/lang/String;Z)Ljava/lang/Appendable;
-Landroid/icu/text/UnicodeSet;->_toPattern(Ljava/lang/Appendable;Z)Ljava/lang/Appendable;
-Landroid/icu/text/UnicodeSetIterator;->endElement:I
-Landroid/icu/text/UnicodeSetIterator;->endRange:I
-Landroid/icu/text/UnicodeSetIterator;->getSet()Landroid/icu/text/UnicodeSet;
-Landroid/icu/text/UnicodeSetIterator;->loadRange(I)V
-Landroid/icu/text/UnicodeSetIterator;->nextElement:I
-Landroid/icu/text/UnicodeSetIterator;->range:I
-Landroid/icu/text/UnicodeSetIterator;->set:Landroid/icu/text/UnicodeSet;
-Landroid/icu/text/UnicodeSetIterator;->stringIterator:Ljava/util/Iterator;
-Landroid/icu/text/UnicodeSetSpanner;->unicodeSet:Landroid/icu/text/UnicodeSet;
-Landroid/icu/text/UTF16$StringComparator;-><init>()V
-Landroid/icu/text/UTF16$StringComparator;-><init>(ZZI)V
-Landroid/icu/text/UTF16$StringComparator;->CODE_POINT_COMPARE_SURROGATE_OFFSET_:I
-Landroid/icu/text/UTF16$StringComparator;->compare(Ljava/lang/String;Ljava/lang/String;)I
-Landroid/icu/text/UTF16$StringComparator;->compareCaseInsensitive(Ljava/lang/String;Ljava/lang/String;)I
-Landroid/icu/text/UTF16$StringComparator;->compareCaseSensitive(Ljava/lang/String;Ljava/lang/String;)I
-Landroid/icu/text/UTF16$StringComparator;->FOLD_CASE_DEFAULT:I
-Landroid/icu/text/UTF16$StringComparator;->FOLD_CASE_EXCLUDE_SPECIAL_I:I
-Landroid/icu/text/UTF16$StringComparator;->getCodePointCompare()Z
-Landroid/icu/text/UTF16$StringComparator;->getIgnoreCase()Z
-Landroid/icu/text/UTF16$StringComparator;->getIgnoreCaseOption()I
-Landroid/icu/text/UTF16$StringComparator;->m_codePointCompare_:I
-Landroid/icu/text/UTF16$StringComparator;->m_foldCase_:I
-Landroid/icu/text/UTF16$StringComparator;->m_ignoreCase_:Z
-Landroid/icu/text/UTF16$StringComparator;->setCodePointCompare(Z)V
-Landroid/icu/text/UTF16$StringComparator;->setIgnoreCase(ZI)V
-Landroid/icu/text/UTF16;-><init>()V
-Landroid/icu/text/UTF16;->append(Ljava/lang/StringBuffer;I)Ljava/lang/StringBuffer;
-Landroid/icu/text/UTF16;->append([CII)I
-Landroid/icu/text/UTF16;->appendCodePoint(Ljava/lang/StringBuffer;I)Ljava/lang/StringBuffer;
-Landroid/icu/text/UTF16;->bounds(Ljava/lang/String;I)I
-Landroid/icu/text/UTF16;->bounds(Ljava/lang/StringBuffer;I)I
-Landroid/icu/text/UTF16;->bounds([CIII)I
-Landroid/icu/text/UTF16;->charAt(Landroid/icu/text/Replaceable;I)I
-Landroid/icu/text/UTF16;->charAt(Ljava/lang/CharSequence;I)I
-Landroid/icu/text/UTF16;->charAt(Ljava/lang/String;I)I
-Landroid/icu/text/UTF16;->charAt(Ljava/lang/StringBuffer;I)I
-Landroid/icu/text/UTF16;->charAt([CIII)I
-Landroid/icu/text/UTF16;->CODEPOINT_MAX_VALUE:I
-Landroid/icu/text/UTF16;->CODEPOINT_MIN_VALUE:I
-Landroid/icu/text/UTF16;->compareCodePoint(ILjava/lang/CharSequence;)I
-Landroid/icu/text/UTF16;->countCodePoint(Ljava/lang/String;)I
-Landroid/icu/text/UTF16;->countCodePoint(Ljava/lang/StringBuffer;)I
-Landroid/icu/text/UTF16;->countCodePoint([CII)I
-Landroid/icu/text/UTF16;->delete(Ljava/lang/StringBuffer;I)Ljava/lang/StringBuffer;
-Landroid/icu/text/UTF16;->delete([CII)I
-Landroid/icu/text/UTF16;->findCodePointOffset(Ljava/lang/String;I)I
-Landroid/icu/text/UTF16;->findCodePointOffset(Ljava/lang/StringBuffer;I)I
-Landroid/icu/text/UTF16;->findCodePointOffset([CIII)I
-Landroid/icu/text/UTF16;->findOffsetFromCodePoint(Ljava/lang/String;I)I
-Landroid/icu/text/UTF16;->findOffsetFromCodePoint(Ljava/lang/StringBuffer;I)I
-Landroid/icu/text/UTF16;->findOffsetFromCodePoint([CIII)I
-Landroid/icu/text/UTF16;->getCharCount(I)I
-Landroid/icu/text/UTF16;->getLeadSurrogate(I)C
-Landroid/icu/text/UTF16;->getSingleCodePoint(Ljava/lang/CharSequence;)I
-Landroid/icu/text/UTF16;->getTrailSurrogate(I)C
-Landroid/icu/text/UTF16;->hasMoreCodePointsThan(Ljava/lang/String;I)Z
-Landroid/icu/text/UTF16;->hasMoreCodePointsThan(Ljava/lang/StringBuffer;I)Z
-Landroid/icu/text/UTF16;->hasMoreCodePointsThan([CIII)Z
-Landroid/icu/text/UTF16;->indexOf(Ljava/lang/String;I)I
-Landroid/icu/text/UTF16;->indexOf(Ljava/lang/String;II)I
-Landroid/icu/text/UTF16;->indexOf(Ljava/lang/String;Ljava/lang/String;)I
-Landroid/icu/text/UTF16;->indexOf(Ljava/lang/String;Ljava/lang/String;I)I
-Landroid/icu/text/UTF16;->insert(Ljava/lang/StringBuffer;II)Ljava/lang/StringBuffer;
-Landroid/icu/text/UTF16;->insert([CIII)I
-Landroid/icu/text/UTF16;->isLeadSurrogate(C)Z
-Landroid/icu/text/UTF16;->isSurrogate(C)Z
-Landroid/icu/text/UTF16;->isTrailSurrogate(C)Z
-Landroid/icu/text/UTF16;->lastIndexOf(Ljava/lang/String;I)I
-Landroid/icu/text/UTF16;->lastIndexOf(Ljava/lang/String;II)I
-Landroid/icu/text/UTF16;->lastIndexOf(Ljava/lang/String;Ljava/lang/String;)I
-Landroid/icu/text/UTF16;->lastIndexOf(Ljava/lang/String;Ljava/lang/String;I)I
-Landroid/icu/text/UTF16;->LEAD_SURROGATE_BITMASK:I
-Landroid/icu/text/UTF16;->LEAD_SURROGATE_BITS:I
-Landroid/icu/text/UTF16;->LEAD_SURROGATE_BOUNDARY:I
-Landroid/icu/text/UTF16;->LEAD_SURROGATE_MAX_VALUE:I
-Landroid/icu/text/UTF16;->LEAD_SURROGATE_MIN_VALUE:I
-Landroid/icu/text/UTF16;->LEAD_SURROGATE_OFFSET_:I
-Landroid/icu/text/UTF16;->LEAD_SURROGATE_SHIFT_:I
-Landroid/icu/text/UTF16;->moveCodePointOffset(Ljava/lang/String;II)I
-Landroid/icu/text/UTF16;->moveCodePointOffset(Ljava/lang/StringBuffer;II)I
-Landroid/icu/text/UTF16;->moveCodePointOffset([CIIII)I
-Landroid/icu/text/UTF16;->newString([III)Ljava/lang/String;
-Landroid/icu/text/UTF16;->replace(Ljava/lang/String;II)Ljava/lang/String;
-Landroid/icu/text/UTF16;->replace(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
-Landroid/icu/text/UTF16;->reverse(Ljava/lang/StringBuffer;)Ljava/lang/StringBuffer;
-Landroid/icu/text/UTF16;->setCharAt(Ljava/lang/StringBuffer;II)V
-Landroid/icu/text/UTF16;->setCharAt([CIII)I
-Landroid/icu/text/UTF16;->SINGLE_CHAR_BOUNDARY:I
-Landroid/icu/text/UTF16;->SUPPLEMENTARY_MIN_VALUE:I
-Landroid/icu/text/UTF16;->SURROGATE_BITMASK:I
-Landroid/icu/text/UTF16;->SURROGATE_BITS:I
-Landroid/icu/text/UTF16;->SURROGATE_MAX_VALUE:I
-Landroid/icu/text/UTF16;->SURROGATE_MIN_VALUE:I
-Landroid/icu/text/UTF16;->toString(I)Ljava/lang/String;
-Landroid/icu/text/UTF16;->TRAIL_SURROGATE_BITMASK:I
-Landroid/icu/text/UTF16;->TRAIL_SURROGATE_BITS:I
-Landroid/icu/text/UTF16;->TRAIL_SURROGATE_BOUNDARY:I
-Landroid/icu/text/UTF16;->TRAIL_SURROGATE_MASK_:I
-Landroid/icu/text/UTF16;->TRAIL_SURROGATE_MAX_VALUE:I
-Landroid/icu/text/UTF16;->TRAIL_SURROGATE_MIN_VALUE:I
-Landroid/icu/text/UTF16;->valueOf(I)Ljava/lang/String;
-Landroid/icu/text/UTF16;->valueOf(Ljava/lang/String;I)Ljava/lang/String;
-Landroid/icu/text/UTF16;->valueOf(Ljava/lang/StringBuffer;I)Ljava/lang/String;
-Landroid/icu/text/UTF16;->valueOf([CIII)Ljava/lang/String;
-Landroid/icu/text/UTF16;->_charAt(Ljava/lang/CharSequence;IC)I
-Landroid/icu/text/UTF16;->_charAt(Ljava/lang/String;IC)I
-Landroid/icu/util/AnnualTimeZoneRule;-><init>(Ljava/lang/String;IILandroid/icu/util/DateTimeRule;II)V
-Landroid/icu/util/AnnualTimeZoneRule;->dateTimeRule:Landroid/icu/util/DateTimeRule;
-Landroid/icu/util/AnnualTimeZoneRule;->endYear:I
-Landroid/icu/util/AnnualTimeZoneRule;->getEndYear()I
-Landroid/icu/util/AnnualTimeZoneRule;->getFinalStart(II)Ljava/util/Date;
-Landroid/icu/util/AnnualTimeZoneRule;->getFirstStart(II)Ljava/util/Date;
-Landroid/icu/util/AnnualTimeZoneRule;->getNextStart(JIIZ)Ljava/util/Date;
-Landroid/icu/util/AnnualTimeZoneRule;->getPreviousStart(JIIZ)Ljava/util/Date;
-Landroid/icu/util/AnnualTimeZoneRule;->getRule()Landroid/icu/util/DateTimeRule;
-Landroid/icu/util/AnnualTimeZoneRule;->getStartInYear(III)Ljava/util/Date;
-Landroid/icu/util/AnnualTimeZoneRule;->getStartYear()I
-Landroid/icu/util/AnnualTimeZoneRule;->isEquivalentTo(Landroid/icu/util/TimeZoneRule;)Z
-Landroid/icu/util/AnnualTimeZoneRule;->isTransitionRule()Z
-Landroid/icu/util/AnnualTimeZoneRule;->MAX_YEAR:I
-Landroid/icu/util/AnnualTimeZoneRule;->startYear:I
-Landroid/icu/util/BasicTimeZone;-><init>()V
-Landroid/icu/util/BasicTimeZone;-><init>(Ljava/lang/String;)V
-Landroid/icu/util/BasicTimeZone;->FORMER_LATTER_MASK:I
-Landroid/icu/util/BasicTimeZone;->getNextTransition(JZ)Landroid/icu/util/TimeZoneTransition;
-Landroid/icu/util/BasicTimeZone;->getOffsetFromLocal(JII[I)V
-Landroid/icu/util/BasicTimeZone;->getPreviousTransition(JZ)Landroid/icu/util/TimeZoneTransition;
-Landroid/icu/util/BasicTimeZone;->getSimpleTimeZoneRulesNear(J)[Landroid/icu/util/TimeZoneRule;
-Landroid/icu/util/BasicTimeZone;->getTimeZoneRules()[Landroid/icu/util/TimeZoneRule;
-Landroid/icu/util/BasicTimeZone;->getTimeZoneRules(J)[Landroid/icu/util/TimeZoneRule;
-Landroid/icu/util/BasicTimeZone;->hasEquivalentTransitions(Landroid/icu/util/TimeZone;JJ)Z
-Landroid/icu/util/BasicTimeZone;->hasEquivalentTransitions(Landroid/icu/util/TimeZone;JJZ)Z
-Landroid/icu/util/BasicTimeZone;->LOCAL_DST:I
-Landroid/icu/util/BasicTimeZone;->LOCAL_FORMER:I
-Landroid/icu/util/BasicTimeZone;->LOCAL_LATTER:I
-Landroid/icu/util/BasicTimeZone;->LOCAL_STD:I
-Landroid/icu/util/BasicTimeZone;->MILLIS_PER_YEAR:J
-Landroid/icu/util/BasicTimeZone;->STD_DST_MASK:I
-Landroid/icu/util/BuddhistCalendar;->BUDDHIST_ERA_START:I
-Landroid/icu/util/BuddhistCalendar;->GREGORIAN_EPOCH:I
-Landroid/icu/util/ByteArrayWrapper;-><init>()V
-Landroid/icu/util/ByteArrayWrapper;-><init>(Ljava/nio/ByteBuffer;)V
-Landroid/icu/util/ByteArrayWrapper;-><init>([BI)V
-Landroid/icu/util/ByteArrayWrapper;->append([BII)Landroid/icu/util/ByteArrayWrapper;
-Landroid/icu/util/ByteArrayWrapper;->bytes:[B
-Landroid/icu/util/ByteArrayWrapper;->compareTo(Landroid/icu/util/ByteArrayWrapper;)I
-Landroid/icu/util/ByteArrayWrapper;->copyBytes([BI[BII)V
-Landroid/icu/util/ByteArrayWrapper;->ensureCapacity(I)Landroid/icu/util/ByteArrayWrapper;
-Landroid/icu/util/ByteArrayWrapper;->releaseBytes()[B
-Landroid/icu/util/ByteArrayWrapper;->set([BII)Landroid/icu/util/ByteArrayWrapper;
-Landroid/icu/util/ByteArrayWrapper;->size:I
-Landroid/icu/util/BytesTrie$Entry;-><init>(I)V
-Landroid/icu/util/BytesTrie$Entry;->append(B)V
-Landroid/icu/util/BytesTrie$Entry;->append([BII)V
-Landroid/icu/util/BytesTrie$Entry;->byteAt(I)B
-Landroid/icu/util/BytesTrie$Entry;->bytes:[B
-Landroid/icu/util/BytesTrie$Entry;->bytesAsByteBuffer()Ljava/nio/ByteBuffer;
-Landroid/icu/util/BytesTrie$Entry;->bytesLength()I
-Landroid/icu/util/BytesTrie$Entry;->copyBytesTo([BI)V
-Landroid/icu/util/BytesTrie$Entry;->ensureCapacity(I)V
-Landroid/icu/util/BytesTrie$Entry;->length:I
-Landroid/icu/util/BytesTrie$Entry;->truncateString(I)V
-Landroid/icu/util/BytesTrie$Entry;->value:I
-Landroid/icu/util/BytesTrie$Iterator;-><init>([BIII)V
-Landroid/icu/util/BytesTrie$Iterator;->branchNext(II)I
-Landroid/icu/util/BytesTrie$Iterator;->bytes_:[B
-Landroid/icu/util/BytesTrie$Iterator;->entry_:Landroid/icu/util/BytesTrie$Entry;
-Landroid/icu/util/BytesTrie$Iterator;->initialPos_:I
-Landroid/icu/util/BytesTrie$Iterator;->initialRemainingMatchLength_:I
-Landroid/icu/util/BytesTrie$Iterator;->maxLength_:I
-Landroid/icu/util/BytesTrie$Iterator;->pos_:I
-Landroid/icu/util/BytesTrie$Iterator;->remainingMatchLength_:I
-Landroid/icu/util/BytesTrie$Iterator;->reset()Landroid/icu/util/BytesTrie$Iterator;
-Landroid/icu/util/BytesTrie$Iterator;->stack_:Ljava/util/ArrayList;
-Landroid/icu/util/BytesTrie$Iterator;->truncateAndStop()Landroid/icu/util/BytesTrie$Entry;
-Landroid/icu/util/BytesTrie$Result;->FINAL_VALUE:Landroid/icu/util/BytesTrie$Result;
-Landroid/icu/util/BytesTrie$Result;->hasNext()Z
-Landroid/icu/util/BytesTrie$Result;->hasValue()Z
-Landroid/icu/util/BytesTrie$Result;->INTERMEDIATE_VALUE:Landroid/icu/util/BytesTrie$Result;
-Landroid/icu/util/BytesTrie$Result;->matches()Z
-Landroid/icu/util/BytesTrie$Result;->NO_MATCH:Landroid/icu/util/BytesTrie$Result;
-Landroid/icu/util/BytesTrie$Result;->NO_VALUE:Landroid/icu/util/BytesTrie$Result;
-Landroid/icu/util/BytesTrie$Result;->valueOf(Ljava/lang/String;)Landroid/icu/util/BytesTrie$Result;
-Landroid/icu/util/BytesTrie$Result;->values()[Landroid/icu/util/BytesTrie$Result;
-Landroid/icu/util/BytesTrie$State;-><init>()V
-Landroid/icu/util/BytesTrie$State;->bytes:[B
-Landroid/icu/util/BytesTrie$State;->pos:I
-Landroid/icu/util/BytesTrie$State;->remainingMatchLength:I
-Landroid/icu/util/BytesTrie$State;->root:I
-Landroid/icu/util/BytesTrie;-><init>([BI)V
-Landroid/icu/util/BytesTrie;->append(Ljava/lang/Appendable;I)V
-Landroid/icu/util/BytesTrie;->branchNext(III)Landroid/icu/util/BytesTrie$Result;
-Landroid/icu/util/BytesTrie;->bytes_:[B
-Landroid/icu/util/BytesTrie;->current()Landroid/icu/util/BytesTrie$Result;
-Landroid/icu/util/BytesTrie;->findUniqueValue([BIJ)J
-Landroid/icu/util/BytesTrie;->findUniqueValueFromBranch([BIIJ)J
-Landroid/icu/util/BytesTrie;->first(I)Landroid/icu/util/BytesTrie$Result;
-Landroid/icu/util/BytesTrie;->getNextBranchBytes([BIILjava/lang/Appendable;)V
-Landroid/icu/util/BytesTrie;->getNextBytes(Ljava/lang/Appendable;)I
-Landroid/icu/util/BytesTrie;->getUniqueValue()J
-Landroid/icu/util/BytesTrie;->getValue()I
-Landroid/icu/util/BytesTrie;->iterator(I)Landroid/icu/util/BytesTrie$Iterator;
-Landroid/icu/util/BytesTrie;->iterator([BII)Landroid/icu/util/BytesTrie$Iterator;
-Landroid/icu/util/BytesTrie;->jumpByDelta([BI)I
-Landroid/icu/util/BytesTrie;->kFiveByteDeltaLead:I
-Landroid/icu/util/BytesTrie;->kFiveByteValueLead:I
-Landroid/icu/util/BytesTrie;->kFourByteDeltaLead:I
-Landroid/icu/util/BytesTrie;->kFourByteValueLead:I
-Landroid/icu/util/BytesTrie;->kMaxBranchLinearSubNodeLength:I
-Landroid/icu/util/BytesTrie;->kMaxLinearMatchLength:I
-Landroid/icu/util/BytesTrie;->kMaxOneByteDelta:I
-Landroid/icu/util/BytesTrie;->kMaxOneByteValue:I
-Landroid/icu/util/BytesTrie;->kMaxThreeByteDelta:I
-Landroid/icu/util/BytesTrie;->kMaxThreeByteValue:I
-Landroid/icu/util/BytesTrie;->kMaxTwoByteDelta:I
-Landroid/icu/util/BytesTrie;->kMaxTwoByteValue:I
-Landroid/icu/util/BytesTrie;->kMinLinearMatch:I
-Landroid/icu/util/BytesTrie;->kMinOneByteValueLead:I
-Landroid/icu/util/BytesTrie;->kMinThreeByteDeltaLead:I
-Landroid/icu/util/BytesTrie;->kMinThreeByteValueLead:I
-Landroid/icu/util/BytesTrie;->kMinTwoByteDeltaLead:I
-Landroid/icu/util/BytesTrie;->kMinTwoByteValueLead:I
-Landroid/icu/util/BytesTrie;->kMinValueLead:I
-Landroid/icu/util/BytesTrie;->kValueIsFinal:I
-Landroid/icu/util/BytesTrie;->next(I)Landroid/icu/util/BytesTrie$Result;
-Landroid/icu/util/BytesTrie;->next([BII)Landroid/icu/util/BytesTrie$Result;
-Landroid/icu/util/BytesTrie;->nextImpl(II)Landroid/icu/util/BytesTrie$Result;
-Landroid/icu/util/BytesTrie;->pos_:I
-Landroid/icu/util/BytesTrie;->readValue([BII)I
-Landroid/icu/util/BytesTrie;->remainingMatchLength_:I
-Landroid/icu/util/BytesTrie;->reset()Landroid/icu/util/BytesTrie;
-Landroid/icu/util/BytesTrie;->resetToState(Landroid/icu/util/BytesTrie$State;)Landroid/icu/util/BytesTrie;
-Landroid/icu/util/BytesTrie;->root_:I
-Landroid/icu/util/BytesTrie;->saveState(Landroid/icu/util/BytesTrie$State;)Landroid/icu/util/BytesTrie;
-Landroid/icu/util/BytesTrie;->skipDelta([BI)I
-Landroid/icu/util/BytesTrie;->skipValue(II)I
-Landroid/icu/util/BytesTrie;->skipValue([BI)I
-Landroid/icu/util/BytesTrie;->stop()V
-Landroid/icu/util/BytesTrie;->valueResults_:[Landroid/icu/util/BytesTrie$Result;
-Landroid/icu/util/BytesTrieBuilder$BytesAsCharSequence;-><init>([BI)V
-Landroid/icu/util/BytesTrieBuilder$BytesAsCharSequence;->len:I
-Landroid/icu/util/BytesTrieBuilder$BytesAsCharSequence;->s:[B
-Landroid/icu/util/BytesTrieBuilder;-><init>()V
-Landroid/icu/util/BytesTrieBuilder;->add([BII)Landroid/icu/util/BytesTrieBuilder;
-Landroid/icu/util/BytesTrieBuilder;->build(Landroid/icu/util/StringTrieBuilder$Option;)Landroid/icu/util/BytesTrie;
-Landroid/icu/util/BytesTrieBuilder;->buildByteBuffer(Landroid/icu/util/StringTrieBuilder$Option;)Ljava/nio/ByteBuffer;
-Landroid/icu/util/BytesTrieBuilder;->buildBytes(Landroid/icu/util/StringTrieBuilder$Option;)V
-Landroid/icu/util/BytesTrieBuilder;->bytes:[B
-Landroid/icu/util/BytesTrieBuilder;->bytesLength:I
-Landroid/icu/util/BytesTrieBuilder;->clear()Landroid/icu/util/BytesTrieBuilder;
-Landroid/icu/util/BytesTrieBuilder;->ensureCapacity(I)V
-Landroid/icu/util/BytesTrieBuilder;->getMaxBranchLinearSubNodeLength()I
-Landroid/icu/util/BytesTrieBuilder;->getMaxLinearMatchLength()I
-Landroid/icu/util/BytesTrieBuilder;->getMinLinearMatch()I
-Landroid/icu/util/BytesTrieBuilder;->intBytes:[B
-Landroid/icu/util/BytesTrieBuilder;->matchNodesCanHaveValues()Z
-Landroid/icu/util/BytesTrieBuilder;->write(I)I
-Landroid/icu/util/BytesTrieBuilder;->write(II)I
-Landroid/icu/util/BytesTrieBuilder;->write([BI)I
-Landroid/icu/util/BytesTrieBuilder;->writeDeltaTo(I)I
-Landroid/icu/util/BytesTrieBuilder;->writeValueAndFinal(IZ)I
-Landroid/icu/util/BytesTrieBuilder;->writeValueAndType(ZII)I
-Landroid/icu/util/Calendar$CalType;->BUDDHIST:Landroid/icu/util/Calendar$CalType;
-Landroid/icu/util/Calendar$CalType;->CHINESE:Landroid/icu/util/Calendar$CalType;
-Landroid/icu/util/Calendar$CalType;->COPTIC:Landroid/icu/util/Calendar$CalType;
-Landroid/icu/util/Calendar$CalType;->DANGI:Landroid/icu/util/Calendar$CalType;
-Landroid/icu/util/Calendar$CalType;->ETHIOPIC:Landroid/icu/util/Calendar$CalType;
-Landroid/icu/util/Calendar$CalType;->ETHIOPIC_AMETE_ALEM:Landroid/icu/util/Calendar$CalType;
-Landroid/icu/util/Calendar$CalType;->GREGORIAN:Landroid/icu/util/Calendar$CalType;
-Landroid/icu/util/Calendar$CalType;->HEBREW:Landroid/icu/util/Calendar$CalType;
-Landroid/icu/util/Calendar$CalType;->id:Ljava/lang/String;
-Landroid/icu/util/Calendar$CalType;->INDIAN:Landroid/icu/util/Calendar$CalType;
-Landroid/icu/util/Calendar$CalType;->ISLAMIC:Landroid/icu/util/Calendar$CalType;
-Landroid/icu/util/Calendar$CalType;->ISLAMIC_CIVIL:Landroid/icu/util/Calendar$CalType;
-Landroid/icu/util/Calendar$CalType;->ISLAMIC_RGSA:Landroid/icu/util/Calendar$CalType;
-Landroid/icu/util/Calendar$CalType;->ISLAMIC_TBLA:Landroid/icu/util/Calendar$CalType;
-Landroid/icu/util/Calendar$CalType;->ISLAMIC_UMALQURA:Landroid/icu/util/Calendar$CalType;
-Landroid/icu/util/Calendar$CalType;->ISO8601:Landroid/icu/util/Calendar$CalType;
-Landroid/icu/util/Calendar$CalType;->JAPANESE:Landroid/icu/util/Calendar$CalType;
-Landroid/icu/util/Calendar$CalType;->PERSIAN:Landroid/icu/util/Calendar$CalType;
-Landroid/icu/util/Calendar$CalType;->ROC:Landroid/icu/util/Calendar$CalType;
-Landroid/icu/util/Calendar$CalType;->UNKNOWN:Landroid/icu/util/Calendar$CalType;
-Landroid/icu/util/Calendar$CalType;->valueOf(Ljava/lang/String;)Landroid/icu/util/Calendar$CalType;
-Landroid/icu/util/Calendar$CalType;->values()[Landroid/icu/util/Calendar$CalType;
-Landroid/icu/util/Calendar$FormatConfiguration;-><init>()V
-Landroid/icu/util/Calendar$FormatConfiguration;->cal:Landroid/icu/util/Calendar;
-Landroid/icu/util/Calendar$FormatConfiguration;->formatData:Landroid/icu/text/DateFormatSymbols;
-Landroid/icu/util/Calendar$FormatConfiguration;->getCalendar()Landroid/icu/util/Calendar;
-Landroid/icu/util/Calendar$FormatConfiguration;->getDateFormatSymbols()Landroid/icu/text/DateFormatSymbols;
-Landroid/icu/util/Calendar$FormatConfiguration;->getLocale()Landroid/icu/util/ULocale;
-Landroid/icu/util/Calendar$FormatConfiguration;->getOverrideString()Ljava/lang/String;
-Landroid/icu/util/Calendar$FormatConfiguration;->getPatternString()Ljava/lang/String;
-Landroid/icu/util/Calendar$FormatConfiguration;->loc:Landroid/icu/util/ULocale;
-Landroid/icu/util/Calendar$FormatConfiguration;->override:Ljava/lang/String;
-Landroid/icu/util/Calendar$FormatConfiguration;->pattern:Ljava/lang/String;
-Landroid/icu/util/Calendar$PatternData;-><init>([Ljava/lang/String;[Ljava/lang/String;)V
-Landroid/icu/util/Calendar$PatternData;->getDateTimePattern(I)Ljava/lang/String;
-Landroid/icu/util/Calendar$PatternData;->make(Landroid/icu/util/Calendar;Landroid/icu/util/ULocale;)Landroid/icu/util/Calendar$PatternData;
-Landroid/icu/util/Calendar$PatternData;->make(Landroid/icu/util/ULocale;Ljava/lang/String;)Landroid/icu/util/Calendar$PatternData;
-Landroid/icu/util/Calendar$PatternData;->overrides:[Ljava/lang/String;
-Landroid/icu/util/Calendar$PatternData;->patterns:[Ljava/lang/String;
-Landroid/icu/util/Calendar$WeekDataCache;-><init>()V
-Landroid/icu/util/Calendar$WeekDataCache;->createInstance(Ljava/lang/String;Ljava/lang/String;)Landroid/icu/util/Calendar$WeekData;
-Landroid/icu/util/Calendar;->actualLocale:Landroid/icu/util/ULocale;
-Landroid/icu/util/Calendar;->areAllFieldsSet:Z
-Landroid/icu/util/Calendar;->areFieldsSet:Z
-Landroid/icu/util/Calendar;->areFieldsVirtuallySet:Z
-Landroid/icu/util/Calendar;->compare(Ljava/lang/Object;)J
-Landroid/icu/util/Calendar;->computeGregorianAndDOWFields(I)V
-Landroid/icu/util/Calendar;->computeMillisInDayLong()J
-Landroid/icu/util/Calendar;->computeWeekFields()V
-Landroid/icu/util/Calendar;->computeZoneOffset(JJ)I
-Landroid/icu/util/Calendar;->createInstance(Landroid/icu/util/ULocale;)Landroid/icu/util/Calendar;
-Landroid/icu/util/Calendar;->DATE_PRECEDENCE:[[[I
-Landroid/icu/util/Calendar;->DEFAULT_PATTERNS:[Ljava/lang/String;
-Landroid/icu/util/Calendar;->DOW_PRECEDENCE:[[[I
-Landroid/icu/util/Calendar;->expandOverride(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
-Landroid/icu/util/Calendar;->fields:[I
-Landroid/icu/util/Calendar;->FIELD_DIFF_MAX_INT:I
-Landroid/icu/util/Calendar;->FIELD_NAME:[Ljava/lang/String;
-Landroid/icu/util/Calendar;->findPreviousZoneTransitionTime(Landroid/icu/util/TimeZone;IJJ)Ljava/lang/Long;
-Landroid/icu/util/Calendar;->FIND_ZONE_TRANSITION_TIME_UNITS:[I
-Landroid/icu/util/Calendar;->firstDayOfWeek:I
-Landroid/icu/util/Calendar;->firstIslamicStartYearFromGrego(I)I
-Landroid/icu/util/Calendar;->formatHelper(Landroid/icu/util/Calendar;Landroid/icu/util/ULocale;II)Landroid/icu/text/DateFormat;
-Landroid/icu/util/Calendar;->getActualHelper(III)I
-Landroid/icu/util/Calendar;->getAvailableULocales()[Landroid/icu/util/ULocale;
-Landroid/icu/util/Calendar;->getCalendarTypeForLocale(Landroid/icu/util/ULocale;)Landroid/icu/util/Calendar$CalType;
-Landroid/icu/util/Calendar;->getDateTimeFormatString(Landroid/icu/util/ULocale;Ljava/lang/String;II)Ljava/lang/String;
-Landroid/icu/util/Calendar;->getDateTimePattern(Landroid/icu/util/Calendar;Landroid/icu/util/ULocale;I)Ljava/lang/String;
-Landroid/icu/util/Calendar;->getDayOfWeekType(I)I
-Landroid/icu/util/Calendar;->getDefaultDayInMonth(II)I
-Landroid/icu/util/Calendar;->getDefaultMonthInYear(I)I
-Landroid/icu/util/Calendar;->getImmediatePreviousZoneTransition(J)Ljava/lang/Long;
-Landroid/icu/util/Calendar;->getInstanceInternal(Landroid/icu/util/TimeZone;Landroid/icu/util/ULocale;)Landroid/icu/util/Calendar;
-Landroid/icu/util/Calendar;->getPatternData(Landroid/icu/util/ULocale;Ljava/lang/String;)Landroid/icu/util/Calendar$PatternData;
-Landroid/icu/util/Calendar;->getPreviousZoneTransitionTime(Landroid/icu/util/TimeZone;JJ)Ljava/lang/Long;
-Landroid/icu/util/Calendar;->getRegionForCalendar(Landroid/icu/util/ULocale;)Ljava/lang/String;
-Landroid/icu/util/Calendar;->getRelatedYear()I
-Landroid/icu/util/Calendar;->getWeekDataForRegionInternal(Ljava/lang/String;)Landroid/icu/util/Calendar$WeekData;
-Landroid/icu/util/Calendar;->getWeekendTransition(I)I
-Landroid/icu/util/Calendar;->gregorianDayOfMonth:I
-Landroid/icu/util/Calendar;->gregorianDayOfYear:I
-Landroid/icu/util/Calendar;->gregorianMonth:I
-Landroid/icu/util/Calendar;->gregorianYear:I
-Landroid/icu/util/Calendar;->GREGORIAN_MONTH_COUNT:[[I
-Landroid/icu/util/Calendar;->gregoYearFromIslamicStart(I)I
-Landroid/icu/util/Calendar;->handleGetDateFormat(Ljava/lang/String;Ljava/lang/String;Landroid/icu/util/ULocale;)Landroid/icu/text/DateFormat;
-Landroid/icu/util/Calendar;->haveDefaultCentury()Z
-Landroid/icu/util/Calendar;->initInternal()V
-Landroid/icu/util/Calendar;->internalSetMask:I
-Landroid/icu/util/Calendar;->isTimeSet:Z
-Landroid/icu/util/Calendar;->lenient:Z
-Landroid/icu/util/Calendar;->LIMITS:[[I
-Landroid/icu/util/Calendar;->MAX_HOURS:I
-Landroid/icu/util/Calendar;->mergeOverrideStrings(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
-Landroid/icu/util/Calendar;->minimalDaysInFirstWeek:I
-Landroid/icu/util/Calendar;->nextStamp:I
-Landroid/icu/util/Calendar;->PATTERN_CACHE:Landroid/icu/impl/ICUCache;
-Landroid/icu/util/Calendar;->QUOTE:C
-Landroid/icu/util/Calendar;->recalculateStamp()V
-Landroid/icu/util/Calendar;->repeatedWallTime:I
-Landroid/icu/util/Calendar;->setCalendarLocale(Landroid/icu/util/ULocale;)V
-Landroid/icu/util/Calendar;->setLocale(Landroid/icu/util/ULocale;Landroid/icu/util/ULocale;)V
-Landroid/icu/util/Calendar;->setRelatedYear(I)V
-Landroid/icu/util/Calendar;->setWeekData(Ljava/lang/String;)V
-Landroid/icu/util/Calendar;->skippedWallTime:I
-Landroid/icu/util/Calendar;->stamp:[I
-Landroid/icu/util/Calendar;->STAMP_MAX:I
-Landroid/icu/util/Calendar;->time:J
-Landroid/icu/util/Calendar;->updateTime()V
-Landroid/icu/util/Calendar;->validLocale:Landroid/icu/util/ULocale;
-Landroid/icu/util/Calendar;->WEEKDAY:I
-Landroid/icu/util/Calendar;->WEEKEND:I
-Landroid/icu/util/Calendar;->weekendCease:I
-Landroid/icu/util/Calendar;->weekendCeaseMillis:I
-Landroid/icu/util/Calendar;->weekendOnset:I
-Landroid/icu/util/Calendar;->weekendOnsetMillis:I
-Landroid/icu/util/Calendar;->WEEKEND_CEASE:I
-Landroid/icu/util/Calendar;->WEEKEND_ONSET:I
-Landroid/icu/util/Calendar;->WEEK_DATA_CACHE:Landroid/icu/util/Calendar$WeekDataCache;
-Landroid/icu/util/Calendar;->zone:Landroid/icu/util/TimeZone;
-Landroid/icu/util/CaseInsensitiveString;-><init>(Ljava/lang/String;)V
-Landroid/icu/util/CaseInsensitiveString;->foldCase(Ljava/lang/String;)Ljava/lang/String;
-Landroid/icu/util/CaseInsensitiveString;->folded:Ljava/lang/String;
-Landroid/icu/util/CaseInsensitiveString;->getFolded()V
-Landroid/icu/util/CaseInsensitiveString;->getString()Ljava/lang/String;
-Landroid/icu/util/CaseInsensitiveString;->hash:I
-Landroid/icu/util/CaseInsensitiveString;->string:Ljava/lang/String;
-Landroid/icu/util/CECalendar;-><init>()V
-Landroid/icu/util/CECalendar;-><init>(III)V
-Landroid/icu/util/CECalendar;-><init>(IIIIII)V
-Landroid/icu/util/CECalendar;-><init>(Landroid/icu/util/TimeZone;)V
-Landroid/icu/util/CECalendar;-><init>(Landroid/icu/util/TimeZone;Landroid/icu/util/ULocale;)V
-Landroid/icu/util/CECalendar;-><init>(Landroid/icu/util/TimeZone;Ljava/util/Locale;)V
-Landroid/icu/util/CECalendar;-><init>(Landroid/icu/util/ULocale;)V
-Landroid/icu/util/CECalendar;-><init>(Ljava/util/Date;)V
-Landroid/icu/util/CECalendar;-><init>(Ljava/util/Locale;)V
-Landroid/icu/util/CECalendar;->ceToJD(JIII)I
-Landroid/icu/util/CECalendar;->getJDEpochOffset()I
-Landroid/icu/util/CECalendar;->jdToCE(II[I)V
-Landroid/icu/util/CECalendar;->LIMITS:[[I
-Landroid/icu/util/CharsTrie$Entry;-><init>()V
-Landroid/icu/util/CharsTrie$Entry;->chars:Ljava/lang/CharSequence;
-Landroid/icu/util/CharsTrie$Entry;->value:I
-Landroid/icu/util/CharsTrie$Iterator;-><init>(Ljava/lang/CharSequence;III)V
-Landroid/icu/util/CharsTrie$Iterator;->branchNext(II)I
-Landroid/icu/util/CharsTrie$Iterator;->chars_:Ljava/lang/CharSequence;
-Landroid/icu/util/CharsTrie$Iterator;->entry_:Landroid/icu/util/CharsTrie$Entry;
-Landroid/icu/util/CharsTrie$Iterator;->initialPos_:I
-Landroid/icu/util/CharsTrie$Iterator;->initialRemainingMatchLength_:I
-Landroid/icu/util/CharsTrie$Iterator;->maxLength_:I
-Landroid/icu/util/CharsTrie$Iterator;->pos_:I
-Landroid/icu/util/CharsTrie$Iterator;->remainingMatchLength_:I
-Landroid/icu/util/CharsTrie$Iterator;->reset()Landroid/icu/util/CharsTrie$Iterator;
-Landroid/icu/util/CharsTrie$Iterator;->skipValue_:Z
-Landroid/icu/util/CharsTrie$Iterator;->stack_:Ljava/util/ArrayList;
-Landroid/icu/util/CharsTrie$Iterator;->str_:Ljava/lang/StringBuilder;
-Landroid/icu/util/CharsTrie$Iterator;->truncateAndStop()Landroid/icu/util/CharsTrie$Entry;
-Landroid/icu/util/CharsTrie$State;-><init>()V
-Landroid/icu/util/CharsTrie$State;->chars:Ljava/lang/CharSequence;
-Landroid/icu/util/CharsTrie$State;->pos:I
-Landroid/icu/util/CharsTrie$State;->remainingMatchLength:I
-Landroid/icu/util/CharsTrie$State;->root:I
-Landroid/icu/util/CharsTrie;-><init>(Ljava/lang/CharSequence;I)V
-Landroid/icu/util/CharsTrie;->append(Ljava/lang/Appendable;I)V
-Landroid/icu/util/CharsTrie;->branchNext(III)Landroid/icu/util/BytesTrie$Result;
-Landroid/icu/util/CharsTrie;->chars_:Ljava/lang/CharSequence;
-Landroid/icu/util/CharsTrie;->current()Landroid/icu/util/BytesTrie$Result;
-Landroid/icu/util/CharsTrie;->findUniqueValue(Ljava/lang/CharSequence;IJ)J
-Landroid/icu/util/CharsTrie;->findUniqueValueFromBranch(Ljava/lang/CharSequence;IIJ)J
-Landroid/icu/util/CharsTrie;->first(I)Landroid/icu/util/BytesTrie$Result;
-Landroid/icu/util/CharsTrie;->firstForCodePoint(I)Landroid/icu/util/BytesTrie$Result;
-Landroid/icu/util/CharsTrie;->getNextBranchChars(Ljava/lang/CharSequence;IILjava/lang/Appendable;)V
-Landroid/icu/util/CharsTrie;->getNextChars(Ljava/lang/Appendable;)I
-Landroid/icu/util/CharsTrie;->getUniqueValue()J
-Landroid/icu/util/CharsTrie;->getValue()I
-Landroid/icu/util/CharsTrie;->iterator(I)Landroid/icu/util/CharsTrie$Iterator;
-Landroid/icu/util/CharsTrie;->iterator(Ljava/lang/CharSequence;II)Landroid/icu/util/CharsTrie$Iterator;
-Landroid/icu/util/CharsTrie;->jumpByDelta(Ljava/lang/CharSequence;I)I
-Landroid/icu/util/CharsTrie;->kMaxBranchLinearSubNodeLength:I
-Landroid/icu/util/CharsTrie;->kMaxLinearMatchLength:I
-Landroid/icu/util/CharsTrie;->kMaxOneUnitDelta:I
-Landroid/icu/util/CharsTrie;->kMaxOneUnitNodeValue:I
-Landroid/icu/util/CharsTrie;->kMaxOneUnitValue:I
-Landroid/icu/util/CharsTrie;->kMaxTwoUnitDelta:I
-Landroid/icu/util/CharsTrie;->kMaxTwoUnitNodeValue:I
-Landroid/icu/util/CharsTrie;->kMaxTwoUnitValue:I
-Landroid/icu/util/CharsTrie;->kMinLinearMatch:I
-Landroid/icu/util/CharsTrie;->kMinTwoUnitDeltaLead:I
-Landroid/icu/util/CharsTrie;->kMinTwoUnitNodeValueLead:I
-Landroid/icu/util/CharsTrie;->kMinTwoUnitValueLead:I
-Landroid/icu/util/CharsTrie;->kMinValueLead:I
-Landroid/icu/util/CharsTrie;->kNodeTypeMask:I
-Landroid/icu/util/CharsTrie;->kThreeUnitDeltaLead:I
-Landroid/icu/util/CharsTrie;->kThreeUnitNodeValueLead:I
-Landroid/icu/util/CharsTrie;->kThreeUnitValueLead:I
-Landroid/icu/util/CharsTrie;->kValueIsFinal:I
-Landroid/icu/util/CharsTrie;->next(I)Landroid/icu/util/BytesTrie$Result;
-Landroid/icu/util/CharsTrie;->next(Ljava/lang/CharSequence;II)Landroid/icu/util/BytesTrie$Result;
-Landroid/icu/util/CharsTrie;->nextForCodePoint(I)Landroid/icu/util/BytesTrie$Result;
-Landroid/icu/util/CharsTrie;->nextImpl(II)Landroid/icu/util/BytesTrie$Result;
-Landroid/icu/util/CharsTrie;->pos_:I
-Landroid/icu/util/CharsTrie;->readNodeValue(Ljava/lang/CharSequence;II)I
-Landroid/icu/util/CharsTrie;->readValue(Ljava/lang/CharSequence;II)I
-Landroid/icu/util/CharsTrie;->remainingMatchLength_:I
-Landroid/icu/util/CharsTrie;->reset()Landroid/icu/util/CharsTrie;
-Landroid/icu/util/CharsTrie;->resetToState(Landroid/icu/util/CharsTrie$State;)Landroid/icu/util/CharsTrie;
-Landroid/icu/util/CharsTrie;->root_:I
-Landroid/icu/util/CharsTrie;->saveState(Landroid/icu/util/CharsTrie$State;)Landroid/icu/util/CharsTrie;
-Landroid/icu/util/CharsTrie;->skipDelta(Ljava/lang/CharSequence;I)I
-Landroid/icu/util/CharsTrie;->skipNodeValue(II)I
-Landroid/icu/util/CharsTrie;->skipValue(II)I
-Landroid/icu/util/CharsTrie;->skipValue(Ljava/lang/CharSequence;I)I
-Landroid/icu/util/CharsTrie;->stop()V
-Landroid/icu/util/CharsTrie;->valueResults_:[Landroid/icu/util/BytesTrie$Result;
-Landroid/icu/util/CharsTrieBuilder;-><init>()V
-Landroid/icu/util/CharsTrieBuilder;->add(Ljava/lang/CharSequence;I)Landroid/icu/util/CharsTrieBuilder;
-Landroid/icu/util/CharsTrieBuilder;->build(Landroid/icu/util/StringTrieBuilder$Option;)Landroid/icu/util/CharsTrie;
-Landroid/icu/util/CharsTrieBuilder;->buildChars(Landroid/icu/util/StringTrieBuilder$Option;)V
-Landroid/icu/util/CharsTrieBuilder;->buildCharSequence(Landroid/icu/util/StringTrieBuilder$Option;)Ljava/lang/CharSequence;
-Landroid/icu/util/CharsTrieBuilder;->chars:[C
-Landroid/icu/util/CharsTrieBuilder;->charsLength:I
-Landroid/icu/util/CharsTrieBuilder;->clear()Landroid/icu/util/CharsTrieBuilder;
-Landroid/icu/util/CharsTrieBuilder;->ensureCapacity(I)V
-Landroid/icu/util/CharsTrieBuilder;->getMaxBranchLinearSubNodeLength()I
-Landroid/icu/util/CharsTrieBuilder;->getMaxLinearMatchLength()I
-Landroid/icu/util/CharsTrieBuilder;->getMinLinearMatch()I
-Landroid/icu/util/CharsTrieBuilder;->intUnits:[C
-Landroid/icu/util/CharsTrieBuilder;->matchNodesCanHaveValues()Z
-Landroid/icu/util/CharsTrieBuilder;->write(I)I
-Landroid/icu/util/CharsTrieBuilder;->write(II)I
-Landroid/icu/util/CharsTrieBuilder;->write([CI)I
-Landroid/icu/util/CharsTrieBuilder;->writeDeltaTo(I)I
-Landroid/icu/util/CharsTrieBuilder;->writeValueAndFinal(IZ)I
-Landroid/icu/util/CharsTrieBuilder;->writeValueAndType(ZII)I
-Landroid/icu/util/ChineseCalendar;-><init>(Landroid/icu/util/TimeZone;Landroid/icu/util/ULocale;ILandroid/icu/util/TimeZone;)V
-Landroid/icu/util/ChineseCalendar;->astro:Landroid/icu/impl/CalendarAstronomer;
-Landroid/icu/util/ChineseCalendar;->CHINA_ZONE:Landroid/icu/util/TimeZone;
-Landroid/icu/util/ChineseCalendar;->CHINESE_DATE_PRECEDENCE:[[[I
-Landroid/icu/util/ChineseCalendar;->CHINESE_EPOCH_YEAR:I
-Landroid/icu/util/ChineseCalendar;->computeChineseFields(IIIZ)V
-Landroid/icu/util/ChineseCalendar;->daysToMillis(I)J
-Landroid/icu/util/ChineseCalendar;->epochYear:I
-Landroid/icu/util/ChineseCalendar;->hasNoMajorSolarTerm(I)Z
-Landroid/icu/util/ChineseCalendar;->haveDefaultCentury()Z
-Landroid/icu/util/ChineseCalendar;->isLeapMonthBetween(II)Z
-Landroid/icu/util/ChineseCalendar;->isLeapYear:Z
-Landroid/icu/util/ChineseCalendar;->LIMITS:[[I
-Landroid/icu/util/ChineseCalendar;->majorSolarTerm(I)I
-Landroid/icu/util/ChineseCalendar;->millisToDays(J)I
-Landroid/icu/util/ChineseCalendar;->newMoonNear(IZ)I
-Landroid/icu/util/ChineseCalendar;->newYear(I)I
-Landroid/icu/util/ChineseCalendar;->newYearCache:Landroid/icu/impl/CalendarCache;
-Landroid/icu/util/ChineseCalendar;->offsetMonth(III)V
-Landroid/icu/util/ChineseCalendar;->synodicMonthsBetween(II)I
-Landroid/icu/util/ChineseCalendar;->SYNODIC_GAP:I
-Landroid/icu/util/ChineseCalendar;->winterSolstice(I)I
-Landroid/icu/util/ChineseCalendar;->winterSolsticeCache:Landroid/icu/impl/CalendarCache;
-Landroid/icu/util/ChineseCalendar;->zoneAstro:Landroid/icu/util/TimeZone;
-Landroid/icu/util/CompactByteArray;-><init>()V
-Landroid/icu/util/CompactByteArray;-><init>(B)V
-Landroid/icu/util/CompactByteArray;-><init>(Ljava/lang/String;Ljava/lang/String;)V
-Landroid/icu/util/CompactByteArray;-><init>([C[B)V
-Landroid/icu/util/CompactByteArray;->arrayRegionMatches([BI[BII)Z
-Landroid/icu/util/CompactByteArray;->BLOCKCOUNT:I
-Landroid/icu/util/CompactByteArray;->BLOCKMASK:I
-Landroid/icu/util/CompactByteArray;->BLOCKSHIFT:I
-Landroid/icu/util/CompactByteArray;->blockTouched(I)Z
-Landroid/icu/util/CompactByteArray;->compact()V
-Landroid/icu/util/CompactByteArray;->compact(Z)V
-Landroid/icu/util/CompactByteArray;->defaultValue:B
-Landroid/icu/util/CompactByteArray;->elementAt(C)B
-Landroid/icu/util/CompactByteArray;->expand()V
-Landroid/icu/util/CompactByteArray;->getIndexArray()[C
-Landroid/icu/util/CompactByteArray;->getValueArray()[B
-Landroid/icu/util/CompactByteArray;->hashes:[I
-Landroid/icu/util/CompactByteArray;->INDEXCOUNT:I
-Landroid/icu/util/CompactByteArray;->INDEXSHIFT:I
-Landroid/icu/util/CompactByteArray;->indices:[C
-Landroid/icu/util/CompactByteArray;->isCompact:Z
-Landroid/icu/util/CompactByteArray;->setElementAt(CB)V
-Landroid/icu/util/CompactByteArray;->setElementAt(CCB)V
-Landroid/icu/util/CompactByteArray;->touchBlock(II)V
-Landroid/icu/util/CompactByteArray;->UNICODECOUNT:I
-Landroid/icu/util/CompactByteArray;->values:[B
-Landroid/icu/util/CompactCharArray;-><init>()V
-Landroid/icu/util/CompactCharArray;-><init>(C)V
-Landroid/icu/util/CompactCharArray;-><init>(Ljava/lang/String;Ljava/lang/String;)V
-Landroid/icu/util/CompactCharArray;-><init>([C[C)V
-Landroid/icu/util/CompactCharArray;->arrayRegionMatches([CI[CII)Z
-Landroid/icu/util/CompactCharArray;->BLOCKCOUNT:I
-Landroid/icu/util/CompactCharArray;->BLOCKMASK:I
-Landroid/icu/util/CompactCharArray;->BLOCKSHIFT:I
-Landroid/icu/util/CompactCharArray;->blockTouched(I)Z
-Landroid/icu/util/CompactCharArray;->compact()V
-Landroid/icu/util/CompactCharArray;->compact(Z)V
-Landroid/icu/util/CompactCharArray;->defaultValue:C
-Landroid/icu/util/CompactCharArray;->elementAt(C)C
-Landroid/icu/util/CompactCharArray;->expand()V
-Landroid/icu/util/CompactCharArray;->FindOverlappingPosition(I[CI)I
-Landroid/icu/util/CompactCharArray;->getIndexArray()[C
-Landroid/icu/util/CompactCharArray;->getValueArray()[C
-Landroid/icu/util/CompactCharArray;->hashes:[I
-Landroid/icu/util/CompactCharArray;->INDEXCOUNT:I
-Landroid/icu/util/CompactCharArray;->INDEXSHIFT:I
-Landroid/icu/util/CompactCharArray;->indices:[C
-Landroid/icu/util/CompactCharArray;->isCompact:Z
-Landroid/icu/util/CompactCharArray;->setElementAt(CC)V
-Landroid/icu/util/CompactCharArray;->setElementAt(CCC)V
-Landroid/icu/util/CompactCharArray;->touchBlock(II)V
-Landroid/icu/util/CompactCharArray;->UNICODECOUNT:I
-Landroid/icu/util/CompactCharArray;->values:[C
-Landroid/icu/util/CopticCalendar;->BCE:I
-Landroid/icu/util/CopticCalendar;->CE:I
-Landroid/icu/util/CopticCalendar;->copticToJD(JII)I
-Landroid/icu/util/CopticCalendar;->getJDEpochOffset()I
-Landroid/icu/util/CopticCalendar;->JD_EPOCH_OFFSET:I
-Landroid/icu/util/Currency$CurrencyNameResultHandler;-><init>()V
-Landroid/icu/util/Currency$CurrencyNameResultHandler;->bestCurrencyISOCode:Ljava/lang/String;
-Landroid/icu/util/Currency$CurrencyNameResultHandler;->bestMatchLength:I
-Landroid/icu/util/Currency$CurrencyNameResultHandler;->getBestCurrencyISOCode()Ljava/lang/String;
-Landroid/icu/util/Currency$CurrencyNameResultHandler;->getBestMatchLength()I
-Landroid/icu/util/Currency$CurrencyNameResultHandler;->handlePrefixMatch(ILjava/util/Iterator;)Z
-Landroid/icu/util/Currency$CurrencyStringInfo;-><init>(Ljava/lang/String;Ljava/lang/String;)V
-Landroid/icu/util/Currency$CurrencyStringInfo;->currencyString:Ljava/lang/String;
-Landroid/icu/util/Currency$CurrencyStringInfo;->getCurrencyString()Ljava/lang/String;
-Landroid/icu/util/Currency$CurrencyStringInfo;->getISOCode()Ljava/lang/String;
-Landroid/icu/util/Currency$CurrencyStringInfo;->isoCode:Ljava/lang/String;
-Landroid/icu/util/Currency$EquivalenceRelation;-><init>()V
-Landroid/icu/util/Currency$EquivalenceRelation;->data:Ljava/util/Map;
-Landroid/icu/util/Currency$EquivalenceRelation;->get(Ljava/lang/Object;)Ljava/util/Set;
-Landroid/icu/util/Currency$ServiceShim;-><init>()V
-Landroid/icu/util/Currency$ServiceShim;->createInstance(Landroid/icu/util/ULocale;)Landroid/icu/util/Currency;
-Landroid/icu/util/Currency$ServiceShim;->getAvailableLocales()[Ljava/util/Locale;
-Landroid/icu/util/Currency$ServiceShim;->getAvailableULocales()[Landroid/icu/util/ULocale;
-Landroid/icu/util/Currency$ServiceShim;->registerInstance(Landroid/icu/util/Currency;Landroid/icu/util/ULocale;)Ljava/lang/Object;
-Landroid/icu/util/Currency$ServiceShim;->unregister(Ljava/lang/Object;)Z
-Landroid/icu/util/Currency;->ALL_CODES_AS_SET:Ljava/lang/ref/SoftReference;
-Landroid/icu/util/Currency;->ALL_TENDER_CODES:Ljava/lang/ref/SoftReference;
-Landroid/icu/util/Currency;->createCurrency(Landroid/icu/util/ULocale;)Landroid/icu/util/Currency;
-Landroid/icu/util/Currency;->CURRENCY_NAME_CACHE:Landroid/icu/impl/ICUCache;
-Landroid/icu/util/Currency;->DEBUG:Z
-Landroid/icu/util/Currency;->EMPTY_STRING_ARRAY:[Ljava/lang/String;
-Landroid/icu/util/Currency;->EQUIVALENT_CURRENCY_SYMBOLS:Landroid/icu/util/Currency$EquivalenceRelation;
-Landroid/icu/util/Currency;->EUR_STR:Ljava/lang/String;
-Landroid/icu/util/Currency;->fromJavaCurrency(Ljava/util/Currency;)Landroid/icu/util/Currency;
-Landroid/icu/util/Currency;->getAllCurrenciesAsSet()Ljava/util/Set;
-Landroid/icu/util/Currency;->getAllTenderCurrencies()Ljava/util/List;
-Landroid/icu/util/Currency;->getCurrencyTrieVec(Landroid/icu/util/ULocale;)Ljava/util/List;
-Landroid/icu/util/Currency;->getShim()Landroid/icu/util/Currency$ServiceShim;
-Landroid/icu/util/Currency;->getTenderCurrencies(Landroid/icu/text/CurrencyMetaInfo$CurrencyFilter;)Ljava/util/List;
-Landroid/icu/util/Currency;->isAlpha3Code(Ljava/lang/String;)Z
-Landroid/icu/util/Currency;->isoCode:Ljava/lang/String;
-Landroid/icu/util/Currency;->loadCurrency(Ljava/lang/String;)Landroid/icu/util/Currency;
-Landroid/icu/util/Currency;->NARROW_SYMBOL_NAME:I
-Landroid/icu/util/Currency;->openParseState(Landroid/icu/util/ULocale;II)Landroid/icu/impl/TextTrieMap$ParseState;
-Landroid/icu/util/Currency;->parse(Landroid/icu/util/ULocale;Ljava/lang/String;ILjava/text/ParsePosition;)Ljava/lang/String;
-Landroid/icu/util/Currency;->POW10:[I
-Landroid/icu/util/Currency;->regionCurrencyCache:Landroid/icu/impl/CacheBase;
-Landroid/icu/util/Currency;->registerInstance(Landroid/icu/util/Currency;Landroid/icu/util/ULocale;)Ljava/lang/Object;
-Landroid/icu/util/Currency;->setupCurrencyTrieVec(Landroid/icu/util/ULocale;Ljava/util/List;)V
-Landroid/icu/util/Currency;->shim:Landroid/icu/util/Currency$ServiceShim;
-Landroid/icu/util/Currency;->toJavaCurrency()Ljava/util/Currency;
-Landroid/icu/util/Currency;->UND:Landroid/icu/util/ULocale;
-Landroid/icu/util/Currency;->unregister(Ljava/lang/Object;)Z
-Landroid/icu/util/CurrencyAmount;-><init>(DLjava/util/Currency;)V
-Landroid/icu/util/CurrencyAmount;-><init>(Ljava/lang/Number;Ljava/util/Currency;)V
-Landroid/icu/util/DangiCalendar;-><init>()V
-Landroid/icu/util/DangiCalendar;-><init>(Landroid/icu/util/TimeZone;Landroid/icu/util/ULocale;)V
-Landroid/icu/util/DangiCalendar;-><init>(Ljava/util/Date;)V
-Landroid/icu/util/DangiCalendar;->DANGI_EPOCH_YEAR:I
-Landroid/icu/util/DangiCalendar;->KOREA_ZONE:Landroid/icu/util/TimeZone;
-Landroid/icu/util/DateInterval;->fromDate:J
-Landroid/icu/util/DateInterval;->toDate:J
-Landroid/icu/util/DateRule;->firstAfter(Ljava/util/Date;)Ljava/util/Date;
-Landroid/icu/util/DateRule;->firstBetween(Ljava/util/Date;Ljava/util/Date;)Ljava/util/Date;
-Landroid/icu/util/DateRule;->isBetween(Ljava/util/Date;Ljava/util/Date;)Z
-Landroid/icu/util/DateRule;->isOn(Ljava/util/Date;)Z
-Landroid/icu/util/DateTimeRule;-><init>(IIII)V
-Landroid/icu/util/DateTimeRule;-><init>(IIIII)V
-Landroid/icu/util/DateTimeRule;-><init>(IIIZII)V
-Landroid/icu/util/DateTimeRule;->dateRuleType:I
-Landroid/icu/util/DateTimeRule;->dayOfMonth:I
-Landroid/icu/util/DateTimeRule;->dayOfWeek:I
-Landroid/icu/util/DateTimeRule;->DOM:I
-Landroid/icu/util/DateTimeRule;->DOW:I
-Landroid/icu/util/DateTimeRule;->DOWSTR:[Ljava/lang/String;
-Landroid/icu/util/DateTimeRule;->DOW_GEQ_DOM:I
-Landroid/icu/util/DateTimeRule;->DOW_LEQ_DOM:I
-Landroid/icu/util/DateTimeRule;->getDateRuleType()I
-Landroid/icu/util/DateTimeRule;->getRuleDayOfMonth()I
-Landroid/icu/util/DateTimeRule;->getRuleDayOfWeek()I
-Landroid/icu/util/DateTimeRule;->getRuleMillisInDay()I
-Landroid/icu/util/DateTimeRule;->getRuleMonth()I
-Landroid/icu/util/DateTimeRule;->getRuleWeekInMonth()I
-Landroid/icu/util/DateTimeRule;->getTimeRuleType()I
-Landroid/icu/util/DateTimeRule;->millisInDay:I
-Landroid/icu/util/DateTimeRule;->MONSTR:[Ljava/lang/String;
-Landroid/icu/util/DateTimeRule;->month:I
-Landroid/icu/util/DateTimeRule;->STANDARD_TIME:I
-Landroid/icu/util/DateTimeRule;->timeRuleType:I
-Landroid/icu/util/DateTimeRule;->UTC_TIME:I
-Landroid/icu/util/DateTimeRule;->WALL_TIME:I
-Landroid/icu/util/DateTimeRule;->weekInMonth:I
-Landroid/icu/util/EasterHoliday;-><init>(ILjava/lang/String;)V
-Landroid/icu/util/EasterHoliday;-><init>(IZLjava/lang/String;)V
-Landroid/icu/util/EasterHoliday;-><init>(Ljava/lang/String;)V
-Landroid/icu/util/EasterHoliday;->ASCENSION:Landroid/icu/util/EasterHoliday;
-Landroid/icu/util/EasterHoliday;->ASH_WEDNESDAY:Landroid/icu/util/EasterHoliday;
-Landroid/icu/util/EasterHoliday;->CORPUS_CHRISTI:Landroid/icu/util/EasterHoliday;
-Landroid/icu/util/EasterHoliday;->EASTER_MONDAY:Landroid/icu/util/EasterHoliday;
-Landroid/icu/util/EasterHoliday;->EASTER_SUNDAY:Landroid/icu/util/EasterHoliday;
-Landroid/icu/util/EasterHoliday;->GOOD_FRIDAY:Landroid/icu/util/EasterHoliday;
-Landroid/icu/util/EasterHoliday;->MAUNDY_THURSDAY:Landroid/icu/util/EasterHoliday;
-Landroid/icu/util/EasterHoliday;->PALM_SUNDAY:Landroid/icu/util/EasterHoliday;
-Landroid/icu/util/EasterHoliday;->PENTECOST:Landroid/icu/util/EasterHoliday;
-Landroid/icu/util/EasterHoliday;->SHROVE_TUESDAY:Landroid/icu/util/EasterHoliday;
-Landroid/icu/util/EasterHoliday;->WHIT_MONDAY:Landroid/icu/util/EasterHoliday;
-Landroid/icu/util/EasterHoliday;->WHIT_SUNDAY:Landroid/icu/util/EasterHoliday;
-Landroid/icu/util/EthiopicCalendar;->AMETE_ALEM:I
-Landroid/icu/util/EthiopicCalendar;->AMETE_ALEM_ERA:I
-Landroid/icu/util/EthiopicCalendar;->AMETE_MIHRET:I
-Landroid/icu/util/EthiopicCalendar;->AMETE_MIHRET_DELTA:I
-Landroid/icu/util/EthiopicCalendar;->AMETE_MIHRET_ERA:I
-Landroid/icu/util/EthiopicCalendar;->eraType:I
-Landroid/icu/util/EthiopicCalendar;->EthiopicToJD(JII)I
-Landroid/icu/util/EthiopicCalendar;->getJDEpochOffset()I
-Landroid/icu/util/EthiopicCalendar;->JD_EPOCH_OFFSET_AMETE_MIHRET:I
-Landroid/icu/util/EthiopicCalendar;->setCalcTypeForLocale(Landroid/icu/util/ULocale;)V
-Landroid/icu/util/GenderInfo$Cache;-><init>()V
-Landroid/icu/util/GenderInfo$Cache;->cache:Landroid/icu/impl/ICUCache;
-Landroid/icu/util/GenderInfo$Cache;->get(Landroid/icu/util/ULocale;)Landroid/icu/util/GenderInfo;
-Landroid/icu/util/GenderInfo$Cache;->load(Landroid/icu/util/ULocale;)Landroid/icu/util/GenderInfo;
-Landroid/icu/util/GenderInfo$Gender;->FEMALE:Landroid/icu/util/GenderInfo$Gender;
-Landroid/icu/util/GenderInfo$Gender;->MALE:Landroid/icu/util/GenderInfo$Gender;
-Landroid/icu/util/GenderInfo$Gender;->OTHER:Landroid/icu/util/GenderInfo$Gender;
-Landroid/icu/util/GenderInfo$Gender;->valueOf(Ljava/lang/String;)Landroid/icu/util/GenderInfo$Gender;
-Landroid/icu/util/GenderInfo$Gender;->values()[Landroid/icu/util/GenderInfo$Gender;
-Landroid/icu/util/GenderInfo$ListGenderStyle;->fromName(Ljava/lang/String;)Landroid/icu/util/GenderInfo$ListGenderStyle;
-Landroid/icu/util/GenderInfo$ListGenderStyle;->fromNameMap:Ljava/util/Map;
-Landroid/icu/util/GenderInfo$ListGenderStyle;->MALE_TAINTS:Landroid/icu/util/GenderInfo$ListGenderStyle;
-Landroid/icu/util/GenderInfo$ListGenderStyle;->MIXED_NEUTRAL:Landroid/icu/util/GenderInfo$ListGenderStyle;
-Landroid/icu/util/GenderInfo$ListGenderStyle;->NEUTRAL:Landroid/icu/util/GenderInfo$ListGenderStyle;
-Landroid/icu/util/GenderInfo$ListGenderStyle;->valueOf(Ljava/lang/String;)Landroid/icu/util/GenderInfo$ListGenderStyle;
-Landroid/icu/util/GenderInfo$ListGenderStyle;->values()[Landroid/icu/util/GenderInfo$ListGenderStyle;
-Landroid/icu/util/GenderInfo;-><init>(Landroid/icu/util/GenderInfo$ListGenderStyle;)V
-Landroid/icu/util/GenderInfo;->genderInfoCache:Landroid/icu/util/GenderInfo$Cache;
-Landroid/icu/util/GenderInfo;->getInstance(Landroid/icu/util/ULocale;)Landroid/icu/util/GenderInfo;
-Landroid/icu/util/GenderInfo;->getInstance(Ljava/util/Locale;)Landroid/icu/util/GenderInfo;
-Landroid/icu/util/GenderInfo;->getListGender(Ljava/util/List;)Landroid/icu/util/GenderInfo$Gender;
-Landroid/icu/util/GenderInfo;->neutral:Landroid/icu/util/GenderInfo;
-Landroid/icu/util/GenderInfo;->style:Landroid/icu/util/GenderInfo$ListGenderStyle;
-Landroid/icu/util/GlobalizationPreferences;-><init>()V
-Landroid/icu/util/GlobalizationPreferences;->available_locales:Ljava/util/HashMap;
-Landroid/icu/util/GlobalizationPreferences;->BI_CHARACTER:I
-Landroid/icu/util/GlobalizationPreferences;->BI_LIMIT:I
-Landroid/icu/util/GlobalizationPreferences;->BI_LINE:I
-Landroid/icu/util/GlobalizationPreferences;->BI_SENTENCE:I
-Landroid/icu/util/GlobalizationPreferences;->BI_TITLE:I
-Landroid/icu/util/GlobalizationPreferences;->BI_WORD:I
-Landroid/icu/util/GlobalizationPreferences;->breakIterators:[Landroid/icu/text/BreakIterator;
-Landroid/icu/util/GlobalizationPreferences;->calendar:Landroid/icu/util/Calendar;
-Landroid/icu/util/GlobalizationPreferences;->collator:Landroid/icu/text/Collator;
-Landroid/icu/util/GlobalizationPreferences;->currency:Landroid/icu/util/Currency;
-Landroid/icu/util/GlobalizationPreferences;->dateFormats:[[Landroid/icu/text/DateFormat;
-Landroid/icu/util/GlobalizationPreferences;->DF_FULL:I
-Landroid/icu/util/GlobalizationPreferences;->DF_LIMIT:I
-Landroid/icu/util/GlobalizationPreferences;->DF_LONG:I
-Landroid/icu/util/GlobalizationPreferences;->DF_MEDIUM:I
-Landroid/icu/util/GlobalizationPreferences;->DF_NONE:I
-Landroid/icu/util/GlobalizationPreferences;->DF_SHORT:I
-Landroid/icu/util/GlobalizationPreferences;->frozen:Z
-Landroid/icu/util/GlobalizationPreferences;->getAvailableLocale(I)Landroid/icu/util/ULocale;
-Landroid/icu/util/GlobalizationPreferences;->getBreakIterator(I)Landroid/icu/text/BreakIterator;
-Landroid/icu/util/GlobalizationPreferences;->getCalendar()Landroid/icu/util/Calendar;
-Landroid/icu/util/GlobalizationPreferences;->getCollator()Landroid/icu/text/Collator;
-Landroid/icu/util/GlobalizationPreferences;->getCurrency()Landroid/icu/util/Currency;
-Landroid/icu/util/GlobalizationPreferences;->getDateFormat(II)Landroid/icu/text/DateFormat;
-Landroid/icu/util/GlobalizationPreferences;->getDisplayName(Ljava/lang/String;I)Ljava/lang/String;
-Landroid/icu/util/GlobalizationPreferences;->getLocale(I)Landroid/icu/util/ULocale;
-Landroid/icu/util/GlobalizationPreferences;->getLocales()Ljava/util/List;
-Landroid/icu/util/GlobalizationPreferences;->getNumberFormat(I)Landroid/icu/text/NumberFormat;
-Landroid/icu/util/GlobalizationPreferences;->getResourceBundle(Ljava/lang/String;)Ljava/util/ResourceBundle;
-Landroid/icu/util/GlobalizationPreferences;->getResourceBundle(Ljava/lang/String;Ljava/lang/ClassLoader;)Ljava/util/ResourceBundle;
-Landroid/icu/util/GlobalizationPreferences;->getTerritory()Ljava/lang/String;
-Landroid/icu/util/GlobalizationPreferences;->getTimeZone()Landroid/icu/util/TimeZone;
-Landroid/icu/util/GlobalizationPreferences;->guessBreakIterator(I)Landroid/icu/text/BreakIterator;
-Landroid/icu/util/GlobalizationPreferences;->guessCalendar()Landroid/icu/util/Calendar;
-Landroid/icu/util/GlobalizationPreferences;->guessCollator()Landroid/icu/text/Collator;
-Landroid/icu/util/GlobalizationPreferences;->guessCurrency()Landroid/icu/util/Currency;
-Landroid/icu/util/GlobalizationPreferences;->guessDateFormat(II)Landroid/icu/text/DateFormat;
-Landroid/icu/util/GlobalizationPreferences;->guessLocales()Ljava/util/List;
-Landroid/icu/util/GlobalizationPreferences;->guessNumberFormat(I)Landroid/icu/text/NumberFormat;
-Landroid/icu/util/GlobalizationPreferences;->guessTerritory()Ljava/lang/String;
-Landroid/icu/util/GlobalizationPreferences;->guessTimeZone()Landroid/icu/util/TimeZone;
-Landroid/icu/util/GlobalizationPreferences;->ID_CURRENCY:I
-Landroid/icu/util/GlobalizationPreferences;->ID_CURRENCY_SYMBOL:I
-Landroid/icu/util/GlobalizationPreferences;->ID_KEYWORD:I
-Landroid/icu/util/GlobalizationPreferences;->ID_KEYWORD_VALUE:I
-Landroid/icu/util/GlobalizationPreferences;->ID_LANGUAGE:I
-Landroid/icu/util/GlobalizationPreferences;->ID_LOCALE:I
-Landroid/icu/util/GlobalizationPreferences;->ID_SCRIPT:I
-Landroid/icu/util/GlobalizationPreferences;->ID_TERRITORY:I
-Landroid/icu/util/GlobalizationPreferences;->ID_TIMEZONE:I
-Landroid/icu/util/GlobalizationPreferences;->ID_VARIANT:I
-Landroid/icu/util/GlobalizationPreferences;->implicitLocales:Ljava/util/List;
-Landroid/icu/util/GlobalizationPreferences;->isAvailableLocale(Landroid/icu/util/ULocale;I)Z
-Landroid/icu/util/GlobalizationPreferences;->language_territory_hack:[[Ljava/lang/String;
-Landroid/icu/util/GlobalizationPreferences;->language_territory_hack_map:Ljava/util/Map;
-Landroid/icu/util/GlobalizationPreferences;->locales:Ljava/util/List;
-Landroid/icu/util/GlobalizationPreferences;->NF_CURRENCY:I
-Landroid/icu/util/GlobalizationPreferences;->NF_INTEGER:I
-Landroid/icu/util/GlobalizationPreferences;->NF_LIMIT:I
-Landroid/icu/util/GlobalizationPreferences;->NF_NUMBER:I
-Landroid/icu/util/GlobalizationPreferences;->NF_PERCENT:I
-Landroid/icu/util/GlobalizationPreferences;->NF_SCIENTIFIC:I
-Landroid/icu/util/GlobalizationPreferences;->numberFormats:[Landroid/icu/text/NumberFormat;
-Landroid/icu/util/GlobalizationPreferences;->processLocales(Ljava/util/List;)Ljava/util/List;
-Landroid/icu/util/GlobalizationPreferences;->reset()Landroid/icu/util/GlobalizationPreferences;
-Landroid/icu/util/GlobalizationPreferences;->setBreakIterator(ILandroid/icu/text/BreakIterator;)Landroid/icu/util/GlobalizationPreferences;
-Landroid/icu/util/GlobalizationPreferences;->setCalendar(Landroid/icu/util/Calendar;)Landroid/icu/util/GlobalizationPreferences;
-Landroid/icu/util/GlobalizationPreferences;->setCollator(Landroid/icu/text/Collator;)Landroid/icu/util/GlobalizationPreferences;
-Landroid/icu/util/GlobalizationPreferences;->setCurrency(Landroid/icu/util/Currency;)Landroid/icu/util/GlobalizationPreferences;
-Landroid/icu/util/GlobalizationPreferences;->setDateFormat(IILandroid/icu/text/DateFormat;)Landroid/icu/util/GlobalizationPreferences;
-Landroid/icu/util/GlobalizationPreferences;->setLocale(Landroid/icu/util/ULocale;)Landroid/icu/util/GlobalizationPreferences;
-Landroid/icu/util/GlobalizationPreferences;->setLocales(Ljava/lang/String;)Landroid/icu/util/GlobalizationPreferences;
-Landroid/icu/util/GlobalizationPreferences;->setLocales(Ljava/util/List;)Landroid/icu/util/GlobalizationPreferences;
-Landroid/icu/util/GlobalizationPreferences;->setLocales([Landroid/icu/util/ULocale;)Landroid/icu/util/GlobalizationPreferences;
-Landroid/icu/util/GlobalizationPreferences;->setNumberFormat(ILandroid/icu/text/NumberFormat;)Landroid/icu/util/GlobalizationPreferences;
-Landroid/icu/util/GlobalizationPreferences;->setTerritory(Ljava/lang/String;)Landroid/icu/util/GlobalizationPreferences;
-Landroid/icu/util/GlobalizationPreferences;->setTimeZone(Landroid/icu/util/TimeZone;)Landroid/icu/util/GlobalizationPreferences;
-Landroid/icu/util/GlobalizationPreferences;->territory:Ljava/lang/String;
-Landroid/icu/util/GlobalizationPreferences;->territory_tzid_hack:[[Ljava/lang/String;
-Landroid/icu/util/GlobalizationPreferences;->territory_tzid_hack_map:Ljava/util/Map;
-Landroid/icu/util/GlobalizationPreferences;->timezone:Landroid/icu/util/TimeZone;
-Landroid/icu/util/GlobalizationPreferences;->TYPE_BREAKITERATOR:I
-Landroid/icu/util/GlobalizationPreferences;->TYPE_CALENDAR:I
-Landroid/icu/util/GlobalizationPreferences;->TYPE_COLLATOR:I
-Landroid/icu/util/GlobalizationPreferences;->TYPE_DATEFORMAT:I
-Landroid/icu/util/GlobalizationPreferences;->TYPE_GENERIC:I
-Landroid/icu/util/GlobalizationPreferences;->TYPE_LIMIT:I
-Landroid/icu/util/GlobalizationPreferences;->TYPE_NUMBERFORMAT:I
-Landroid/icu/util/GregorianCalendar;->cutoverJulianDay:I
-Landroid/icu/util/GregorianCalendar;->EPOCH_YEAR:I
-Landroid/icu/util/GregorianCalendar;->gregorianCutover:J
-Landroid/icu/util/GregorianCalendar;->gregorianCutoverYear:I
-Landroid/icu/util/GregorianCalendar;->inDaylightTime()Z
-Landroid/icu/util/GregorianCalendar;->LIMITS:[[I
-Landroid/icu/util/GregorianCalendar;->MONTH_COUNT:[[I
-Landroid/icu/util/HebrewCalendar;->BAHARAD:J
-Landroid/icu/util/HebrewCalendar;->cache:Landroid/icu/impl/CalendarCache;
-Landroid/icu/util/HebrewCalendar;->DAY_PARTS:J
-Landroid/icu/util/HebrewCalendar;->HOUR_PARTS:J
-Landroid/icu/util/HebrewCalendar;->isLeapYear(I)Z
-Landroid/icu/util/HebrewCalendar;->LEAP_MONTH_START:[[I
-Landroid/icu/util/HebrewCalendar;->LIMITS:[[I
-Landroid/icu/util/HebrewCalendar;->monthsInYear(I)I
-Landroid/icu/util/HebrewCalendar;->MONTH_DAYS:I
-Landroid/icu/util/HebrewCalendar;->MONTH_FRACT:J
-Landroid/icu/util/HebrewCalendar;->MONTH_LENGTH:[[I
-Landroid/icu/util/HebrewCalendar;->MONTH_PARTS:J
-Landroid/icu/util/HebrewCalendar;->MONTH_START:[[I
-Landroid/icu/util/HebrewCalendar;->startOfYear(I)J
-Landroid/icu/util/HebrewCalendar;->yearType(I)I
-Landroid/icu/util/HebrewHoliday;-><init>(IIILjava/lang/String;)V
-Landroid/icu/util/HebrewHoliday;-><init>(IILjava/lang/String;)V
-Landroid/icu/util/HebrewHoliday;->ESTHER:Landroid/icu/util/HebrewHoliday;
-Landroid/icu/util/HebrewHoliday;->gCalendar:Landroid/icu/util/HebrewCalendar;
-Landroid/icu/util/HebrewHoliday;->GEDALIAH:Landroid/icu/util/HebrewHoliday;
-Landroid/icu/util/HebrewHoliday;->HANUKKAH:Landroid/icu/util/HebrewHoliday;
-Landroid/icu/util/HebrewHoliday;->HOSHANAH_RABBAH:Landroid/icu/util/HebrewHoliday;
-Landroid/icu/util/HebrewHoliday;->LAG_BOMER:Landroid/icu/util/HebrewHoliday;
-Landroid/icu/util/HebrewHoliday;->PASSOVER:Landroid/icu/util/HebrewHoliday;
-Landroid/icu/util/HebrewHoliday;->PESACH_SHEINI:Landroid/icu/util/HebrewHoliday;
-Landroid/icu/util/HebrewHoliday;->PURIM:Landroid/icu/util/HebrewHoliday;
-Landroid/icu/util/HebrewHoliday;->ROSH_HASHANAH:Landroid/icu/util/HebrewHoliday;
-Landroid/icu/util/HebrewHoliday;->SELIHOT:Landroid/icu/util/HebrewHoliday;
-Landroid/icu/util/HebrewHoliday;->SHAVUOT:Landroid/icu/util/HebrewHoliday;
-Landroid/icu/util/HebrewHoliday;->SHEMINI_ATZERET:Landroid/icu/util/HebrewHoliday;
-Landroid/icu/util/HebrewHoliday;->SHUSHAN_PURIM:Landroid/icu/util/HebrewHoliday;
-Landroid/icu/util/HebrewHoliday;->SIMCHAT_TORAH:Landroid/icu/util/HebrewHoliday;
-Landroid/icu/util/HebrewHoliday;->SUKKOT:Landroid/icu/util/HebrewHoliday;
-Landroid/icu/util/HebrewHoliday;->TAMMUZ_17:Landroid/icu/util/HebrewHoliday;
-Landroid/icu/util/HebrewHoliday;->TEVET_10:Landroid/icu/util/HebrewHoliday;
-Landroid/icu/util/HebrewHoliday;->TISHA_BAV:Landroid/icu/util/HebrewHoliday;
-Landroid/icu/util/HebrewHoliday;->TU_BSHEVAT:Landroid/icu/util/HebrewHoliday;
-Landroid/icu/util/HebrewHoliday;->YOM_HAATZMAUT:Landroid/icu/util/HebrewHoliday;
-Landroid/icu/util/HebrewHoliday;->YOM_HASHOAH:Landroid/icu/util/HebrewHoliday;
-Landroid/icu/util/HebrewHoliday;->YOM_HAZIKARON:Landroid/icu/util/HebrewHoliday;
-Landroid/icu/util/HebrewHoliday;->YOM_KIPPUR:Landroid/icu/util/HebrewHoliday;
-Landroid/icu/util/HebrewHoliday;->YOM_YERUSHALAYIM:Landroid/icu/util/HebrewHoliday;
-Landroid/icu/util/Holiday;-><init>(Ljava/lang/String;Landroid/icu/util/DateRule;)V
-Landroid/icu/util/Holiday;->firstAfter(Ljava/util/Date;)Ljava/util/Date;
-Landroid/icu/util/Holiday;->firstBetween(Ljava/util/Date;Ljava/util/Date;)Ljava/util/Date;
-Landroid/icu/util/Holiday;->getDisplayName()Ljava/lang/String;
-Landroid/icu/util/Holiday;->getDisplayName(Landroid/icu/util/ULocale;)Ljava/lang/String;
-Landroid/icu/util/Holiday;->getDisplayName(Ljava/util/Locale;)Ljava/lang/String;
-Landroid/icu/util/Holiday;->getHolidays()[Landroid/icu/util/Holiday;
-Landroid/icu/util/Holiday;->getHolidays(Landroid/icu/util/ULocale;)[Landroid/icu/util/Holiday;
-Landroid/icu/util/Holiday;->getHolidays(Ljava/util/Locale;)[Landroid/icu/util/Holiday;
-Landroid/icu/util/Holiday;->getRule()Landroid/icu/util/DateRule;
-Landroid/icu/util/Holiday;->isBetween(Ljava/util/Date;Ljava/util/Date;)Z
-Landroid/icu/util/Holiday;->isOn(Ljava/util/Date;)Z
-Landroid/icu/util/Holiday;->name:Ljava/lang/String;
-Landroid/icu/util/Holiday;->noHolidays:[Landroid/icu/util/Holiday;
-Landroid/icu/util/Holiday;->rule:Landroid/icu/util/DateRule;
-Landroid/icu/util/Holiday;->setRule(Landroid/icu/util/DateRule;)V
-Landroid/icu/util/ICUCloneNotSupportedException;-><init>()V
-Landroid/icu/util/ICUCloneNotSupportedException;-><init>(Ljava/lang/String;)V
-Landroid/icu/util/ICUCloneNotSupportedException;-><init>(Ljava/lang/String;Ljava/lang/Throwable;)V
-Landroid/icu/util/ICUCloneNotSupportedException;-><init>(Ljava/lang/Throwable;)V
-Landroid/icu/util/ICUException;-><init>()V
-Landroid/icu/util/ICUException;-><init>(Ljava/lang/String;)V
-Landroid/icu/util/ICUException;-><init>(Ljava/lang/String;Ljava/lang/Throwable;)V
-Landroid/icu/util/ICUException;-><init>(Ljava/lang/Throwable;)V
-Landroid/icu/util/IllformedLocaleException;->_errIdx:I
-Landroid/icu/util/IndianCalendar;->gregorianToJD(III)D
-Landroid/icu/util/IndianCalendar;->IndianToJD(III)D
-Landroid/icu/util/IndianCalendar;->INDIAN_ERA_START:I
-Landroid/icu/util/IndianCalendar;->INDIAN_YEAR_START:I
-Landroid/icu/util/IndianCalendar;->isGregorianLeap(I)Z
-Landroid/icu/util/IndianCalendar;->jdToGregorian(D)[I
-Landroid/icu/util/IndianCalendar;->LIMITS:[[I
-Landroid/icu/util/InitialTimeZoneRule;-><init>(Ljava/lang/String;II)V
-Landroid/icu/util/InitialTimeZoneRule;->getFinalStart(II)Ljava/util/Date;
-Landroid/icu/util/InitialTimeZoneRule;->getFirstStart(II)Ljava/util/Date;
-Landroid/icu/util/InitialTimeZoneRule;->getNextStart(JIIZ)Ljava/util/Date;
-Landroid/icu/util/InitialTimeZoneRule;->getPreviousStart(JIIZ)Ljava/util/Date;
-Landroid/icu/util/InitialTimeZoneRule;->isEquivalentTo(Landroid/icu/util/TimeZoneRule;)Z
-Landroid/icu/util/InitialTimeZoneRule;->isTransitionRule()Z
-Landroid/icu/util/IslamicCalendar$CalculationType;->bcpType()Ljava/lang/String;
-Landroid/icu/util/IslamicCalendar$CalculationType;->bcpType:Ljava/lang/String;
-Landroid/icu/util/IslamicCalendar;->astro:Landroid/icu/impl/CalendarAstronomer;
-Landroid/icu/util/IslamicCalendar;->ASTRONOMICAL_EPOC:J
-Landroid/icu/util/IslamicCalendar;->cache:Landroid/icu/impl/CalendarCache;
-Landroid/icu/util/IslamicCalendar;->civil:Z
-Landroid/icu/util/IslamicCalendar;->civilLeapYear(I)Z
-Landroid/icu/util/IslamicCalendar;->CIVIL_EPOC:J
-Landroid/icu/util/IslamicCalendar;->cType:Landroid/icu/util/IslamicCalendar$CalculationType;
-Landroid/icu/util/IslamicCalendar;->HIJRA_MILLIS:J
-Landroid/icu/util/IslamicCalendar;->isCivil()Z
-Landroid/icu/util/IslamicCalendar;->LIMITS:[[I
-Landroid/icu/util/IslamicCalendar;->monthStart(II)J
-Landroid/icu/util/IslamicCalendar;->moonAge(J)D
-Landroid/icu/util/IslamicCalendar;->setCalcTypeForLocale(Landroid/icu/util/ULocale;)V
-Landroid/icu/util/IslamicCalendar;->setCivil(Z)V
-Landroid/icu/util/IslamicCalendar;->trueMonthStart(J)J
-Landroid/icu/util/IslamicCalendar;->UMALQURA_MONTHLENGTH:[I
-Landroid/icu/util/IslamicCalendar;->UMALQURA_YEAR_END:I
-Landroid/icu/util/IslamicCalendar;->UMALQURA_YEAR_START:I
-Landroid/icu/util/IslamicCalendar;->UMALQURA_YEAR_START_ESTIMATE_FIX:[B
-Landroid/icu/util/IslamicCalendar;->yearStart(I)J
-Landroid/icu/util/JapaneseCalendar;->ERAS:[I
-Landroid/icu/util/JapaneseCalendar;->getDefaultDayInMonth(II)I
-Landroid/icu/util/JapaneseCalendar;->getDefaultMonthInYear(I)I
-Landroid/icu/util/JapaneseCalendar;->GREGORIAN_EPOCH:I
-Landroid/icu/util/JapaneseCalendar;->haveDefaultCentury()Z
-Landroid/icu/util/LocaleData$MeasurementSystem;-><init>()V
-Landroid/icu/util/LocaleData$PaperSize;-><init>(II)V
-Landroid/icu/util/LocaleData$PaperSize;->height:I
-Landroid/icu/util/LocaleData$PaperSize;->width:I
-Landroid/icu/util/LocaleData;-><init>()V
-Landroid/icu/util/LocaleData;->bundle:Landroid/icu/impl/ICUResourceBundle;
-Landroid/icu/util/LocaleData;->DELIMITER_COUNT:I
-Landroid/icu/util/LocaleData;->DELIMITER_TYPES:[Ljava/lang/String;
-Landroid/icu/util/LocaleData;->ES_AUXILIARY:I
-Landroid/icu/util/LocaleData;->ES_COUNT:I
-Landroid/icu/util/LocaleData;->ES_CURRENCY:I
-Landroid/icu/util/LocaleData;->ES_INDEX:I
-Landroid/icu/util/LocaleData;->ES_PUNCTUATION:I
-Landroid/icu/util/LocaleData;->ES_STANDARD:I
-Landroid/icu/util/LocaleData;->gCLDRVersion:Landroid/icu/util/VersionInfo;
-Landroid/icu/util/LocaleData;->getExemplarSet(II)Landroid/icu/text/UnicodeSet;
-Landroid/icu/util/LocaleData;->getExemplarSet(Landroid/icu/util/ULocale;I)Landroid/icu/text/UnicodeSet;
-Landroid/icu/util/LocaleData;->getExemplarSet(Landroid/icu/util/ULocale;II)Landroid/icu/text/UnicodeSet;
-Landroid/icu/util/LocaleData;->getLocaleDisplayPattern()Ljava/lang/String;
-Landroid/icu/util/LocaleData;->getLocaleSeparator()Ljava/lang/String;
-Landroid/icu/util/LocaleData;->langBundle:Landroid/icu/impl/ICUResourceBundle;
-Landroid/icu/util/LocaleData;->LOCALE_DISPLAY_PATTERN:Ljava/lang/String;
-Landroid/icu/util/LocaleData;->measurementTypeBundleForLocale(Landroid/icu/util/ULocale;Ljava/lang/String;)Landroid/icu/util/UResourceBundle;
-Landroid/icu/util/LocaleData;->MEASUREMENT_SYSTEM:Ljava/lang/String;
-Landroid/icu/util/LocaleData;->noSubstitute:Z
-Landroid/icu/util/LocaleData;->PAPER_SIZE:Ljava/lang/String;
-Landroid/icu/util/LocaleData;->PATTERN:Ljava/lang/String;
-Landroid/icu/util/LocaleData;->SEPARATOR:Ljava/lang/String;
-Landroid/icu/util/LocaleMatcher$LanguageMatcherData;-><init>()V
-Landroid/icu/util/LocaleMatcher$LanguageMatcherData;->addDistance(Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;)Landroid/icu/util/LocaleMatcher$LanguageMatcherData;
-Landroid/icu/util/LocaleMatcher$LanguageMatcherData;->addDistance(Ljava/lang/String;Ljava/lang/String;IZ)Landroid/icu/util/LocaleMatcher$LanguageMatcherData;
-Landroid/icu/util/LocaleMatcher$LanguageMatcherData;->addDistance(Ljava/lang/String;Ljava/lang/String;IZLjava/lang/String;)Landroid/icu/util/LocaleMatcher$LanguageMatcherData;
-Landroid/icu/util/LocaleMatcher$LanguageMatcherData;->frozen:Z
-Landroid/icu/util/LocaleMatcher$LanguageMatcherData;->languageScores:Landroid/icu/util/LocaleMatcher$ScoreData;
-Landroid/icu/util/LocaleMatcher$LanguageMatcherData;->match(Landroid/icu/util/ULocale;Landroid/icu/util/ULocale;Landroid/icu/util/ULocale;Landroid/icu/util/ULocale;)D
-Landroid/icu/util/LocaleMatcher$LanguageMatcherData;->matchingLanguages()Landroid/icu/impl/Relation;
-Landroid/icu/util/LocaleMatcher$LanguageMatcherData;->matchingLanguages:Landroid/icu/impl/Relation;
-Landroid/icu/util/LocaleMatcher$LanguageMatcherData;->regionScores:Landroid/icu/util/LocaleMatcher$ScoreData;
-Landroid/icu/util/LocaleMatcher$LanguageMatcherData;->scriptScores:Landroid/icu/util/LocaleMatcher$ScoreData;
-Landroid/icu/util/LocaleMatcher$Level;->language:Landroid/icu/util/LocaleMatcher$Level;
-Landroid/icu/util/LocaleMatcher$Level;->region:Landroid/icu/util/LocaleMatcher$Level;
-Landroid/icu/util/LocaleMatcher$Level;->script:Landroid/icu/util/LocaleMatcher$Level;
-Landroid/icu/util/LocaleMatcher$Level;->valueOf(Ljava/lang/String;)Landroid/icu/util/LocaleMatcher$Level;
-Landroid/icu/util/LocaleMatcher$Level;->values()[Landroid/icu/util/LocaleMatcher$Level;
-Landroid/icu/util/LocaleMatcher$Level;->worst:D
-Landroid/icu/util/LocaleMatcher$LocalePatternMatcher;-><init>(Ljava/lang/String;)V
-Landroid/icu/util/LocaleMatcher$LocalePatternMatcher;->getLanguage()Ljava/lang/String;
-Landroid/icu/util/LocaleMatcher$LocalePatternMatcher;->getLevel()Landroid/icu/util/LocaleMatcher$Level;
-Landroid/icu/util/LocaleMatcher$LocalePatternMatcher;->getRegion()Ljava/lang/String;
-Landroid/icu/util/LocaleMatcher$LocalePatternMatcher;->getScript()Ljava/lang/String;
-Landroid/icu/util/LocaleMatcher$LocalePatternMatcher;->lang:Ljava/lang/String;
-Landroid/icu/util/LocaleMatcher$LocalePatternMatcher;->level:Landroid/icu/util/LocaleMatcher$Level;
-Landroid/icu/util/LocaleMatcher$LocalePatternMatcher;->matches(Landroid/icu/util/ULocale;)Z
-Landroid/icu/util/LocaleMatcher$LocalePatternMatcher;->pattern:Ljava/util/regex/Pattern;
-Landroid/icu/util/LocaleMatcher$LocalePatternMatcher;->region:Ljava/lang/String;
-Landroid/icu/util/LocaleMatcher$LocalePatternMatcher;->script:Ljava/lang/String;
-Landroid/icu/util/LocaleMatcher$OutputDouble;-><init>()V
-Landroid/icu/util/LocaleMatcher$OutputDouble;->value:D
-Landroid/icu/util/LocaleMatcher$ScoreData;-><init>(Landroid/icu/util/LocaleMatcher$Level;)V
-Landroid/icu/util/LocaleMatcher$ScoreData;->addDataToScores(Ljava/lang/String;Ljava/lang/String;Landroid/icu/impl/Row$R3;)V
-Landroid/icu/util/LocaleMatcher$ScoreData;->frozen:Z
-Landroid/icu/util/LocaleMatcher$ScoreData;->getMatchingLanguages()Landroid/icu/impl/Relation;
-Landroid/icu/util/LocaleMatcher$ScoreData;->getRawScore(Landroid/icu/util/ULocale;Landroid/icu/util/ULocale;)D
-Landroid/icu/util/LocaleMatcher$ScoreData;->getScore(Landroid/icu/util/ULocale;Ljava/lang/String;Ljava/lang/String;Landroid/icu/util/ULocale;Ljava/lang/String;Ljava/lang/String;)D
-Landroid/icu/util/LocaleMatcher$ScoreData;->level:Landroid/icu/util/LocaleMatcher$Level;
-Landroid/icu/util/LocaleMatcher$ScoreData;->maxUnequal_changeD_sameS:D
-Landroid/icu/util/LocaleMatcher$ScoreData;->maxUnequal_changeEqual:D
-Landroid/icu/util/LocaleMatcher$ScoreData;->scores:Ljava/util/LinkedHashSet;
-Landroid/icu/util/LocaleMatcher;-><init>(Landroid/icu/util/LocalePriorityList;)V
-Landroid/icu/util/LocaleMatcher;-><init>(Landroid/icu/util/LocalePriorityList;Landroid/icu/util/LocaleMatcher$LanguageMatcherData;)V
-Landroid/icu/util/LocaleMatcher;-><init>(Landroid/icu/util/LocalePriorityList;Landroid/icu/util/LocaleMatcher$LanguageMatcherData;D)V
-Landroid/icu/util/LocaleMatcher;-><init>(Ljava/lang/String;)V
-Landroid/icu/util/LocaleMatcher;->add(Landroid/icu/util/ULocale;Ljava/lang/Double;)V
-Landroid/icu/util/LocaleMatcher;->addFiltered(Ljava/lang/String;Landroid/icu/impl/Row$R3;)V
-Landroid/icu/util/LocaleMatcher;->addLikelySubtags(Landroid/icu/util/ULocale;)Landroid/icu/util/ULocale;
-Landroid/icu/util/LocaleMatcher;->canonicalize(Landroid/icu/util/ULocale;)Landroid/icu/util/ULocale;
-Landroid/icu/util/LocaleMatcher;->canonicalMap:Ljava/util/HashMap;
-Landroid/icu/util/LocaleMatcher;->DEBUG:Z
-Landroid/icu/util/LocaleMatcher;->defaultLanguage:Landroid/icu/util/ULocale;
-Landroid/icu/util/LocaleMatcher;->defaultWritten:Landroid/icu/util/LocaleMatcher$LanguageMatcherData;
-Landroid/icu/util/LocaleMatcher;->DEFAULT_THRESHOLD:D
-Landroid/icu/util/LocaleMatcher;->desiredLanguageToPossibleLocalesToMaxLocaleToData:Ljava/util/Map;
-Landroid/icu/util/LocaleMatcher;->distance(Landroid/icu/util/ULocale;Landroid/icu/util/ULocale;)I
-Landroid/icu/util/LocaleMatcher;->getBestMatch(Landroid/icu/util/LocalePriorityList;)Landroid/icu/util/ULocale;
-Landroid/icu/util/LocaleMatcher;->getBestMatch(Landroid/icu/util/ULocale;)Landroid/icu/util/ULocale;
-Landroid/icu/util/LocaleMatcher;->getBestMatch(Ljava/lang/String;)Landroid/icu/util/ULocale;
-Landroid/icu/util/LocaleMatcher;->getBestMatch(Ljava/util/LinkedHashSet;Landroid/icu/util/Output;)Landroid/icu/util/ULocale;
-Landroid/icu/util/LocaleMatcher;->getBestMatchInternal(Landroid/icu/util/ULocale;Landroid/icu/util/LocaleMatcher$OutputDouble;)Landroid/icu/util/ULocale;
-Landroid/icu/util/LocaleMatcher;->getICUSupplementalData()Landroid/icu/impl/ICUResourceBundle;
-Landroid/icu/util/LocaleMatcher;->getLocaleMatcher()Landroid/icu/impl/locale/XLocaleMatcher;
-Landroid/icu/util/LocaleMatcher;->languagePriorityList:Landroid/icu/util/LocalePriorityList;
-Landroid/icu/util/LocaleMatcher;->localeToMaxLocaleAndWeight:Ljava/util/Set;
-Landroid/icu/util/LocaleMatcher;->match(Landroid/icu/util/ULocale;Landroid/icu/util/ULocale;)D
-Landroid/icu/util/LocaleMatcher;->match(Landroid/icu/util/ULocale;Landroid/icu/util/ULocale;Landroid/icu/util/ULocale;Landroid/icu/util/ULocale;)D
-Landroid/icu/util/LocaleMatcher;->matcherData:Landroid/icu/util/LocaleMatcher$LanguageMatcherData;
-Landroid/icu/util/LocaleMatcher;->processMapping()V
-Landroid/icu/util/LocaleMatcher;->setDefaultLanguage(Landroid/icu/util/ULocale;)Landroid/icu/util/LocaleMatcher;
-Landroid/icu/util/LocaleMatcher;->setFavorScript(Z)Landroid/icu/util/LocaleMatcher;
-Landroid/icu/util/LocaleMatcher;->threshold:D
-Landroid/icu/util/LocaleMatcher;->UNKNOWN_LOCALE:Landroid/icu/util/ULocale;
-Landroid/icu/util/LocaleMatcher;->xDefaultLanguage:Landroid/icu/util/ULocale;
-Landroid/icu/util/LocaleMatcher;->xFavorScript:Z
-Landroid/icu/util/LocaleMatcher;->xLocaleMatcher:Landroid/icu/impl/locale/XLocaleMatcher;
-Landroid/icu/util/LocalePriorityList$Builder;-><init>()V
-Landroid/icu/util/LocalePriorityList$Builder;->add(Landroid/icu/util/LocalePriorityList;)Landroid/icu/util/LocalePriorityList$Builder;
-Landroid/icu/util/LocalePriorityList$Builder;->add(Landroid/icu/util/ULocale;)Landroid/icu/util/LocalePriorityList$Builder;
-Landroid/icu/util/LocalePriorityList$Builder;->add(Landroid/icu/util/ULocale;D)Landroid/icu/util/LocalePriorityList$Builder;
-Landroid/icu/util/LocalePriorityList$Builder;->add(Ljava/lang/String;)Landroid/icu/util/LocalePriorityList$Builder;
-Landroid/icu/util/LocalePriorityList$Builder;->build()Landroid/icu/util/LocalePriorityList;
-Landroid/icu/util/LocalePriorityList$Builder;->build(Z)Landroid/icu/util/LocalePriorityList;
-Landroid/icu/util/LocalePriorityList$Builder;->languageToWeight:Ljava/util/Map;
-Landroid/icu/util/LocalePriorityList;-><init>(Ljava/util/Map;)V
-Landroid/icu/util/LocalePriorityList;->add(Landroid/icu/util/LocalePriorityList;)Landroid/icu/util/LocalePriorityList$Builder;
-Landroid/icu/util/LocalePriorityList;->add(Landroid/icu/util/ULocale;D)Landroid/icu/util/LocalePriorityList$Builder;
-Landroid/icu/util/LocalePriorityList;->add(Ljava/lang/String;)Landroid/icu/util/LocalePriorityList$Builder;
-Landroid/icu/util/LocalePriorityList;->D0:D
-Landroid/icu/util/LocalePriorityList;->D1:Ljava/lang/Double;
-Landroid/icu/util/LocalePriorityList;->getWeight(Landroid/icu/util/ULocale;)Ljava/lang/Double;
-Landroid/icu/util/LocalePriorityList;->languagesAndWeights:Ljava/util/Map;
-Landroid/icu/util/LocalePriorityList;->languageSplitter:Ljava/util/regex/Pattern;
-Landroid/icu/util/LocalePriorityList;->myDescendingDouble:Ljava/util/Comparator;
-Landroid/icu/util/LocalePriorityList;->weightSplitter:Ljava/util/regex/Pattern;
-Landroid/icu/util/Measure;->number:Ljava/lang/Number;
-Landroid/icu/util/Measure;->numbersEqual(Ljava/lang/Number;Ljava/lang/Number;)Z
-Landroid/icu/util/Measure;->unit:Landroid/icu/util/MeasureUnit;
-Landroid/icu/util/MeasureUnit$CurrencyNumericCodeSink;-><init>()V
-Landroid/icu/util/MeasureUnit$Factory;->create(Ljava/lang/String;Ljava/lang/String;)Landroid/icu/util/MeasureUnit;
-Landroid/icu/util/MeasureUnit$MeasureUnitProxy;-><init>()V
-Landroid/icu/util/MeasureUnit$MeasureUnitProxy;-><init>(Ljava/lang/String;Ljava/lang/String;)V
-Landroid/icu/util/MeasureUnit$MeasureUnitProxy;->subType:Ljava/lang/String;
-Landroid/icu/util/MeasureUnit$MeasureUnitProxy;->type:Ljava/lang/String;
-Landroid/icu/util/MeasureUnit$MeasureUnitSink;-><init>()V
-Landroid/icu/util/MeasureUnit;-><init>(Ljava/lang/String;Ljava/lang/String;)V
-Landroid/icu/util/MeasureUnit;->addUnit(Ljava/lang/String;Ljava/lang/String;Landroid/icu/util/MeasureUnit$Factory;)Landroid/icu/util/MeasureUnit;
-Landroid/icu/util/MeasureUnit;->ASCII:Landroid/icu/text/UnicodeSet;
-Landroid/icu/util/MeasureUnit;->ASCII_HYPHEN_DIGITS:Landroid/icu/text/UnicodeSet;
-Landroid/icu/util/MeasureUnit;->cache:Ljava/util/Map;
-Landroid/icu/util/MeasureUnit;->cacheIsPopulated:Z
-Landroid/icu/util/MeasureUnit;->CURRENCY_FACTORY:Landroid/icu/util/MeasureUnit$Factory;
-Landroid/icu/util/MeasureUnit;->internalGetInstance(Ljava/lang/String;Ljava/lang/String;)Landroid/icu/util/MeasureUnit;
-Landroid/icu/util/MeasureUnit;->NOUNIT_FACTORY:Landroid/icu/util/MeasureUnit$Factory;
-Landroid/icu/util/MeasureUnit;->POINT:Landroid/icu/util/MeasureUnit;
-Landroid/icu/util/MeasureUnit;->populateCache()V
-Landroid/icu/util/MeasureUnit;->resolveUnitPerUnit(Landroid/icu/util/MeasureUnit;Landroid/icu/util/MeasureUnit;)Landroid/icu/util/MeasureUnit;
-Landroid/icu/util/MeasureUnit;->subType:Ljava/lang/String;
-Landroid/icu/util/MeasureUnit;->TIMEUNIT_FACTORY:Landroid/icu/util/MeasureUnit$Factory;
-Landroid/icu/util/MeasureUnit;->type:Ljava/lang/String;
-Landroid/icu/util/MeasureUnit;->unitPerUnitToSingleUnit:Ljava/util/HashMap;
-Landroid/icu/util/MeasureUnit;->UNIT_FACTORY:Landroid/icu/util/MeasureUnit$Factory;
-Landroid/icu/util/NoUnit;-><init>(Ljava/lang/String;)V
-Landroid/icu/util/NoUnit;->BASE:Landroid/icu/util/NoUnit;
-Landroid/icu/util/NoUnit;->PERCENT:Landroid/icu/util/NoUnit;
-Landroid/icu/util/NoUnit;->PERMILLE:Landroid/icu/util/NoUnit;
-Landroid/icu/util/OutputInt;-><init>()V
-Landroid/icu/util/OutputInt;-><init>(I)V
-Landroid/icu/util/OutputInt;->value:I
-Landroid/icu/util/PersianCalendar;-><init>()V
-Landroid/icu/util/PersianCalendar;-><init>(III)V
-Landroid/icu/util/PersianCalendar;-><init>(IIIIII)V
-Landroid/icu/util/PersianCalendar;-><init>(Landroid/icu/util/TimeZone;)V
-Landroid/icu/util/PersianCalendar;-><init>(Landroid/icu/util/TimeZone;Landroid/icu/util/ULocale;)V
-Landroid/icu/util/PersianCalendar;-><init>(Landroid/icu/util/TimeZone;Ljava/util/Locale;)V
-Landroid/icu/util/PersianCalendar;-><init>(Landroid/icu/util/ULocale;)V
-Landroid/icu/util/PersianCalendar;-><init>(Ljava/util/Date;)V
-Landroid/icu/util/PersianCalendar;->isLeapYear(I)Z
-Landroid/icu/util/PersianCalendar;->LIMITS:[[I
-Landroid/icu/util/PersianCalendar;->MONTH_COUNT:[[I
-Landroid/icu/util/PersianCalendar;->PERSIAN_EPOCH:I
-Landroid/icu/util/Range;-><init>(Ljava/util/Date;Landroid/icu/util/DateRule;)V
-Landroid/icu/util/Range;->rule:Landroid/icu/util/DateRule;
-Landroid/icu/util/Range;->start:Ljava/util/Date;
-Landroid/icu/util/RangeDateRule;-><init>()V
-Landroid/icu/util/RangeDateRule;->add(Landroid/icu/util/DateRule;)V
-Landroid/icu/util/RangeDateRule;->add(Ljava/util/Date;Landroid/icu/util/DateRule;)V
-Landroid/icu/util/RangeDateRule;->firstAfter(Ljava/util/Date;)Ljava/util/Date;
-Landroid/icu/util/RangeDateRule;->firstBetween(Ljava/util/Date;Ljava/util/Date;)Ljava/util/Date;
-Landroid/icu/util/RangeDateRule;->isBetween(Ljava/util/Date;Ljava/util/Date;)Z
-Landroid/icu/util/RangeDateRule;->isOn(Ljava/util/Date;)Z
-Landroid/icu/util/RangeDateRule;->rangeAt(I)Landroid/icu/util/Range;
-Landroid/icu/util/RangeDateRule;->ranges:Ljava/util/List;
-Landroid/icu/util/RangeDateRule;->startIndex(Ljava/util/Date;)I
-Landroid/icu/util/Region$RegionType;->CONTINENT:Landroid/icu/util/Region$RegionType;
-Landroid/icu/util/Region$RegionType;->DEPRECATED:Landroid/icu/util/Region$RegionType;
-Landroid/icu/util/Region$RegionType;->GROUPING:Landroid/icu/util/Region$RegionType;
-Landroid/icu/util/Region$RegionType;->SUBCONTINENT:Landroid/icu/util/Region$RegionType;
-Landroid/icu/util/Region$RegionType;->TERRITORY:Landroid/icu/util/Region$RegionType;
-Landroid/icu/util/Region$RegionType;->UNKNOWN:Landroid/icu/util/Region$RegionType;
-Landroid/icu/util/Region$RegionType;->valueOf(Ljava/lang/String;)Landroid/icu/util/Region$RegionType;
-Landroid/icu/util/Region$RegionType;->values()[Landroid/icu/util/Region$RegionType;
-Landroid/icu/util/Region$RegionType;->WORLD:Landroid/icu/util/Region$RegionType;
-Landroid/icu/util/Region;-><init>()V
-Landroid/icu/util/Region;->availableRegions:Ljava/util/ArrayList;
-Landroid/icu/util/Region;->code:I
-Landroid/icu/util/Region;->compareTo(Landroid/icu/util/Region;)I
-Landroid/icu/util/Region;->containedRegions:Ljava/util/Set;
-Landroid/icu/util/Region;->containingRegion:Landroid/icu/util/Region;
-Landroid/icu/util/Region;->contains(Landroid/icu/util/Region;)Z
-Landroid/icu/util/Region;->getAvailable(Landroid/icu/util/Region$RegionType;)Ljava/util/Set;
-Landroid/icu/util/Region;->getContainedRegions()Ljava/util/Set;
-Landroid/icu/util/Region;->getContainedRegions(Landroid/icu/util/Region$RegionType;)Ljava/util/Set;
-Landroid/icu/util/Region;->getContainingRegion()Landroid/icu/util/Region;
-Landroid/icu/util/Region;->getContainingRegion(Landroid/icu/util/Region$RegionType;)Landroid/icu/util/Region;
-Landroid/icu/util/Region;->getInstance(I)Landroid/icu/util/Region;
-Landroid/icu/util/Region;->getInstance(Ljava/lang/String;)Landroid/icu/util/Region;
-Landroid/icu/util/Region;->getNumericCode()I
-Landroid/icu/util/Region;->getPreferredValues()Ljava/util/List;
-Landroid/icu/util/Region;->getType()Landroid/icu/util/Region$RegionType;
-Landroid/icu/util/Region;->id:Ljava/lang/String;
-Landroid/icu/util/Region;->loadRegionData()V
-Landroid/icu/util/Region;->numericCodeMap:Ljava/util/Map;
-Landroid/icu/util/Region;->OUTLYING_OCEANIA_REGION_ID:Ljava/lang/String;
-Landroid/icu/util/Region;->preferredValues:Ljava/util/List;
-Landroid/icu/util/Region;->regionAliases:Ljava/util/Map;
-Landroid/icu/util/Region;->regionDataIsLoaded:Z
-Landroid/icu/util/Region;->regionIDMap:Ljava/util/Map;
-Landroid/icu/util/Region;->regions:Ljava/util/ArrayList;
-Landroid/icu/util/Region;->type:Landroid/icu/util/Region$RegionType;
-Landroid/icu/util/Region;->UNKNOWN_REGION_ID:Ljava/lang/String;
-Landroid/icu/util/Region;->WORLD_ID:Ljava/lang/String;
-Landroid/icu/util/RuleBasedTimeZone;-><init>(Ljava/lang/String;Landroid/icu/util/InitialTimeZoneRule;)V
-Landroid/icu/util/RuleBasedTimeZone;->addTransitionRule(Landroid/icu/util/TimeZoneRule;)V
-Landroid/icu/util/RuleBasedTimeZone;->complete()V
-Landroid/icu/util/RuleBasedTimeZone;->finalRules:[Landroid/icu/util/AnnualTimeZoneRule;
-Landroid/icu/util/RuleBasedTimeZone;->findRuleInFinal(JZII)Landroid/icu/util/TimeZoneRule;
-Landroid/icu/util/RuleBasedTimeZone;->getLocalDelta(IIIIII)I
-Landroid/icu/util/RuleBasedTimeZone;->getNextTransition(JZ)Landroid/icu/util/TimeZoneTransition;
-Landroid/icu/util/RuleBasedTimeZone;->getOffset(JZII[I)V
-Landroid/icu/util/RuleBasedTimeZone;->getOffsetFromLocal(JII[I)V
-Landroid/icu/util/RuleBasedTimeZone;->getPreviousTransition(JZ)Landroid/icu/util/TimeZoneTransition;
-Landroid/icu/util/RuleBasedTimeZone;->getTimeZoneRules()[Landroid/icu/util/TimeZoneRule;
-Landroid/icu/util/RuleBasedTimeZone;->getTransitionTime(Landroid/icu/util/TimeZoneTransition;ZII)J
-Landroid/icu/util/RuleBasedTimeZone;->historicRules:Ljava/util/List;
-Landroid/icu/util/RuleBasedTimeZone;->historicTransitions:Ljava/util/List;
-Landroid/icu/util/RuleBasedTimeZone;->initialRule:Landroid/icu/util/InitialTimeZoneRule;
-Landroid/icu/util/RuleBasedTimeZone;->isFrozen:Z
-Landroid/icu/util/RuleBasedTimeZone;->upToDate:Z
-Landroid/icu/util/SimpleDateRule;-><init>(II)V
-Landroid/icu/util/SimpleDateRule;-><init>(IIIZ)V
-Landroid/icu/util/SimpleDateRule;-><init>(IILandroid/icu/util/Calendar;)V
-Landroid/icu/util/SimpleDateRule;->calendar:Landroid/icu/util/Calendar;
-Landroid/icu/util/SimpleDateRule;->computeInYear(ILandroid/icu/util/Calendar;)Ljava/util/Date;
-Landroid/icu/util/SimpleDateRule;->dayOfMonth:I
-Landroid/icu/util/SimpleDateRule;->dayOfWeek:I
-Landroid/icu/util/SimpleDateRule;->doFirstBetween(Ljava/util/Date;Ljava/util/Date;)Ljava/util/Date;
-Landroid/icu/util/SimpleDateRule;->firstAfter(Ljava/util/Date;)Ljava/util/Date;
-Landroid/icu/util/SimpleDateRule;->firstBetween(Ljava/util/Date;Ljava/util/Date;)Ljava/util/Date;
-Landroid/icu/util/SimpleDateRule;->isBetween(Ljava/util/Date;Ljava/util/Date;)Z
-Landroid/icu/util/SimpleDateRule;->isOn(Ljava/util/Date;)Z
-Landroid/icu/util/SimpleDateRule;->month:I
-Landroid/icu/util/SimpleHoliday;-><init>(IIILjava/lang/String;)V
-Landroid/icu/util/SimpleHoliday;-><init>(IIILjava/lang/String;I)V
-Landroid/icu/util/SimpleHoliday;-><init>(IIILjava/lang/String;II)V
-Landroid/icu/util/SimpleHoliday;-><init>(IILjava/lang/String;)V
-Landroid/icu/util/SimpleHoliday;-><init>(IILjava/lang/String;I)V
-Landroid/icu/util/SimpleHoliday;-><init>(IILjava/lang/String;II)V
-Landroid/icu/util/SimpleHoliday;->ALL_SAINTS_DAY:Landroid/icu/util/SimpleHoliday;
-Landroid/icu/util/SimpleHoliday;->ALL_SOULS_DAY:Landroid/icu/util/SimpleHoliday;
-Landroid/icu/util/SimpleHoliday;->ASSUMPTION:Landroid/icu/util/SimpleHoliday;
-Landroid/icu/util/SimpleHoliday;->BOXING_DAY:Landroid/icu/util/SimpleHoliday;
-Landroid/icu/util/SimpleHoliday;->CHRISTMAS:Landroid/icu/util/SimpleHoliday;
-Landroid/icu/util/SimpleHoliday;->CHRISTMAS_EVE:Landroid/icu/util/SimpleHoliday;
-Landroid/icu/util/SimpleHoliday;->EPIPHANY:Landroid/icu/util/SimpleHoliday;
-Landroid/icu/util/SimpleHoliday;->IMMACULATE_CONCEPTION:Landroid/icu/util/SimpleHoliday;
-Landroid/icu/util/SimpleHoliday;->MAY_DAY:Landroid/icu/util/SimpleHoliday;
-Landroid/icu/util/SimpleHoliday;->NEW_YEARS_DAY:Landroid/icu/util/SimpleHoliday;
-Landroid/icu/util/SimpleHoliday;->NEW_YEARS_EVE:Landroid/icu/util/SimpleHoliday;
-Landroid/icu/util/SimpleHoliday;->rangeRule(IILandroid/icu/util/DateRule;)Landroid/icu/util/DateRule;
-Landroid/icu/util/SimpleHoliday;->ST_STEPHENS_DAY:Landroid/icu/util/SimpleHoliday;
-Landroid/icu/util/SimpleTimeZone;-><init>(ILjava/lang/String;)V
-Landroid/icu/util/SimpleTimeZone;-><init>(ILjava/lang/String;IIIIIIII)V
-Landroid/icu/util/SimpleTimeZone;-><init>(ILjava/lang/String;IIIIIIIII)V
-Landroid/icu/util/SimpleTimeZone;-><init>(ILjava/lang/String;IIIIIIIIIII)V
-Landroid/icu/util/SimpleTimeZone;->compareToRule(IIIIIIIIIIII)I
-Landroid/icu/util/SimpleTimeZone;->construct(IIIIIIIIIIII)V
-Landroid/icu/util/SimpleTimeZone;->decodeEndRule()V
-Landroid/icu/util/SimpleTimeZone;->decodeRules()V
-Landroid/icu/util/SimpleTimeZone;->decodeStartRule()V
-Landroid/icu/util/SimpleTimeZone;->DOM_MODE:I
-Landroid/icu/util/SimpleTimeZone;->DOW_GE_DOM_MODE:I
-Landroid/icu/util/SimpleTimeZone;->DOW_IN_MONTH_MODE:I
-Landroid/icu/util/SimpleTimeZone;->DOW_LE_DOM_MODE:I
-Landroid/icu/util/SimpleTimeZone;->dst:I
-Landroid/icu/util/SimpleTimeZone;->dstRule:Landroid/icu/util/AnnualTimeZoneRule;
-Landroid/icu/util/SimpleTimeZone;->endDay:I
-Landroid/icu/util/SimpleTimeZone;->endDayOfWeek:I
-Landroid/icu/util/SimpleTimeZone;->endMode:I
-Landroid/icu/util/SimpleTimeZone;->endMonth:I
-Landroid/icu/util/SimpleTimeZone;->endTime:I
-Landroid/icu/util/SimpleTimeZone;->endTimeMode:I
-Landroid/icu/util/SimpleTimeZone;->firstTransition:Landroid/icu/util/TimeZoneTransition;
-Landroid/icu/util/SimpleTimeZone;->getNextTransition(JZ)Landroid/icu/util/TimeZoneTransition;
-Landroid/icu/util/SimpleTimeZone;->getOffset(IIIIIII)I
-Landroid/icu/util/SimpleTimeZone;->getOffset(IIIIIIII)I
-Landroid/icu/util/SimpleTimeZone;->getOffsetFromLocal(JII[I)V
-Landroid/icu/util/SimpleTimeZone;->getPreviousTransition(JZ)Landroid/icu/util/TimeZoneTransition;
-Landroid/icu/util/SimpleTimeZone;->getSTZInfo()Landroid/icu/util/STZInfo;
-Landroid/icu/util/SimpleTimeZone;->getTimeZoneRules()[Landroid/icu/util/TimeZoneRule;
-Landroid/icu/util/SimpleTimeZone;->idEquals(Ljava/lang/String;Ljava/lang/String;)Z
-Landroid/icu/util/SimpleTimeZone;->initialRule:Landroid/icu/util/InitialTimeZoneRule;
-Landroid/icu/util/SimpleTimeZone;->initTransitionRules()V
-Landroid/icu/util/SimpleTimeZone;->isFrozen:Z
-Landroid/icu/util/SimpleTimeZone;->raw:I
-Landroid/icu/util/SimpleTimeZone;->setDSTSavings(I)V
-Landroid/icu/util/SimpleTimeZone;->setEndRule(III)V
-Landroid/icu/util/SimpleTimeZone;->setEndRule(IIII)V
-Landroid/icu/util/SimpleTimeZone;->setEndRule(IIIII)V
-Landroid/icu/util/SimpleTimeZone;->setEndRule(IIIIIZ)V
-Landroid/icu/util/SimpleTimeZone;->setEndRule(IIIIZ)V
-Landroid/icu/util/SimpleTimeZone;->setStartRule(III)V
-Landroid/icu/util/SimpleTimeZone;->setStartRule(IIII)V
-Landroid/icu/util/SimpleTimeZone;->setStartRule(IIIII)V
-Landroid/icu/util/SimpleTimeZone;->setStartRule(IIIIZ)V
-Landroid/icu/util/SimpleTimeZone;->setStartYear(I)V
-Landroid/icu/util/SimpleTimeZone;->STANDARD_TIME:I
-Landroid/icu/util/SimpleTimeZone;->startDay:I
-Landroid/icu/util/SimpleTimeZone;->startDayOfWeek:I
-Landroid/icu/util/SimpleTimeZone;->startMode:I
-Landroid/icu/util/SimpleTimeZone;->startMonth:I
-Landroid/icu/util/SimpleTimeZone;->startTime:I
-Landroid/icu/util/SimpleTimeZone;->startTimeMode:I
-Landroid/icu/util/SimpleTimeZone;->startYear:I
-Landroid/icu/util/SimpleTimeZone;->staticMonthLength:[B
-Landroid/icu/util/SimpleTimeZone;->stdRule:Landroid/icu/util/AnnualTimeZoneRule;
-Landroid/icu/util/SimpleTimeZone;->transitionRulesInitialized:Z
-Landroid/icu/util/SimpleTimeZone;->useDaylight:Z
-Landroid/icu/util/SimpleTimeZone;->UTC_TIME:I
-Landroid/icu/util/SimpleTimeZone;->WALL_TIME:I
-Landroid/icu/util/SimpleTimeZone;->xinfo:Landroid/icu/util/STZInfo;
-Landroid/icu/util/StringTokenizer;-><init>(Ljava/lang/String;)V
-Landroid/icu/util/StringTokenizer;-><init>(Ljava/lang/String;Landroid/icu/text/UnicodeSet;)V
-Landroid/icu/util/StringTokenizer;-><init>(Ljava/lang/String;Landroid/icu/text/UnicodeSet;Z)V
-Landroid/icu/util/StringTokenizer;-><init>(Ljava/lang/String;Landroid/icu/text/UnicodeSet;ZZ)V
-Landroid/icu/util/StringTokenizer;-><init>(Ljava/lang/String;Ljava/lang/String;)V
-Landroid/icu/util/StringTokenizer;-><init>(Ljava/lang/String;Ljava/lang/String;Z)V
-Landroid/icu/util/StringTokenizer;-><init>(Ljava/lang/String;Ljava/lang/String;ZZ)V
-Landroid/icu/util/StringTokenizer;->checkDelimiters()V
-Landroid/icu/util/StringTokenizer;->countTokens()I
-Landroid/icu/util/StringTokenizer;->DEFAULT_DELIMITERS_:Landroid/icu/text/UnicodeSet;
-Landroid/icu/util/StringTokenizer;->delims:[Z
-Landroid/icu/util/StringTokenizer;->EMPTY_DELIMITER_:Landroid/icu/text/UnicodeSet;
-Landroid/icu/util/StringTokenizer;->getNextDelimiter(I)I
-Landroid/icu/util/StringTokenizer;->getNextNonDelimiter(I)I
-Landroid/icu/util/StringTokenizer;->hasMoreTokens()Z
-Landroid/icu/util/StringTokenizer;->m_coalesceDelimiters_:Z
-Landroid/icu/util/StringTokenizer;->m_delimiters_:Landroid/icu/text/UnicodeSet;
-Landroid/icu/util/StringTokenizer;->m_length_:I
-Landroid/icu/util/StringTokenizer;->m_nextOffset_:I
-Landroid/icu/util/StringTokenizer;->m_returnDelimiters_:Z
-Landroid/icu/util/StringTokenizer;->m_source_:Ljava/lang/String;
-Landroid/icu/util/StringTokenizer;->m_tokenLimit_:[I
-Landroid/icu/util/StringTokenizer;->m_tokenOffset_:I
-Landroid/icu/util/StringTokenizer;->m_tokenSize_:I
-Landroid/icu/util/StringTokenizer;->m_tokenStart_:[I
-Landroid/icu/util/StringTokenizer;->nextToken()Ljava/lang/String;
-Landroid/icu/util/StringTokenizer;->nextToken(Landroid/icu/text/UnicodeSet;)Ljava/lang/String;
-Landroid/icu/util/StringTokenizer;->nextToken(Ljava/lang/String;)Ljava/lang/String;
-Landroid/icu/util/StringTokenizer;->TOKEN_SIZE_:I
-Landroid/icu/util/StringTrieBuilder$BranchHeadNode;-><init>(ILandroid/icu/util/StringTrieBuilder$Node;)V
-Landroid/icu/util/StringTrieBuilder$BranchHeadNode;->length:I
-Landroid/icu/util/StringTrieBuilder$BranchHeadNode;->markRightEdgesFirst(I)I
-Landroid/icu/util/StringTrieBuilder$BranchHeadNode;->next:Landroid/icu/util/StringTrieBuilder$Node;
-Landroid/icu/util/StringTrieBuilder$BranchHeadNode;->write(Landroid/icu/util/StringTrieBuilder;)V
-Landroid/icu/util/StringTrieBuilder$BranchNode;-><init>()V
-Landroid/icu/util/StringTrieBuilder$BranchNode;->firstEdgeNumber:I
-Landroid/icu/util/StringTrieBuilder$BranchNode;->hash:I
-Landroid/icu/util/StringTrieBuilder$DynamicBranchNode;-><init>()V
-Landroid/icu/util/StringTrieBuilder$DynamicBranchNode;->add(CLandroid/icu/util/StringTrieBuilder$Node;)V
-Landroid/icu/util/StringTrieBuilder$DynamicBranchNode;->add(Landroid/icu/util/StringTrieBuilder;Ljava/lang/CharSequence;II)Landroid/icu/util/StringTrieBuilder$Node;
-Landroid/icu/util/StringTrieBuilder$DynamicBranchNode;->chars:Ljava/lang/StringBuilder;
-Landroid/icu/util/StringTrieBuilder$DynamicBranchNode;->equal:Ljava/util/ArrayList;
-Landroid/icu/util/StringTrieBuilder$DynamicBranchNode;->find(C)I
-Landroid/icu/util/StringTrieBuilder$DynamicBranchNode;->register(Landroid/icu/util/StringTrieBuilder;)Landroid/icu/util/StringTrieBuilder$Node;
-Landroid/icu/util/StringTrieBuilder$DynamicBranchNode;->register(Landroid/icu/util/StringTrieBuilder;II)Landroid/icu/util/StringTrieBuilder$Node;
-Landroid/icu/util/StringTrieBuilder$IntermediateValueNode;-><init>(ILandroid/icu/util/StringTrieBuilder$Node;)V
-Landroid/icu/util/StringTrieBuilder$IntermediateValueNode;->markRightEdgesFirst(I)I
-Landroid/icu/util/StringTrieBuilder$IntermediateValueNode;->next:Landroid/icu/util/StringTrieBuilder$Node;
-Landroid/icu/util/StringTrieBuilder$IntermediateValueNode;->write(Landroid/icu/util/StringTrieBuilder;)V
-Landroid/icu/util/StringTrieBuilder$LinearMatchNode;-><init>(Ljava/lang/CharSequence;IILandroid/icu/util/StringTrieBuilder$Node;)V
-Landroid/icu/util/StringTrieBuilder$LinearMatchNode;->add(Landroid/icu/util/StringTrieBuilder;Ljava/lang/CharSequence;II)Landroid/icu/util/StringTrieBuilder$Node;
-Landroid/icu/util/StringTrieBuilder$LinearMatchNode;->hash:I
-Landroid/icu/util/StringTrieBuilder$LinearMatchNode;->length:I
-Landroid/icu/util/StringTrieBuilder$LinearMatchNode;->markRightEdgesFirst(I)I
-Landroid/icu/util/StringTrieBuilder$LinearMatchNode;->next:Landroid/icu/util/StringTrieBuilder$Node;
-Landroid/icu/util/StringTrieBuilder$LinearMatchNode;->register(Landroid/icu/util/StringTrieBuilder;)Landroid/icu/util/StringTrieBuilder$Node;
-Landroid/icu/util/StringTrieBuilder$LinearMatchNode;->setHashCode()V
-Landroid/icu/util/StringTrieBuilder$LinearMatchNode;->stringOffset:I
-Landroid/icu/util/StringTrieBuilder$LinearMatchNode;->strings:Ljava/lang/CharSequence;
-Landroid/icu/util/StringTrieBuilder$LinearMatchNode;->write(Landroid/icu/util/StringTrieBuilder;)V
-Landroid/icu/util/StringTrieBuilder$ListBranchNode;-><init>(I)V
-Landroid/icu/util/StringTrieBuilder$ListBranchNode;->add(II)V
-Landroid/icu/util/StringTrieBuilder$ListBranchNode;->add(ILandroid/icu/util/StringTrieBuilder$Node;)V
-Landroid/icu/util/StringTrieBuilder$ListBranchNode;->equal:[Landroid/icu/util/StringTrieBuilder$Node;
-Landroid/icu/util/StringTrieBuilder$ListBranchNode;->length:I
-Landroid/icu/util/StringTrieBuilder$ListBranchNode;->markRightEdgesFirst(I)I
-Landroid/icu/util/StringTrieBuilder$ListBranchNode;->units:[C
-Landroid/icu/util/StringTrieBuilder$ListBranchNode;->values:[I
-Landroid/icu/util/StringTrieBuilder$ListBranchNode;->write(Landroid/icu/util/StringTrieBuilder;)V
-Landroid/icu/util/StringTrieBuilder$Node;-><init>()V
-Landroid/icu/util/StringTrieBuilder$Node;->add(Landroid/icu/util/StringTrieBuilder;Ljava/lang/CharSequence;II)Landroid/icu/util/StringTrieBuilder$Node;
-Landroid/icu/util/StringTrieBuilder$Node;->getOffset()I
-Landroid/icu/util/StringTrieBuilder$Node;->markRightEdgesFirst(I)I
-Landroid/icu/util/StringTrieBuilder$Node;->offset:I
-Landroid/icu/util/StringTrieBuilder$Node;->register(Landroid/icu/util/StringTrieBuilder;)Landroid/icu/util/StringTrieBuilder$Node;
-Landroid/icu/util/StringTrieBuilder$Node;->write(Landroid/icu/util/StringTrieBuilder;)V
-Landroid/icu/util/StringTrieBuilder$Node;->writeUnlessInsideRightEdge(IILandroid/icu/util/StringTrieBuilder;)V
-Landroid/icu/util/StringTrieBuilder$Option;->FAST:Landroid/icu/util/StringTrieBuilder$Option;
-Landroid/icu/util/StringTrieBuilder$Option;->SMALL:Landroid/icu/util/StringTrieBuilder$Option;
-Landroid/icu/util/StringTrieBuilder$Option;->valueOf(Ljava/lang/String;)Landroid/icu/util/StringTrieBuilder$Option;
-Landroid/icu/util/StringTrieBuilder$Option;->values()[Landroid/icu/util/StringTrieBuilder$Option;
-Landroid/icu/util/StringTrieBuilder$SplitBranchNode;-><init>(CLandroid/icu/util/StringTrieBuilder$Node;Landroid/icu/util/StringTrieBuilder$Node;)V
-Landroid/icu/util/StringTrieBuilder$SplitBranchNode;->greaterOrEqual:Landroid/icu/util/StringTrieBuilder$Node;
-Landroid/icu/util/StringTrieBuilder$SplitBranchNode;->lessThan:Landroid/icu/util/StringTrieBuilder$Node;
-Landroid/icu/util/StringTrieBuilder$SplitBranchNode;->markRightEdgesFirst(I)I
-Landroid/icu/util/StringTrieBuilder$SplitBranchNode;->unit:C
-Landroid/icu/util/StringTrieBuilder$SplitBranchNode;->write(Landroid/icu/util/StringTrieBuilder;)V
-Landroid/icu/util/StringTrieBuilder$State;->ADDING:Landroid/icu/util/StringTrieBuilder$State;
-Landroid/icu/util/StringTrieBuilder$State;->BUILDING_FAST:Landroid/icu/util/StringTrieBuilder$State;
-Landroid/icu/util/StringTrieBuilder$State;->BUILDING_SMALL:Landroid/icu/util/StringTrieBuilder$State;
-Landroid/icu/util/StringTrieBuilder$State;->BUILT:Landroid/icu/util/StringTrieBuilder$State;
-Landroid/icu/util/StringTrieBuilder$State;->valueOf(Ljava/lang/String;)Landroid/icu/util/StringTrieBuilder$State;
-Landroid/icu/util/StringTrieBuilder$State;->values()[Landroid/icu/util/StringTrieBuilder$State;
-Landroid/icu/util/StringTrieBuilder$ValueNode;-><init>()V
-Landroid/icu/util/StringTrieBuilder$ValueNode;-><init>(I)V
-Landroid/icu/util/StringTrieBuilder$ValueNode;->add(Landroid/icu/util/StringTrieBuilder;Ljava/lang/CharSequence;II)Landroid/icu/util/StringTrieBuilder$Node;
-Landroid/icu/util/StringTrieBuilder$ValueNode;->hasValue:Z
-Landroid/icu/util/StringTrieBuilder$ValueNode;->setFinalValue(I)V
-Landroid/icu/util/StringTrieBuilder$ValueNode;->setValue(I)V
-Landroid/icu/util/StringTrieBuilder$ValueNode;->value:I
-Landroid/icu/util/StringTrieBuilder$ValueNode;->write(Landroid/icu/util/StringTrieBuilder;)V
-Landroid/icu/util/StringTrieBuilder;-><init>()V
-Landroid/icu/util/StringTrieBuilder;->addImpl(Ljava/lang/CharSequence;I)V
-Landroid/icu/util/StringTrieBuilder;->buildImpl(Landroid/icu/util/StringTrieBuilder$Option;)V
-Landroid/icu/util/StringTrieBuilder;->clearImpl()V
-Landroid/icu/util/StringTrieBuilder;->createSuffixNode(Ljava/lang/CharSequence;II)Landroid/icu/util/StringTrieBuilder$ValueNode;
-Landroid/icu/util/StringTrieBuilder;->getMaxBranchLinearSubNodeLength()I
-Landroid/icu/util/StringTrieBuilder;->getMaxLinearMatchLength()I
-Landroid/icu/util/StringTrieBuilder;->getMinLinearMatch()I
-Landroid/icu/util/StringTrieBuilder;->lookupFinalValueNode:Landroid/icu/util/StringTrieBuilder$ValueNode;
-Landroid/icu/util/StringTrieBuilder;->matchNodesCanHaveValues()Z
-Landroid/icu/util/StringTrieBuilder;->nodes:Ljava/util/HashMap;
-Landroid/icu/util/StringTrieBuilder;->registerFinalValue(I)Landroid/icu/util/StringTrieBuilder$ValueNode;
-Landroid/icu/util/StringTrieBuilder;->registerNode(Landroid/icu/util/StringTrieBuilder$Node;)Landroid/icu/util/StringTrieBuilder$Node;
-Landroid/icu/util/StringTrieBuilder;->root:Landroid/icu/util/StringTrieBuilder$Node;
-Landroid/icu/util/StringTrieBuilder;->state:Landroid/icu/util/StringTrieBuilder$State;
-Landroid/icu/util/StringTrieBuilder;->strings:Ljava/lang/StringBuilder;
-Landroid/icu/util/StringTrieBuilder;->write(I)I
-Landroid/icu/util/StringTrieBuilder;->write(II)I
-Landroid/icu/util/StringTrieBuilder;->writeDeltaTo(I)I
-Landroid/icu/util/StringTrieBuilder;->writeValueAndFinal(IZ)I
-Landroid/icu/util/StringTrieBuilder;->writeValueAndType(ZII)I
-Landroid/icu/util/STZInfo;-><init>()V
-Landroid/icu/util/STZInfo;->applyTo(Landroid/icu/util/SimpleTimeZone;)V
-Landroid/icu/util/STZInfo;->ea:Z
-Landroid/icu/util/STZInfo;->edm:I
-Landroid/icu/util/STZInfo;->edw:I
-Landroid/icu/util/STZInfo;->edwm:I
-Landroid/icu/util/STZInfo;->em:I
-Landroid/icu/util/STZInfo;->et:I
-Landroid/icu/util/STZInfo;->sa:Z
-Landroid/icu/util/STZInfo;->sdm:I
-Landroid/icu/util/STZInfo;->sdw:I
-Landroid/icu/util/STZInfo;->sdwm:I
-Landroid/icu/util/STZInfo;->setEnd(IIIIIZ)V
-Landroid/icu/util/STZInfo;->setStart(IIIIIZ)V
-Landroid/icu/util/STZInfo;->sm:I
-Landroid/icu/util/STZInfo;->st:I
-Landroid/icu/util/STZInfo;->sy:I
-Landroid/icu/util/TaiwanCalendar;->GREGORIAN_EPOCH:I
-Landroid/icu/util/TaiwanCalendar;->Taiwan_ERA_START:I
-Landroid/icu/util/TimeArrayTimeZoneRule;-><init>(Ljava/lang/String;II[JI)V
-Landroid/icu/util/TimeArrayTimeZoneRule;->getFinalStart(II)Ljava/util/Date;
-Landroid/icu/util/TimeArrayTimeZoneRule;->getFirstStart(II)Ljava/util/Date;
-Landroid/icu/util/TimeArrayTimeZoneRule;->getNextStart(JIIZ)Ljava/util/Date;
-Landroid/icu/util/TimeArrayTimeZoneRule;->getPreviousStart(JIIZ)Ljava/util/Date;
-Landroid/icu/util/TimeArrayTimeZoneRule;->getStartTimes()[J
-Landroid/icu/util/TimeArrayTimeZoneRule;->getTimeType()I
-Landroid/icu/util/TimeArrayTimeZoneRule;->getUTC(JII)J
-Landroid/icu/util/TimeArrayTimeZoneRule;->isEquivalentTo(Landroid/icu/util/TimeZoneRule;)Z
-Landroid/icu/util/TimeArrayTimeZoneRule;->isTransitionRule()Z
-Landroid/icu/util/TimeArrayTimeZoneRule;->startTimes:[J
-Landroid/icu/util/TimeArrayTimeZoneRule;->timeType:I
-Landroid/icu/util/TimeUnit;-><init>(Ljava/lang/String;Ljava/lang/String;)V
-Landroid/icu/util/TimeUnit;->index:I
-Landroid/icu/util/TimeUnitAmount;-><init>(DLandroid/icu/util/TimeUnit;)V
-Landroid/icu/util/TimeUnitAmount;-><init>(Ljava/lang/Number;Landroid/icu/util/TimeUnit;)V
-Landroid/icu/util/TimeUnitAmount;->getTimeUnit()Landroid/icu/util/TimeUnit;
-Landroid/icu/util/TimeZone$ConstantZone;-><init>(ILjava/lang/String;)V
-Landroid/icu/util/TimeZone$ConstantZone;->isFrozen:Z
-Landroid/icu/util/TimeZone$ConstantZone;->rawOffset:I
-Landroid/icu/util/TimeZone;-><init>(Ljava/lang/String;)V
-Landroid/icu/util/TimeZone;->defaultZone:Landroid/icu/util/TimeZone;
-Landroid/icu/util/TimeZone;->getDefaultTimeZoneType()I
-Landroid/icu/util/TimeZone;->getFrozenICUTimeZone(Ljava/lang/String;Z)Landroid/icu/util/BasicTimeZone;
-Landroid/icu/util/TimeZone;->getTimeZone(Ljava/lang/String;IZ)Landroid/icu/util/TimeZone;
-Landroid/icu/util/TimeZone;->GMT_ZONE_ID:Ljava/lang/String;
-Landroid/icu/util/TimeZone;->ID:Ljava/lang/String;
-Landroid/icu/util/TimeZone;->LOGGER:Ljava/util/logging/Logger;
-Landroid/icu/util/TimeZone;->setDefault(Landroid/icu/util/TimeZone;)V
-Landroid/icu/util/TimeZone;->setDefaultTimeZoneType(I)V
-Landroid/icu/util/TimeZone;->setICUDefault(Landroid/icu/util/TimeZone;)V
-Landroid/icu/util/TimeZone;->TZIMPL_CONFIG_ICU:Ljava/lang/String;
-Landroid/icu/util/TimeZone;->TZIMPL_CONFIG_JDK:Ljava/lang/String;
-Landroid/icu/util/TimeZone;->TZIMPL_CONFIG_KEY:Ljava/lang/String;
-Landroid/icu/util/TimeZone;->TZ_IMPL:I
-Landroid/icu/util/TimeZone;->_getDisplayName(IZLandroid/icu/util/ULocale;)Ljava/lang/String;
-Landroid/icu/util/TimeZoneRule;-><init>(Ljava/lang/String;II)V
-Landroid/icu/util/TimeZoneRule;->dstSavings:I
-Landroid/icu/util/TimeZoneRule;->getDSTSavings()I
-Landroid/icu/util/TimeZoneRule;->getFinalStart(II)Ljava/util/Date;
-Landroid/icu/util/TimeZoneRule;->getFirstStart(II)Ljava/util/Date;
-Landroid/icu/util/TimeZoneRule;->getName()Ljava/lang/String;
-Landroid/icu/util/TimeZoneRule;->getNextStart(JIIZ)Ljava/util/Date;
-Landroid/icu/util/TimeZoneRule;->getPreviousStart(JIIZ)Ljava/util/Date;
-Landroid/icu/util/TimeZoneRule;->getRawOffset()I
-Landroid/icu/util/TimeZoneRule;->isEquivalentTo(Landroid/icu/util/TimeZoneRule;)Z
-Landroid/icu/util/TimeZoneRule;->isTransitionRule()Z
-Landroid/icu/util/TimeZoneRule;->name:Ljava/lang/String;
-Landroid/icu/util/TimeZoneRule;->rawOffset:I
-Landroid/icu/util/TimeZoneTransition;-><init>(JLandroid/icu/util/TimeZoneRule;Landroid/icu/util/TimeZoneRule;)V
-Landroid/icu/util/TimeZoneTransition;->from:Landroid/icu/util/TimeZoneRule;
-Landroid/icu/util/TimeZoneTransition;->getFrom()Landroid/icu/util/TimeZoneRule;
-Landroid/icu/util/TimeZoneTransition;->getTime()J
-Landroid/icu/util/TimeZoneTransition;->getTo()Landroid/icu/util/TimeZoneRule;
-Landroid/icu/util/TimeZoneTransition;->time:J
-Landroid/icu/util/TimeZoneTransition;->to:Landroid/icu/util/TimeZoneRule;
-Landroid/icu/util/ULocale$Builder;->_locbld:Landroid/icu/impl/locale/InternalLocaleBuilder;
-Landroid/icu/util/ULocale$JDKLocaleHelper;-><init>()V
-Landroid/icu/util/ULocale$JDKLocaleHelper;->eDISPLAY:Ljava/lang/Object;
-Landroid/icu/util/ULocale$JDKLocaleHelper;->eFORMAT:Ljava/lang/Object;
-Landroid/icu/util/ULocale$JDKLocaleHelper;->getDefault(Landroid/icu/util/ULocale$Category;)Ljava/util/Locale;
-Landroid/icu/util/ULocale$JDKLocaleHelper;->getSystemProperty(Ljava/lang/String;)Ljava/lang/String;
-Landroid/icu/util/ULocale$JDKLocaleHelper;->hasLocaleCategories()Z
-Landroid/icu/util/ULocale$JDKLocaleHelper;->hasLocaleCategories:Z
-Landroid/icu/util/ULocale$JDKLocaleHelper;->hasScriptsAndUnicodeExtensions:Z
-Landroid/icu/util/ULocale$JDKLocaleHelper;->isOriginalDefaultLocale(Ljava/util/Locale;)Z
-Landroid/icu/util/ULocale$JDKLocaleHelper;->JAVA6_MAPDATA:[[Ljava/lang/String;
-Landroid/icu/util/ULocale$JDKLocaleHelper;->mForLanguageTag:Ljava/lang/reflect/Method;
-Landroid/icu/util/ULocale$JDKLocaleHelper;->mGetDefault:Ljava/lang/reflect/Method;
-Landroid/icu/util/ULocale$JDKLocaleHelper;->mGetExtension:Ljava/lang/reflect/Method;
-Landroid/icu/util/ULocale$JDKLocaleHelper;->mGetExtensionKeys:Ljava/lang/reflect/Method;
-Landroid/icu/util/ULocale$JDKLocaleHelper;->mGetScript:Ljava/lang/reflect/Method;
-Landroid/icu/util/ULocale$JDKLocaleHelper;->mGetUnicodeLocaleAttributes:Ljava/lang/reflect/Method;
-Landroid/icu/util/ULocale$JDKLocaleHelper;->mGetUnicodeLocaleKeys:Ljava/lang/reflect/Method;
-Landroid/icu/util/ULocale$JDKLocaleHelper;->mGetUnicodeLocaleType:Ljava/lang/reflect/Method;
-Landroid/icu/util/ULocale$JDKLocaleHelper;->mSetDefault:Ljava/lang/reflect/Method;
-Landroid/icu/util/ULocale$JDKLocaleHelper;->setDefault(Landroid/icu/util/ULocale$Category;Ljava/util/Locale;)V
-Landroid/icu/util/ULocale$JDKLocaleHelper;->toLocale(Landroid/icu/util/ULocale;)Ljava/util/Locale;
-Landroid/icu/util/ULocale$JDKLocaleHelper;->toLocale6(Landroid/icu/util/ULocale;)Ljava/util/Locale;
-Landroid/icu/util/ULocale$JDKLocaleHelper;->toLocale7(Landroid/icu/util/ULocale;)Ljava/util/Locale;
-Landroid/icu/util/ULocale$JDKLocaleHelper;->toULocale(Ljava/util/Locale;)Landroid/icu/util/ULocale;
-Landroid/icu/util/ULocale$JDKLocaleHelper;->toULocale6(Ljava/util/Locale;)Landroid/icu/util/ULocale;
-Landroid/icu/util/ULocale$JDKLocaleHelper;->toULocale7(Ljava/util/Locale;)Landroid/icu/util/ULocale;
-Landroid/icu/util/ULocale$Minimize;->FAVOR_REGION:Landroid/icu/util/ULocale$Minimize;
-Landroid/icu/util/ULocale$Minimize;->FAVOR_SCRIPT:Landroid/icu/util/ULocale$Minimize;
-Landroid/icu/util/ULocale$Minimize;->valueOf(Ljava/lang/String;)Landroid/icu/util/ULocale$Minimize;
-Landroid/icu/util/ULocale$Minimize;->values()[Landroid/icu/util/ULocale$Minimize;
-Landroid/icu/util/ULocale$Type;-><init>()V
-Landroid/icu/util/ULocale;-><init>(Ljava/lang/String;Ljava/util/Locale;)V
-Landroid/icu/util/ULocale;-><init>(Ljava/util/Locale;)V
-Landroid/icu/util/ULocale;->ACTUAL_LOCALE:Landroid/icu/util/ULocale$Type;
-Landroid/icu/util/ULocale;->appendTag(Ljava/lang/String;Ljava/lang/StringBuilder;)V
-Landroid/icu/util/ULocale;->base()Landroid/icu/impl/locale/BaseLocale;
-Landroid/icu/util/ULocale;->baseLocale:Landroid/icu/impl/locale/BaseLocale;
-Landroid/icu/util/ULocale;->CACHE:Landroid/icu/impl/SoftCache;
-Landroid/icu/util/ULocale;->CANONICALIZE_MAP:[[Ljava/lang/String;
-Landroid/icu/util/ULocale;->createLikelySubtagsString(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
-Landroid/icu/util/ULocale;->createTagString(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
-Landroid/icu/util/ULocale;->createTagString(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
-Landroid/icu/util/ULocale;->defaultCategoryLocales:[Ljava/util/Locale;
-Landroid/icu/util/ULocale;->defaultCategoryULocales:[Landroid/icu/util/ULocale;
-Landroid/icu/util/ULocale;->defaultLocale:Ljava/util/Locale;
-Landroid/icu/util/ULocale;->defaultULocale:Landroid/icu/util/ULocale;
-Landroid/icu/util/ULocale;->EMPTY_LOCALE:Ljava/util/Locale;
-Landroid/icu/util/ULocale;->EMPTY_STRING:Ljava/lang/String;
-Landroid/icu/util/ULocale;->extensions()Landroid/icu/impl/locale/LocaleExtensions;
-Landroid/icu/util/ULocale;->extensions:Landroid/icu/impl/locale/LocaleExtensions;
-Landroid/icu/util/ULocale;->getDisplayCountryInternal(Landroid/icu/util/ULocale;Landroid/icu/util/ULocale;)Ljava/lang/String;
-Landroid/icu/util/ULocale;->getDisplayKeywordInternal(Ljava/lang/String;Landroid/icu/util/ULocale;)Ljava/lang/String;
-Landroid/icu/util/ULocale;->getDisplayKeywordValueInternal(Landroid/icu/util/ULocale;Ljava/lang/String;Landroid/icu/util/ULocale;)Ljava/lang/String;
-Landroid/icu/util/ULocale;->getDisplayLanguageInternal(Landroid/icu/util/ULocale;Landroid/icu/util/ULocale;Z)Ljava/lang/String;
-Landroid/icu/util/ULocale;->getDisplayNameInternal(Landroid/icu/util/ULocale;Landroid/icu/util/ULocale;)Ljava/lang/String;
-Landroid/icu/util/ULocale;->getDisplayNameWithDialectInternal(Landroid/icu/util/ULocale;Landroid/icu/util/ULocale;)Ljava/lang/String;
-Landroid/icu/util/ULocale;->getDisplayScriptInContext()Ljava/lang/String;
-Landroid/icu/util/ULocale;->getDisplayScriptInContext(Landroid/icu/util/ULocale;)Ljava/lang/String;
-Landroid/icu/util/ULocale;->getDisplayScriptInContext(Ljava/lang/String;Landroid/icu/util/ULocale;)Ljava/lang/String;
-Landroid/icu/util/ULocale;->getDisplayScriptInContext(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
-Landroid/icu/util/ULocale;->getDisplayScriptInContextInternal(Landroid/icu/util/ULocale;Landroid/icu/util/ULocale;)Ljava/lang/String;
-Landroid/icu/util/ULocale;->getDisplayScriptInternal(Landroid/icu/util/ULocale;Landroid/icu/util/ULocale;)Ljava/lang/String;
-Landroid/icu/util/ULocale;->getDisplayVariantInternal(Landroid/icu/util/ULocale;Landroid/icu/util/ULocale;)Ljava/lang/String;
-Landroid/icu/util/ULocale;->getFallbackString(Ljava/lang/String;)Ljava/lang/String;
-Landroid/icu/util/ULocale;->getInstance(Landroid/icu/impl/locale/BaseLocale;Landroid/icu/impl/locale/LocaleExtensions;)Landroid/icu/util/ULocale;
-Landroid/icu/util/ULocale;->getRegionForSupplementalData(Landroid/icu/util/ULocale;Z)Ljava/lang/String;
-Landroid/icu/util/ULocale;->getShortestSubtagLength(Ljava/lang/String;)I
-Landroid/icu/util/ULocale;->isEmptyString(Ljava/lang/String;)Z
-Landroid/icu/util/ULocale;->LANG_DIR_STRING:Ljava/lang/String;
-Landroid/icu/util/ULocale;->locale:Ljava/util/Locale;
-Landroid/icu/util/ULocale;->localeID:Ljava/lang/String;
-Landroid/icu/util/ULocale;->LOCALE_ATTRIBUTE_KEY:Ljava/lang/String;
-Landroid/icu/util/ULocale;->lookupLikelySubtags(Ljava/lang/String;)Ljava/lang/String;
-Landroid/icu/util/ULocale;->lscvToID(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
-Landroid/icu/util/ULocale;->minimizeSubtags(Landroid/icu/util/ULocale;Landroid/icu/util/ULocale$Minimize;)Landroid/icu/util/ULocale;
-Landroid/icu/util/ULocale;->nameCache:Landroid/icu/impl/CacheBase;
-Landroid/icu/util/ULocale;->parseAcceptLanguage(Ljava/lang/String;Z)[Landroid/icu/util/ULocale;
-Landroid/icu/util/ULocale;->parseTagString(Ljava/lang/String;[Ljava/lang/String;)I
-Landroid/icu/util/ULocale;->setDefault(Landroid/icu/util/ULocale$Category;Landroid/icu/util/ULocale;)V
-Landroid/icu/util/ULocale;->setDefault(Landroid/icu/util/ULocale;)V
-Landroid/icu/util/ULocale;->UNDEFINED_LANGUAGE:Ljava/lang/String;
-Landroid/icu/util/ULocale;->UNDEFINED_REGION:Ljava/lang/String;
-Landroid/icu/util/ULocale;->UNDEFINED_SCRIPT:Ljava/lang/String;
-Landroid/icu/util/ULocale;->UNDERSCORE:C
-Landroid/icu/util/ULocale;->VALID_LOCALE:Landroid/icu/util/ULocale$Type;
-Landroid/icu/util/ULocale;->variantsToKeywords:[[Ljava/lang/String;
-Landroid/icu/util/UniversalTimeScale$TimeScaleData;-><init>(JJJJJJ)V
-Landroid/icu/util/UniversalTimeScale$TimeScaleData;->epochOffset:J
-Landroid/icu/util/UniversalTimeScale$TimeScaleData;->epochOffsetM1:J
-Landroid/icu/util/UniversalTimeScale$TimeScaleData;->epochOffsetP1:J
-Landroid/icu/util/UniversalTimeScale$TimeScaleData;->fromMax:J
-Landroid/icu/util/UniversalTimeScale$TimeScaleData;->fromMin:J
-Landroid/icu/util/UniversalTimeScale$TimeScaleData;->maxRound:J
-Landroid/icu/util/UniversalTimeScale$TimeScaleData;->minRound:J
-Landroid/icu/util/UniversalTimeScale$TimeScaleData;->toMax:J
-Landroid/icu/util/UniversalTimeScale$TimeScaleData;->toMin:J
-Landroid/icu/util/UniversalTimeScale$TimeScaleData;->units:J
-Landroid/icu/util/UniversalTimeScale$TimeScaleData;->unitsRound:J
-Landroid/icu/util/UniversalTimeScale;-><init>()V
-Landroid/icu/util/UniversalTimeScale;->days:J
-Landroid/icu/util/UniversalTimeScale;->EPOCH_OFFSET_MINUS_1_VALUE:I
-Landroid/icu/util/UniversalTimeScale;->fromRangeCheck(JI)Landroid/icu/util/UniversalTimeScale$TimeScaleData;
-Landroid/icu/util/UniversalTimeScale;->getTimeScaleData(I)Landroid/icu/util/UniversalTimeScale$TimeScaleData;
-Landroid/icu/util/UniversalTimeScale;->hours:J
-Landroid/icu/util/UniversalTimeScale;->MAX_ROUND_VALUE:I
-Landroid/icu/util/UniversalTimeScale;->MAX_SCALE_VALUE:I
-Landroid/icu/util/UniversalTimeScale;->microseconds:J
-Landroid/icu/util/UniversalTimeScale;->milliseconds:J
-Landroid/icu/util/UniversalTimeScale;->minutes:J
-Landroid/icu/util/UniversalTimeScale;->MIN_ROUND_VALUE:I
-Landroid/icu/util/UniversalTimeScale;->seconds:J
-Landroid/icu/util/UniversalTimeScale;->ticks:J
-Landroid/icu/util/UniversalTimeScale;->timeScaleTable:[Landroid/icu/util/UniversalTimeScale$TimeScaleData;
-Landroid/icu/util/UniversalTimeScale;->toBigDecimalTrunc(Landroid/icu/math/BigDecimal;I)Landroid/icu/math/BigDecimal;
-Landroid/icu/util/UniversalTimeScale;->toRangeCheck(JI)Landroid/icu/util/UniversalTimeScale$TimeScaleData;
-Landroid/icu/util/UniversalTimeScale;->UNITS_ROUND_VALUE:I
-Landroid/icu/util/UResourceBundle$RootType;->ICU:Landroid/icu/util/UResourceBundle$RootType;
-Landroid/icu/util/UResourceBundle$RootType;->JAVA:Landroid/icu/util/UResourceBundle$RootType;
-Landroid/icu/util/UResourceBundle$RootType;->MISSING:Landroid/icu/util/UResourceBundle$RootType;
-Landroid/icu/util/UResourceBundle$RootType;->valueOf(Ljava/lang/String;)Landroid/icu/util/UResourceBundle$RootType;
-Landroid/icu/util/UResourceBundle$RootType;->values()[Landroid/icu/util/UResourceBundle$RootType;
-Landroid/icu/util/UResourceBundle;-><init>()V
-Landroid/icu/util/UResourceBundle;->ARRAY:I
-Landroid/icu/util/UResourceBundle;->BINARY:I
-Landroid/icu/util/UResourceBundle;->findTopLevel(I)Landroid/icu/util/UResourceBundle;
-Landroid/icu/util/UResourceBundle;->findTopLevel(Ljava/lang/String;)Landroid/icu/util/UResourceBundle;
-Landroid/icu/util/UResourceBundle;->get(I)Landroid/icu/util/UResourceBundle;
-Landroid/icu/util/UResourceBundle;->get(Ljava/lang/String;)Landroid/icu/util/UResourceBundle;
-Landroid/icu/util/UResourceBundle;->getBaseName()Ljava/lang/String;
-Landroid/icu/util/UResourceBundle;->getBinary()Ljava/nio/ByteBuffer;
-Landroid/icu/util/UResourceBundle;->getBinary([B)[B
-Landroid/icu/util/UResourceBundle;->getBundleInstance(Landroid/icu/util/ULocale;)Landroid/icu/util/UResourceBundle;
-Landroid/icu/util/UResourceBundle;->getBundleInstance(Ljava/lang/String;)Landroid/icu/util/UResourceBundle;
-Landroid/icu/util/UResourceBundle;->getBundleInstance(Ljava/lang/String;Landroid/icu/util/ULocale;Ljava/lang/ClassLoader;)Landroid/icu/util/UResourceBundle;
-Landroid/icu/util/UResourceBundle;->getBundleInstance(Ljava/lang/String;Ljava/lang/String;)Landroid/icu/util/UResourceBundle;
-Landroid/icu/util/UResourceBundle;->getBundleInstance(Ljava/lang/String;Ljava/lang/String;Ljava/lang/ClassLoader;)Landroid/icu/util/UResourceBundle;
-Landroid/icu/util/UResourceBundle;->getBundleInstance(Ljava/lang/String;Ljava/lang/String;Ljava/lang/ClassLoader;Z)Landroid/icu/util/UResourceBundle;
-Landroid/icu/util/UResourceBundle;->getBundleInstance(Ljava/lang/String;Ljava/util/Locale;)Landroid/icu/util/UResourceBundle;
-Landroid/icu/util/UResourceBundle;->getBundleInstance(Ljava/lang/String;Ljava/util/Locale;Ljava/lang/ClassLoader;)Landroid/icu/util/UResourceBundle;
-Landroid/icu/util/UResourceBundle;->getInt()I
-Landroid/icu/util/UResourceBundle;->getIntVector()[I
-Landroid/icu/util/UResourceBundle;->getIterator()Landroid/icu/util/UResourceBundleIterator;
-Landroid/icu/util/UResourceBundle;->getLocaleID()Ljava/lang/String;
-Landroid/icu/util/UResourceBundle;->getParent()Landroid/icu/util/UResourceBundle;
-Landroid/icu/util/UResourceBundle;->getRootType(Ljava/lang/String;Ljava/lang/ClassLoader;)Landroid/icu/util/UResourceBundle$RootType;
-Landroid/icu/util/UResourceBundle;->getSize()I
-Landroid/icu/util/UResourceBundle;->getString(I)Ljava/lang/String;
-Landroid/icu/util/UResourceBundle;->getStringArray()[Ljava/lang/String;
-Landroid/icu/util/UResourceBundle;->getUInt()I
-Landroid/icu/util/UResourceBundle;->getULocale()Landroid/icu/util/ULocale;
-Landroid/icu/util/UResourceBundle;->getVersion()Landroid/icu/util/VersionInfo;
-Landroid/icu/util/UResourceBundle;->handleGet(ILjava/util/HashMap;Landroid/icu/util/UResourceBundle;)Landroid/icu/util/UResourceBundle;
-Landroid/icu/util/UResourceBundle;->handleGet(Ljava/lang/String;Ljava/util/HashMap;Landroid/icu/util/UResourceBundle;)Landroid/icu/util/UResourceBundle;
-Landroid/icu/util/UResourceBundle;->handleGetKeys()Ljava/util/Enumeration;
-Landroid/icu/util/UResourceBundle;->handleGetObjectImpl(Ljava/lang/String;Landroid/icu/util/UResourceBundle;)Ljava/lang/Object;
-Landroid/icu/util/UResourceBundle;->handleGetStringArray()[Ljava/lang/String;
-Landroid/icu/util/UResourceBundle;->instantiateBundle(Ljava/lang/String;Ljava/lang/String;Ljava/lang/ClassLoader;Z)Landroid/icu/util/UResourceBundle;
-Landroid/icu/util/UResourceBundle;->INT:I
-Landroid/icu/util/UResourceBundle;->INT_VECTOR:I
-Landroid/icu/util/UResourceBundle;->isTopLevelResource()Z
-Landroid/icu/util/UResourceBundle;->NONE:I
-Landroid/icu/util/UResourceBundle;->resolveObject(Ljava/lang/String;Landroid/icu/util/UResourceBundle;)Ljava/lang/Object;
-Landroid/icu/util/UResourceBundle;->ROOT_CACHE:Ljava/util/Map;
-Landroid/icu/util/UResourceBundle;->setRootType(Ljava/lang/String;Landroid/icu/util/UResourceBundle$RootType;)V
-Landroid/icu/util/UResourceBundle;->STRING:I
-Landroid/icu/util/UResourceBundle;->TABLE:I
-Landroid/icu/util/UResourceBundleIterator;-><init>(Landroid/icu/util/UResourceBundle;)V
-Landroid/icu/util/UResourceBundleIterator;->bundle:Landroid/icu/util/UResourceBundle;
-Landroid/icu/util/UResourceBundleIterator;->index:I
-Landroid/icu/util/UResourceBundleIterator;->nextString()Ljava/lang/String;
-Landroid/icu/util/UResourceBundleIterator;->reset()V
-Landroid/icu/util/UResourceBundleIterator;->size:I
-Landroid/icu/util/UResourceTypeMismatchException;-><init>(Ljava/lang/String;)V
-Landroid/icu/util/VersionInfo;-><init>(I)V
-Landroid/icu/util/VersionInfo;->getInt(IIII)I
-Landroid/icu/util/VersionInfo;->getTZDataVersion()Ljava/lang/String;
-Landroid/icu/util/VersionInfo;->getVersionString(II)Ljava/lang/String;
-Landroid/icu/util/VersionInfo;->ICU_DATA_VERSION:Landroid/icu/util/VersionInfo;
-Landroid/icu/util/VersionInfo;->ICU_DATA_VERSION_PATH:Ljava/lang/String;
-Landroid/icu/util/VersionInfo;->INVALID_VERSION_NUMBER_:Ljava/lang/String;
-Landroid/icu/util/VersionInfo;->javaVersion()Landroid/icu/util/VersionInfo;
-Landroid/icu/util/VersionInfo;->javaVersion:Landroid/icu/util/VersionInfo;
-Landroid/icu/util/VersionInfo;->LAST_BYTE_MASK_:I
-Landroid/icu/util/VersionInfo;->main([Ljava/lang/String;)V
-Landroid/icu/util/VersionInfo;->MAP_:Ljava/util/concurrent/ConcurrentHashMap;
-Landroid/icu/util/VersionInfo;->m_version_:I
-Landroid/icu/util/VersionInfo;->TZDATA_VERSION:Ljava/lang/String;
-Landroid/icu/util/VersionInfo;->UCOL_TAILORINGS_VERSION:Landroid/icu/util/VersionInfo;
-Landroid/icu/util/VersionInfo;->UNICODE_VERSION:Landroid/icu/util/VersionInfo;
-Landroid/icu/util/VTimeZone;-><init>()V
-Landroid/icu/util/VTimeZone;-><init>(Ljava/lang/String;)V
-Landroid/icu/util/VTimeZone;->appendUNTIL(Ljava/io/Writer;Ljava/lang/String;)V
-Landroid/icu/util/VTimeZone;->beginRRULE(Ljava/io/Writer;I)V
-Landroid/icu/util/VTimeZone;->beginZoneProps(Ljava/io/Writer;ZLjava/lang/String;IIJ)V
-Landroid/icu/util/VTimeZone;->COLON:Ljava/lang/String;
-Landroid/icu/util/VTimeZone;->COMMA:Ljava/lang/String;
-Landroid/icu/util/VTimeZone;->create(Ljava/io/Reader;)Landroid/icu/util/VTimeZone;
-Landroid/icu/util/VTimeZone;->create(Ljava/lang/String;)Landroid/icu/util/VTimeZone;
-Landroid/icu/util/VTimeZone;->createRuleByRDATE(Ljava/lang/String;IIJLjava/util/List;I)Landroid/icu/util/TimeZoneRule;
-Landroid/icu/util/VTimeZone;->createRuleByRRULE(Ljava/lang/String;IIJLjava/util/List;I)Landroid/icu/util/TimeZoneRule;
-Landroid/icu/util/VTimeZone;->DEF_DSTSAVINGS:I
-Landroid/icu/util/VTimeZone;->DEF_TZSTARTTIME:J
-Landroid/icu/util/VTimeZone;->endZoneProps(Ljava/io/Writer;Z)V
-Landroid/icu/util/VTimeZone;->EQUALS_SIGN:Ljava/lang/String;
-Landroid/icu/util/VTimeZone;->ERR:I
-Landroid/icu/util/VTimeZone;->getDateTimeString(J)Ljava/lang/String;
-Landroid/icu/util/VTimeZone;->getDefaultTZName(Ljava/lang/String;Z)Ljava/lang/String;
-Landroid/icu/util/VTimeZone;->getLastModified()Ljava/util/Date;
-Landroid/icu/util/VTimeZone;->getNextTransition(JZ)Landroid/icu/util/TimeZoneTransition;
-Landroid/icu/util/VTimeZone;->getOffsetFromLocal(JII[I)V
-Landroid/icu/util/VTimeZone;->getPreviousTransition(JZ)Landroid/icu/util/TimeZoneTransition;
-Landroid/icu/util/VTimeZone;->getTimeZoneRules()[Landroid/icu/util/TimeZoneRule;
-Landroid/icu/util/VTimeZone;->getTimeZoneRules(J)[Landroid/icu/util/TimeZoneRule;
-Landroid/icu/util/VTimeZone;->getTZURL()Ljava/lang/String;
-Landroid/icu/util/VTimeZone;->getUTCDateTimeString(J)Ljava/lang/String;
-Landroid/icu/util/VTimeZone;->hasEquivalentTransitions(Landroid/icu/util/TimeZone;JJ)Z
-Landroid/icu/util/VTimeZone;->ICAL_BEGIN:Ljava/lang/String;
-Landroid/icu/util/VTimeZone;->ICAL_BEGIN_VTIMEZONE:Ljava/lang/String;
-Landroid/icu/util/VTimeZone;->ICAL_BYDAY:Ljava/lang/String;
-Landroid/icu/util/VTimeZone;->ICAL_BYMONTH:Ljava/lang/String;
-Landroid/icu/util/VTimeZone;->ICAL_BYMONTHDAY:Ljava/lang/String;
-Landroid/icu/util/VTimeZone;->ICAL_DAYLIGHT:Ljava/lang/String;
-Landroid/icu/util/VTimeZone;->ICAL_DOW_NAMES:[Ljava/lang/String;
-Landroid/icu/util/VTimeZone;->ICAL_DTSTART:Ljava/lang/String;
-Landroid/icu/util/VTimeZone;->ICAL_END:Ljava/lang/String;
-Landroid/icu/util/VTimeZone;->ICAL_END_VTIMEZONE:Ljava/lang/String;
-Landroid/icu/util/VTimeZone;->ICAL_FREQ:Ljava/lang/String;
-Landroid/icu/util/VTimeZone;->ICAL_LASTMOD:Ljava/lang/String;
-Landroid/icu/util/VTimeZone;->ICAL_RDATE:Ljava/lang/String;
-Landroid/icu/util/VTimeZone;->ICAL_RRULE:Ljava/lang/String;
-Landroid/icu/util/VTimeZone;->ICAL_STANDARD:Ljava/lang/String;
-Landroid/icu/util/VTimeZone;->ICAL_TZID:Ljava/lang/String;
-Landroid/icu/util/VTimeZone;->ICAL_TZNAME:Ljava/lang/String;
-Landroid/icu/util/VTimeZone;->ICAL_TZOFFSETFROM:Ljava/lang/String;
-Landroid/icu/util/VTimeZone;->ICAL_TZOFFSETTO:Ljava/lang/String;
-Landroid/icu/util/VTimeZone;->ICAL_TZURL:Ljava/lang/String;
-Landroid/icu/util/VTimeZone;->ICAL_UNTIL:Ljava/lang/String;
-Landroid/icu/util/VTimeZone;->ICAL_VTIMEZONE:Ljava/lang/String;
-Landroid/icu/util/VTimeZone;->ICAL_YEARLY:Ljava/lang/String;
-Landroid/icu/util/VTimeZone;->ICU_TZINFO_PROP:Ljava/lang/String;
-Landroid/icu/util/VTimeZone;->ICU_TZVERSION:Ljava/lang/String;
-Landroid/icu/util/VTimeZone;->INI:I
-Landroid/icu/util/VTimeZone;->isEquivalentDateRule(IIILandroid/icu/util/DateTimeRule;)Z
-Landroid/icu/util/VTimeZone;->isFrozen:Z
-Landroid/icu/util/VTimeZone;->lastmod:Ljava/util/Date;
-Landroid/icu/util/VTimeZone;->load(Ljava/io/Reader;)Z
-Landroid/icu/util/VTimeZone;->MAX_TIME:J
-Landroid/icu/util/VTimeZone;->millisToOffset(I)Ljava/lang/String;
-Landroid/icu/util/VTimeZone;->MIN_TIME:J
-Landroid/icu/util/VTimeZone;->MONTHLENGTH:[I
-Landroid/icu/util/VTimeZone;->NEWLINE:Ljava/lang/String;
-Landroid/icu/util/VTimeZone;->numToString(II)Ljava/lang/String;
-Landroid/icu/util/VTimeZone;->offsetStrToMillis(Ljava/lang/String;)I
-Landroid/icu/util/VTimeZone;->olsonzid:Ljava/lang/String;
-Landroid/icu/util/VTimeZone;->parse()Z
-Landroid/icu/util/VTimeZone;->parseDateTimeString(Ljava/lang/String;I)J
-Landroid/icu/util/VTimeZone;->parseRRULE(Ljava/lang/String;[J)[I
-Landroid/icu/util/VTimeZone;->SEMICOLON:Ljava/lang/String;
-Landroid/icu/util/VTimeZone;->setLastModified(Ljava/util/Date;)V
-Landroid/icu/util/VTimeZone;->setTZURL(Ljava/lang/String;)V
-Landroid/icu/util/VTimeZone;->toWallTimeRule(Landroid/icu/util/DateTimeRule;II)Landroid/icu/util/DateTimeRule;
-Landroid/icu/util/VTimeZone;->tz:Landroid/icu/util/BasicTimeZone;
-Landroid/icu/util/VTimeZone;->TZI:I
-Landroid/icu/util/VTimeZone;->tzurl:Ljava/lang/String;
-Landroid/icu/util/VTimeZone;->VTZ:I
-Landroid/icu/util/VTimeZone;->vtzlines:Ljava/util/List;
-Landroid/icu/util/VTimeZone;->write(Ljava/io/Writer;)V
-Landroid/icu/util/VTimeZone;->write(Ljava/io/Writer;J)V
-Landroid/icu/util/VTimeZone;->writeFinalRule(Ljava/io/Writer;ZLandroid/icu/util/AnnualTimeZoneRule;IIJ)V
-Landroid/icu/util/VTimeZone;->writeFooter(Ljava/io/Writer;)V
-Landroid/icu/util/VTimeZone;->writeHeader(Ljava/io/Writer;)V
-Landroid/icu/util/VTimeZone;->writeSimple(Ljava/io/Writer;J)V
-Landroid/icu/util/VTimeZone;->writeZone(Ljava/io/Writer;Landroid/icu/util/BasicTimeZone;[Ljava/lang/String;)V
-Landroid/icu/util/VTimeZone;->writeZonePropsByDOM(Ljava/io/Writer;ZLjava/lang/String;IIIIJJ)V
-Landroid/icu/util/VTimeZone;->writeZonePropsByDOW(Ljava/io/Writer;ZLjava/lang/String;IIIIIJJ)V
-Landroid/icu/util/VTimeZone;->writeZonePropsByDOW_GEQ_DOM(Ljava/io/Writer;ZLjava/lang/String;IIIIIJJ)V
-Landroid/icu/util/VTimeZone;->writeZonePropsByDOW_GEQ_DOM_sub(Ljava/io/Writer;IIIIJI)V
-Landroid/icu/util/VTimeZone;->writeZonePropsByDOW_LEQ_DOM(Ljava/io/Writer;ZLjava/lang/String;IIIIIJJ)V
-Landroid/icu/util/VTimeZone;->writeZonePropsByTime(Ljava/io/Writer;ZLjava/lang/String;IIJZ)V
Landroid/inputmethodservice/AbstractInputMethodService$AbstractInputMethodSessionImpl;->mEnabled:Z
Landroid/inputmethodservice/AbstractInputMethodService$AbstractInputMethodSessionImpl;->mRevoked:Z
Landroid/inputmethodservice/AbstractInputMethodService;->exposeContent(Landroid/view/inputmethod/InputContentInfo;Landroid/view/inputmethod/InputConnection;)V
@@ -65381,117 +58139,6 @@
Landroid/speech/tts/Voice;->mName:Ljava/lang/String;
Landroid/speech/tts/Voice;->mQuality:I
Landroid/speech/tts/Voice;->mRequiresNetworkConnection:Z
-Landroid/system/ErrnoException;->functionName:Ljava/lang/String;
-Landroid/system/ErrnoException;->rethrowAsIOException()Ljava/io/IOException;
-Landroid/system/ErrnoException;->rethrowAsSocketException()Ljava/net/SocketException;
-Landroid/system/GaiException;-><init>(Ljava/lang/String;I)V
-Landroid/system/GaiException;-><init>(Ljava/lang/String;ILjava/lang/Throwable;)V
-Landroid/system/GaiException;->error:I
-Landroid/system/GaiException;->functionName:Ljava/lang/String;
-Landroid/system/GaiException;->rethrowAsUnknownHostException()Ljava/net/UnknownHostException;
-Landroid/system/GaiException;->rethrowAsUnknownHostException(Ljava/lang/String;)Ljava/net/UnknownHostException;
-Landroid/system/Int32Ref;-><init>(I)V
-Landroid/system/NetlinkSocketAddress;-><init>()V
-Landroid/system/NetlinkSocketAddress;-><init>(I)V
-Landroid/system/NetlinkSocketAddress;->getGroupsMask()I
-Landroid/system/NetlinkSocketAddress;->getPortId()I
-Landroid/system/NetlinkSocketAddress;->nlGroupsMask:I
-Landroid/system/NetlinkSocketAddress;->nlPortId:I
-Landroid/system/Os;-><init>()V
-Landroid/system/Os;->accept(Ljava/io/FileDescriptor;Ljava/net/SocketAddress;)Ljava/io/FileDescriptor;
-Landroid/system/Os;->android_getaddrinfo(Ljava/lang/String;Landroid/system/StructAddrinfo;I)[Ljava/net/InetAddress;
-Landroid/system/Os;->capget(Landroid/system/StructCapUserHeader;)[Landroid/system/StructCapUserData;
-Landroid/system/Os;->capset(Landroid/system/StructCapUserHeader;[Landroid/system/StructCapUserData;)V
-Landroid/system/Os;->fcntlFlock(Ljava/io/FileDescriptor;ILandroid/system/StructFlock;)I
-Landroid/system/Os;->fcntlInt(Ljava/io/FileDescriptor;II)I
-Landroid/system/Os;->fcntlVoid(Ljava/io/FileDescriptor;I)I
-Landroid/system/Os;->getifaddrs()[Landroid/system/StructIfaddrs;
-Landroid/system/Os;->getnameinfo(Ljava/net/InetAddress;I)Ljava/lang/String;
-Landroid/system/Os;->getpgid(I)I
-Landroid/system/Os;->getpwnam(Ljava/lang/String;)Landroid/system/StructPasswd;
-Landroid/system/Os;->getpwuid(I)Landroid/system/StructPasswd;
-Landroid/system/Os;->getrlimit(I)Landroid/system/StructRlimit;
-Landroid/system/Os;->getsockoptByte(Ljava/io/FileDescriptor;II)I
-Landroid/system/Os;->getsockoptInAddr(Ljava/io/FileDescriptor;II)Ljava/net/InetAddress;
-Landroid/system/Os;->getsockoptInt(Ljava/io/FileDescriptor;II)I
-Landroid/system/Os;->getsockoptLinger(Ljava/io/FileDescriptor;II)Landroid/system/StructLinger;
-Landroid/system/Os;->getsockoptTimeval(Ljava/io/FileDescriptor;II)Landroid/system/StructTimeval;
-Landroid/system/Os;->getsockoptUcred(Ljava/io/FileDescriptor;II)Landroid/system/StructUcred;
-Landroid/system/Os;->ioctlInetAddress(Ljava/io/FileDescriptor;ILjava/lang/String;)Ljava/net/InetAddress;
-Landroid/system/Os;->ioctlInt(Ljava/io/FileDescriptor;ILandroid/system/Int32Ref;)I
-Landroid/system/Os;->pipe2(I)[Ljava/io/FileDescriptor;
-Landroid/system/Os;->realpath(Ljava/lang/String;)Ljava/lang/String;
-Landroid/system/Os;->setpgid(II)V
-Landroid/system/Os;->setregid(II)V
-Landroid/system/Os;->setreuid(II)V
-Landroid/system/Os;->setsockoptByte(Ljava/io/FileDescriptor;III)V
-Landroid/system/Os;->setsockoptGroupReq(Ljava/io/FileDescriptor;IILandroid/system/StructGroupReq;)V
-Landroid/system/Os;->setsockoptIpMreqn(Ljava/io/FileDescriptor;III)V
-Landroid/system/Os;->setsockoptLinger(Ljava/io/FileDescriptor;IILandroid/system/StructLinger;)V
-Landroid/system/Os;->splice(Ljava/io/FileDescriptor;Landroid/system/Int64Ref;Ljava/io/FileDescriptor;Landroid/system/Int64Ref;JI)J
-Landroid/system/Os;->unlink(Ljava/lang/String;)V
-Landroid/system/Os;->waitpid(ILandroid/system/Int32Ref;I)I
-Landroid/system/PacketSocketAddress;-><init>(SISB[B)V
-Landroid/system/PacketSocketAddress;->sll_addr:[B
-Landroid/system/PacketSocketAddress;->sll_hatype:S
-Landroid/system/PacketSocketAddress;->sll_ifindex:I
-Landroid/system/PacketSocketAddress;->sll_pkttype:B
-Landroid/system/PacketSocketAddress;->sll_protocol:S
-Landroid/system/StructAddrinfo;-><init>()V
-Landroid/system/StructAddrinfo;->ai_addr:Ljava/net/InetAddress;
-Landroid/system/StructAddrinfo;->ai_family:I
-Landroid/system/StructAddrinfo;->ai_flags:I
-Landroid/system/StructAddrinfo;->ai_next:Landroid/system/StructAddrinfo;
-Landroid/system/StructAddrinfo;->ai_protocol:I
-Landroid/system/StructAddrinfo;->ai_socktype:I
-Landroid/system/StructCapUserData;-><init>(III)V
-Landroid/system/StructCapUserData;->effective:I
-Landroid/system/StructCapUserData;->inheritable:I
-Landroid/system/StructCapUserData;->permitted:I
-Landroid/system/StructCapUserHeader;-><init>(II)V
-Landroid/system/StructCapUserHeader;->pid:I
-Landroid/system/StructCapUserHeader;->version:I
-Landroid/system/StructFlock;-><init>()V
-Landroid/system/StructFlock;->l_len:J
-Landroid/system/StructFlock;->l_pid:I
-Landroid/system/StructFlock;->l_start:J
-Landroid/system/StructFlock;->l_type:S
-Landroid/system/StructFlock;->l_whence:S
-Landroid/system/StructGroupReq;-><init>(ILjava/net/InetAddress;)V
-Landroid/system/StructGroupReq;->gr_group:Ljava/net/InetAddress;
-Landroid/system/StructGroupReq;->gr_interface:I
-Landroid/system/StructIcmpHdr;-><init>()V
-Landroid/system/StructIcmpHdr;->getBytes()[B
-Landroid/system/StructIcmpHdr;->IcmpEchoHdr(ZI)Landroid/system/StructIcmpHdr;
-Landroid/system/StructIcmpHdr;->packet:[B
-Landroid/system/StructIfaddrs;-><init>(Ljava/lang/String;ILjava/net/InetAddress;Ljava/net/InetAddress;Ljava/net/InetAddress;[B)V
-Landroid/system/StructIfaddrs;->hwaddr:[B
-Landroid/system/StructIfaddrs;->ifa_addr:Ljava/net/InetAddress;
-Landroid/system/StructIfaddrs;->ifa_broadaddr:Ljava/net/InetAddress;
-Landroid/system/StructIfaddrs;->ifa_flags:I
-Landroid/system/StructIfaddrs;->ifa_name:Ljava/lang/String;
-Landroid/system/StructIfaddrs;->ifa_netmask:Ljava/net/InetAddress;
-Landroid/system/StructLinger;-><init>(II)V
-Landroid/system/StructLinger;->isOn()Z
-Landroid/system/StructLinger;->l_linger:I
-Landroid/system/StructLinger;->l_onoff:I
-Landroid/system/StructPasswd;-><init>(Ljava/lang/String;IILjava/lang/String;Ljava/lang/String;)V
-Landroid/system/StructPasswd;->pw_dir:Ljava/lang/String;
-Landroid/system/StructPasswd;->pw_gid:I
-Landroid/system/StructPasswd;->pw_name:Ljava/lang/String;
-Landroid/system/StructPasswd;->pw_shell:Ljava/lang/String;
-Landroid/system/StructPasswd;->pw_uid:I
-Landroid/system/StructRlimit;-><init>(JJ)V
-Landroid/system/StructRlimit;->rlim_cur:J
-Landroid/system/StructRlimit;->rlim_max:J
-Landroid/system/StructTimeval;-><init>(JJ)V
-Landroid/system/StructTimeval;->toMillis()J
-Landroid/system/StructTimeval;->tv_sec:J
-Landroid/system/StructTimeval;->tv_usec:J
-Landroid/system/StructUcred;-><init>(III)V
-Landroid/system/StructUcred;->gid:I
-Landroid/system/StructUcred;->pid:I
-Landroid/system/StructUcred;->uid:I
Landroid/telecom/AudioState;->listAppend(Ljava/lang/StringBuffer;Ljava/lang/String;)V
Landroid/telecom/AudioState;->ROUTE_ALL:I
Landroid/telecom/AuthenticatorService;-><init>()V
@@ -101216,1154 +93863,6 @@
Lcom/android/internal/widget/VerifyCredentialResponse;->setTimeout(I)V
Lcom/android/internal/widget/VerifyCredentialResponse;->stripPayload()Lcom/android/internal/widget/VerifyCredentialResponse;
Lcom/android/internal/widget/VerifyCredentialResponse;->TAG:Ljava/lang/String;
-Lcom/android/okhttp/Address;-><init>(Ljava/lang/String;ILcom/android/okhttp/Dns;Ljavax/net/SocketFactory;Ljavax/net/ssl/SSLSocketFactory;Ljavax/net/ssl/HostnameVerifier;Lcom/android/okhttp/CertificatePinner;Lcom/android/okhttp/Authenticator;Ljava/net/Proxy;Ljava/util/List;Ljava/util/List;Ljava/net/ProxySelector;)V
-Lcom/android/okhttp/Address;->authenticator:Lcom/android/okhttp/Authenticator;
-Lcom/android/okhttp/Address;->certificatePinner:Lcom/android/okhttp/CertificatePinner;
-Lcom/android/okhttp/Address;->connectionSpecs:Ljava/util/List;
-Lcom/android/okhttp/Address;->dns:Lcom/android/okhttp/Dns;
-Lcom/android/okhttp/Address;->getAuthenticator()Lcom/android/okhttp/Authenticator;
-Lcom/android/okhttp/Address;->getCertificatePinner()Lcom/android/okhttp/CertificatePinner;
-Lcom/android/okhttp/Address;->getConnectionSpecs()Ljava/util/List;
-Lcom/android/okhttp/Address;->getDns()Lcom/android/okhttp/Dns;
-Lcom/android/okhttp/Address;->getHostnameVerifier()Ljavax/net/ssl/HostnameVerifier;
-Lcom/android/okhttp/Address;->getProtocols()Ljava/util/List;
-Lcom/android/okhttp/Address;->getProxy()Ljava/net/Proxy;
-Lcom/android/okhttp/Address;->getProxySelector()Ljava/net/ProxySelector;
-Lcom/android/okhttp/Address;->getSocketFactory()Ljavax/net/SocketFactory;
-Lcom/android/okhttp/Address;->getSslSocketFactory()Ljavax/net/ssl/SSLSocketFactory;
-Lcom/android/okhttp/Address;->getUriHost()Ljava/lang/String;
-Lcom/android/okhttp/Address;->getUriPort()I
-Lcom/android/okhttp/Address;->hostnameVerifier:Ljavax/net/ssl/HostnameVerifier;
-Lcom/android/okhttp/Address;->protocols:Ljava/util/List;
-Lcom/android/okhttp/Address;->proxy:Ljava/net/Proxy;
-Lcom/android/okhttp/Address;->proxySelector:Ljava/net/ProxySelector;
-Lcom/android/okhttp/Address;->socketFactory:Ljavax/net/SocketFactory;
-Lcom/android/okhttp/Address;->sslSocketFactory:Ljavax/net/ssl/SSLSocketFactory;
-Lcom/android/okhttp/Address;->url()Lcom/android/okhttp/HttpUrl;
-Lcom/android/okhttp/Address;->url:Lcom/android/okhttp/HttpUrl;
-Lcom/android/okhttp/AndroidShimResponseCache;-><init>(Lcom/android/okhttp/Cache;)V
-Lcom/android/okhttp/AndroidShimResponseCache;->close()V
-Lcom/android/okhttp/AndroidShimResponseCache;->create(Ljava/io/File;J)Lcom/android/okhttp/AndroidShimResponseCache;
-Lcom/android/okhttp/AndroidShimResponseCache;->delegate:Lcom/android/okhttp/Cache;
-Lcom/android/okhttp/AndroidShimResponseCache;->delete()V
-Lcom/android/okhttp/AndroidShimResponseCache;->flush()V
-Lcom/android/okhttp/AndroidShimResponseCache;->getCache()Lcom/android/okhttp/Cache;
-Lcom/android/okhttp/AndroidShimResponseCache;->getHitCount()I
-Lcom/android/okhttp/AndroidShimResponseCache;->getNetworkCount()I
-Lcom/android/okhttp/AndroidShimResponseCache;->getRequestCount()I
-Lcom/android/okhttp/AndroidShimResponseCache;->isEquivalent(Ljava/io/File;J)Z
-Lcom/android/okhttp/AndroidShimResponseCache;->maxSize()J
-Lcom/android/okhttp/AndroidShimResponseCache;->size()J
-Lcom/android/okhttp/Authenticator;->authenticate(Ljava/net/Proxy;Lcom/android/okhttp/Response;)Lcom/android/okhttp/Request;
-Lcom/android/okhttp/Authenticator;->authenticateProxy(Ljava/net/Proxy;Lcom/android/okhttp/Response;)Lcom/android/okhttp/Request;
-Lcom/android/okhttp/Cache$CacheRequestImpl;->abort()V
-Lcom/android/okhttp/Cache$CacheRequestImpl;->body()Lcom/android/okhttp/okio/Sink;
-Lcom/android/okhttp/Cache$CacheRequestImpl;->body:Lcom/android/okhttp/okio/Sink;
-Lcom/android/okhttp/Cache$CacheRequestImpl;->cacheOut:Lcom/android/okhttp/okio/Sink;
-Lcom/android/okhttp/Cache$CacheRequestImpl;->done:Z
-Lcom/android/okhttp/Cache$CacheRequestImpl;->editor:Lcom/android/okhttp/internal/DiskLruCache$Editor;
-Lcom/android/okhttp/Cache$CacheResponseBody;-><init>(Lcom/android/okhttp/internal/DiskLruCache$Snapshot;Ljava/lang/String;Ljava/lang/String;)V
-Lcom/android/okhttp/Cache$CacheResponseBody;->bodySource:Lcom/android/okhttp/okio/BufferedSource;
-Lcom/android/okhttp/Cache$CacheResponseBody;->contentLength()J
-Lcom/android/okhttp/Cache$CacheResponseBody;->contentLength:Ljava/lang/String;
-Lcom/android/okhttp/Cache$CacheResponseBody;->contentType()Lcom/android/okhttp/MediaType;
-Lcom/android/okhttp/Cache$CacheResponseBody;->contentType:Ljava/lang/String;
-Lcom/android/okhttp/Cache$CacheResponseBody;->snapshot:Lcom/android/okhttp/internal/DiskLruCache$Snapshot;
-Lcom/android/okhttp/Cache$CacheResponseBody;->source()Lcom/android/okhttp/okio/BufferedSource;
-Lcom/android/okhttp/Cache$Entry;-><init>(Lcom/android/okhttp/okio/Source;)V
-Lcom/android/okhttp/Cache$Entry;-><init>(Lcom/android/okhttp/Response;)V
-Lcom/android/okhttp/Cache$Entry;->code:I
-Lcom/android/okhttp/Cache$Entry;->handshake:Lcom/android/okhttp/Handshake;
-Lcom/android/okhttp/Cache$Entry;->isHttps()Z
-Lcom/android/okhttp/Cache$Entry;->matches(Lcom/android/okhttp/Request;Lcom/android/okhttp/Response;)Z
-Lcom/android/okhttp/Cache$Entry;->message:Ljava/lang/String;
-Lcom/android/okhttp/Cache$Entry;->protocol:Lcom/android/okhttp/Protocol;
-Lcom/android/okhttp/Cache$Entry;->readCertificateList(Lcom/android/okhttp/okio/BufferedSource;)Ljava/util/List;
-Lcom/android/okhttp/Cache$Entry;->requestMethod:Ljava/lang/String;
-Lcom/android/okhttp/Cache$Entry;->response(Lcom/android/okhttp/Request;Lcom/android/okhttp/internal/DiskLruCache$Snapshot;)Lcom/android/okhttp/Response;
-Lcom/android/okhttp/Cache$Entry;->responseHeaders:Lcom/android/okhttp/Headers;
-Lcom/android/okhttp/Cache$Entry;->url:Ljava/lang/String;
-Lcom/android/okhttp/Cache$Entry;->varyHeaders:Lcom/android/okhttp/Headers;
-Lcom/android/okhttp/Cache$Entry;->writeCertList(Lcom/android/okhttp/okio/BufferedSink;Ljava/util/List;)V
-Lcom/android/okhttp/Cache$Entry;->writeTo(Lcom/android/okhttp/internal/DiskLruCache$Editor;)V
-Lcom/android/okhttp/Cache;-><init>(Ljava/io/File;J)V
-Lcom/android/okhttp/Cache;-><init>(Ljava/io/File;JLcom/android/okhttp/internal/io/FileSystem;)V
-Lcom/android/okhttp/Cache;->abortQuietly(Lcom/android/okhttp/internal/DiskLruCache$Editor;)V
-Lcom/android/okhttp/Cache;->cache:Lcom/android/okhttp/internal/DiskLruCache;
-Lcom/android/okhttp/Cache;->close()V
-Lcom/android/okhttp/Cache;->delete()V
-Lcom/android/okhttp/Cache;->ENTRY_BODY:I
-Lcom/android/okhttp/Cache;->ENTRY_COUNT:I
-Lcom/android/okhttp/Cache;->ENTRY_METADATA:I
-Lcom/android/okhttp/Cache;->evictAll()V
-Lcom/android/okhttp/Cache;->flush()V
-Lcom/android/okhttp/Cache;->get(Lcom/android/okhttp/Request;)Lcom/android/okhttp/Response;
-Lcom/android/okhttp/Cache;->getDirectory()Ljava/io/File;
-Lcom/android/okhttp/Cache;->getHitCount()I
-Lcom/android/okhttp/Cache;->getMaxSize()J
-Lcom/android/okhttp/Cache;->getNetworkCount()I
-Lcom/android/okhttp/Cache;->getRequestCount()I
-Lcom/android/okhttp/Cache;->getSize()J
-Lcom/android/okhttp/Cache;->getWriteAbortCount()I
-Lcom/android/okhttp/Cache;->getWriteSuccessCount()I
-Lcom/android/okhttp/Cache;->hitCount:I
-Lcom/android/okhttp/Cache;->initialize()V
-Lcom/android/okhttp/Cache;->internalCache:Lcom/android/okhttp/internal/InternalCache;
-Lcom/android/okhttp/Cache;->isClosed()Z
-Lcom/android/okhttp/Cache;->networkCount:I
-Lcom/android/okhttp/Cache;->put(Lcom/android/okhttp/Response;)Lcom/android/okhttp/internal/http/CacheRequest;
-Lcom/android/okhttp/Cache;->readInt(Lcom/android/okhttp/okio/BufferedSource;)I
-Lcom/android/okhttp/Cache;->remove(Lcom/android/okhttp/Request;)V
-Lcom/android/okhttp/Cache;->requestCount:I
-Lcom/android/okhttp/Cache;->trackConditionalCacheHit()V
-Lcom/android/okhttp/Cache;->trackResponse(Lcom/android/okhttp/internal/http/CacheStrategy;)V
-Lcom/android/okhttp/Cache;->update(Lcom/android/okhttp/Response;Lcom/android/okhttp/Response;)V
-Lcom/android/okhttp/Cache;->urls()Ljava/util/Iterator;
-Lcom/android/okhttp/Cache;->urlToKey(Lcom/android/okhttp/Request;)Ljava/lang/String;
-Lcom/android/okhttp/Cache;->VERSION:I
-Lcom/android/okhttp/Cache;->writeAbortCount:I
-Lcom/android/okhttp/Cache;->writeSuccessCount:I
-Lcom/android/okhttp/CacheControl$Builder;-><init>()V
-Lcom/android/okhttp/CacheControl$Builder;->build()Lcom/android/okhttp/CacheControl;
-Lcom/android/okhttp/CacheControl$Builder;->maxAge(ILjava/util/concurrent/TimeUnit;)Lcom/android/okhttp/CacheControl$Builder;
-Lcom/android/okhttp/CacheControl$Builder;->maxAgeSeconds:I
-Lcom/android/okhttp/CacheControl$Builder;->maxStale(ILjava/util/concurrent/TimeUnit;)Lcom/android/okhttp/CacheControl$Builder;
-Lcom/android/okhttp/CacheControl$Builder;->maxStaleSeconds:I
-Lcom/android/okhttp/CacheControl$Builder;->minFresh(ILjava/util/concurrent/TimeUnit;)Lcom/android/okhttp/CacheControl$Builder;
-Lcom/android/okhttp/CacheControl$Builder;->minFreshSeconds:I
-Lcom/android/okhttp/CacheControl$Builder;->noCache()Lcom/android/okhttp/CacheControl$Builder;
-Lcom/android/okhttp/CacheControl$Builder;->noCache:Z
-Lcom/android/okhttp/CacheControl$Builder;->noStore()Lcom/android/okhttp/CacheControl$Builder;
-Lcom/android/okhttp/CacheControl$Builder;->noStore:Z
-Lcom/android/okhttp/CacheControl$Builder;->noTransform()Lcom/android/okhttp/CacheControl$Builder;
-Lcom/android/okhttp/CacheControl$Builder;->noTransform:Z
-Lcom/android/okhttp/CacheControl$Builder;->onlyIfCached()Lcom/android/okhttp/CacheControl$Builder;
-Lcom/android/okhttp/CacheControl$Builder;->onlyIfCached:Z
-Lcom/android/okhttp/CacheControl;-><init>(Lcom/android/okhttp/CacheControl$Builder;)V
-Lcom/android/okhttp/CacheControl;-><init>(ZZIIZZZIIZZLjava/lang/String;)V
-Lcom/android/okhttp/CacheControl;->FORCE_CACHE:Lcom/android/okhttp/CacheControl;
-Lcom/android/okhttp/CacheControl;->FORCE_NETWORK:Lcom/android/okhttp/CacheControl;
-Lcom/android/okhttp/CacheControl;->headerValue()Ljava/lang/String;
-Lcom/android/okhttp/CacheControl;->headerValue:Ljava/lang/String;
-Lcom/android/okhttp/CacheControl;->isPrivate()Z
-Lcom/android/okhttp/CacheControl;->isPrivate:Z
-Lcom/android/okhttp/CacheControl;->isPublic()Z
-Lcom/android/okhttp/CacheControl;->isPublic:Z
-Lcom/android/okhttp/CacheControl;->maxAgeSeconds()I
-Lcom/android/okhttp/CacheControl;->maxAgeSeconds:I
-Lcom/android/okhttp/CacheControl;->maxStaleSeconds()I
-Lcom/android/okhttp/CacheControl;->maxStaleSeconds:I
-Lcom/android/okhttp/CacheControl;->minFreshSeconds()I
-Lcom/android/okhttp/CacheControl;->minFreshSeconds:I
-Lcom/android/okhttp/CacheControl;->mustRevalidate()Z
-Lcom/android/okhttp/CacheControl;->mustRevalidate:Z
-Lcom/android/okhttp/CacheControl;->noCache()Z
-Lcom/android/okhttp/CacheControl;->noCache:Z
-Lcom/android/okhttp/CacheControl;->noStore()Z
-Lcom/android/okhttp/CacheControl;->noStore:Z
-Lcom/android/okhttp/CacheControl;->noTransform()Z
-Lcom/android/okhttp/CacheControl;->noTransform:Z
-Lcom/android/okhttp/CacheControl;->onlyIfCached()Z
-Lcom/android/okhttp/CacheControl;->onlyIfCached:Z
-Lcom/android/okhttp/CacheControl;->parse(Lcom/android/okhttp/Headers;)Lcom/android/okhttp/CacheControl;
-Lcom/android/okhttp/CacheControl;->sMaxAgeSeconds()I
-Lcom/android/okhttp/CacheControl;->sMaxAgeSeconds:I
-Lcom/android/okhttp/Call$ApplicationInterceptorChain;->connection()Lcom/android/okhttp/Connection;
-Lcom/android/okhttp/Call$ApplicationInterceptorChain;->forWebSocket:Z
-Lcom/android/okhttp/Call$ApplicationInterceptorChain;->index:I
-Lcom/android/okhttp/Call$ApplicationInterceptorChain;->proceed(Lcom/android/okhttp/Request;)Lcom/android/okhttp/Response;
-Lcom/android/okhttp/Call$ApplicationInterceptorChain;->request()Lcom/android/okhttp/Request;
-Lcom/android/okhttp/Call$ApplicationInterceptorChain;->request:Lcom/android/okhttp/Request;
-Lcom/android/okhttp/Call$AsyncCall;->cancel()V
-Lcom/android/okhttp/Call$AsyncCall;->execute()V
-Lcom/android/okhttp/Call$AsyncCall;->forWebSocket:Z
-Lcom/android/okhttp/Call$AsyncCall;->get()Lcom/android/okhttp/Call;
-Lcom/android/okhttp/Call$AsyncCall;->host()Ljava/lang/String;
-Lcom/android/okhttp/Call$AsyncCall;->request()Lcom/android/okhttp/Request;
-Lcom/android/okhttp/Call$AsyncCall;->responseCallback:Lcom/android/okhttp/Callback;
-Lcom/android/okhttp/Call$AsyncCall;->tag()Ljava/lang/Object;
-Lcom/android/okhttp/Call;-><init>(Lcom/android/okhttp/OkHttpClient;Lcom/android/okhttp/Request;)V
-Lcom/android/okhttp/Call;->cancel()V
-Lcom/android/okhttp/Call;->canceled:Z
-Lcom/android/okhttp/Call;->client:Lcom/android/okhttp/OkHttpClient;
-Lcom/android/okhttp/Call;->engine:Lcom/android/okhttp/internal/http/HttpEngine;
-Lcom/android/okhttp/Call;->enqueue(Lcom/android/okhttp/Callback;)V
-Lcom/android/okhttp/Call;->enqueue(Lcom/android/okhttp/Callback;Z)V
-Lcom/android/okhttp/Call;->execute()Lcom/android/okhttp/Response;
-Lcom/android/okhttp/Call;->executed:Z
-Lcom/android/okhttp/Call;->getResponse(Lcom/android/okhttp/Request;Z)Lcom/android/okhttp/Response;
-Lcom/android/okhttp/Call;->getResponseWithInterceptorChain(Z)Lcom/android/okhttp/Response;
-Lcom/android/okhttp/Call;->isCanceled()Z
-Lcom/android/okhttp/Call;->isExecuted()Z
-Lcom/android/okhttp/Call;->originalRequest:Lcom/android/okhttp/Request;
-Lcom/android/okhttp/Call;->tag()Ljava/lang/Object;
-Lcom/android/okhttp/Call;->toLoggableString()Ljava/lang/String;
-Lcom/android/okhttp/Callback;->onFailure(Lcom/android/okhttp/Request;Ljava/io/IOException;)V
-Lcom/android/okhttp/Callback;->onResponse(Lcom/android/okhttp/Response;)V
-Lcom/android/okhttp/CertificatePinner$Builder;-><init>()V
-Lcom/android/okhttp/CertificatePinner$Builder;->build()Lcom/android/okhttp/CertificatePinner;
-Lcom/android/okhttp/CertificatePinner$Builder;->hostnameToPins:Ljava/util/Map;
-Lcom/android/okhttp/CertificatePinner;-><init>(Lcom/android/okhttp/CertificatePinner$Builder;)V
-Lcom/android/okhttp/CertificatePinner;->check(Ljava/lang/String;Ljava/util/List;)V
-Lcom/android/okhttp/CertificatePinner;->DEFAULT:Lcom/android/okhttp/CertificatePinner;
-Lcom/android/okhttp/CertificatePinner;->findMatchingPins(Ljava/lang/String;)Ljava/util/Set;
-Lcom/android/okhttp/CertificatePinner;->hostnameToPins:Ljava/util/Map;
-Lcom/android/okhttp/CertificatePinner;->pin(Ljava/security/cert/Certificate;)Ljava/lang/String;
-Lcom/android/okhttp/CertificatePinner;->sha1(Ljava/security/cert/X509Certificate;)Lcom/android/okhttp/okio/ByteString;
-Lcom/android/okhttp/Challenge;-><init>(Ljava/lang/String;Ljava/lang/String;)V
-Lcom/android/okhttp/Challenge;->getRealm()Ljava/lang/String;
-Lcom/android/okhttp/Challenge;->getScheme()Ljava/lang/String;
-Lcom/android/okhttp/Challenge;->realm:Ljava/lang/String;
-Lcom/android/okhttp/Challenge;->scheme:Ljava/lang/String;
-Lcom/android/okhttp/CipherSuite;->forJavaName(Ljava/lang/String;)Lcom/android/okhttp/CipherSuite;
-Lcom/android/okhttp/CipherSuite;->javaName:Ljava/lang/String;
-Lcom/android/okhttp/CipherSuite;->TLS_DHE_DSS_EXPORT_WITH_DES40_CBC_SHA:Lcom/android/okhttp/CipherSuite;
-Lcom/android/okhttp/CipherSuite;->TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA:Lcom/android/okhttp/CipherSuite;
-Lcom/android/okhttp/CipherSuite;->TLS_DHE_DSS_WITH_AES_128_CBC_SHA256:Lcom/android/okhttp/CipherSuite;
-Lcom/android/okhttp/CipherSuite;->TLS_DHE_DSS_WITH_AES_128_CBC_SHA:Lcom/android/okhttp/CipherSuite;
-Lcom/android/okhttp/CipherSuite;->TLS_DHE_DSS_WITH_AES_128_GCM_SHA256:Lcom/android/okhttp/CipherSuite;
-Lcom/android/okhttp/CipherSuite;->TLS_DHE_DSS_WITH_AES_256_CBC_SHA256:Lcom/android/okhttp/CipherSuite;
-Lcom/android/okhttp/CipherSuite;->TLS_DHE_DSS_WITH_AES_256_CBC_SHA:Lcom/android/okhttp/CipherSuite;
-Lcom/android/okhttp/CipherSuite;->TLS_DHE_DSS_WITH_AES_256_GCM_SHA384:Lcom/android/okhttp/CipherSuite;
-Lcom/android/okhttp/CipherSuite;->TLS_DHE_DSS_WITH_DES_CBC_SHA:Lcom/android/okhttp/CipherSuite;
-Lcom/android/okhttp/CipherSuite;->TLS_DHE_RSA_EXPORT_WITH_DES40_CBC_SHA:Lcom/android/okhttp/CipherSuite;
-Lcom/android/okhttp/CipherSuite;->TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA:Lcom/android/okhttp/CipherSuite;
-Lcom/android/okhttp/CipherSuite;->TLS_DHE_RSA_WITH_AES_128_CBC_SHA256:Lcom/android/okhttp/CipherSuite;
-Lcom/android/okhttp/CipherSuite;->TLS_DHE_RSA_WITH_AES_128_CBC_SHA:Lcom/android/okhttp/CipherSuite;
-Lcom/android/okhttp/CipherSuite;->TLS_DHE_RSA_WITH_AES_128_GCM_SHA256:Lcom/android/okhttp/CipherSuite;
-Lcom/android/okhttp/CipherSuite;->TLS_DHE_RSA_WITH_AES_256_CBC_SHA256:Lcom/android/okhttp/CipherSuite;
-Lcom/android/okhttp/CipherSuite;->TLS_DHE_RSA_WITH_AES_256_CBC_SHA:Lcom/android/okhttp/CipherSuite;
-Lcom/android/okhttp/CipherSuite;->TLS_DHE_RSA_WITH_AES_256_GCM_SHA384:Lcom/android/okhttp/CipherSuite;
-Lcom/android/okhttp/CipherSuite;->TLS_DHE_RSA_WITH_DES_CBC_SHA:Lcom/android/okhttp/CipherSuite;
-Lcom/android/okhttp/CipherSuite;->TLS_DH_anon_EXPORT_WITH_DES40_CBC_SHA:Lcom/android/okhttp/CipherSuite;
-Lcom/android/okhttp/CipherSuite;->TLS_DH_anon_EXPORT_WITH_RC4_40_MD5:Lcom/android/okhttp/CipherSuite;
-Lcom/android/okhttp/CipherSuite;->TLS_DH_anon_WITH_3DES_EDE_CBC_SHA:Lcom/android/okhttp/CipherSuite;
-Lcom/android/okhttp/CipherSuite;->TLS_DH_anon_WITH_AES_128_CBC_SHA256:Lcom/android/okhttp/CipherSuite;
-Lcom/android/okhttp/CipherSuite;->TLS_DH_anon_WITH_AES_128_CBC_SHA:Lcom/android/okhttp/CipherSuite;
-Lcom/android/okhttp/CipherSuite;->TLS_DH_anon_WITH_AES_128_GCM_SHA256:Lcom/android/okhttp/CipherSuite;
-Lcom/android/okhttp/CipherSuite;->TLS_DH_anon_WITH_AES_256_CBC_SHA256:Lcom/android/okhttp/CipherSuite;
-Lcom/android/okhttp/CipherSuite;->TLS_DH_anon_WITH_AES_256_CBC_SHA:Lcom/android/okhttp/CipherSuite;
-Lcom/android/okhttp/CipherSuite;->TLS_DH_anon_WITH_AES_256_GCM_SHA384:Lcom/android/okhttp/CipherSuite;
-Lcom/android/okhttp/CipherSuite;->TLS_DH_anon_WITH_DES_CBC_SHA:Lcom/android/okhttp/CipherSuite;
-Lcom/android/okhttp/CipherSuite;->TLS_DH_anon_WITH_RC4_128_MD5:Lcom/android/okhttp/CipherSuite;
-Lcom/android/okhttp/CipherSuite;->TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA:Lcom/android/okhttp/CipherSuite;
-Lcom/android/okhttp/CipherSuite;->TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256:Lcom/android/okhttp/CipherSuite;
-Lcom/android/okhttp/CipherSuite;->TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA:Lcom/android/okhttp/CipherSuite;
-Lcom/android/okhttp/CipherSuite;->TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256:Lcom/android/okhttp/CipherSuite;
-Lcom/android/okhttp/CipherSuite;->TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384:Lcom/android/okhttp/CipherSuite;
-Lcom/android/okhttp/CipherSuite;->TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA:Lcom/android/okhttp/CipherSuite;
-Lcom/android/okhttp/CipherSuite;->TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384:Lcom/android/okhttp/CipherSuite;
-Lcom/android/okhttp/CipherSuite;->TLS_ECDHE_ECDSA_WITH_NULL_SHA:Lcom/android/okhttp/CipherSuite;
-Lcom/android/okhttp/CipherSuite;->TLS_ECDHE_ECDSA_WITH_RC4_128_SHA:Lcom/android/okhttp/CipherSuite;
-Lcom/android/okhttp/CipherSuite;->TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA:Lcom/android/okhttp/CipherSuite;
-Lcom/android/okhttp/CipherSuite;->TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256:Lcom/android/okhttp/CipherSuite;
-Lcom/android/okhttp/CipherSuite;->TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA:Lcom/android/okhttp/CipherSuite;
-Lcom/android/okhttp/CipherSuite;->TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256:Lcom/android/okhttp/CipherSuite;
-Lcom/android/okhttp/CipherSuite;->TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384:Lcom/android/okhttp/CipherSuite;
-Lcom/android/okhttp/CipherSuite;->TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA:Lcom/android/okhttp/CipherSuite;
-Lcom/android/okhttp/CipherSuite;->TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384:Lcom/android/okhttp/CipherSuite;
-Lcom/android/okhttp/CipherSuite;->TLS_ECDHE_RSA_WITH_NULL_SHA:Lcom/android/okhttp/CipherSuite;
-Lcom/android/okhttp/CipherSuite;->TLS_ECDHE_RSA_WITH_RC4_128_SHA:Lcom/android/okhttp/CipherSuite;
-Lcom/android/okhttp/CipherSuite;->TLS_ECDH_anon_WITH_3DES_EDE_CBC_SHA:Lcom/android/okhttp/CipherSuite;
-Lcom/android/okhttp/CipherSuite;->TLS_ECDH_anon_WITH_AES_128_CBC_SHA:Lcom/android/okhttp/CipherSuite;
-Lcom/android/okhttp/CipherSuite;->TLS_ECDH_anon_WITH_AES_256_CBC_SHA:Lcom/android/okhttp/CipherSuite;
-Lcom/android/okhttp/CipherSuite;->TLS_ECDH_anon_WITH_NULL_SHA:Lcom/android/okhttp/CipherSuite;
-Lcom/android/okhttp/CipherSuite;->TLS_ECDH_anon_WITH_RC4_128_SHA:Lcom/android/okhttp/CipherSuite;
-Lcom/android/okhttp/CipherSuite;->TLS_ECDH_ECDSA_WITH_3DES_EDE_CBC_SHA:Lcom/android/okhttp/CipherSuite;
-Lcom/android/okhttp/CipherSuite;->TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA256:Lcom/android/okhttp/CipherSuite;
-Lcom/android/okhttp/CipherSuite;->TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA:Lcom/android/okhttp/CipherSuite;
-Lcom/android/okhttp/CipherSuite;->TLS_ECDH_ECDSA_WITH_AES_128_GCM_SHA256:Lcom/android/okhttp/CipherSuite;
-Lcom/android/okhttp/CipherSuite;->TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA384:Lcom/android/okhttp/CipherSuite;
-Lcom/android/okhttp/CipherSuite;->TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA:Lcom/android/okhttp/CipherSuite;
-Lcom/android/okhttp/CipherSuite;->TLS_ECDH_ECDSA_WITH_AES_256_GCM_SHA384:Lcom/android/okhttp/CipherSuite;
-Lcom/android/okhttp/CipherSuite;->TLS_ECDH_ECDSA_WITH_NULL_SHA:Lcom/android/okhttp/CipherSuite;
-Lcom/android/okhttp/CipherSuite;->TLS_ECDH_ECDSA_WITH_RC4_128_SHA:Lcom/android/okhttp/CipherSuite;
-Lcom/android/okhttp/CipherSuite;->TLS_ECDH_RSA_WITH_3DES_EDE_CBC_SHA:Lcom/android/okhttp/CipherSuite;
-Lcom/android/okhttp/CipherSuite;->TLS_ECDH_RSA_WITH_AES_128_CBC_SHA256:Lcom/android/okhttp/CipherSuite;
-Lcom/android/okhttp/CipherSuite;->TLS_ECDH_RSA_WITH_AES_128_CBC_SHA:Lcom/android/okhttp/CipherSuite;
-Lcom/android/okhttp/CipherSuite;->TLS_ECDH_RSA_WITH_AES_128_GCM_SHA256:Lcom/android/okhttp/CipherSuite;
-Lcom/android/okhttp/CipherSuite;->TLS_ECDH_RSA_WITH_AES_256_CBC_SHA384:Lcom/android/okhttp/CipherSuite;
-Lcom/android/okhttp/CipherSuite;->TLS_ECDH_RSA_WITH_AES_256_CBC_SHA:Lcom/android/okhttp/CipherSuite;
-Lcom/android/okhttp/CipherSuite;->TLS_ECDH_RSA_WITH_AES_256_GCM_SHA384:Lcom/android/okhttp/CipherSuite;
-Lcom/android/okhttp/CipherSuite;->TLS_ECDH_RSA_WITH_NULL_SHA:Lcom/android/okhttp/CipherSuite;
-Lcom/android/okhttp/CipherSuite;->TLS_ECDH_RSA_WITH_RC4_128_SHA:Lcom/android/okhttp/CipherSuite;
-Lcom/android/okhttp/CipherSuite;->TLS_EMPTY_RENEGOTIATION_INFO_SCSV:Lcom/android/okhttp/CipherSuite;
-Lcom/android/okhttp/CipherSuite;->TLS_KRB5_EXPORT_WITH_DES_CBC_40_MD5:Lcom/android/okhttp/CipherSuite;
-Lcom/android/okhttp/CipherSuite;->TLS_KRB5_EXPORT_WITH_DES_CBC_40_SHA:Lcom/android/okhttp/CipherSuite;
-Lcom/android/okhttp/CipherSuite;->TLS_KRB5_EXPORT_WITH_RC4_40_MD5:Lcom/android/okhttp/CipherSuite;
-Lcom/android/okhttp/CipherSuite;->TLS_KRB5_EXPORT_WITH_RC4_40_SHA:Lcom/android/okhttp/CipherSuite;
-Lcom/android/okhttp/CipherSuite;->TLS_KRB5_WITH_3DES_EDE_CBC_MD5:Lcom/android/okhttp/CipherSuite;
-Lcom/android/okhttp/CipherSuite;->TLS_KRB5_WITH_3DES_EDE_CBC_SHA:Lcom/android/okhttp/CipherSuite;
-Lcom/android/okhttp/CipherSuite;->TLS_KRB5_WITH_DES_CBC_MD5:Lcom/android/okhttp/CipherSuite;
-Lcom/android/okhttp/CipherSuite;->TLS_KRB5_WITH_DES_CBC_SHA:Lcom/android/okhttp/CipherSuite;
-Lcom/android/okhttp/CipherSuite;->TLS_KRB5_WITH_RC4_128_MD5:Lcom/android/okhttp/CipherSuite;
-Lcom/android/okhttp/CipherSuite;->TLS_KRB5_WITH_RC4_128_SHA:Lcom/android/okhttp/CipherSuite;
-Lcom/android/okhttp/CipherSuite;->TLS_RSA_EXPORT_WITH_DES40_CBC_SHA:Lcom/android/okhttp/CipherSuite;
-Lcom/android/okhttp/CipherSuite;->TLS_RSA_EXPORT_WITH_RC4_40_MD5:Lcom/android/okhttp/CipherSuite;
-Lcom/android/okhttp/CipherSuite;->TLS_RSA_WITH_3DES_EDE_CBC_SHA:Lcom/android/okhttp/CipherSuite;
-Lcom/android/okhttp/CipherSuite;->TLS_RSA_WITH_AES_128_CBC_SHA256:Lcom/android/okhttp/CipherSuite;
-Lcom/android/okhttp/CipherSuite;->TLS_RSA_WITH_AES_128_CBC_SHA:Lcom/android/okhttp/CipherSuite;
-Lcom/android/okhttp/CipherSuite;->TLS_RSA_WITH_AES_128_GCM_SHA256:Lcom/android/okhttp/CipherSuite;
-Lcom/android/okhttp/CipherSuite;->TLS_RSA_WITH_AES_256_CBC_SHA256:Lcom/android/okhttp/CipherSuite;
-Lcom/android/okhttp/CipherSuite;->TLS_RSA_WITH_AES_256_CBC_SHA:Lcom/android/okhttp/CipherSuite;
-Lcom/android/okhttp/CipherSuite;->TLS_RSA_WITH_AES_256_GCM_SHA384:Lcom/android/okhttp/CipherSuite;
-Lcom/android/okhttp/CipherSuite;->TLS_RSA_WITH_DES_CBC_SHA:Lcom/android/okhttp/CipherSuite;
-Lcom/android/okhttp/CipherSuite;->TLS_RSA_WITH_NULL_MD5:Lcom/android/okhttp/CipherSuite;
-Lcom/android/okhttp/CipherSuite;->TLS_RSA_WITH_NULL_SHA256:Lcom/android/okhttp/CipherSuite;
-Lcom/android/okhttp/CipherSuite;->TLS_RSA_WITH_NULL_SHA:Lcom/android/okhttp/CipherSuite;
-Lcom/android/okhttp/CipherSuite;->TLS_RSA_WITH_RC4_128_MD5:Lcom/android/okhttp/CipherSuite;
-Lcom/android/okhttp/CipherSuite;->TLS_RSA_WITH_RC4_128_SHA:Lcom/android/okhttp/CipherSuite;
-Lcom/android/okhttp/CipherSuite;->valueOf(Ljava/lang/String;)Lcom/android/okhttp/CipherSuite;
-Lcom/android/okhttp/CipherSuite;->values()[Lcom/android/okhttp/CipherSuite;
-Lcom/android/okhttp/Connection;->getHandshake()Lcom/android/okhttp/Handshake;
-Lcom/android/okhttp/Connection;->getProtocol()Lcom/android/okhttp/Protocol;
-Lcom/android/okhttp/Connection;->getRoute()Lcom/android/okhttp/Route;
-Lcom/android/okhttp/ConnectionPool;-><init>(IJ)V
-Lcom/android/okhttp/ConnectionPool;-><init>(IJLjava/util/concurrent/TimeUnit;)V
-Lcom/android/okhttp/ConnectionPool;->cleanup(J)J
-Lcom/android/okhttp/ConnectionPool;->cleanupRunnable:Ljava/lang/Runnable;
-Lcom/android/okhttp/ConnectionPool;->connectionBecameIdle(Lcom/android/okhttp/internal/io/RealConnection;)Z
-Lcom/android/okhttp/ConnectionPool;->DEFAULT_KEEP_ALIVE_DURATION_MS:J
-Lcom/android/okhttp/ConnectionPool;->evictAll()V
-Lcom/android/okhttp/ConnectionPool;->executor:Ljava/util/concurrent/Executor;
-Lcom/android/okhttp/ConnectionPool;->get(Lcom/android/okhttp/Address;Lcom/android/okhttp/internal/http/StreamAllocation;)Lcom/android/okhttp/internal/io/RealConnection;
-Lcom/android/okhttp/ConnectionPool;->getConnectionCount()I
-Lcom/android/okhttp/ConnectionPool;->getDefault()Lcom/android/okhttp/ConnectionPool;
-Lcom/android/okhttp/ConnectionPool;->getHttpConnectionCount()I
-Lcom/android/okhttp/ConnectionPool;->getIdleConnectionCount()I
-Lcom/android/okhttp/ConnectionPool;->getMultiplexedConnectionCount()I
-Lcom/android/okhttp/ConnectionPool;->getSpdyConnectionCount()I
-Lcom/android/okhttp/ConnectionPool;->pruneAndGetAllocationCount(Lcom/android/okhttp/internal/io/RealConnection;J)I
-Lcom/android/okhttp/ConnectionPool;->put(Lcom/android/okhttp/internal/io/RealConnection;)V
-Lcom/android/okhttp/ConnectionPool;->routeDatabase:Lcom/android/okhttp/internal/RouteDatabase;
-Lcom/android/okhttp/ConnectionPool;->setCleanupRunnableForTest(Ljava/lang/Runnable;)V
-Lcom/android/okhttp/ConnectionSpec$Builder;-><init>(Lcom/android/okhttp/ConnectionSpec;)V
-Lcom/android/okhttp/ConnectionSpec$Builder;-><init>(Z)V
-Lcom/android/okhttp/ConnectionSpec$Builder;->allEnabledCipherSuites()Lcom/android/okhttp/ConnectionSpec$Builder;
-Lcom/android/okhttp/ConnectionSpec$Builder;->allEnabledTlsVersions()Lcom/android/okhttp/ConnectionSpec$Builder;
-Lcom/android/okhttp/ConnectionSpec$Builder;->build()Lcom/android/okhttp/ConnectionSpec;
-Lcom/android/okhttp/ConnectionSpec$Builder;->cipherSuites:[Ljava/lang/String;
-Lcom/android/okhttp/ConnectionSpec$Builder;->supportsTlsExtensions(Z)Lcom/android/okhttp/ConnectionSpec$Builder;
-Lcom/android/okhttp/ConnectionSpec$Builder;->supportsTlsExtensions:Z
-Lcom/android/okhttp/ConnectionSpec$Builder;->tls:Z
-Lcom/android/okhttp/ConnectionSpec$Builder;->tlsVersions:[Ljava/lang/String;
-Lcom/android/okhttp/ConnectionSpec;-><init>(Lcom/android/okhttp/ConnectionSpec$Builder;)V
-Lcom/android/okhttp/ConnectionSpec;->apply(Ljavax/net/ssl/SSLSocket;Z)V
-Lcom/android/okhttp/ConnectionSpec;->APPROVED_CIPHER_SUITES:[Lcom/android/okhttp/CipherSuite;
-Lcom/android/okhttp/ConnectionSpec;->cipherSuites()Ljava/util/List;
-Lcom/android/okhttp/ConnectionSpec;->cipherSuites:[Ljava/lang/String;
-Lcom/android/okhttp/ConnectionSpec;->CLEARTEXT:Lcom/android/okhttp/ConnectionSpec;
-Lcom/android/okhttp/ConnectionSpec;->COMPATIBLE_TLS:Lcom/android/okhttp/ConnectionSpec;
-Lcom/android/okhttp/ConnectionSpec;->isCompatible(Ljavax/net/ssl/SSLSocket;)Z
-Lcom/android/okhttp/ConnectionSpec;->isTls()Z
-Lcom/android/okhttp/ConnectionSpec;->MODERN_TLS:Lcom/android/okhttp/ConnectionSpec;
-Lcom/android/okhttp/ConnectionSpec;->nonEmptyIntersection([Ljava/lang/String;[Ljava/lang/String;)Z
-Lcom/android/okhttp/ConnectionSpec;->supportedSpec(Ljavax/net/ssl/SSLSocket;Z)Lcom/android/okhttp/ConnectionSpec;
-Lcom/android/okhttp/ConnectionSpec;->supportsTlsExtensions()Z
-Lcom/android/okhttp/ConnectionSpec;->supportsTlsExtensions:Z
-Lcom/android/okhttp/ConnectionSpec;->tls:Z
-Lcom/android/okhttp/ConnectionSpec;->tlsVersions()Ljava/util/List;
-Lcom/android/okhttp/ConnectionSpec;->tlsVersions:[Ljava/lang/String;
-Lcom/android/okhttp/Dispatcher;-><init>()V
-Lcom/android/okhttp/Dispatcher;-><init>(Ljava/util/concurrent/ExecutorService;)V
-Lcom/android/okhttp/Dispatcher;->cancel(Ljava/lang/Object;)V
-Lcom/android/okhttp/Dispatcher;->enqueue(Lcom/android/okhttp/Call$AsyncCall;)V
-Lcom/android/okhttp/Dispatcher;->executed(Lcom/android/okhttp/Call;)V
-Lcom/android/okhttp/Dispatcher;->executedCalls:Ljava/util/Deque;
-Lcom/android/okhttp/Dispatcher;->executorService:Ljava/util/concurrent/ExecutorService;
-Lcom/android/okhttp/Dispatcher;->finished(Lcom/android/okhttp/Call$AsyncCall;)V
-Lcom/android/okhttp/Dispatcher;->finished(Lcom/android/okhttp/Call;)V
-Lcom/android/okhttp/Dispatcher;->getExecutorService()Ljava/util/concurrent/ExecutorService;
-Lcom/android/okhttp/Dispatcher;->getMaxRequests()I
-Lcom/android/okhttp/Dispatcher;->getMaxRequestsPerHost()I
-Lcom/android/okhttp/Dispatcher;->getQueuedCallCount()I
-Lcom/android/okhttp/Dispatcher;->getRunningCallCount()I
-Lcom/android/okhttp/Dispatcher;->maxRequests:I
-Lcom/android/okhttp/Dispatcher;->maxRequestsPerHost:I
-Lcom/android/okhttp/Dispatcher;->promoteCalls()V
-Lcom/android/okhttp/Dispatcher;->readyCalls:Ljava/util/Deque;
-Lcom/android/okhttp/Dispatcher;->runningCalls:Ljava/util/Deque;
-Lcom/android/okhttp/Dispatcher;->runningCallsForHost(Lcom/android/okhttp/Call$AsyncCall;)I
-Lcom/android/okhttp/Dispatcher;->setMaxRequests(I)V
-Lcom/android/okhttp/Dispatcher;->setMaxRequestsPerHost(I)V
-Lcom/android/okhttp/Dns;->lookup(Ljava/lang/String;)Ljava/util/List;
-Lcom/android/okhttp/Dns;->SYSTEM:Lcom/android/okhttp/Dns;
-Lcom/android/okhttp/Handshake;-><init>(Ljava/lang/String;Ljava/util/List;Ljava/util/List;)V
-Lcom/android/okhttp/Handshake;->cipherSuite()Ljava/lang/String;
-Lcom/android/okhttp/Handshake;->cipherSuite:Ljava/lang/String;
-Lcom/android/okhttp/Handshake;->get(Ljava/lang/String;Ljava/util/List;Ljava/util/List;)Lcom/android/okhttp/Handshake;
-Lcom/android/okhttp/Handshake;->get(Ljavax/net/ssl/SSLSession;)Lcom/android/okhttp/Handshake;
-Lcom/android/okhttp/Handshake;->localCertificates()Ljava/util/List;
-Lcom/android/okhttp/Handshake;->localCertificates:Ljava/util/List;
-Lcom/android/okhttp/Handshake;->localPrincipal()Ljava/security/Principal;
-Lcom/android/okhttp/Handshake;->peerCertificates()Ljava/util/List;
-Lcom/android/okhttp/Handshake;->peerCertificates:Ljava/util/List;
-Lcom/android/okhttp/Handshake;->peerPrincipal()Ljava/security/Principal;
-Lcom/android/okhttp/Headers$Builder;-><init>()V
-Lcom/android/okhttp/Headers$Builder;->add(Ljava/lang/String;)Lcom/android/okhttp/Headers$Builder;
-Lcom/android/okhttp/Headers$Builder;->add(Ljava/lang/String;Ljava/lang/String;)Lcom/android/okhttp/Headers$Builder;
-Lcom/android/okhttp/Headers$Builder;->addLenient(Ljava/lang/String;)Lcom/android/okhttp/Headers$Builder;
-Lcom/android/okhttp/Headers$Builder;->addLenient(Ljava/lang/String;Ljava/lang/String;)Lcom/android/okhttp/Headers$Builder;
-Lcom/android/okhttp/Headers$Builder;->build()Lcom/android/okhttp/Headers;
-Lcom/android/okhttp/Headers$Builder;->checkNameAndValue(Ljava/lang/String;Ljava/lang/String;)V
-Lcom/android/okhttp/Headers$Builder;->get(Ljava/lang/String;)Ljava/lang/String;
-Lcom/android/okhttp/Headers$Builder;->namesAndValues:Ljava/util/List;
-Lcom/android/okhttp/Headers$Builder;->removeAll(Ljava/lang/String;)Lcom/android/okhttp/Headers$Builder;
-Lcom/android/okhttp/Headers$Builder;->set(Ljava/lang/String;Ljava/lang/String;)Lcom/android/okhttp/Headers$Builder;
-Lcom/android/okhttp/Headers;-><init>(Lcom/android/okhttp/Headers$Builder;)V
-Lcom/android/okhttp/Headers;-><init>([Ljava/lang/String;)V
-Lcom/android/okhttp/Headers;->get(Ljava/lang/String;)Ljava/lang/String;
-Lcom/android/okhttp/Headers;->get([Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
-Lcom/android/okhttp/Headers;->getDate(Ljava/lang/String;)Ljava/util/Date;
-Lcom/android/okhttp/Headers;->name(I)Ljava/lang/String;
-Lcom/android/okhttp/Headers;->names()Ljava/util/Set;
-Lcom/android/okhttp/Headers;->namesAndValues:[Ljava/lang/String;
-Lcom/android/okhttp/Headers;->newBuilder()Lcom/android/okhttp/Headers$Builder;
-Lcom/android/okhttp/Headers;->of(Ljava/util/Map;)Lcom/android/okhttp/Headers;
-Lcom/android/okhttp/Headers;->size()I
-Lcom/android/okhttp/Headers;->toMultimap()Ljava/util/Map;
-Lcom/android/okhttp/Headers;->value(I)Ljava/lang/String;
-Lcom/android/okhttp/Headers;->values(Ljava/lang/String;)Ljava/util/List;
-Lcom/android/okhttp/HttpUrl$Builder$ParseResult;->INVALID_HOST:Lcom/android/okhttp/HttpUrl$Builder$ParseResult;
-Lcom/android/okhttp/HttpUrl$Builder$ParseResult;->INVALID_PORT:Lcom/android/okhttp/HttpUrl$Builder$ParseResult;
-Lcom/android/okhttp/HttpUrl$Builder$ParseResult;->MISSING_SCHEME:Lcom/android/okhttp/HttpUrl$Builder$ParseResult;
-Lcom/android/okhttp/HttpUrl$Builder$ParseResult;->SUCCESS:Lcom/android/okhttp/HttpUrl$Builder$ParseResult;
-Lcom/android/okhttp/HttpUrl$Builder$ParseResult;->UNSUPPORTED_SCHEME:Lcom/android/okhttp/HttpUrl$Builder$ParseResult;
-Lcom/android/okhttp/HttpUrl$Builder$ParseResult;->valueOf(Ljava/lang/String;)Lcom/android/okhttp/HttpUrl$Builder$ParseResult;
-Lcom/android/okhttp/HttpUrl$Builder$ParseResult;->values()[Lcom/android/okhttp/HttpUrl$Builder$ParseResult;
-Lcom/android/okhttp/HttpUrl$Builder;-><init>()V
-Lcom/android/okhttp/HttpUrl$Builder;->addEncodedPathSegment(Ljava/lang/String;)Lcom/android/okhttp/HttpUrl$Builder;
-Lcom/android/okhttp/HttpUrl$Builder;->addEncodedQueryParameter(Ljava/lang/String;Ljava/lang/String;)Lcom/android/okhttp/HttpUrl$Builder;
-Lcom/android/okhttp/HttpUrl$Builder;->addPathSegment(Ljava/lang/String;)Lcom/android/okhttp/HttpUrl$Builder;
-Lcom/android/okhttp/HttpUrl$Builder;->addQueryParameter(Ljava/lang/String;Ljava/lang/String;)Lcom/android/okhttp/HttpUrl$Builder;
-Lcom/android/okhttp/HttpUrl$Builder;->canonicalizeHost(Ljava/lang/String;II)Ljava/lang/String;
-Lcom/android/okhttp/HttpUrl$Builder;->containsInvalidHostnameAsciiCodes(Ljava/lang/String;)Z
-Lcom/android/okhttp/HttpUrl$Builder;->decodeIpv4Suffix(Ljava/lang/String;II[BI)Z
-Lcom/android/okhttp/HttpUrl$Builder;->decodeIpv6(Ljava/lang/String;II)Ljava/net/InetAddress;
-Lcom/android/okhttp/HttpUrl$Builder;->domainToAscii(Ljava/lang/String;)Ljava/lang/String;
-Lcom/android/okhttp/HttpUrl$Builder;->effectivePort()I
-Lcom/android/okhttp/HttpUrl$Builder;->encodedFragment(Ljava/lang/String;)Lcom/android/okhttp/HttpUrl$Builder;
-Lcom/android/okhttp/HttpUrl$Builder;->encodedFragment:Ljava/lang/String;
-Lcom/android/okhttp/HttpUrl$Builder;->encodedPassword(Ljava/lang/String;)Lcom/android/okhttp/HttpUrl$Builder;
-Lcom/android/okhttp/HttpUrl$Builder;->encodedPassword:Ljava/lang/String;
-Lcom/android/okhttp/HttpUrl$Builder;->encodedPath(Ljava/lang/String;)Lcom/android/okhttp/HttpUrl$Builder;
-Lcom/android/okhttp/HttpUrl$Builder;->encodedPathSegments:Ljava/util/List;
-Lcom/android/okhttp/HttpUrl$Builder;->encodedQuery(Ljava/lang/String;)Lcom/android/okhttp/HttpUrl$Builder;
-Lcom/android/okhttp/HttpUrl$Builder;->encodedQueryNamesAndValues:Ljava/util/List;
-Lcom/android/okhttp/HttpUrl$Builder;->encodedUsername(Ljava/lang/String;)Lcom/android/okhttp/HttpUrl$Builder;
-Lcom/android/okhttp/HttpUrl$Builder;->encodedUsername:Ljava/lang/String;
-Lcom/android/okhttp/HttpUrl$Builder;->fragment(Ljava/lang/String;)Lcom/android/okhttp/HttpUrl$Builder;
-Lcom/android/okhttp/HttpUrl$Builder;->host(Ljava/lang/String;)Lcom/android/okhttp/HttpUrl$Builder;
-Lcom/android/okhttp/HttpUrl$Builder;->host:Ljava/lang/String;
-Lcom/android/okhttp/HttpUrl$Builder;->inet6AddressToAscii([B)Ljava/lang/String;
-Lcom/android/okhttp/HttpUrl$Builder;->isDot(Ljava/lang/String;)Z
-Lcom/android/okhttp/HttpUrl$Builder;->isDotDot(Ljava/lang/String;)Z
-Lcom/android/okhttp/HttpUrl$Builder;->parse(Lcom/android/okhttp/HttpUrl;Ljava/lang/String;)Lcom/android/okhttp/HttpUrl$Builder$ParseResult;
-Lcom/android/okhttp/HttpUrl$Builder;->parsePort(Ljava/lang/String;II)I
-Lcom/android/okhttp/HttpUrl$Builder;->password(Ljava/lang/String;)Lcom/android/okhttp/HttpUrl$Builder;
-Lcom/android/okhttp/HttpUrl$Builder;->pop()V
-Lcom/android/okhttp/HttpUrl$Builder;->port(I)Lcom/android/okhttp/HttpUrl$Builder;
-Lcom/android/okhttp/HttpUrl$Builder;->port:I
-Lcom/android/okhttp/HttpUrl$Builder;->portColonOffset(Ljava/lang/String;II)I
-Lcom/android/okhttp/HttpUrl$Builder;->push(Ljava/lang/String;IIZZ)V
-Lcom/android/okhttp/HttpUrl$Builder;->query(Ljava/lang/String;)Lcom/android/okhttp/HttpUrl$Builder;
-Lcom/android/okhttp/HttpUrl$Builder;->reencodeForUri()Lcom/android/okhttp/HttpUrl$Builder;
-Lcom/android/okhttp/HttpUrl$Builder;->removeAllCanonicalQueryParameters(Ljava/lang/String;)V
-Lcom/android/okhttp/HttpUrl$Builder;->removeAllEncodedQueryParameters(Ljava/lang/String;)Lcom/android/okhttp/HttpUrl$Builder;
-Lcom/android/okhttp/HttpUrl$Builder;->removeAllQueryParameters(Ljava/lang/String;)Lcom/android/okhttp/HttpUrl$Builder;
-Lcom/android/okhttp/HttpUrl$Builder;->removePathSegment(I)Lcom/android/okhttp/HttpUrl$Builder;
-Lcom/android/okhttp/HttpUrl$Builder;->resolvePath(Ljava/lang/String;II)V
-Lcom/android/okhttp/HttpUrl$Builder;->scheme(Ljava/lang/String;)Lcom/android/okhttp/HttpUrl$Builder;
-Lcom/android/okhttp/HttpUrl$Builder;->scheme:Ljava/lang/String;
-Lcom/android/okhttp/HttpUrl$Builder;->schemeDelimiterOffset(Ljava/lang/String;II)I
-Lcom/android/okhttp/HttpUrl$Builder;->setEncodedPathSegment(ILjava/lang/String;)Lcom/android/okhttp/HttpUrl$Builder;
-Lcom/android/okhttp/HttpUrl$Builder;->setEncodedQueryParameter(Ljava/lang/String;Ljava/lang/String;)Lcom/android/okhttp/HttpUrl$Builder;
-Lcom/android/okhttp/HttpUrl$Builder;->setPathSegment(ILjava/lang/String;)Lcom/android/okhttp/HttpUrl$Builder;
-Lcom/android/okhttp/HttpUrl$Builder;->setQueryParameter(Ljava/lang/String;Ljava/lang/String;)Lcom/android/okhttp/HttpUrl$Builder;
-Lcom/android/okhttp/HttpUrl$Builder;->skipLeadingAsciiWhitespace(Ljava/lang/String;II)I
-Lcom/android/okhttp/HttpUrl$Builder;->skipTrailingAsciiWhitespace(Ljava/lang/String;II)I
-Lcom/android/okhttp/HttpUrl$Builder;->slashCount(Ljava/lang/String;II)I
-Lcom/android/okhttp/HttpUrl$Builder;->username(Ljava/lang/String;)Lcom/android/okhttp/HttpUrl$Builder;
-Lcom/android/okhttp/HttpUrl;-><init>(Lcom/android/okhttp/HttpUrl$Builder;)V
-Lcom/android/okhttp/HttpUrl;->canonicalize(Lcom/android/okhttp/okio/Buffer;Ljava/lang/String;IILjava/lang/String;ZZZZ)V
-Lcom/android/okhttp/HttpUrl;->canonicalize(Ljava/lang/String;IILjava/lang/String;ZZZZ)Ljava/lang/String;
-Lcom/android/okhttp/HttpUrl;->canonicalize(Ljava/lang/String;Ljava/lang/String;ZZZZ)Ljava/lang/String;
-Lcom/android/okhttp/HttpUrl;->decodeHexDigit(C)I
-Lcom/android/okhttp/HttpUrl;->defaultPort(Ljava/lang/String;)I
-Lcom/android/okhttp/HttpUrl;->delimiterOffset(Ljava/lang/String;IILjava/lang/String;)I
-Lcom/android/okhttp/HttpUrl;->encodedFragment()Ljava/lang/String;
-Lcom/android/okhttp/HttpUrl;->encodedPassword()Ljava/lang/String;
-Lcom/android/okhttp/HttpUrl;->encodedPathSegments()Ljava/util/List;
-Lcom/android/okhttp/HttpUrl;->encodedQuery()Ljava/lang/String;
-Lcom/android/okhttp/HttpUrl;->encodedUsername()Ljava/lang/String;
-Lcom/android/okhttp/HttpUrl;->FORM_ENCODE_SET:Ljava/lang/String;
-Lcom/android/okhttp/HttpUrl;->fragment()Ljava/lang/String;
-Lcom/android/okhttp/HttpUrl;->fragment:Ljava/lang/String;
-Lcom/android/okhttp/HttpUrl;->FRAGMENT_ENCODE_SET:Ljava/lang/String;
-Lcom/android/okhttp/HttpUrl;->FRAGMENT_ENCODE_SET_URI:Ljava/lang/String;
-Lcom/android/okhttp/HttpUrl;->get(Ljava/net/URI;)Lcom/android/okhttp/HttpUrl;
-Lcom/android/okhttp/HttpUrl;->get(Ljava/net/URL;)Lcom/android/okhttp/HttpUrl;
-Lcom/android/okhttp/HttpUrl;->getChecked(Ljava/lang/String;)Lcom/android/okhttp/HttpUrl;
-Lcom/android/okhttp/HttpUrl;->HEX_DIGITS:[C
-Lcom/android/okhttp/HttpUrl;->host()Ljava/lang/String;
-Lcom/android/okhttp/HttpUrl;->host:Ljava/lang/String;
-Lcom/android/okhttp/HttpUrl;->isHttps()Z
-Lcom/android/okhttp/HttpUrl;->namesAndValuesToQueryString(Ljava/lang/StringBuilder;Ljava/util/List;)V
-Lcom/android/okhttp/HttpUrl;->password()Ljava/lang/String;
-Lcom/android/okhttp/HttpUrl;->password:Ljava/lang/String;
-Lcom/android/okhttp/HttpUrl;->PASSWORD_ENCODE_SET:Ljava/lang/String;
-Lcom/android/okhttp/HttpUrl;->pathSegments()Ljava/util/List;
-Lcom/android/okhttp/HttpUrl;->pathSegments:Ljava/util/List;
-Lcom/android/okhttp/HttpUrl;->pathSegmentsToString(Ljava/lang/StringBuilder;Ljava/util/List;)V
-Lcom/android/okhttp/HttpUrl;->pathSize()I
-Lcom/android/okhttp/HttpUrl;->PATH_SEGMENT_ENCODE_SET:Ljava/lang/String;
-Lcom/android/okhttp/HttpUrl;->PATH_SEGMENT_ENCODE_SET_URI:Ljava/lang/String;
-Lcom/android/okhttp/HttpUrl;->percentDecode(Lcom/android/okhttp/okio/Buffer;Ljava/lang/String;IIZ)V
-Lcom/android/okhttp/HttpUrl;->percentDecode(Ljava/lang/String;IIZ)Ljava/lang/String;
-Lcom/android/okhttp/HttpUrl;->percentDecode(Ljava/lang/String;Z)Ljava/lang/String;
-Lcom/android/okhttp/HttpUrl;->percentDecode(Ljava/util/List;Z)Ljava/util/List;
-Lcom/android/okhttp/HttpUrl;->percentEncoded(Ljava/lang/String;II)Z
-Lcom/android/okhttp/HttpUrl;->port()I
-Lcom/android/okhttp/HttpUrl;->port:I
-Lcom/android/okhttp/HttpUrl;->queryNamesAndValues:Ljava/util/List;
-Lcom/android/okhttp/HttpUrl;->queryParameter(Ljava/lang/String;)Ljava/lang/String;
-Lcom/android/okhttp/HttpUrl;->queryParameterName(I)Ljava/lang/String;
-Lcom/android/okhttp/HttpUrl;->queryParameterNames()Ljava/util/Set;
-Lcom/android/okhttp/HttpUrl;->queryParameterValue(I)Ljava/lang/String;
-Lcom/android/okhttp/HttpUrl;->queryParameterValues(Ljava/lang/String;)Ljava/util/List;
-Lcom/android/okhttp/HttpUrl;->querySize()I
-Lcom/android/okhttp/HttpUrl;->queryStringToNamesAndValues(Ljava/lang/String;)Ljava/util/List;
-Lcom/android/okhttp/HttpUrl;->QUERY_COMPONENT_ENCODE_SET:Ljava/lang/String;
-Lcom/android/okhttp/HttpUrl;->QUERY_COMPONENT_ENCODE_SET_URI:Ljava/lang/String;
-Lcom/android/okhttp/HttpUrl;->QUERY_ENCODE_SET:Ljava/lang/String;
-Lcom/android/okhttp/HttpUrl;->resolve(Ljava/lang/String;)Lcom/android/okhttp/HttpUrl;
-Lcom/android/okhttp/HttpUrl;->scheme()Ljava/lang/String;
-Lcom/android/okhttp/HttpUrl;->scheme:Ljava/lang/String;
-Lcom/android/okhttp/HttpUrl;->uri()Ljava/net/URI;
-Lcom/android/okhttp/HttpUrl;->url()Ljava/net/URL;
-Lcom/android/okhttp/HttpUrl;->url:Ljava/lang/String;
-Lcom/android/okhttp/HttpUrl;->username()Ljava/lang/String;
-Lcom/android/okhttp/HttpUrl;->username:Ljava/lang/String;
-Lcom/android/okhttp/HttpUrl;->USERNAME_ENCODE_SET:Ljava/lang/String;
-Lcom/android/okhttp/Interceptor$Chain;->connection()Lcom/android/okhttp/Connection;
-Lcom/android/okhttp/Interceptor$Chain;->proceed(Lcom/android/okhttp/Request;)Lcom/android/okhttp/Response;
-Lcom/android/okhttp/Interceptor$Chain;->request()Lcom/android/okhttp/Request;
-Lcom/android/okhttp/Interceptor;->intercept(Lcom/android/okhttp/Interceptor$Chain;)Lcom/android/okhttp/Response;
-Lcom/android/okhttp/internal/http/CacheRequest;->abort()V
-Lcom/android/okhttp/internal/http/CacheRequest;->body()Lcom/android/okhttp/okio/Sink;
-Lcom/android/okhttp/internal/http/CacheStrategy$Factory;-><init>(JLcom/android/okhttp/Request;Lcom/android/okhttp/Response;)V
-Lcom/android/okhttp/internal/http/CacheStrategy$Factory;->ageSeconds:I
-Lcom/android/okhttp/internal/http/CacheStrategy$Factory;->cacheResponse:Lcom/android/okhttp/Response;
-Lcom/android/okhttp/internal/http/CacheStrategy$Factory;->cacheResponseAge()J
-Lcom/android/okhttp/internal/http/CacheStrategy$Factory;->computeFreshnessLifetime()J
-Lcom/android/okhttp/internal/http/CacheStrategy$Factory;->etag:Ljava/lang/String;
-Lcom/android/okhttp/internal/http/CacheStrategy$Factory;->expires:Ljava/util/Date;
-Lcom/android/okhttp/internal/http/CacheStrategy$Factory;->get()Lcom/android/okhttp/internal/http/CacheStrategy;
-Lcom/android/okhttp/internal/http/CacheStrategy$Factory;->getCandidate()Lcom/android/okhttp/internal/http/CacheStrategy;
-Lcom/android/okhttp/internal/http/CacheStrategy$Factory;->hasConditions(Lcom/android/okhttp/Request;)Z
-Lcom/android/okhttp/internal/http/CacheStrategy$Factory;->isFreshnessLifetimeHeuristic()Z
-Lcom/android/okhttp/internal/http/CacheStrategy$Factory;->lastModified:Ljava/util/Date;
-Lcom/android/okhttp/internal/http/CacheStrategy$Factory;->lastModifiedString:Ljava/lang/String;
-Lcom/android/okhttp/internal/http/CacheStrategy$Factory;->nowMillis:J
-Lcom/android/okhttp/internal/http/CacheStrategy$Factory;->receivedResponseMillis:J
-Lcom/android/okhttp/internal/http/CacheStrategy$Factory;->request:Lcom/android/okhttp/Request;
-Lcom/android/okhttp/internal/http/CacheStrategy$Factory;->sentRequestMillis:J
-Lcom/android/okhttp/internal/http/CacheStrategy$Factory;->servedDate:Ljava/util/Date;
-Lcom/android/okhttp/internal/http/CacheStrategy$Factory;->servedDateString:Ljava/lang/String;
-Lcom/android/okhttp/internal/http/CacheStrategy;-><init>(Lcom/android/okhttp/Request;Lcom/android/okhttp/Response;)V
-Lcom/android/okhttp/internal/http/CacheStrategy;->cacheResponse:Lcom/android/okhttp/Response;
-Lcom/android/okhttp/internal/http/CacheStrategy;->isCacheable(Lcom/android/okhttp/Response;Lcom/android/okhttp/Request;)Z
-Lcom/android/okhttp/internal/http/CacheStrategy;->networkRequest:Lcom/android/okhttp/Request;
-Lcom/android/okhttp/internal/http/HttpEngine$NetworkInterceptorChain;->calls:I
-Lcom/android/okhttp/internal/http/HttpEngine$NetworkInterceptorChain;->connection()Lcom/android/okhttp/Connection;
-Lcom/android/okhttp/internal/http/HttpEngine$NetworkInterceptorChain;->index:I
-Lcom/android/okhttp/internal/http/HttpEngine$NetworkInterceptorChain;->proceed(Lcom/android/okhttp/Request;)Lcom/android/okhttp/Response;
-Lcom/android/okhttp/internal/http/HttpEngine$NetworkInterceptorChain;->request()Lcom/android/okhttp/Request;
-Lcom/android/okhttp/internal/http/HttpEngine$NetworkInterceptorChain;->request:Lcom/android/okhttp/Request;
-Lcom/android/okhttp/internal/http/HttpEngine;-><init>(Lcom/android/okhttp/OkHttpClient;Lcom/android/okhttp/Request;ZZZLcom/android/okhttp/internal/http/StreamAllocation;Lcom/android/okhttp/internal/http/RetryableSink;Lcom/android/okhttp/Response;)V
-Lcom/android/okhttp/internal/http/HttpEngine;->bufferedRequestBody:Lcom/android/okhttp/okio/BufferedSink;
-Lcom/android/okhttp/internal/http/HttpEngine;->bufferRequestBody:Z
-Lcom/android/okhttp/internal/http/HttpEngine;->cacheResponse:Lcom/android/okhttp/Response;
-Lcom/android/okhttp/internal/http/HttpEngine;->cacheStrategy:Lcom/android/okhttp/internal/http/CacheStrategy;
-Lcom/android/okhttp/internal/http/HttpEngine;->cacheWritingResponse(Lcom/android/okhttp/internal/http/CacheRequest;Lcom/android/okhttp/Response;)Lcom/android/okhttp/Response;
-Lcom/android/okhttp/internal/http/HttpEngine;->callerWritesRequestBody:Z
-Lcom/android/okhttp/internal/http/HttpEngine;->cancel()V
-Lcom/android/okhttp/internal/http/HttpEngine;->client:Lcom/android/okhttp/OkHttpClient;
-Lcom/android/okhttp/internal/http/HttpEngine;->close()Lcom/android/okhttp/internal/http/StreamAllocation;
-Lcom/android/okhttp/internal/http/HttpEngine;->combine(Lcom/android/okhttp/Headers;Lcom/android/okhttp/Headers;)Lcom/android/okhttp/Headers;
-Lcom/android/okhttp/internal/http/HttpEngine;->connect()Lcom/android/okhttp/internal/http/HttpStream;
-Lcom/android/okhttp/internal/http/HttpEngine;->createAddress(Lcom/android/okhttp/OkHttpClient;Lcom/android/okhttp/Request;)Lcom/android/okhttp/Address;
-Lcom/android/okhttp/internal/http/HttpEngine;->EMPTY_BODY:Lcom/android/okhttp/ResponseBody;
-Lcom/android/okhttp/internal/http/HttpEngine;->followUpRequest()Lcom/android/okhttp/Request;
-Lcom/android/okhttp/internal/http/HttpEngine;->forWebSocket:Z
-Lcom/android/okhttp/internal/http/HttpEngine;->getBufferedRequestBody()Lcom/android/okhttp/okio/BufferedSink;
-Lcom/android/okhttp/internal/http/HttpEngine;->getRequest()Lcom/android/okhttp/Request;
-Lcom/android/okhttp/internal/http/HttpEngine;->getRequestBody()Lcom/android/okhttp/okio/Sink;
-Lcom/android/okhttp/internal/http/HttpEngine;->getResponse()Lcom/android/okhttp/Response;
-Lcom/android/okhttp/internal/http/HttpEngine;->hasBody(Lcom/android/okhttp/Response;)Z
-Lcom/android/okhttp/internal/http/HttpEngine;->MAX_FOLLOW_UPS:I
-Lcom/android/okhttp/internal/http/HttpEngine;->maybeCache()V
-Lcom/android/okhttp/internal/http/HttpEngine;->permitsRequestBody(Lcom/android/okhttp/Request;)Z
-Lcom/android/okhttp/internal/http/HttpEngine;->readNetworkResponse()Lcom/android/okhttp/Response;
-Lcom/android/okhttp/internal/http/HttpEngine;->receiveHeaders(Lcom/android/okhttp/Headers;)V
-Lcom/android/okhttp/internal/http/HttpEngine;->recover(Lcom/android/okhttp/internal/http/RouteException;)Lcom/android/okhttp/internal/http/HttpEngine;
-Lcom/android/okhttp/internal/http/HttpEngine;->recover(Ljava/io/IOException;)Lcom/android/okhttp/internal/http/HttpEngine;
-Lcom/android/okhttp/internal/http/HttpEngine;->recover(Ljava/io/IOException;Lcom/android/okhttp/okio/Sink;)Lcom/android/okhttp/internal/http/HttpEngine;
-Lcom/android/okhttp/internal/http/HttpEngine;->releaseStreamAllocation()V
-Lcom/android/okhttp/internal/http/HttpEngine;->requestBodyOut:Lcom/android/okhttp/okio/Sink;
-Lcom/android/okhttp/internal/http/HttpEngine;->sameConnection(Lcom/android/okhttp/HttpUrl;)Z
-Lcom/android/okhttp/internal/http/HttpEngine;->storeRequest:Lcom/android/okhttp/internal/http/CacheRequest;
-Lcom/android/okhttp/internal/http/HttpEngine;->streamAllocation:Lcom/android/okhttp/internal/http/StreamAllocation;
-Lcom/android/okhttp/internal/http/HttpEngine;->stripBody(Lcom/android/okhttp/Response;)Lcom/android/okhttp/Response;
-Lcom/android/okhttp/internal/http/HttpEngine;->transparentGzip:Z
-Lcom/android/okhttp/internal/http/HttpEngine;->unzip(Lcom/android/okhttp/Response;)Lcom/android/okhttp/Response;
-Lcom/android/okhttp/internal/http/HttpEngine;->userRequest:Lcom/android/okhttp/Request;
-Lcom/android/okhttp/internal/http/HttpEngine;->validate(Lcom/android/okhttp/Response;Lcom/android/okhttp/Response;)Z
-Lcom/android/okhttp/internal/http/HttpStream;->cancel()V
-Lcom/android/okhttp/internal/http/HttpStream;->createRequestBody(Lcom/android/okhttp/Request;J)Lcom/android/okhttp/okio/Sink;
-Lcom/android/okhttp/internal/http/HttpStream;->DISCARD_STREAM_TIMEOUT_MILLIS:I
-Lcom/android/okhttp/internal/http/HttpStream;->finishRequest()V
-Lcom/android/okhttp/internal/http/HttpStream;->openResponseBody(Lcom/android/okhttp/Response;)Lcom/android/okhttp/ResponseBody;
-Lcom/android/okhttp/internal/http/HttpStream;->readResponseHeaders()Lcom/android/okhttp/Response$Builder;
-Lcom/android/okhttp/internal/http/HttpStream;->setHttpEngine(Lcom/android/okhttp/internal/http/HttpEngine;)V
-Lcom/android/okhttp/internal/http/HttpStream;->writeRequestBody(Lcom/android/okhttp/internal/http/RetryableSink;)V
-Lcom/android/okhttp/internal/http/HttpStream;->writeRequestHeaders(Lcom/android/okhttp/Request;)V
-Lcom/android/okhttp/internal/http/RequestException;-><init>(Ljava/io/IOException;)V
-Lcom/android/okhttp/internal/http/RetryableSink;-><init>()V
-Lcom/android/okhttp/internal/http/RetryableSink;-><init>(I)V
-Lcom/android/okhttp/internal/http/RetryableSink;->closed:Z
-Lcom/android/okhttp/internal/http/RetryableSink;->content:Lcom/android/okhttp/okio/Buffer;
-Lcom/android/okhttp/internal/http/RetryableSink;->contentLength()J
-Lcom/android/okhttp/internal/http/RetryableSink;->limit:I
-Lcom/android/okhttp/internal/http/RetryableSink;->timeout()Lcom/android/okhttp/okio/Timeout;
-Lcom/android/okhttp/internal/http/RetryableSink;->write(Lcom/android/okhttp/okio/Buffer;J)V
-Lcom/android/okhttp/internal/http/RetryableSink;->writeToSocket(Lcom/android/okhttp/okio/Sink;)V
-Lcom/android/okhttp/internal/http/RouteException;-><init>(Ljava/io/IOException;)V
-Lcom/android/okhttp/internal/http/RouteException;->addConnectException(Ljava/io/IOException;)V
-Lcom/android/okhttp/internal/http/RouteException;->addSuppressedExceptionMethod:Ljava/lang/reflect/Method;
-Lcom/android/okhttp/internal/http/RouteException;->addSuppressedIfPossible(Ljava/io/IOException;Ljava/io/IOException;)V
-Lcom/android/okhttp/internal/http/RouteException;->getLastConnectException()Ljava/io/IOException;
-Lcom/android/okhttp/internal/http/RouteException;->lastException:Ljava/io/IOException;
-Lcom/android/okhttp/internal/http/RouteSelector;-><init>(Lcom/android/okhttp/Address;Lcom/android/okhttp/internal/RouteDatabase;)V
-Lcom/android/okhttp/internal/http/RouteSelector;->address:Lcom/android/okhttp/Address;
-Lcom/android/okhttp/internal/http/RouteSelector;->connectFailed(Lcom/android/okhttp/Route;Ljava/io/IOException;)V
-Lcom/android/okhttp/internal/http/RouteSelector;->getHostString(Ljava/net/InetSocketAddress;)Ljava/lang/String;
-Lcom/android/okhttp/internal/http/RouteSelector;->hasNextInetSocketAddress()Z
-Lcom/android/okhttp/internal/http/RouteSelector;->hasNextPostponed()Z
-Lcom/android/okhttp/internal/http/RouteSelector;->hasNextProxy()Z
-Lcom/android/okhttp/internal/http/RouteSelector;->inetSocketAddresses:Ljava/util/List;
-Lcom/android/okhttp/internal/http/RouteSelector;->lastInetSocketAddress:Ljava/net/InetSocketAddress;
-Lcom/android/okhttp/internal/http/RouteSelector;->lastProxy:Ljava/net/Proxy;
-Lcom/android/okhttp/internal/http/RouteSelector;->next()Lcom/android/okhttp/Route;
-Lcom/android/okhttp/internal/http/RouteSelector;->nextInetSocketAddress()Ljava/net/InetSocketAddress;
-Lcom/android/okhttp/internal/http/RouteSelector;->nextInetSocketAddressIndex:I
-Lcom/android/okhttp/internal/http/RouteSelector;->nextPostponed()Lcom/android/okhttp/Route;
-Lcom/android/okhttp/internal/http/RouteSelector;->nextProxy()Ljava/net/Proxy;
-Lcom/android/okhttp/internal/http/RouteSelector;->nextProxyIndex:I
-Lcom/android/okhttp/internal/http/RouteSelector;->postponedRoutes:Ljava/util/List;
-Lcom/android/okhttp/internal/http/RouteSelector;->proxies:Ljava/util/List;
-Lcom/android/okhttp/internal/http/RouteSelector;->resetNextInetSocketAddress(Ljava/net/Proxy;)V
-Lcom/android/okhttp/internal/http/RouteSelector;->resetNextProxy(Lcom/android/okhttp/HttpUrl;Ljava/net/Proxy;)V
-Lcom/android/okhttp/internal/http/RouteSelector;->routeDatabase:Lcom/android/okhttp/internal/RouteDatabase;
-Lcom/android/okhttp/internal/http/StreamAllocation;-><init>(Lcom/android/okhttp/ConnectionPool;Lcom/android/okhttp/Address;)V
-Lcom/android/okhttp/internal/http/StreamAllocation;->acquire(Lcom/android/okhttp/internal/io/RealConnection;)V
-Lcom/android/okhttp/internal/http/StreamAllocation;->address:Lcom/android/okhttp/Address;
-Lcom/android/okhttp/internal/http/StreamAllocation;->cancel()V
-Lcom/android/okhttp/internal/http/StreamAllocation;->canceled:Z
-Lcom/android/okhttp/internal/http/StreamAllocation;->connection()Lcom/android/okhttp/internal/io/RealConnection;
-Lcom/android/okhttp/internal/http/StreamAllocation;->connection:Lcom/android/okhttp/internal/io/RealConnection;
-Lcom/android/okhttp/internal/http/StreamAllocation;->connectionFailed()V
-Lcom/android/okhttp/internal/http/StreamAllocation;->connectionFailed(Ljava/io/IOException;)V
-Lcom/android/okhttp/internal/http/StreamAllocation;->connectionPool:Lcom/android/okhttp/ConnectionPool;
-Lcom/android/okhttp/internal/http/StreamAllocation;->deallocate(ZZZ)V
-Lcom/android/okhttp/internal/http/StreamAllocation;->findConnection(IIIZ)Lcom/android/okhttp/internal/io/RealConnection;
-Lcom/android/okhttp/internal/http/StreamAllocation;->findHealthyConnection(IIIZZ)Lcom/android/okhttp/internal/io/RealConnection;
-Lcom/android/okhttp/internal/http/StreamAllocation;->isRecoverable(Lcom/android/okhttp/internal/http/RouteException;)Z
-Lcom/android/okhttp/internal/http/StreamAllocation;->isRecoverable(Ljava/io/IOException;)Z
-Lcom/android/okhttp/internal/http/StreamAllocation;->newStream(IIIZZ)Lcom/android/okhttp/internal/http/HttpStream;
-Lcom/android/okhttp/internal/http/StreamAllocation;->noNewStreams()V
-Lcom/android/okhttp/internal/http/StreamAllocation;->recover(Lcom/android/okhttp/internal/http/RouteException;)Z
-Lcom/android/okhttp/internal/http/StreamAllocation;->recover(Ljava/io/IOException;Lcom/android/okhttp/okio/Sink;)Z
-Lcom/android/okhttp/internal/http/StreamAllocation;->release()V
-Lcom/android/okhttp/internal/http/StreamAllocation;->release(Lcom/android/okhttp/internal/io/RealConnection;)V
-Lcom/android/okhttp/internal/http/StreamAllocation;->released:Z
-Lcom/android/okhttp/internal/http/StreamAllocation;->routeDatabase()Lcom/android/okhttp/internal/RouteDatabase;
-Lcom/android/okhttp/internal/http/StreamAllocation;->routeSelector:Lcom/android/okhttp/internal/http/RouteSelector;
-Lcom/android/okhttp/internal/http/StreamAllocation;->stream()Lcom/android/okhttp/internal/http/HttpStream;
-Lcom/android/okhttp/internal/http/StreamAllocation;->stream:Lcom/android/okhttp/internal/http/HttpStream;
-Lcom/android/okhttp/internal/http/StreamAllocation;->streamFinished(Lcom/android/okhttp/internal/http/HttpStream;)V
-Lcom/android/okhttp/MediaType;-><init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
-Lcom/android/okhttp/MediaType;->charset()Ljava/nio/charset/Charset;
-Lcom/android/okhttp/MediaType;->charset(Ljava/nio/charset/Charset;)Ljava/nio/charset/Charset;
-Lcom/android/okhttp/MediaType;->charset:Ljava/lang/String;
-Lcom/android/okhttp/MediaType;->mediaType:Ljava/lang/String;
-Lcom/android/okhttp/MediaType;->PARAMETER:Ljava/util/regex/Pattern;
-Lcom/android/okhttp/MediaType;->parse(Ljava/lang/String;)Lcom/android/okhttp/MediaType;
-Lcom/android/okhttp/MediaType;->QUOTED:Ljava/lang/String;
-Lcom/android/okhttp/MediaType;->subtype()Ljava/lang/String;
-Lcom/android/okhttp/MediaType;->subtype:Ljava/lang/String;
-Lcom/android/okhttp/MediaType;->TOKEN:Ljava/lang/String;
-Lcom/android/okhttp/MediaType;->type()Ljava/lang/String;
-Lcom/android/okhttp/MediaType;->type:Ljava/lang/String;
-Lcom/android/okhttp/MediaType;->TYPE_SUBTYPE:Ljava/util/regex/Pattern;
-Lcom/android/okhttp/OkCacheContainer;->getCache()Lcom/android/okhttp/Cache;
-Lcom/android/okhttp/OkHttpClient;-><init>(Lcom/android/okhttp/OkHttpClient;)V
-Lcom/android/okhttp/OkHttpClient;->authenticator:Lcom/android/okhttp/Authenticator;
-Lcom/android/okhttp/OkHttpClient;->cache:Lcom/android/okhttp/Cache;
-Lcom/android/okhttp/OkHttpClient;->cancel(Ljava/lang/Object;)Lcom/android/okhttp/OkHttpClient;
-Lcom/android/okhttp/OkHttpClient;->certificatePinner:Lcom/android/okhttp/CertificatePinner;
-Lcom/android/okhttp/OkHttpClient;->connectionSpecs:Ljava/util/List;
-Lcom/android/okhttp/OkHttpClient;->connectTimeout:I
-Lcom/android/okhttp/OkHttpClient;->cookieHandler:Ljava/net/CookieHandler;
-Lcom/android/okhttp/OkHttpClient;->copyWithDefaults()Lcom/android/okhttp/OkHttpClient;
-Lcom/android/okhttp/OkHttpClient;->defaultSslSocketFactory:Ljavax/net/ssl/SSLSocketFactory;
-Lcom/android/okhttp/OkHttpClient;->DEFAULT_CONNECTION_SPECS:Ljava/util/List;
-Lcom/android/okhttp/OkHttpClient;->dispatcher:Lcom/android/okhttp/Dispatcher;
-Lcom/android/okhttp/OkHttpClient;->followRedirects:Z
-Lcom/android/okhttp/OkHttpClient;->followSslRedirects:Z
-Lcom/android/okhttp/OkHttpClient;->getAuthenticator()Lcom/android/okhttp/Authenticator;
-Lcom/android/okhttp/OkHttpClient;->getCache()Lcom/android/okhttp/Cache;
-Lcom/android/okhttp/OkHttpClient;->getCertificatePinner()Lcom/android/okhttp/CertificatePinner;
-Lcom/android/okhttp/OkHttpClient;->getConnectionSpecs()Ljava/util/List;
-Lcom/android/okhttp/OkHttpClient;->getConnectTimeout()I
-Lcom/android/okhttp/OkHttpClient;->getDefaultSSLSocketFactory()Ljavax/net/ssl/SSLSocketFactory;
-Lcom/android/okhttp/OkHttpClient;->getDispatcher()Lcom/android/okhttp/Dispatcher;
-Lcom/android/okhttp/OkHttpClient;->getDns()Lcom/android/okhttp/Dns;
-Lcom/android/okhttp/OkHttpClient;->getFollowRedirects()Z
-Lcom/android/okhttp/OkHttpClient;->getFollowSslRedirects()Z
-Lcom/android/okhttp/OkHttpClient;->getProtocols()Ljava/util/List;
-Lcom/android/okhttp/OkHttpClient;->getReadTimeout()I
-Lcom/android/okhttp/OkHttpClient;->getRetryOnConnectionFailure()Z
-Lcom/android/okhttp/OkHttpClient;->getSocketFactory()Ljavax/net/SocketFactory;
-Lcom/android/okhttp/OkHttpClient;->getWriteTimeout()I
-Lcom/android/okhttp/OkHttpClient;->hostnameVerifier:Ljavax/net/ssl/HostnameVerifier;
-Lcom/android/okhttp/OkHttpClient;->interceptors()Ljava/util/List;
-Lcom/android/okhttp/OkHttpClient;->interceptors:Ljava/util/List;
-Lcom/android/okhttp/OkHttpClient;->internalCache()Lcom/android/okhttp/internal/InternalCache;
-Lcom/android/okhttp/OkHttpClient;->internalCache:Lcom/android/okhttp/internal/InternalCache;
-Lcom/android/okhttp/OkHttpClient;->networkInterceptors()Ljava/util/List;
-Lcom/android/okhttp/OkHttpClient;->networkInterceptors:Ljava/util/List;
-Lcom/android/okhttp/OkHttpClient;->newCall(Lcom/android/okhttp/Request;)Lcom/android/okhttp/Call;
-Lcom/android/okhttp/OkHttpClient;->protocols:Ljava/util/List;
-Lcom/android/okhttp/OkHttpClient;->proxy:Ljava/net/Proxy;
-Lcom/android/okhttp/OkHttpClient;->proxySelector:Ljava/net/ProxySelector;
-Lcom/android/okhttp/OkHttpClient;->readTimeout:I
-Lcom/android/okhttp/OkHttpClient;->retryOnConnectionFailure:Z
-Lcom/android/okhttp/OkHttpClient;->routeDatabase()Lcom/android/okhttp/internal/RouteDatabase;
-Lcom/android/okhttp/OkHttpClient;->routeDatabase:Lcom/android/okhttp/internal/RouteDatabase;
-Lcom/android/okhttp/OkHttpClient;->setAuthenticator(Lcom/android/okhttp/Authenticator;)Lcom/android/okhttp/OkHttpClient;
-Lcom/android/okhttp/OkHttpClient;->setCache(Lcom/android/okhttp/Cache;)Lcom/android/okhttp/OkHttpClient;
-Lcom/android/okhttp/OkHttpClient;->setCertificatePinner(Lcom/android/okhttp/CertificatePinner;)Lcom/android/okhttp/OkHttpClient;
-Lcom/android/okhttp/OkHttpClient;->setConnectionPool(Lcom/android/okhttp/ConnectionPool;)Lcom/android/okhttp/OkHttpClient;
-Lcom/android/okhttp/OkHttpClient;->setConnectionSpecs(Ljava/util/List;)Lcom/android/okhttp/OkHttpClient;
-Lcom/android/okhttp/OkHttpClient;->setConnectTimeout(JLjava/util/concurrent/TimeUnit;)V
-Lcom/android/okhttp/OkHttpClient;->setCookieHandler(Ljava/net/CookieHandler;)Lcom/android/okhttp/OkHttpClient;
-Lcom/android/okhttp/OkHttpClient;->setDispatcher(Lcom/android/okhttp/Dispatcher;)Lcom/android/okhttp/OkHttpClient;
-Lcom/android/okhttp/OkHttpClient;->setDns(Lcom/android/okhttp/Dns;)Lcom/android/okhttp/OkHttpClient;
-Lcom/android/okhttp/OkHttpClient;->setFollowRedirects(Z)V
-Lcom/android/okhttp/OkHttpClient;->setFollowSslRedirects(Z)Lcom/android/okhttp/OkHttpClient;
-Lcom/android/okhttp/OkHttpClient;->setHostnameVerifier(Ljavax/net/ssl/HostnameVerifier;)Lcom/android/okhttp/OkHttpClient;
-Lcom/android/okhttp/OkHttpClient;->setInternalCache(Lcom/android/okhttp/internal/InternalCache;)V
-Lcom/android/okhttp/OkHttpClient;->setProxy(Ljava/net/Proxy;)Lcom/android/okhttp/OkHttpClient;
-Lcom/android/okhttp/OkHttpClient;->setProxySelector(Ljava/net/ProxySelector;)Lcom/android/okhttp/OkHttpClient;
-Lcom/android/okhttp/OkHttpClient;->setReadTimeout(JLjava/util/concurrent/TimeUnit;)V
-Lcom/android/okhttp/OkHttpClient;->setSocketFactory(Ljavax/net/SocketFactory;)Lcom/android/okhttp/OkHttpClient;
-Lcom/android/okhttp/OkHttpClient;->setSslSocketFactory(Ljavax/net/ssl/SSLSocketFactory;)Lcom/android/okhttp/OkHttpClient;
-Lcom/android/okhttp/OkHttpClient;->setWriteTimeout(JLjava/util/concurrent/TimeUnit;)V
-Lcom/android/okhttp/OkHttpClient;->socketFactory:Ljavax/net/SocketFactory;
-Lcom/android/okhttp/OkHttpClient;->sslSocketFactory:Ljavax/net/ssl/SSLSocketFactory;
-Lcom/android/okhttp/OkHttpClient;->writeTimeout:I
-Lcom/android/okhttp/okio/AsyncTimeout$Watchdog;-><init>()V
-Lcom/android/okhttp/okio/AsyncTimeout;-><init>()V
-Lcom/android/okhttp/okio/AsyncTimeout;->awaitTimeout()Lcom/android/okhttp/okio/AsyncTimeout;
-Lcom/android/okhttp/okio/AsyncTimeout;->cancelScheduledTimeout(Lcom/android/okhttp/okio/AsyncTimeout;)Z
-Lcom/android/okhttp/okio/AsyncTimeout;->enter()V
-Lcom/android/okhttp/okio/AsyncTimeout;->exit()Z
-Lcom/android/okhttp/okio/AsyncTimeout;->exit(Ljava/io/IOException;)Ljava/io/IOException;
-Lcom/android/okhttp/okio/AsyncTimeout;->exit(Z)V
-Lcom/android/okhttp/okio/AsyncTimeout;->head:Lcom/android/okhttp/okio/AsyncTimeout;
-Lcom/android/okhttp/okio/AsyncTimeout;->inQueue:Z
-Lcom/android/okhttp/okio/AsyncTimeout;->newTimeoutException(Ljava/io/IOException;)Ljava/io/IOException;
-Lcom/android/okhttp/okio/AsyncTimeout;->next:Lcom/android/okhttp/okio/AsyncTimeout;
-Lcom/android/okhttp/okio/AsyncTimeout;->remainingNanos(J)J
-Lcom/android/okhttp/okio/AsyncTimeout;->scheduleTimeout(Lcom/android/okhttp/okio/AsyncTimeout;JZ)V
-Lcom/android/okhttp/okio/AsyncTimeout;->sink(Lcom/android/okhttp/okio/Sink;)Lcom/android/okhttp/okio/Sink;
-Lcom/android/okhttp/okio/AsyncTimeout;->source(Lcom/android/okhttp/okio/Source;)Lcom/android/okhttp/okio/Source;
-Lcom/android/okhttp/okio/AsyncTimeout;->timedOut()V
-Lcom/android/okhttp/okio/AsyncTimeout;->timeoutAt:J
-Lcom/android/okhttp/okio/Buffer;-><init>()V
-Lcom/android/okhttp/okio/Buffer;->buffer()Lcom/android/okhttp/okio/Buffer;
-Lcom/android/okhttp/okio/Buffer;->clear()V
-Lcom/android/okhttp/okio/Buffer;->completeSegmentByteCount()J
-Lcom/android/okhttp/okio/Buffer;->copyTo(Lcom/android/okhttp/okio/Buffer;JJ)Lcom/android/okhttp/okio/Buffer;
-Lcom/android/okhttp/okio/Buffer;->copyTo(Ljava/io/OutputStream;)Lcom/android/okhttp/okio/Buffer;
-Lcom/android/okhttp/okio/Buffer;->copyTo(Ljava/io/OutputStream;JJ)Lcom/android/okhttp/okio/Buffer;
-Lcom/android/okhttp/okio/Buffer;->DIGITS:[B
-Lcom/android/okhttp/okio/Buffer;->emit()Lcom/android/okhttp/okio/BufferedSink;
-Lcom/android/okhttp/okio/Buffer;->emitCompleteSegments()Lcom/android/okhttp/okio/Buffer;
-Lcom/android/okhttp/okio/Buffer;->emitCompleteSegments()Lcom/android/okhttp/okio/BufferedSink;
-Lcom/android/okhttp/okio/Buffer;->exhausted()Z
-Lcom/android/okhttp/okio/Buffer;->getByte(J)B
-Lcom/android/okhttp/okio/Buffer;->head:Lcom/android/okhttp/okio/Segment;
-Lcom/android/okhttp/okio/Buffer;->indexOf(B)J
-Lcom/android/okhttp/okio/Buffer;->indexOf(BJ)J
-Lcom/android/okhttp/okio/Buffer;->indexOf(Lcom/android/okhttp/okio/ByteString;)J
-Lcom/android/okhttp/okio/Buffer;->indexOf(Lcom/android/okhttp/okio/ByteString;J)J
-Lcom/android/okhttp/okio/Buffer;->indexOfElement(Lcom/android/okhttp/okio/ByteString;)J
-Lcom/android/okhttp/okio/Buffer;->indexOfElement(Lcom/android/okhttp/okio/ByteString;J)J
-Lcom/android/okhttp/okio/Buffer;->inputStream()Ljava/io/InputStream;
-Lcom/android/okhttp/okio/Buffer;->outputStream()Ljava/io/OutputStream;
-Lcom/android/okhttp/okio/Buffer;->rangeEquals(JLcom/android/okhttp/okio/ByteString;)Z
-Lcom/android/okhttp/okio/Buffer;->read(Lcom/android/okhttp/okio/Buffer;J)J
-Lcom/android/okhttp/okio/Buffer;->read([B)I
-Lcom/android/okhttp/okio/Buffer;->read([BII)I
-Lcom/android/okhttp/okio/Buffer;->readAll(Lcom/android/okhttp/okio/Sink;)J
-Lcom/android/okhttp/okio/Buffer;->readByte()B
-Lcom/android/okhttp/okio/Buffer;->readByteArray()[B
-Lcom/android/okhttp/okio/Buffer;->readByteArray(J)[B
-Lcom/android/okhttp/okio/Buffer;->readByteString()Lcom/android/okhttp/okio/ByteString;
-Lcom/android/okhttp/okio/Buffer;->readByteString(J)Lcom/android/okhttp/okio/ByteString;
-Lcom/android/okhttp/okio/Buffer;->readDecimalLong()J
-Lcom/android/okhttp/okio/Buffer;->readFrom(Ljava/io/InputStream;)Lcom/android/okhttp/okio/Buffer;
-Lcom/android/okhttp/okio/Buffer;->readFrom(Ljava/io/InputStream;J)Lcom/android/okhttp/okio/Buffer;
-Lcom/android/okhttp/okio/Buffer;->readFrom(Ljava/io/InputStream;JZ)V
-Lcom/android/okhttp/okio/Buffer;->readFully(Lcom/android/okhttp/okio/Buffer;J)V
-Lcom/android/okhttp/okio/Buffer;->readFully([B)V
-Lcom/android/okhttp/okio/Buffer;->readHexadecimalUnsignedLong()J
-Lcom/android/okhttp/okio/Buffer;->readInt()I
-Lcom/android/okhttp/okio/Buffer;->readIntLe()I
-Lcom/android/okhttp/okio/Buffer;->readLong()J
-Lcom/android/okhttp/okio/Buffer;->readLongLe()J
-Lcom/android/okhttp/okio/Buffer;->readShort()S
-Lcom/android/okhttp/okio/Buffer;->readShortLe()S
-Lcom/android/okhttp/okio/Buffer;->readString(JLjava/nio/charset/Charset;)Ljava/lang/String;
-Lcom/android/okhttp/okio/Buffer;->readString(Ljava/nio/charset/Charset;)Ljava/lang/String;
-Lcom/android/okhttp/okio/Buffer;->readUtf8()Ljava/lang/String;
-Lcom/android/okhttp/okio/Buffer;->readUtf8(J)Ljava/lang/String;
-Lcom/android/okhttp/okio/Buffer;->readUtf8CodePoint()I
-Lcom/android/okhttp/okio/Buffer;->readUtf8Line()Ljava/lang/String;
-Lcom/android/okhttp/okio/Buffer;->readUtf8Line(J)Ljava/lang/String;
-Lcom/android/okhttp/okio/Buffer;->readUtf8LineStrict()Ljava/lang/String;
-Lcom/android/okhttp/okio/Buffer;->REPLACEMENT_CHARACTER:I
-Lcom/android/okhttp/okio/Buffer;->request(J)Z
-Lcom/android/okhttp/okio/Buffer;->require(J)V
-Lcom/android/okhttp/okio/Buffer;->segmentSizes()Ljava/util/List;
-Lcom/android/okhttp/okio/Buffer;->size()J
-Lcom/android/okhttp/okio/Buffer;->size:J
-Lcom/android/okhttp/okio/Buffer;->skip(J)V
-Lcom/android/okhttp/okio/Buffer;->snapshot()Lcom/android/okhttp/okio/ByteString;
-Lcom/android/okhttp/okio/Buffer;->snapshot(I)Lcom/android/okhttp/okio/ByteString;
-Lcom/android/okhttp/okio/Buffer;->timeout()Lcom/android/okhttp/okio/Timeout;
-Lcom/android/okhttp/okio/Buffer;->writableSegment(I)Lcom/android/okhttp/okio/Segment;
-Lcom/android/okhttp/okio/Buffer;->write(Lcom/android/okhttp/okio/Buffer;J)V
-Lcom/android/okhttp/okio/Buffer;->write(Lcom/android/okhttp/okio/ByteString;)Lcom/android/okhttp/okio/Buffer;
-Lcom/android/okhttp/okio/Buffer;->write(Lcom/android/okhttp/okio/ByteString;)Lcom/android/okhttp/okio/BufferedSink;
-Lcom/android/okhttp/okio/Buffer;->write(Lcom/android/okhttp/okio/Source;J)Lcom/android/okhttp/okio/BufferedSink;
-Lcom/android/okhttp/okio/Buffer;->write([B)Lcom/android/okhttp/okio/Buffer;
-Lcom/android/okhttp/okio/Buffer;->write([B)Lcom/android/okhttp/okio/BufferedSink;
-Lcom/android/okhttp/okio/Buffer;->write([BII)Lcom/android/okhttp/okio/Buffer;
-Lcom/android/okhttp/okio/Buffer;->write([BII)Lcom/android/okhttp/okio/BufferedSink;
-Lcom/android/okhttp/okio/Buffer;->writeAll(Lcom/android/okhttp/okio/Source;)J
-Lcom/android/okhttp/okio/Buffer;->writeByte(I)Lcom/android/okhttp/okio/Buffer;
-Lcom/android/okhttp/okio/Buffer;->writeByte(I)Lcom/android/okhttp/okio/BufferedSink;
-Lcom/android/okhttp/okio/Buffer;->writeDecimalLong(J)Lcom/android/okhttp/okio/Buffer;
-Lcom/android/okhttp/okio/Buffer;->writeDecimalLong(J)Lcom/android/okhttp/okio/BufferedSink;
-Lcom/android/okhttp/okio/Buffer;->writeHexadecimalUnsignedLong(J)Lcom/android/okhttp/okio/Buffer;
-Lcom/android/okhttp/okio/Buffer;->writeHexadecimalUnsignedLong(J)Lcom/android/okhttp/okio/BufferedSink;
-Lcom/android/okhttp/okio/Buffer;->writeInt(I)Lcom/android/okhttp/okio/Buffer;
-Lcom/android/okhttp/okio/Buffer;->writeInt(I)Lcom/android/okhttp/okio/BufferedSink;
-Lcom/android/okhttp/okio/Buffer;->writeIntLe(I)Lcom/android/okhttp/okio/Buffer;
-Lcom/android/okhttp/okio/Buffer;->writeIntLe(I)Lcom/android/okhttp/okio/BufferedSink;
-Lcom/android/okhttp/okio/Buffer;->writeLong(J)Lcom/android/okhttp/okio/Buffer;
-Lcom/android/okhttp/okio/Buffer;->writeLong(J)Lcom/android/okhttp/okio/BufferedSink;
-Lcom/android/okhttp/okio/Buffer;->writeLongLe(J)Lcom/android/okhttp/okio/Buffer;
-Lcom/android/okhttp/okio/Buffer;->writeLongLe(J)Lcom/android/okhttp/okio/BufferedSink;
-Lcom/android/okhttp/okio/Buffer;->writeShort(I)Lcom/android/okhttp/okio/Buffer;
-Lcom/android/okhttp/okio/Buffer;->writeShort(I)Lcom/android/okhttp/okio/BufferedSink;
-Lcom/android/okhttp/okio/Buffer;->writeShortLe(I)Lcom/android/okhttp/okio/Buffer;
-Lcom/android/okhttp/okio/Buffer;->writeShortLe(I)Lcom/android/okhttp/okio/BufferedSink;
-Lcom/android/okhttp/okio/Buffer;->writeString(Ljava/lang/String;IILjava/nio/charset/Charset;)Lcom/android/okhttp/okio/Buffer;
-Lcom/android/okhttp/okio/Buffer;->writeString(Ljava/lang/String;IILjava/nio/charset/Charset;)Lcom/android/okhttp/okio/BufferedSink;
-Lcom/android/okhttp/okio/Buffer;->writeString(Ljava/lang/String;Ljava/nio/charset/Charset;)Lcom/android/okhttp/okio/Buffer;
-Lcom/android/okhttp/okio/Buffer;->writeString(Ljava/lang/String;Ljava/nio/charset/Charset;)Lcom/android/okhttp/okio/BufferedSink;
-Lcom/android/okhttp/okio/Buffer;->writeTo(Ljava/io/OutputStream;)Lcom/android/okhttp/okio/Buffer;
-Lcom/android/okhttp/okio/Buffer;->writeTo(Ljava/io/OutputStream;J)Lcom/android/okhttp/okio/Buffer;
-Lcom/android/okhttp/okio/Buffer;->writeUtf8(Ljava/lang/String;)Lcom/android/okhttp/okio/Buffer;
-Lcom/android/okhttp/okio/Buffer;->writeUtf8(Ljava/lang/String;)Lcom/android/okhttp/okio/BufferedSink;
-Lcom/android/okhttp/okio/Buffer;->writeUtf8(Ljava/lang/String;II)Lcom/android/okhttp/okio/Buffer;
-Lcom/android/okhttp/okio/Buffer;->writeUtf8(Ljava/lang/String;II)Lcom/android/okhttp/okio/BufferedSink;
-Lcom/android/okhttp/okio/Buffer;->writeUtf8CodePoint(I)Lcom/android/okhttp/okio/Buffer;
-Lcom/android/okhttp/okio/Buffer;->writeUtf8CodePoint(I)Lcom/android/okhttp/okio/BufferedSink;
-Lcom/android/okhttp/okio/BufferedSink;->buffer()Lcom/android/okhttp/okio/Buffer;
-Lcom/android/okhttp/okio/BufferedSink;->emit()Lcom/android/okhttp/okio/BufferedSink;
-Lcom/android/okhttp/okio/BufferedSink;->emitCompleteSegments()Lcom/android/okhttp/okio/BufferedSink;
-Lcom/android/okhttp/okio/BufferedSink;->outputStream()Ljava/io/OutputStream;
-Lcom/android/okhttp/okio/BufferedSink;->write(Lcom/android/okhttp/okio/ByteString;)Lcom/android/okhttp/okio/BufferedSink;
-Lcom/android/okhttp/okio/BufferedSink;->write(Lcom/android/okhttp/okio/Source;J)Lcom/android/okhttp/okio/BufferedSink;
-Lcom/android/okhttp/okio/BufferedSink;->write([B)Lcom/android/okhttp/okio/BufferedSink;
-Lcom/android/okhttp/okio/BufferedSink;->write([BII)Lcom/android/okhttp/okio/BufferedSink;
-Lcom/android/okhttp/okio/BufferedSink;->writeAll(Lcom/android/okhttp/okio/Source;)J
-Lcom/android/okhttp/okio/BufferedSink;->writeByte(I)Lcom/android/okhttp/okio/BufferedSink;
-Lcom/android/okhttp/okio/BufferedSink;->writeDecimalLong(J)Lcom/android/okhttp/okio/BufferedSink;
-Lcom/android/okhttp/okio/BufferedSink;->writeHexadecimalUnsignedLong(J)Lcom/android/okhttp/okio/BufferedSink;
-Lcom/android/okhttp/okio/BufferedSink;->writeInt(I)Lcom/android/okhttp/okio/BufferedSink;
-Lcom/android/okhttp/okio/BufferedSink;->writeIntLe(I)Lcom/android/okhttp/okio/BufferedSink;
-Lcom/android/okhttp/okio/BufferedSink;->writeLong(J)Lcom/android/okhttp/okio/BufferedSink;
-Lcom/android/okhttp/okio/BufferedSink;->writeLongLe(J)Lcom/android/okhttp/okio/BufferedSink;
-Lcom/android/okhttp/okio/BufferedSink;->writeShort(I)Lcom/android/okhttp/okio/BufferedSink;
-Lcom/android/okhttp/okio/BufferedSink;->writeShortLe(I)Lcom/android/okhttp/okio/BufferedSink;
-Lcom/android/okhttp/okio/BufferedSink;->writeString(Ljava/lang/String;IILjava/nio/charset/Charset;)Lcom/android/okhttp/okio/BufferedSink;
-Lcom/android/okhttp/okio/BufferedSink;->writeString(Ljava/lang/String;Ljava/nio/charset/Charset;)Lcom/android/okhttp/okio/BufferedSink;
-Lcom/android/okhttp/okio/BufferedSink;->writeUtf8(Ljava/lang/String;)Lcom/android/okhttp/okio/BufferedSink;
-Lcom/android/okhttp/okio/BufferedSink;->writeUtf8(Ljava/lang/String;II)Lcom/android/okhttp/okio/BufferedSink;
-Lcom/android/okhttp/okio/BufferedSink;->writeUtf8CodePoint(I)Lcom/android/okhttp/okio/BufferedSink;
-Lcom/android/okhttp/okio/BufferedSource;->buffer()Lcom/android/okhttp/okio/Buffer;
-Lcom/android/okhttp/okio/BufferedSource;->exhausted()Z
-Lcom/android/okhttp/okio/BufferedSource;->indexOf(B)J
-Lcom/android/okhttp/okio/BufferedSource;->indexOf(BJ)J
-Lcom/android/okhttp/okio/BufferedSource;->indexOf(Lcom/android/okhttp/okio/ByteString;)J
-Lcom/android/okhttp/okio/BufferedSource;->indexOf(Lcom/android/okhttp/okio/ByteString;J)J
-Lcom/android/okhttp/okio/BufferedSource;->indexOfElement(Lcom/android/okhttp/okio/ByteString;)J
-Lcom/android/okhttp/okio/BufferedSource;->indexOfElement(Lcom/android/okhttp/okio/ByteString;J)J
-Lcom/android/okhttp/okio/BufferedSource;->inputStream()Ljava/io/InputStream;
-Lcom/android/okhttp/okio/BufferedSource;->read([B)I
-Lcom/android/okhttp/okio/BufferedSource;->read([BII)I
-Lcom/android/okhttp/okio/BufferedSource;->readAll(Lcom/android/okhttp/okio/Sink;)J
-Lcom/android/okhttp/okio/BufferedSource;->readByte()B
-Lcom/android/okhttp/okio/BufferedSource;->readByteArray()[B
-Lcom/android/okhttp/okio/BufferedSource;->readByteArray(J)[B
-Lcom/android/okhttp/okio/BufferedSource;->readByteString()Lcom/android/okhttp/okio/ByteString;
-Lcom/android/okhttp/okio/BufferedSource;->readByteString(J)Lcom/android/okhttp/okio/ByteString;
-Lcom/android/okhttp/okio/BufferedSource;->readDecimalLong()J
-Lcom/android/okhttp/okio/BufferedSource;->readFully(Lcom/android/okhttp/okio/Buffer;J)V
-Lcom/android/okhttp/okio/BufferedSource;->readFully([B)V
-Lcom/android/okhttp/okio/BufferedSource;->readHexadecimalUnsignedLong()J
-Lcom/android/okhttp/okio/BufferedSource;->readInt()I
-Lcom/android/okhttp/okio/BufferedSource;->readIntLe()I
-Lcom/android/okhttp/okio/BufferedSource;->readLong()J
-Lcom/android/okhttp/okio/BufferedSource;->readLongLe()J
-Lcom/android/okhttp/okio/BufferedSource;->readShort()S
-Lcom/android/okhttp/okio/BufferedSource;->readShortLe()S
-Lcom/android/okhttp/okio/BufferedSource;->readString(JLjava/nio/charset/Charset;)Ljava/lang/String;
-Lcom/android/okhttp/okio/BufferedSource;->readString(Ljava/nio/charset/Charset;)Ljava/lang/String;
-Lcom/android/okhttp/okio/BufferedSource;->readUtf8()Ljava/lang/String;
-Lcom/android/okhttp/okio/BufferedSource;->readUtf8(J)Ljava/lang/String;
-Lcom/android/okhttp/okio/BufferedSource;->readUtf8CodePoint()I
-Lcom/android/okhttp/okio/BufferedSource;->readUtf8Line()Ljava/lang/String;
-Lcom/android/okhttp/okio/BufferedSource;->readUtf8LineStrict()Ljava/lang/String;
-Lcom/android/okhttp/okio/BufferedSource;->request(J)Z
-Lcom/android/okhttp/okio/BufferedSource;->require(J)V
-Lcom/android/okhttp/okio/BufferedSource;->skip(J)V
-Lcom/android/okhttp/okio/ByteString;-><init>([B)V
-Lcom/android/okhttp/okio/ByteString;->base64()Ljava/lang/String;
-Lcom/android/okhttp/okio/ByteString;->base64Url()Ljava/lang/String;
-Lcom/android/okhttp/okio/ByteString;->compareTo(Lcom/android/okhttp/okio/ByteString;)I
-Lcom/android/okhttp/okio/ByteString;->compareTo(Ljava/lang/Object;)I
-Lcom/android/okhttp/okio/ByteString;->data:[B
-Lcom/android/okhttp/okio/ByteString;->decodeBase64(Ljava/lang/String;)Lcom/android/okhttp/okio/ByteString;
-Lcom/android/okhttp/okio/ByteString;->decodeHex(Ljava/lang/String;)Lcom/android/okhttp/okio/ByteString;
-Lcom/android/okhttp/okio/ByteString;->decodeHexDigit(C)I
-Lcom/android/okhttp/okio/ByteString;->digest(Ljava/lang/String;)Lcom/android/okhttp/okio/ByteString;
-Lcom/android/okhttp/okio/ByteString;->EMPTY:Lcom/android/okhttp/okio/ByteString;
-Lcom/android/okhttp/okio/ByteString;->encodeUtf8(Ljava/lang/String;)Lcom/android/okhttp/okio/ByteString;
-Lcom/android/okhttp/okio/ByteString;->getByte(I)B
-Lcom/android/okhttp/okio/ByteString;->hashCode:I
-Lcom/android/okhttp/okio/ByteString;->hex()Ljava/lang/String;
-Lcom/android/okhttp/okio/ByteString;->HEX_DIGITS:[C
-Lcom/android/okhttp/okio/ByteString;->md5()Lcom/android/okhttp/okio/ByteString;
-Lcom/android/okhttp/okio/ByteString;->of([BII)Lcom/android/okhttp/okio/ByteString;
-Lcom/android/okhttp/okio/ByteString;->rangeEquals(ILcom/android/okhttp/okio/ByteString;II)Z
-Lcom/android/okhttp/okio/ByteString;->rangeEquals(I[BII)Z
-Lcom/android/okhttp/okio/ByteString;->read(Ljava/io/InputStream;I)Lcom/android/okhttp/okio/ByteString;
-Lcom/android/okhttp/okio/ByteString;->sha256()Lcom/android/okhttp/okio/ByteString;
-Lcom/android/okhttp/okio/ByteString;->size()I
-Lcom/android/okhttp/okio/ByteString;->substring(I)Lcom/android/okhttp/okio/ByteString;
-Lcom/android/okhttp/okio/ByteString;->substring(II)Lcom/android/okhttp/okio/ByteString;
-Lcom/android/okhttp/okio/ByteString;->toAsciiLowercase()Lcom/android/okhttp/okio/ByteString;
-Lcom/android/okhttp/okio/ByteString;->toAsciiUppercase()Lcom/android/okhttp/okio/ByteString;
-Lcom/android/okhttp/okio/ByteString;->toByteArray()[B
-Lcom/android/okhttp/okio/ByteString;->utf8()Ljava/lang/String;
-Lcom/android/okhttp/okio/ByteString;->utf8:Ljava/lang/String;
-Lcom/android/okhttp/okio/ByteString;->write(Lcom/android/okhttp/okio/Buffer;)V
-Lcom/android/okhttp/okio/ByteString;->write(Ljava/io/OutputStream;)V
-Lcom/android/okhttp/okio/Segment;-><init>()V
-Lcom/android/okhttp/okio/Segment;-><init>(Lcom/android/okhttp/okio/Segment;)V
-Lcom/android/okhttp/okio/Segment;-><init>([BII)V
-Lcom/android/okhttp/okio/Segment;->compact()V
-Lcom/android/okhttp/okio/Segment;->data:[B
-Lcom/android/okhttp/okio/Segment;->limit:I
-Lcom/android/okhttp/okio/Segment;->next:Lcom/android/okhttp/okio/Segment;
-Lcom/android/okhttp/okio/Segment;->owner:Z
-Lcom/android/okhttp/okio/Segment;->pop()Lcom/android/okhttp/okio/Segment;
-Lcom/android/okhttp/okio/Segment;->pos:I
-Lcom/android/okhttp/okio/Segment;->prev:Lcom/android/okhttp/okio/Segment;
-Lcom/android/okhttp/okio/Segment;->push(Lcom/android/okhttp/okio/Segment;)Lcom/android/okhttp/okio/Segment;
-Lcom/android/okhttp/okio/Segment;->shared:Z
-Lcom/android/okhttp/okio/Segment;->SIZE:I
-Lcom/android/okhttp/okio/Segment;->split(I)Lcom/android/okhttp/okio/Segment;
-Lcom/android/okhttp/okio/Segment;->writeTo(Lcom/android/okhttp/okio/Segment;I)V
-Lcom/android/okhttp/okio/Sink;->timeout()Lcom/android/okhttp/okio/Timeout;
-Lcom/android/okhttp/okio/Sink;->write(Lcom/android/okhttp/okio/Buffer;J)V
-Lcom/android/okhttp/okio/Source;->read(Lcom/android/okhttp/okio/Buffer;J)J
-Lcom/android/okhttp/okio/Source;->timeout()Lcom/android/okhttp/okio/Timeout;
-Lcom/android/okhttp/okio/Timeout;-><init>()V
-Lcom/android/okhttp/okio/Timeout;->clearDeadline()Lcom/android/okhttp/okio/Timeout;
-Lcom/android/okhttp/okio/Timeout;->clearTimeout()Lcom/android/okhttp/okio/Timeout;
-Lcom/android/okhttp/okio/Timeout;->deadline(JLjava/util/concurrent/TimeUnit;)Lcom/android/okhttp/okio/Timeout;
-Lcom/android/okhttp/okio/Timeout;->deadlineNanoTime()J
-Lcom/android/okhttp/okio/Timeout;->deadlineNanoTime(J)Lcom/android/okhttp/okio/Timeout;
-Lcom/android/okhttp/okio/Timeout;->deadlineNanoTime:J
-Lcom/android/okhttp/okio/Timeout;->hasDeadline()Z
-Lcom/android/okhttp/okio/Timeout;->hasDeadline:Z
-Lcom/android/okhttp/okio/Timeout;->NONE:Lcom/android/okhttp/okio/Timeout;
-Lcom/android/okhttp/okio/Timeout;->throwIfReached()V
-Lcom/android/okhttp/okio/Timeout;->timeout(JLjava/util/concurrent/TimeUnit;)Lcom/android/okhttp/okio/Timeout;
-Lcom/android/okhttp/okio/Timeout;->timeoutNanos()J
-Lcom/android/okhttp/okio/Timeout;->timeoutNanos:J
-Lcom/android/okhttp/Protocol;->get(Ljava/lang/String;)Lcom/android/okhttp/Protocol;
-Lcom/android/okhttp/Protocol;->HTTP_1_0:Lcom/android/okhttp/Protocol;
-Lcom/android/okhttp/Protocol;->HTTP_1_1:Lcom/android/okhttp/Protocol;
-Lcom/android/okhttp/Protocol;->HTTP_2:Lcom/android/okhttp/Protocol;
-Lcom/android/okhttp/Protocol;->protocol:Ljava/lang/String;
-Lcom/android/okhttp/Protocol;->SPDY_3:Lcom/android/okhttp/Protocol;
-Lcom/android/okhttp/Protocol;->valueOf(Ljava/lang/String;)Lcom/android/okhttp/Protocol;
-Lcom/android/okhttp/Protocol;->values()[Lcom/android/okhttp/Protocol;
-Lcom/android/okhttp/Request$Builder;-><init>()V
-Lcom/android/okhttp/Request$Builder;-><init>(Lcom/android/okhttp/Request;)V
-Lcom/android/okhttp/Request$Builder;->addHeader(Ljava/lang/String;Ljava/lang/String;)Lcom/android/okhttp/Request$Builder;
-Lcom/android/okhttp/Request$Builder;->body:Lcom/android/okhttp/RequestBody;
-Lcom/android/okhttp/Request$Builder;->build()Lcom/android/okhttp/Request;
-Lcom/android/okhttp/Request$Builder;->cacheControl(Lcom/android/okhttp/CacheControl;)Lcom/android/okhttp/Request$Builder;
-Lcom/android/okhttp/Request$Builder;->delete()Lcom/android/okhttp/Request$Builder;
-Lcom/android/okhttp/Request$Builder;->delete(Lcom/android/okhttp/RequestBody;)Lcom/android/okhttp/Request$Builder;
-Lcom/android/okhttp/Request$Builder;->get()Lcom/android/okhttp/Request$Builder;
-Lcom/android/okhttp/Request$Builder;->head()Lcom/android/okhttp/Request$Builder;
-Lcom/android/okhttp/Request$Builder;->header(Ljava/lang/String;Ljava/lang/String;)Lcom/android/okhttp/Request$Builder;
-Lcom/android/okhttp/Request$Builder;->headers(Lcom/android/okhttp/Headers;)Lcom/android/okhttp/Request$Builder;
-Lcom/android/okhttp/Request$Builder;->headers:Lcom/android/okhttp/Headers$Builder;
-Lcom/android/okhttp/Request$Builder;->method(Ljava/lang/String;Lcom/android/okhttp/RequestBody;)Lcom/android/okhttp/Request$Builder;
-Lcom/android/okhttp/Request$Builder;->method:Ljava/lang/String;
-Lcom/android/okhttp/Request$Builder;->patch(Lcom/android/okhttp/RequestBody;)Lcom/android/okhttp/Request$Builder;
-Lcom/android/okhttp/Request$Builder;->post(Lcom/android/okhttp/RequestBody;)Lcom/android/okhttp/Request$Builder;
-Lcom/android/okhttp/Request$Builder;->put(Lcom/android/okhttp/RequestBody;)Lcom/android/okhttp/Request$Builder;
-Lcom/android/okhttp/Request$Builder;->removeHeader(Ljava/lang/String;)Lcom/android/okhttp/Request$Builder;
-Lcom/android/okhttp/Request$Builder;->tag(Ljava/lang/Object;)Lcom/android/okhttp/Request$Builder;
-Lcom/android/okhttp/Request$Builder;->tag:Ljava/lang/Object;
-Lcom/android/okhttp/Request$Builder;->url(Lcom/android/okhttp/HttpUrl;)Lcom/android/okhttp/Request$Builder;
-Lcom/android/okhttp/Request$Builder;->url(Ljava/lang/String;)Lcom/android/okhttp/Request$Builder;
-Lcom/android/okhttp/Request$Builder;->url(Ljava/net/URL;)Lcom/android/okhttp/Request$Builder;
-Lcom/android/okhttp/Request$Builder;->url:Lcom/android/okhttp/HttpUrl;
-Lcom/android/okhttp/Request;-><init>(Lcom/android/okhttp/Request$Builder;)V
-Lcom/android/okhttp/Request;->body()Lcom/android/okhttp/RequestBody;
-Lcom/android/okhttp/Request;->body:Lcom/android/okhttp/RequestBody;
-Lcom/android/okhttp/Request;->cacheControl()Lcom/android/okhttp/CacheControl;
-Lcom/android/okhttp/Request;->cacheControl:Lcom/android/okhttp/CacheControl;
-Lcom/android/okhttp/Request;->header(Ljava/lang/String;)Ljava/lang/String;
-Lcom/android/okhttp/Request;->headers()Lcom/android/okhttp/Headers;
-Lcom/android/okhttp/Request;->headers(Ljava/lang/String;)Ljava/util/List;
-Lcom/android/okhttp/Request;->httpUrl()Lcom/android/okhttp/HttpUrl;
-Lcom/android/okhttp/Request;->isHttps()Z
-Lcom/android/okhttp/Request;->javaNetUri:Ljava/net/URI;
-Lcom/android/okhttp/Request;->javaNetUrl:Ljava/net/URL;
-Lcom/android/okhttp/Request;->method()Ljava/lang/String;
-Lcom/android/okhttp/Request;->newBuilder()Lcom/android/okhttp/Request$Builder;
-Lcom/android/okhttp/Request;->tag()Ljava/lang/Object;
-Lcom/android/okhttp/Request;->tag:Ljava/lang/Object;
-Lcom/android/okhttp/Request;->uri()Ljava/net/URI;
-Lcom/android/okhttp/Request;->url()Ljava/net/URL;
-Lcom/android/okhttp/Request;->urlString()Ljava/lang/String;
-Lcom/android/okhttp/RequestBody;-><init>()V
-Lcom/android/okhttp/RequestBody;->contentLength()J
-Lcom/android/okhttp/RequestBody;->contentType()Lcom/android/okhttp/MediaType;
-Lcom/android/okhttp/RequestBody;->create(Lcom/android/okhttp/MediaType;Lcom/android/okhttp/okio/ByteString;)Lcom/android/okhttp/RequestBody;
-Lcom/android/okhttp/RequestBody;->create(Lcom/android/okhttp/MediaType;Ljava/io/File;)Lcom/android/okhttp/RequestBody;
-Lcom/android/okhttp/RequestBody;->create(Lcom/android/okhttp/MediaType;Ljava/lang/String;)Lcom/android/okhttp/RequestBody;
-Lcom/android/okhttp/RequestBody;->create(Lcom/android/okhttp/MediaType;[B)Lcom/android/okhttp/RequestBody;
-Lcom/android/okhttp/RequestBody;->create(Lcom/android/okhttp/MediaType;[BII)Lcom/android/okhttp/RequestBody;
-Lcom/android/okhttp/RequestBody;->writeTo(Lcom/android/okhttp/okio/BufferedSink;)V
-Lcom/android/okhttp/Response$Builder;-><init>()V
-Lcom/android/okhttp/Response$Builder;-><init>(Lcom/android/okhttp/Response;)V
-Lcom/android/okhttp/Response$Builder;->addHeader(Ljava/lang/String;Ljava/lang/String;)Lcom/android/okhttp/Response$Builder;
-Lcom/android/okhttp/Response$Builder;->body(Lcom/android/okhttp/ResponseBody;)Lcom/android/okhttp/Response$Builder;
-Lcom/android/okhttp/Response$Builder;->body:Lcom/android/okhttp/ResponseBody;
-Lcom/android/okhttp/Response$Builder;->build()Lcom/android/okhttp/Response;
-Lcom/android/okhttp/Response$Builder;->cacheResponse(Lcom/android/okhttp/Response;)Lcom/android/okhttp/Response$Builder;
-Lcom/android/okhttp/Response$Builder;->cacheResponse:Lcom/android/okhttp/Response;
-Lcom/android/okhttp/Response$Builder;->checkPriorResponse(Lcom/android/okhttp/Response;)V
-Lcom/android/okhttp/Response$Builder;->checkSupportResponse(Ljava/lang/String;Lcom/android/okhttp/Response;)V
-Lcom/android/okhttp/Response$Builder;->code(I)Lcom/android/okhttp/Response$Builder;
-Lcom/android/okhttp/Response$Builder;->code:I
-Lcom/android/okhttp/Response$Builder;->handshake(Lcom/android/okhttp/Handshake;)Lcom/android/okhttp/Response$Builder;
-Lcom/android/okhttp/Response$Builder;->handshake:Lcom/android/okhttp/Handshake;
-Lcom/android/okhttp/Response$Builder;->header(Ljava/lang/String;Ljava/lang/String;)Lcom/android/okhttp/Response$Builder;
-Lcom/android/okhttp/Response$Builder;->headers(Lcom/android/okhttp/Headers;)Lcom/android/okhttp/Response$Builder;
-Lcom/android/okhttp/Response$Builder;->headers:Lcom/android/okhttp/Headers$Builder;
-Lcom/android/okhttp/Response$Builder;->message(Ljava/lang/String;)Lcom/android/okhttp/Response$Builder;
-Lcom/android/okhttp/Response$Builder;->message:Ljava/lang/String;
-Lcom/android/okhttp/Response$Builder;->networkResponse(Lcom/android/okhttp/Response;)Lcom/android/okhttp/Response$Builder;
-Lcom/android/okhttp/Response$Builder;->networkResponse:Lcom/android/okhttp/Response;
-Lcom/android/okhttp/Response$Builder;->priorResponse(Lcom/android/okhttp/Response;)Lcom/android/okhttp/Response$Builder;
-Lcom/android/okhttp/Response$Builder;->priorResponse:Lcom/android/okhttp/Response;
-Lcom/android/okhttp/Response$Builder;->protocol(Lcom/android/okhttp/Protocol;)Lcom/android/okhttp/Response$Builder;
-Lcom/android/okhttp/Response$Builder;->protocol:Lcom/android/okhttp/Protocol;
-Lcom/android/okhttp/Response$Builder;->removeHeader(Ljava/lang/String;)Lcom/android/okhttp/Response$Builder;
-Lcom/android/okhttp/Response$Builder;->request(Lcom/android/okhttp/Request;)Lcom/android/okhttp/Response$Builder;
-Lcom/android/okhttp/Response$Builder;->request:Lcom/android/okhttp/Request;
-Lcom/android/okhttp/Response;-><init>(Lcom/android/okhttp/Response$Builder;)V
-Lcom/android/okhttp/Response;->body()Lcom/android/okhttp/ResponseBody;
-Lcom/android/okhttp/Response;->body:Lcom/android/okhttp/ResponseBody;
-Lcom/android/okhttp/Response;->cacheControl()Lcom/android/okhttp/CacheControl;
-Lcom/android/okhttp/Response;->cacheControl:Lcom/android/okhttp/CacheControl;
-Lcom/android/okhttp/Response;->cacheResponse()Lcom/android/okhttp/Response;
-Lcom/android/okhttp/Response;->cacheResponse:Lcom/android/okhttp/Response;
-Lcom/android/okhttp/Response;->challenges()Ljava/util/List;
-Lcom/android/okhttp/Response;->code()I
-Lcom/android/okhttp/Response;->handshake()Lcom/android/okhttp/Handshake;
-Lcom/android/okhttp/Response;->handshake:Lcom/android/okhttp/Handshake;
-Lcom/android/okhttp/Response;->header(Ljava/lang/String;)Ljava/lang/String;
-Lcom/android/okhttp/Response;->header(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
-Lcom/android/okhttp/Response;->headers()Lcom/android/okhttp/Headers;
-Lcom/android/okhttp/Response;->headers(Ljava/lang/String;)Ljava/util/List;
-Lcom/android/okhttp/Response;->isRedirect()Z
-Lcom/android/okhttp/Response;->isSuccessful()Z
-Lcom/android/okhttp/Response;->message()Ljava/lang/String;
-Lcom/android/okhttp/Response;->networkResponse()Lcom/android/okhttp/Response;
-Lcom/android/okhttp/Response;->newBuilder()Lcom/android/okhttp/Response$Builder;
-Lcom/android/okhttp/Response;->priorResponse()Lcom/android/okhttp/Response;
-Lcom/android/okhttp/Response;->priorResponse:Lcom/android/okhttp/Response;
-Lcom/android/okhttp/Response;->protocol()Lcom/android/okhttp/Protocol;
-Lcom/android/okhttp/Response;->request()Lcom/android/okhttp/Request;
-Lcom/android/okhttp/Response;->request:Lcom/android/okhttp/Request;
-Lcom/android/okhttp/ResponseBody;-><init>()V
-Lcom/android/okhttp/ResponseBody;->bytes()[B
-Lcom/android/okhttp/ResponseBody;->byteStream()Ljava/io/InputStream;
-Lcom/android/okhttp/ResponseBody;->charset()Ljava/nio/charset/Charset;
-Lcom/android/okhttp/ResponseBody;->charStream()Ljava/io/Reader;
-Lcom/android/okhttp/ResponseBody;->contentLength()J
-Lcom/android/okhttp/ResponseBody;->contentType()Lcom/android/okhttp/MediaType;
-Lcom/android/okhttp/ResponseBody;->create(Lcom/android/okhttp/MediaType;JLcom/android/okhttp/okio/BufferedSource;)Lcom/android/okhttp/ResponseBody;
-Lcom/android/okhttp/ResponseBody;->create(Lcom/android/okhttp/MediaType;Ljava/lang/String;)Lcom/android/okhttp/ResponseBody;
-Lcom/android/okhttp/ResponseBody;->create(Lcom/android/okhttp/MediaType;[B)Lcom/android/okhttp/ResponseBody;
-Lcom/android/okhttp/ResponseBody;->reader:Ljava/io/Reader;
-Lcom/android/okhttp/ResponseBody;->source()Lcom/android/okhttp/okio/BufferedSource;
-Lcom/android/okhttp/ResponseBody;->string()Ljava/lang/String;
-Lcom/android/okhttp/Route;-><init>(Lcom/android/okhttp/Address;Ljava/net/Proxy;Ljava/net/InetSocketAddress;)V
-Lcom/android/okhttp/Route;->address:Lcom/android/okhttp/Address;
-Lcom/android/okhttp/Route;->getAddress()Lcom/android/okhttp/Address;
-Lcom/android/okhttp/Route;->getProxy()Ljava/net/Proxy;
-Lcom/android/okhttp/Route;->getSocketAddress()Ljava/net/InetSocketAddress;
-Lcom/android/okhttp/Route;->inetSocketAddress:Ljava/net/InetSocketAddress;
-Lcom/android/okhttp/Route;->proxy:Ljava/net/Proxy;
-Lcom/android/okhttp/Route;->requiresTunnel()Z
-Lcom/android/okhttp/TlsVersion;->forJavaName(Ljava/lang/String;)Lcom/android/okhttp/TlsVersion;
-Lcom/android/okhttp/TlsVersion;->javaName()Ljava/lang/String;
-Lcom/android/okhttp/TlsVersion;->javaName:Ljava/lang/String;
-Lcom/android/okhttp/TlsVersion;->SSL_3_0:Lcom/android/okhttp/TlsVersion;
-Lcom/android/okhttp/TlsVersion;->TLS_1_0:Lcom/android/okhttp/TlsVersion;
-Lcom/android/okhttp/TlsVersion;->TLS_1_1:Lcom/android/okhttp/TlsVersion;
-Lcom/android/okhttp/TlsVersion;->TLS_1_2:Lcom/android/okhttp/TlsVersion;
-Lcom/android/okhttp/TlsVersion;->valueOf(Ljava/lang/String;)Lcom/android/okhttp/TlsVersion;
-Lcom/android/okhttp/TlsVersion;->values()[Lcom/android/okhttp/TlsVersion;
Lcom/android/org/conscrypt/AbstractConscryptSocket;-><init>()V
Lcom/android/org/conscrypt/AbstractConscryptSocket;-><init>(Ljava/lang/String;I)V
Lcom/android/org/conscrypt/AbstractConscryptSocket;-><init>(Ljava/lang/String;ILjava/net/InetAddress;I)V
@@ -102641,9868 +94140,6 @@
Lcom/android/org/conscrypt/TrustManagerImpl;->TRUST_ANCHOR_COMPARATOR:Lcom/android/org/conscrypt/TrustManagerImpl$TrustAnchorComparator;
Lcom/android/org/conscrypt/TrustManagerImpl;->validator:Ljava/security/cert/CertPathValidator;
Lcom/android/org/conscrypt/TrustManagerImpl;->verifyChain(Ljava/util/List;Ljava/util/List;Ljava/lang/String;Z[B[B)Ljava/util/List;
-Ldalvik/bytecode/OpcodeInfo;-><init>()V
-Ldalvik/bytecode/OpcodeInfo;->isInvoke(I)Z
-Ldalvik/system/AllocationLimitError;-><init>()V
-Ldalvik/system/AllocationLimitError;-><init>(Ljava/lang/String;)V
-Ldalvik/system/AnnotatedStackTraceElement;-><init>()V
-Ldalvik/system/AnnotatedStackTraceElement;->blockedOn:Ljava/lang/Object;
-Ldalvik/system/AnnotatedStackTraceElement;->getBlockedOn()Ljava/lang/Object;
-Ldalvik/system/AnnotatedStackTraceElement;->getHeldLocks()[Ljava/lang/Object;
-Ldalvik/system/AnnotatedStackTraceElement;->getStackTraceElement()Ljava/lang/StackTraceElement;
-Ldalvik/system/AnnotatedStackTraceElement;->heldLocks:[Ljava/lang/Object;
-Ldalvik/system/AnnotatedStackTraceElement;->stackTraceElement:Ljava/lang/StackTraceElement;
-Ldalvik/system/BaseDexClassLoader$Reporter;->report(Ljava/util/List;Ljava/util/List;)V
-Ldalvik/system/BaseDexClassLoader;-><init>([Ljava/nio/ByteBuffer;Ljava/lang/ClassLoader;)V
-Ldalvik/system/BaseDexClassLoader;->addNativePath(Ljava/util/Collection;)V
-Ldalvik/system/BaseDexClassLoader;->getReporter()Ldalvik/system/BaseDexClassLoader$Reporter;
-Ldalvik/system/BaseDexClassLoader;->reportClassLoaderChain()V
-Ldalvik/system/BaseDexClassLoader;->reporter:Ldalvik/system/BaseDexClassLoader$Reporter;
-Ldalvik/system/BaseDexClassLoader;->setReporter(Ldalvik/system/BaseDexClassLoader$Reporter;)V
-Ldalvik/system/BlockGuard$BlockGuardPolicyException;-><init>(II)V
-Ldalvik/system/BlockGuard$BlockGuardPolicyException;->getPolicy()I
-Ldalvik/system/BlockGuard$BlockGuardPolicyException;->getPolicyViolation()I
-Ldalvik/system/BlockGuard$Policy;->getPolicyMask()I
-Ldalvik/system/BlockGuard$Policy;->onUnbufferedIO()V
-Ldalvik/system/BlockGuard$Policy;->onWriteToDisk()V
-Ldalvik/system/BlockGuard;-><init>()V
-Ldalvik/system/BlockGuard;->DISALLOW_DISK_READ:I
-Ldalvik/system/BlockGuard;->DISALLOW_DISK_WRITE:I
-Ldalvik/system/BlockGuard;->DISALLOW_NETWORK:I
-Ldalvik/system/BlockGuard;->PASS_RESTRICTIONS_VIA_RPC:I
-Ldalvik/system/BlockGuard;->PENALTY_DEATH:I
-Ldalvik/system/BlockGuard;->PENALTY_DIALOG:I
-Ldalvik/system/BlockGuard;->PENALTY_LOG:I
-Ldalvik/system/ClassExt;-><init>()V
-Ldalvik/system/ClassExt;->obsoleteDexCaches:[Ljava/lang/Object;
-Ldalvik/system/ClassExt;->obsoleteMethods:Ljava/lang/Object;
-Ldalvik/system/ClassExt;->originalDexFile:Ljava/lang/Object;
-Ldalvik/system/ClassExt;->verifyError:Ljava/lang/Object;
-Ldalvik/system/CloseGuard$DefaultReporter;->report(Ljava/lang/String;Ljava/lang/Throwable;)V
-Ldalvik/system/CloseGuard$Tracker;->close(Ljava/lang/Throwable;)V
-Ldalvik/system/CloseGuard$Tracker;->open(Ljava/lang/Throwable;)V
-Ldalvik/system/CloseGuard;->closerNameOrAllocationInfo:Ljava/lang/Object;
-Ldalvik/system/CloseGuard;->currentTracker:Ldalvik/system/CloseGuard$Tracker;
-Ldalvik/system/CloseGuard;->getReporter()Ldalvik/system/CloseGuard$Reporter;
-Ldalvik/system/CloseGuard;->getTracker()Ldalvik/system/CloseGuard$Tracker;
-Ldalvik/system/CloseGuard;->isEnabled()Z
-Ldalvik/system/CloseGuard;->reporter:Ldalvik/system/CloseGuard$Reporter;
-Ldalvik/system/CloseGuard;->setTracker(Ldalvik/system/CloseGuard$Tracker;)V
-Ldalvik/system/CloseGuard;->stackAndTrackingEnabled:Z
-Ldalvik/system/DalvikLogging;-><init>()V
-Ldalvik/system/DalvikLogging;->loggerNameToTag(Ljava/lang/String;)Ljava/lang/String;
-Ldalvik/system/DalvikLogHandler;->publish(Ljava/util/logging/Logger;Ljava/lang/String;Ljava/util/logging/Level;Ljava/lang/String;)V
-Ldalvik/system/DexFile$DFEnum;-><init>(Ldalvik/system/DexFile;)V
-Ldalvik/system/DexFile$DFEnum;->mIndex:I
-Ldalvik/system/DexFile$OptimizationInfo;-><init>(Ljava/lang/String;Ljava/lang/String;)V
-Ldalvik/system/DexFile$OptimizationInfo;->getReason()Ljava/lang/String;
-Ldalvik/system/DexFile$OptimizationInfo;->getStatus()Ljava/lang/String;
-Ldalvik/system/DexFile$OptimizationInfo;->reason:Ljava/lang/String;
-Ldalvik/system/DexFile$OptimizationInfo;->status:Ljava/lang/String;
-Ldalvik/system/DexFile;-><init>(Ljava/io/File;Ljava/lang/ClassLoader;[Ldalvik/system/DexPathList$Element;)V
-Ldalvik/system/DexFile;-><init>(Ljava/lang/String;Ljava/lang/ClassLoader;[Ldalvik/system/DexPathList$Element;)V
-Ldalvik/system/DexFile;-><init>(Ljava/lang/String;Ljava/lang/String;ILjava/lang/ClassLoader;[Ldalvik/system/DexPathList$Element;)V
-Ldalvik/system/DexFile;-><init>(Ljava/nio/ByteBuffer;)V
-Ldalvik/system/DexFile;->closeDexFile(Ljava/lang/Object;)Z
-Ldalvik/system/DexFile;->createCookieWithArray([BII)Ljava/lang/Object;
-Ldalvik/system/DexFile;->createCookieWithDirectBuffer(Ljava/nio/ByteBuffer;II)Ljava/lang/Object;
-Ldalvik/system/DexFile;->defineClass(Ljava/lang/String;Ljava/lang/ClassLoader;Ljava/lang/Object;Ldalvik/system/DexFile;Ljava/util/List;)Ljava/lang/Class;
-Ldalvik/system/DexFile;->defineClassNative(Ljava/lang/String;Ljava/lang/ClassLoader;Ljava/lang/Object;Ldalvik/system/DexFile;)Ljava/lang/Class;
-Ldalvik/system/DexFile;->DEX2OAT_FOR_BOOT_IMAGE:I
-Ldalvik/system/DexFile;->DEX2OAT_FOR_FILTER:I
-Ldalvik/system/DexFile;->DEX2OAT_FOR_RELOCATION:I
-Ldalvik/system/DexFile;->DEX2OAT_FROM_SCRATCH:I
-Ldalvik/system/DexFile;->getDexFileOptimizationInfo(Ljava/lang/String;Ljava/lang/String;)Ldalvik/system/DexFile$OptimizationInfo;
-Ldalvik/system/DexFile;->getDexFileOptimizationStatus(Ljava/lang/String;Ljava/lang/String;)[Ljava/lang/String;
-Ldalvik/system/DexFile;->getDexFileOutputPaths(Ljava/lang/String;Ljava/lang/String;)[Ljava/lang/String;
-Ldalvik/system/DexFile;->getDexFileStatus(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
-Ldalvik/system/DexFile;->getDexOptNeeded(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ZZ)I
-Ldalvik/system/DexFile;->getDexOptNeeded(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ZZ)I
-Ldalvik/system/DexFile;->getNonProfileGuidedCompilerFilter(Ljava/lang/String;)Ljava/lang/String;
-Ldalvik/system/DexFile;->getSafeModeCompilerFilter(Ljava/lang/String;)Ljava/lang/String;
-Ldalvik/system/DexFile;->getStaticSizeOfDexFile()J
-Ldalvik/system/DexFile;->getStaticSizeOfDexFile(Ljava/lang/Object;)J
-Ldalvik/system/DexFile;->isBackedByOatFile(Ljava/lang/Object;)Z
-Ldalvik/system/DexFile;->isProfileGuidedCompilerFilter(Ljava/lang/String;)Z
-Ldalvik/system/DexFile;->isValidCompilerFilter(Ljava/lang/String;)Z
-Ldalvik/system/DexFile;->NO_DEXOPT_NEEDED:I
-Ldalvik/system/DexFile;->openInMemoryDexFile(Ljava/nio/ByteBuffer;)Ljava/lang/Object;
-Ldalvik/system/DexFile;->setTrusted()V
-Ldalvik/system/DexFile;->setTrusted(Ljava/lang/Object;)V
-Ldalvik/system/DexPathList$Element;-><init>(Ldalvik/system/DexFile;)V
-Ldalvik/system/DexPathList$Element;-><init>(Ljava/io/File;)V
-Ldalvik/system/DexPathList$Element;->findClass(Ljava/lang/String;Ljava/lang/ClassLoader;Ljava/util/List;)Ljava/lang/Class;
-Ldalvik/system/DexPathList$Element;->findResource(Ljava/lang/String;)Ljava/net/URL;
-Ldalvik/system/DexPathList$Element;->getDexPath()Ljava/lang/String;
-Ldalvik/system/DexPathList$Element;->initialized:Z
-Ldalvik/system/DexPathList$Element;->maybeInit()V
-Ldalvik/system/DexPathList$Element;->urlHandler:Llibcore/io/ClassPathURLStreamHandler;
-Ldalvik/system/DexPathList$NativeLibraryElement;-><init>(Ljava/io/File;Ljava/lang/String;)V
-Ldalvik/system/DexPathList$NativeLibraryElement;->findNativeLibrary(Ljava/lang/String;)Ljava/lang/String;
-Ldalvik/system/DexPathList$NativeLibraryElement;->initialized:Z
-Ldalvik/system/DexPathList$NativeLibraryElement;->maybeInit()V
-Ldalvik/system/DexPathList$NativeLibraryElement;->urlHandler:Llibcore/io/ClassPathURLStreamHandler;
-Ldalvik/system/DexPathList$NativeLibraryElement;->zipDir:Ljava/lang/String;
-Ldalvik/system/DexPathList;-><init>(Ljava/lang/ClassLoader;Ljava/lang/String;Ljava/lang/String;Ljava/io/File;Z)V
-Ldalvik/system/DexPathList;-><init>(Ljava/lang/ClassLoader;[Ljava/nio/ByteBuffer;)V
-Ldalvik/system/DexPathList;->addDexPath(Ljava/lang/String;Ljava/io/File;Z)V
-Ldalvik/system/DexPathList;->DEX_SUFFIX:Ljava/lang/String;
-Ldalvik/system/DexPathList;->findClass(Ljava/lang/String;Ljava/util/List;)Ljava/lang/Class;
-Ldalvik/system/DexPathList;->findLibrary(Ljava/lang/String;)Ljava/lang/String;
-Ldalvik/system/DexPathList;->findResource(Ljava/lang/String;)Ljava/net/URL;
-Ldalvik/system/DexPathList;->findResources(Ljava/lang/String;)Ljava/util/Enumeration;
-Ldalvik/system/DexPathList;->getDexPaths()Ljava/util/List;
-Ldalvik/system/DexPathList;->getNativeLibraryDirectories()Ljava/util/List;
-Ldalvik/system/DexPathList;->makeDexElements(Ljava/util/List;Ljava/io/File;Ljava/util/List;Ljava/lang/ClassLoader;Z)[Ldalvik/system/DexPathList$Element;
-Ldalvik/system/DexPathList;->optimizedPathFor(Ljava/io/File;Ljava/io/File;)Ljava/lang/String;
-Ldalvik/system/DexPathList;->splitDexPath(Ljava/lang/String;)Ljava/util/List;
-Ldalvik/system/DexPathList;->zipSeparator:Ljava/lang/String;
-Ldalvik/system/EmulatedStackFrame$Range;-><init>(IIII)V
-Ldalvik/system/EmulatedStackFrame$Range;->all(Ljava/lang/invoke/MethodType;)Ldalvik/system/EmulatedStackFrame$Range;
-Ldalvik/system/EmulatedStackFrame$Range;->numBytes:I
-Ldalvik/system/EmulatedStackFrame$Range;->numReferences:I
-Ldalvik/system/EmulatedStackFrame$Range;->of(Ljava/lang/invoke/MethodType;II)Ldalvik/system/EmulatedStackFrame$Range;
-Ldalvik/system/EmulatedStackFrame$Range;->referencesStart:I
-Ldalvik/system/EmulatedStackFrame$Range;->stackFrameStart:I
-Ldalvik/system/EmulatedStackFrame$StackFrameAccessor;-><init>()V
-Ldalvik/system/EmulatedStackFrame$StackFrameAccessor;->argumentIdx:I
-Ldalvik/system/EmulatedStackFrame$StackFrameAccessor;->attach(Ldalvik/system/EmulatedStackFrame;)Ldalvik/system/EmulatedStackFrame$StackFrameAccessor;
-Ldalvik/system/EmulatedStackFrame$StackFrameAccessor;->attach(Ldalvik/system/EmulatedStackFrame;III)Ldalvik/system/EmulatedStackFrame$StackFrameAccessor;
-Ldalvik/system/EmulatedStackFrame$StackFrameAccessor;->checkType(Ljava/lang/Class;)V
-Ldalvik/system/EmulatedStackFrame$StackFrameAccessor;->copyNext(Ldalvik/system/EmulatedStackFrame$StackFrameReader;Ldalvik/system/EmulatedStackFrame$StackFrameWriter;Ljava/lang/Class;)V
-Ldalvik/system/EmulatedStackFrame$StackFrameAccessor;->frame:Ldalvik/system/EmulatedStackFrame;
-Ldalvik/system/EmulatedStackFrame$StackFrameAccessor;->frameBuf:Ljava/nio/ByteBuffer;
-Ldalvik/system/EmulatedStackFrame$StackFrameAccessor;->makeReturnValueAccessor()V
-Ldalvik/system/EmulatedStackFrame$StackFrameAccessor;->numArgs:I
-Ldalvik/system/EmulatedStackFrame$StackFrameAccessor;->referencesOffset:I
-Ldalvik/system/EmulatedStackFrame$StackFrameAccessor;->RETURN_VALUE_IDX:I
-Ldalvik/system/EmulatedStackFrame$StackFrameReader;-><init>()V
-Ldalvik/system/EmulatedStackFrame$StackFrameReader;->nextBoolean()Z
-Ldalvik/system/EmulatedStackFrame$StackFrameReader;->nextByte()B
-Ldalvik/system/EmulatedStackFrame$StackFrameReader;->nextChar()C
-Ldalvik/system/EmulatedStackFrame$StackFrameReader;->nextDouble()D
-Ldalvik/system/EmulatedStackFrame$StackFrameReader;->nextFloat()F
-Ldalvik/system/EmulatedStackFrame$StackFrameReader;->nextInt()I
-Ldalvik/system/EmulatedStackFrame$StackFrameReader;->nextLong()J
-Ldalvik/system/EmulatedStackFrame$StackFrameReader;->nextReference(Ljava/lang/Class;)Ljava/lang/Object;
-Ldalvik/system/EmulatedStackFrame$StackFrameReader;->nextShort()S
-Ldalvik/system/EmulatedStackFrame$StackFrameWriter;-><init>()V
-Ldalvik/system/EmulatedStackFrame$StackFrameWriter;->putNextBoolean(Z)V
-Ldalvik/system/EmulatedStackFrame$StackFrameWriter;->putNextByte(B)V
-Ldalvik/system/EmulatedStackFrame$StackFrameWriter;->putNextChar(C)V
-Ldalvik/system/EmulatedStackFrame$StackFrameWriter;->putNextDouble(D)V
-Ldalvik/system/EmulatedStackFrame$StackFrameWriter;->putNextFloat(F)V
-Ldalvik/system/EmulatedStackFrame$StackFrameWriter;->putNextInt(I)V
-Ldalvik/system/EmulatedStackFrame$StackFrameWriter;->putNextLong(J)V
-Ldalvik/system/EmulatedStackFrame$StackFrameWriter;->putNextReference(Ljava/lang/Object;Ljava/lang/Class;)V
-Ldalvik/system/EmulatedStackFrame$StackFrameWriter;->putNextShort(S)V
-Ldalvik/system/EmulatedStackFrame;-><init>(Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;[Ljava/lang/Object;[B)V
-Ldalvik/system/EmulatedStackFrame;->callsiteType:Ljava/lang/invoke/MethodType;
-Ldalvik/system/EmulatedStackFrame;->copyRangeTo(Ldalvik/system/EmulatedStackFrame;Ldalvik/system/EmulatedStackFrame$Range;II)V
-Ldalvik/system/EmulatedStackFrame;->copyReturnValueTo(Ldalvik/system/EmulatedStackFrame;)V
-Ldalvik/system/EmulatedStackFrame;->create(Ljava/lang/invoke/MethodType;)Ldalvik/system/EmulatedStackFrame;
-Ldalvik/system/EmulatedStackFrame;->getCallsiteType()Ljava/lang/invoke/MethodType;
-Ldalvik/system/EmulatedStackFrame;->getMethodType()Ljava/lang/invoke/MethodType;
-Ldalvik/system/EmulatedStackFrame;->getReference(ILjava/lang/Class;)Ljava/lang/Object;
-Ldalvik/system/EmulatedStackFrame;->getSize(Ljava/lang/Class;)I
-Ldalvik/system/EmulatedStackFrame;->is64BitPrimitive(Ljava/lang/Class;)Z
-Ldalvik/system/EmulatedStackFrame;->references:[Ljava/lang/Object;
-Ldalvik/system/EmulatedStackFrame;->setReference(ILjava/lang/Object;)V
-Ldalvik/system/EmulatedStackFrame;->setReturnValueTo(Ljava/lang/Object;)V
-Ldalvik/system/EmulatedStackFrame;->stackFrame:[B
-Ldalvik/system/EmulatedStackFrame;->type:Ljava/lang/invoke/MethodType;
-Ldalvik/system/PotentialDeadlockError;-><init>()V
-Ldalvik/system/PotentialDeadlockError;-><init>(Ljava/lang/String;)V
-Ldalvik/system/SocketTagger;-><init>()V
-Ldalvik/system/SocketTagger;->set(Ldalvik/system/SocketTagger;)V
-Ldalvik/system/SocketTagger;->tag(Ljava/io/FileDescriptor;)V
-Ldalvik/system/SocketTagger;->tag(Ljava/net/DatagramSocket;)V
-Ldalvik/system/SocketTagger;->tagger:Ldalvik/system/SocketTagger;
-Ldalvik/system/SocketTagger;->untag(Ljava/io/FileDescriptor;)V
-Ldalvik/system/SocketTagger;->untag(Ljava/net/DatagramSocket;)V
-Ldalvik/system/TemporaryDirectory;-><init>()V
-Ldalvik/system/TemporaryDirectory;->setUpDirectory(Ljava/io/File;)V
-Ldalvik/system/TemporaryDirectory;->setUpDirectory(Ljava/lang/String;)V
-Ldalvik/system/VMDebug;-><init>()V
-Ldalvik/system/VMDebug;->attachAgent(Ljava/lang/String;)V
-Ldalvik/system/VMDebug;->attachAgent(Ljava/lang/String;Ljava/lang/ClassLoader;)V
-Ldalvik/system/VMDebug;->cacheRegisterMap(Ljava/lang/String;)Z
-Ldalvik/system/VMDebug;->checkBufferSize(I)I
-Ldalvik/system/VMDebug;->countInstancesOfClass(Ljava/lang/Class;Z)J
-Ldalvik/system/VMDebug;->countInstancesOfClasses([Ljava/lang/Class;Z)[J
-Ldalvik/system/VMDebug;->crash()V
-Ldalvik/system/VMDebug;->dumpHprofData(Ljava/lang/String;)V
-Ldalvik/system/VMDebug;->dumpHprofData(Ljava/lang/String;I)V
-Ldalvik/system/VMDebug;->dumpHprofData(Ljava/lang/String;Ljava/io/FileDescriptor;)V
-Ldalvik/system/VMDebug;->dumpHprofDataDdms()V
-Ldalvik/system/VMDebug;->getAllocCount(I)I
-Ldalvik/system/VMDebug;->getHeapSpaceStats([J)V
-Ldalvik/system/VMDebug;->getInstancesOfClasses([Ljava/lang/Class;Z)[[Ljava/lang/Object;
-Ldalvik/system/VMDebug;->getInstructionCount([I)V
-Ldalvik/system/VMDebug;->getLoadedClassCount()I
-Ldalvik/system/VMDebug;->getMethodTracingMode()I
-Ldalvik/system/VMDebug;->getRuntimeStat(Ljava/lang/String;)Ljava/lang/String;
-Ldalvik/system/VMDebug;->getRuntimeStatInternal(I)Ljava/lang/String;
-Ldalvik/system/VMDebug;->getRuntimeStats()Ljava/util/Map;
-Ldalvik/system/VMDebug;->getRuntimeStatsInternal()[Ljava/lang/String;
-Ldalvik/system/VMDebug;->getVmFeatureList()[Ljava/lang/String;
-Ldalvik/system/VMDebug;->infopoint(I)V
-Ldalvik/system/VMDebug;->isDebuggingEnabled()Z
-Ldalvik/system/VMDebug;->KIND_ALLOCATED_BYTES:I
-Ldalvik/system/VMDebug;->KIND_ALLOCATED_OBJECTS:I
-Ldalvik/system/VMDebug;->KIND_ALL_COUNTS:I
-Ldalvik/system/VMDebug;->KIND_CLASS_INIT_COUNT:I
-Ldalvik/system/VMDebug;->KIND_CLASS_INIT_TIME:I
-Ldalvik/system/VMDebug;->KIND_EXT_ALLOCATED_BYTES:I
-Ldalvik/system/VMDebug;->KIND_EXT_ALLOCATED_OBJECTS:I
-Ldalvik/system/VMDebug;->KIND_EXT_FREED_BYTES:I
-Ldalvik/system/VMDebug;->KIND_EXT_FREED_OBJECTS:I
-Ldalvik/system/VMDebug;->KIND_FREED_BYTES:I
-Ldalvik/system/VMDebug;->KIND_FREED_OBJECTS:I
-Ldalvik/system/VMDebug;->KIND_GC_INVOCATIONS:I
-Ldalvik/system/VMDebug;->KIND_GLOBAL_ALLOCATED_BYTES:I
-Ldalvik/system/VMDebug;->KIND_GLOBAL_ALLOCATED_OBJECTS:I
-Ldalvik/system/VMDebug;->KIND_GLOBAL_CLASS_INIT_COUNT:I
-Ldalvik/system/VMDebug;->KIND_GLOBAL_CLASS_INIT_TIME:I
-Ldalvik/system/VMDebug;->KIND_GLOBAL_EXT_ALLOCATED_BYTES:I
-Ldalvik/system/VMDebug;->KIND_GLOBAL_EXT_ALLOCATED_OBJECTS:I
-Ldalvik/system/VMDebug;->KIND_GLOBAL_EXT_FREED_BYTES:I
-Ldalvik/system/VMDebug;->KIND_GLOBAL_EXT_FREED_OBJECTS:I
-Ldalvik/system/VMDebug;->KIND_GLOBAL_FREED_BYTES:I
-Ldalvik/system/VMDebug;->KIND_GLOBAL_FREED_OBJECTS:I
-Ldalvik/system/VMDebug;->KIND_GLOBAL_GC_INVOCATIONS:I
-Ldalvik/system/VMDebug;->KIND_THREAD_ALLOCATED_BYTES:I
-Ldalvik/system/VMDebug;->KIND_THREAD_ALLOCATED_OBJECTS:I
-Ldalvik/system/VMDebug;->KIND_THREAD_CLASS_INIT_COUNT:I
-Ldalvik/system/VMDebug;->KIND_THREAD_CLASS_INIT_TIME:I
-Ldalvik/system/VMDebug;->KIND_THREAD_EXT_ALLOCATED_BYTES:I
-Ldalvik/system/VMDebug;->KIND_THREAD_EXT_ALLOCATED_OBJECTS:I
-Ldalvik/system/VMDebug;->KIND_THREAD_EXT_FREED_BYTES:I
-Ldalvik/system/VMDebug;->KIND_THREAD_EXT_FREED_OBJECTS:I
-Ldalvik/system/VMDebug;->KIND_THREAD_FREED_BYTES:I
-Ldalvik/system/VMDebug;->KIND_THREAD_FREED_OBJECTS:I
-Ldalvik/system/VMDebug;->KIND_THREAD_GC_INVOCATIONS:I
-Ldalvik/system/VMDebug;->lastDebuggerActivity()J
-Ldalvik/system/VMDebug;->nativeAttachAgent(Ljava/lang/String;Ljava/lang/ClassLoader;)V
-Ldalvik/system/VMDebug;->printLoadedClasses(I)V
-Ldalvik/system/VMDebug;->resetAllocCount(I)V
-Ldalvik/system/VMDebug;->resetInstructionCount()V
-Ldalvik/system/VMDebug;->runtimeStatsMap:Ljava/util/HashMap;
-Ldalvik/system/VMDebug;->setAllocationLimit(I)I
-Ldalvik/system/VMDebug;->setGlobalAllocationLimit(I)I
-Ldalvik/system/VMDebug;->startAllocCounting()V
-Ldalvik/system/VMDebug;->startClassPrep()V
-Ldalvik/system/VMDebug;->startEmulatorTracing()V
-Ldalvik/system/VMDebug;->startGC()V
-Ldalvik/system/VMDebug;->startInstructionCounting()V
-Ldalvik/system/VMDebug;->startMethodTracing()V
-Ldalvik/system/VMDebug;->startMethodTracing(Ljava/lang/String;IIZI)V
-Ldalvik/system/VMDebug;->startMethodTracing(Ljava/lang/String;Ljava/io/FileDescriptor;IIZI)V
-Ldalvik/system/VMDebug;->startMethodTracing(Ljava/lang/String;Ljava/io/FileDescriptor;IIZIZ)V
-Ldalvik/system/VMDebug;->startMethodTracingDdms(IIZI)V
-Ldalvik/system/VMDebug;->startMethodTracingDdmsImpl(IIZI)V
-Ldalvik/system/VMDebug;->startMethodTracingFd(Ljava/lang/String;IIIZIZ)V
-Ldalvik/system/VMDebug;->startMethodTracingFilename(Ljava/lang/String;IIZI)V
-Ldalvik/system/VMDebug;->stopAllocCounting()V
-Ldalvik/system/VMDebug;->stopEmulatorTracing()V
-Ldalvik/system/VMDebug;->stopInstructionCounting()V
-Ldalvik/system/VMDebug;->stopMethodTracing()V
-Ldalvik/system/VMDebug;->threadCpuTimeNanos()J
-Ldalvik/system/VMDebug;->TRACE_COUNT_ALLOCS:I
-Ldalvik/system/VMRuntime;-><init>()V
-Ldalvik/system/VMRuntime;->ABI_TO_INSTRUCTION_SET_MAP:Ljava/util/Map;
-Ldalvik/system/VMRuntime;->bootClassPath()Ljava/lang/String;
-Ldalvik/system/VMRuntime;->clampGrowthLimit()V
-Ldalvik/system/VMRuntime;->classPath()Ljava/lang/String;
-Ldalvik/system/VMRuntime;->concurrentGC()V
-Ldalvik/system/VMRuntime;->didPruneDalvikCache()Z
-Ldalvik/system/VMRuntime;->disableJitCompilation()V
-Ldalvik/system/VMRuntime;->getTargetHeapUtilization()F
-Ldalvik/system/VMRuntime;->getTargetSdkVersion()I
-Ldalvik/system/VMRuntime;->hasUsedHiddenApi()Z
-Ldalvik/system/VMRuntime;->is64BitInstructionSet(Ljava/lang/String;)Z
-Ldalvik/system/VMRuntime;->isBootClassPathOnDisk(Ljava/lang/String;)Z
-Ldalvik/system/VMRuntime;->isCheckJniEnabled()Z
-Ldalvik/system/VMRuntime;->isDebuggerActive()Z
-Ldalvik/system/VMRuntime;->isJavaDebuggable()Z
-Ldalvik/system/VMRuntime;->isNativeDebuggable()Z
-Ldalvik/system/VMRuntime;->nativeSetTargetHeapUtilization(F)V
-Ldalvik/system/VMRuntime;->newUnpaddedArray(Ljava/lang/Class;I)Ljava/lang/Object;
-Ldalvik/system/VMRuntime;->nonSdkApiUsageConsumer:Ljava/util/function/Consumer;
-Ldalvik/system/VMRuntime;->preloadDexCaches()V
-Ldalvik/system/VMRuntime;->properties()[Ljava/lang/String;
-Ldalvik/system/VMRuntime;->registerAppInfo(Ljava/lang/String;[Ljava/lang/String;)V
-Ldalvik/system/VMRuntime;->registerSensitiveThread()V
-Ldalvik/system/VMRuntime;->requestConcurrentGC()V
-Ldalvik/system/VMRuntime;->requestHeapTrim()V
-Ldalvik/system/VMRuntime;->runHeapTasks()V
-Ldalvik/system/VMRuntime;->SDK_VERSION_CUR_DEVELOPMENT:I
-Ldalvik/system/VMRuntime;->setDedupeHiddenApiWarnings(Z)V
-Ldalvik/system/VMRuntime;->setHiddenApiAccessLogSamplingRate(I)V
-Ldalvik/system/VMRuntime;->setNonSdkApiUsageConsumer(Ljava/util/function/Consumer;)V
-Ldalvik/system/VMRuntime;->setProcessPackageName(Ljava/lang/String;)V
-Ldalvik/system/VMRuntime;->setSystemDaemonThreadPriority()V
-Ldalvik/system/VMRuntime;->startHeapTaskProcessor()V
-Ldalvik/system/VMRuntime;->startJitCompilation()V
-Ldalvik/system/VMRuntime;->stopHeapTaskProcessor()V
-Ldalvik/system/VMRuntime;->targetSdkVersion:I
-Ldalvik/system/VMRuntime;->THE_ONE:Ldalvik/system/VMRuntime;
-Ldalvik/system/VMRuntime;->trimHeap()V
-Ldalvik/system/VMRuntime;->updateProcessState(I)V
-Ldalvik/system/VMRuntime;->vmVersion()Ljava/lang/String;
-Ldalvik/system/VMStack;-><init>()V
-Ldalvik/system/VMStack;->getAnnotatedThreadStackTrace(Ljava/lang/Thread;)[Ldalvik/system/AnnotatedStackTraceElement;
-Ldalvik/system/VMStack;->getClosestUserClassLoader()Ljava/lang/ClassLoader;
-Ldalvik/system/VMStack;->getStackClass1()Ljava/lang/Class;
-Ldalvik/system/ZygoteHooks;-><init>()V
-Ldalvik/system/ZygoteHooks;->nativePostForkChild(JIZZLjava/lang/String;)V
-Ldalvik/system/ZygoteHooks;->nativePreFork()J
-Ldalvik/system/ZygoteHooks;->postForkChild(IZZLjava/lang/String;)V
-Ldalvik/system/ZygoteHooks;->postForkCommon()V
-Ldalvik/system/ZygoteHooks;->preFork()V
-Ldalvik/system/ZygoteHooks;->startZygoteNoThreadCreation()V
-Ldalvik/system/ZygoteHooks;->stopZygoteNoThreadCreation()V
-Ldalvik/system/ZygoteHooks;->token:J
-Ldalvik/system/ZygoteHooks;->waitUntilAllThreadsStopped()V
-Ljava/awt/font/NumericShaper$Range;->base:I
-Ljava/awt/font/NumericShaper$Range;->end:I
-Ljava/awt/font/NumericShaper$Range;->getDigitBase()I
-Ljava/awt/font/NumericShaper$Range;->getNumericBase()C
-Ljava/awt/font/NumericShaper$Range;->indexToRange(I)Ljava/awt/font/NumericShaper$Range;
-Ljava/awt/font/NumericShaper$Range;->inRange(I)Z
-Ljava/awt/font/NumericShaper$Range;->maskToRangeSet(I)Ljava/util/Set;
-Ljava/awt/font/NumericShaper$Range;->start:I
-Ljava/awt/font/NumericShaper$Range;->toRangeIndex(Ljava/awt/font/NumericShaper$Range;)I
-Ljava/awt/font/NumericShaper$Range;->toRangeMask(Ljava/util/Set;)I
-Ljava/awt/font/NumericShaper;-><init>(II)V
-Ljava/awt/font/NumericShaper;-><init>(Ljava/awt/font/NumericShaper$Range;Ljava/util/Set;)V
-Ljava/awt/font/NumericShaper;->ARABIC_KEY:I
-Ljava/awt/font/NumericShaper;->bases:[C
-Ljava/awt/font/NumericShaper;->BENGALI_KEY:I
-Ljava/awt/font/NumericShaper;->BSEARCH_THRESHOLD:I
-Ljava/awt/font/NumericShaper;->checkParams([CII)V
-Ljava/awt/font/NumericShaper;->contexts:[C
-Ljava/awt/font/NumericShaper;->CONTEXTUAL_MASK:I
-Ljava/awt/font/NumericShaper;->ctCache:I
-Ljava/awt/font/NumericShaper;->ctCacheLimit:I
-Ljava/awt/font/NumericShaper;->currentRange:Ljava/awt/font/NumericShaper$Range;
-Ljava/awt/font/NumericShaper;->DEVANAGARI_KEY:I
-Ljava/awt/font/NumericShaper;->EASTERN_ARABIC_KEY:I
-Ljava/awt/font/NumericShaper;->ETHIOPIC_KEY:I
-Ljava/awt/font/NumericShaper;->EUROPEAN_KEY:I
-Ljava/awt/font/NumericShaper;->getContextKey(C)I
-Ljava/awt/font/NumericShaper;->getHighBit(I)I
-Ljava/awt/font/NumericShaper;->getKeyFromMask(I)I
-Ljava/awt/font/NumericShaper;->GUJARATI_KEY:I
-Ljava/awt/font/NumericShaper;->GURMUKHI_KEY:I
-Ljava/awt/font/NumericShaper;->isStrongDirectional(C)Z
-Ljava/awt/font/NumericShaper;->KANNADA_KEY:I
-Ljava/awt/font/NumericShaper;->key:I
-Ljava/awt/font/NumericShaper;->KHMER_KEY:I
-Ljava/awt/font/NumericShaper;->LAO_KEY:I
-Ljava/awt/font/NumericShaper;->MALAYALAM_KEY:I
-Ljava/awt/font/NumericShaper;->mask:I
-Ljava/awt/font/NumericShaper;->MONGOLIAN_KEY:I
-Ljava/awt/font/NumericShaper;->MYANMAR_KEY:I
-Ljava/awt/font/NumericShaper;->NUM_KEYS:I
-Ljava/awt/font/NumericShaper;->ORIYA_KEY:I
-Ljava/awt/font/NumericShaper;->rangeArray:[Ljava/awt/font/NumericShaper$Range;
-Ljava/awt/font/NumericShaper;->rangeForCodePoint(I)Ljava/awt/font/NumericShaper$Range;
-Ljava/awt/font/NumericShaper;->rangeSet:Ljava/util/Set;
-Ljava/awt/font/NumericShaper;->search(I[III)I
-Ljava/awt/font/NumericShaper;->shapeContextually([CIII)V
-Ljava/awt/font/NumericShaper;->shapeContextually([CIILjava/awt/font/NumericShaper$Range;)V
-Ljava/awt/font/NumericShaper;->shapeNonContextually([CII)V
-Ljava/awt/font/NumericShaper;->shapingRange:Ljava/awt/font/NumericShaper$Range;
-Ljava/awt/font/NumericShaper;->stCache:I
-Ljava/awt/font/NumericShaper;->strongTable:[I
-Ljava/awt/font/NumericShaper;->TAMIL_KEY:I
-Ljava/awt/font/NumericShaper;->TELUGU_KEY:I
-Ljava/awt/font/NumericShaper;->THAI_KEY:I
-Ljava/awt/font/NumericShaper;->TIBETAN_KEY:I
-Ljava/awt/font/TextAttribute;->instanceMap:Ljava/util/Map;
-Ljava/beans/ChangeListenerMap;-><init>()V
-Ljava/beans/ChangeListenerMap;->add(Ljava/lang/String;Ljava/util/EventListener;)V
-Ljava/beans/ChangeListenerMap;->extract(Ljava/util/EventListener;)Ljava/util/EventListener;
-Ljava/beans/ChangeListenerMap;->get(Ljava/lang/String;)[Ljava/util/EventListener;
-Ljava/beans/ChangeListenerMap;->getEntries()Ljava/util/Set;
-Ljava/beans/ChangeListenerMap;->getListeners()[Ljava/util/EventListener;
-Ljava/beans/ChangeListenerMap;->getListeners(Ljava/lang/String;)[Ljava/util/EventListener;
-Ljava/beans/ChangeListenerMap;->hasListeners(Ljava/lang/String;)Z
-Ljava/beans/ChangeListenerMap;->map:Ljava/util/Map;
-Ljava/beans/ChangeListenerMap;->newArray(I)[Ljava/util/EventListener;
-Ljava/beans/ChangeListenerMap;->newProxy(Ljava/lang/String;Ljava/util/EventListener;)Ljava/util/EventListener;
-Ljava/beans/ChangeListenerMap;->remove(Ljava/lang/String;Ljava/util/EventListener;)V
-Ljava/beans/ChangeListenerMap;->set(Ljava/lang/String;[Ljava/util/EventListener;)V
-Ljava/beans/IndexedPropertyChangeEvent;->appendTo(Ljava/lang/StringBuilder;)V
-Ljava/beans/IndexedPropertyChangeEvent;->index:I
-Ljava/beans/PropertyChangeEvent;->appendTo(Ljava/lang/StringBuilder;)V
-Ljava/beans/PropertyChangeEvent;->newValue:Ljava/lang/Object;
-Ljava/beans/PropertyChangeEvent;->oldValue:Ljava/lang/Object;
-Ljava/beans/PropertyChangeEvent;->propagationId:Ljava/lang/Object;
-Ljava/beans/PropertyChangeEvent;->propertyName:Ljava/lang/String;
-Ljava/beans/PropertyChangeListenerProxy;->propertyName:Ljava/lang/String;
-Ljava/beans/PropertyChangeSupport$PropertyChangeListenerMap;-><init>()V
-Ljava/beans/PropertyChangeSupport$PropertyChangeListenerMap;->EMPTY:[Ljava/beans/PropertyChangeListener;
-Ljava/beans/PropertyChangeSupport$PropertyChangeListenerMap;->extract(Ljava/beans/PropertyChangeListener;)Ljava/beans/PropertyChangeListener;
-Ljava/beans/PropertyChangeSupport$PropertyChangeListenerMap;->newArray(I)[Ljava/beans/PropertyChangeListener;
-Ljava/beans/PropertyChangeSupport$PropertyChangeListenerMap;->newProxy(Ljava/lang/String;Ljava/beans/PropertyChangeListener;)Ljava/beans/PropertyChangeListener;
-Ljava/beans/PropertyChangeSupport;->fire([Ljava/beans/PropertyChangeListener;Ljava/beans/PropertyChangeEvent;)V
-Ljava/beans/PropertyChangeSupport;->map:Ljava/beans/PropertyChangeSupport$PropertyChangeListenerMap;
-Ljava/beans/PropertyChangeSupport;->source:Ljava/lang/Object;
-Ljava/io/BufferedInputStream;->bufUpdater:Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater;
-Ljava/io/BufferedInputStream;->DEFAULT_BUFFER_SIZE:I
-Ljava/io/BufferedInputStream;->fill()V
-Ljava/io/BufferedInputStream;->getBufIfOpen()[B
-Ljava/io/BufferedInputStream;->getInIfOpen()Ljava/io/InputStream;
-Ljava/io/BufferedInputStream;->MAX_BUFFER_SIZE:I
-Ljava/io/BufferedInputStream;->read1([BII)I
-Ljava/io/BufferedOutputStream;->flushBuffer()V
-Ljava/io/BufferedReader;->cb:[C
-Ljava/io/BufferedReader;->defaultCharBufferSize:I
-Ljava/io/BufferedReader;->defaultExpectedLineLength:I
-Ljava/io/BufferedReader;->ensureOpen()V
-Ljava/io/BufferedReader;->fill()V
-Ljava/io/BufferedReader;->in:Ljava/io/Reader;
-Ljava/io/BufferedReader;->INVALIDATED:I
-Ljava/io/BufferedReader;->markedChar:I
-Ljava/io/BufferedReader;->markedSkipLF:Z
-Ljava/io/BufferedReader;->nChars:I
-Ljava/io/BufferedReader;->nextChar:I
-Ljava/io/BufferedReader;->read1([CII)I
-Ljava/io/BufferedReader;->readAheadLimit:I
-Ljava/io/BufferedReader;->readLine(Z)Ljava/lang/String;
-Ljava/io/BufferedReader;->skipLF:Z
-Ljava/io/BufferedReader;->UNMARKED:I
-Ljava/io/BufferedWriter;->cb:[C
-Ljava/io/BufferedWriter;->defaultCharBufferSize:I
-Ljava/io/BufferedWriter;->ensureOpen()V
-Ljava/io/BufferedWriter;->flushBuffer()V
-Ljava/io/BufferedWriter;->lineSeparator:Ljava/lang/String;
-Ljava/io/BufferedWriter;->min(II)I
-Ljava/io/BufferedWriter;->nChars:I
-Ljava/io/BufferedWriter;->nextChar:I
-Ljava/io/BufferedWriter;->out:Ljava/io/Writer;
-Ljava/io/ByteArrayOutputStream;->ensureCapacity(I)V
-Ljava/io/ByteArrayOutputStream;->grow(I)V
-Ljava/io/ByteArrayOutputStream;->hugeCapacity(I)I
-Ljava/io/ByteArrayOutputStream;->MAX_ARRAY_SIZE:I
-Ljava/io/CharArrayReader;->ensureOpen()V
-Ljava/io/Console$LineReader;->cb:[C
-Ljava/io/Console$LineReader;->in:Ljava/io/Reader;
-Ljava/io/Console$LineReader;->leftoverLF:Z
-Ljava/io/Console$LineReader;->nChars:I
-Ljava/io/Console$LineReader;->nextChar:I
-Ljava/io/Console;-><init>()V
-Ljava/io/Console;-><init>(Ljava/io/InputStream;Ljava/io/OutputStream;)V
-Ljava/io/Console;->cons:Ljava/io/Console;
-Ljava/io/Console;->console()Ljava/io/Console;
-Ljava/io/Console;->cs:Ljava/nio/charset/Charset;
-Ljava/io/Console;->echo(Z)Z
-Ljava/io/Console;->echoOff:Z
-Ljava/io/Console;->formatter:Ljava/util/Formatter;
-Ljava/io/Console;->grow()[C
-Ljava/io/Console;->istty()Z
-Ljava/io/Console;->out:Ljava/io/Writer;
-Ljava/io/Console;->pw:Ljava/io/PrintWriter;
-Ljava/io/Console;->rcb:[C
-Ljava/io/Console;->reader:Ljava/io/Reader;
-Ljava/io/Console;->readline(Z)[C
-Ljava/io/Console;->readLock:Ljava/lang/Object;
-Ljava/io/Console;->writeLock:Ljava/lang/Object;
-Ljava/io/DataInputStream;->bytearr:[B
-Ljava/io/DataInputStream;->chararr:[C
-Ljava/io/DataInputStream;->lineBuffer:[C
-Ljava/io/DataInputStream;->readBuffer:[B
-Ljava/io/DataOutputStream;->bytearr:[B
-Ljava/io/DataOutputStream;->incCount(I)V
-Ljava/io/DataOutputStream;->writeBuffer:[B
-Ljava/io/DataOutputStream;->writeUTF(Ljava/lang/String;Ljava/io/DataOutput;)I
-Ljava/io/File$PathStatus;->CHECKED:Ljava/io/File$PathStatus;
-Ljava/io/File$PathStatus;->INVALID:Ljava/io/File$PathStatus;
-Ljava/io/File$PathStatus;->valueOf(Ljava/lang/String;)Ljava/io/File$PathStatus;
-Ljava/io/File$PathStatus;->values()[Ljava/io/File$PathStatus;
-Ljava/io/File$TempDirectory;-><init>()V
-Ljava/io/File$TempDirectory;->generateFile(Ljava/lang/String;Ljava/lang/String;Ljava/io/File;)Ljava/io/File;
-Ljava/io/File;-><init>(Ljava/lang/String;I)V
-Ljava/io/File;-><init>(Ljava/lang/String;Ljava/io/File;)V
-Ljava/io/File;->getPrefixLength()I
-Ljava/io/File;->isInvalid()Z
-Ljava/io/File;->PATH_OFFSET:J
-Ljava/io/File;->PREFIX_LENGTH_OFFSET:J
-Ljava/io/File;->slashify(Ljava/lang/String;Z)Ljava/lang/String;
-Ljava/io/File;->UNSAFE:Lsun/misc/Unsafe;
-Ljava/io/FileDescriptor;-><init>(I)V
-Ljava/io/FileDescriptor;->dupFd(I)Ljava/io/FileDescriptor;
-Ljava/io/FileDescriptor;->isSocket(I)Z
-Ljava/io/FileInputStream$UseManualSkipException;-><init>()V
-Ljava/io/FileInputStream;-><init>(Ljava/io/FileDescriptor;Z)V
-Ljava/io/FileInputStream;->available0()I
-Ljava/io/FileInputStream;->channel:Ljava/nio/channels/FileChannel;
-Ljava/io/FileInputStream;->closed:Z
-Ljava/io/FileInputStream;->closeLock:Ljava/lang/Object;
-Ljava/io/FileInputStream;->guard:Ldalvik/system/CloseGuard;
-Ljava/io/FileInputStream;->isFdOwner:Z
-Ljava/io/FileInputStream;->open(Ljava/lang/String;)V
-Ljava/io/FileInputStream;->open0(Ljava/lang/String;)V
-Ljava/io/FileInputStream;->path:Ljava/lang/String;
-Ljava/io/FileInputStream;->skip0(J)J
-Ljava/io/FileInputStream;->tracker:Llibcore/io/IoTracker;
-Ljava/io/FileNotFoundException;-><init>(Ljava/lang/String;Ljava/lang/String;)V
-Ljava/io/FileOutputStream;-><init>(Ljava/io/FileDescriptor;Z)V
-Ljava/io/FileOutputStream;->append:Z
-Ljava/io/FileOutputStream;->closed:Z
-Ljava/io/FileOutputStream;->closeLock:Ljava/lang/Object;
-Ljava/io/FileOutputStream;->guard:Ldalvik/system/CloseGuard;
-Ljava/io/FileOutputStream;->isFdOwner:Z
-Ljava/io/FileOutputStream;->open(Ljava/lang/String;Z)V
-Ljava/io/FileOutputStream;->open0(Ljava/lang/String;Z)V
-Ljava/io/FileOutputStream;->path:Ljava/lang/String;
-Ljava/io/FileOutputStream;->tracker:Llibcore/io/IoTracker;
-Ljava/io/FileSystem;-><init>()V
-Ljava/io/FileSystem;->ACCESS_EXECUTE:I
-Ljava/io/FileSystem;->ACCESS_OK:I
-Ljava/io/FileSystem;->ACCESS_READ:I
-Ljava/io/FileSystem;->ACCESS_WRITE:I
-Ljava/io/FileSystem;->BA_DIRECTORY:I
-Ljava/io/FileSystem;->BA_EXISTS:I
-Ljava/io/FileSystem;->BA_HIDDEN:I
-Ljava/io/FileSystem;->BA_REGULAR:I
-Ljava/io/FileSystem;->getBooleanProperty(Ljava/lang/String;Z)Z
-Ljava/io/FileSystem;->SPACE_FREE:I
-Ljava/io/FileSystem;->SPACE_TOTAL:I
-Ljava/io/FileSystem;->SPACE_USABLE:I
-Ljava/io/FileSystem;->useCanonCaches:Z
-Ljava/io/FileSystem;->useCanonPrefixCache:Z
-Ljava/io/InputStream;->MAX_SKIP_BUFFER_SIZE:I
-Ljava/io/InputStreamReader;->sd:Lsun/nio/cs/StreamDecoder;
-Ljava/io/InterruptedIOException;-><init>(Ljava/lang/String;Ljava/lang/Throwable;)V
-Ljava/io/InterruptedIOException;-><init>(Ljava/lang/Throwable;)V
-Ljava/io/LineNumberInputStream;->lineNumber:I
-Ljava/io/LineNumberInputStream;->markLineNumber:I
-Ljava/io/LineNumberInputStream;->markPushBack:I
-Ljava/io/LineNumberInputStream;->pushBack:I
-Ljava/io/LineNumberReader;->lineNumber:I
-Ljava/io/LineNumberReader;->markedLineNumber:I
-Ljava/io/LineNumberReader;->markedSkipLF:Z
-Ljava/io/LineNumberReader;->maxSkipBufferSize:I
-Ljava/io/LineNumberReader;->skipBuffer:[C
-Ljava/io/LineNumberReader;->skipLF:Z
-Ljava/io/ObjectInputStream$BlockDataInputStream;->blkmode:Z
-Ljava/io/ObjectInputStream$BlockDataInputStream;->buf:[B
-Ljava/io/ObjectInputStream$BlockDataInputStream;->cbuf:[C
-Ljava/io/ObjectInputStream$BlockDataInputStream;->CHAR_BUF_SIZE:I
-Ljava/io/ObjectInputStream$BlockDataInputStream;->currentBlockRemaining()I
-Ljava/io/ObjectInputStream$BlockDataInputStream;->din:Ljava/io/DataInputStream;
-Ljava/io/ObjectInputStream$BlockDataInputStream;->end:I
-Ljava/io/ObjectInputStream$BlockDataInputStream;->getBlockDataMode()Z
-Ljava/io/ObjectInputStream$BlockDataInputStream;->hbuf:[B
-Ljava/io/ObjectInputStream$BlockDataInputStream;->HEADER_BLOCKED:I
-Ljava/io/ObjectInputStream$BlockDataInputStream;->in:Ljava/io/ObjectInputStream$PeekInputStream;
-Ljava/io/ObjectInputStream$BlockDataInputStream;->MAX_BLOCK_SIZE:I
-Ljava/io/ObjectInputStream$BlockDataInputStream;->MAX_HEADER_SIZE:I
-Ljava/io/ObjectInputStream$BlockDataInputStream;->peek()I
-Ljava/io/ObjectInputStream$BlockDataInputStream;->peekByte()B
-Ljava/io/ObjectInputStream$BlockDataInputStream;->pos:I
-Ljava/io/ObjectInputStream$BlockDataInputStream;->read([BIIZ)I
-Ljava/io/ObjectInputStream$BlockDataInputStream;->readBlockHeader(Z)I
-Ljava/io/ObjectInputStream$BlockDataInputStream;->readBooleans([ZII)V
-Ljava/io/ObjectInputStream$BlockDataInputStream;->readChars([CII)V
-Ljava/io/ObjectInputStream$BlockDataInputStream;->readDoubles([DII)V
-Ljava/io/ObjectInputStream$BlockDataInputStream;->readFloats([FII)V
-Ljava/io/ObjectInputStream$BlockDataInputStream;->readFully([BIIZ)V
-Ljava/io/ObjectInputStream$BlockDataInputStream;->readInts([III)V
-Ljava/io/ObjectInputStream$BlockDataInputStream;->readLongs([JII)V
-Ljava/io/ObjectInputStream$BlockDataInputStream;->readLongUTF()Ljava/lang/String;
-Ljava/io/ObjectInputStream$BlockDataInputStream;->readShorts([SII)V
-Ljava/io/ObjectInputStream$BlockDataInputStream;->readUTFBody(J)Ljava/lang/String;
-Ljava/io/ObjectInputStream$BlockDataInputStream;->readUTFChar(Ljava/lang/StringBuilder;J)I
-Ljava/io/ObjectInputStream$BlockDataInputStream;->readUTFSpan(Ljava/lang/StringBuilder;J)J
-Ljava/io/ObjectInputStream$BlockDataInputStream;->refill()V
-Ljava/io/ObjectInputStream$BlockDataInputStream;->setBlockDataMode(Z)Z
-Ljava/io/ObjectInputStream$BlockDataInputStream;->skipBlockData()V
-Ljava/io/ObjectInputStream$BlockDataInputStream;->unread:I
-Ljava/io/ObjectInputStream$Caches;-><init>()V
-Ljava/io/ObjectInputStream$Caches;->subclassAudits:Ljava/util/concurrent/ConcurrentMap;
-Ljava/io/ObjectInputStream$Caches;->subclassAuditsQueue:Ljava/lang/ref/ReferenceQueue;
-Ljava/io/ObjectInputStream$GetFieldImpl;->desc:Ljava/io/ObjectStreamClass;
-Ljava/io/ObjectInputStream$GetFieldImpl;->getFieldOffset(Ljava/lang/String;Ljava/lang/Class;)I
-Ljava/io/ObjectInputStream$GetFieldImpl;->objHandles:[I
-Ljava/io/ObjectInputStream$GetFieldImpl;->objVals:[Ljava/lang/Object;
-Ljava/io/ObjectInputStream$GetFieldImpl;->primVals:[B
-Ljava/io/ObjectInputStream$GetFieldImpl;->readFields()V
-Ljava/io/ObjectInputStream$HandleTable$HandleList;-><init>()V
-Ljava/io/ObjectInputStream$HandleTable$HandleList;->add(I)V
-Ljava/io/ObjectInputStream$HandleTable$HandleList;->get(I)I
-Ljava/io/ObjectInputStream$HandleTable$HandleList;->list:[I
-Ljava/io/ObjectInputStream$HandleTable$HandleList;->size()I
-Ljava/io/ObjectInputStream$HandleTable$HandleList;->size:I
-Ljava/io/ObjectInputStream$HandleTable;-><init>(I)V
-Ljava/io/ObjectInputStream$HandleTable;->assign(Ljava/lang/Object;)I
-Ljava/io/ObjectInputStream$HandleTable;->clear()V
-Ljava/io/ObjectInputStream$HandleTable;->deps:[Ljava/io/ObjectInputStream$HandleTable$HandleList;
-Ljava/io/ObjectInputStream$HandleTable;->entries:[Ljava/lang/Object;
-Ljava/io/ObjectInputStream$HandleTable;->finish(I)V
-Ljava/io/ObjectInputStream$HandleTable;->grow()V
-Ljava/io/ObjectInputStream$HandleTable;->lookupException(I)Ljava/lang/ClassNotFoundException;
-Ljava/io/ObjectInputStream$HandleTable;->lookupObject(I)Ljava/lang/Object;
-Ljava/io/ObjectInputStream$HandleTable;->lowDep:I
-Ljava/io/ObjectInputStream$HandleTable;->markDependency(II)V
-Ljava/io/ObjectInputStream$HandleTable;->markException(ILjava/lang/ClassNotFoundException;)V
-Ljava/io/ObjectInputStream$HandleTable;->setObject(ILjava/lang/Object;)V
-Ljava/io/ObjectInputStream$HandleTable;->size()I
-Ljava/io/ObjectInputStream$HandleTable;->size:I
-Ljava/io/ObjectInputStream$HandleTable;->status:[B
-Ljava/io/ObjectInputStream$HandleTable;->STATUS_EXCEPTION:B
-Ljava/io/ObjectInputStream$HandleTable;->STATUS_OK:B
-Ljava/io/ObjectInputStream$HandleTable;->STATUS_UNKNOWN:B
-Ljava/io/ObjectInputStream$PeekInputStream;-><init>(Ljava/io/InputStream;)V
-Ljava/io/ObjectInputStream$PeekInputStream;->in:Ljava/io/InputStream;
-Ljava/io/ObjectInputStream$PeekInputStream;->peek()I
-Ljava/io/ObjectInputStream$PeekInputStream;->peekb:I
-Ljava/io/ObjectInputStream$PeekInputStream;->readFully([BII)V
-Ljava/io/ObjectInputStream$ValidationList$Callback;-><init>(Ljava/io/ObjectInputValidation;ILjava/io/ObjectInputStream$ValidationList$Callback;Ljava/security/AccessControlContext;)V
-Ljava/io/ObjectInputStream$ValidationList$Callback;->acc:Ljava/security/AccessControlContext;
-Ljava/io/ObjectInputStream$ValidationList$Callback;->next:Ljava/io/ObjectInputStream$ValidationList$Callback;
-Ljava/io/ObjectInputStream$ValidationList$Callback;->obj:Ljava/io/ObjectInputValidation;
-Ljava/io/ObjectInputStream$ValidationList$Callback;->priority:I
-Ljava/io/ObjectInputStream$ValidationList;-><init>()V
-Ljava/io/ObjectInputStream$ValidationList;->clear()V
-Ljava/io/ObjectInputStream$ValidationList;->doCallbacks()V
-Ljava/io/ObjectInputStream$ValidationList;->list:Ljava/io/ObjectInputStream$ValidationList$Callback;
-Ljava/io/ObjectInputStream$ValidationList;->register(Ljava/io/ObjectInputValidation;I)V
-Ljava/io/ObjectInputStream;->auditSubclass(Ljava/lang/Class;)Z
-Ljava/io/ObjectInputStream;->checkResolve(Ljava/lang/Object;)Ljava/lang/Object;
-Ljava/io/ObjectInputStream;->clear()V
-Ljava/io/ObjectInputStream;->cloneArray(Ljava/lang/Object;)Ljava/lang/Object;
-Ljava/io/ObjectInputStream;->closed:Z
-Ljava/io/ObjectInputStream;->curContext:Ljava/io/SerialCallbackContext;
-Ljava/io/ObjectInputStream;->defaultDataEnd:Z
-Ljava/io/ObjectInputStream;->defaultReadFields(Ljava/lang/Object;Ljava/io/ObjectStreamClass;)V
-Ljava/io/ObjectInputStream;->depth:I
-Ljava/io/ObjectInputStream;->enableOverride:Z
-Ljava/io/ObjectInputStream;->enableResolve:Z
-Ljava/io/ObjectInputStream;->handleReset()V
-Ljava/io/ObjectInputStream;->handles:Ljava/io/ObjectInputStream$HandleTable;
-Ljava/io/ObjectInputStream;->isCustomSubclass()Z
-Ljava/io/ObjectInputStream;->latestUserDefinedLoader()Ljava/lang/ClassLoader;
-Ljava/io/ObjectInputStream;->NULL_HANDLE:I
-Ljava/io/ObjectInputStream;->passHandle:I
-Ljava/io/ObjectInputStream;->primClasses:Ljava/util/HashMap;
-Ljava/io/ObjectInputStream;->primVals:[B
-Ljava/io/ObjectInputStream;->readArray(Z)Ljava/lang/Object;
-Ljava/io/ObjectInputStream;->readClass(Z)Ljava/lang/Class;
-Ljava/io/ObjectInputStream;->readClassDesc(Z)Ljava/io/ObjectStreamClass;
-Ljava/io/ObjectInputStream;->readEnum(Z)Ljava/lang/Enum;
-Ljava/io/ObjectInputStream;->readExternalData(Ljava/io/Externalizable;Ljava/io/ObjectStreamClass;)V
-Ljava/io/ObjectInputStream;->readFatalException()Ljava/io/IOException;
-Ljava/io/ObjectInputStream;->readHandle(Z)Ljava/lang/Object;
-Ljava/io/ObjectInputStream;->readNonProxyDesc(Z)Ljava/io/ObjectStreamClass;
-Ljava/io/ObjectInputStream;->readNull()Ljava/lang/Object;
-Ljava/io/ObjectInputStream;->readObject0(Z)Ljava/lang/Object;
-Ljava/io/ObjectInputStream;->readOrdinaryObject(Z)Ljava/lang/Object;
-Ljava/io/ObjectInputStream;->readProxyDesc(Z)Ljava/io/ObjectStreamClass;
-Ljava/io/ObjectInputStream;->readSerialData(Ljava/lang/Object;Ljava/io/ObjectStreamClass;)V
-Ljava/io/ObjectInputStream;->readString(Z)Ljava/lang/String;
-Ljava/io/ObjectInputStream;->readTypeString()Ljava/lang/String;
-Ljava/io/ObjectInputStream;->skipCustomData()V
-Ljava/io/ObjectInputStream;->unsharedMarker:Ljava/lang/Object;
-Ljava/io/ObjectInputStream;->verifySubclass()V
-Ljava/io/ObjectInputStream;->vlist:Ljava/io/ObjectInputStream$ValidationList;
-Ljava/io/ObjectOutputStream$BlockDataOutputStream;-><init>(Ljava/io/OutputStream;)V
-Ljava/io/ObjectOutputStream$BlockDataOutputStream;->blkmode:Z
-Ljava/io/ObjectOutputStream$BlockDataOutputStream;->buf:[B
-Ljava/io/ObjectOutputStream$BlockDataOutputStream;->cbuf:[C
-Ljava/io/ObjectOutputStream$BlockDataOutputStream;->CHAR_BUF_SIZE:I
-Ljava/io/ObjectOutputStream$BlockDataOutputStream;->dout:Ljava/io/DataOutputStream;
-Ljava/io/ObjectOutputStream$BlockDataOutputStream;->drain()V
-Ljava/io/ObjectOutputStream$BlockDataOutputStream;->getBlockDataMode()Z
-Ljava/io/ObjectOutputStream$BlockDataOutputStream;->getUTFLength(Ljava/lang/String;)J
-Ljava/io/ObjectOutputStream$BlockDataOutputStream;->hbuf:[B
-Ljava/io/ObjectOutputStream$BlockDataOutputStream;->MAX_BLOCK_SIZE:I
-Ljava/io/ObjectOutputStream$BlockDataOutputStream;->MAX_HEADER_SIZE:I
-Ljava/io/ObjectOutputStream$BlockDataOutputStream;->out:Ljava/io/OutputStream;
-Ljava/io/ObjectOutputStream$BlockDataOutputStream;->pos:I
-Ljava/io/ObjectOutputStream$BlockDataOutputStream;->setBlockDataMode(Z)Z
-Ljava/io/ObjectOutputStream$BlockDataOutputStream;->warnIfClosed()V
-Ljava/io/ObjectOutputStream$BlockDataOutputStream;->warnOnceWhenWriting:Z
-Ljava/io/ObjectOutputStream$BlockDataOutputStream;->write([BIIZ)V
-Ljava/io/ObjectOutputStream$BlockDataOutputStream;->writeBlockHeader(I)V
-Ljava/io/ObjectOutputStream$BlockDataOutputStream;->writeBooleans([ZII)V
-Ljava/io/ObjectOutputStream$BlockDataOutputStream;->writeChars([CII)V
-Ljava/io/ObjectOutputStream$BlockDataOutputStream;->writeDoubles([DII)V
-Ljava/io/ObjectOutputStream$BlockDataOutputStream;->writeFloats([FII)V
-Ljava/io/ObjectOutputStream$BlockDataOutputStream;->writeInts([III)V
-Ljava/io/ObjectOutputStream$BlockDataOutputStream;->writeLongs([JII)V
-Ljava/io/ObjectOutputStream$BlockDataOutputStream;->writeLongUTF(Ljava/lang/String;)V
-Ljava/io/ObjectOutputStream$BlockDataOutputStream;->writeLongUTF(Ljava/lang/String;J)V
-Ljava/io/ObjectOutputStream$BlockDataOutputStream;->writeShorts([SII)V
-Ljava/io/ObjectOutputStream$BlockDataOutputStream;->writeUTF(Ljava/lang/String;J)V
-Ljava/io/ObjectOutputStream$BlockDataOutputStream;->writeUTFBody(Ljava/lang/String;)V
-Ljava/io/ObjectOutputStream$Caches;-><init>()V
-Ljava/io/ObjectOutputStream$Caches;->subclassAudits:Ljava/util/concurrent/ConcurrentMap;
-Ljava/io/ObjectOutputStream$Caches;->subclassAuditsQueue:Ljava/lang/ref/ReferenceQueue;
-Ljava/io/ObjectOutputStream$DebugTraceInfoStack;-><init>()V
-Ljava/io/ObjectOutputStream$DebugTraceInfoStack;->clear()V
-Ljava/io/ObjectOutputStream$DebugTraceInfoStack;->pop()V
-Ljava/io/ObjectOutputStream$DebugTraceInfoStack;->push(Ljava/lang/String;)V
-Ljava/io/ObjectOutputStream$DebugTraceInfoStack;->stack:Ljava/util/List;
-Ljava/io/ObjectOutputStream$HandleTable;-><init>(IF)V
-Ljava/io/ObjectOutputStream$HandleTable;->assign(Ljava/lang/Object;)I
-Ljava/io/ObjectOutputStream$HandleTable;->clear()V
-Ljava/io/ObjectOutputStream$HandleTable;->growEntries()V
-Ljava/io/ObjectOutputStream$HandleTable;->growSpine()V
-Ljava/io/ObjectOutputStream$HandleTable;->hash(Ljava/lang/Object;)I
-Ljava/io/ObjectOutputStream$HandleTable;->insert(Ljava/lang/Object;I)V
-Ljava/io/ObjectOutputStream$HandleTable;->loadFactor:F
-Ljava/io/ObjectOutputStream$HandleTable;->lookup(Ljava/lang/Object;)I
-Ljava/io/ObjectOutputStream$HandleTable;->next:[I
-Ljava/io/ObjectOutputStream$HandleTable;->objs:[Ljava/lang/Object;
-Ljava/io/ObjectOutputStream$HandleTable;->size()I
-Ljava/io/ObjectOutputStream$HandleTable;->size:I
-Ljava/io/ObjectOutputStream$HandleTable;->spine:[I
-Ljava/io/ObjectOutputStream$HandleTable;->threshold:I
-Ljava/io/ObjectOutputStream$PutFieldImpl;->desc:Ljava/io/ObjectStreamClass;
-Ljava/io/ObjectOutputStream$PutFieldImpl;->getFieldOffset(Ljava/lang/String;Ljava/lang/Class;)I
-Ljava/io/ObjectOutputStream$PutFieldImpl;->objVals:[Ljava/lang/Object;
-Ljava/io/ObjectOutputStream$PutFieldImpl;->primVals:[B
-Ljava/io/ObjectOutputStream$PutFieldImpl;->writeFields()V
-Ljava/io/ObjectOutputStream$ReplaceTable;-><init>(IF)V
-Ljava/io/ObjectOutputStream$ReplaceTable;->assign(Ljava/lang/Object;Ljava/lang/Object;)V
-Ljava/io/ObjectOutputStream$ReplaceTable;->clear()V
-Ljava/io/ObjectOutputStream$ReplaceTable;->grow()V
-Ljava/io/ObjectOutputStream$ReplaceTable;->htab:Ljava/io/ObjectOutputStream$HandleTable;
-Ljava/io/ObjectOutputStream$ReplaceTable;->lookup(Ljava/lang/Object;)Ljava/lang/Object;
-Ljava/io/ObjectOutputStream$ReplaceTable;->reps:[Ljava/lang/Object;
-Ljava/io/ObjectOutputStream$ReplaceTable;->size()I
-Ljava/io/ObjectOutputStream;->auditSubclass(Ljava/lang/Class;)Z
-Ljava/io/ObjectOutputStream;->bout:Ljava/io/ObjectOutputStream$BlockDataOutputStream;
-Ljava/io/ObjectOutputStream;->clear()V
-Ljava/io/ObjectOutputStream;->curContext:Ljava/io/SerialCallbackContext;
-Ljava/io/ObjectOutputStream;->curPut:Ljava/io/ObjectOutputStream$PutFieldImpl;
-Ljava/io/ObjectOutputStream;->debugInfoStack:Ljava/io/ObjectOutputStream$DebugTraceInfoStack;
-Ljava/io/ObjectOutputStream;->defaultWriteFields(Ljava/lang/Object;Ljava/io/ObjectStreamClass;)V
-Ljava/io/ObjectOutputStream;->depth:I
-Ljava/io/ObjectOutputStream;->doublesToBytes([DI[BII)V
-Ljava/io/ObjectOutputStream;->enableOverride:Z
-Ljava/io/ObjectOutputStream;->enableReplace:Z
-Ljava/io/ObjectOutputStream;->extendedDebugInfo:Z
-Ljava/io/ObjectOutputStream;->floatsToBytes([FI[BII)V
-Ljava/io/ObjectOutputStream;->getProtocolVersion()I
-Ljava/io/ObjectOutputStream;->handles:Ljava/io/ObjectOutputStream$HandleTable;
-Ljava/io/ObjectOutputStream;->isCustomSubclass()Z
-Ljava/io/ObjectOutputStream;->primVals:[B
-Ljava/io/ObjectOutputStream;->subs:Ljava/io/ObjectOutputStream$ReplaceTable;
-Ljava/io/ObjectOutputStream;->verifySubclass()V
-Ljava/io/ObjectOutputStream;->writeArray(Ljava/lang/Object;Ljava/io/ObjectStreamClass;Z)V
-Ljava/io/ObjectOutputStream;->writeClass(Ljava/lang/Class;Z)V
-Ljava/io/ObjectOutputStream;->writeClassDesc(Ljava/io/ObjectStreamClass;Z)V
-Ljava/io/ObjectOutputStream;->writeEnum(Ljava/lang/Enum;Ljava/io/ObjectStreamClass;Z)V
-Ljava/io/ObjectOutputStream;->writeExternalData(Ljava/io/Externalizable;)V
-Ljava/io/ObjectOutputStream;->writeFatalException(Ljava/io/IOException;)V
-Ljava/io/ObjectOutputStream;->writeHandle(I)V
-Ljava/io/ObjectOutputStream;->writeNonProxyDesc(Ljava/io/ObjectStreamClass;Z)V
-Ljava/io/ObjectOutputStream;->writeNull()V
-Ljava/io/ObjectOutputStream;->writeObject0(Ljava/lang/Object;Z)V
-Ljava/io/ObjectOutputStream;->writeOrdinaryObject(Ljava/lang/Object;Ljava/io/ObjectStreamClass;Z)V
-Ljava/io/ObjectOutputStream;->writeProxyDesc(Ljava/io/ObjectStreamClass;Z)V
-Ljava/io/ObjectOutputStream;->writeSerialData(Ljava/lang/Object;Ljava/io/ObjectStreamClass;)V
-Ljava/io/ObjectOutputStream;->writeString(Ljava/lang/String;Z)V
-Ljava/io/ObjectOutputStream;->writeTypeString(Ljava/lang/String;)V
-Ljava/io/ObjectStreamClass$Caches;-><init>()V
-Ljava/io/ObjectStreamClass$Caches;->localDescs:Ljava/util/concurrent/ConcurrentMap;
-Ljava/io/ObjectStreamClass$Caches;->localDescsQueue:Ljava/lang/ref/ReferenceQueue;
-Ljava/io/ObjectStreamClass$Caches;->reflectors:Ljava/util/concurrent/ConcurrentMap;
-Ljava/io/ObjectStreamClass$Caches;->reflectorsQueue:Ljava/lang/ref/ReferenceQueue;
-Ljava/io/ObjectStreamClass$ClassDataSlot;-><init>(Ljava/io/ObjectStreamClass;Z)V
-Ljava/io/ObjectStreamClass$ClassDataSlot;->desc:Ljava/io/ObjectStreamClass;
-Ljava/io/ObjectStreamClass$ClassDataSlot;->hasData:Z
-Ljava/io/ObjectStreamClass$EntryFuture;-><init>()V
-Ljava/io/ObjectStreamClass$EntryFuture;->entry:Ljava/lang/Object;
-Ljava/io/ObjectStreamClass$EntryFuture;->get()Ljava/lang/Object;
-Ljava/io/ObjectStreamClass$EntryFuture;->getOwner()Ljava/lang/Thread;
-Ljava/io/ObjectStreamClass$EntryFuture;->owner:Ljava/lang/Thread;
-Ljava/io/ObjectStreamClass$EntryFuture;->set(Ljava/lang/Object;)Z
-Ljava/io/ObjectStreamClass$EntryFuture;->unset:Ljava/lang/Object;
-Ljava/io/ObjectStreamClass$ExceptionInfo;-><init>(Ljava/lang/String;Ljava/lang/String;)V
-Ljava/io/ObjectStreamClass$ExceptionInfo;->className:Ljava/lang/String;
-Ljava/io/ObjectStreamClass$ExceptionInfo;->message:Ljava/lang/String;
-Ljava/io/ObjectStreamClass$ExceptionInfo;->newInvalidClassException()Ljava/io/InvalidClassException;
-Ljava/io/ObjectStreamClass$FieldReflector;-><init>([Ljava/io/ObjectStreamField;)V
-Ljava/io/ObjectStreamClass$FieldReflector;->fields:[Ljava/io/ObjectStreamField;
-Ljava/io/ObjectStreamClass$FieldReflector;->getFields()[Ljava/io/ObjectStreamField;
-Ljava/io/ObjectStreamClass$FieldReflector;->getObjFieldValues(Ljava/lang/Object;[Ljava/lang/Object;)V
-Ljava/io/ObjectStreamClass$FieldReflector;->getPrimFieldValues(Ljava/lang/Object;[B)V
-Ljava/io/ObjectStreamClass$FieldReflector;->numPrimFields:I
-Ljava/io/ObjectStreamClass$FieldReflector;->offsets:[I
-Ljava/io/ObjectStreamClass$FieldReflector;->readKeys:[J
-Ljava/io/ObjectStreamClass$FieldReflector;->setObjFieldValues(Ljava/lang/Object;[Ljava/lang/Object;)V
-Ljava/io/ObjectStreamClass$FieldReflector;->setPrimFieldValues(Ljava/lang/Object;[B)V
-Ljava/io/ObjectStreamClass$FieldReflector;->typeCodes:[C
-Ljava/io/ObjectStreamClass$FieldReflector;->types:[Ljava/lang/Class;
-Ljava/io/ObjectStreamClass$FieldReflector;->unsafe:Lsun/misc/Unsafe;
-Ljava/io/ObjectStreamClass$FieldReflector;->writeKeys:[J
-Ljava/io/ObjectStreamClass$FieldReflectorKey;-><init>(Ljava/lang/Class;[Ljava/io/ObjectStreamField;Ljava/lang/ref/ReferenceQueue;)V
-Ljava/io/ObjectStreamClass$FieldReflectorKey;->hash:I
-Ljava/io/ObjectStreamClass$FieldReflectorKey;->nullClass:Z
-Ljava/io/ObjectStreamClass$FieldReflectorKey;->sigs:Ljava/lang/String;
-Ljava/io/ObjectStreamClass$MemberSignature;-><init>(Ljava/lang/reflect/Constructor;)V
-Ljava/io/ObjectStreamClass$MemberSignature;-><init>(Ljava/lang/reflect/Field;)V
-Ljava/io/ObjectStreamClass$MemberSignature;-><init>(Ljava/lang/reflect/Method;)V
-Ljava/io/ObjectStreamClass$MemberSignature;->member:Ljava/lang/reflect/Member;
-Ljava/io/ObjectStreamClass$MemberSignature;->name:Ljava/lang/String;
-Ljava/io/ObjectStreamClass$MemberSignature;->signature:Ljava/lang/String;
-Ljava/io/ObjectStreamClass$WeakClassKey;-><init>(Ljava/lang/Class;Ljava/lang/ref/ReferenceQueue;)V
-Ljava/io/ObjectStreamClass$WeakClassKey;->hash:I
-Ljava/io/ObjectStreamClass;-><init>()V
-Ljava/io/ObjectStreamClass;-><init>(Ljava/lang/Class;)V
-Ljava/io/ObjectStreamClass;->checkDefaultSerialize()V
-Ljava/io/ObjectStreamClass;->checkDeserialize()V
-Ljava/io/ObjectStreamClass;->checkSerialize()V
-Ljava/io/ObjectStreamClass;->cl:Ljava/lang/Class;
-Ljava/io/ObjectStreamClass;->classNamesEqual(Ljava/lang/String;Ljava/lang/String;)Z
-Ljava/io/ObjectStreamClass;->cons:Ljava/lang/reflect/Constructor;
-Ljava/io/ObjectStreamClass;->dataLayout:[Ljava/io/ObjectStreamClass$ClassDataSlot;
-Ljava/io/ObjectStreamClass;->defaultSerializeEx:Ljava/io/ObjectStreamClass$ExceptionInfo;
-Ljava/io/ObjectStreamClass;->deserializeEx:Ljava/io/ObjectStreamClass$ExceptionInfo;
-Ljava/io/ObjectStreamClass;->externalizable:Z
-Ljava/io/ObjectStreamClass;->fieldRefl:Ljava/io/ObjectStreamClass$FieldReflector;
-Ljava/io/ObjectStreamClass;->getClassDataLayout()[Ljava/io/ObjectStreamClass$ClassDataSlot;
-Ljava/io/ObjectStreamClass;->getClassDataLayout0()[Ljava/io/ObjectStreamClass$ClassDataSlot;
-Ljava/io/ObjectStreamClass;->getClassSignature(Ljava/lang/Class;)Ljava/lang/String;
-Ljava/io/ObjectStreamClass;->getDeclaredSerialFields(Ljava/lang/Class;)[Ljava/io/ObjectStreamField;
-Ljava/io/ObjectStreamClass;->getDeclaredSUID(Ljava/lang/Class;)Ljava/lang/Long;
-Ljava/io/ObjectStreamClass;->getDefaultSerialFields(Ljava/lang/Class;)[Ljava/io/ObjectStreamField;
-Ljava/io/ObjectStreamClass;->getExternalizableConstructor(Ljava/lang/Class;)Ljava/lang/reflect/Constructor;
-Ljava/io/ObjectStreamClass;->getField(Ljava/lang/String;Ljava/lang/Class;)Ljava/io/ObjectStreamField;
-Ljava/io/ObjectStreamClass;->getFields(Z)[Ljava/io/ObjectStreamField;
-Ljava/io/ObjectStreamClass;->getInheritableMethod(Ljava/lang/Class;Ljava/lang/String;[Ljava/lang/Class;Ljava/lang/Class;)Ljava/lang/reflect/Method;
-Ljava/io/ObjectStreamClass;->getMethodSignature([Ljava/lang/Class;Ljava/lang/Class;)Ljava/lang/String;
-Ljava/io/ObjectStreamClass;->getObjFieldValues(Ljava/lang/Object;[Ljava/lang/Object;)V
-Ljava/io/ObjectStreamClass;->getPackageName(Ljava/lang/Class;)Ljava/lang/String;
-Ljava/io/ObjectStreamClass;->getPrimFieldValues(Ljava/lang/Object;[B)V
-Ljava/io/ObjectStreamClass;->getPrivateMethod(Ljava/lang/Class;Ljava/lang/String;[Ljava/lang/Class;Ljava/lang/Class;)Ljava/lang/reflect/Method;
-Ljava/io/ObjectStreamClass;->getReflector([Ljava/io/ObjectStreamField;Ljava/io/ObjectStreamClass;)Ljava/io/ObjectStreamClass$FieldReflector;
-Ljava/io/ObjectStreamClass;->getResolveException()Ljava/lang/ClassNotFoundException;
-Ljava/io/ObjectStreamClass;->getSerialFields(Ljava/lang/Class;)[Ljava/io/ObjectStreamField;
-Ljava/io/ObjectStreamClass;->getSerializableConstructor(Ljava/lang/Class;)Ljava/lang/reflect/Constructor;
-Ljava/io/ObjectStreamClass;->getSuperDesc()Ljava/io/ObjectStreamClass;
-Ljava/io/ObjectStreamClass;->getVariantFor(Ljava/lang/Class;)Ljava/io/ObjectStreamClass;
-Ljava/io/ObjectStreamClass;->hasBlockExternalData()Z
-Ljava/io/ObjectStreamClass;->hasBlockExternalData:Z
-Ljava/io/ObjectStreamClass;->hasReadResolveMethod()Z
-Ljava/io/ObjectStreamClass;->hasStaticInitializer(Ljava/lang/Class;Z)Z
-Ljava/io/ObjectStreamClass;->hasWriteObjectData:Z
-Ljava/io/ObjectStreamClass;->hasWriteObjectMethod()Z
-Ljava/io/ObjectStreamClass;->hasWriteReplaceMethod()Z
-Ljava/io/ObjectStreamClass;->initialized:Z
-Ljava/io/ObjectStreamClass;->initNonProxy(Ljava/io/ObjectStreamClass;Ljava/lang/Class;Ljava/lang/ClassNotFoundException;Ljava/io/ObjectStreamClass;)V
-Ljava/io/ObjectStreamClass;->initProxy(Ljava/lang/Class;Ljava/lang/ClassNotFoundException;Ljava/io/ObjectStreamClass;)V
-Ljava/io/ObjectStreamClass;->invokeReadObject(Ljava/lang/Object;Ljava/io/ObjectInputStream;)V
-Ljava/io/ObjectStreamClass;->invokeReadObjectNoData(Ljava/lang/Object;)V
-Ljava/io/ObjectStreamClass;->invokeReadResolve(Ljava/lang/Object;)Ljava/lang/Object;
-Ljava/io/ObjectStreamClass;->invokeWriteObject(Ljava/lang/Object;Ljava/io/ObjectOutputStream;)V
-Ljava/io/ObjectStreamClass;->invokeWriteReplace(Ljava/lang/Object;)Ljava/lang/Object;
-Ljava/io/ObjectStreamClass;->isEnum()Z
-Ljava/io/ObjectStreamClass;->isEnum:Z
-Ljava/io/ObjectStreamClass;->isExternalizable()Z
-Ljava/io/ObjectStreamClass;->isInstantiable()Z
-Ljava/io/ObjectStreamClass;->isProxy()Z
-Ljava/io/ObjectStreamClass;->isProxy:Z
-Ljava/io/ObjectStreamClass;->isSerializable()Z
-Ljava/io/ObjectStreamClass;->localDesc:Ljava/io/ObjectStreamClass;
-Ljava/io/ObjectStreamClass;->lookup(Ljava/lang/Class;Z)Ljava/io/ObjectStreamClass;
-Ljava/io/ObjectStreamClass;->matchFields([Ljava/io/ObjectStreamField;Ljava/io/ObjectStreamClass;)[Ljava/io/ObjectStreamField;
-Ljava/io/ObjectStreamClass;->MAX_SDK_TARGET_FOR_CLINIT_UIDGEN_WORKAROUND:I
-Ljava/io/ObjectStreamClass;->name:Ljava/lang/String;
-Ljava/io/ObjectStreamClass;->numObjFields:I
-Ljava/io/ObjectStreamClass;->packageEquals(Ljava/lang/Class;Ljava/lang/Class;)Z
-Ljava/io/ObjectStreamClass;->primDataSize:I
-Ljava/io/ObjectStreamClass;->processQueue(Ljava/lang/ref/ReferenceQueue;Ljava/util/concurrent/ConcurrentMap;)V
-Ljava/io/ObjectStreamClass;->readNonProxy(Ljava/io/ObjectInputStream;)V
-Ljava/io/ObjectStreamClass;->readObjectMethod:Ljava/lang/reflect/Method;
-Ljava/io/ObjectStreamClass;->readObjectNoDataMethod:Ljava/lang/reflect/Method;
-Ljava/io/ObjectStreamClass;->readResolveMethod:Ljava/lang/reflect/Method;
-Ljava/io/ObjectStreamClass;->requireInitialized()V
-Ljava/io/ObjectStreamClass;->resolveEx:Ljava/lang/ClassNotFoundException;
-Ljava/io/ObjectStreamClass;->serializable:Z
-Ljava/io/ObjectStreamClass;->serializeEx:Ljava/io/ObjectStreamClass$ExceptionInfo;
-Ljava/io/ObjectStreamClass;->setObjFieldValues(Ljava/lang/Object;[Ljava/lang/Object;)V
-Ljava/io/ObjectStreamClass;->setPrimFieldValues(Ljava/lang/Object;[B)V
-Ljava/io/ObjectStreamClass;->suid:Ljava/lang/Long;
-Ljava/io/ObjectStreamClass;->superDesc:Ljava/io/ObjectStreamClass;
-Ljava/io/ObjectStreamClass;->throwMiscException(Ljava/lang/Throwable;)V
-Ljava/io/ObjectStreamClass;->writeNonProxy(Ljava/io/ObjectOutputStream;)V
-Ljava/io/ObjectStreamClass;->writeObjectMethod:Ljava/lang/reflect/Method;
-Ljava/io/ObjectStreamClass;->writeReplaceMethod:Ljava/lang/reflect/Method;
-Ljava/io/ObjectStreamField;-><init>(Ljava/lang/reflect/Field;ZZ)V
-Ljava/io/ObjectStreamField;-><init>(Ljava/lang/String;Ljava/lang/String;Z)V
-Ljava/io/ObjectStreamField;->field:Ljava/lang/reflect/Field;
-Ljava/io/ObjectStreamField;->getClassSignature(Ljava/lang/Class;)Ljava/lang/String;
-Ljava/io/ObjectStreamField;->getSignature()Ljava/lang/String;
-Ljava/io/ObjectStreamField;->name:Ljava/lang/String;
-Ljava/io/ObjectStreamField;->offset:I
-Ljava/io/ObjectStreamField;->signature:Ljava/lang/String;
-Ljava/io/ObjectStreamField;->type:Ljava/lang/Class;
-Ljava/io/ObjectStreamField;->unshared:Z
-Ljava/io/OptionalDataException;-><init>(I)V
-Ljava/io/OptionalDataException;-><init>(Z)V
-Ljava/io/OutputStreamWriter;->flushBuffer()V
-Ljava/io/OutputStreamWriter;->se:Lsun/nio/cs/StreamEncoder;
-Ljava/io/PipedInputStream;->awaitSpace()V
-Ljava/io/PipedInputStream;->checkStateForReceive()V
-Ljava/io/PipedInputStream;->closedByReader:Z
-Ljava/io/PipedInputStream;->closedByWriter:Z
-Ljava/io/PipedInputStream;->connected:Z
-Ljava/io/PipedInputStream;->DEFAULT_PIPE_SIZE:I
-Ljava/io/PipedInputStream;->initPipe(I)V
-Ljava/io/PipedInputStream;->readSide:Ljava/lang/Thread;
-Ljava/io/PipedInputStream;->receive([BII)V
-Ljava/io/PipedInputStream;->receivedLast()V
-Ljava/io/PipedInputStream;->writeSide:Ljava/lang/Thread;
-Ljava/io/PipedOutputStream;->sink:Ljava/io/PipedInputStream;
-Ljava/io/PipedReader;->buffer:[C
-Ljava/io/PipedReader;->closedByReader:Z
-Ljava/io/PipedReader;->closedByWriter:Z
-Ljava/io/PipedReader;->connected:Z
-Ljava/io/PipedReader;->DEFAULT_PIPE_SIZE:I
-Ljava/io/PipedReader;->in:I
-Ljava/io/PipedReader;->initPipe(I)V
-Ljava/io/PipedReader;->out:I
-Ljava/io/PipedReader;->readSide:Ljava/lang/Thread;
-Ljava/io/PipedReader;->receive(I)V
-Ljava/io/PipedReader;->receive([CII)V
-Ljava/io/PipedReader;->receivedLast()V
-Ljava/io/PipedReader;->writeSide:Ljava/lang/Thread;
-Ljava/io/PipedWriter;->closed:Z
-Ljava/io/PipedWriter;->sink:Ljava/io/PipedReader;
-Ljava/io/PrintStream;-><init>(ZLjava/io/OutputStream;)V
-Ljava/io/PrintStream;-><init>(ZLjava/io/OutputStream;Ljava/nio/charset/Charset;)V
-Ljava/io/PrintStream;-><init>(ZLjava/nio/charset/Charset;Ljava/io/OutputStream;)V
-Ljava/io/PrintStream;->autoFlush:Z
-Ljava/io/PrintStream;->charOut:Ljava/io/OutputStreamWriter;
-Ljava/io/PrintStream;->charset:Ljava/nio/charset/Charset;
-Ljava/io/PrintStream;->closing:Z
-Ljava/io/PrintStream;->ensureOpen()V
-Ljava/io/PrintStream;->formatter:Ljava/util/Formatter;
-Ljava/io/PrintStream;->getTextOut()Ljava/io/BufferedWriter;
-Ljava/io/PrintStream;->newLine()V
-Ljava/io/PrintStream;->requireNonNull(Ljava/lang/Object;Ljava/lang/String;)Ljava/lang/Object;
-Ljava/io/PrintStream;->textOut:Ljava/io/BufferedWriter;
-Ljava/io/PrintStream;->toCharset(Ljava/lang/String;)Ljava/nio/charset/Charset;
-Ljava/io/PrintStream;->trouble:Z
-Ljava/io/PrintStream;->write(Ljava/lang/String;)V
-Ljava/io/PrintStream;->write([C)V
-Ljava/io/PrintWriter;-><init>(Ljava/nio/charset/Charset;Ljava/io/File;)V
-Ljava/io/PrintWriter;->autoFlush:Z
-Ljava/io/PrintWriter;->ensureOpen()V
-Ljava/io/PrintWriter;->formatter:Ljava/util/Formatter;
-Ljava/io/PrintWriter;->lineSeparator:Ljava/lang/String;
-Ljava/io/PrintWriter;->newLine()V
-Ljava/io/PrintWriter;->psOut:Ljava/io/PrintStream;
-Ljava/io/PrintWriter;->toCharset(Ljava/lang/String;)Ljava/nio/charset/Charset;
-Ljava/io/PrintWriter;->trouble:Z
-Ljava/io/PushbackInputStream;->ensureOpen()V
-Ljava/io/PushbackReader;->buf:[C
-Ljava/io/PushbackReader;->ensureOpen()V
-Ljava/io/PushbackReader;->pos:I
-Ljava/io/RandomAccessFile;->channel:Ljava/nio/channels/FileChannel;
-Ljava/io/RandomAccessFile;->closed:Z
-Ljava/io/RandomAccessFile;->closeLock:Ljava/lang/Object;
-Ljava/io/RandomAccessFile;->flushAfterWrite:I
-Ljava/io/RandomAccessFile;->FLUSH_FDATASYNC:I
-Ljava/io/RandomAccessFile;->FLUSH_FSYNC:I
-Ljava/io/RandomAccessFile;->FLUSH_NONE:I
-Ljava/io/RandomAccessFile;->guard:Ldalvik/system/CloseGuard;
-Ljava/io/RandomAccessFile;->ioTracker:Llibcore/io/IoTracker;
-Ljava/io/RandomAccessFile;->maybeSync()V
-Ljava/io/RandomAccessFile;->mode:I
-Ljava/io/RandomAccessFile;->path:Ljava/lang/String;
-Ljava/io/RandomAccessFile;->readBytes([BII)I
-Ljava/io/RandomAccessFile;->rw:Z
-Ljava/io/RandomAccessFile;->scratch:[B
-Ljava/io/RandomAccessFile;->writeBytes([BII)V
-Ljava/io/Reader;->maxSkipBufferSize:I
-Ljava/io/Reader;->skipBuffer:[C
-Ljava/io/SequenceInputStream;->e:Ljava/util/Enumeration;
-Ljava/io/SequenceInputStream;->in:Ljava/io/InputStream;
-Ljava/io/SequenceInputStream;->nextStream()V
-Ljava/io/SerialCallbackContext;-><init>(Ljava/lang/Object;Ljava/io/ObjectStreamClass;)V
-Ljava/io/SerialCallbackContext;->check()V
-Ljava/io/SerialCallbackContext;->checkAndSetUsed()V
-Ljava/io/SerialCallbackContext;->desc:Ljava/io/ObjectStreamClass;
-Ljava/io/SerialCallbackContext;->getDesc()Ljava/io/ObjectStreamClass;
-Ljava/io/SerialCallbackContext;->getObj()Ljava/lang/Object;
-Ljava/io/SerialCallbackContext;->obj:Ljava/lang/Object;
-Ljava/io/SerialCallbackContext;->setUsed()V
-Ljava/io/SerialCallbackContext;->thread:Ljava/lang/Thread;
-Ljava/io/StreamTokenizer;-><init>()V
-Ljava/io/StreamTokenizer;->buf:[C
-Ljava/io/StreamTokenizer;->ctype:[B
-Ljava/io/StreamTokenizer;->CT_ALPHA:B
-Ljava/io/StreamTokenizer;->CT_COMMENT:B
-Ljava/io/StreamTokenizer;->CT_DIGIT:B
-Ljava/io/StreamTokenizer;->CT_QUOTE:B
-Ljava/io/StreamTokenizer;->CT_WHITESPACE:B
-Ljava/io/StreamTokenizer;->eolIsSignificantP:Z
-Ljava/io/StreamTokenizer;->forceLower:Z
-Ljava/io/StreamTokenizer;->input:Ljava/io/InputStream;
-Ljava/io/StreamTokenizer;->LINENO:I
-Ljava/io/StreamTokenizer;->NEED_CHAR:I
-Ljava/io/StreamTokenizer;->peekc:I
-Ljava/io/StreamTokenizer;->pushedBack:Z
-Ljava/io/StreamTokenizer;->read()I
-Ljava/io/StreamTokenizer;->reader:Ljava/io/Reader;
-Ljava/io/StreamTokenizer;->SKIP_LF:I
-Ljava/io/StreamTokenizer;->slashSlashCommentsP:Z
-Ljava/io/StreamTokenizer;->slashStarCommentsP:Z
-Ljava/io/StreamTokenizer;->TT_NOTHING:I
-Ljava/io/StringReader;->ensureOpen()V
-Ljava/io/StringReader;->length:I
-Ljava/io/StringReader;->mark:I
-Ljava/io/StringReader;->next:I
-Ljava/io/StringReader;->str:Ljava/lang/String;
-Ljava/io/StringWriter;->buf:Ljava/lang/StringBuffer;
-Ljava/io/Writer;->writeBuffer:[C
-Ljava/io/Writer;->WRITE_BUFFER_SIZE:I
-Ljava/lang/AbstractStringBuilder;-><init>()V
-Ljava/lang/AbstractStringBuilder;-><init>(I)V
-Ljava/lang/AbstractStringBuilder;->append(D)Ljava/lang/AbstractStringBuilder;
-Ljava/lang/AbstractStringBuilder;->append(F)Ljava/lang/AbstractStringBuilder;
-Ljava/lang/AbstractStringBuilder;->append(I)Ljava/lang/AbstractStringBuilder;
-Ljava/lang/AbstractStringBuilder;->append(J)Ljava/lang/AbstractStringBuilder;
-Ljava/lang/AbstractStringBuilder;->append(Ljava/lang/AbstractStringBuilder;)Ljava/lang/AbstractStringBuilder;
-Ljava/lang/AbstractStringBuilder;->append(Ljava/lang/Object;)Ljava/lang/AbstractStringBuilder;
-Ljava/lang/AbstractStringBuilder;->append(Ljava/lang/String;)Ljava/lang/AbstractStringBuilder;
-Ljava/lang/AbstractStringBuilder;->append(Ljava/lang/StringBuffer;)Ljava/lang/AbstractStringBuilder;
-Ljava/lang/AbstractStringBuilder;->append(Z)Ljava/lang/AbstractStringBuilder;
-Ljava/lang/AbstractStringBuilder;->append([C)Ljava/lang/AbstractStringBuilder;
-Ljava/lang/AbstractStringBuilder;->append([CII)Ljava/lang/AbstractStringBuilder;
-Ljava/lang/AbstractStringBuilder;->appendCodePoint(I)Ljava/lang/AbstractStringBuilder;
-Ljava/lang/AbstractStringBuilder;->appendNull()Ljava/lang/AbstractStringBuilder;
-Ljava/lang/AbstractStringBuilder;->capacity()I
-Ljava/lang/AbstractStringBuilder;->codePointAt(I)I
-Ljava/lang/AbstractStringBuilder;->codePointBefore(I)I
-Ljava/lang/AbstractStringBuilder;->codePointCount(II)I
-Ljava/lang/AbstractStringBuilder;->count:I
-Ljava/lang/AbstractStringBuilder;->delete(II)Ljava/lang/AbstractStringBuilder;
-Ljava/lang/AbstractStringBuilder;->deleteCharAt(I)Ljava/lang/AbstractStringBuilder;
-Ljava/lang/AbstractStringBuilder;->ensureCapacity(I)V
-Ljava/lang/AbstractStringBuilder;->ensureCapacityInternal(I)V
-Ljava/lang/AbstractStringBuilder;->getChars(II[CI)V
-Ljava/lang/AbstractStringBuilder;->getValue()[C
-Ljava/lang/AbstractStringBuilder;->hugeCapacity(I)I
-Ljava/lang/AbstractStringBuilder;->indexOf(Ljava/lang/String;)I
-Ljava/lang/AbstractStringBuilder;->indexOf(Ljava/lang/String;I)I
-Ljava/lang/AbstractStringBuilder;->insert(IC)Ljava/lang/AbstractStringBuilder;
-Ljava/lang/AbstractStringBuilder;->insert(ID)Ljava/lang/AbstractStringBuilder;
-Ljava/lang/AbstractStringBuilder;->insert(IF)Ljava/lang/AbstractStringBuilder;
-Ljava/lang/AbstractStringBuilder;->insert(II)Ljava/lang/AbstractStringBuilder;
-Ljava/lang/AbstractStringBuilder;->insert(IJ)Ljava/lang/AbstractStringBuilder;
-Ljava/lang/AbstractStringBuilder;->insert(ILjava/lang/CharSequence;)Ljava/lang/AbstractStringBuilder;
-Ljava/lang/AbstractStringBuilder;->insert(ILjava/lang/CharSequence;II)Ljava/lang/AbstractStringBuilder;
-Ljava/lang/AbstractStringBuilder;->insert(ILjava/lang/Object;)Ljava/lang/AbstractStringBuilder;
-Ljava/lang/AbstractStringBuilder;->insert(ILjava/lang/String;)Ljava/lang/AbstractStringBuilder;
-Ljava/lang/AbstractStringBuilder;->insert(IZ)Ljava/lang/AbstractStringBuilder;
-Ljava/lang/AbstractStringBuilder;->insert(I[C)Ljava/lang/AbstractStringBuilder;
-Ljava/lang/AbstractStringBuilder;->insert(I[CII)Ljava/lang/AbstractStringBuilder;
-Ljava/lang/AbstractStringBuilder;->lastIndexOf(Ljava/lang/String;)I
-Ljava/lang/AbstractStringBuilder;->lastIndexOf(Ljava/lang/String;I)I
-Ljava/lang/AbstractStringBuilder;->MAX_ARRAY_SIZE:I
-Ljava/lang/AbstractStringBuilder;->newCapacity(I)I
-Ljava/lang/AbstractStringBuilder;->offsetByCodePoints(II)I
-Ljava/lang/AbstractStringBuilder;->replace(IILjava/lang/String;)Ljava/lang/AbstractStringBuilder;
-Ljava/lang/AbstractStringBuilder;->reverse()Ljava/lang/AbstractStringBuilder;
-Ljava/lang/AbstractStringBuilder;->reverseAllValidSurrogatePairs()V
-Ljava/lang/AbstractStringBuilder;->setCharAt(IC)V
-Ljava/lang/AbstractStringBuilder;->setLength(I)V
-Ljava/lang/AbstractStringBuilder;->substring(I)Ljava/lang/String;
-Ljava/lang/AbstractStringBuilder;->substring(II)Ljava/lang/String;
-Ljava/lang/AbstractStringBuilder;->trimToSize()V
-Ljava/lang/AndroidHardcodedSystemProperties;-><init>()V
-Ljava/lang/AndroidHardcodedSystemProperties;->JAVA_VERSION:Ljava/lang/String;
-Ljava/lang/AndroidHardcodedSystemProperties;->STATIC_PROPERTIES:[[Ljava/lang/String;
-Ljava/lang/annotation/AnnotationTypeMismatchException;->element:Ljava/lang/reflect/Method;
-Ljava/lang/annotation/AnnotationTypeMismatchException;->foundType:Ljava/lang/String;
-Ljava/lang/annotation/IncompleteAnnotationException;->annotationType:Ljava/lang/Class;
-Ljava/lang/annotation/IncompleteAnnotationException;->elementName:Ljava/lang/String;
-Ljava/lang/ArrayIndexOutOfBoundsException;-><init>(II)V
-Ljava/lang/ArrayIndexOutOfBoundsException;-><init>(III)V
-Ljava/lang/AssertionError;-><init>(Ljava/lang/String;)V
-Ljava/lang/Byte$ByteCache;-><init>()V
-Ljava/lang/Byte$ByteCache;->cache:[Ljava/lang/Byte;
-Ljava/lang/Byte;->DIGITS:[C
-Ljava/lang/Byte;->UPPER_CASE_DIGITS:[C
-Ljava/lang/Character$CharacterCache;-><init>()V
-Ljava/lang/Character$CharacterCache;->cache:[Ljava/lang/Character;
-Ljava/lang/Character$Subset;->name:Ljava/lang/String;
-Ljava/lang/Character$UnicodeBlock;-><init>(Ljava/lang/String;)V
-Ljava/lang/Character$UnicodeBlock;-><init>(Ljava/lang/String;Ljava/lang/String;)V
-Ljava/lang/Character$UnicodeBlock;-><init>(Ljava/lang/String;Z)V
-Ljava/lang/Character$UnicodeBlock;->blocks:[Ljava/lang/Character$UnicodeBlock;
-Ljava/lang/Character$UnicodeBlock;->blockStarts:[I
-Ljava/lang/Character$UnicodeBlock;->map:Ljava/util/Map;
-Ljava/lang/Character$UnicodeScript;->aliases:Ljava/util/HashMap;
-Ljava/lang/Character$UnicodeScript;->scripts:[Ljava/lang/Character$UnicodeScript;
-Ljava/lang/Character$UnicodeScript;->scriptStarts:[I
-Ljava/lang/Character;->codePointAtImpl([CII)I
-Ljava/lang/Character;->codePointBeforeImpl([CII)I
-Ljava/lang/Character;->codePointCountImpl([CII)I
-Ljava/lang/Character;->digitImpl(II)I
-Ljava/lang/Character;->DIRECTIONALITY:[B
-Ljava/lang/Character;->ERROR:I
-Ljava/lang/Character;->getDirectionalityImpl(I)B
-Ljava/lang/Character;->getNameImpl(I)Ljava/lang/String;
-Ljava/lang/Character;->getNumericValueImpl(I)I
-Ljava/lang/Character;->getTypeImpl(I)I
-Ljava/lang/Character;->isAlphabeticImpl(I)Z
-Ljava/lang/Character;->isDefinedImpl(I)Z
-Ljava/lang/Character;->isDigitImpl(I)Z
-Ljava/lang/Character;->isIdentifierIgnorableImpl(I)Z
-Ljava/lang/Character;->isIdeographicImpl(I)Z
-Ljava/lang/Character;->isLetterImpl(I)Z
-Ljava/lang/Character;->isLetterOrDigitImpl(I)Z
-Ljava/lang/Character;->isLowerCaseImpl(I)Z
-Ljava/lang/Character;->isMirroredImpl(I)Z
-Ljava/lang/Character;->isSpaceCharImpl(I)Z
-Ljava/lang/Character;->isTitleCaseImpl(I)Z
-Ljava/lang/Character;->isUnicodeIdentifierPartImpl(I)Z
-Ljava/lang/Character;->isUnicodeIdentifierStartImpl(I)Z
-Ljava/lang/Character;->isUpperCaseImpl(I)Z
-Ljava/lang/Character;->isWhitespaceImpl(I)Z
-Ljava/lang/Character;->offsetByCodePointsImpl([CIIII)I
-Ljava/lang/Character;->toLowerCaseImpl(I)I
-Ljava/lang/Character;->toSurrogates(I[CI)V
-Ljava/lang/Character;->toTitleCaseImpl(I)I
-Ljava/lang/Character;->toUpperCaseImpl(I)I
-Ljava/lang/Class$Caches;-><init>()V
-Ljava/lang/Class$Caches;->genericInterfaces:Llibcore/util/BasicLruCache;
-Ljava/lang/Class;->ANNOTATION:I
-Ljava/lang/Class;->cannotCastMsg(Ljava/lang/Object;)Ljava/lang/String;
-Ljava/lang/Class;->classFlags:I
-Ljava/lang/Class;->classForName(Ljava/lang/String;ZLjava/lang/ClassLoader;)Ljava/lang/Class;
-Ljava/lang/Class;->classNameImpliesTopLevel()Z
-Ljava/lang/Class;->classSize:I
-Ljava/lang/Class;->componentType:Ljava/lang/Class;
-Ljava/lang/Class;->copiedMethodsOffset:S
-Ljava/lang/Class;->dexTypeIndex:I
-Ljava/lang/Class;->ENUM:I
-Ljava/lang/Class;->extData:Ldalvik/system/ClassExt;
-Ljava/lang/Class;->FINALIZABLE:I
-Ljava/lang/Class;->findInterfaceMethod(Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method;
-Ljava/lang/Class;->getAccessFlags()I
-Ljava/lang/Class;->getConstructor0([Ljava/lang/Class;I)Ljava/lang/reflect/Constructor;
-Ljava/lang/Class;->getDeclaredConstructorInternal([Ljava/lang/Class;)Ljava/lang/reflect/Constructor;
-Ljava/lang/Class;->getDeclaredConstructorsInternal(Z)[Ljava/lang/reflect/Constructor;
-Ljava/lang/Class;->getDeclaredFieldsUnchecked(Z)[Ljava/lang/reflect/Field;
-Ljava/lang/Class;->getDeclaredMethodInternal(Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method;
-Ljava/lang/Class;->getEnclosingConstructorNative()Ljava/lang/reflect/Constructor;
-Ljava/lang/Class;->getEnclosingMethodNative()Ljava/lang/reflect/Method;
-Ljava/lang/Class;->getEnumConstantsShared()[Ljava/lang/Object;
-Ljava/lang/Class;->getInnerClassFlags(I)I
-Ljava/lang/Class;->getInnerClassName()Ljava/lang/String;
-Ljava/lang/Class;->getInstanceMethod(Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method;
-Ljava/lang/Class;->getInterfacesInternal()[Ljava/lang/Class;
-Ljava/lang/Class;->getNameNative()Ljava/lang/String;
-Ljava/lang/Class;->getPackageName$()Ljava/lang/String;
-Ljava/lang/Class;->getPrimitiveClass(Ljava/lang/String;)Ljava/lang/Class;
-Ljava/lang/Class;->getPublicDeclaredFields()[Ljava/lang/reflect/Field;
-Ljava/lang/Class;->getPublicFieldRecursive(Ljava/lang/String;)Ljava/lang/reflect/Field;
-Ljava/lang/Class;->getPublicFieldsRecursive(Ljava/util/List;)V
-Ljava/lang/Class;->getPublicMethodRecursive(Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method;
-Ljava/lang/Class;->getPublicMethodsInternal(Ljava/util/List;)V
-Ljava/lang/Class;->getSignatureAnnotation()[Ljava/lang/String;
-Ljava/lang/Class;->getSignatureAttribute()Ljava/lang/String;
-Ljava/lang/Class;->iFields:J
-Ljava/lang/Class;->isDeclaredAnnotationPresent(Ljava/lang/Class;)Z
-Ljava/lang/Class;->isFinalizable()Z
-Ljava/lang/Class;->isLocalOrAnonymousClass()Z
-Ljava/lang/Class;->isProxy()Z
-Ljava/lang/Class;->methods:J
-Ljava/lang/Class;->numReferenceInstanceFields:I
-Ljava/lang/Class;->numReferenceStaticFields:I
-Ljava/lang/Class;->objectSizeAllocFastPath:I
-Ljava/lang/Class;->primitiveType:I
-Ljava/lang/Class;->referenceInstanceOffsets:I
-Ljava/lang/Class;->resolveName(Ljava/lang/String;)Ljava/lang/String;
-Ljava/lang/Class;->sFields:J
-Ljava/lang/Class;->superClass:Ljava/lang/Class;
-Ljava/lang/Class;->SYNTHETIC:I
-Ljava/lang/Class;->virtualMethodsOffset:S
-Ljava/lang/Class;->vtable:Ljava/lang/Object;
-Ljava/lang/ClassLoader$SystemClassLoader;-><init>()V
-Ljava/lang/ClassLoader$SystemClassLoader;->loader:Ljava/lang/ClassLoader;
-Ljava/lang/ClassLoader;-><init>(Ljava/lang/Void;Ljava/lang/ClassLoader;)V
-Ljava/lang/ClassLoader;->allocator:J
-Ljava/lang/ClassLoader;->checkCreateClassLoader()Ljava/lang/Void;
-Ljava/lang/ClassLoader;->classTable:J
-Ljava/lang/ClassLoader;->createSystemClassLoader()Ljava/lang/ClassLoader;
-Ljava/lang/ClassLoader;->findBootstrapClassOrNull(Ljava/lang/String;)Ljava/lang/Class;
-Ljava/lang/ClassLoader;->getBootstrapResource(Ljava/lang/String;)Ljava/net/URL;
-Ljava/lang/ClassLoader;->getBootstrapResources(Ljava/lang/String;)Ljava/util/Enumeration;
-Ljava/lang/ClassLoader;->packages:Ljava/util/HashMap;
-Ljava/lang/ClassLoader;->proxyCache:Ljava/util/Map;
-Ljava/lang/ClassNotFoundException;->ex:Ljava/lang/Throwable;
-Ljava/lang/Compiler;-><init>()V
-Ljava/lang/Daemons$Daemon;-><init>(Ljava/lang/String;)V
-Ljava/lang/Daemons$Daemon;->getStackTrace()[Ljava/lang/StackTraceElement;
-Ljava/lang/Daemons$Daemon;->interrupt()V
-Ljava/lang/Daemons$Daemon;->interrupt(Ljava/lang/Thread;)V
-Ljava/lang/Daemons$Daemon;->name:Ljava/lang/String;
-Ljava/lang/Daemons$Daemon;->postZygoteFork:Z
-Ljava/lang/Daemons$Daemon;->runInternal()V
-Ljava/lang/Daemons$Daemon;->startInternal()V
-Ljava/lang/Daemons$Daemon;->startPostZygoteFork()V
-Ljava/lang/Daemons$FinalizerDaemon;-><init>()V
-Ljava/lang/Daemons$FinalizerDaemon;->doFinalize(Ljava/lang/ref/FinalizerReference;)V
-Ljava/lang/Daemons$FinalizerDaemon;->progressCounter:Ljava/util/concurrent/atomic/AtomicInteger;
-Ljava/lang/Daemons$FinalizerDaemon;->queue:Ljava/lang/ref/ReferenceQueue;
-Ljava/lang/Daemons$FinalizerDaemon;->runInternal()V
-Ljava/lang/Daemons$FinalizerWatchdogDaemon;-><init>()V
-Ljava/lang/Daemons$FinalizerWatchdogDaemon;->finalizerTimedOut(Ljava/lang/Object;)V
-Ljava/lang/Daemons$FinalizerWatchdogDaemon;->getNeedToWork()Z
-Ljava/lang/Daemons$FinalizerWatchdogDaemon;->goToSleep()V
-Ljava/lang/Daemons$FinalizerWatchdogDaemon;->needToWork:Z
-Ljava/lang/Daemons$FinalizerWatchdogDaemon;->runInternal()V
-Ljava/lang/Daemons$FinalizerWatchdogDaemon;->sleepFor(J)Z
-Ljava/lang/Daemons$FinalizerWatchdogDaemon;->sleepUntilNeeded()Z
-Ljava/lang/Daemons$FinalizerWatchdogDaemon;->waitForFinalization()Ljava/lang/Object;
-Ljava/lang/Daemons$FinalizerWatchdogDaemon;->wakeUp()V
-Ljava/lang/Daemons$HeapTaskDaemon;-><init>()V
-Ljava/lang/Daemons$HeapTaskDaemon;->INSTANCE:Ljava/lang/Daemons$HeapTaskDaemon;
-Ljava/lang/Daemons$HeapTaskDaemon;->interrupt(Ljava/lang/Thread;)V
-Ljava/lang/Daemons$HeapTaskDaemon;->runInternal()V
-Ljava/lang/Daemons$ReferenceQueueDaemon;-><init>()V
-Ljava/lang/Daemons$ReferenceQueueDaemon;->runInternal()V
-Ljava/lang/Daemons;-><init>()V
-Ljava/lang/Daemons;->NANOS_PER_MILLI:I
-Ljava/lang/Daemons;->NANOS_PER_SECOND:I
-Ljava/lang/Daemons;->requestGC()V
-Ljava/lang/Daemons;->startPostZygoteFork()V
-Ljava/lang/Enum;->sharedConstantsCache:Llibcore/util/BasicLruCache;
-Ljava/lang/EnumConstantNotPresentException;->constantName:Ljava/lang/String;
-Ljava/lang/EnumConstantNotPresentException;->enumType:Ljava/lang/Class;
-Ljava/lang/ExceptionInInitializerError;->exception:Ljava/lang/Throwable;
-Ljava/lang/InheritableThreadLocal;->createMap(Ljava/lang/Thread;Ljava/lang/Object;)V
-Ljava/lang/InheritableThreadLocal;->getMap(Ljava/lang/Thread;)Ljava/lang/ThreadLocal$ThreadLocalMap;
-Ljava/lang/Integer$IntegerCache;-><init>()V
-Ljava/lang/Integer$IntegerCache;->cache:[Ljava/lang/Integer;
-Ljava/lang/Integer$IntegerCache;->high:I
-Ljava/lang/Integer$IntegerCache;->low:I
-Ljava/lang/Integer;->DigitOnes:[C
-Ljava/lang/Integer;->digits:[C
-Ljava/lang/Integer;->DigitTens:[C
-Ljava/lang/Integer;->formatUnsignedInt(II[CII)I
-Ljava/lang/Integer;->getChars(II[C)V
-Ljava/lang/Integer;->sizeTable:[I
-Ljava/lang/Integer;->SMALL_NEG_VALUES:[Ljava/lang/String;
-Ljava/lang/Integer;->SMALL_NONNEG_VALUES:[Ljava/lang/String;
-Ljava/lang/Integer;->stringSize(I)I
-Ljava/lang/Integer;->toUnsignedString0(II)Ljava/lang/String;
-Ljava/lang/invoke/CallSite;-><init>(Ljava/lang/invoke/MethodHandle;)V
-Ljava/lang/invoke/CallSite;-><init>(Ljava/lang/invoke/MethodType;)V
-Ljava/lang/invoke/CallSite;-><init>(Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;)V
-Ljava/lang/invoke/CallSite;->checkTargetChange(Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;)V
-Ljava/lang/invoke/CallSite;->getTargetVolatile()Ljava/lang/invoke/MethodHandle;
-Ljava/lang/invoke/CallSite;->GET_TARGET:Ljava/lang/invoke/MethodHandle;
-Ljava/lang/invoke/CallSite;->initializeGetTarget()V
-Ljava/lang/invoke/CallSite;->makeDynamicInvoker()Ljava/lang/invoke/MethodHandle;
-Ljava/lang/invoke/CallSite;->setTargetNormal(Ljava/lang/invoke/MethodHandle;)V
-Ljava/lang/invoke/CallSite;->setTargetVolatile(Ljava/lang/invoke/MethodHandle;)V
-Ljava/lang/invoke/CallSite;->target:Ljava/lang/invoke/MethodHandle;
-Ljava/lang/invoke/CallSite;->TARGET_OFFSET:J
-Ljava/lang/invoke/CallSite;->wrongTargetType(Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/WrongMethodTypeException;
-Ljava/lang/invoke/ConstantCallSite;->isFrozen:Z
-Ljava/lang/invoke/MethodHandle;-><init>(JILjava/lang/invoke/MethodType;)V
-Ljava/lang/invoke/MethodHandle;->artFieldOrMethod:J
-Ljava/lang/invoke/MethodHandle;->asCollectorChecks(Ljava/lang/Class;I)Z
-Ljava/lang/invoke/MethodHandle;->asSpreaderChecks(Ljava/lang/Class;I)Ljava/lang/invoke/MethodType;
-Ljava/lang/invoke/MethodHandle;->cachedSpreadInvoker:Ljava/lang/invoke/MethodHandle;
-Ljava/lang/invoke/MethodHandle;->duplicate()Ljava/lang/invoke/MethodHandle;
-Ljava/lang/invoke/MethodHandle;->getHandleKind()I
-Ljava/lang/invoke/MethodHandle;->handleKind:I
-Ljava/lang/invoke/MethodHandle;->IGET:I
-Ljava/lang/invoke/MethodHandle;->INVOKE_CALLSITE_TRANSFORM:I
-Ljava/lang/invoke/MethodHandle;->INVOKE_DIRECT:I
-Ljava/lang/invoke/MethodHandle;->INVOKE_INTERFACE:I
-Ljava/lang/invoke/MethodHandle;->INVOKE_STATIC:I
-Ljava/lang/invoke/MethodHandle;->INVOKE_SUPER:I
-Ljava/lang/invoke/MethodHandle;->INVOKE_TRANSFORM:I
-Ljava/lang/invoke/MethodHandle;->INVOKE_VAR_HANDLE:I
-Ljava/lang/invoke/MethodHandle;->INVOKE_VAR_HANDLE_EXACT:I
-Ljava/lang/invoke/MethodHandle;->INVOKE_VIRTUAL:I
-Ljava/lang/invoke/MethodHandle;->IPUT:I
-Ljava/lang/invoke/MethodHandle;->nominalType:Ljava/lang/invoke/MethodType;
-Ljava/lang/invoke/MethodHandle;->SGET:I
-Ljava/lang/invoke/MethodHandle;->spreadArrayChecks(Ljava/lang/Class;I)V
-Ljava/lang/invoke/MethodHandle;->SPUT:I
-Ljava/lang/invoke/MethodHandle;->transform(Ldalvik/system/EmulatedStackFrame;)V
-Ljava/lang/invoke/MethodHandle;->transformInternal(Ldalvik/system/EmulatedStackFrame;)V
-Ljava/lang/invoke/MethodHandle;->type:Ljava/lang/invoke/MethodType;
-Ljava/lang/invoke/MethodHandleImpl$HandleInfo;-><init>(Ljava/lang/reflect/Member;Ljava/lang/invoke/MethodHandle;)V
-Ljava/lang/invoke/MethodHandleImpl$HandleInfo;->handle:Ljava/lang/invoke/MethodHandle;
-Ljava/lang/invoke/MethodHandleImpl$HandleInfo;->member:Ljava/lang/reflect/Member;
-Ljava/lang/invoke/MethodHandleImpl;-><init>(JILjava/lang/invoke/MethodType;)V
-Ljava/lang/invoke/MethodHandleImpl;->getMemberInternal()Ljava/lang/reflect/Member;
-Ljava/lang/invoke/MethodHandleImpl;->info:Ljava/lang/invoke/MethodHandleImpl$HandleInfo;
-Ljava/lang/invoke/MethodHandleImpl;->reveal()Ljava/lang/invoke/MethodHandleInfo;
-Ljava/lang/invoke/MethodHandles$Lookup;-><init>(Ljava/lang/Class;)V
-Ljava/lang/invoke/MethodHandles$Lookup;->accessFailedMessage(Ljava/lang/Class;Ljava/lang/Class;I)Ljava/lang/String;
-Ljava/lang/invoke/MethodHandles$Lookup;->allowedModes:I
-Ljava/lang/invoke/MethodHandles$Lookup;->ALL_MODES:I
-Ljava/lang/invoke/MethodHandles$Lookup;->checkAccess(Ljava/lang/Class;Ljava/lang/Class;ILjava/lang/String;)V
-Ljava/lang/invoke/MethodHandles$Lookup;->checkReturnType(Ljava/lang/reflect/Method;Ljava/lang/invoke/MethodType;)V
-Ljava/lang/invoke/MethodHandles$Lookup;->checkSpecialCaller(Ljava/lang/Class;)V
-Ljava/lang/invoke/MethodHandles$Lookup;->checkUnprivilegedlookupClass(Ljava/lang/Class;I)V
-Ljava/lang/invoke/MethodHandles$Lookup;->commonFieldChecks(Ljava/lang/reflect/Field;Ljava/lang/Class;Ljava/lang/Class;ZZ)V
-Ljava/lang/invoke/MethodHandles$Lookup;->createMethodHandle(Ljava/lang/reflect/Method;ILjava/lang/invoke/MethodType;)Ljava/lang/invoke/MethodHandle;
-Ljava/lang/invoke/MethodHandles$Lookup;->createMethodHandleForConstructor(Ljava/lang/reflect/Constructor;)Ljava/lang/invoke/MethodHandle;
-Ljava/lang/invoke/MethodHandles$Lookup;->findAccessor(Ljava/lang/Class;Ljava/lang/String;Ljava/lang/Class;I)Ljava/lang/invoke/MethodHandle;
-Ljava/lang/invoke/MethodHandles$Lookup;->findAccessor(Ljava/lang/reflect/Field;Ljava/lang/Class;Ljava/lang/Class;IZ)Ljava/lang/invoke/MethodHandle;
-Ljava/lang/invoke/MethodHandles$Lookup;->findFieldOfType(Ljava/lang/Class;Ljava/lang/String;Ljava/lang/Class;)Ljava/lang/reflect/Field;
-Ljava/lang/invoke/MethodHandles$Lookup;->findSpecial(Ljava/lang/reflect/Method;Ljava/lang/invoke/MethodType;Ljava/lang/Class;Ljava/lang/Class;)Ljava/lang/invoke/MethodHandle;
-Ljava/lang/invoke/MethodHandles$Lookup;->findStaticVarHandle(Ljava/lang/Class;Ljava/lang/String;Ljava/lang/Class;)Ljava/lang/invoke/VarHandle;
-Ljava/lang/invoke/MethodHandles$Lookup;->findVarHandle(Ljava/lang/Class;Ljava/lang/String;Ljava/lang/Class;)Ljava/lang/invoke/VarHandle;
-Ljava/lang/invoke/MethodHandles$Lookup;->findVirtualForMH(Ljava/lang/String;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/MethodHandle;
-Ljava/lang/invoke/MethodHandles$Lookup;->findVirtualForVH(Ljava/lang/String;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/MethodHandle;
-Ljava/lang/invoke/MethodHandles$Lookup;->fixmods(I)I
-Ljava/lang/invoke/MethodHandles$Lookup;->hasPrivateAccess()Z
-Ljava/lang/invoke/MethodHandles$Lookup;->initMethodType(Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/MethodType;
-Ljava/lang/invoke/MethodHandles$Lookup;->lookupClass:Ljava/lang/Class;
-Ljava/lang/invoke/MethodHandles$Lookup;->PUBLIC_LOOKUP:Ljava/lang/invoke/MethodHandles$Lookup;
-Ljava/lang/invoke/MethodHandles$Lookup;->throwMakeAccessException(Ljava/lang/String;Ljava/lang/Object;)V
-Ljava/lang/invoke/MethodHandles$Lookup;->unreflectVarHandle(Ljava/lang/reflect/Field;)Ljava/lang/invoke/VarHandle;
-Ljava/lang/invoke/MethodHandles;-><init>()V
-Ljava/lang/invoke/MethodHandles;->arrayElementGetter([BI)B
-Ljava/lang/invoke/MethodHandles;->arrayElementGetter([CI)C
-Ljava/lang/invoke/MethodHandles;->arrayElementGetter([DI)D
-Ljava/lang/invoke/MethodHandles;->arrayElementGetter([FI)F
-Ljava/lang/invoke/MethodHandles;->arrayElementGetter([II)I
-Ljava/lang/invoke/MethodHandles;->arrayElementGetter([JI)J
-Ljava/lang/invoke/MethodHandles;->arrayElementGetter([SI)S
-Ljava/lang/invoke/MethodHandles;->arrayElementGetter([ZI)Z
-Ljava/lang/invoke/MethodHandles;->arrayElementSetter([BIB)V
-Ljava/lang/invoke/MethodHandles;->arrayElementSetter([CIC)V
-Ljava/lang/invoke/MethodHandles;->arrayElementSetter([DID)V
-Ljava/lang/invoke/MethodHandles;->arrayElementSetter([FIF)V
-Ljava/lang/invoke/MethodHandles;->arrayElementSetter([III)V
-Ljava/lang/invoke/MethodHandles;->arrayElementSetter([JIJ)V
-Ljava/lang/invoke/MethodHandles;->arrayElementSetter([SIS)V
-Ljava/lang/invoke/MethodHandles;->arrayElementSetter([ZIZ)V
-Ljava/lang/invoke/MethodHandles;->arrayElementVarHandle(Ljava/lang/Class;)Ljava/lang/invoke/VarHandle;
-Ljava/lang/invoke/MethodHandles;->byteArrayViewVarHandle(Ljava/lang/Class;Ljava/nio/ByteOrder;)Ljava/lang/invoke/VarHandle;
-Ljava/lang/invoke/MethodHandles;->byteBufferViewVarHandle(Ljava/lang/Class;Ljava/nio/ByteOrder;)Ljava/lang/invoke/VarHandle;
-Ljava/lang/invoke/MethodHandles;->checkClassIsArray(Ljava/lang/Class;)V
-Ljava/lang/invoke/MethodHandles;->checkTypeIsViewable(Ljava/lang/Class;)V
-Ljava/lang/invoke/MethodHandles;->collectArgumentsChecks(Ljava/lang/invoke/MethodHandle;ILjava/lang/invoke/MethodHandle;)Ljava/lang/invoke/MethodType;
-Ljava/lang/invoke/MethodHandles;->copyTypes(Ljava/util/List;)Ljava/util/List;
-Ljava/lang/invoke/MethodHandles;->dropArgumentChecks(Ljava/lang/invoke/MethodType;ILjava/util/List;)I
-Ljava/lang/invoke/MethodHandles;->explicitCastArgumentsChecks(Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)V
-Ljava/lang/invoke/MethodHandles;->filterArgumentChecks(Ljava/lang/invoke/MethodHandle;ILjava/lang/invoke/MethodHandle;)V
-Ljava/lang/invoke/MethodHandles;->filterArgumentsCheckArity(Ljava/lang/invoke/MethodHandle;I[Ljava/lang/invoke/MethodHandle;)V
-Ljava/lang/invoke/MethodHandles;->filterReturnValueChecks(Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;)V
-Ljava/lang/invoke/MethodHandles;->foldArgumentChecks(ILjava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;)Ljava/lang/Class;
-Ljava/lang/invoke/MethodHandles;->getMethodHandleImpl(Ljava/lang/invoke/MethodHandle;)Ljava/lang/invoke/MethodHandleImpl;
-Ljava/lang/invoke/MethodHandles;->identity(B)B
-Ljava/lang/invoke/MethodHandles;->identity(C)C
-Ljava/lang/invoke/MethodHandles;->identity(D)D
-Ljava/lang/invoke/MethodHandles;->identity(F)F
-Ljava/lang/invoke/MethodHandles;->identity(I)I
-Ljava/lang/invoke/MethodHandles;->identity(J)J
-Ljava/lang/invoke/MethodHandles;->identity(S)S
-Ljava/lang/invoke/MethodHandles;->identity(Z)Z
-Ljava/lang/invoke/MethodHandles;->insertArgumentsChecks(Ljava/lang/invoke/MethodHandle;II)[Ljava/lang/Class;
-Ljava/lang/invoke/MethodHandles;->methodHandleForVarHandleAccessor(Ljava/lang/invoke/VarHandle$AccessMode;Ljava/lang/invoke/MethodType;Z)Ljava/lang/invoke/MethodHandle;
-Ljava/lang/invoke/MethodHandles;->misMatchedTypes(Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;)Ljava/lang/RuntimeException;
-Ljava/lang/invoke/MethodHandles;->permuteArgumentChecks([ILjava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;)Z
-Ljava/lang/invoke/MethodHandles;->varHandleExactInvoker(Ljava/lang/invoke/VarHandle$AccessMode;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/MethodHandle;
-Ljava/lang/invoke/MethodHandles;->varHandleInvoker(Ljava/lang/invoke/VarHandle$AccessMode;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/MethodHandle;
-Ljava/lang/invoke/MethodType$ConcurrentWeakInternSet$WeakEntry;-><init>(Ljava/lang/Object;)V
-Ljava/lang/invoke/MethodType$ConcurrentWeakInternSet$WeakEntry;-><init>(Ljava/lang/Object;Ljava/lang/ref/ReferenceQueue;)V
-Ljava/lang/invoke/MethodType$ConcurrentWeakInternSet$WeakEntry;->hashcode:I
-Ljava/lang/invoke/MethodType$ConcurrentWeakInternSet;-><init>()V
-Ljava/lang/invoke/MethodType$ConcurrentWeakInternSet;->add(Ljava/lang/Object;)Ljava/lang/Object;
-Ljava/lang/invoke/MethodType$ConcurrentWeakInternSet;->expungeStaleElements()V
-Ljava/lang/invoke/MethodType$ConcurrentWeakInternSet;->get(Ljava/lang/Object;)Ljava/lang/Object;
-Ljava/lang/invoke/MethodType$ConcurrentWeakInternSet;->map:Ljava/util/concurrent/ConcurrentMap;
-Ljava/lang/invoke/MethodType$ConcurrentWeakInternSet;->stale:Ljava/lang/ref/ReferenceQueue;
-Ljava/lang/invoke/MethodType;-><init>()V
-Ljava/lang/invoke/MethodType;-><init>(Ljava/lang/Class;[Ljava/lang/Class;Z)V
-Ljava/lang/invoke/MethodType;-><init>([Ljava/lang/Class;Ljava/lang/Class;)V
-Ljava/lang/invoke/MethodType;->asCollectorType(Ljava/lang/Class;I)Ljava/lang/invoke/MethodType;
-Ljava/lang/invoke/MethodType;->asSpreaderType(Ljava/lang/Class;I)Ljava/lang/invoke/MethodType;
-Ljava/lang/invoke/MethodType;->basicType()Ljava/lang/invoke/MethodType;
-Ljava/lang/invoke/MethodType;->canConvert(Ljava/lang/Class;Ljava/lang/Class;)Z
-Ljava/lang/invoke/MethodType;->canConvertParameters([Ljava/lang/Class;[Ljava/lang/Class;)Z
-Ljava/lang/invoke/MethodType;->checkPtype(Ljava/lang/Class;)V
-Ljava/lang/invoke/MethodType;->checkPtypes([Ljava/lang/Class;)I
-Ljava/lang/invoke/MethodType;->checkRtype(Ljava/lang/Class;)V
-Ljava/lang/invoke/MethodType;->checkSlotCount(I)V
-Ljava/lang/invoke/MethodType;->equals(Ljava/lang/invoke/MethodType;)Z
-Ljava/lang/invoke/MethodType;->explicitCastEquivalentToAsType(Ljava/lang/Class;Ljava/lang/Class;)Z
-Ljava/lang/invoke/MethodType;->explicitCastEquivalentToAsType(Ljava/lang/invoke/MethodType;)Z
-Ljava/lang/invoke/MethodType;->form()Ljava/lang/invoke/MethodTypeForm;
-Ljava/lang/invoke/MethodType;->form:Ljava/lang/invoke/MethodTypeForm;
-Ljava/lang/invoke/MethodType;->internTable:Ljava/lang/invoke/MethodType$ConcurrentWeakInternSet;
-Ljava/lang/invoke/MethodType;->invokerType()Ljava/lang/invoke/MethodType;
-Ljava/lang/invoke/MethodType;->isConvertibleTo(Ljava/lang/invoke/MethodType;)Z
-Ljava/lang/invoke/MethodType;->isGeneric()Z
-Ljava/lang/invoke/MethodType;->lastParameterType()Ljava/lang/Class;
-Ljava/lang/invoke/MethodType;->leadingReferenceParameter()Ljava/lang/Class;
-Ljava/lang/invoke/MethodType;->listToArray(Ljava/util/List;)[Ljava/lang/Class;
-Ljava/lang/invoke/MethodType;->makeImpl(Ljava/lang/Class;[Ljava/lang/Class;Z)Ljava/lang/invoke/MethodType;
-Ljava/lang/invoke/MethodType;->MAX_JVM_ARITY:I
-Ljava/lang/invoke/MethodType;->MAX_MH_ARITY:I
-Ljava/lang/invoke/MethodType;->MAX_MH_INVOKER_ARITY:I
-Ljava/lang/invoke/MethodType;->methodDescriptor:Ljava/lang/String;
-Ljava/lang/invoke/MethodType;->MethodType_init(Ljava/lang/Class;[Ljava/lang/Class;)V
-Ljava/lang/invoke/MethodType;->newIndexOutOfBoundsException(Ljava/lang/Object;)Ljava/lang/IndexOutOfBoundsException;
-Ljava/lang/invoke/MethodType;->NO_PTYPES:[Ljava/lang/Class;
-Ljava/lang/invoke/MethodType;->objectOnlyTypes:[Ljava/lang/invoke/MethodType;
-Ljava/lang/invoke/MethodType;->parameterSlotCount()I
-Ljava/lang/invoke/MethodType;->ptypes()[Ljava/lang/Class;
-Ljava/lang/invoke/MethodType;->ptypes:[Ljava/lang/Class;
-Ljava/lang/invoke/MethodType;->ptypesOffset:J
-Ljava/lang/invoke/MethodType;->rtype()Ljava/lang/Class;
-Ljava/lang/invoke/MethodType;->rtype:Ljava/lang/Class;
-Ljava/lang/invoke/MethodType;->rtypeOffset:J
-Ljava/lang/invoke/MethodType;->toFieldDescriptorString(Ljava/lang/Class;)Ljava/lang/String;
-Ljava/lang/invoke/MethodType;->unwrapWithNoPrims(Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/MethodType;
-Ljava/lang/invoke/MethodType;->wrapAlt:Ljava/lang/invoke/MethodType;
-Ljava/lang/invoke/MethodType;->wrapWithPrims(Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/MethodType;
-Ljava/lang/invoke/MethodTypeForm;-><init>(Ljava/lang/invoke/MethodType;)V
-Ljava/lang/invoke/MethodTypeForm;->argCounts:J
-Ljava/lang/invoke/MethodTypeForm;->argSlotToParameter(I)I
-Ljava/lang/invoke/MethodTypeForm;->argToSlotTable:[I
-Ljava/lang/invoke/MethodTypeForm;->assertIsBasicType()Z
-Ljava/lang/invoke/MethodTypeForm;->basicType()Ljava/lang/invoke/MethodType;
-Ljava/lang/invoke/MethodTypeForm;->basicType:Ljava/lang/invoke/MethodType;
-Ljava/lang/invoke/MethodTypeForm;->canonicalize(Ljava/lang/Class;I)Ljava/lang/Class;
-Ljava/lang/invoke/MethodTypeForm;->canonicalize(Ljava/lang/invoke/MethodType;II)Ljava/lang/invoke/MethodType;
-Ljava/lang/invoke/MethodTypeForm;->canonicalizeAll([Ljava/lang/Class;I)[Ljava/lang/Class;
-Ljava/lang/invoke/MethodTypeForm;->ERASE:I
-Ljava/lang/invoke/MethodTypeForm;->erasedType()Ljava/lang/invoke/MethodType;
-Ljava/lang/invoke/MethodTypeForm;->erasedType:Ljava/lang/invoke/MethodType;
-Ljava/lang/invoke/MethodTypeForm;->findForm(Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/MethodTypeForm;
-Ljava/lang/invoke/MethodTypeForm;->hasLongPrimitives()Z
-Ljava/lang/invoke/MethodTypeForm;->hasNonVoidPrimitives()Z
-Ljava/lang/invoke/MethodTypeForm;->hasPrimitives()Z
-Ljava/lang/invoke/MethodTypeForm;->INTS:I
-Ljava/lang/invoke/MethodTypeForm;->longPrimitiveParameterCount()I
-Ljava/lang/invoke/MethodTypeForm;->longPrimitiveReturnCount()I
-Ljava/lang/invoke/MethodTypeForm;->LONGS:I
-Ljava/lang/invoke/MethodTypeForm;->NO_CHANGE:I
-Ljava/lang/invoke/MethodTypeForm;->pack(IIII)J
-Ljava/lang/invoke/MethodTypeForm;->parameterCount()I
-Ljava/lang/invoke/MethodTypeForm;->parameterSlotCount()I
-Ljava/lang/invoke/MethodTypeForm;->parameterToArgSlot(I)I
-Ljava/lang/invoke/MethodTypeForm;->primCounts:J
-Ljava/lang/invoke/MethodTypeForm;->primitiveParameterCount()I
-Ljava/lang/invoke/MethodTypeForm;->primitiveReturnCount()I
-Ljava/lang/invoke/MethodTypeForm;->RAW_RETURN:I
-Ljava/lang/invoke/MethodTypeForm;->returnCount()I
-Ljava/lang/invoke/MethodTypeForm;->returnSlotCount()I
-Ljava/lang/invoke/MethodTypeForm;->slotToArgTable:[I
-Ljava/lang/invoke/MethodTypeForm;->unpack(JI)C
-Ljava/lang/invoke/MethodTypeForm;->UNWRAP:I
-Ljava/lang/invoke/MethodTypeForm;->WRAP:I
-Ljava/lang/invoke/Transformers$AlwaysThrow;-><init>(Ljava/lang/Class;Ljava/lang/Class;)V
-Ljava/lang/invoke/Transformers$AlwaysThrow;->exceptionType:Ljava/lang/Class;
-Ljava/lang/invoke/Transformers$AlwaysThrow;->transform(Ldalvik/system/EmulatedStackFrame;)V
-Ljava/lang/invoke/Transformers$BindTo;-><init>(Ljava/lang/invoke/MethodHandle;Ljava/lang/Object;)V
-Ljava/lang/invoke/Transformers$BindTo;->delegate:Ljava/lang/invoke/MethodHandle;
-Ljava/lang/invoke/Transformers$BindTo;->range:Ldalvik/system/EmulatedStackFrame$Range;
-Ljava/lang/invoke/Transformers$BindTo;->receiver:Ljava/lang/Object;
-Ljava/lang/invoke/Transformers$BindTo;->transform(Ldalvik/system/EmulatedStackFrame;)V
-Ljava/lang/invoke/Transformers$CatchException;-><init>(Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;Ljava/lang/Class;)V
-Ljava/lang/invoke/Transformers$CatchException;->exType:Ljava/lang/Class;
-Ljava/lang/invoke/Transformers$CatchException;->handler:Ljava/lang/invoke/MethodHandle;
-Ljava/lang/invoke/Transformers$CatchException;->handlerArgsRange:Ldalvik/system/EmulatedStackFrame$Range;
-Ljava/lang/invoke/Transformers$CatchException;->target:Ljava/lang/invoke/MethodHandle;
-Ljava/lang/invoke/Transformers$CatchException;->transform(Ldalvik/system/EmulatedStackFrame;)V
-Ljava/lang/invoke/Transformers$CollectArguments;-><init>(Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;ILjava/lang/invoke/MethodType;)V
-Ljava/lang/invoke/Transformers$CollectArguments;->collector:Ljava/lang/invoke/MethodHandle;
-Ljava/lang/invoke/Transformers$CollectArguments;->collectorRange:Ldalvik/system/EmulatedStackFrame$Range;
-Ljava/lang/invoke/Transformers$CollectArguments;->pos:I
-Ljava/lang/invoke/Transformers$CollectArguments;->range1:Ldalvik/system/EmulatedStackFrame$Range;
-Ljava/lang/invoke/Transformers$CollectArguments;->range2:Ldalvik/system/EmulatedStackFrame$Range;
-Ljava/lang/invoke/Transformers$CollectArguments;->referencesOffset:I
-Ljava/lang/invoke/Transformers$CollectArguments;->stackFrameOffset:I
-Ljava/lang/invoke/Transformers$CollectArguments;->target:Ljava/lang/invoke/MethodHandle;
-Ljava/lang/invoke/Transformers$CollectArguments;->transform(Ldalvik/system/EmulatedStackFrame;)V
-Ljava/lang/invoke/Transformers$Collector;-><init>(Ljava/lang/invoke/MethodHandle;Ljava/lang/Class;I)V
-Ljava/lang/invoke/Transformers$Collector;->arrayOffset:I
-Ljava/lang/invoke/Transformers$Collector;->arrayTypeChar:C
-Ljava/lang/invoke/Transformers$Collector;->copyRange:Ldalvik/system/EmulatedStackFrame$Range;
-Ljava/lang/invoke/Transformers$Collector;->numArrayArgs:I
-Ljava/lang/invoke/Transformers$Collector;->target:Ljava/lang/invoke/MethodHandle;
-Ljava/lang/invoke/Transformers$Collector;->transform(Ldalvik/system/EmulatedStackFrame;)V
-Ljava/lang/invoke/Transformers$Constant;-><init>(Ljava/lang/Class;Ljava/lang/Object;)V
-Ljava/lang/invoke/Transformers$Constant;->asDouble:D
-Ljava/lang/invoke/Transformers$Constant;->asFloat:F
-Ljava/lang/invoke/Transformers$Constant;->asInt:I
-Ljava/lang/invoke/Transformers$Constant;->asLong:J
-Ljava/lang/invoke/Transformers$Constant;->asReference:Ljava/lang/Object;
-Ljava/lang/invoke/Transformers$Constant;->transform(Ldalvik/system/EmulatedStackFrame;)V
-Ljava/lang/invoke/Transformers$Constant;->type:Ljava/lang/Class;
-Ljava/lang/invoke/Transformers$Constant;->typeChar:C
-Ljava/lang/invoke/Transformers$Construct;-><init>(Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)V
-Ljava/lang/invoke/Transformers$Construct;->callerRange:Ldalvik/system/EmulatedStackFrame$Range;
-Ljava/lang/invoke/Transformers$Construct;->checkInstantiable(Ljava/lang/Class;)V
-Ljava/lang/invoke/Transformers$Construct;->constructorHandle:Ljava/lang/invoke/MethodHandle;
-Ljava/lang/invoke/Transformers$Construct;->getConstructorHandle()Ljava/lang/invoke/MethodHandle;
-Ljava/lang/invoke/Transformers$Construct;->isAbstract(Ljava/lang/Class;)Z
-Ljava/lang/invoke/Transformers$Construct;->transform(Ldalvik/system/EmulatedStackFrame;)V
-Ljava/lang/invoke/Transformers$DropArguments;-><init>(Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;II)V
-Ljava/lang/invoke/Transformers$DropArguments;->delegate:Ljava/lang/invoke/MethodHandle;
-Ljava/lang/invoke/Transformers$DropArguments;->range1:Ldalvik/system/EmulatedStackFrame$Range;
-Ljava/lang/invoke/Transformers$DropArguments;->range2:Ldalvik/system/EmulatedStackFrame$Range;
-Ljava/lang/invoke/Transformers$DropArguments;->transform(Ldalvik/system/EmulatedStackFrame;)V
-Ljava/lang/invoke/Transformers$ExplicitCastArguments;-><init>(Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)V
-Ljava/lang/invoke/Transformers$ExplicitCastArguments;->box(Ldalvik/system/EmulatedStackFrame$StackFrameReader;Ljava/lang/Class;Ldalvik/system/EmulatedStackFrame$StackFrameWriter;Ljava/lang/Class;)V
-Ljava/lang/invoke/Transformers$ExplicitCastArguments;->explicitCast(Ldalvik/system/EmulatedStackFrame$StackFrameReader;Ljava/lang/Class;Ldalvik/system/EmulatedStackFrame$StackFrameWriter;Ljava/lang/Class;)V
-Ljava/lang/invoke/Transformers$ExplicitCastArguments;->explicitCastArguments(Ldalvik/system/EmulatedStackFrame;Ldalvik/system/EmulatedStackFrame;)V
-Ljava/lang/invoke/Transformers$ExplicitCastArguments;->explicitCastFromBoolean(ZLdalvik/system/EmulatedStackFrame$StackFrameWriter;Ljava/lang/Class;)V
-Ljava/lang/invoke/Transformers$ExplicitCastArguments;->explicitCastPrimitives(Ldalvik/system/EmulatedStackFrame$StackFrameReader;Ljava/lang/Class;Ldalvik/system/EmulatedStackFrame$StackFrameWriter;Ljava/lang/Class;)V
-Ljava/lang/invoke/Transformers$ExplicitCastArguments;->explicitCastReturnValue(Ldalvik/system/EmulatedStackFrame;Ldalvik/system/EmulatedStackFrame;)V
-Ljava/lang/invoke/Transformers$ExplicitCastArguments;->explicitCastToBoolean(Ldalvik/system/EmulatedStackFrame$StackFrameReader;Ljava/lang/Class;Ldalvik/system/EmulatedStackFrame$StackFrameWriter;)V
-Ljava/lang/invoke/Transformers$ExplicitCastArguments;->readPrimitiveAsByte(Ldalvik/system/EmulatedStackFrame$StackFrameReader;Ljava/lang/Class;)B
-Ljava/lang/invoke/Transformers$ExplicitCastArguments;->readPrimitiveAsChar(Ldalvik/system/EmulatedStackFrame$StackFrameReader;Ljava/lang/Class;)C
-Ljava/lang/invoke/Transformers$ExplicitCastArguments;->readPrimitiveAsDouble(Ldalvik/system/EmulatedStackFrame$StackFrameReader;Ljava/lang/Class;)D
-Ljava/lang/invoke/Transformers$ExplicitCastArguments;->readPrimitiveAsFloat(Ldalvik/system/EmulatedStackFrame$StackFrameReader;Ljava/lang/Class;)F
-Ljava/lang/invoke/Transformers$ExplicitCastArguments;->readPrimitiveAsInt(Ldalvik/system/EmulatedStackFrame$StackFrameReader;Ljava/lang/Class;)I
-Ljava/lang/invoke/Transformers$ExplicitCastArguments;->readPrimitiveAsLong(Ldalvik/system/EmulatedStackFrame$StackFrameReader;Ljava/lang/Class;)J
-Ljava/lang/invoke/Transformers$ExplicitCastArguments;->readPrimitiveAsShort(Ldalvik/system/EmulatedStackFrame$StackFrameReader;Ljava/lang/Class;)S
-Ljava/lang/invoke/Transformers$ExplicitCastArguments;->target:Ljava/lang/invoke/MethodHandle;
-Ljava/lang/invoke/Transformers$ExplicitCastArguments;->throwUnexpectedType(Ljava/lang/Class;)V
-Ljava/lang/invoke/Transformers$ExplicitCastArguments;->toBoolean(B)Z
-Ljava/lang/invoke/Transformers$ExplicitCastArguments;->transform(Ldalvik/system/EmulatedStackFrame;)V
-Ljava/lang/invoke/Transformers$ExplicitCastArguments;->unbox(Ljava/lang/Object;Ljava/lang/Class;Ldalvik/system/EmulatedStackFrame$StackFrameWriter;Ljava/lang/Class;)V
-Ljava/lang/invoke/Transformers$ExplicitCastArguments;->unboxNonNull(Ljava/lang/Object;Ljava/lang/Class;Ldalvik/system/EmulatedStackFrame$StackFrameWriter;Ljava/lang/Class;)V
-Ljava/lang/invoke/Transformers$ExplicitCastArguments;->unboxNull(Ldalvik/system/EmulatedStackFrame$StackFrameWriter;Ljava/lang/Class;)V
-Ljava/lang/invoke/Transformers$FilterArguments;-><init>(Ljava/lang/invoke/MethodHandle;I[Ljava/lang/invoke/MethodHandle;)V
-Ljava/lang/invoke/Transformers$FilterArguments;->deriveType(Ljava/lang/invoke/MethodHandle;I[Ljava/lang/invoke/MethodHandle;)Ljava/lang/invoke/MethodType;
-Ljava/lang/invoke/Transformers$FilterArguments;->filters:[Ljava/lang/invoke/MethodHandle;
-Ljava/lang/invoke/Transformers$FilterArguments;->pos:I
-Ljava/lang/invoke/Transformers$FilterArguments;->target:Ljava/lang/invoke/MethodHandle;
-Ljava/lang/invoke/Transformers$FilterArguments;->transform(Ldalvik/system/EmulatedStackFrame;)V
-Ljava/lang/invoke/Transformers$FilterReturnValue;-><init>(Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;)V
-Ljava/lang/invoke/Transformers$FilterReturnValue;->allArgs:Ldalvik/system/EmulatedStackFrame$Range;
-Ljava/lang/invoke/Transformers$FilterReturnValue;->filter:Ljava/lang/invoke/MethodHandle;
-Ljava/lang/invoke/Transformers$FilterReturnValue;->target:Ljava/lang/invoke/MethodHandle;
-Ljava/lang/invoke/Transformers$FilterReturnValue;->transform(Ldalvik/system/EmulatedStackFrame;)V
-Ljava/lang/invoke/Transformers$FoldArguments;-><init>(Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;)V
-Ljava/lang/invoke/Transformers$FoldArguments;->combiner:Ljava/lang/invoke/MethodHandle;
-Ljava/lang/invoke/Transformers$FoldArguments;->combinerArgs:Ldalvik/system/EmulatedStackFrame$Range;
-Ljava/lang/invoke/Transformers$FoldArguments;->deriveType(Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;)Ljava/lang/invoke/MethodType;
-Ljava/lang/invoke/Transformers$FoldArguments;->referencesOffset:I
-Ljava/lang/invoke/Transformers$FoldArguments;->stackFrameOffset:I
-Ljava/lang/invoke/Transformers$FoldArguments;->target:Ljava/lang/invoke/MethodHandle;
-Ljava/lang/invoke/Transformers$FoldArguments;->targetArgs:Ldalvik/system/EmulatedStackFrame$Range;
-Ljava/lang/invoke/Transformers$FoldArguments;->transform(Ldalvik/system/EmulatedStackFrame;)V
-Ljava/lang/invoke/Transformers$GuardWithTest;-><init>(Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;)V
-Ljava/lang/invoke/Transformers$GuardWithTest;->fallback:Ljava/lang/invoke/MethodHandle;
-Ljava/lang/invoke/Transformers$GuardWithTest;->target:Ljava/lang/invoke/MethodHandle;
-Ljava/lang/invoke/Transformers$GuardWithTest;->test:Ljava/lang/invoke/MethodHandle;
-Ljava/lang/invoke/Transformers$GuardWithTest;->testArgsRange:Ldalvik/system/EmulatedStackFrame$Range;
-Ljava/lang/invoke/Transformers$GuardWithTest;->transform(Ldalvik/system/EmulatedStackFrame;)V
-Ljava/lang/invoke/Transformers$InsertArguments;-><init>(Ljava/lang/invoke/MethodHandle;I[Ljava/lang/Object;)V
-Ljava/lang/invoke/Transformers$InsertArguments;->pos:I
-Ljava/lang/invoke/Transformers$InsertArguments;->range1:Ldalvik/system/EmulatedStackFrame$Range;
-Ljava/lang/invoke/Transformers$InsertArguments;->range2:Ldalvik/system/EmulatedStackFrame$Range;
-Ljava/lang/invoke/Transformers$InsertArguments;->target:Ljava/lang/invoke/MethodHandle;
-Ljava/lang/invoke/Transformers$InsertArguments;->transform(Ldalvik/system/EmulatedStackFrame;)V
-Ljava/lang/invoke/Transformers$InsertArguments;->values:[Ljava/lang/Object;
-Ljava/lang/invoke/Transformers$Invoker;-><init>(Ljava/lang/invoke/MethodType;Z)V
-Ljava/lang/invoke/Transformers$Invoker;->copyRange:Ldalvik/system/EmulatedStackFrame$Range;
-Ljava/lang/invoke/Transformers$Invoker;->isExactInvoker:Z
-Ljava/lang/invoke/Transformers$Invoker;->targetType:Ljava/lang/invoke/MethodType;
-Ljava/lang/invoke/Transformers$Invoker;->transform(Ldalvik/system/EmulatedStackFrame;)V
-Ljava/lang/invoke/Transformers$PermuteArguments;-><init>(Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;[I)V
-Ljava/lang/invoke/Transformers$PermuteArguments;->reorder:[I
-Ljava/lang/invoke/Transformers$PermuteArguments;->target:Ljava/lang/invoke/MethodHandle;
-Ljava/lang/invoke/Transformers$PermuteArguments;->transform(Ldalvik/system/EmulatedStackFrame;)V
-Ljava/lang/invoke/Transformers$ReferenceArrayElementGetter;-><init>(Ljava/lang/Class;)V
-Ljava/lang/invoke/Transformers$ReferenceArrayElementGetter;->arrayClass:Ljava/lang/Class;
-Ljava/lang/invoke/Transformers$ReferenceArrayElementGetter;->transform(Ldalvik/system/EmulatedStackFrame;)V
-Ljava/lang/invoke/Transformers$ReferenceArrayElementSetter;-><init>(Ljava/lang/Class;)V
-Ljava/lang/invoke/Transformers$ReferenceArrayElementSetter;->arrayClass:Ljava/lang/Class;
-Ljava/lang/invoke/Transformers$ReferenceArrayElementSetter;->transform(Ldalvik/system/EmulatedStackFrame;)V
-Ljava/lang/invoke/Transformers$ReferenceIdentity;-><init>(Ljava/lang/Class;)V
-Ljava/lang/invoke/Transformers$ReferenceIdentity;->transform(Ldalvik/system/EmulatedStackFrame;)V
-Ljava/lang/invoke/Transformers$ReferenceIdentity;->type:Ljava/lang/Class;
-Ljava/lang/invoke/Transformers$Spreader;-><init>(Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;I)V
-Ljava/lang/invoke/Transformers$Spreader;->arrayOffset:I
-Ljava/lang/invoke/Transformers$Spreader;->arrayTypeChar:C
-Ljava/lang/invoke/Transformers$Spreader;->copyRange:Ldalvik/system/EmulatedStackFrame$Range;
-Ljava/lang/invoke/Transformers$Spreader;->numArrayArgs:I
-Ljava/lang/invoke/Transformers$Spreader;->spreadArray([BLdalvik/system/EmulatedStackFrame$StackFrameWriter;Ljava/lang/invoke/MethodType;II)V
-Ljava/lang/invoke/Transformers$Spreader;->spreadArray([CLdalvik/system/EmulatedStackFrame$StackFrameWriter;Ljava/lang/invoke/MethodType;II)V
-Ljava/lang/invoke/Transformers$Spreader;->spreadArray([DLdalvik/system/EmulatedStackFrame$StackFrameWriter;Ljava/lang/invoke/MethodType;II)V
-Ljava/lang/invoke/Transformers$Spreader;->spreadArray([FLdalvik/system/EmulatedStackFrame$StackFrameWriter;Ljava/lang/invoke/MethodType;II)V
-Ljava/lang/invoke/Transformers$Spreader;->spreadArray([ILdalvik/system/EmulatedStackFrame$StackFrameWriter;Ljava/lang/invoke/MethodType;II)V
-Ljava/lang/invoke/Transformers$Spreader;->spreadArray([JLdalvik/system/EmulatedStackFrame$StackFrameWriter;Ljava/lang/invoke/MethodType;II)V
-Ljava/lang/invoke/Transformers$Spreader;->spreadArray([Ljava/lang/Object;Ldalvik/system/EmulatedStackFrame$StackFrameWriter;Ljava/lang/invoke/MethodType;II)V
-Ljava/lang/invoke/Transformers$Spreader;->spreadArray([SLdalvik/system/EmulatedStackFrame$StackFrameWriter;Ljava/lang/invoke/MethodType;II)V
-Ljava/lang/invoke/Transformers$Spreader;->spreadArray([ZLdalvik/system/EmulatedStackFrame$StackFrameWriter;Ljava/lang/invoke/MethodType;II)V
-Ljava/lang/invoke/Transformers$Spreader;->target:Ljava/lang/invoke/MethodHandle;
-Ljava/lang/invoke/Transformers$Spreader;->transform(Ldalvik/system/EmulatedStackFrame;)V
-Ljava/lang/invoke/Transformers$Transformer;-><init>(Ljava/lang/invoke/MethodType;)V
-Ljava/lang/invoke/Transformers$Transformer;-><init>(Ljava/lang/invoke/MethodType;I)V
-Ljava/lang/invoke/Transformers$VarargsCollector;-><init>(Ljava/lang/invoke/MethodHandle;)V
-Ljava/lang/invoke/Transformers$VarargsCollector;->arityArgumentsConvertible([Ljava/lang/Class;ILjava/lang/Class;)Z
-Ljava/lang/invoke/Transformers$VarargsCollector;->booleanArray(Ldalvik/system/EmulatedStackFrame$StackFrameReader;[Ljava/lang/Class;II)Ljava/lang/Object;
-Ljava/lang/invoke/Transformers$VarargsCollector;->byteArray(Ldalvik/system/EmulatedStackFrame$StackFrameReader;[Ljava/lang/Class;II)Ljava/lang/Object;
-Ljava/lang/invoke/Transformers$VarargsCollector;->charArray(Ldalvik/system/EmulatedStackFrame$StackFrameReader;[Ljava/lang/Class;II)Ljava/lang/Object;
-Ljava/lang/invoke/Transformers$VarargsCollector;->collectArguments(CLjava/lang/Class;Ldalvik/system/EmulatedStackFrame$StackFrameReader;[Ljava/lang/Class;II)Ljava/lang/Object;
-Ljava/lang/invoke/Transformers$VarargsCollector;->copyParameter(Ldalvik/system/EmulatedStackFrame$StackFrameReader;Ldalvik/system/EmulatedStackFrame$StackFrameWriter;Ljava/lang/Class;)V
-Ljava/lang/invoke/Transformers$VarargsCollector;->doubleArray(Ldalvik/system/EmulatedStackFrame$StackFrameReader;[Ljava/lang/Class;II)Ljava/lang/Object;
-Ljava/lang/invoke/Transformers$VarargsCollector;->floatArray(Ldalvik/system/EmulatedStackFrame$StackFrameReader;[Ljava/lang/Class;II)Ljava/lang/Object;
-Ljava/lang/invoke/Transformers$VarargsCollector;->intArray(Ldalvik/system/EmulatedStackFrame$StackFrameReader;[Ljava/lang/Class;II)Ljava/lang/Object;
-Ljava/lang/invoke/Transformers$VarargsCollector;->lastParameterTypeIsAnArray([Ljava/lang/Class;)Z
-Ljava/lang/invoke/Transformers$VarargsCollector;->longArray(Ldalvik/system/EmulatedStackFrame$StackFrameReader;[Ljava/lang/Class;II)Ljava/lang/Object;
-Ljava/lang/invoke/Transformers$VarargsCollector;->makeArityArray(Ljava/lang/invoke/MethodType;Ldalvik/system/EmulatedStackFrame$StackFrameReader;ILjava/lang/Class;)Ljava/lang/Object;
-Ljava/lang/invoke/Transformers$VarargsCollector;->makeTargetFrameType(Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/MethodType;
-Ljava/lang/invoke/Transformers$VarargsCollector;->prepareFrame(Ldalvik/system/EmulatedStackFrame;Ldalvik/system/EmulatedStackFrame;)V
-Ljava/lang/invoke/Transformers$VarargsCollector;->referenceArray(Ldalvik/system/EmulatedStackFrame$StackFrameReader;[Ljava/lang/Class;Ljava/lang/Class;II)Ljava/lang/Object;
-Ljava/lang/invoke/Transformers$VarargsCollector;->shortArray(Ldalvik/system/EmulatedStackFrame$StackFrameReader;[Ljava/lang/Class;II)Ljava/lang/Object;
-Ljava/lang/invoke/Transformers$VarargsCollector;->target:Ljava/lang/invoke/MethodHandle;
-Ljava/lang/invoke/Transformers$VarargsCollector;->throwWrongMethodTypeException(Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;)V
-Ljava/lang/invoke/Transformers$VarargsCollector;->transform(Ldalvik/system/EmulatedStackFrame;)V
-Ljava/lang/invoke/Transformers;-><init>()V
-Ljava/lang/invoke/Transformers;->TRANSFORM_INTERNAL:Ljava/lang/reflect/Method;
-Ljava/lang/invoke/VarHandle$AccessMode;->at:Ljava/lang/invoke/VarHandle$AccessType;
-Ljava/lang/invoke/VarHandle$AccessMode;->COMPARE_AND_EXCHANGE:Ljava/lang/invoke/VarHandle$AccessMode;
-Ljava/lang/invoke/VarHandle$AccessMode;->COMPARE_AND_EXCHANGE_ACQUIRE:Ljava/lang/invoke/VarHandle$AccessMode;
-Ljava/lang/invoke/VarHandle$AccessMode;->COMPARE_AND_EXCHANGE_RELEASE:Ljava/lang/invoke/VarHandle$AccessMode;
-Ljava/lang/invoke/VarHandle$AccessMode;->COMPARE_AND_SET:Ljava/lang/invoke/VarHandle$AccessMode;
-Ljava/lang/invoke/VarHandle$AccessMode;->GET:Ljava/lang/invoke/VarHandle$AccessMode;
-Ljava/lang/invoke/VarHandle$AccessMode;->GET_ACQUIRE:Ljava/lang/invoke/VarHandle$AccessMode;
-Ljava/lang/invoke/VarHandle$AccessMode;->GET_AND_ADD:Ljava/lang/invoke/VarHandle$AccessMode;
-Ljava/lang/invoke/VarHandle$AccessMode;->GET_AND_ADD_ACQUIRE:Ljava/lang/invoke/VarHandle$AccessMode;
-Ljava/lang/invoke/VarHandle$AccessMode;->GET_AND_ADD_RELEASE:Ljava/lang/invoke/VarHandle$AccessMode;
-Ljava/lang/invoke/VarHandle$AccessMode;->GET_AND_BITWISE_AND:Ljava/lang/invoke/VarHandle$AccessMode;
-Ljava/lang/invoke/VarHandle$AccessMode;->GET_AND_BITWISE_AND_ACQUIRE:Ljava/lang/invoke/VarHandle$AccessMode;
-Ljava/lang/invoke/VarHandle$AccessMode;->GET_AND_BITWISE_AND_RELEASE:Ljava/lang/invoke/VarHandle$AccessMode;
-Ljava/lang/invoke/VarHandle$AccessMode;->GET_AND_BITWISE_OR:Ljava/lang/invoke/VarHandle$AccessMode;
-Ljava/lang/invoke/VarHandle$AccessMode;->GET_AND_BITWISE_OR_ACQUIRE:Ljava/lang/invoke/VarHandle$AccessMode;
-Ljava/lang/invoke/VarHandle$AccessMode;->GET_AND_BITWISE_OR_RELEASE:Ljava/lang/invoke/VarHandle$AccessMode;
-Ljava/lang/invoke/VarHandle$AccessMode;->GET_AND_BITWISE_XOR:Ljava/lang/invoke/VarHandle$AccessMode;
-Ljava/lang/invoke/VarHandle$AccessMode;->GET_AND_BITWISE_XOR_ACQUIRE:Ljava/lang/invoke/VarHandle$AccessMode;
-Ljava/lang/invoke/VarHandle$AccessMode;->GET_AND_BITWISE_XOR_RELEASE:Ljava/lang/invoke/VarHandle$AccessMode;
-Ljava/lang/invoke/VarHandle$AccessMode;->GET_AND_SET:Ljava/lang/invoke/VarHandle$AccessMode;
-Ljava/lang/invoke/VarHandle$AccessMode;->GET_AND_SET_ACQUIRE:Ljava/lang/invoke/VarHandle$AccessMode;
-Ljava/lang/invoke/VarHandle$AccessMode;->GET_AND_SET_RELEASE:Ljava/lang/invoke/VarHandle$AccessMode;
-Ljava/lang/invoke/VarHandle$AccessMode;->GET_OPAQUE:Ljava/lang/invoke/VarHandle$AccessMode;
-Ljava/lang/invoke/VarHandle$AccessMode;->GET_VOLATILE:Ljava/lang/invoke/VarHandle$AccessMode;
-Ljava/lang/invoke/VarHandle$AccessMode;->methodName()Ljava/lang/String;
-Ljava/lang/invoke/VarHandle$AccessMode;->methodName:Ljava/lang/String;
-Ljava/lang/invoke/VarHandle$AccessMode;->methodNameToAccessMode:Ljava/util/Map;
-Ljava/lang/invoke/VarHandle$AccessMode;->SET:Ljava/lang/invoke/VarHandle$AccessMode;
-Ljava/lang/invoke/VarHandle$AccessMode;->SET_OPAQUE:Ljava/lang/invoke/VarHandle$AccessMode;
-Ljava/lang/invoke/VarHandle$AccessMode;->SET_RELEASE:Ljava/lang/invoke/VarHandle$AccessMode;
-Ljava/lang/invoke/VarHandle$AccessMode;->SET_VOLATILE:Ljava/lang/invoke/VarHandle$AccessMode;
-Ljava/lang/invoke/VarHandle$AccessMode;->valueFromMethodName(Ljava/lang/String;)Ljava/lang/invoke/VarHandle$AccessMode;
-Ljava/lang/invoke/VarHandle$AccessMode;->valueOf(Ljava/lang/String;)Ljava/lang/invoke/VarHandle$AccessMode;
-Ljava/lang/invoke/VarHandle$AccessMode;->values()[Ljava/lang/invoke/VarHandle$AccessMode;
-Ljava/lang/invoke/VarHandle$AccessMode;->WEAK_COMPARE_AND_SET:Ljava/lang/invoke/VarHandle$AccessMode;
-Ljava/lang/invoke/VarHandle$AccessMode;->WEAK_COMPARE_AND_SET_ACQUIRE:Ljava/lang/invoke/VarHandle$AccessMode;
-Ljava/lang/invoke/VarHandle$AccessMode;->WEAK_COMPARE_AND_SET_PLAIN:Ljava/lang/invoke/VarHandle$AccessMode;
-Ljava/lang/invoke/VarHandle$AccessMode;->WEAK_COMPARE_AND_SET_RELEASE:Ljava/lang/invoke/VarHandle$AccessMode;
-Ljava/lang/invoke/VarHandle$AccessType;->COMPARE_AND_EXCHANGE:Ljava/lang/invoke/VarHandle$AccessType;
-Ljava/lang/invoke/VarHandle$AccessType;->COMPARE_AND_SWAP:Ljava/lang/invoke/VarHandle$AccessType;
-Ljava/lang/invoke/VarHandle$AccessType;->GET:Ljava/lang/invoke/VarHandle$AccessType;
-Ljava/lang/invoke/VarHandle$AccessType;->GET_AND_UPDATE:Ljava/lang/invoke/VarHandle$AccessType;
-Ljava/lang/invoke/VarHandle$AccessType;->GET_AND_UPDATE_BITWISE:Ljava/lang/invoke/VarHandle$AccessType;
-Ljava/lang/invoke/VarHandle$AccessType;->GET_AND_UPDATE_NUMERIC:Ljava/lang/invoke/VarHandle$AccessType;
-Ljava/lang/invoke/VarHandle$AccessType;->SET:Ljava/lang/invoke/VarHandle$AccessType;
-Ljava/lang/invoke/VarHandle$AccessType;->valueOf(Ljava/lang/String;)Ljava/lang/invoke/VarHandle$AccessType;
-Ljava/lang/invoke/VarHandle$AccessType;->values()[Ljava/lang/invoke/VarHandle$AccessType;
-Ljava/lang/invoke/VarHandle;-><init>(Ljava/lang/Class;Ljava/lang/Class;ZLjava/lang/Class;Ljava/lang/Class;)V
-Ljava/lang/invoke/VarHandle;-><init>(Ljava/lang/Class;Z)V
-Ljava/lang/invoke/VarHandle;-><init>(Ljava/lang/Class;ZLjava/lang/Class;)V
-Ljava/lang/invoke/VarHandle;->accessModesBitMask:I
-Ljava/lang/invoke/VarHandle;->accessModeType(Ljava/lang/invoke/VarHandle$AccessMode;)Ljava/lang/invoke/MethodType;
-Ljava/lang/invoke/VarHandle;->accessTypesToBitMask(Ljava/util/EnumSet;)I
-Ljava/lang/invoke/VarHandle;->alignedAccessModesBitMask(Ljava/lang/Class;Z)I
-Ljava/lang/invoke/VarHandle;->ALL_MODES_BIT_MASK:I
-Ljava/lang/invoke/VarHandle;->ATOMIC_UPDATE_ACCESS_MODES_BIT_MASK:I
-Ljava/lang/invoke/VarHandle;->BITWISE_ATOMIC_UPDATE_ACCESS_MODES_BIT_MASK:I
-Ljava/lang/invoke/VarHandle;->coordinateType0:Ljava/lang/Class;
-Ljava/lang/invoke/VarHandle;->coordinateType1:Ljava/lang/Class;
-Ljava/lang/invoke/VarHandle;->coordinateTypes()Ljava/util/List;
-Ljava/lang/invoke/VarHandle;->isAccessModeSupported(Ljava/lang/invoke/VarHandle$AccessMode;)Z
-Ljava/lang/invoke/VarHandle;->NUMERIC_ATOMIC_UPDATE_ACCESS_MODES_BIT_MASK:I
-Ljava/lang/invoke/VarHandle;->READ_ACCESS_MODES_BIT_MASK:I
-Ljava/lang/invoke/VarHandle;->toMethodHandle(Ljava/lang/invoke/VarHandle$AccessMode;)Ljava/lang/invoke/MethodHandle;
-Ljava/lang/invoke/VarHandle;->unalignedAccessModesBitMask(Ljava/lang/Class;)I
-Ljava/lang/invoke/VarHandle;->UNSAFE:Lsun/misc/Unsafe;
-Ljava/lang/invoke/VarHandle;->varType()Ljava/lang/Class;
-Ljava/lang/invoke/VarHandle;->varType:Ljava/lang/Class;
-Ljava/lang/invoke/VarHandle;->WRITE_ACCESS_MODES_BIT_MASK:I
-Ljava/lang/invoke/WrongMethodTypeException;-><init>(Ljava/lang/String;Ljava/lang/Throwable;)V
-Ljava/lang/invoke/WrongMethodTypeException;-><init>(Ljava/lang/Throwable;)V
-Ljava/lang/Long$LongCache;-><init>()V
-Ljava/lang/Long$LongCache;->cache:[Ljava/lang/Long;
-Ljava/lang/Long;->formatUnsignedLong(JI[CII)I
-Ljava/lang/Long;->getChars(JI[C)V
-Ljava/lang/Long;->stringSize(J)I
-Ljava/lang/Long;->toUnsignedBigInteger(J)Ljava/math/BigInteger;
-Ljava/lang/Long;->toUnsignedString0(JI)Ljava/lang/String;
-Ljava/lang/Math$RandomNumberGeneratorHolder;-><init>()V
-Ljava/lang/Math$RandomNumberGeneratorHolder;->randomNumberGenerator:Ljava/util/Random;
-Ljava/lang/Math;-><init>()V
-Ljava/lang/Math;->negativeZeroDoubleBits:J
-Ljava/lang/Math;->negativeZeroFloatBits:J
-Ljava/lang/Math;->powerOfTwoD(I)D
-Ljava/lang/Math;->powerOfTwoF(I)F
-Ljava/lang/Math;->randomIntInternal()I
-Ljava/lang/Math;->randomLongInternal()J
-Ljava/lang/Math;->setRandomSeedInternal(J)V
-Ljava/lang/Math;->twoToTheDoubleScaleDown:D
-Ljava/lang/Math;->twoToTheDoubleScaleUp:D
-Ljava/lang/NoClassDefFoundError;-><init>(Ljava/lang/String;Ljava/lang/Throwable;)V
-Ljava/lang/NumberFormatException;->forInputString(Ljava/lang/String;)Ljava/lang/NumberFormatException;
-Ljava/lang/Object;->identityHashCodeNative(Ljava/lang/Object;)I
-Ljava/lang/Object;->internalClone()Ljava/lang/Object;
-Ljava/lang/Object;->shadow$_klass_:Ljava/lang/Class;
-Ljava/lang/Object;->shadow$_monitor_:I
-Ljava/lang/Package;-><init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/net/URL;Ljava/lang/ClassLoader;)V
-Ljava/lang/Package;-><init>(Ljava/lang/String;Ljava/util/jar/Manifest;Ljava/net/URL;Ljava/lang/ClassLoader;)V
-Ljava/lang/Package;->defineSystemPackage(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/Package;
-Ljava/lang/Package;->getPackage(Ljava/lang/Class;)Ljava/lang/Package;
-Ljava/lang/Package;->getPackageInfo()Ljava/lang/Class;
-Ljava/lang/Package;->getSystemPackage(Ljava/lang/String;)Ljava/lang/Package;
-Ljava/lang/Package;->getSystemPackage0(Ljava/lang/String;)Ljava/lang/String;
-Ljava/lang/Package;->getSystemPackages()[Ljava/lang/Package;
-Ljava/lang/Package;->getSystemPackages0()[Ljava/lang/String;
-Ljava/lang/Package;->implTitle:Ljava/lang/String;
-Ljava/lang/Package;->implVendor:Ljava/lang/String;
-Ljava/lang/Package;->implVersion:Ljava/lang/String;
-Ljava/lang/Package;->loader:Ljava/lang/ClassLoader;
-Ljava/lang/Package;->loadManifest(Ljava/lang/String;)Ljava/util/jar/Manifest;
-Ljava/lang/Package;->mans:Ljava/util/Map;
-Ljava/lang/Package;->packageInfo:Ljava/lang/Class;
-Ljava/lang/Package;->pkgName:Ljava/lang/String;
-Ljava/lang/Package;->pkgs:Ljava/util/Map;
-Ljava/lang/Package;->sealBase:Ljava/net/URL;
-Ljava/lang/Package;->specTitle:Ljava/lang/String;
-Ljava/lang/Package;->specVendor:Ljava/lang/String;
-Ljava/lang/Package;->specVersion:Ljava/lang/String;
-Ljava/lang/Package;->urls:Ljava/util/Map;
-Ljava/lang/ProcessBuilder$NullInputStream;-><init>()V
-Ljava/lang/ProcessBuilder$NullInputStream;->INSTANCE:Ljava/lang/ProcessBuilder$NullInputStream;
-Ljava/lang/ProcessBuilder$NullOutputStream;-><init>()V
-Ljava/lang/ProcessBuilder$NullOutputStream;->INSTANCE:Ljava/lang/ProcessBuilder$NullOutputStream;
-Ljava/lang/ProcessBuilder$Redirect;-><init>()V
-Ljava/lang/ProcessBuilder$Redirect;->append()Z
-Ljava/lang/ProcessBuilder;->command:Ljava/util/List;
-Ljava/lang/ProcessBuilder;->directory:Ljava/io/File;
-Ljava/lang/ProcessBuilder;->environment([Ljava/lang/String;)Ljava/lang/ProcessBuilder;
-Ljava/lang/ProcessBuilder;->environment:Ljava/util/Map;
-Ljava/lang/ProcessBuilder;->redirectErrorStream:Z
-Ljava/lang/ProcessBuilder;->redirects()[Ljava/lang/ProcessBuilder$Redirect;
-Ljava/lang/ProcessBuilder;->redirects:[Ljava/lang/ProcessBuilder$Redirect;
-Ljava/lang/ref/FinalizerReference$Sentinel;-><init>()V
-Ljava/lang/ref/FinalizerReference$Sentinel;->awaitFinalization(J)V
-Ljava/lang/ref/FinalizerReference$Sentinel;->finalized:Z
-Ljava/lang/ref/FinalizerReference;-><init>(Ljava/lang/Object;Ljava/lang/ref/ReferenceQueue;)V
-Ljava/lang/ref/FinalizerReference;->enqueueSentinelReference(Ljava/lang/ref/FinalizerReference$Sentinel;)Z
-Ljava/lang/ref/FinalizerReference;->finalizeAllEnqueued(J)V
-Ljava/lang/ref/FinalizerReference;->getReferent()Ljava/lang/Object;
-Ljava/lang/ref/FinalizerReference;->LIST_LOCK:Ljava/lang/Object;
-Ljava/lang/ref/FinalizerReference;->makeCircularListIfUnenqueued()Z
-Ljava/lang/ref/FinalizerReference;->prev:Ljava/lang/ref/FinalizerReference;
-Ljava/lang/ref/FinalizerReference;->zombie:Ljava/lang/Object;
-Ljava/lang/ref/Reference$SinkHolder;-><init>()V
-Ljava/lang/ref/Reference$SinkHolder;->finalize_count:I
-Ljava/lang/ref/Reference$SinkHolder;->sink:Ljava/lang/Object;
-Ljava/lang/ref/Reference$SinkHolder;->sinkUser:Ljava/lang/Object;
-Ljava/lang/ref/Reference;-><init>(Ljava/lang/Object;)V
-Ljava/lang/ref/Reference;-><init>(Ljava/lang/Object;Ljava/lang/ref/ReferenceQueue;)V
-Ljava/lang/ref/Reference;->clearReferent()V
-Ljava/lang/ref/Reference;->disableIntrinsic:Z
-Ljava/lang/ref/Reference;->pendingNext:Ljava/lang/ref/Reference;
-Ljava/lang/ref/Reference;->queue:Ljava/lang/ref/ReferenceQueue;
-Ljava/lang/ref/Reference;->queueNext:Ljava/lang/ref/Reference;
-Ljava/lang/ref/Reference;->slowPathEnabled:Z
-Ljava/lang/ref/ReferenceQueue;->enqueue(Ljava/lang/ref/Reference;)Z
-Ljava/lang/ref/ReferenceQueue;->enqueueLocked(Ljava/lang/ref/Reference;)Z
-Ljava/lang/ref/ReferenceQueue;->enqueuePending(Ljava/lang/ref/Reference;)V
-Ljava/lang/ref/ReferenceQueue;->head:Ljava/lang/ref/Reference;
-Ljava/lang/ref/ReferenceQueue;->isEnqueued(Ljava/lang/ref/Reference;)Z
-Ljava/lang/ref/ReferenceQueue;->lock:Ljava/lang/Object;
-Ljava/lang/ref/ReferenceQueue;->reallyPollLocked()Ljava/lang/ref/Reference;
-Ljava/lang/ref/ReferenceQueue;->sQueueNextUnenqueued:Ljava/lang/ref/Reference;
-Ljava/lang/ref/ReferenceQueue;->tail:Ljava/lang/ref/Reference;
-Ljava/lang/ref/ReferenceQueue;->unenqueued:Ljava/lang/ref/Reference;
-Ljava/lang/ref/SoftReference;->clock:J
-Ljava/lang/ref/SoftReference;->timestamp:J
-Ljava/lang/reflect/AccessibleObject;->setAccessible0(Ljava/lang/reflect/AccessibleObject;Z)V
-Ljava/lang/reflect/Array;-><init>()V
-Ljava/lang/reflect/Array;->badArray(Ljava/lang/Object;)Ljava/lang/RuntimeException;
-Ljava/lang/reflect/Array;->createMultiArray(Ljava/lang/Class;[I)Ljava/lang/Object;
-Ljava/lang/reflect/Array;->createObjectArray(Ljava/lang/Class;I)Ljava/lang/Object;
-Ljava/lang/reflect/Array;->incompatibleType(Ljava/lang/Object;)Ljava/lang/IllegalArgumentException;
-Ljava/lang/reflect/Array;->newArray(Ljava/lang/Class;I)Ljava/lang/Object;
-Ljava/lang/reflect/Array;->notAnArray(Ljava/lang/Object;)Ljava/lang/IllegalArgumentException;
-Ljava/lang/reflect/Constructor;-><init>()V
-Ljava/lang/reflect/Constructor;-><init>(Ljava/lang/Class;Ljava/lang/Class;)V
-Ljava/lang/reflect/Constructor;->hasGenericInformation()Z
-Ljava/lang/reflect/Constructor;->newInstanceFromSerialization(Ljava/lang/Class;Ljava/lang/Class;)Ljava/lang/Object;
-Ljava/lang/reflect/Constructor;->ORDER_BY_SIGNATURE:Ljava/util/Comparator;
-Ljava/lang/reflect/Constructor;->serializationClass:Ljava/lang/Class;
-Ljava/lang/reflect/Constructor;->serializationCtor:Ljava/lang/Class;
-Ljava/lang/reflect/Constructor;->specificToGenericStringHeader(Ljava/lang/StringBuilder;)V
-Ljava/lang/reflect/Constructor;->specificToStringHeader(Ljava/lang/StringBuilder;)V
-Ljava/lang/reflect/Executable$GenericInfo;-><init>(Llibcore/reflect/ListOfTypes;Llibcore/reflect/ListOfTypes;Ljava/lang/reflect/Type;[Ljava/lang/reflect/TypeVariable;)V
-Ljava/lang/reflect/Executable$GenericInfo;->formalTypeParameters:[Ljava/lang/reflect/TypeVariable;
-Ljava/lang/reflect/Executable$GenericInfo;->genericExceptionTypes:Llibcore/reflect/ListOfTypes;
-Ljava/lang/reflect/Executable$GenericInfo;->genericParameterTypes:Llibcore/reflect/ListOfTypes;
-Ljava/lang/reflect/Executable$GenericInfo;->genericReturnType:Ljava/lang/reflect/Type;
-Ljava/lang/reflect/Executable;-><init>()V
-Ljava/lang/reflect/Executable;->accessFlags:I
-Ljava/lang/reflect/Executable;->compareMethodParametersInternal(Ljava/lang/reflect/Method;)I
-Ljava/lang/reflect/Executable;->declaringClass:Ljava/lang/Class;
-Ljava/lang/reflect/Executable;->declaringClassOfOverriddenMethod:Ljava/lang/Class;
-Ljava/lang/reflect/Executable;->dexMethodIndex:I
-Ljava/lang/reflect/Executable;->equalNameAndParametersInternal(Ljava/lang/reflect/Method;)Z
-Ljava/lang/reflect/Executable;->equalParamTypes([Ljava/lang/Class;[Ljava/lang/Class;)Z
-Ljava/lang/reflect/Executable;->fixMethodFlags(I)I
-Ljava/lang/reflect/Executable;->getAccessFlags()I
-Ljava/lang/reflect/Executable;->getAllGenericParameterTypes()[Ljava/lang/reflect/Type;
-Ljava/lang/reflect/Executable;->getAnnotationNative(Ljava/lang/Class;)Ljava/lang/annotation/Annotation;
-Ljava/lang/reflect/Executable;->getArtMethod()J
-Ljava/lang/reflect/Executable;->getDeclaredAnnotationsNative()[Ljava/lang/annotation/Annotation;
-Ljava/lang/reflect/Executable;->getDeclaringClassInternal()Ljava/lang/Class;
-Ljava/lang/reflect/Executable;->getMethodNameInternal()Ljava/lang/String;
-Ljava/lang/reflect/Executable;->getMethodOrConstructorGenericInfoInternal()Ljava/lang/reflect/Executable$GenericInfo;
-Ljava/lang/reflect/Executable;->getMethodReturnTypeInternal()Ljava/lang/Class;
-Ljava/lang/reflect/Executable;->getModifiersInternal()I
-Ljava/lang/reflect/Executable;->getParameterAnnotationsInternal()[[Ljava/lang/annotation/Annotation;
-Ljava/lang/reflect/Executable;->getParameterAnnotationsNative()[[Ljava/lang/annotation/Annotation;
-Ljava/lang/reflect/Executable;->getParameterCountInternal()I
-Ljava/lang/reflect/Executable;->getParameters0()[Ljava/lang/reflect/Parameter;
-Ljava/lang/reflect/Executable;->getParameterTypesInternal()[Ljava/lang/Class;
-Ljava/lang/reflect/Executable;->getSignatureAnnotation()[Ljava/lang/String;
-Ljava/lang/reflect/Executable;->getSignatureAttribute()Ljava/lang/String;
-Ljava/lang/reflect/Executable;->hasGenericInformation()Z
-Ljava/lang/reflect/Executable;->hasGenericInformationInternal()Z
-Ljava/lang/reflect/Executable;->hasRealParameterData()Z
-Ljava/lang/reflect/Executable;->hasRealParameterData:Z
-Ljava/lang/reflect/Executable;->isAnnotationPresentNative(Ljava/lang/Class;)Z
-Ljava/lang/reflect/Executable;->isBridgeMethodInternal()Z
-Ljava/lang/reflect/Executable;->isDefaultMethodInternal()Z
-Ljava/lang/reflect/Executable;->parameters:[Ljava/lang/reflect/Parameter;
-Ljava/lang/reflect/Executable;->printModifiersIfNonzero(Ljava/lang/StringBuilder;IZ)V
-Ljava/lang/reflect/Executable;->privateGetParameters()[Ljava/lang/reflect/Parameter;
-Ljava/lang/reflect/Executable;->separateWithCommas([Ljava/lang/Class;Ljava/lang/StringBuilder;)V
-Ljava/lang/reflect/Executable;->sharedToGenericString(IZ)Ljava/lang/String;
-Ljava/lang/reflect/Executable;->sharedToString(IZ[Ljava/lang/Class;[Ljava/lang/Class;)Ljava/lang/String;
-Ljava/lang/reflect/Executable;->specificToGenericStringHeader(Ljava/lang/StringBuilder;)V
-Ljava/lang/reflect/Executable;->specificToStringHeader(Ljava/lang/StringBuilder;)V
-Ljava/lang/reflect/Executable;->synthesizeAllParams()[Ljava/lang/reflect/Parameter;
-Ljava/lang/reflect/Executable;->verifyParameters([Ljava/lang/reflect/Parameter;)V
-Ljava/lang/reflect/Field;-><init>()V
-Ljava/lang/reflect/Field;->declaringClass:Ljava/lang/Class;
-Ljava/lang/reflect/Field;->dexFieldIndex:I
-Ljava/lang/reflect/Field;->getAnnotationNative(Ljava/lang/Class;)Ljava/lang/annotation/Annotation;
-Ljava/lang/reflect/Field;->getArtField()J
-Ljava/lang/reflect/Field;->getDexFieldIndex()I
-Ljava/lang/reflect/Field;->getNameInternal()Ljava/lang/String;
-Ljava/lang/reflect/Field;->getSignatureAnnotation()[Ljava/lang/String;
-Ljava/lang/reflect/Field;->getSignatureAttribute()Ljava/lang/String;
-Ljava/lang/reflect/Field;->isAnnotationPresentNative(Ljava/lang/Class;)Z
-Ljava/lang/reflect/Field;->offset:I
-Ljava/lang/reflect/Field;->type:Ljava/lang/Class;
-Ljava/lang/reflect/InvocationTargetException;->target:Ljava/lang/Throwable;
-Ljava/lang/reflect/Method;-><init>()V
-Ljava/lang/reflect/Method;->equalNameAndParameters(Ljava/lang/reflect/Method;)Z
-Ljava/lang/reflect/Method;->hasGenericInformation()Z
-Ljava/lang/reflect/Method;->ORDER_BY_SIGNATURE:Ljava/util/Comparator;
-Ljava/lang/reflect/Method;->specificToGenericStringHeader(Ljava/lang/StringBuilder;)V
-Ljava/lang/reflect/Method;->specificToStringHeader(Ljava/lang/StringBuilder;)V
-Ljava/lang/reflect/Modifier;->ACCESS_MODIFIERS:I
-Ljava/lang/reflect/Modifier;->ANNOTATION:I
-Ljava/lang/reflect/Modifier;->BRIDGE:I
-Ljava/lang/reflect/Modifier;->CLASS_MODIFIERS:I
-Ljava/lang/reflect/Modifier;->CONSTRUCTOR:I
-Ljava/lang/reflect/Modifier;->CONSTRUCTOR_MODIFIERS:I
-Ljava/lang/reflect/Modifier;->DEFAULT:I
-Ljava/lang/reflect/Modifier;->ENUM:I
-Ljava/lang/reflect/Modifier;->FIELD_MODIFIERS:I
-Ljava/lang/reflect/Modifier;->INTERFACE_MODIFIERS:I
-Ljava/lang/reflect/Modifier;->isConstructor(I)Z
-Ljava/lang/reflect/Modifier;->isMandated(I)Z
-Ljava/lang/reflect/Modifier;->isSynthetic(I)Z
-Ljava/lang/reflect/Modifier;->MANDATED:I
-Ljava/lang/reflect/Modifier;->METHOD_MODIFIERS:I
-Ljava/lang/reflect/Modifier;->PARAMETER_MODIFIERS:I
-Ljava/lang/reflect/Modifier;->SYNTHETIC:I
-Ljava/lang/reflect/Modifier;->VARARGS:I
-Ljava/lang/reflect/Parameter;->executable:Ljava/lang/reflect/Executable;
-Ljava/lang/reflect/Parameter;->getAnnotationNative(Ljava/lang/reflect/Executable;ILjava/lang/Class;)Ljava/lang/annotation/Annotation;
-Ljava/lang/reflect/Parameter;->getRealName()Ljava/lang/String;
-Ljava/lang/reflect/Parameter;->index:I
-Ljava/lang/reflect/Parameter;->modifiers:I
-Ljava/lang/reflect/Parameter;->name:Ljava/lang/String;
-Ljava/lang/reflect/Parameter;->parameterClassCache:Ljava/lang/Class;
-Ljava/lang/reflect/Parameter;->parameterTypeCache:Ljava/lang/reflect/Type;
-Ljava/lang/reflect/Proxy$Key1;-><init>(Ljava/lang/Class;)V
-Ljava/lang/reflect/Proxy$Key1;->hash:I
-Ljava/lang/reflect/Proxy$Key2;-><init>(Ljava/lang/Class;Ljava/lang/Class;)V
-Ljava/lang/reflect/Proxy$Key2;->hash:I
-Ljava/lang/reflect/Proxy$Key2;->ref2:Ljava/lang/ref/WeakReference;
-Ljava/lang/reflect/Proxy$KeyFactory;-><init>()V
-Ljava/lang/reflect/Proxy$KeyFactory;->apply(Ljava/lang/ClassLoader;[Ljava/lang/Class;)Ljava/lang/Object;
-Ljava/lang/reflect/Proxy$KeyX;-><init>([Ljava/lang/Class;)V
-Ljava/lang/reflect/Proxy$KeyX;->equals([Ljava/lang/ref/WeakReference;[Ljava/lang/ref/WeakReference;)Z
-Ljava/lang/reflect/Proxy$KeyX;->hash:I
-Ljava/lang/reflect/Proxy$KeyX;->refs:[Ljava/lang/ref/WeakReference;
-Ljava/lang/reflect/Proxy$ProxyClassFactory;-><init>()V
-Ljava/lang/reflect/Proxy$ProxyClassFactory;->apply(Ljava/lang/ClassLoader;[Ljava/lang/Class;)Ljava/lang/Class;
-Ljava/lang/reflect/Proxy$ProxyClassFactory;->nextUniqueNumber:Ljava/util/concurrent/atomic/AtomicLong;
-Ljava/lang/reflect/Proxy$ProxyClassFactory;->proxyClassNamePrefix:Ljava/lang/String;
-Ljava/lang/reflect/Proxy;-><init>()V
-Ljava/lang/reflect/Proxy;->constructorParams:[Ljava/lang/Class;
-Ljava/lang/reflect/Proxy;->deduplicateAndGetExceptions(Ljava/util/List;)Ljava/util/List;
-Ljava/lang/reflect/Proxy;->generateProxy(Ljava/lang/String;[Ljava/lang/Class;Ljava/lang/ClassLoader;[Ljava/lang/reflect/Method;[[Ljava/lang/Class;)Ljava/lang/Class;
-Ljava/lang/reflect/Proxy;->getMethods([Ljava/lang/Class;)Ljava/util/List;
-Ljava/lang/reflect/Proxy;->getMethodsRecursive([Ljava/lang/Class;Ljava/util/List;)V
-Ljava/lang/reflect/Proxy;->intersectExceptions([Ljava/lang/Class;[Ljava/lang/Class;)[Ljava/lang/Class;
-Ljava/lang/reflect/Proxy;->key0:Ljava/lang/Object;
-Ljava/lang/reflect/Proxy;->ORDER_BY_SIGNATURE_AND_SUBTYPE:Ljava/util/Comparator;
-Ljava/lang/reflect/Proxy;->proxyClassCache:Ljava/lang/reflect/WeakCache;
-Ljava/lang/reflect/Proxy;->validateReturnTypes(Ljava/util/List;)V
-Ljava/lang/reflect/UndeclaredThrowableException;->undeclaredThrowable:Ljava/lang/Throwable;
-Ljava/lang/reflect/WeakCache$CacheKey;-><init>(Ljava/lang/Object;Ljava/lang/ref/ReferenceQueue;)V
-Ljava/lang/reflect/WeakCache$CacheKey;->expungeFrom(Ljava/util/concurrent/ConcurrentMap;Ljava/util/concurrent/ConcurrentMap;)V
-Ljava/lang/reflect/WeakCache$CacheKey;->hash:I
-Ljava/lang/reflect/WeakCache$CacheKey;->NULL_KEY:Ljava/lang/Object;
-Ljava/lang/reflect/WeakCache$CacheKey;->valueOf(Ljava/lang/Object;Ljava/lang/ref/ReferenceQueue;)Ljava/lang/Object;
-Ljava/lang/reflect/WeakCache$CacheValue;-><init>(Ljava/lang/Object;)V
-Ljava/lang/reflect/WeakCache$CacheValue;->hash:I
-Ljava/lang/reflect/WeakCache$Factory;->key:Ljava/lang/Object;
-Ljava/lang/reflect/WeakCache$Factory;->parameter:Ljava/lang/Object;
-Ljava/lang/reflect/WeakCache$Factory;->subKey:Ljava/lang/Object;
-Ljava/lang/reflect/WeakCache$Factory;->valuesMap:Ljava/util/concurrent/ConcurrentMap;
-Ljava/lang/reflect/WeakCache$LookupValue;-><init>(Ljava/lang/Object;)V
-Ljava/lang/reflect/WeakCache$LookupValue;->value:Ljava/lang/Object;
-Ljava/lang/reflect/WeakCache;-><init>(Ljava/util/function/BiFunction;Ljava/util/function/BiFunction;)V
-Ljava/lang/reflect/WeakCache;->containsValue(Ljava/lang/Object;)Z
-Ljava/lang/reflect/WeakCache;->expungeStaleEntries()V
-Ljava/lang/reflect/WeakCache;->get(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
-Ljava/lang/reflect/WeakCache;->map:Ljava/util/concurrent/ConcurrentMap;
-Ljava/lang/reflect/WeakCache;->refQueue:Ljava/lang/ref/ReferenceQueue;
-Ljava/lang/reflect/WeakCache;->reverseMap:Ljava/util/concurrent/ConcurrentMap;
-Ljava/lang/reflect/WeakCache;->size()I
-Ljava/lang/reflect/WeakCache;->subKeyFactory:Ljava/util/function/BiFunction;
-Ljava/lang/reflect/WeakCache;->valueFactory:Ljava/util/function/BiFunction;
-Ljava/lang/Runtime;->checkTargetSdkVersionForLoad(Ljava/lang/String;)V
-Ljava/lang/Runtime;->currentRuntime:Ljava/lang/Runtime;
-Ljava/lang/Runtime;->finalizeOnExit:Z
-Ljava/lang/Runtime;->getLibPaths()[Ljava/lang/String;
-Ljava/lang/Runtime;->initLibPaths()[Ljava/lang/String;
-Ljava/lang/Runtime;->load0(Ljava/lang/Class;Ljava/lang/String;)V
-Ljava/lang/Runtime;->nativeExit(I)V
-Ljava/lang/Runtime;->runFinalization0()V
-Ljava/lang/Runtime;->shutdownHooks:Ljava/util/List;
-Ljava/lang/Runtime;->shuttingDown:Z
-Ljava/lang/Runtime;->tracingMethods:Z
-Ljava/lang/Short$ShortCache;-><init>()V
-Ljava/lang/Short$ShortCache;->cache:[Ljava/lang/Short;
-Ljava/lang/StrictMath$RandomNumberGeneratorHolder;-><init>()V
-Ljava/lang/StrictMath$RandomNumberGeneratorHolder;->randomNumberGenerator:Ljava/util/Random;
-Ljava/lang/StrictMath;-><init>()V
-Ljava/lang/StrictMath;->floorOrCeil(DDDD)D
-Ljava/lang/String$CaseInsensitiveComparator;-><init>()V
-Ljava/lang/String$CaseInsensitiveComparator;->compare(Ljava/lang/String;Ljava/lang/String;)I
-Ljava/lang/String;->doReplace(CC)Ljava/lang/String;
-Ljava/lang/String;->fastSubstring(II)Ljava/lang/String;
-Ljava/lang/String;->getChars([CI)V
-Ljava/lang/String;->indexOf(Ljava/lang/String;Ljava/lang/String;I)I
-Ljava/lang/String;->indexOfSupplementary(II)I
-Ljava/lang/String;->lastIndexOf(Ljava/lang/String;Ljava/lang/String;I)I
-Ljava/lang/String;->lastIndexOfSupplementary(II)I
-Ljava/lang/String;->nonSyncContentEquals(Ljava/lang/AbstractStringBuilder;)Z
-Ljava/lang/StringBuffer;->append(Ljava/lang/AbstractStringBuilder;)Ljava/lang/StringBuffer;
-Ljava/lang/StringBuffer;->toStringCache:[C
-Ljava/lang/StringIndexOutOfBoundsException;-><init>(II)V
-Ljava/lang/StringIndexOutOfBoundsException;-><init>(III)V
-Ljava/lang/StringIndexOutOfBoundsException;-><init>(Ljava/lang/String;I)V
-Ljava/lang/StringIndexOutOfBoundsException;-><init>(Ljava/lang/String;II)V
-Ljava/lang/System$PropertiesWithNonOverrideableDefaults;-><init>(Ljava/util/Properties;)V
-Ljava/lang/System$PropertiesWithNonOverrideableDefaults;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
-Ljava/lang/System;->addLegacyLocaleSystemProperties()V
-Ljava/lang/System;->arraycopy([DI[DII)V
-Ljava/lang/System;->arraycopyBooleanUnchecked([ZI[ZII)V
-Ljava/lang/System;->arraycopyByteUnchecked([BI[BII)V
-Ljava/lang/System;->arraycopyCharUnchecked([CI[CII)V
-Ljava/lang/System;->arraycopyDoubleUnchecked([DI[DII)V
-Ljava/lang/System;->arraycopyFloatUnchecked([FI[FII)V
-Ljava/lang/System;->arraycopyIntUnchecked([II[III)V
-Ljava/lang/System;->arraycopyLongUnchecked([JI[JII)V
-Ljava/lang/System;->arraycopyShortUnchecked([SI[SII)V
-Ljava/lang/System;->ARRAYCOPY_SHORT_BOOLEAN_ARRAY_THRESHOLD:I
-Ljava/lang/System;->ARRAYCOPY_SHORT_BYTE_ARRAY_THRESHOLD:I
-Ljava/lang/System;->ARRAYCOPY_SHORT_CHAR_ARRAY_THRESHOLD:I
-Ljava/lang/System;->ARRAYCOPY_SHORT_DOUBLE_ARRAY_THRESHOLD:I
-Ljava/lang/System;->ARRAYCOPY_SHORT_FLOAT_ARRAY_THRESHOLD:I
-Ljava/lang/System;->ARRAYCOPY_SHORT_INT_ARRAY_THRESHOLD:I
-Ljava/lang/System;->ARRAYCOPY_SHORT_LONG_ARRAY_THRESHOLD:I
-Ljava/lang/System;->ARRAYCOPY_SHORT_SHORT_ARRAY_THRESHOLD:I
-Ljava/lang/System;->checkKey(Ljava/lang/String;)V
-Ljava/lang/System;->cons:Ljava/io/Console;
-Ljava/lang/System;->initProperties()Ljava/util/Properties;
-Ljava/lang/System;->initUnchangeableSystemProperties()Ljava/util/Properties;
-Ljava/lang/System;->justRanFinalization:Z
-Ljava/lang/System;->lineSeparator:Ljava/lang/String;
-Ljava/lang/System;->LOCK:Ljava/lang/Object;
-Ljava/lang/System;->logI(Ljava/lang/String;)V
-Ljava/lang/System;->logI(Ljava/lang/String;Ljava/lang/Throwable;)V
-Ljava/lang/System;->logW(Ljava/lang/String;)V
-Ljava/lang/System;->newPrintStream(Ljava/io/FileOutputStream;Ljava/lang/String;)Ljava/io/PrintStream;
-Ljava/lang/System;->parsePropertyAssignments(Ljava/util/Properties;[Ljava/lang/String;)V
-Ljava/lang/System;->props:Ljava/util/Properties;
-Ljava/lang/System;->runGC:Z
-Ljava/lang/System;->setDefaultChangeableProperties(Ljava/util/Properties;)Ljava/util/Properties;
-Ljava/lang/System;->setErr0(Ljava/io/PrintStream;)V
-Ljava/lang/System;->setIn0(Ljava/io/InputStream;)V
-Ljava/lang/System;->setOut0(Ljava/io/PrintStream;)V
-Ljava/lang/System;->setUnchangeableSystemProperty(Ljava/lang/String;Ljava/lang/String;)V
-Ljava/lang/System;->specialProperties()[Ljava/lang/String;
-Ljava/lang/System;->unchangeableProps:Ljava/util/Properties;
-Ljava/lang/Thread$Caches;-><init>()V
-Ljava/lang/Thread$Caches;->subclassAudits:Ljava/util/concurrent/ConcurrentMap;
-Ljava/lang/Thread$Caches;->subclassAuditsQueue:Ljava/lang/ref/ReferenceQueue;
-Ljava/lang/Thread$ParkState;-><init>()V
-Ljava/lang/Thread$ParkState;->PARKED:I
-Ljava/lang/Thread$ParkState;->PREEMPTIVELY_UNPARKED:I
-Ljava/lang/Thread$ParkState;->UNPARKED:I
-Ljava/lang/Thread$WeakClassKey;-><init>(Ljava/lang/Class;Ljava/lang/ref/ReferenceQueue;)V
-Ljava/lang/Thread$WeakClassKey;->hash:I
-Ljava/lang/Thread;->auditSubclass(Ljava/lang/Class;)Z
-Ljava/lang/Thread;->blockedOn(Lsun/nio/ch/Interruptible;)V
-Ljava/lang/Thread;->blocker:Lsun/nio/ch/Interruptible;
-Ljava/lang/Thread;->blockerLock:Ljava/lang/Object;
-Ljava/lang/Thread;->defaultUncaughtExceptionHandler:Ljava/lang/Thread$UncaughtExceptionHandler;
-Ljava/lang/Thread;->eetop:J
-Ljava/lang/Thread;->EMPTY_STACK_TRACE:[Ljava/lang/StackTraceElement;
-Ljava/lang/Thread;->exit()V
-Ljava/lang/Thread;->init(Ljava/lang/ThreadGroup;Ljava/lang/Runnable;Ljava/lang/String;J)V
-Ljava/lang/Thread;->init2(Ljava/lang/Thread;)V
-Ljava/lang/Thread;->isCCLOverridden(Ljava/lang/Class;)Z
-Ljava/lang/Thread;->NANOS_PER_MILLI:I
-Ljava/lang/Thread;->nativeCreate(Ljava/lang/Thread;JZ)V
-Ljava/lang/Thread;->nativeGetStatus(Z)I
-Ljava/lang/Thread;->nativeHoldsLock(Ljava/lang/Object;)Z
-Ljava/lang/Thread;->nativeInterrupt()V
-Ljava/lang/Thread;->nativeParkEventPointer:J
-Ljava/lang/Thread;->nativeSetName(Ljava/lang/String;)V
-Ljava/lang/Thread;->nativeSetPriority(I)V
-Ljava/lang/Thread;->nextThreadID()J
-Ljava/lang/Thread;->nextThreadNum()I
-Ljava/lang/Thread;->parkFor$(J)V
-Ljava/lang/Thread;->parkState:I
-Ljava/lang/Thread;->parkUntil$(J)V
-Ljava/lang/Thread;->processQueue(Ljava/lang/ref/ReferenceQueue;Ljava/util/concurrent/ConcurrentMap;)V
-Ljava/lang/Thread;->setUncaughtExceptionPreHandler(Ljava/lang/Thread$UncaughtExceptionHandler;)V
-Ljava/lang/Thread;->single_step:Z
-Ljava/lang/Thread;->sleep(Ljava/lang/Object;JI)V
-Ljava/lang/Thread;->stackSize:J
-Ljava/lang/Thread;->started:Z
-Ljava/lang/Thread;->stillborn:Z
-Ljava/lang/Thread;->SUBCLASS_IMPLEMENTATION_PERMISSION:Ljava/lang/RuntimePermission;
-Ljava/lang/Thread;->threadInitNumber:I
-Ljava/lang/Thread;->threadLocalRandomProbe:I
-Ljava/lang/Thread;->threadLocalRandomSecondarySeed:I
-Ljava/lang/Thread;->threadLocalRandomSeed:J
-Ljava/lang/Thread;->threadQ:Ljava/lang/Thread;
-Ljava/lang/Thread;->threadStatus:I
-Ljava/lang/Thread;->tid:J
-Ljava/lang/Thread;->uncaughtExceptionHandler:Ljava/lang/Thread$UncaughtExceptionHandler;
-Ljava/lang/Thread;->uncaughtExceptionPreHandler:Ljava/lang/Thread$UncaughtExceptionHandler;
-Ljava/lang/Thread;->unpark$()V
-Ljava/lang/ThreadGroup;-><init>()V
-Ljava/lang/ThreadGroup;-><init>(Ljava/lang/Void;Ljava/lang/ThreadGroup;Ljava/lang/String;)V
-Ljava/lang/ThreadGroup;->add(Ljava/lang/ThreadGroup;)V
-Ljava/lang/ThreadGroup;->addUnstarted()V
-Ljava/lang/ThreadGroup;->checkParentAccess(Ljava/lang/ThreadGroup;)Ljava/lang/Void;
-Ljava/lang/ThreadGroup;->daemon:Z
-Ljava/lang/ThreadGroup;->destroyed:Z
-Ljava/lang/ThreadGroup;->enumerate([Ljava/lang/Thread;IZ)I
-Ljava/lang/ThreadGroup;->enumerate([Ljava/lang/ThreadGroup;IZ)I
-Ljava/lang/ThreadGroup;->list(Ljava/io/PrintStream;I)V
-Ljava/lang/ThreadGroup;->maxPriority:I
-Ljava/lang/ThreadGroup;->nthreads:I
-Ljava/lang/ThreadGroup;->nUnstartedThreads:I
-Ljava/lang/ThreadGroup;->remove(Ljava/lang/Thread;)V
-Ljava/lang/ThreadGroup;->remove(Ljava/lang/ThreadGroup;)V
-Ljava/lang/ThreadGroup;->stopOrSuspend(Z)Z
-Ljava/lang/ThreadGroup;->threads:[Ljava/lang/Thread;
-Ljava/lang/ThreadGroup;->threadStartFailed(Ljava/lang/Thread;)V
-Ljava/lang/ThreadGroup;->vmAllowSuspension:Z
-Ljava/lang/ThreadLocal$SuppliedThreadLocal;-><init>(Ljava/util/function/Supplier;)V
-Ljava/lang/ThreadLocal$SuppliedThreadLocal;->supplier:Ljava/util/function/Supplier;
-Ljava/lang/ThreadLocal$ThreadLocalMap$Entry;-><init>(Ljava/lang/ThreadLocal;Ljava/lang/Object;)V
-Ljava/lang/ThreadLocal$ThreadLocalMap$Entry;->value:Ljava/lang/Object;
-Ljava/lang/ThreadLocal$ThreadLocalMap;-><init>(Ljava/lang/ThreadLocal$ThreadLocalMap;)V
-Ljava/lang/ThreadLocal$ThreadLocalMap;-><init>(Ljava/lang/ThreadLocal;Ljava/lang/Object;)V
-Ljava/lang/ThreadLocal$ThreadLocalMap;->cleanSomeSlots(II)Z
-Ljava/lang/ThreadLocal$ThreadLocalMap;->expungeStaleEntries()V
-Ljava/lang/ThreadLocal$ThreadLocalMap;->expungeStaleEntry(I)I
-Ljava/lang/ThreadLocal$ThreadLocalMap;->getEntry(Ljava/lang/ThreadLocal;)Ljava/lang/ThreadLocal$ThreadLocalMap$Entry;
-Ljava/lang/ThreadLocal$ThreadLocalMap;->getEntryAfterMiss(Ljava/lang/ThreadLocal;ILjava/lang/ThreadLocal$ThreadLocalMap$Entry;)Ljava/lang/ThreadLocal$ThreadLocalMap$Entry;
-Ljava/lang/ThreadLocal$ThreadLocalMap;->INITIAL_CAPACITY:I
-Ljava/lang/ThreadLocal$ThreadLocalMap;->nextIndex(II)I
-Ljava/lang/ThreadLocal$ThreadLocalMap;->prevIndex(II)I
-Ljava/lang/ThreadLocal$ThreadLocalMap;->rehash()V
-Ljava/lang/ThreadLocal$ThreadLocalMap;->remove(Ljava/lang/ThreadLocal;)V
-Ljava/lang/ThreadLocal$ThreadLocalMap;->replaceStaleEntry(Ljava/lang/ThreadLocal;Ljava/lang/Object;I)V
-Ljava/lang/ThreadLocal$ThreadLocalMap;->resize()V
-Ljava/lang/ThreadLocal$ThreadLocalMap;->set(Ljava/lang/ThreadLocal;Ljava/lang/Object;)V
-Ljava/lang/ThreadLocal$ThreadLocalMap;->setThreshold(I)V
-Ljava/lang/ThreadLocal$ThreadLocalMap;->size:I
-Ljava/lang/ThreadLocal$ThreadLocalMap;->table:[Ljava/lang/ThreadLocal$ThreadLocalMap$Entry;
-Ljava/lang/ThreadLocal$ThreadLocalMap;->threshold:I
-Ljava/lang/ThreadLocal;->childValue(Ljava/lang/Object;)Ljava/lang/Object;
-Ljava/lang/ThreadLocal;->createInheritedMap(Ljava/lang/ThreadLocal$ThreadLocalMap;)Ljava/lang/ThreadLocal$ThreadLocalMap;
-Ljava/lang/ThreadLocal;->createMap(Ljava/lang/Thread;Ljava/lang/Object;)V
-Ljava/lang/ThreadLocal;->HASH_INCREMENT:I
-Ljava/lang/ThreadLocal;->nextHashCode()I
-Ljava/lang/ThreadLocal;->nextHashCode:Ljava/util/concurrent/atomic/AtomicInteger;
-Ljava/lang/ThreadLocal;->setInitialValue()Ljava/lang/Object;
-Ljava/lang/ThreadLocal;->threadLocalHashCode:I
-Ljava/lang/Throwable$PrintStreamOrWriter;-><init>()V
-Ljava/lang/Throwable$PrintStreamOrWriter;->lock()Ljava/lang/Object;
-Ljava/lang/Throwable$PrintStreamOrWriter;->println(Ljava/lang/Object;)V
-Ljava/lang/Throwable$SentinelHolder;-><init>()V
-Ljava/lang/Throwable$SentinelHolder;->STACK_TRACE_ELEMENT_SENTINEL:Ljava/lang/StackTraceElement;
-Ljava/lang/Throwable$SentinelHolder;->STACK_TRACE_SENTINEL:[Ljava/lang/StackTraceElement;
-Ljava/lang/Throwable$WrappedPrintStream;-><init>(Ljava/io/PrintStream;)V
-Ljava/lang/Throwable$WrappedPrintStream;->lock()Ljava/lang/Object;
-Ljava/lang/Throwable$WrappedPrintStream;->println(Ljava/lang/Object;)V
-Ljava/lang/Throwable$WrappedPrintStream;->printStream:Ljava/io/PrintStream;
-Ljava/lang/Throwable$WrappedPrintWriter;-><init>(Ljava/io/PrintWriter;)V
-Ljava/lang/Throwable$WrappedPrintWriter;->lock()Ljava/lang/Object;
-Ljava/lang/Throwable$WrappedPrintWriter;->println(Ljava/lang/Object;)V
-Ljava/lang/Throwable$WrappedPrintWriter;->printWriter:Ljava/io/PrintWriter;
-Ljava/lang/Throwable;->CAUSE_CAPTION:Ljava/lang/String;
-Ljava/lang/Throwable;->EMPTY_THROWABLE_ARRAY:[Ljava/lang/Throwable;
-Ljava/lang/Throwable;->nativeGetStackTrace(Ljava/lang/Object;)[Ljava/lang/StackTraceElement;
-Ljava/lang/Throwable;->NULL_CAUSE_MESSAGE:Ljava/lang/String;
-Ljava/lang/Throwable;->printEnclosedStackTrace(Ljava/lang/Throwable$PrintStreamOrWriter;[Ljava/lang/StackTraceElement;Ljava/lang/String;Ljava/lang/String;Ljava/util/Set;)V
-Ljava/lang/Throwable;->SELF_SUPPRESSION_MESSAGE:Ljava/lang/String;
-Ljava/lang/Throwable;->SUPPRESSED_CAPTION:Ljava/lang/String;
-Ljava/lang/TypeNotPresentException;->typeName:Ljava/lang/String;
-Ljava/math/BigDecimal;-><init>(II)V
-Ljava/math/BigDecimal;-><init>(JI)V
-Ljava/math/BigDecimal;->addAndMult10(Ljava/math/BigDecimal;Ljava/math/BigDecimal;I)Ljava/math/BigDecimal;
-Ljava/math/BigDecimal;->approxPrecision()I
-Ljava/math/BigDecimal;->bitLength(I)I
-Ljava/math/BigDecimal;->bitLength(J)I
-Ljava/math/BigDecimal;->bitLength:I
-Ljava/math/BigDecimal;->BI_SCALED_BY_ZERO:[Ljava/math/BigDecimal;
-Ljava/math/BigDecimal;->BI_SCALED_BY_ZERO_LENGTH:I
-Ljava/math/BigDecimal;->CH_ZEROS:[C
-Ljava/math/BigDecimal;->compareAbsoluteValues(JJ)I
-Ljava/math/BigDecimal;->compareForRounding(JJ)I
-Ljava/math/BigDecimal;->decimalDigitsInLong(J)I
-Ljava/math/BigDecimal;->divideBigIntegers(Ljava/math/BigInteger;Ljava/math/BigInteger;ILjava/math/RoundingMode;)Ljava/math/BigDecimal;
-Ljava/math/BigDecimal;->dividePrimitiveLongs(JJILjava/math/RoundingMode;)Ljava/math/BigDecimal;
-Ljava/math/BigDecimal;->FIVE_POW:[Ljava/math/BigInteger;
-Ljava/math/BigDecimal;->getUnscaledValue()Ljava/math/BigInteger;
-Ljava/math/BigDecimal;->hashCode:I
-Ljava/math/BigDecimal;->inplaceRound(Ljava/math/MathContext;)V
-Ljava/math/BigDecimal;->intVal:Ljava/math/BigInteger;
-Ljava/math/BigDecimal;->isZero()Z
-Ljava/math/BigDecimal;->LOG10_2:D
-Ljava/math/BigDecimal;->LONG_FIVE_POW:[J
-Ljava/math/BigDecimal;->LONG_FIVE_POW_BIT_LENGTH:[I
-Ljava/math/BigDecimal;->LONG_POWERS_OF_TEN_BIT_LENGTH:[I
-Ljava/math/BigDecimal;->movePoint(J)Ljava/math/BigDecimal;
-Ljava/math/BigDecimal;->precision:I
-Ljava/math/BigDecimal;->roundingBehavior(IILjava/math/RoundingMode;)I
-Ljava/math/BigDecimal;->safeLongToInt(J)I
-Ljava/math/BigDecimal;->scale:I
-Ljava/math/BigDecimal;->setUnscaledValue(Ljava/math/BigInteger;)V
-Ljava/math/BigDecimal;->smallRound(Ljava/math/MathContext;I)V
-Ljava/math/BigDecimal;->smallValue:J
-Ljava/math/BigDecimal;->TEN_POW:[Ljava/math/BigInteger;
-Ljava/math/BigDecimal;->toStringImage:Ljava/lang/String;
-Ljava/math/BigDecimal;->valueExact(I)J
-Ljava/math/BigDecimal;->zeroScaledBy(J)Ljava/math/BigDecimal;
-Ljava/math/BigDecimal;->ZERO_SCALED_BY:[Ljava/math/BigDecimal;
-Ljava/math/BigInt;-><init>()V
-Ljava/math/BigInt;->add(Ljava/math/BigInt;)V
-Ljava/math/BigInt;->addition(Ljava/math/BigInt;Ljava/math/BigInt;)Ljava/math/BigInt;
-Ljava/math/BigInt;->addPositiveInt(I)V
-Ljava/math/BigInt;->bigEndianMagnitude()[B
-Ljava/math/BigInt;->bigExp(Ljava/math/BigInt;Ljava/math/BigInt;)Ljava/math/BigInt;
-Ljava/math/BigInt;->bignum:J
-Ljava/math/BigInt;->bitLength()I
-Ljava/math/BigInt;->checkString(Ljava/lang/String;I)Ljava/lang/String;
-Ljava/math/BigInt;->cmp(Ljava/math/BigInt;Ljava/math/BigInt;)I
-Ljava/math/BigInt;->copy()Ljava/math/BigInt;
-Ljava/math/BigInt;->decString()Ljava/lang/String;
-Ljava/math/BigInt;->division(Ljava/math/BigInt;Ljava/math/BigInt;Ljava/math/BigInt;Ljava/math/BigInt;)V
-Ljava/math/BigInt;->exp(Ljava/math/BigInt;I)Ljava/math/BigInt;
-Ljava/math/BigInt;->gcd(Ljava/math/BigInt;Ljava/math/BigInt;)Ljava/math/BigInt;
-Ljava/math/BigInt;->generatePrimeDefault(I)Ljava/math/BigInt;
-Ljava/math/BigInt;->hasNativeBignum()Z
-Ljava/math/BigInt;->hexString()Ljava/lang/String;
-Ljava/math/BigInt;->invalidBigInteger(Ljava/lang/String;)Ljava/lang/NumberFormatException;
-Ljava/math/BigInt;->isBitSet(I)Z
-Ljava/math/BigInt;->isPrime(I)Z
-Ljava/math/BigInt;->littleEndianIntsMagnitude()[I
-Ljava/math/BigInt;->longInt()J
-Ljava/math/BigInt;->makeValid()V
-Ljava/math/BigInt;->modExp(Ljava/math/BigInt;Ljava/math/BigInt;Ljava/math/BigInt;)Ljava/math/BigInt;
-Ljava/math/BigInt;->modInverse(Ljava/math/BigInt;Ljava/math/BigInt;)Ljava/math/BigInt;
-Ljava/math/BigInt;->modulus(Ljava/math/BigInt;Ljava/math/BigInt;)Ljava/math/BigInt;
-Ljava/math/BigInt;->multiplyByPositiveInt(I)V
-Ljava/math/BigInt;->newBigInt()Ljava/math/BigInt;
-Ljava/math/BigInt;->product(Ljava/math/BigInt;Ljava/math/BigInt;)Ljava/math/BigInt;
-Ljava/math/BigInt;->putBigEndian([BZ)V
-Ljava/math/BigInt;->putBigEndianTwosComplement([B)V
-Ljava/math/BigInt;->putCopy(Ljava/math/BigInt;)V
-Ljava/math/BigInt;->putDecString(Ljava/lang/String;)V
-Ljava/math/BigInt;->putHexString(Ljava/lang/String;)V
-Ljava/math/BigInt;->putLittleEndianInts([IZ)V
-Ljava/math/BigInt;->putLongInt(J)V
-Ljava/math/BigInt;->putULongInt(JZ)V
-Ljava/math/BigInt;->registry:Llibcore/util/NativeAllocationRegistry;
-Ljava/math/BigInt;->remainderByPositiveInt(Ljava/math/BigInt;I)I
-Ljava/math/BigInt;->setSign(I)V
-Ljava/math/BigInt;->shift(I)V
-Ljava/math/BigInt;->shift(Ljava/math/BigInt;I)Ljava/math/BigInt;
-Ljava/math/BigInt;->sign()I
-Ljava/math/BigInt;->subtraction(Ljava/math/BigInt;Ljava/math/BigInt;)Ljava/math/BigInt;
-Ljava/math/BigInt;->toAscii(Ljava/lang/String;I)Ljava/lang/String;
-Ljava/math/BigInt;->twosCompFitsIntoBytes(I)Z
-Ljava/math/BigInteger;-><init>(II[I)V
-Ljava/math/BigInteger;-><init>(IJ)V
-Ljava/math/BigInteger;-><init>(Ljava/math/BigInt;)V
-Ljava/math/BigInteger;->bigInt:Ljava/math/BigInt;
-Ljava/math/BigInteger;->copy()Ljava/math/BigInteger;
-Ljava/math/BigInteger;->digits:[I
-Ljava/math/BigInteger;->firstNonzeroDigit:I
-Ljava/math/BigInteger;->getBigInt()Ljava/math/BigInt;
-Ljava/math/BigInteger;->getFirstNonzeroDigit()I
-Ljava/math/BigInteger;->hashCode:I
-Ljava/math/BigInteger;->inplaceAdd([III)I
-Ljava/math/BigInteger;->isSmallPrime(I)Z
-Ljava/math/BigInteger;->javaIsValid:Z
-Ljava/math/BigInteger;->magnitude:[B
-Ljava/math/BigInteger;->MINUS_ONE:Ljava/math/BigInteger;
-Ljava/math/BigInteger;->multiplyByInt([I[III)I
-Ljava/math/BigInteger;->nativeIsValid:Z
-Ljava/math/BigInteger;->numberLength:I
-Ljava/math/BigInteger;->parseFromString(Ljava/math/BigInteger;Ljava/lang/String;I)V
-Ljava/math/BigInteger;->prepareJavaRepresentation()V
-Ljava/math/BigInteger;->setBigInt(Ljava/math/BigInt;)V
-Ljava/math/BigInteger;->setJavaRepresentation(II[I)V
-Ljava/math/BigInteger;->shiftLeftOneBit()Ljava/math/BigInteger;
-Ljava/math/BigInteger;->sign:I
-Ljava/math/BigInteger;->signum:I
-Ljava/math/BigInteger;->SMALL_VALUES:[Ljava/math/BigInteger;
-Ljava/math/BigInteger;->twosComplement()[B
-Ljava/math/MathContext;->checkValid()V
-Ljava/math/MathContext;->invalidMathContext(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/IllegalArgumentException;
-Ljava/math/MathContext;->precision:I
-Ljava/math/MathContext;->roundingMode:Ljava/math/RoundingMode;
-Ljava/math/RoundingMode;->bigDecimalRM:I
-Ljava/net/Authenticator;->requestingAuthType:Ljava/net/Authenticator$RequestorType;
-Ljava/net/Authenticator;->requestingHost:Ljava/lang/String;
-Ljava/net/Authenticator;->requestingPort:I
-Ljava/net/Authenticator;->requestingPrompt:Ljava/lang/String;
-Ljava/net/Authenticator;->requestingProtocol:Ljava/lang/String;
-Ljava/net/Authenticator;->requestingScheme:Ljava/lang/String;
-Ljava/net/Authenticator;->requestingSite:Ljava/net/InetAddress;
-Ljava/net/Authenticator;->requestingURL:Ljava/net/URL;
-Ljava/net/Authenticator;->reset()V
-Ljava/net/BindException;-><init>(Ljava/lang/String;Ljava/lang/Throwable;)V
-Ljava/net/ConnectException;-><init>(Ljava/lang/String;Ljava/lang/Throwable;)V
-Ljava/net/CookieHandler;->cookieHandler:Ljava/net/CookieHandler;
-Ljava/net/CookieManager$CookiePathComparator;-><init>()V
-Ljava/net/CookieManager$CookiePathComparator;->compare(Ljava/net/HttpCookie;Ljava/net/HttpCookie;)I
-Ljava/net/CookieManager;->cookieJar:Ljava/net/CookieStore;
-Ljava/net/CookieManager;->isInPortList(Ljava/lang/String;I)Z
-Ljava/net/CookieManager;->normalizePath(Ljava/lang/String;)Ljava/lang/String;
-Ljava/net/CookieManager;->pathMatches(Ljava/net/URI;Ljava/net/HttpCookie;)Z
-Ljava/net/CookieManager;->policyCallback:Ljava/net/CookiePolicy;
-Ljava/net/CookieManager;->shouldAcceptInternal(Ljava/net/URI;Ljava/net/HttpCookie;)Z
-Ljava/net/CookieManager;->sortByPath(Ljava/util/List;)Ljava/util/List;
-Ljava/net/DatagramPacket;->address:Ljava/net/InetAddress;
-Ljava/net/DatagramPacket;->buf:[B
-Ljava/net/DatagramPacket;->bufLength:I
-Ljava/net/DatagramPacket;->length:I
-Ljava/net/DatagramPacket;->offset:I
-Ljava/net/DatagramPacket;->port:I
-Ljava/net/DatagramPacket;->setReceivedLength(I)V
-Ljava/net/DatagramSocket;->bound:Z
-Ljava/net/DatagramSocket;->bytesLeftToFilter:I
-Ljava/net/DatagramSocket;->checkAddress(Ljava/net/InetAddress;Ljava/lang/String;)V
-Ljava/net/DatagramSocket;->checkFiltering(Ljava/net/DatagramPacket;)Z
-Ljava/net/DatagramSocket;->checkOldImpl()V
-Ljava/net/DatagramSocket;->closed:Z
-Ljava/net/DatagramSocket;->closeLock:Ljava/lang/Object;
-Ljava/net/DatagramSocket;->connectedAddress:Ljava/net/InetAddress;
-Ljava/net/DatagramSocket;->connectedPort:I
-Ljava/net/DatagramSocket;->connectInternal(Ljava/net/InetAddress;I)V
-Ljava/net/DatagramSocket;->connectState:I
-Ljava/net/DatagramSocket;->created:Z
-Ljava/net/DatagramSocket;->createImpl()V
-Ljava/net/DatagramSocket;->explicitFilter:Z
-Ljava/net/DatagramSocket;->factory:Ljava/net/DatagramSocketImplFactory;
-Ljava/net/DatagramSocket;->getImpl()Ljava/net/DatagramSocketImpl;
-Ljava/net/DatagramSocket;->implClass:Ljava/lang/Class;
-Ljava/net/DatagramSocket;->oldImpl:Z
-Ljava/net/DatagramSocket;->pendingConnectException:Ljava/net/SocketException;
-Ljava/net/DatagramSocket;->ST_CONNECTED:I
-Ljava/net/DatagramSocket;->ST_CONNECTED_NO_IMPL:I
-Ljava/net/DatagramSocket;->ST_NOT_CONNECTED:I
-Ljava/net/DatagramSocketImpl;->dataAvailable()I
-Ljava/net/DatagramSocketImpl;->getDatagramSocket()Ljava/net/DatagramSocket;
-Ljava/net/DatagramSocketImpl;->getOption(Ljava/net/SocketOption;)Ljava/lang/Object;
-Ljava/net/DatagramSocketImpl;->setDatagramSocket(Ljava/net/DatagramSocket;)V
-Ljava/net/DatagramSocketImpl;->setOption(Ljava/net/SocketOption;Ljava/lang/Object;)V
-Ljava/net/DatagramSocketImpl;->socket:Ljava/net/DatagramSocket;
-Ljava/net/HttpCookie$CookieAttributeAssignor;->assign(Ljava/net/HttpCookie;Ljava/lang/String;Ljava/lang/String;)V
-Ljava/net/HttpCookie;-><init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
-Ljava/net/HttpCookie;->assignAttribute(Ljava/net/HttpCookie;Ljava/lang/String;Ljava/lang/String;)V
-Ljava/net/HttpCookie;->equalsIgnoreCase(Ljava/lang/String;Ljava/lang/String;)Z
-Ljava/net/HttpCookie;->GMT:Ljava/util/TimeZone;
-Ljava/net/HttpCookie;->guessCookieVersion(Ljava/lang/String;)I
-Ljava/net/HttpCookie;->header()Ljava/lang/String;
-Ljava/net/HttpCookie;->isFullyQualifiedDomainName(Ljava/lang/String;I)Z
-Ljava/net/HttpCookie;->isToken(Ljava/lang/String;)Z
-Ljava/net/HttpCookie;->MAX_AGE_UNSPECIFIED:J
-Ljava/net/HttpCookie;->parse(Ljava/lang/String;Z)Ljava/util/List;
-Ljava/net/HttpCookie;->parseInternal(Ljava/lang/String;Z)Ljava/net/HttpCookie;
-Ljava/net/HttpCookie;->RESERVED_NAMES:Ljava/util/Set;
-Ljava/net/HttpCookie;->SET_COOKIE2:Ljava/lang/String;
-Ljava/net/HttpCookie;->SET_COOKIE:Ljava/lang/String;
-Ljava/net/HttpCookie;->splitMultiCookies(Ljava/lang/String;)Ljava/util/List;
-Ljava/net/HttpCookie;->startsWithIgnoreCase(Ljava/lang/String;Ljava/lang/String;)Z
-Ljava/net/HttpCookie;->stripOffSurroundingQuote(Ljava/lang/String;)Ljava/lang/String;
-Ljava/net/HttpCookie;->toNetscapeHeaderString()Ljava/lang/String;
-Ljava/net/HttpCookie;->toRFC2965HeaderString()Ljava/lang/String;
-Ljava/net/HttpRetryException;->location:Ljava/lang/String;
-Ljava/net/HttpRetryException;->responseCode:I
-Ljava/net/HttpURLConnection;->DEFAULT_CHUNK_SIZE:I
-Ljava/net/HttpURLConnection;->followRedirects:Z
-Ljava/net/HttpURLConnection;->methods:[Ljava/lang/String;
-Ljava/net/IDN;-><init>()V
-Ljava/net/IDN;->convertFullStop(Ljava/lang/StringBuffer;)Ljava/lang/StringBuffer;
-Ljava/net/IDN;->isLabelSeperator(C)Z
-Ljava/net/Inet4Address;-><init>(Ljava/lang/String;I)V
-Ljava/net/Inet4Address;-><init>(Ljava/lang/String;[B)V
-Ljava/net/Inet4Address;->INADDRSZ:I
-Ljava/net/Inet4Address;->LOOPBACK:Ljava/net/InetAddress;
-Ljava/net/Inet4Address;->numericToTextFormat([B)Ljava/lang/String;
-Ljava/net/Inet6Address$Inet6AddressHolder;->init([BI)V
-Ljava/net/Inet6Address$Inet6AddressHolder;->init([BLjava/net/NetworkInterface;)V
-Ljava/net/Inet6Address$Inet6AddressHolder;->isAnyLocalAddress()Z
-Ljava/net/Inet6Address$Inet6AddressHolder;->isIPv4CompatibleAddress()Z
-Ljava/net/Inet6Address$Inet6AddressHolder;->isLinkLocalAddress()Z
-Ljava/net/Inet6Address$Inet6AddressHolder;->isLoopbackAddress()Z
-Ljava/net/Inet6Address$Inet6AddressHolder;->isMCGlobal()Z
-Ljava/net/Inet6Address$Inet6AddressHolder;->isMCLinkLocal()Z
-Ljava/net/Inet6Address$Inet6AddressHolder;->isMCNodeLocal()Z
-Ljava/net/Inet6Address$Inet6AddressHolder;->isMCOrgLocal()Z
-Ljava/net/Inet6Address$Inet6AddressHolder;->isMCSiteLocal()Z
-Ljava/net/Inet6Address$Inet6AddressHolder;->isMulticastAddress()Z
-Ljava/net/Inet6Address$Inet6AddressHolder;->isSiteLocalAddress()Z
-Ljava/net/Inet6Address$Inet6AddressHolder;->scope_ifname_set:Z
-Ljava/net/Inet6Address$Inet6AddressHolder;->setAddr([B)V
-Ljava/net/Inet6Address;-><init>(Ljava/lang/String;[B)V
-Ljava/net/Inet6Address;-><init>(Ljava/lang/String;[BI)V
-Ljava/net/Inet6Address;-><init>(Ljava/lang/String;[BLjava/lang/String;)V
-Ljava/net/Inet6Address;-><init>(Ljava/lang/String;[BLjava/net/NetworkInterface;)V
-Ljava/net/Inet6Address;->deriveNumericScope(Ljava/lang/String;)I
-Ljava/net/Inet6Address;->deriveNumericScope([BLjava/net/NetworkInterface;)I
-Ljava/net/Inet6Address;->FIELDS_OFFSET:J
-Ljava/net/Inet6Address;->INADDRSZ:I
-Ljava/net/Inet6Address;->initif(Ljava/lang/String;[BLjava/net/NetworkInterface;)V
-Ljava/net/Inet6Address;->initstr(Ljava/lang/String;[BLjava/lang/String;)V
-Ljava/net/Inet6Address;->INT16SZ:I
-Ljava/net/Inet6Address;->isDifferentLocalAddressType([B[B)Z
-Ljava/net/Inet6Address;->isLinkLocalAddress([B)Z
-Ljava/net/Inet6Address;->isSiteLocalAddress([B)Z
-Ljava/net/Inet6Address;->LOOPBACK:Ljava/net/InetAddress;
-Ljava/net/Inet6Address;->numericToTextFormat([B)Ljava/lang/String;
-Ljava/net/Inet6Address;->UNSAFE:Lsun/misc/Unsafe;
-Ljava/net/InetAddress$InetAddressHolder;-><init>()V
-Ljava/net/InetAddress$InetAddressHolder;-><init>(Ljava/lang/String;II)V
-Ljava/net/InetAddress$InetAddressHolder;->getAddress()I
-Ljava/net/InetAddress$InetAddressHolder;->getFamily()I
-Ljava/net/InetAddress$InetAddressHolder;->getHostName()Ljava/lang/String;
-Ljava/net/InetAddress$InetAddressHolder;->getOriginalHostName()Ljava/lang/String;
-Ljava/net/InetAddress$InetAddressHolder;->init(Ljava/lang/String;I)V
-Ljava/net/InetAddress;-><init>()V
-Ljava/net/InetAddress;->anyLocalAddress()Ljava/net/InetAddress;
-Ljava/net/InetAddress;->BOOT_CLASSLOADER:Ljava/lang/ClassLoader;
-Ljava/net/InetAddress;->canonicalHostName:Ljava/lang/String;
-Ljava/net/InetAddress;->disallowDeprecatedFormats(Ljava/lang/String;Ljava/net/InetAddress;)Ljava/net/InetAddress;
-Ljava/net/InetAddress;->getAllByName0(Ljava/lang/String;Z)[Ljava/net/InetAddress;
-Ljava/net/InetAddress;->getByAddress(Ljava/lang/String;[BI)Ljava/net/InetAddress;
-Ljava/net/InetAddress;->getByNameOnNet(Ljava/lang/String;I)Ljava/net/InetAddress;
-Ljava/net/InetAddress;->getHostFromNameService(Ljava/net/InetAddress;)Ljava/lang/String;
-Ljava/net/InetAddress;->getHostName(Z)Ljava/lang/String;
-Ljava/net/InetAddress;->impl:Ljava/net/InetAddressImpl;
-Ljava/net/InetAddress;->isReachableByICMP(I)Z
-Ljava/net/InetAddress;->nameService:Lsun/net/spi/nameservice/NameService;
-Ljava/net/InetAddress;->NETID_UNSET:I
-Ljava/net/InetAddress;->parseNumericAddressNoThrow(Ljava/lang/String;)Ljava/net/InetAddress;
-Ljava/net/InetAddress;->readObjectNoData(Ljava/io/ObjectInputStream;)V
-Ljava/net/InetAddressImpl;->anyLocalAddress()Ljava/net/InetAddress;
-Ljava/net/InetAddressImpl;->clearAddressCache()V
-Ljava/net/InetAddressImpl;->getHostByAddr([B)Ljava/lang/String;
-Ljava/net/InetAddressImpl;->isReachable(Ljava/net/InetAddress;ILjava/net/NetworkInterface;I)Z
-Ljava/net/InetAddressImpl;->lookupAllHostAddr(Ljava/lang/String;I)[Ljava/net/InetAddress;
-Ljava/net/InetAddressImpl;->loopbackAddresses()[Ljava/net/InetAddress;
-Ljava/net/InetSocketAddress$InetSocketAddressHolder;-><init>(Ljava/lang/String;Ljava/net/InetAddress;I)V
-Ljava/net/InetSocketAddress$InetSocketAddressHolder;->addr:Ljava/net/InetAddress;
-Ljava/net/InetSocketAddress$InetSocketAddressHolder;->getAddress()Ljava/net/InetAddress;
-Ljava/net/InetSocketAddress$InetSocketAddressHolder;->getHostName()Ljava/lang/String;
-Ljava/net/InetSocketAddress$InetSocketAddressHolder;->getHostString()Ljava/lang/String;
-Ljava/net/InetSocketAddress$InetSocketAddressHolder;->getPort()I
-Ljava/net/InetSocketAddress$InetSocketAddressHolder;->hostname:Ljava/lang/String;
-Ljava/net/InetSocketAddress$InetSocketAddressHolder;->isUnresolved()Z
-Ljava/net/InetSocketAddress$InetSocketAddressHolder;->port:I
-Ljava/net/InetSocketAddress;-><init>()V
-Ljava/net/InetSocketAddress;-><init>(ILjava/lang/String;)V
-Ljava/net/InetSocketAddress;->checkHost(Ljava/lang/String;)Ljava/lang/String;
-Ljava/net/InetSocketAddress;->checkPort(I)I
-Ljava/net/InetSocketAddress;->FIELDS_OFFSET:J
-Ljava/net/InetSocketAddress;->UNSAFE:Lsun/misc/Unsafe;
-Ljava/net/InMemoryCookieStore;-><init>()V
-Ljava/net/InMemoryCookieStore;-><init>(I)V
-Ljava/net/InMemoryCookieStore;->addIndex(Ljava/util/Map;Ljava/lang/Object;Ljava/net/HttpCookie;)V
-Ljava/net/InMemoryCookieStore;->applyMCompatibility:Z
-Ljava/net/InMemoryCookieStore;->getEffectiveURI(Ljava/net/URI;)Ljava/net/URI;
-Ljava/net/InMemoryCookieStore;->getInternal1(Ljava/util/List;Ljava/util/Map;Ljava/lang/String;)V
-Ljava/net/InMemoryCookieStore;->getInternal2(Ljava/util/List;Ljava/util/Map;Ljava/lang/Comparable;)V
-Ljava/net/InMemoryCookieStore;->lock:Ljava/util/concurrent/locks/ReentrantLock;
-Ljava/net/InMemoryCookieStore;->netscapeDomainMatches(Ljava/lang/String;Ljava/lang/String;)Z
-Ljava/net/InMemoryCookieStore;->uriIndex:Ljava/util/Map;
-Ljava/net/InterfaceAddress;-><init>(Ljava/net/InetAddress;Ljava/net/Inet4Address;Ljava/net/InetAddress;)V
-Ljava/net/InterfaceAddress;->address:Ljava/net/InetAddress;
-Ljava/net/InterfaceAddress;->broadcast:Ljava/net/Inet4Address;
-Ljava/net/InterfaceAddress;->countPrefixLength(Ljava/net/InetAddress;)S
-Ljava/net/InterfaceAddress;->maskLength:S
-Ljava/net/JarURLConnection;->entryName:Ljava/lang/String;
-Ljava/net/JarURLConnection;->jarFileURL:Ljava/net/URL;
-Ljava/net/JarURLConnection;->parseSpecs(Ljava/net/URL;)V
-Ljava/net/MulticastSocket;->infAddress:Ljava/net/InetAddress;
-Ljava/net/MulticastSocket;->infLock:Ljava/lang/Object;
-Ljava/net/MulticastSocket;->interfaceSet:Z
-Ljava/net/MulticastSocket;->ttlLock:Ljava/lang/Object;
-Ljava/net/NetworkInterface;-><init>()V
-Ljava/net/NetworkInterface;-><init>(Ljava/lang/String;I[Ljava/net/InetAddress;)V
-Ljava/net/NetworkInterface;->addrs:[Ljava/net/InetAddress;
-Ljava/net/NetworkInterface;->bindings:[Ljava/net/InterfaceAddress;
-Ljava/net/NetworkInterface;->childs:Ljava/util/List;
-Ljava/net/NetworkInterface;->defaultIndex:I
-Ljava/net/NetworkInterface;->defaultInterface:Ljava/net/NetworkInterface;
-Ljava/net/NetworkInterface;->displayName:Ljava/lang/String;
-Ljava/net/NetworkInterface;->getAll()[Ljava/net/NetworkInterface;
-Ljava/net/NetworkInterface;->getDefault()Ljava/net/NetworkInterface;
-Ljava/net/NetworkInterface;->getFlags()I
-Ljava/net/NetworkInterface;->hardwareAddr:[B
-Ljava/net/NetworkInterface;->index:I
-Ljava/net/NetworkInterface;->name:Ljava/lang/String;
-Ljava/net/NetworkInterface;->parent:Ljava/net/NetworkInterface;
-Ljava/net/NetworkInterface;->virtual:Z
-Ljava/net/PasswordAuthentication;->password:[C
-Ljava/net/PasswordAuthentication;->userName:Ljava/lang/String;
-Ljava/net/PortUnreachableException;-><init>(Ljava/lang/String;Ljava/lang/Throwable;)V
-Ljava/net/ProtocolException;-><init>(Ljava/lang/String;Ljava/lang/Throwable;)V
-Ljava/net/Proxy;->sa:Ljava/net/SocketAddress;
-Ljava/net/Proxy;->type:Ljava/net/Proxy$Type;
-Ljava/net/ProxySelector;->theProxySelector:Ljava/net/ProxySelector;
-Ljava/net/ResponseCache;->theResponseCache:Ljava/net/ResponseCache;
-Ljava/net/ServerSocket;-><init>(Ljava/net/SocketImpl;)V
-Ljava/net/ServerSocket;->bound:Z
-Ljava/net/ServerSocket;->checkOldImpl()V
-Ljava/net/ServerSocket;->closed:Z
-Ljava/net/ServerSocket;->closeLock:Ljava/lang/Object;
-Ljava/net/ServerSocket;->created:Z
-Ljava/net/ServerSocket;->createImpl()V
-Ljava/net/ServerSocket;->getFileDescriptor$()Ljava/io/FileDescriptor;
-Ljava/net/ServerSocket;->getImpl()Ljava/net/SocketImpl;
-Ljava/net/ServerSocket;->impl:Ljava/net/SocketImpl;
-Ljava/net/ServerSocket;->oldImpl:Z
-Ljava/net/ServerSocket;->setBound()V
-Ljava/net/ServerSocket;->setCreated()V
-Ljava/net/ServerSocket;->setImpl()V
-Ljava/net/Socket;-><init>([Ljava/net/InetAddress;ILjava/net/SocketAddress;Z)V
-Ljava/net/Socket;->bound:Z
-Ljava/net/Socket;->checkAddress(Ljava/net/InetAddress;Ljava/lang/String;)V
-Ljava/net/Socket;->checkOldImpl()V
-Ljava/net/Socket;->closed:Z
-Ljava/net/Socket;->closeLock:Ljava/lang/Object;
-Ljava/net/Socket;->connected:Z
-Ljava/net/Socket;->created:Z
-Ljava/net/Socket;->createImpl(Z)V
-Ljava/net/Socket;->getImpl()Ljava/net/SocketImpl;
-Ljava/net/Socket;->nonNullAddress(Ljava/net/InetAddress;)[Ljava/net/InetAddress;
-Ljava/net/Socket;->oldImpl:Z
-Ljava/net/Socket;->postAccept()V
-Ljava/net/Socket;->setBound()V
-Ljava/net/Socket;->setConnected()V
-Ljava/net/Socket;->setCreated()V
-Ljava/net/Socket;->setImpl()V
-Ljava/net/Socket;->shutIn:Z
-Ljava/net/Socket;->shutOut:Z
-Ljava/net/SocketException;-><init>(Ljava/lang/Throwable;)V
-Ljava/net/SocketImpl;->getFD$()Ljava/io/FileDescriptor;
-Ljava/net/SocketImpl;->getOption(Ljava/net/SocketOption;)Ljava/lang/Object;
-Ljava/net/SocketImpl;->getServerSocket()Ljava/net/ServerSocket;
-Ljava/net/SocketImpl;->getSocket()Ljava/net/Socket;
-Ljava/net/SocketImpl;->reset()V
-Ljava/net/SocketImpl;->setOption(Ljava/net/SocketOption;Ljava/lang/Object;)V
-Ljava/net/SocketImpl;->setServerSocket(Ljava/net/ServerSocket;)V
-Ljava/net/SocketImpl;->setSocket(Ljava/net/Socket;)V
-Ljava/net/SocketTimeoutException;-><init>(Ljava/lang/String;Ljava/lang/Throwable;)V
-Ljava/net/SocketTimeoutException;-><init>(Ljava/lang/Throwable;)V
-Ljava/net/StandardSocketOptions$StdSocketOption;-><init>(Ljava/lang/String;Ljava/lang/Class;)V
-Ljava/net/StandardSocketOptions$StdSocketOption;->name:Ljava/lang/String;
-Ljava/net/StandardSocketOptions$StdSocketOption;->type:Ljava/lang/Class;
-Ljava/net/StandardSocketOptions;-><init>()V
-Ljava/net/URI$Parser;->at(IIC)Z
-Ljava/net/URI$Parser;->at(IILjava/lang/String;)Z
-Ljava/net/URI$Parser;->charAt(I)C
-Ljava/net/URI$Parser;->checkChar(IJJLjava/lang/String;)V
-Ljava/net/URI$Parser;->checkChars(IIJJLjava/lang/String;)V
-Ljava/net/URI$Parser;->fail(Ljava/lang/String;)V
-Ljava/net/URI$Parser;->fail(Ljava/lang/String;I)V
-Ljava/net/URI$Parser;->failExpecting(Ljava/lang/String;I)V
-Ljava/net/URI$Parser;->failExpecting(Ljava/lang/String;Ljava/lang/String;I)V
-Ljava/net/URI$Parser;->input:Ljava/lang/String;
-Ljava/net/URI$Parser;->ipv6byteCount:I
-Ljava/net/URI$Parser;->parse(Z)V
-Ljava/net/URI$Parser;->parseAuthority(II)I
-Ljava/net/URI$Parser;->parseHierarchical(II)I
-Ljava/net/URI$Parser;->parseHostname(II)I
-Ljava/net/URI$Parser;->parseIPv4Address(II)I
-Ljava/net/URI$Parser;->parseIPv6Reference(II)I
-Ljava/net/URI$Parser;->parseServer(II)I
-Ljava/net/URI$Parser;->requireServerAuthority:Z
-Ljava/net/URI$Parser;->scan(IIC)I
-Ljava/net/URI$Parser;->scan(IIJJ)I
-Ljava/net/URI$Parser;->scan(IILjava/lang/String;Ljava/lang/String;)I
-Ljava/net/URI$Parser;->scanByte(II)I
-Ljava/net/URI$Parser;->scanEscape(IIC)I
-Ljava/net/URI$Parser;->scanHexPost(II)I
-Ljava/net/URI$Parser;->scanHexSeq(II)I
-Ljava/net/URI$Parser;->scanIPv4Address(IIZ)I
-Ljava/net/URI$Parser;->substring(II)Ljava/lang/String;
-Ljava/net/URI$Parser;->takeIPv4Address(IILjava/lang/String;)I
-Ljava/net/URI;-><init>()V
-Ljava/net/URI;->appendAuthority(Ljava/lang/StringBuffer;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;I)V
-Ljava/net/URI;->appendEncoded(Ljava/lang/StringBuffer;C)V
-Ljava/net/URI;->appendEscape(Ljava/lang/StringBuffer;B)V
-Ljava/net/URI;->appendFragment(Ljava/lang/StringBuffer;Ljava/lang/String;)V
-Ljava/net/URI;->appendSchemeSpecificPart(Ljava/lang/StringBuffer;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;)V
-Ljava/net/URI;->authority:Ljava/lang/String;
-Ljava/net/URI;->checkPath(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
-Ljava/net/URI;->compare(Ljava/lang/String;Ljava/lang/String;)I
-Ljava/net/URI;->compareIgnoringCase(Ljava/lang/String;Ljava/lang/String;)I
-Ljava/net/URI;->decode(C)I
-Ljava/net/URI;->decode(CC)B
-Ljava/net/URI;->decode(Ljava/lang/String;)Ljava/lang/String;
-Ljava/net/URI;->decodedAuthority:Ljava/lang/String;
-Ljava/net/URI;->decodedFragment:Ljava/lang/String;
-Ljava/net/URI;->decodedPath:Ljava/lang/String;
-Ljava/net/URI;->decodedQuery:Ljava/lang/String;
-Ljava/net/URI;->decodedSchemeSpecificPart:Ljava/lang/String;
-Ljava/net/URI;->decodedUserInfo:Ljava/lang/String;
-Ljava/net/URI;->defineSchemeSpecificPart()V
-Ljava/net/URI;->defineString()V
-Ljava/net/URI;->encode(Ljava/lang/String;)Ljava/lang/String;
-Ljava/net/URI;->equal(Ljava/lang/String;Ljava/lang/String;)Z
-Ljava/net/URI;->equalIgnoringCase(Ljava/lang/String;Ljava/lang/String;)Z
-Ljava/net/URI;->hash(ILjava/lang/String;)I
-Ljava/net/URI;->hash:I
-Ljava/net/URI;->hashIgnoringCase(ILjava/lang/String;)I
-Ljava/net/URI;->hexDigits:[C
-Ljava/net/URI;->highMask(CC)J
-Ljava/net/URI;->highMask(Ljava/lang/String;)J
-Ljava/net/URI;->H_ALPHA:J
-Ljava/net/URI;->H_ALPHANUM:J
-Ljava/net/URI;->H_DASH:J
-Ljava/net/URI;->H_DIGIT:J
-Ljava/net/URI;->H_DOT:J
-Ljava/net/URI;->H_ESCAPED:J
-Ljava/net/URI;->H_HEX:J
-Ljava/net/URI;->H_LEFT_BRACKET:J
-Ljava/net/URI;->H_LOWALPHA:J
-Ljava/net/URI;->H_MARK:J
-Ljava/net/URI;->H_PATH:J
-Ljava/net/URI;->H_PCHAR:J
-Ljava/net/URI;->H_REG_NAME:J
-Ljava/net/URI;->H_RESERVED:J
-Ljava/net/URI;->H_SCHEME:J
-Ljava/net/URI;->H_SERVER:J
-Ljava/net/URI;->H_SERVER_PERCENT:J
-Ljava/net/URI;->H_UNDERSCORE:J
-Ljava/net/URI;->H_UNRESERVED:J
-Ljava/net/URI;->H_UPALPHA:J
-Ljava/net/URI;->H_URIC:J
-Ljava/net/URI;->H_URIC_NO_SLASH:J
-Ljava/net/URI;->H_USERINFO:J
-Ljava/net/URI;->join([C[I)I
-Ljava/net/URI;->lowMask(CC)J
-Ljava/net/URI;->lowMask(Ljava/lang/String;)J
-Ljava/net/URI;->L_ALPHA:J
-Ljava/net/URI;->L_ALPHANUM:J
-Ljava/net/URI;->L_DASH:J
-Ljava/net/URI;->L_DIGIT:J
-Ljava/net/URI;->L_DOT:J
-Ljava/net/URI;->L_ESCAPED:J
-Ljava/net/URI;->L_HEX:J
-Ljava/net/URI;->L_LEFT_BRACKET:J
-Ljava/net/URI;->L_LOWALPHA:J
-Ljava/net/URI;->L_MARK:J
-Ljava/net/URI;->L_PATH:J
-Ljava/net/URI;->L_PCHAR:J
-Ljava/net/URI;->L_REG_NAME:J
-Ljava/net/URI;->L_RESERVED:J
-Ljava/net/URI;->L_SCHEME:J
-Ljava/net/URI;->L_SERVER:J
-Ljava/net/URI;->L_SERVER_PERCENT:J
-Ljava/net/URI;->L_UNDERSCORE:J
-Ljava/net/URI;->L_UNRESERVED:J
-Ljava/net/URI;->L_UPALPHA:J
-Ljava/net/URI;->L_URIC:J
-Ljava/net/URI;->L_URIC_NO_SLASH:J
-Ljava/net/URI;->L_USERINFO:J
-Ljava/net/URI;->match(CJJ)Z
-Ljava/net/URI;->maybeAddLeadingDot([C[I)V
-Ljava/net/URI;->needsNormalization(Ljava/lang/String;)I
-Ljava/net/URI;->normalize(Ljava/lang/String;)Ljava/lang/String;
-Ljava/net/URI;->normalize(Ljava/lang/String;Z)Ljava/lang/String;
-Ljava/net/URI;->normalize(Ljava/net/URI;)Ljava/net/URI;
-Ljava/net/URI;->normalizedHash(ILjava/lang/String;)I
-Ljava/net/URI;->path:Ljava/lang/String;
-Ljava/net/URI;->quote(Ljava/lang/String;JJ)Ljava/lang/String;
-Ljava/net/URI;->relativize(Ljava/net/URI;Ljava/net/URI;)Ljava/net/URI;
-Ljava/net/URI;->removeDots([C[IZ)V
-Ljava/net/URI;->resolve(Ljava/net/URI;Ljava/net/URI;)Ljava/net/URI;
-Ljava/net/URI;->resolvePath(Ljava/lang/String;Ljava/lang/String;Z)Ljava/lang/String;
-Ljava/net/URI;->scheme:Ljava/lang/String;
-Ljava/net/URI;->schemeSpecificPart:Ljava/lang/String;
-Ljava/net/URI;->split([C[I)V
-Ljava/net/URI;->toLower(C)I
-Ljava/net/URI;->toString(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
-Ljava/net/URI;->toUpper(C)I
-Ljava/net/URI;->userInfo:Ljava/lang/String;
-Ljava/net/URISyntaxException;->index:I
-Ljava/net/URISyntaxException;->input:Ljava/lang/String;
-Ljava/net/URL;->authority:Ljava/lang/String;
-Ljava/net/URL;->BUILTIN_HANDLER_CLASS_NAMES:Ljava/util/Set;
-Ljava/net/URL;->checkSpecifyHandler(Ljava/lang/SecurityManager;)V
-Ljava/net/URL;->createBuiltinHandler(Ljava/lang/String;)Ljava/net/URLStreamHandler;
-Ljava/net/URL;->createBuiltinHandlerClassNames()Ljava/util/Set;
-Ljava/net/URL;->fabricateNewURL()Ljava/net/URL;
-Ljava/net/URL;->file:Ljava/lang/String;
-Ljava/net/URL;->getURLStreamHandler(Ljava/lang/String;)Ljava/net/URLStreamHandler;
-Ljava/net/URL;->hashCode:I
-Ljava/net/URL;->host:Ljava/lang/String;
-Ljava/net/URL;->hostAddress:Ljava/net/InetAddress;
-Ljava/net/URL;->isBuiltinStreamHandler(Ljava/lang/String;)Z
-Ljava/net/URL;->isValidProtocol(Ljava/lang/String;)Z
-Ljava/net/URL;->path:Ljava/lang/String;
-Ljava/net/URL;->port:I
-Ljava/net/URL;->protocolPathProp:Ljava/lang/String;
-Ljava/net/URL;->query:Ljava/lang/String;
-Ljava/net/URL;->ref:Ljava/lang/String;
-Ljava/net/URL;->resetState()V
-Ljava/net/URL;->set(Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;)V
-Ljava/net/URL;->set(Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
-Ljava/net/URL;->setDeserializedFields(Ljava/net/URLStreamHandler;)Ljava/net/URL;
-Ljava/net/URL;->setSerializedHashCode(I)V
-Ljava/net/URL;->streamHandlerLock:Ljava/lang/Object;
-Ljava/net/URL;->tempState:Ljava/net/UrlDeserializedState;
-Ljava/net/URL;->userInfo:Ljava/lang/String;
-Ljava/net/URLClassLoader;-><init>([Ljava/net/URL;Ljava/lang/ClassLoader;Ljava/security/AccessControlContext;)V
-Ljava/net/URLClassLoader;-><init>([Ljava/net/URL;Ljava/security/AccessControlContext;)V
-Ljava/net/URLClassLoader;->closeables:Ljava/util/WeakHashMap;
-Ljava/net/URLClassLoader;->defineClass(Ljava/lang/String;Lsun/misc/Resource;)Ljava/lang/Class;
-Ljava/net/URLClassLoader;->definePackageInternal(Ljava/lang/String;Ljava/util/jar/Manifest;Ljava/net/URL;)V
-Ljava/net/URLClassLoader;->getAndVerifyPackage(Ljava/lang/String;Ljava/util/jar/Manifest;Ljava/net/URL;)Ljava/lang/Package;
-Ljava/net/URLClassLoader;->isSealed(Ljava/lang/String;Ljava/util/jar/Manifest;)Z
-Ljava/net/URLConnection;->checkfpx(Ljava/io/InputStream;)Z
-Ljava/net/URLConnection;->connectTimeout:I
-Ljava/net/URLConnection;->contentClassPrefix:Ljava/lang/String;
-Ljava/net/URLConnection;->contentPathProp:Ljava/lang/String;
-Ljava/net/URLConnection;->defaultAllowUserInteraction:Z
-Ljava/net/URLConnection;->defaultUseCaches:Z
-Ljava/net/URLConnection;->factory:Ljava/net/ContentHandlerFactory;
-Ljava/net/URLConnection;->fileNameMap:Ljava/net/FileNameMap;
-Ljava/net/URLConnection;->getContentHandler()Ljava/net/ContentHandler;
-Ljava/net/URLConnection;->getContentHandlerPkgPrefixes()Ljava/lang/String;
-Ljava/net/URLConnection;->handlers:Ljava/util/Hashtable;
-Ljava/net/URLConnection;->lookupContentHandlerClassFor(Ljava/lang/String;)Ljava/net/ContentHandler;
-Ljava/net/URLConnection;->readBytes([IILjava/io/InputStream;)I
-Ljava/net/URLConnection;->readTimeout:I
-Ljava/net/URLConnection;->requests:Lsun/net/www/MessageHeader;
-Ljava/net/URLConnection;->skipForward(Ljava/io/InputStream;J)J
-Ljava/net/URLConnection;->stripOffParameters(Ljava/lang/String;)Ljava/lang/String;
-Ljava/net/URLConnection;->typeToPackageName(Ljava/lang/String;)Ljava/lang/String;
-Ljava/net/URLDecoder;->dfltEncName:Ljava/lang/String;
-Ljava/net/URLDecoder;->isValidHexChar(C)Z
-Ljava/net/UrlDeserializedState;-><init>(Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;I)V
-Ljava/net/UrlDeserializedState;->authority:Ljava/lang/String;
-Ljava/net/UrlDeserializedState;->file:Ljava/lang/String;
-Ljava/net/UrlDeserializedState;->getAuthority()Ljava/lang/String;
-Ljava/net/UrlDeserializedState;->getFile()Ljava/lang/String;
-Ljava/net/UrlDeserializedState;->getHashCode()I
-Ljava/net/UrlDeserializedState;->getHost()Ljava/lang/String;
-Ljava/net/UrlDeserializedState;->getPort()I
-Ljava/net/UrlDeserializedState;->getProtocol()Ljava/lang/String;
-Ljava/net/UrlDeserializedState;->getRef()Ljava/lang/String;
-Ljava/net/UrlDeserializedState;->hashCode:I
-Ljava/net/UrlDeserializedState;->host:Ljava/lang/String;
-Ljava/net/UrlDeserializedState;->port:I
-Ljava/net/UrlDeserializedState;->protocol:Ljava/lang/String;
-Ljava/net/UrlDeserializedState;->reconstituteUrlString()Ljava/lang/String;
-Ljava/net/UrlDeserializedState;->ref:Ljava/lang/String;
-Ljava/net/URLEncoder;-><init>()V
-Ljava/net/URLEncoder;->caseDiff:I
-Ljava/net/URLEncoder;->dfltEncName:Ljava/lang/String;
-Ljava/net/URLEncoder;->dontNeedEncoding:Ljava/util/BitSet;
-Ljava/nio/Buffer;-><init>(IIIII)V
-Ljava/nio/Buffer;->checkBounds(III)V
-Ljava/nio/Buffer;->checkIndex(I)I
-Ljava/nio/Buffer;->checkIndex(II)I
-Ljava/nio/Buffer;->discardMark()V
-Ljava/nio/Buffer;->getElementSizeShift()I
-Ljava/nio/Buffer;->mark:I
-Ljava/nio/Buffer;->markValue()I
-Ljava/nio/Buffer;->nextGetIndex()I
-Ljava/nio/Buffer;->nextGetIndex(I)I
-Ljava/nio/Buffer;->nextPutIndex()I
-Ljava/nio/Buffer;->nextPutIndex(I)I
-Ljava/nio/Buffer;->SPLITERATOR_CHARACTERISTICS:I
-Ljava/nio/Buffer;->truncate()V
-Ljava/nio/ByteBuffer;-><init>(IIII)V
-Ljava/nio/ByteBuffer;-><init>(IIII[BI)V
-Ljava/nio/ByteBuffer;->bigEndian:Z
-Ljava/nio/ByteBuffer;->compare(BB)I
-Ljava/nio/ByteBuffer;->equals(BB)Z
-Ljava/nio/ByteBuffer;->getCharUnchecked(I)C
-Ljava/nio/ByteBuffer;->getDoubleUnchecked(I)D
-Ljava/nio/ByteBuffer;->getFloatUnchecked(I)F
-Ljava/nio/ByteBuffer;->getIntUnchecked(I)I
-Ljava/nio/ByteBuffer;->getLongUnchecked(I)J
-Ljava/nio/ByteBuffer;->getShortUnchecked(I)S
-Ljava/nio/ByteBuffer;->getUnchecked(I[CII)V
-Ljava/nio/ByteBuffer;->getUnchecked(I[DII)V
-Ljava/nio/ByteBuffer;->getUnchecked(I[FII)V
-Ljava/nio/ByteBuffer;->getUnchecked(I[III)V
-Ljava/nio/ByteBuffer;->getUnchecked(I[JII)V
-Ljava/nio/ByteBuffer;->getUnchecked(I[SII)V
-Ljava/nio/ByteBuffer;->isAccessible()Z
-Ljava/nio/ByteBuffer;->nativeByteOrder:Z
-Ljava/nio/ByteBuffer;->putCharUnchecked(IC)V
-Ljava/nio/ByteBuffer;->putDoubleUnchecked(ID)V
-Ljava/nio/ByteBuffer;->putFloatUnchecked(IF)V
-Ljava/nio/ByteBuffer;->putIntUnchecked(II)V
-Ljava/nio/ByteBuffer;->putLongUnchecked(IJ)V
-Ljava/nio/ByteBuffer;->putShortUnchecked(IS)V
-Ljava/nio/ByteBuffer;->putUnchecked(I[CII)V
-Ljava/nio/ByteBuffer;->putUnchecked(I[DII)V
-Ljava/nio/ByteBuffer;->putUnchecked(I[FII)V
-Ljava/nio/ByteBuffer;->putUnchecked(I[III)V
-Ljava/nio/ByteBuffer;->putUnchecked(I[JII)V
-Ljava/nio/ByteBuffer;->putUnchecked(I[SII)V
-Ljava/nio/ByteBuffer;->setAccessible(Z)V
-Ljava/nio/ByteBuffer;->_get(I)B
-Ljava/nio/ByteBuffer;->_put(IB)V
-Ljava/nio/ByteOrder;-><init>(Ljava/lang/String;)V
-Ljava/nio/ByteOrder;->name:Ljava/lang/String;
-Ljava/nio/channels/AsynchronousChannelGroup;->provider:Ljava/nio/channels/spi/AsynchronousChannelProvider;
-Ljava/nio/channels/AsynchronousFileChannel;->NO_ATTRIBUTES:[Ljava/nio/file/attribute/FileAttribute;
-Ljava/nio/channels/AsynchronousServerSocketChannel;->provider:Ljava/nio/channels/spi/AsynchronousChannelProvider;
-Ljava/nio/channels/AsynchronousSocketChannel;->provider:Ljava/nio/channels/spi/AsynchronousChannelProvider;
-Ljava/nio/channels/Channels$ReadableByteChannelImpl;-><init>(Ljava/io/InputStream;)V
-Ljava/nio/channels/Channels$ReadableByteChannelImpl;->buf:[B
-Ljava/nio/channels/Channels$ReadableByteChannelImpl;->in:Ljava/io/InputStream;
-Ljava/nio/channels/Channels$ReadableByteChannelImpl;->open:Z
-Ljava/nio/channels/Channels$ReadableByteChannelImpl;->readLock:Ljava/lang/Object;
-Ljava/nio/channels/Channels$ReadableByteChannelImpl;->TRANSFER_SIZE:I
-Ljava/nio/channels/Channels$WritableByteChannelImpl;-><init>(Ljava/io/OutputStream;)V
-Ljava/nio/channels/Channels$WritableByteChannelImpl;->buf:[B
-Ljava/nio/channels/Channels$WritableByteChannelImpl;->open:Z
-Ljava/nio/channels/Channels$WritableByteChannelImpl;->out:Ljava/io/OutputStream;
-Ljava/nio/channels/Channels$WritableByteChannelImpl;->TRANSFER_SIZE:I
-Ljava/nio/channels/Channels$WritableByteChannelImpl;->writeLock:Ljava/lang/Object;
-Ljava/nio/channels/Channels;-><init>()V
-Ljava/nio/channels/Channels;->checkNotNull(Ljava/lang/Object;Ljava/lang/String;)V
-Ljava/nio/channels/Channels;->writeFully(Ljava/nio/channels/WritableByteChannel;Ljava/nio/ByteBuffer;)V
-Ljava/nio/channels/Channels;->writeFullyImpl(Ljava/nio/channels/WritableByteChannel;Ljava/nio/ByteBuffer;)V
-Ljava/nio/channels/FileChannel$MapMode;-><init>(Ljava/lang/String;)V
-Ljava/nio/channels/FileChannel$MapMode;->name:Ljava/lang/String;
-Ljava/nio/channels/FileChannel;->NO_ATTRIBUTES:[Ljava/nio/file/attribute/FileAttribute;
-Ljava/nio/channels/FileLock;->channel:Ljava/nio/channels/Channel;
-Ljava/nio/channels/FileLock;->position:J
-Ljava/nio/channels/FileLock;->shared:Z
-Ljava/nio/channels/FileLock;->size:J
-Ljava/nio/channels/SelectionKey;->attachment:Ljava/lang/Object;
-Ljava/nio/channels/SelectionKey;->attachmentUpdater:Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater;
-Ljava/nio/channels/spi/AbstractInterruptibleChannel;->blockedOn(Lsun/nio/ch/Interruptible;)V
-Ljava/nio/channels/spi/AbstractInterruptibleChannel;->closeLock:Ljava/lang/Object;
-Ljava/nio/channels/spi/AbstractInterruptibleChannel;->interrupted:Ljava/lang/Thread;
-Ljava/nio/channels/spi/AbstractInterruptibleChannel;->interruptor:Lsun/nio/ch/Interruptible;
-Ljava/nio/channels/spi/AbstractInterruptibleChannel;->open:Z
-Ljava/nio/channels/spi/AbstractSelectableChannel;->addKey(Ljava/nio/channels/SelectionKey;)V
-Ljava/nio/channels/spi/AbstractSelectableChannel;->blocking:Z
-Ljava/nio/channels/spi/AbstractSelectableChannel;->findKey(Ljava/nio/channels/Selector;)Ljava/nio/channels/SelectionKey;
-Ljava/nio/channels/spi/AbstractSelectableChannel;->haveValidKeys()Z
-Ljava/nio/channels/spi/AbstractSelectableChannel;->keyCount:I
-Ljava/nio/channels/spi/AbstractSelectableChannel;->keyLock:Ljava/lang/Object;
-Ljava/nio/channels/spi/AbstractSelectableChannel;->keys:[Ljava/nio/channels/SelectionKey;
-Ljava/nio/channels/spi/AbstractSelectableChannel;->provider:Ljava/nio/channels/spi/SelectorProvider;
-Ljava/nio/channels/spi/AbstractSelectableChannel;->regLock:Ljava/lang/Object;
-Ljava/nio/channels/spi/AbstractSelectableChannel;->removeKey(Ljava/nio/channels/SelectionKey;)V
-Ljava/nio/channels/spi/AbstractSelectionKey;->invalidate()V
-Ljava/nio/channels/spi/AbstractSelectionKey;->valid:Z
-Ljava/nio/channels/spi/AbstractSelector;->cancel(Ljava/nio/channels/SelectionKey;)V
-Ljava/nio/channels/spi/AbstractSelector;->cancelledKeys:Ljava/util/Set;
-Ljava/nio/channels/spi/AbstractSelector;->interruptor:Lsun/nio/ch/Interruptible;
-Ljava/nio/channels/spi/AbstractSelector;->provider:Ljava/nio/channels/spi/SelectorProvider;
-Ljava/nio/channels/spi/AbstractSelector;->selectorOpen:Ljava/util/concurrent/atomic/AtomicBoolean;
-Ljava/nio/channels/spi/AsynchronousChannelProvider$ProviderHolder;-><init>()V
-Ljava/nio/channels/spi/AsynchronousChannelProvider$ProviderHolder;->load()Ljava/nio/channels/spi/AsynchronousChannelProvider;
-Ljava/nio/channels/spi/AsynchronousChannelProvider$ProviderHolder;->loadProviderAsService()Ljava/nio/channels/spi/AsynchronousChannelProvider;
-Ljava/nio/channels/spi/AsynchronousChannelProvider$ProviderHolder;->loadProviderFromProperty()Ljava/nio/channels/spi/AsynchronousChannelProvider;
-Ljava/nio/channels/spi/AsynchronousChannelProvider$ProviderHolder;->provider:Ljava/nio/channels/spi/AsynchronousChannelProvider;
-Ljava/nio/channels/spi/AsynchronousChannelProvider;-><init>(Ljava/lang/Void;)V
-Ljava/nio/channels/spi/AsynchronousChannelProvider;->checkPermission()Ljava/lang/Void;
-Ljava/nio/channels/spi/SelectorProvider;->loadProviderAsService()Z
-Ljava/nio/channels/spi/SelectorProvider;->loadProviderFromProperty()Z
-Ljava/nio/channels/spi/SelectorProvider;->lock:Ljava/lang/Object;
-Ljava/nio/channels/spi/SelectorProvider;->provider:Ljava/nio/channels/spi/SelectorProvider;
-Ljava/nio/CharBuffer;-><init>(IIII)V
-Ljava/nio/CharBuffer;-><init>(IIII[CI)V
-Ljava/nio/CharBuffer;->compare(CC)I
-Ljava/nio/CharBuffer;->equals(CC)Z
-Ljava/nio/CharBuffer;->getUnchecked(I)C
-Ljava/nio/CharBuffer;->hb:[C
-Ljava/nio/CharBuffer;->isReadOnly:Z
-Ljava/nio/CharBuffer;->offset:I
-Ljava/nio/charset/Charset;->aliases:[Ljava/lang/String;
-Ljava/nio/charset/Charset;->aliasSet:Ljava/util/Set;
-Ljava/nio/charset/Charset;->atBugLevel(Ljava/lang/String;)Z
-Ljava/nio/charset/Charset;->bugLevel:Ljava/lang/String;
-Ljava/nio/charset/Charset;->cache(Ljava/lang/String;Ljava/nio/charset/Charset;)V
-Ljava/nio/charset/Charset;->cache1:Ljava/util/Map$Entry;
-Ljava/nio/charset/Charset;->cache2:Ljava/util/HashMap;
-Ljava/nio/charset/Charset;->checkName(Ljava/lang/String;)V
-Ljava/nio/charset/Charset;->forNameUEE(Ljava/lang/String;)Ljava/nio/charset/Charset;
-Ljava/nio/charset/Charset;->gate:Ljava/lang/ThreadLocal;
-Ljava/nio/charset/Charset;->lookup(Ljava/lang/String;)Ljava/nio/charset/Charset;
-Ljava/nio/charset/Charset;->lookup2(Ljava/lang/String;)Ljava/nio/charset/Charset;
-Ljava/nio/charset/Charset;->lookupViaProviders(Ljava/lang/String;)Ljava/nio/charset/Charset;
-Ljava/nio/charset/Charset;->name:Ljava/lang/String;
-Ljava/nio/charset/Charset;->providers()Ljava/util/Iterator;
-Ljava/nio/charset/Charset;->put(Ljava/util/Iterator;Ljava/util/Map;)V
-Ljava/nio/charset/CharsetDecoder;-><init>(Ljava/nio/charset/Charset;FFLjava/lang/String;)V
-Ljava/nio/charset/CharsetDecoder;->averageCharsPerByte:F
-Ljava/nio/charset/CharsetDecoder;->charset:Ljava/nio/charset/Charset;
-Ljava/nio/charset/CharsetDecoder;->malformedInputAction:Ljava/nio/charset/CodingErrorAction;
-Ljava/nio/charset/CharsetDecoder;->maxCharsPerByte:F
-Ljava/nio/charset/CharsetDecoder;->replacement:Ljava/lang/String;
-Ljava/nio/charset/CharsetDecoder;->state:I
-Ljava/nio/charset/CharsetDecoder;->stateNames:[Ljava/lang/String;
-Ljava/nio/charset/CharsetDecoder;->ST_CODING:I
-Ljava/nio/charset/CharsetDecoder;->ST_END:I
-Ljava/nio/charset/CharsetDecoder;->ST_FLUSHED:I
-Ljava/nio/charset/CharsetDecoder;->ST_RESET:I
-Ljava/nio/charset/CharsetDecoder;->throwIllegalStateException(II)V
-Ljava/nio/charset/CharsetDecoder;->unmappableCharacterAction:Ljava/nio/charset/CodingErrorAction;
-Ljava/nio/charset/CharsetEncoder;-><init>(Ljava/nio/charset/Charset;FF[BZ)V
-Ljava/nio/charset/CharsetEncoder;->averageBytesPerChar:F
-Ljava/nio/charset/CharsetEncoder;->cachedDecoder:Ljava/lang/ref/WeakReference;
-Ljava/nio/charset/CharsetEncoder;->charset:Ljava/nio/charset/Charset;
-Ljava/nio/charset/CharsetEncoder;->malformedInputAction:Ljava/nio/charset/CodingErrorAction;
-Ljava/nio/charset/CharsetEncoder;->maxBytesPerChar:F
-Ljava/nio/charset/CharsetEncoder;->replacement:[B
-Ljava/nio/charset/CharsetEncoder;->state:I
-Ljava/nio/charset/CharsetEncoder;->stateNames:[Ljava/lang/String;
-Ljava/nio/charset/CharsetEncoder;->ST_CODING:I
-Ljava/nio/charset/CharsetEncoder;->ST_END:I
-Ljava/nio/charset/CharsetEncoder;->ST_FLUSHED:I
-Ljava/nio/charset/CharsetEncoder;->ST_RESET:I
-Ljava/nio/charset/CharsetEncoder;->throwIllegalStateException(II)V
-Ljava/nio/charset/CharsetEncoder;->unmappableCharacterAction:Ljava/nio/charset/CodingErrorAction;
-Ljava/nio/charset/CoderResult$Cache;-><init>()V
-Ljava/nio/charset/CoderResult$Cache;->cache:Ljava/util/Map;
-Ljava/nio/charset/CoderResult$Cache;->create(I)Ljava/nio/charset/CoderResult;
-Ljava/nio/charset/CoderResult$Cache;->get(I)Ljava/nio/charset/CoderResult;
-Ljava/nio/charset/CoderResult;-><init>(II)V
-Ljava/nio/charset/CoderResult;->CR_ERROR_MIN:I
-Ljava/nio/charset/CoderResult;->CR_MALFORMED:I
-Ljava/nio/charset/CoderResult;->CR_OVERFLOW:I
-Ljava/nio/charset/CoderResult;->CR_UNDERFLOW:I
-Ljava/nio/charset/CoderResult;->CR_UNMAPPABLE:I
-Ljava/nio/charset/CoderResult;->length:I
-Ljava/nio/charset/CoderResult;->malformedCache:Ljava/nio/charset/CoderResult$Cache;
-Ljava/nio/charset/CoderResult;->names:[Ljava/lang/String;
-Ljava/nio/charset/CoderResult;->type:I
-Ljava/nio/charset/CoderResult;->unmappableCache:Ljava/nio/charset/CoderResult$Cache;
-Ljava/nio/charset/CodingErrorAction;-><init>(Ljava/lang/String;)V
-Ljava/nio/charset/CodingErrorAction;->name:Ljava/lang/String;
-Ljava/nio/charset/IllegalCharsetNameException;->charsetName:Ljava/lang/String;
-Ljava/nio/charset/MalformedInputException;->inputLength:I
-Ljava/nio/charset/ModifiedUtf8;-><init>()V
-Ljava/nio/charset/ModifiedUtf8;->countBytes(Ljava/lang/String;Z)J
-Ljava/nio/charset/ModifiedUtf8;->decode([B[CII)Ljava/lang/String;
-Ljava/nio/charset/ModifiedUtf8;->encode(Ljava/lang/String;)[B
-Ljava/nio/charset/ModifiedUtf8;->encode([BILjava/lang/String;)V
-Ljava/nio/charset/StandardCharsets;-><init>()V
-Ljava/nio/charset/UnmappableCharacterException;->inputLength:I
-Ljava/nio/charset/UnsupportedCharsetException;->charsetName:Ljava/lang/String;
-Ljava/nio/DirectByteBuffer$MemoryRef;-><init>(I)V
-Ljava/nio/DirectByteBuffer$MemoryRef;-><init>(JLjava/lang/Object;)V
-Ljava/nio/DirectByteBuffer$MemoryRef;->allocatedAddress:J
-Ljava/nio/DirectByteBuffer$MemoryRef;->buffer:[B
-Ljava/nio/DirectByteBuffer$MemoryRef;->free()V
-Ljava/nio/DirectByteBuffer$MemoryRef;->isAccessible:Z
-Ljava/nio/DirectByteBuffer$MemoryRef;->isFreed:Z
-Ljava/nio/DirectByteBuffer$MemoryRef;->offset:I
-Ljava/nio/DirectByteBuffer$MemoryRef;->originalBufferObject:Ljava/lang/Object;
-Ljava/nio/DirectByteBuffer;-><init>(IJLjava/io/FileDescriptor;Ljava/lang/Runnable;Z)V
-Ljava/nio/DirectByteBuffer;-><init>(ILjava/nio/DirectByteBuffer$MemoryRef;)V
-Ljava/nio/DirectByteBuffer;-><init>(Ljava/nio/DirectByteBuffer$MemoryRef;IIIII)V
-Ljava/nio/DirectByteBuffer;-><init>(Ljava/nio/DirectByteBuffer$MemoryRef;IIIIIZ)V
-Ljava/nio/DirectByteBuffer;->cleaner:Lsun/misc/Cleaner;
-Ljava/nio/DirectByteBuffer;->get(J)B
-Ljava/nio/DirectByteBuffer;->getCharUnchecked(I)C
-Ljava/nio/DirectByteBuffer;->getDouble(J)D
-Ljava/nio/DirectByteBuffer;->getDoubleUnchecked(I)D
-Ljava/nio/DirectByteBuffer;->getFloat(J)F
-Ljava/nio/DirectByteBuffer;->getFloatUnchecked(I)F
-Ljava/nio/DirectByteBuffer;->getInt(J)I
-Ljava/nio/DirectByteBuffer;->getIntUnchecked(I)I
-Ljava/nio/DirectByteBuffer;->getLong(J)J
-Ljava/nio/DirectByteBuffer;->getLongUnchecked(I)J
-Ljava/nio/DirectByteBuffer;->getShort(J)S
-Ljava/nio/DirectByteBuffer;->getShortUnchecked(I)S
-Ljava/nio/DirectByteBuffer;->getUnchecked(I[CII)V
-Ljava/nio/DirectByteBuffer;->getUnchecked(I[DII)V
-Ljava/nio/DirectByteBuffer;->getUnchecked(I[FII)V
-Ljava/nio/DirectByteBuffer;->getUnchecked(I[III)V
-Ljava/nio/DirectByteBuffer;->getUnchecked(I[JII)V
-Ljava/nio/DirectByteBuffer;->getUnchecked(I[SII)V
-Ljava/nio/DirectByteBuffer;->isAccessible()Z
-Ljava/nio/DirectByteBuffer;->ix(I)J
-Ljava/nio/DirectByteBuffer;->memoryRef:Ljava/nio/DirectByteBuffer$MemoryRef;
-Ljava/nio/DirectByteBuffer;->put(JB)Ljava/nio/ByteBuffer;
-Ljava/nio/DirectByteBuffer;->putChar(JC)Ljava/nio/ByteBuffer;
-Ljava/nio/DirectByteBuffer;->putCharUnchecked(IC)V
-Ljava/nio/DirectByteBuffer;->putDouble(JD)Ljava/nio/ByteBuffer;
-Ljava/nio/DirectByteBuffer;->putDoubleUnchecked(ID)V
-Ljava/nio/DirectByteBuffer;->putFloat(JF)Ljava/nio/ByteBuffer;
-Ljava/nio/DirectByteBuffer;->putFloatUnchecked(IF)V
-Ljava/nio/DirectByteBuffer;->putInt(JI)Ljava/nio/ByteBuffer;
-Ljava/nio/DirectByteBuffer;->putIntUnchecked(II)V
-Ljava/nio/DirectByteBuffer;->putLong(JJ)Ljava/nio/ByteBuffer;
-Ljava/nio/DirectByteBuffer;->putLongUnchecked(IJ)V
-Ljava/nio/DirectByteBuffer;->putShort(JS)Ljava/nio/ByteBuffer;
-Ljava/nio/DirectByteBuffer;->putShortUnchecked(IS)V
-Ljava/nio/DirectByteBuffer;->putUnchecked(I[CII)V
-Ljava/nio/DirectByteBuffer;->putUnchecked(I[DII)V
-Ljava/nio/DirectByteBuffer;->putUnchecked(I[FII)V
-Ljava/nio/DirectByteBuffer;->putUnchecked(I[III)V
-Ljava/nio/DirectByteBuffer;->putUnchecked(I[JII)V
-Ljava/nio/DirectByteBuffer;->putUnchecked(I[SII)V
-Ljava/nio/DirectByteBuffer;->setAccessible(Z)V
-Ljava/nio/DirectByteBuffer;->_get(I)B
-Ljava/nio/DirectByteBuffer;->_put(IB)V
-Ljava/nio/DoubleBuffer;-><init>(IIII)V
-Ljava/nio/DoubleBuffer;-><init>(IIII[DI)V
-Ljava/nio/DoubleBuffer;->compare(DD)I
-Ljava/nio/DoubleBuffer;->equals(DD)Z
-Ljava/nio/DoubleBuffer;->hb:[D
-Ljava/nio/DoubleBuffer;->isReadOnly:Z
-Ljava/nio/DoubleBuffer;->offset:I
-Ljava/nio/file/attribute/AclEntry$Builder;-><init>(Ljava/nio/file/attribute/AclEntryType;Ljava/nio/file/attribute/UserPrincipal;Ljava/util/Set;Ljava/util/Set;)V
-Ljava/nio/file/attribute/AclEntry$Builder;->checkSet(Ljava/util/Set;Ljava/lang/Class;)V
-Ljava/nio/file/attribute/AclEntry$Builder;->flags:Ljava/util/Set;
-Ljava/nio/file/attribute/AclEntry$Builder;->perms:Ljava/util/Set;
-Ljava/nio/file/attribute/AclEntry$Builder;->type:Ljava/nio/file/attribute/AclEntryType;
-Ljava/nio/file/attribute/AclEntry$Builder;->who:Ljava/nio/file/attribute/UserPrincipal;
-Ljava/nio/file/attribute/AclEntry;-><init>(Ljava/nio/file/attribute/AclEntryType;Ljava/nio/file/attribute/UserPrincipal;Ljava/util/Set;Ljava/util/Set;)V
-Ljava/nio/file/attribute/AclEntry;->flags:Ljava/util/Set;
-Ljava/nio/file/attribute/AclEntry;->hash(ILjava/lang/Object;)I
-Ljava/nio/file/attribute/AclEntry;->hash:I
-Ljava/nio/file/attribute/AclEntry;->perms:Ljava/util/Set;
-Ljava/nio/file/attribute/AclEntry;->type:Ljava/nio/file/attribute/AclEntryType;
-Ljava/nio/file/attribute/AclEntry;->who:Ljava/nio/file/attribute/UserPrincipal;
-Ljava/nio/file/attribute/FileTime;-><init>(JLjava/util/concurrent/TimeUnit;Ljava/time/Instant;)V
-Ljava/nio/file/attribute/FileTime;->append(Ljava/lang/StringBuilder;II)Ljava/lang/StringBuilder;
-Ljava/nio/file/attribute/FileTime;->DAYS_PER_10000_YEARS:J
-Ljava/nio/file/attribute/FileTime;->HOURS_PER_DAY:J
-Ljava/nio/file/attribute/FileTime;->instant:Ljava/time/Instant;
-Ljava/nio/file/attribute/FileTime;->MAX_SECOND:J
-Ljava/nio/file/attribute/FileTime;->MICROS_PER_SECOND:J
-Ljava/nio/file/attribute/FileTime;->MILLIS_PER_SECOND:J
-Ljava/nio/file/attribute/FileTime;->MINUTES_PER_HOUR:J
-Ljava/nio/file/attribute/FileTime;->MIN_SECOND:J
-Ljava/nio/file/attribute/FileTime;->NANOS_PER_MICRO:I
-Ljava/nio/file/attribute/FileTime;->NANOS_PER_MILLI:I
-Ljava/nio/file/attribute/FileTime;->NANOS_PER_SECOND:J
-Ljava/nio/file/attribute/FileTime;->scale(JJJ)J
-Ljava/nio/file/attribute/FileTime;->SECONDS_0000_TO_1970:J
-Ljava/nio/file/attribute/FileTime;->SECONDS_PER_10000_YEARS:J
-Ljava/nio/file/attribute/FileTime;->SECONDS_PER_DAY:J
-Ljava/nio/file/attribute/FileTime;->SECONDS_PER_HOUR:J
-Ljava/nio/file/attribute/FileTime;->SECONDS_PER_MINUTE:J
-Ljava/nio/file/attribute/FileTime;->toDays()J
-Ljava/nio/file/attribute/FileTime;->toExcessNanos(J)J
-Ljava/nio/file/attribute/FileTime;->unit:Ljava/util/concurrent/TimeUnit;
-Ljava/nio/file/attribute/FileTime;->value:J
-Ljava/nio/file/attribute/FileTime;->valueAsString:Ljava/lang/String;
-Ljava/nio/file/attribute/PosixFilePermissions;-><init>()V
-Ljava/nio/file/attribute/PosixFilePermissions;->isR(C)Z
-Ljava/nio/file/attribute/PosixFilePermissions;->isSet(CC)Z
-Ljava/nio/file/attribute/PosixFilePermissions;->isW(C)Z
-Ljava/nio/file/attribute/PosixFilePermissions;->isX(C)Z
-Ljava/nio/file/attribute/PosixFilePermissions;->writeBits(Ljava/lang/StringBuilder;ZZZ)V
-Ljava/nio/file/attribute/UserPrincipalNotFoundException;->name:Ljava/lang/String;
-Ljava/nio/file/Files$AcceptAllFilter;-><init>()V
-Ljava/nio/file/Files$AcceptAllFilter;->accept(Ljava/nio/file/Path;)Z
-Ljava/nio/file/Files$AcceptAllFilter;->FILTER:Ljava/nio/file/Files$AcceptAllFilter;
-Ljava/nio/file/Files$FileTypeDetectors;-><init>()V
-Ljava/nio/file/Files$FileTypeDetectors;->createDefaultFileTypeDetector()Ljava/nio/file/spi/FileTypeDetector;
-Ljava/nio/file/Files$FileTypeDetectors;->defaultFileTypeDetector:Ljava/nio/file/spi/FileTypeDetector;
-Ljava/nio/file/Files$FileTypeDetectors;->installeDetectors:Ljava/util/List;
-Ljava/nio/file/Files$FileTypeDetectors;->loadInstalledDetectors()Ljava/util/List;
-Ljava/nio/file/Files;-><init>()V
-Ljava/nio/file/Files;->asUncheckedRunnable(Ljava/io/Closeable;)Ljava/lang/Runnable;
-Ljava/nio/file/Files;->BUFFER_SIZE:I
-Ljava/nio/file/Files;->copy(Ljava/io/InputStream;Ljava/io/OutputStream;)J
-Ljava/nio/file/Files;->MAX_BUFFER_SIZE:I
-Ljava/nio/file/Files;->provider(Ljava/nio/file/Path;)Ljava/nio/file/spi/FileSystemProvider;
-Ljava/nio/file/Files;->read(Ljava/io/InputStream;I)[B
-Ljava/nio/file/FileSystemException;->file:Ljava/lang/String;
-Ljava/nio/file/FileSystemException;->other:Ljava/lang/String;
-Ljava/nio/file/FileSystems$DefaultFileSystemHolder;-><init>()V
-Ljava/nio/file/FileSystems$DefaultFileSystemHolder;->defaultFileSystem()Ljava/nio/file/FileSystem;
-Ljava/nio/file/FileSystems$DefaultFileSystemHolder;->defaultFileSystem:Ljava/nio/file/FileSystem;
-Ljava/nio/file/FileSystems$DefaultFileSystemHolder;->getDefaultProvider()Ljava/nio/file/spi/FileSystemProvider;
-Ljava/nio/file/FileSystems;-><init>()V
-Ljava/nio/file/InvalidPathException;->index:I
-Ljava/nio/file/InvalidPathException;->input:Ljava/lang/String;
-Ljava/nio/file/LinkPermission;->checkName(Ljava/lang/String;)V
-Ljava/nio/file/Paths;-><init>()V
-Ljava/nio/file/spi/FileSystemProvider;-><init>(Ljava/lang/Void;)V
-Ljava/nio/file/spi/FileSystemProvider;->checkPermission()Ljava/lang/Void;
-Ljava/nio/file/spi/FileSystemProvider;->installedProviders:Ljava/util/List;
-Ljava/nio/file/spi/FileSystemProvider;->loadingProviders:Z
-Ljava/nio/file/spi/FileSystemProvider;->loadInstalledProviders()Ljava/util/List;
-Ljava/nio/file/spi/FileSystemProvider;->lock:Ljava/lang/Object;
-Ljava/nio/file/spi/FileTypeDetector;-><init>(Ljava/lang/Void;)V
-Ljava/nio/file/spi/FileTypeDetector;->checkPermission()Ljava/lang/Void;
-Ljava/nio/file/StandardWatchEventKinds$StdWatchEventKind;-><init>(Ljava/lang/String;Ljava/lang/Class;)V
-Ljava/nio/file/StandardWatchEventKinds$StdWatchEventKind;->name:Ljava/lang/String;
-Ljava/nio/file/StandardWatchEventKinds$StdWatchEventKind;->type:Ljava/lang/Class;
-Ljava/nio/file/StandardWatchEventKinds;-><init>()V
-Ljava/nio/FloatBuffer;-><init>(IIII)V
-Ljava/nio/FloatBuffer;-><init>(IIII[FI)V
-Ljava/nio/FloatBuffer;->compare(FF)I
-Ljava/nio/FloatBuffer;->equals(FF)Z
-Ljava/nio/FloatBuffer;->hb:[F
-Ljava/nio/FloatBuffer;->isReadOnly:Z
-Ljava/nio/FloatBuffer;->offset:I
-Ljava/nio/IntBuffer;-><init>(IIII)V
-Ljava/nio/IntBuffer;-><init>(IIII[II)V
-Ljava/nio/IntBuffer;->compare(II)I
-Ljava/nio/IntBuffer;->equals(II)Z
-Ljava/nio/IntBuffer;->hb:[I
-Ljava/nio/IntBuffer;->isReadOnly:Z
-Ljava/nio/IntBuffer;->offset:I
-Ljava/nio/LongBuffer;-><init>(IIII)V
-Ljava/nio/LongBuffer;-><init>(IIII[JI)V
-Ljava/nio/LongBuffer;->compare(JJ)I
-Ljava/nio/LongBuffer;->equals(JJ)Z
-Ljava/nio/LongBuffer;->hb:[J
-Ljava/nio/LongBuffer;->isReadOnly:Z
-Ljava/nio/LongBuffer;->offset:I
-Ljava/nio/MappedByteBuffer;-><init>(IIII)V
-Ljava/nio/MappedByteBuffer;-><init>(IIIILjava/io/FileDescriptor;)V
-Ljava/nio/MappedByteBuffer;-><init>(IIII[BI)V
-Ljava/nio/MappedByteBuffer;->checkMapped()V
-Ljava/nio/MappedByteBuffer;->fd:Ljava/io/FileDescriptor;
-Ljava/nio/MappedByteBuffer;->force0(Ljava/io/FileDescriptor;JJ)V
-Ljava/nio/MappedByteBuffer;->isLoaded0(JJI)Z
-Ljava/nio/MappedByteBuffer;->load0(JJ)V
-Ljava/nio/MappedByteBuffer;->mappingAddress(J)J
-Ljava/nio/MappedByteBuffer;->mappingLength(J)J
-Ljava/nio/MappedByteBuffer;->mappingOffset()J
-Ljava/nio/MappedByteBuffer;->unused:B
-Ljava/nio/NIOAccess;-><init>()V
-Ljava/nio/NioUtils;-><init>()V
-Ljava/nio/NioUtils;->getFD(Ljava/nio/channels/FileChannel;)Ljava/io/FileDescriptor;
-Ljava/nio/NioUtils;->newFileChannel(Ljava/io/Closeable;Ljava/io/FileDescriptor;I)Ljava/nio/channels/FileChannel;
-Ljava/nio/ShortBuffer;-><init>(IIII)V
-Ljava/nio/ShortBuffer;-><init>(IIII[SI)V
-Ljava/nio/ShortBuffer;->compare(SS)I
-Ljava/nio/ShortBuffer;->equals(SS)Z
-Ljava/nio/ShortBuffer;->hb:[S
-Ljava/nio/ShortBuffer;->isReadOnly:Z
-Ljava/nio/ShortBuffer;->offset:I
-Ljava/security/AccessControlException;->perm:Ljava/security/Permission;
-Ljava/security/AccessController;-><init>()V
-Ljava/security/AlgorithmParameterGenerator;->algorithm:Ljava/lang/String;
-Ljava/security/AlgorithmParameterGenerator;->paramGenSpi:Ljava/security/AlgorithmParameterGeneratorSpi;
-Ljava/security/AlgorithmParameterGenerator;->provider:Ljava/security/Provider;
-Ljava/security/AlgorithmParameters;->algorithm:Ljava/lang/String;
-Ljava/security/AlgorithmParameters;->initialized:Z
-Ljava/security/AlgorithmParameters;->paramSpi:Ljava/security/AlgorithmParametersSpi;
-Ljava/security/AlgorithmParameters;->provider:Ljava/security/Provider;
-Ljava/security/cert/Certificate$CertificateRep;->data:[B
-Ljava/security/cert/Certificate$CertificateRep;->type:Ljava/lang/String;
-Ljava/security/cert/Certificate;->hash:I
-Ljava/security/cert/Certificate;->type:Ljava/lang/String;
-Ljava/security/cert/CertificateFactory;->certFacSpi:Ljava/security/cert/CertificateFactorySpi;
-Ljava/security/cert/CertificateFactory;->provider:Ljava/security/Provider;
-Ljava/security/cert/CertificateFactory;->type:Ljava/lang/String;
-Ljava/security/cert/CertificateRevokedException;->authority:Ljavax/security/auth/x500/X500Principal;
-Ljava/security/cert/CertificateRevokedException;->extensions:Ljava/util/Map;
-Ljava/security/cert/CertificateRevokedException;->reason:Ljava/security/cert/CRLReason;
-Ljava/security/cert/CertificateRevokedException;->revocationDate:Ljava/util/Date;
-Ljava/security/cert/CertPath$CertPathRep;->data:[B
-Ljava/security/cert/CertPath$CertPathRep;->type:Ljava/lang/String;
-Ljava/security/cert/CertPath;->type:Ljava/lang/String;
-Ljava/security/cert/CertPathBuilder;->algorithm:Ljava/lang/String;
-Ljava/security/cert/CertPathBuilder;->builderSpi:Ljava/security/cert/CertPathBuilderSpi;
-Ljava/security/cert/CertPathBuilder;->CPB_TYPE:Ljava/lang/String;
-Ljava/security/cert/CertPathBuilder;->provider:Ljava/security/Provider;
-Ljava/security/cert/CertPathValidator;->algorithm:Ljava/lang/String;
-Ljava/security/cert/CertPathValidator;->CPV_TYPE:Ljava/lang/String;
-Ljava/security/cert/CertPathValidator;->provider:Ljava/security/Provider;
-Ljava/security/cert/CertPathValidator;->validatorSpi:Ljava/security/cert/CertPathValidatorSpi;
-Ljava/security/cert/CertPathValidatorException;->certPath:Ljava/security/cert/CertPath;
-Ljava/security/cert/CertPathValidatorException;->index:I
-Ljava/security/cert/CertPathValidatorException;->reason:Ljava/security/cert/CertPathValidatorException$Reason;
-Ljava/security/cert/CertStore;->CERTSTORE_TYPE:Ljava/lang/String;
-Ljava/security/cert/CertStore;->handleException(Ljava/security/NoSuchAlgorithmException;)Ljava/security/cert/CertStore;
-Ljava/security/cert/CertStore;->params:Ljava/security/cert/CertStoreParameters;
-Ljava/security/cert/CertStore;->provider:Ljava/security/Provider;
-Ljava/security/cert/CertStore;->storeSpi:Ljava/security/cert/CertStoreSpi;
-Ljava/security/cert/CertStore;->type:Ljava/lang/String;
-Ljava/security/cert/CollectionCertStoreParameters;->coll:Ljava/util/Collection;
-Ljava/security/cert/CRL;->type:Ljava/lang/String;
-Ljava/security/cert/LDAPCertStoreParameters;->LDAP_DEFAULT_PORT:I
-Ljava/security/cert/LDAPCertStoreParameters;->port:I
-Ljava/security/cert/LDAPCertStoreParameters;->serverName:Ljava/lang/String;
-Ljava/security/cert/PKIXBuilderParameters;->maxPathLength:I
-Ljava/security/cert/PKIXCertPathBuilderResult;->certPath:Ljava/security/cert/CertPath;
-Ljava/security/cert/PKIXCertPathValidatorResult;->policyTree:Ljava/security/cert/PolicyNode;
-Ljava/security/cert/PKIXCertPathValidatorResult;->subjectPublicKey:Ljava/security/PublicKey;
-Ljava/security/cert/PKIXCertPathValidatorResult;->trustAnchor:Ljava/security/cert/TrustAnchor;
-Ljava/security/cert/PKIXParameters;->anyPolicyInhibited:Z
-Ljava/security/cert/PKIXParameters;->certPathCheckers:Ljava/util/List;
-Ljava/security/cert/PKIXParameters;->certSelector:Ljava/security/cert/CertSelector;
-Ljava/security/cert/PKIXParameters;->certStores:Ljava/util/List;
-Ljava/security/cert/PKIXParameters;->date:Ljava/util/Date;
-Ljava/security/cert/PKIXParameters;->explicitPolicyRequired:Z
-Ljava/security/cert/PKIXParameters;->policyMappingInhibited:Z
-Ljava/security/cert/PKIXParameters;->policyQualifiersRejected:Z
-Ljava/security/cert/PKIXParameters;->revocationEnabled:Z
-Ljava/security/cert/PKIXParameters;->sigProvider:Ljava/lang/String;
-Ljava/security/cert/PKIXParameters;->unmodInitialPolicies:Ljava/util/Set;
-Ljava/security/cert/PKIXParameters;->unmodTrustAnchors:Ljava/util/Set;
-Ljava/security/cert/PKIXRevocationChecker;->ocspExtensions:Ljava/util/List;
-Ljava/security/cert/PKIXRevocationChecker;->ocspResponder:Ljava/net/URI;
-Ljava/security/cert/PKIXRevocationChecker;->ocspResponderCert:Ljava/security/cert/X509Certificate;
-Ljava/security/cert/PKIXRevocationChecker;->ocspResponses:Ljava/util/Map;
-Ljava/security/cert/PKIXRevocationChecker;->options:Ljava/util/Set;
-Ljava/security/cert/PolicyQualifierInfo;->mData:[B
-Ljava/security/cert/PolicyQualifierInfo;->mEncoded:[B
-Ljava/security/cert/PolicyQualifierInfo;->mId:Ljava/lang/String;
-Ljava/security/cert/PolicyQualifierInfo;->pqiString:Ljava/lang/String;
-Ljava/security/cert/TrustAnchor;->caName:Ljava/lang/String;
-Ljava/security/cert/TrustAnchor;->caPrincipal:Ljavax/security/auth/x500/X500Principal;
-Ljava/security/cert/TrustAnchor;->nc:Lsun/security/x509/NameConstraintsExtension;
-Ljava/security/cert/TrustAnchor;->ncBytes:[B
-Ljava/security/cert/TrustAnchor;->pubKey:Ljava/security/PublicKey;
-Ljava/security/cert/TrustAnchor;->setNameConstraints([B)V
-Ljava/security/cert/TrustAnchor;->trustedCert:Ljava/security/cert/X509Certificate;
-Ljava/security/cert/X509Certificate;->issuerX500Principal:Ljavax/security/auth/x500/X500Principal;
-Ljava/security/cert/X509Certificate;->subjectX500Principal:Ljavax/security/auth/x500/X500Principal;
-Ljava/security/cert/X509CertSelector;->addPathToNameInternal(ILjava/lang/Object;)V
-Ljava/security/cert/X509CertSelector;->addSubjectAlternativeNameInternal(ILjava/lang/Object;)V
-Ljava/security/cert/X509CertSelector;->ANY_EXTENDED_KEY_USAGE:Lsun/security/util/ObjectIdentifier;
-Ljava/security/cert/X509CertSelector;->authorityKeyID:[B
-Ljava/security/cert/X509CertSelector;->basicConstraints:I
-Ljava/security/cert/X509CertSelector;->certificateValid:Ljava/util/Date;
-Ljava/security/cert/X509CertSelector;->CERT_POLICIES_ID:I
-Ljava/security/cert/X509CertSelector;->cloneAndCheckNames(Ljava/util/Collection;)Ljava/util/Set;
-Ljava/security/cert/X509CertSelector;->cloneNames(Ljava/util/Collection;)Ljava/util/Set;
-Ljava/security/cert/X509CertSelector;->cloneSet(Ljava/util/Set;)Ljava/util/Set;
-Ljava/security/cert/X509CertSelector;->debug:Lsun/security/util/Debug;
-Ljava/security/cert/X509CertSelector;->equalNames(Ljava/util/Collection;Ljava/util/Collection;)Z
-Ljava/security/cert/X509CertSelector;->EXTENDED_KEY_USAGE_ID:I
-Ljava/security/cert/X509CertSelector;->EXTENSION_OIDS:[Ljava/lang/String;
-Ljava/security/cert/X509CertSelector;->FALSE:Ljava/lang/Boolean;
-Ljava/security/cert/X509CertSelector;->getExtensionObject(Ljava/security/cert/X509Certificate;I)Ljava/security/cert/Extension;
-Ljava/security/cert/X509CertSelector;->issuer:Ljavax/security/auth/x500/X500Principal;
-Ljava/security/cert/X509CertSelector;->keyPurposeOIDSet:Ljava/util/Set;
-Ljava/security/cert/X509CertSelector;->keyPurposeSet:Ljava/util/Set;
-Ljava/security/cert/X509CertSelector;->keyUsage:[Z
-Ljava/security/cert/X509CertSelector;->keyUsageToString([Z)Ljava/lang/String;
-Ljava/security/cert/X509CertSelector;->makeGeneralNameInterface(ILjava/lang/Object;)Lsun/security/x509/GeneralNameInterface;
-Ljava/security/cert/X509CertSelector;->matchAllSubjectAltNames:Z
-Ljava/security/cert/X509CertSelector;->matchAuthorityKeyID(Ljava/security/cert/X509Certificate;)Z
-Ljava/security/cert/X509CertSelector;->matchBasicConstraints(Ljava/security/cert/X509Certificate;)Z
-Ljava/security/cert/X509CertSelector;->matchExcluded(Lsun/security/x509/GeneralSubtrees;)Z
-Ljava/security/cert/X509CertSelector;->matchExtendedKeyUsage(Ljava/security/cert/X509Certificate;)Z
-Ljava/security/cert/X509CertSelector;->matchKeyUsage(Ljava/security/cert/X509Certificate;)Z
-Ljava/security/cert/X509CertSelector;->matchNameConstraints(Ljava/security/cert/X509Certificate;)Z
-Ljava/security/cert/X509CertSelector;->matchPathToNames(Ljava/security/cert/X509Certificate;)Z
-Ljava/security/cert/X509CertSelector;->matchPermitted(Lsun/security/x509/GeneralSubtrees;)Z
-Ljava/security/cert/X509CertSelector;->matchPolicy(Ljava/security/cert/X509Certificate;)Z
-Ljava/security/cert/X509CertSelector;->matchPrivateKeyValid(Ljava/security/cert/X509Certificate;)Z
-Ljava/security/cert/X509CertSelector;->matchSubjectAlternativeNames(Ljava/security/cert/X509Certificate;)Z
-Ljava/security/cert/X509CertSelector;->matchSubjectKeyID(Ljava/security/cert/X509Certificate;)Z
-Ljava/security/cert/X509CertSelector;->matchSubjectPublicKeyAlgID(Ljava/security/cert/X509Certificate;)Z
-Ljava/security/cert/X509CertSelector;->NAME_ANY:I
-Ljava/security/cert/X509CertSelector;->NAME_CONSTRAINTS_ID:I
-Ljava/security/cert/X509CertSelector;->NAME_DIRECTORY:I
-Ljava/security/cert/X509CertSelector;->NAME_DNS:I
-Ljava/security/cert/X509CertSelector;->NAME_EDI:I
-Ljava/security/cert/X509CertSelector;->NAME_IP:I
-Ljava/security/cert/X509CertSelector;->NAME_OID:I
-Ljava/security/cert/X509CertSelector;->NAME_RFC822:I
-Ljava/security/cert/X509CertSelector;->NAME_URI:I
-Ljava/security/cert/X509CertSelector;->NAME_X400:I
-Ljava/security/cert/X509CertSelector;->nc:Lsun/security/x509/NameConstraintsExtension;
-Ljava/security/cert/X509CertSelector;->ncBytes:[B
-Ljava/security/cert/X509CertSelector;->NUM_OF_EXTENSIONS:I
-Ljava/security/cert/X509CertSelector;->parseNames(Ljava/util/Collection;)Ljava/util/Set;
-Ljava/security/cert/X509CertSelector;->pathToGeneralNames:Ljava/util/Set;
-Ljava/security/cert/X509CertSelector;->pathToNames:Ljava/util/Set;
-Ljava/security/cert/X509CertSelector;->policy:Lsun/security/x509/CertificatePolicySet;
-Ljava/security/cert/X509CertSelector;->policySet:Ljava/util/Set;
-Ljava/security/cert/X509CertSelector;->privateKeyValid:Ljava/util/Date;
-Ljava/security/cert/X509CertSelector;->PRIVATE_KEY_USAGE_ID:I
-Ljava/security/cert/X509CertSelector;->serialNumber:Ljava/math/BigInteger;
-Ljava/security/cert/X509CertSelector;->setPathToNamesInternal(Ljava/util/Set;)V
-Ljava/security/cert/X509CertSelector;->subject:Ljavax/security/auth/x500/X500Principal;
-Ljava/security/cert/X509CertSelector;->subjectAlternativeGeneralNames:Ljava/util/Set;
-Ljava/security/cert/X509CertSelector;->subjectAlternativeNames:Ljava/util/Set;
-Ljava/security/cert/X509CertSelector;->subjectKeyID:[B
-Ljava/security/cert/X509CertSelector;->subjectPublicKey:Ljava/security/PublicKey;
-Ljava/security/cert/X509CertSelector;->subjectPublicKeyAlgID:Lsun/security/util/ObjectIdentifier;
-Ljava/security/cert/X509CertSelector;->subjectPublicKeyBytes:[B
-Ljava/security/cert/X509CertSelector;->SUBJECT_ALT_NAME_ID:I
-Ljava/security/cert/X509CertSelector;->x509Cert:Ljava/security/cert/X509Certificate;
-Ljava/security/cert/X509CRL;->issuerPrincipal:Ljavax/security/auth/x500/X500Principal;
-Ljava/security/cert/X509CRLSelector;->addIssuerNameInternal(Ljava/lang/Object;Ljavax/security/auth/x500/X500Principal;)V
-Ljava/security/cert/X509CRLSelector;->certChecking:Ljava/security/cert/X509Certificate;
-Ljava/security/cert/X509CRLSelector;->cloneAndCheckIssuerNames(Ljava/util/Collection;)Ljava/util/HashSet;
-Ljava/security/cert/X509CRLSelector;->cloneIssuerNames(Ljava/util/Collection;)Ljava/util/HashSet;
-Ljava/security/cert/X509CRLSelector;->dateAndTime:Ljava/util/Date;
-Ljava/security/cert/X509CRLSelector;->debug:Lsun/security/util/Debug;
-Ljava/security/cert/X509CRLSelector;->issuerNames:Ljava/util/HashSet;
-Ljava/security/cert/X509CRLSelector;->issuerX500Principals:Ljava/util/HashSet;
-Ljava/security/cert/X509CRLSelector;->maxCRL:Ljava/math/BigInteger;
-Ljava/security/cert/X509CRLSelector;->minCRL:Ljava/math/BigInteger;
-Ljava/security/cert/X509CRLSelector;->parseIssuerNames(Ljava/util/Collection;)Ljava/util/HashSet;
-Ljava/security/cert/X509CRLSelector;->setDateAndTime(Ljava/util/Date;J)V
-Ljava/security/cert/X509CRLSelector;->skew:J
-Ljava/security/CodeSigner;->myhash:I
-Ljava/security/CodeSigner;->signerCertPath:Ljava/security/cert/CertPath;
-Ljava/security/CodeSigner;->timestamp:Ljava/security/Timestamp;
-Ljava/security/CodeSource;->location:Ljava/net/URL;
-Ljava/security/DigestInputStream;->on:Z
-Ljava/security/DigestOutputStream;->on:Z
-Ljava/security/DomainLoadStoreParameter;->configuration:Ljava/net/URI;
-Ljava/security/DomainLoadStoreParameter;->protectionParams:Ljava/util/Map;
-Ljava/security/GuardedObject;->guard:Ljava/security/Guard;
-Ljava/security/GuardedObject;->object:Ljava/lang/Object;
-Ljava/security/Identity;->certificates:Ljava/util/Vector;
-Ljava/security/Identity;->check(Ljava/lang/String;)V
-Ljava/security/Identity;->fullName()Ljava/lang/String;
-Ljava/security/Identity;->info:Ljava/lang/String;
-Ljava/security/Identity;->keyEquals(Ljava/security/PublicKey;Ljava/security/PublicKey;)Z
-Ljava/security/Identity;->name:Ljava/lang/String;
-Ljava/security/Identity;->printCertificates()Ljava/lang/String;
-Ljava/security/Identity;->printKeys()Ljava/lang/String;
-Ljava/security/Identity;->publicKey:Ljava/security/PublicKey;
-Ljava/security/Identity;->scope:Ljava/security/IdentityScope;
-Ljava/security/IdentityScope;->check(Ljava/lang/String;)V
-Ljava/security/IdentityScope;->initializeSystemScope()V
-Ljava/security/IdentityScope;->scope:Ljava/security/IdentityScope;
-Ljava/security/KeyFactory;-><init>(Ljava/lang/String;)V
-Ljava/security/KeyFactory;->algorithm:Ljava/lang/String;
-Ljava/security/KeyFactory;->debug:Lsun/security/util/Debug;
-Ljava/security/KeyFactory;->lock:Ljava/lang/Object;
-Ljava/security/KeyFactory;->nextSpi(Ljava/security/KeyFactorySpi;)Ljava/security/KeyFactorySpi;
-Ljava/security/KeyFactory;->provider:Ljava/security/Provider;
-Ljava/security/KeyFactory;->serviceIterator:Ljava/util/Iterator;
-Ljava/security/KeyFactory;->spi:Ljava/security/KeyFactorySpi;
-Ljava/security/KeyPair;->privateKey:Ljava/security/PrivateKey;
-Ljava/security/KeyPair;->publicKey:Ljava/security/PublicKey;
-Ljava/security/KeyPairGenerator$Delegate;-><init>(Ljava/security/KeyPairGeneratorSpi;Ljava/lang/String;)V
-Ljava/security/KeyPairGenerator$Delegate;-><init>(Lsun/security/jca/GetInstance$Instance;Ljava/util/Iterator;Ljava/lang/String;)V
-Ljava/security/KeyPairGenerator$Delegate;->disableFailover()V
-Ljava/security/KeyPairGenerator$Delegate;->initKeySize:I
-Ljava/security/KeyPairGenerator$Delegate;->initParams:Ljava/security/spec/AlgorithmParameterSpec;
-Ljava/security/KeyPairGenerator$Delegate;->initRandom:Ljava/security/SecureRandom;
-Ljava/security/KeyPairGenerator$Delegate;->initType:I
-Ljava/security/KeyPairGenerator$Delegate;->I_NONE:I
-Ljava/security/KeyPairGenerator$Delegate;->I_PARAMS:I
-Ljava/security/KeyPairGenerator$Delegate;->I_SIZE:I
-Ljava/security/KeyPairGenerator$Delegate;->lock:Ljava/lang/Object;
-Ljava/security/KeyPairGenerator$Delegate;->nextSpi(Ljava/security/KeyPairGeneratorSpi;Z)Ljava/security/KeyPairGeneratorSpi;
-Ljava/security/KeyPairGenerator$Delegate;->serviceIterator:Ljava/util/Iterator;
-Ljava/security/KeyPairGenerator$Delegate;->spi:Ljava/security/KeyPairGeneratorSpi;
-Ljava/security/KeyPairGenerator;->algorithm:Ljava/lang/String;
-Ljava/security/KeyPairGenerator;->disableFailover()V
-Ljava/security/KeyPairGenerator;->provider:Ljava/security/Provider;
-Ljava/security/KeyRep;->algorithm:Ljava/lang/String;
-Ljava/security/KeyRep;->encoded:[B
-Ljava/security/KeyRep;->format:Ljava/lang/String;
-Ljava/security/KeyRep;->PKCS8:Ljava/lang/String;
-Ljava/security/KeyRep;->RAW:Ljava/lang/String;
-Ljava/security/KeyRep;->type:Ljava/security/KeyRep$Type;
-Ljava/security/KeyRep;->X509:Ljava/lang/String;
-Ljava/security/KeyStore$Builder$FileBuilder;-><init>(Ljava/lang/String;Ljava/security/Provider;Ljava/io/File;Ljava/security/KeyStore$ProtectionParameter;Ljava/security/AccessControlContext;)V
-Ljava/security/KeyStore$Builder$FileBuilder;->context:Ljava/security/AccessControlContext;
-Ljava/security/KeyStore$Builder$FileBuilder;->file:Ljava/io/File;
-Ljava/security/KeyStore$Builder$FileBuilder;->keyProtection:Ljava/security/KeyStore$ProtectionParameter;
-Ljava/security/KeyStore$Builder$FileBuilder;->keyStore:Ljava/security/KeyStore;
-Ljava/security/KeyStore$Builder$FileBuilder;->oldException:Ljava/lang/Throwable;
-Ljava/security/KeyStore$Builder$FileBuilder;->protection:Ljava/security/KeyStore$ProtectionParameter;
-Ljava/security/KeyStore$Builder$FileBuilder;->provider:Ljava/security/Provider;
-Ljava/security/KeyStore$Builder$FileBuilder;->type:Ljava/lang/String;
-Ljava/security/KeyStore$Builder;->MAX_CALLBACK_TRIES:I
-Ljava/security/KeyStore$CallbackHandlerProtection;->handler:Ljavax/security/auth/callback/CallbackHandler;
-Ljava/security/KeyStore$PasswordProtection;->destroyed:Z
-Ljava/security/KeyStore$PasswordProtection;->password:[C
-Ljava/security/KeyStore$PasswordProtection;->protectionAlgorithm:Ljava/lang/String;
-Ljava/security/KeyStore$PasswordProtection;->protectionParameters:Ljava/security/spec/AlgorithmParameterSpec;
-Ljava/security/KeyStore$PrivateKeyEntry;->attributes:Ljava/util/Set;
-Ljava/security/KeyStore$PrivateKeyEntry;->chain:[Ljava/security/cert/Certificate;
-Ljava/security/KeyStore$PrivateKeyEntry;->privKey:Ljava/security/PrivateKey;
-Ljava/security/KeyStore$SecretKeyEntry;->attributes:Ljava/util/Set;
-Ljava/security/KeyStore$SecretKeyEntry;->sKey:Ljavax/crypto/SecretKey;
-Ljava/security/KeyStore$SimpleLoadStoreParameter;-><init>(Ljava/security/KeyStore$ProtectionParameter;)V
-Ljava/security/KeyStore$SimpleLoadStoreParameter;->protection:Ljava/security/KeyStore$ProtectionParameter;
-Ljava/security/KeyStore$TrustedCertificateEntry;->attributes:Ljava/util/Set;
-Ljava/security/KeyStore$TrustedCertificateEntry;->cert:Ljava/security/cert/Certificate;
-Ljava/security/KeyStore;->initialized:Z
-Ljava/security/KeyStore;->KEYSTORE_TYPE:Ljava/lang/String;
-Ljava/security/KeyStore;->provider:Ljava/security/Provider;
-Ljava/security/KeyStore;->type:Ljava/lang/String;
-Ljava/security/MessageDigest$Delegate;-><init>(Ljava/security/MessageDigestSpi;Ljava/lang/String;)V
-Ljava/security/MessageDigest$Delegate;->digestSpi:Ljava/security/MessageDigestSpi;
-Ljava/security/MessageDigest;->algorithm:Ljava/lang/String;
-Ljava/security/MessageDigest;->INITIAL:I
-Ljava/security/MessageDigest;->IN_PROGRESS:I
-Ljava/security/MessageDigest;->provider:Ljava/security/Provider;
-Ljava/security/MessageDigest;->state:I
-Ljava/security/MessageDigestSpi;->tempArray:[B
-Ljava/security/Permission;->name:Ljava/lang/String;
-Ljava/security/PKCS12Attribute;->COLON_SEPARATED_HEX_PAIRS:Ljava/util/regex/Pattern;
-Ljava/security/PKCS12Attribute;->encode(Lsun/security/util/ObjectIdentifier;[Ljava/lang/String;)[B
-Ljava/security/PKCS12Attribute;->encoded:[B
-Ljava/security/PKCS12Attribute;->hashValue:I
-Ljava/security/PKCS12Attribute;->name:Ljava/lang/String;
-Ljava/security/PKCS12Attribute;->parse([B)V
-Ljava/security/PKCS12Attribute;->value:Ljava/lang/String;
-Ljava/security/Policy$UnsupportedEmptyCollection;-><init>()V
-Ljava/security/PrivilegedActionException;->exception:Ljava/lang/Exception;
-Ljava/security/Provider$EngineDescription;-><init>(Ljava/lang/String;ZLjava/lang/String;)V
-Ljava/security/Provider$EngineDescription;->constructorParameterClass:Ljava/lang/Class;
-Ljava/security/Provider$EngineDescription;->constructorParameterClassName:Ljava/lang/String;
-Ljava/security/Provider$EngineDescription;->getConstructorParameterClass()Ljava/lang/Class;
-Ljava/security/Provider$EngineDescription;->name:Ljava/lang/String;
-Ljava/security/Provider$EngineDescription;->supportsParameter:Z
-Ljava/security/Provider$Service;-><init>(Ljava/security/Provider;)V
-Ljava/security/Provider$Service;->addAlias(Ljava/lang/String;)V
-Ljava/security/Provider$Service;->addAttribute(Ljava/lang/String;Ljava/lang/String;)V
-Ljava/security/Provider$Service;->algorithm:Ljava/lang/String;
-Ljava/security/Provider$Service;->aliases:Ljava/util/List;
-Ljava/security/Provider$Service;->attributes:Ljava/util/Map;
-Ljava/security/Provider$Service;->CLASS0:[Ljava/lang/Class;
-Ljava/security/Provider$Service;->className:Ljava/lang/String;
-Ljava/security/Provider$Service;->classRef:Ljava/lang/ref/Reference;
-Ljava/security/Provider$Service;->getAliases()Ljava/util/List;
-Ljava/security/Provider$Service;->getImplClass()Ljava/lang/Class;
-Ljava/security/Provider$Service;->getKeyClass(Ljava/lang/String;)Ljava/lang/Class;
-Ljava/security/Provider$Service;->hasKeyAttributes()Z
-Ljava/security/Provider$Service;->hasKeyAttributes:Ljava/lang/Boolean;
-Ljava/security/Provider$Service;->isValid()Z
-Ljava/security/Provider$Service;->newInstanceGeneric(Ljava/lang/Object;)Ljava/lang/Object;
-Ljava/security/Provider$Service;->provider:Ljava/security/Provider;
-Ljava/security/Provider$Service;->registered:Z
-Ljava/security/Provider$Service;->supportedClasses:[Ljava/lang/Class;
-Ljava/security/Provider$Service;->supportedFormats:[Ljava/lang/String;
-Ljava/security/Provider$Service;->supportsKeyClass(Ljava/security/Key;)Z
-Ljava/security/Provider$Service;->supportsKeyFormat(Ljava/security/Key;)Z
-Ljava/security/Provider$Service;->type:Ljava/lang/String;
-Ljava/security/Provider$ServiceKey;-><init>(Ljava/lang/String;Ljava/lang/String;Z)V
-Ljava/security/Provider$ServiceKey;->algorithm:Ljava/lang/String;
-Ljava/security/Provider$ServiceKey;->matches(Ljava/lang/String;Ljava/lang/String;)Z
-Ljava/security/Provider$ServiceKey;->originalAlgorithm:Ljava/lang/String;
-Ljava/security/Provider$ServiceKey;->type:Ljava/lang/String;
-Ljava/security/Provider$UString;-><init>(Ljava/lang/String;)V
-Ljava/security/Provider$UString;->lowerString:Ljava/lang/String;
-Ljava/security/Provider$UString;->string:Ljava/lang/String;
-Ljava/security/Provider;->addEngine(Ljava/lang/String;ZLjava/lang/String;)V
-Ljava/security/Provider;->ALIAS_LENGTH:I
-Ljava/security/Provider;->ALIAS_PREFIX:Ljava/lang/String;
-Ljava/security/Provider;->ALIAS_PREFIX_LOWER:Ljava/lang/String;
-Ljava/security/Provider;->check(Ljava/lang/String;)V
-Ljava/security/Provider;->checkInitialized()V
-Ljava/security/Provider;->checkLegacy(Ljava/lang/Object;)Z
-Ljava/security/Provider;->debug:Lsun/security/util/Debug;
-Ljava/security/Provider;->ensureLegacyParsed()V
-Ljava/security/Provider;->entrySet:Ljava/util/Set;
-Ljava/security/Provider;->entrySetCallCount:I
-Ljava/security/Provider;->getEngineName(Ljava/lang/String;)Ljava/lang/String;
-Ljava/security/Provider;->getTypeAndAlgorithm(Ljava/lang/String;)[Ljava/lang/String;
-Ljava/security/Provider;->implClear()V
-Ljava/security/Provider;->implCompute(Ljava/lang/Object;Ljava/util/function/BiFunction;)Ljava/lang/Object;
-Ljava/security/Provider;->implComputeIfAbsent(Ljava/lang/Object;Ljava/util/function/Function;)Ljava/lang/Object;
-Ljava/security/Provider;->implComputeIfPresent(Ljava/lang/Object;Ljava/util/function/BiFunction;)Ljava/lang/Object;
-Ljava/security/Provider;->implMerge(Ljava/lang/Object;Ljava/lang/Object;Ljava/util/function/BiFunction;)Ljava/lang/Object;
-Ljava/security/Provider;->implPut(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
-Ljava/security/Provider;->implPutAll(Ljava/util/Map;)V
-Ljava/security/Provider;->implPutIfAbsent(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
-Ljava/security/Provider;->implRemove(Ljava/lang/Object;)Ljava/lang/Object;
-Ljava/security/Provider;->implRemove(Ljava/lang/Object;Ljava/lang/Object;)Z
-Ljava/security/Provider;->implRemoveService(Ljava/security/Provider$Service;)V
-Ljava/security/Provider;->implReplace(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
-Ljava/security/Provider;->implReplace(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Z
-Ljava/security/Provider;->implReplaceAll(Ljava/util/function/BiFunction;)V
-Ljava/security/Provider;->info:Ljava/lang/String;
-Ljava/security/Provider;->initialized:Z
-Ljava/security/Provider;->isRegistered()Z
-Ljava/security/Provider;->knownEngines:Ljava/util/Map;
-Ljava/security/Provider;->legacyChanged:Z
-Ljava/security/Provider;->legacyMap:Ljava/util/Map;
-Ljava/security/Provider;->legacyStrings:Ljava/util/Map;
-Ljava/security/Provider;->name:Ljava/lang/String;
-Ljava/security/Provider;->parseLegacyPut(Ljava/lang/String;Ljava/lang/String;)V
-Ljava/security/Provider;->previousKey:Ljava/security/Provider$ServiceKey;
-Ljava/security/Provider;->putId()V
-Ljava/security/Provider;->putPropertyStrings(Ljava/security/Provider$Service;)V
-Ljava/security/Provider;->registered:Z
-Ljava/security/Provider;->removeInvalidServices(Ljava/util/Map;)V
-Ljava/security/Provider;->removePropertyStrings(Ljava/security/Provider$Service;)V
-Ljava/security/Provider;->serviceMap:Ljava/util/Map;
-Ljava/security/Provider;->servicesChanged:Z
-Ljava/security/Provider;->serviceSet:Ljava/util/Set;
-Ljava/security/Provider;->setRegistered()V
-Ljava/security/Provider;->setUnregistered()V
-Ljava/security/Provider;->version:D
-Ljava/security/Provider;->warmUpServiceProvision()V
-Ljava/security/SecureClassLoader;->check()V
-Ljava/security/SecureClassLoader;->debug:Lsun/security/util/Debug;
-Ljava/security/SecureClassLoader;->getProtectionDomain(Ljava/security/CodeSource;)Ljava/security/ProtectionDomain;
-Ljava/security/SecureClassLoader;->initialized:Z
-Ljava/security/SecureClassLoader;->pdcache:Ljava/util/HashMap;
-Ljava/security/SecureRandom$StrongPatternHolder;-><init>()V
-Ljava/security/SecureRandom$StrongPatternHolder;->pattern:Ljava/util/regex/Pattern;
-Ljava/security/SecureRandom;-><init>(Ljava/security/SecureRandomSpi;Ljava/security/Provider;Ljava/lang/String;)V
-Ljava/security/SecureRandom;->algorithm:Ljava/lang/String;
-Ljava/security/SecureRandom;->counter:J
-Ljava/security/SecureRandom;->digest:Ljava/security/MessageDigest;
-Ljava/security/SecureRandom;->getDefaultPRNG(Z[B)V
-Ljava/security/SecureRandom;->getPrngAlgorithm()Ljava/lang/String;
-Ljava/security/SecureRandom;->getSecureRandomSpi()Ljava/security/SecureRandomSpi;
-Ljava/security/SecureRandom;->longToByteArray(J)[B
-Ljava/security/SecureRandom;->provider:Ljava/security/Provider;
-Ljava/security/SecureRandom;->randomBytes:[B
-Ljava/security/SecureRandom;->randomBytesUsed:I
-Ljava/security/SecureRandom;->secureRandomSpi:Ljava/security/SecureRandomSpi;
-Ljava/security/SecureRandom;->seedGenerator:Ljava/security/SecureRandom;
-Ljava/security/SecureRandom;->state:[B
-Ljava/security/Security$ProviderProperty;-><init>()V
-Ljava/security/Security$ProviderProperty;->className:Ljava/lang/String;
-Ljava/security/Security$ProviderProperty;->provider:Ljava/security/Provider;
-Ljava/security/Security;-><init>()V
-Ljava/security/Security;->getAllQualifyingCandidates(Ljava/lang/String;Ljava/lang/String;[Ljava/security/Provider;)Ljava/util/LinkedHashSet;
-Ljava/security/Security;->getFilterComponents(Ljava/lang/String;Ljava/lang/String;)[Ljava/lang/String;
-Ljava/security/Security;->getImpl(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)[Ljava/lang/Object;
-Ljava/security/Security;->getImpl(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/Object;)[Ljava/lang/Object;
-Ljava/security/Security;->getImpl(Ljava/lang/String;Ljava/lang/String;Ljava/security/Provider;)[Ljava/lang/Object;
-Ljava/security/Security;->getImpl(Ljava/lang/String;Ljava/lang/String;Ljava/security/Provider;Ljava/lang/Object;)[Ljava/lang/Object;
-Ljava/security/Security;->getProviderProperty(Ljava/lang/String;)Ljava/security/Security$ProviderProperty;
-Ljava/security/Security;->getProviderProperty(Ljava/lang/String;Ljava/security/Provider;)Ljava/lang/String;
-Ljava/security/Security;->getProvidersNotUsingCache(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;[Ljava/security/Provider;)Ljava/util/LinkedHashSet;
-Ljava/security/Security;->getSpiClass(Ljava/lang/String;)Ljava/lang/Class;
-Ljava/security/Security;->getVersion()I
-Ljava/security/Security;->increaseVersion()V
-Ljava/security/Security;->initializeStatic()V
-Ljava/security/Security;->invalidateSMCache(Ljava/lang/String;)V
-Ljava/security/Security;->isConstraintSatisfied(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Z
-Ljava/security/Security;->isCriterionSatisfied(Ljava/security/Provider;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Z
-Ljava/security/Security;->isStandardAttr(Ljava/lang/String;)Z
-Ljava/security/Security;->props:Ljava/util/Properties;
-Ljava/security/Security;->spiMap:Ljava/util/Map;
-Ljava/security/Security;->version:Ljava/util/concurrent/atomic/AtomicInteger;
-Ljava/security/Signature$CipherAdapter;-><init>(Ljavax/crypto/Cipher;)V
-Ljava/security/Signature$CipherAdapter;->cipher:Ljavax/crypto/Cipher;
-Ljava/security/Signature$CipherAdapter;->data:Ljava/io/ByteArrayOutputStream;
-Ljava/security/Signature$Delegate;-><init>(Ljava/lang/String;)V
-Ljava/security/Signature$Delegate;-><init>(Ljava/security/SignatureSpi;Ljava/lang/String;)V
-Ljava/security/Signature$Delegate;->chooseFirstProvider()V
-Ljava/security/Signature$Delegate;->chooseProvider(ILjava/security/Key;Ljava/security/SecureRandom;)V
-Ljava/security/Signature$Delegate;->getCurrentSpi()Ljava/security/SignatureSpi;
-Ljava/security/Signature$Delegate;->init(Ljava/security/SignatureSpi;ILjava/security/Key;Ljava/security/SecureRandom;)V
-Ljava/security/Signature$Delegate;->I_PRIV:I
-Ljava/security/Signature$Delegate;->I_PRIV_SR:I
-Ljava/security/Signature$Delegate;->I_PUB:I
-Ljava/security/Signature$Delegate;->lock:Ljava/lang/Object;
-Ljava/security/Signature$Delegate;->newInstance(Ljava/security/Provider$Service;)Ljava/security/SignatureSpi;
-Ljava/security/Signature$Delegate;->sigSpi:Ljava/security/SignatureSpi;
-Ljava/security/Signature$Delegate;->warnCount:I
-Ljava/security/Signature;->algorithm:Ljava/lang/String;
-Ljava/security/Signature;->chooseFirstProvider()V
-Ljava/security/Signature;->getCurrentSpi()Ljava/security/SignatureSpi;
-Ljava/security/Signature;->getInstanceRSA(Ljava/security/Provider;)Ljava/security/Signature;
-Ljava/security/Signature;->isSpi(Ljava/security/Provider$Service;)Z
-Ljava/security/Signature;->provider:Ljava/security/Provider;
-Ljava/security/Signature;->rsaIds:Ljava/util/List;
-Ljava/security/Signature;->RSA_CIPHER:Ljava/lang/String;
-Ljava/security/Signature;->RSA_SIGNATURE:Ljava/lang/String;
-Ljava/security/Signature;->signatureInfo:Ljava/util/Map;
-Ljava/security/SignedObject;->content:[B
-Ljava/security/SignedObject;->sign(Ljava/security/PrivateKey;Ljava/security/Signature;)V
-Ljava/security/SignedObject;->signature:[B
-Ljava/security/SignedObject;->thealgorithm:Ljava/lang/String;
-Ljava/security/Signer;->check(Ljava/lang/String;)V
-Ljava/security/Signer;->printKeys()Ljava/lang/String;
-Ljava/security/Signer;->privateKey:Ljava/security/PrivateKey;
-Ljava/security/spec/DSAParameterSpec;->g:Ljava/math/BigInteger;
-Ljava/security/spec/DSAParameterSpec;->p:Ljava/math/BigInteger;
-Ljava/security/spec/DSAParameterSpec;->q:Ljava/math/BigInteger;
-Ljava/security/spec/DSAPrivateKeySpec;->g:Ljava/math/BigInteger;
-Ljava/security/spec/DSAPrivateKeySpec;->p:Ljava/math/BigInteger;
-Ljava/security/spec/DSAPrivateKeySpec;->q:Ljava/math/BigInteger;
-Ljava/security/spec/DSAPrivateKeySpec;->x:Ljava/math/BigInteger;
-Ljava/security/spec/DSAPublicKeySpec;->g:Ljava/math/BigInteger;
-Ljava/security/spec/DSAPublicKeySpec;->p:Ljava/math/BigInteger;
-Ljava/security/spec/DSAPublicKeySpec;->q:Ljava/math/BigInteger;
-Ljava/security/spec/DSAPublicKeySpec;->y:Ljava/math/BigInteger;
-Ljava/security/spec/ECFieldF2m;->ks:[I
-Ljava/security/spec/ECFieldF2m;->m:I
-Ljava/security/spec/ECFieldF2m;->rp:Ljava/math/BigInteger;
-Ljava/security/spec/ECFieldFp;->p:Ljava/math/BigInteger;
-Ljava/security/spec/ECGenParameterSpec;->name:Ljava/lang/String;
-Ljava/security/spec/ECParameterSpec;->curve:Ljava/security/spec/EllipticCurve;
-Ljava/security/spec/ECParameterSpec;->curveName:Ljava/lang/String;
-Ljava/security/spec/ECParameterSpec;->g:Ljava/security/spec/ECPoint;
-Ljava/security/spec/ECParameterSpec;->h:I
-Ljava/security/spec/ECParameterSpec;->n:Ljava/math/BigInteger;
-Ljava/security/spec/ECPoint;-><init>()V
-Ljava/security/spec/ECPoint;->x:Ljava/math/BigInteger;
-Ljava/security/spec/ECPoint;->y:Ljava/math/BigInteger;
-Ljava/security/spec/ECPrivateKeySpec;->params:Ljava/security/spec/ECParameterSpec;
-Ljava/security/spec/ECPrivateKeySpec;->s:Ljava/math/BigInteger;
-Ljava/security/spec/ECPublicKeySpec;->params:Ljava/security/spec/ECParameterSpec;
-Ljava/security/spec/ECPublicKeySpec;->w:Ljava/security/spec/ECPoint;
-Ljava/security/spec/EllipticCurve;->a:Ljava/math/BigInteger;
-Ljava/security/spec/EllipticCurve;->b:Ljava/math/BigInteger;
-Ljava/security/spec/EllipticCurve;->checkValidity(Ljava/security/spec/ECField;Ljava/math/BigInteger;Ljava/lang/String;)V
-Ljava/security/spec/EllipticCurve;->field:Ljava/security/spec/ECField;
-Ljava/security/spec/EllipticCurve;->seed:[B
-Ljava/security/spec/EncodedKeySpec;->encodedKey:[B
-Ljava/security/spec/MGF1ParameterSpec;->mdName:Ljava/lang/String;
-Ljava/security/spec/PSSParameterSpec;-><init>()V
-Ljava/security/spec/PSSParameterSpec;->mdName:Ljava/lang/String;
-Ljava/security/spec/PSSParameterSpec;->mgfName:Ljava/lang/String;
-Ljava/security/spec/PSSParameterSpec;->mgfSpec:Ljava/security/spec/AlgorithmParameterSpec;
-Ljava/security/spec/PSSParameterSpec;->saltLen:I
-Ljava/security/spec/PSSParameterSpec;->trailerField:I
-Ljava/security/spec/RSAKeyGenParameterSpec;->keysize:I
-Ljava/security/spec/RSAKeyGenParameterSpec;->publicExponent:Ljava/math/BigInteger;
-Ljava/security/spec/RSAMultiPrimePrivateCrtKeySpec;->crtCoefficient:Ljava/math/BigInteger;
-Ljava/security/spec/RSAMultiPrimePrivateCrtKeySpec;->otherPrimeInfo:[Ljava/security/spec/RSAOtherPrimeInfo;
-Ljava/security/spec/RSAMultiPrimePrivateCrtKeySpec;->primeExponentP:Ljava/math/BigInteger;
-Ljava/security/spec/RSAMultiPrimePrivateCrtKeySpec;->primeExponentQ:Ljava/math/BigInteger;
-Ljava/security/spec/RSAMultiPrimePrivateCrtKeySpec;->primeP:Ljava/math/BigInteger;
-Ljava/security/spec/RSAMultiPrimePrivateCrtKeySpec;->primeQ:Ljava/math/BigInteger;
-Ljava/security/spec/RSAMultiPrimePrivateCrtKeySpec;->publicExponent:Ljava/math/BigInteger;
-Ljava/security/spec/RSAOtherPrimeInfo;->crtCoefficient:Ljava/math/BigInteger;
-Ljava/security/spec/RSAOtherPrimeInfo;->prime:Ljava/math/BigInteger;
-Ljava/security/spec/RSAOtherPrimeInfo;->primeExponent:Ljava/math/BigInteger;
-Ljava/security/spec/RSAPrivateCrtKeySpec;->crtCoefficient:Ljava/math/BigInteger;
-Ljava/security/spec/RSAPrivateCrtKeySpec;->primeExponentP:Ljava/math/BigInteger;
-Ljava/security/spec/RSAPrivateCrtKeySpec;->primeExponentQ:Ljava/math/BigInteger;
-Ljava/security/spec/RSAPrivateCrtKeySpec;->primeP:Ljava/math/BigInteger;
-Ljava/security/spec/RSAPrivateCrtKeySpec;->primeQ:Ljava/math/BigInteger;
-Ljava/security/spec/RSAPrivateCrtKeySpec;->publicExponent:Ljava/math/BigInteger;
-Ljava/security/spec/RSAPrivateKeySpec;->modulus:Ljava/math/BigInteger;
-Ljava/security/spec/RSAPrivateKeySpec;->privateExponent:Ljava/math/BigInteger;
-Ljava/security/spec/RSAPublicKeySpec;->modulus:Ljava/math/BigInteger;
-Ljava/security/spec/RSAPublicKeySpec;->publicExponent:Ljava/math/BigInteger;
-Ljava/security/Timestamp;->myhash:I
-Ljava/security/Timestamp;->signerCertPath:Ljava/security/cert/CertPath;
-Ljava/security/Timestamp;->timestamp:Ljava/util/Date;
-Ljava/sql/BatchUpdateException;->updateCounts:[I
-Ljava/sql/DataTruncation;->dataSize:I
-Ljava/sql/DataTruncation;->index:I
-Ljava/sql/DataTruncation;->parameter:Z
-Ljava/sql/DataTruncation;->read:Z
-Ljava/sql/DataTruncation;->transferSize:I
-Ljava/sql/DriverInfo;-><init>(Ljava/sql/Driver;)V
-Ljava/sql/DriverInfo;->driver:Ljava/sql/Driver;
-Ljava/sql/DriverManager;-><init>()V
-Ljava/sql/DriverManager;->getConnection(Ljava/lang/String;Ljava/util/Properties;Ljava/lang/ClassLoader;)Ljava/sql/Connection;
-Ljava/sql/DriverManager;->isDriverAllowed(Ljava/sql/Driver;Ljava/lang/ClassLoader;)Z
-Ljava/sql/DriverManager;->loadInitialDrivers()V
-Ljava/sql/DriverManager;->loginTimeout:I
-Ljava/sql/DriverManager;->logStream:Ljava/io/PrintStream;
-Ljava/sql/DriverManager;->logSync:Ljava/lang/Object;
-Ljava/sql/DriverManager;->logWriter:Ljava/io/PrintWriter;
-Ljava/sql/DriverManager;->registeredDrivers:Ljava/util/concurrent/CopyOnWriteArrayList;
-Ljava/sql/DriverManager;->SET_LOG_PERMISSION:Ljava/sql/SQLPermission;
-Ljava/sql/SQLClientInfoException;->failedProperties:Ljava/util/Map;
-Ljava/sql/SQLException;->next:Ljava/sql/SQLException;
-Ljava/sql/SQLException;->nextUpdater:Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater;
-Ljava/sql/SQLException;->SQLState:Ljava/lang/String;
-Ljava/sql/SQLException;->vendorCode:I
-Ljava/sql/Timestamp;->nanos:I
-Ljava/sql/Types;-><init>()V
-Ljava/text/Annotation;->value:Ljava/lang/Object;
-Ljava/text/AttributedCharacterIterator$Attribute;->instanceMap:Ljava/util/Map;
-Ljava/text/AttributedCharacterIterator$Attribute;->name:Ljava/lang/String;
-Ljava/text/AttributedString$AttributedStringIterator;->beginIndex:I
-Ljava/text/AttributedString$AttributedStringIterator;->currentIndex:I
-Ljava/text/AttributedString$AttributedStringIterator;->currentRunIndex:I
-Ljava/text/AttributedString$AttributedStringIterator;->currentRunLimit:I
-Ljava/text/AttributedString$AttributedStringIterator;->currentRunStart:I
-Ljava/text/AttributedString$AttributedStringIterator;->endIndex:I
-Ljava/text/AttributedString$AttributedStringIterator;->getString()Ljava/text/AttributedString;
-Ljava/text/AttributedString$AttributedStringIterator;->internalSetIndex(I)C
-Ljava/text/AttributedString$AttributedStringIterator;->relevantAttributes:[Ljava/text/AttributedCharacterIterator$Attribute;
-Ljava/text/AttributedString$AttributedStringIterator;->updateRunInfo()V
-Ljava/text/AttributedString$AttributeMap;->beginIndex:I
-Ljava/text/AttributedString$AttributeMap;->endIndex:I
-Ljava/text/AttributedString$AttributeMap;->runIndex:I
-Ljava/text/AttributedString;-><init>([Ljava/text/AttributedCharacterIterator;)V
-Ljava/text/AttributedString;->addAttributeImpl(Ljava/text/AttributedCharacterIterator$Attribute;Ljava/lang/Object;II)V
-Ljava/text/AttributedString;->addAttributeRunData(Ljava/text/AttributedCharacterIterator$Attribute;Ljava/lang/Object;II)V
-Ljava/text/AttributedString;->appendContents(Ljava/lang/StringBuffer;Ljava/text/CharacterIterator;)V
-Ljava/text/AttributedString;->ARRAY_SIZE_INCREMENT:I
-Ljava/text/AttributedString;->attributeValuesMatch(Ljava/util/Set;II)Z
-Ljava/text/AttributedString;->charAt(I)C
-Ljava/text/AttributedString;->createRunAttributeDataVectors()V
-Ljava/text/AttributedString;->ensureRunBreak(I)I
-Ljava/text/AttributedString;->ensureRunBreak(IZ)I
-Ljava/text/AttributedString;->getAttribute(Ljava/text/AttributedCharacterIterator$Attribute;I)Ljava/lang/Object;
-Ljava/text/AttributedString;->getAttributeCheckRange(Ljava/text/AttributedCharacterIterator$Attribute;III)Ljava/lang/Object;
-Ljava/text/AttributedString;->length()I
-Ljava/text/AttributedString;->mapsDiffer(Ljava/util/Map;Ljava/util/Map;)Z
-Ljava/text/AttributedString;->runArraySize:I
-Ljava/text/AttributedString;->runAttributes:[Ljava/util/Vector;
-Ljava/text/AttributedString;->runAttributeValues:[Ljava/util/Vector;
-Ljava/text/AttributedString;->runCount:I
-Ljava/text/AttributedString;->runStarts:[I
-Ljava/text/AttributedString;->setAttributes(Ljava/util/Map;I)V
-Ljava/text/AttributedString;->text:Ljava/lang/String;
-Ljava/text/AttributedString;->valuesMatch(Ljava/lang/Object;Ljava/lang/Object;)Z
-Ljava/text/Bidi;-><init>(Landroid/icu/text/Bidi;)V
-Ljava/text/Bidi;->bidiBase:Landroid/icu/text/Bidi;
-Ljava/text/Bidi;->translateConstToIcu(I)I
-Ljava/text/CalendarBuilder;-><init>()V
-Ljava/text/CalendarBuilder;->addYear(I)Ljava/text/CalendarBuilder;
-Ljava/text/CalendarBuilder;->clear(I)Ljava/text/CalendarBuilder;
-Ljava/text/CalendarBuilder;->COMPUTED:I
-Ljava/text/CalendarBuilder;->establish(Ljava/util/Calendar;)Ljava/util/Calendar;
-Ljava/text/CalendarBuilder;->field:[I
-Ljava/text/CalendarBuilder;->ISO_DAY_OF_WEEK:I
-Ljava/text/CalendarBuilder;->isSet(I)Z
-Ljava/text/CalendarBuilder;->isValidDayOfWeek(I)Z
-Ljava/text/CalendarBuilder;->maxFieldIndex:I
-Ljava/text/CalendarBuilder;->MAX_FIELD:I
-Ljava/text/CalendarBuilder;->MINIMUM_USER_STAMP:I
-Ljava/text/CalendarBuilder;->nextStamp:I
-Ljava/text/CalendarBuilder;->set(II)Ljava/text/CalendarBuilder;
-Ljava/text/CalendarBuilder;->toCalendarDayOfWeek(I)I
-Ljava/text/CalendarBuilder;->toISODayOfWeek(I)I
-Ljava/text/CalendarBuilder;->UNSET:I
-Ljava/text/CalendarBuilder;->WEEK_YEAR:I
-Ljava/text/ChoiceFormat;->choiceFormats:[Ljava/lang/String;
-Ljava/text/ChoiceFormat;->choiceLimits:[D
-Ljava/text/ChoiceFormat;->doubleArraySize([D)[D
-Ljava/text/ChoiceFormat;->doubleArraySize([Ljava/lang/String;)[Ljava/lang/String;
-Ljava/text/ChoiceFormat;->EXPONENT:J
-Ljava/text/ChoiceFormat;->POSITIVEINFINITY:J
-Ljava/text/ChoiceFormat;->SIGN:J
-Ljava/text/CollationElementIterator;-><init>(Landroid/icu/text/CollationElementIterator;)V
-Ljava/text/CollationElementIterator;->icuIterator:Landroid/icu/text/CollationElementIterator;
-Ljava/text/CollationKey;->source:Ljava/lang/String;
-Ljava/text/Collator;-><init>(Landroid/icu/text/Collator;)V
-Ljava/text/Collator;->decompositionMode_ICU_Java(I)I
-Ljava/text/Collator;->decompositionMode_Java_ICU(I)I
-Ljava/text/DateFormat$Field;->calendarField:I
-Ljava/text/DateFormat$Field;->calendarToFieldMapping:[Ljava/text/DateFormat$Field;
-Ljava/text/DateFormat$Field;->instanceMap:Ljava/util/Map;
-Ljava/text/DateFormat;->get(IIILjava/util/Locale;)Ljava/text/DateFormat;
-Ljava/text/DateFormat;->set24HourTimePref(Ljava/lang/Boolean;)V
-Ljava/text/DateFormatSymbols;->ampms:[Ljava/lang/String;
-Ljava/text/DateFormatSymbols;->cachedHashCode:I
-Ljava/text/DateFormatSymbols;->cachedInstances:Ljava/util/concurrent/ConcurrentMap;
-Ljava/text/DateFormatSymbols;->copyMembers(Ljava/text/DateFormatSymbols;Ljava/text/DateFormatSymbols;)V
-Ljava/text/DateFormatSymbols;->currentSerialVersion:I
-Ljava/text/DateFormatSymbols;->eras:[Ljava/lang/String;
-Ljava/text/DateFormatSymbols;->getCachedInstance(Ljava/util/Locale;)Ljava/text/DateFormatSymbols;
-Ljava/text/DateFormatSymbols;->getInstanceRef(Ljava/util/Locale;)Ljava/text/DateFormatSymbols;
-Ljava/text/DateFormatSymbols;->getShortStandAloneMonths()[Ljava/lang/String;
-Ljava/text/DateFormatSymbols;->getShortStandAloneWeekdays()[Ljava/lang/String;
-Ljava/text/DateFormatSymbols;->getStandAloneMonths()[Ljava/lang/String;
-Ljava/text/DateFormatSymbols;->getStandAloneWeekdays()[Ljava/lang/String;
-Ljava/text/DateFormatSymbols;->getTinyMonths()[Ljava/lang/String;
-Ljava/text/DateFormatSymbols;->getTinyStandAloneMonths()[Ljava/lang/String;
-Ljava/text/DateFormatSymbols;->getTinyStandAloneWeekdays()[Ljava/lang/String;
-Ljava/text/DateFormatSymbols;->getTinyWeekdays()[Ljava/lang/String;
-Ljava/text/DateFormatSymbols;->getZoneIndex(Ljava/lang/String;)I
-Ljava/text/DateFormatSymbols;->getZoneStringsImpl(Z)[[Ljava/lang/String;
-Ljava/text/DateFormatSymbols;->getZoneStringsWrapper()[[Ljava/lang/String;
-Ljava/text/DateFormatSymbols;->initializeData(Ljava/util/Locale;)V
-Ljava/text/DateFormatSymbols;->initializeSupplementaryData(Llibcore/icu/LocaleData;)V
-Ljava/text/DateFormatSymbols;->internalZoneStrings()[[Ljava/lang/String;
-Ljava/text/DateFormatSymbols;->isSubclassObject()Z
-Ljava/text/DateFormatSymbols;->isZoneStringsSet:Z
-Ljava/text/DateFormatSymbols;->lastZoneIndex:I
-Ljava/text/DateFormatSymbols;->locale:Ljava/util/Locale;
-Ljava/text/DateFormatSymbols;->localPatternChars:Ljava/lang/String;
-Ljava/text/DateFormatSymbols;->millisPerHour:I
-Ljava/text/DateFormatSymbols;->months:[Ljava/lang/String;
-Ljava/text/DateFormatSymbols;->patternChars:Ljava/lang/String;
-Ljava/text/DateFormatSymbols;->PATTERN_AM_PM:I
-Ljava/text/DateFormatSymbols;->PATTERN_DAY_OF_MONTH:I
-Ljava/text/DateFormatSymbols;->PATTERN_DAY_OF_WEEK:I
-Ljava/text/DateFormatSymbols;->PATTERN_DAY_OF_WEEK_IN_MONTH:I
-Ljava/text/DateFormatSymbols;->PATTERN_DAY_OF_YEAR:I
-Ljava/text/DateFormatSymbols;->PATTERN_DAY_PERIOD:I
-Ljava/text/DateFormatSymbols;->PATTERN_ERA:I
-Ljava/text/DateFormatSymbols;->PATTERN_FLEXIBLE_DAY_PERIOD:I
-Ljava/text/DateFormatSymbols;->PATTERN_HOUR0:I
-Ljava/text/DateFormatSymbols;->PATTERN_HOUR1:I
-Ljava/text/DateFormatSymbols;->PATTERN_HOUR_OF_DAY0:I
-Ljava/text/DateFormatSymbols;->PATTERN_HOUR_OF_DAY1:I
-Ljava/text/DateFormatSymbols;->PATTERN_ISO_DAY_OF_WEEK:I
-Ljava/text/DateFormatSymbols;->PATTERN_ISO_ZONE:I
-Ljava/text/DateFormatSymbols;->PATTERN_MILLISECOND:I
-Ljava/text/DateFormatSymbols;->PATTERN_MINUTE:I
-Ljava/text/DateFormatSymbols;->PATTERN_MONTH:I
-Ljava/text/DateFormatSymbols;->PATTERN_MONTH_STANDALONE:I
-Ljava/text/DateFormatSymbols;->PATTERN_SECOND:I
-Ljava/text/DateFormatSymbols;->PATTERN_STANDALONE_DAY_OF_WEEK:I
-Ljava/text/DateFormatSymbols;->PATTERN_WEEK_OF_MONTH:I
-Ljava/text/DateFormatSymbols;->PATTERN_WEEK_OF_YEAR:I
-Ljava/text/DateFormatSymbols;->PATTERN_WEEK_YEAR:I
-Ljava/text/DateFormatSymbols;->PATTERN_YEAR:I
-Ljava/text/DateFormatSymbols;->PATTERN_ZONE_NAME:I
-Ljava/text/DateFormatSymbols;->PATTERN_ZONE_VALUE:I
-Ljava/text/DateFormatSymbols;->serialVersionOnStream:I
-Ljava/text/DateFormatSymbols;->shortMonths:[Ljava/lang/String;
-Ljava/text/DateFormatSymbols;->shortStandAloneMonths:[Ljava/lang/String;
-Ljava/text/DateFormatSymbols;->shortStandAloneWeekdays:[Ljava/lang/String;
-Ljava/text/DateFormatSymbols;->shortWeekdays:[Ljava/lang/String;
-Ljava/text/DateFormatSymbols;->standAloneMonths:[Ljava/lang/String;
-Ljava/text/DateFormatSymbols;->standAloneWeekdays:[Ljava/lang/String;
-Ljava/text/DateFormatSymbols;->tinyMonths:[Ljava/lang/String;
-Ljava/text/DateFormatSymbols;->tinyStandAloneMonths:[Ljava/lang/String;
-Ljava/text/DateFormatSymbols;->tinyStandAloneWeekdays:[Ljava/lang/String;
-Ljava/text/DateFormatSymbols;->tinyWeekdays:[Ljava/lang/String;
-Ljava/text/DateFormatSymbols;->weekdays:[Ljava/lang/String;
-Ljava/text/DateFormatSymbols;->zoneStrings:[[Ljava/lang/String;
-Ljava/text/DecimalFormat;->adjustForCurrencyDefaultFractionDigits()V
-Ljava/text/DecimalFormat;->compareIcuRoundingIncrement(Landroid/icu/text/DecimalFormat_ICU58_Android;)Z
-Ljava/text/DecimalFormat;->convertRoundingMode(Ljava/math/RoundingMode;)I
-Ljava/text/DecimalFormat;->currentSerialVersion:I
-Ljava/text/DecimalFormat;->DOUBLE_FRACTION_DIGITS:I
-Ljava/text/DecimalFormat;->DOUBLE_INTEGER_DIGITS:I
-Ljava/text/DecimalFormat;->format(Ljava/math/BigDecimal;Ljava/lang/StringBuffer;Ljava/text/FieldPosition;)Ljava/lang/StringBuffer;
-Ljava/text/DecimalFormat;->format(Ljava/math/BigInteger;Ljava/lang/StringBuffer;Ljava/text/FieldPosition;)Ljava/lang/StringBuffer;
-Ljava/text/DecimalFormat;->getIcuFieldPosition(Ljava/text/FieldPosition;)Ljava/text/FieldPosition;
-Ljava/text/DecimalFormat;->icuDecimalFormat:Landroid/icu/text/DecimalFormat_ICU58_Android;
-Ljava/text/DecimalFormat;->initPattern(Ljava/lang/String;)V
-Ljava/text/DecimalFormat;->maximumFractionDigits:I
-Ljava/text/DecimalFormat;->maximumIntegerDigits:I
-Ljava/text/DecimalFormat;->MAXIMUM_FRACTION_DIGITS:I
-Ljava/text/DecimalFormat;->MAXIMUM_INTEGER_DIGITS:I
-Ljava/text/DecimalFormat;->minimumFractionDigits:I
-Ljava/text/DecimalFormat;->minimumIntegerDigits:I
-Ljava/text/DecimalFormat;->roundingMode:Ljava/math/RoundingMode;
-Ljava/text/DecimalFormat;->symbols:Ljava/text/DecimalFormatSymbols;
-Ljava/text/DecimalFormat;->toJavaFieldAttribute(Ljava/text/AttributedCharacterIterator$Attribute;)Ljava/text/NumberFormat$Field;
-Ljava/text/DecimalFormat;->updateFieldsFromIcu()V
-Ljava/text/DecimalFormatSymbols;->cachedIcuDFS:Landroid/icu/text/DecimalFormatSymbols;
-Ljava/text/DecimalFormatSymbols;->currency:Ljava/util/Currency;
-Ljava/text/DecimalFormatSymbols;->currencySymbol:Ljava/lang/String;
-Ljava/text/DecimalFormatSymbols;->currentSerialVersion:I
-Ljava/text/DecimalFormatSymbols;->decimalSeparator:C
-Ljava/text/DecimalFormatSymbols;->digit:C
-Ljava/text/DecimalFormatSymbols;->exponential:C
-Ljava/text/DecimalFormatSymbols;->exponentialSeparator:Ljava/lang/String;
-Ljava/text/DecimalFormatSymbols;->fromIcuInstance(Landroid/icu/text/DecimalFormatSymbols;)Ljava/text/DecimalFormatSymbols;
-Ljava/text/DecimalFormatSymbols;->getExponentialSymbol()C
-Ljava/text/DecimalFormatSymbols;->getIcuDecimalFormatSymbols()Landroid/icu/text/DecimalFormatSymbols;
-Ljava/text/DecimalFormatSymbols;->getMinusSignString()Ljava/lang/String;
-Ljava/text/DecimalFormatSymbols;->groupingSeparator:C
-Ljava/text/DecimalFormatSymbols;->infinity:Ljava/lang/String;
-Ljava/text/DecimalFormatSymbols;->initialize(Ljava/util/Locale;)V
-Ljava/text/DecimalFormatSymbols;->intlCurrencySymbol:Ljava/lang/String;
-Ljava/text/DecimalFormatSymbols;->locale:Ljava/util/Locale;
-Ljava/text/DecimalFormatSymbols;->maybeStripMarkers(Ljava/lang/String;C)C
-Ljava/text/DecimalFormatSymbols;->minusSign:C
-Ljava/text/DecimalFormatSymbols;->monetarySeparator:C
-Ljava/text/DecimalFormatSymbols;->NaN:Ljava/lang/String;
-Ljava/text/DecimalFormatSymbols;->patternSeparator:C
-Ljava/text/DecimalFormatSymbols;->percent:C
-Ljava/text/DecimalFormatSymbols;->perMill:C
-Ljava/text/DecimalFormatSymbols;->serialVersionOnStream:I
-Ljava/text/DecimalFormatSymbols;->setExponentialSymbol(C)V
-Ljava/text/DecimalFormatSymbols;->zeroDigit:C
-Ljava/text/FieldPosition$Delegate;->encounteredField:Z
-Ljava/text/FieldPosition$Delegate;->formatted(ILjava/text/Format$Field;Ljava/lang/Object;IILjava/lang/StringBuffer;)V
-Ljava/text/FieldPosition$Delegate;->formatted(Ljava/text/Format$Field;Ljava/lang/Object;IILjava/lang/StringBuffer;)V
-Ljava/text/FieldPosition;->attribute:Ljava/text/Format$Field;
-Ljava/text/FieldPosition;->beginIndex:I
-Ljava/text/FieldPosition;->endIndex:I
-Ljava/text/FieldPosition;->field:I
-Ljava/text/FieldPosition;->getFieldDelegate()Ljava/text/Format$FieldDelegate;
-Ljava/text/FieldPosition;->matchesField(Ljava/text/Format$Field;)Z
-Ljava/text/FieldPosition;->matchesField(Ljava/text/Format$Field;I)Z
-Ljava/text/Format$FieldDelegate;->formatted(ILjava/text/Format$Field;Ljava/lang/Object;IILjava/lang/StringBuffer;)V
-Ljava/text/Format$FieldDelegate;->formatted(Ljava/text/Format$Field;Ljava/lang/Object;IILjava/lang/StringBuffer;)V
-Ljava/text/Format;->createAttributedCharacterIterator(Ljava/lang/String;)Ljava/text/AttributedCharacterIterator;
-Ljava/text/Format;->createAttributedCharacterIterator(Ljava/lang/String;Ljava/text/AttributedCharacterIterator$Attribute;Ljava/lang/Object;)Ljava/text/AttributedCharacterIterator;
-Ljava/text/Format;->createAttributedCharacterIterator(Ljava/text/AttributedCharacterIterator;Ljava/text/AttributedCharacterIterator$Attribute;Ljava/lang/Object;)Ljava/text/AttributedCharacterIterator;
-Ljava/text/Format;->createAttributedCharacterIterator([Ljava/text/AttributedCharacterIterator;)Ljava/text/AttributedCharacterIterator;
-Ljava/text/MessageFormat;->append(Ljava/lang/StringBuffer;Ljava/text/CharacterIterator;)V
-Ljava/text/MessageFormat;->argumentNumbers:[I
-Ljava/text/MessageFormat;->copyAndFixQuotes(Ljava/lang/String;IILjava/lang/StringBuilder;)V
-Ljava/text/MessageFormat;->DATE_TIME_MODIFIERS:[I
-Ljava/text/MessageFormat;->DATE_TIME_MODIFIER_KEYWORDS:[Ljava/lang/String;
-Ljava/text/MessageFormat;->findKeyword(Ljava/lang/String;[Ljava/lang/String;)I
-Ljava/text/MessageFormat;->formats:[Ljava/text/Format;
-Ljava/text/MessageFormat;->INITIAL_FORMATS:I
-Ljava/text/MessageFormat;->locale:Ljava/util/Locale;
-Ljava/text/MessageFormat;->makeFormat(II[Ljava/lang/StringBuilder;)V
-Ljava/text/MessageFormat;->maxOffset:I
-Ljava/text/MessageFormat;->MODIFIER_CURRENCY:I
-Ljava/text/MessageFormat;->MODIFIER_DEFAULT:I
-Ljava/text/MessageFormat;->MODIFIER_FULL:I
-Ljava/text/MessageFormat;->MODIFIER_INTEGER:I
-Ljava/text/MessageFormat;->MODIFIER_LONG:I
-Ljava/text/MessageFormat;->MODIFIER_MEDIUM:I
-Ljava/text/MessageFormat;->MODIFIER_PERCENT:I
-Ljava/text/MessageFormat;->MODIFIER_SHORT:I
-Ljava/text/MessageFormat;->NUMBER_MODIFIER_KEYWORDS:[Ljava/lang/String;
-Ljava/text/MessageFormat;->offsets:[I
-Ljava/text/MessageFormat;->pattern:Ljava/lang/String;
-Ljava/text/MessageFormat;->SEG_INDEX:I
-Ljava/text/MessageFormat;->SEG_MODIFIER:I
-Ljava/text/MessageFormat;->SEG_RAW:I
-Ljava/text/MessageFormat;->SEG_TYPE:I
-Ljava/text/MessageFormat;->subformat([Ljava/lang/Object;Ljava/lang/StringBuffer;Ljava/text/FieldPosition;Ljava/util/List;)Ljava/lang/StringBuffer;
-Ljava/text/MessageFormat;->TYPE_CHOICE:I
-Ljava/text/MessageFormat;->TYPE_DATE:I
-Ljava/text/MessageFormat;->TYPE_KEYWORDS:[Ljava/lang/String;
-Ljava/text/MessageFormat;->TYPE_NULL:I
-Ljava/text/MessageFormat;->TYPE_NUMBER:I
-Ljava/text/MessageFormat;->TYPE_TIME:I
-Ljava/text/Normalizer$Form;->icuMode:Landroid/icu/text/Normalizer$Mode;
-Ljava/text/Normalizer;-><init>()V
-Ljava/text/NumberFormat$Field;->instanceMap:Ljava/util/Map;
-Ljava/text/NumberFormat;->CURRENCYSTYLE:I
-Ljava/text/NumberFormat;->currentSerialVersion:I
-Ljava/text/NumberFormat;->groupingUsed:Z
-Ljava/text/NumberFormat;->INTEGERSTYLE:I
-Ljava/text/NumberFormat;->maxFractionDigits:B
-Ljava/text/NumberFormat;->maximumFractionDigits:I
-Ljava/text/NumberFormat;->maximumIntegerDigits:I
-Ljava/text/NumberFormat;->maxIntegerDigits:B
-Ljava/text/NumberFormat;->minFractionDigits:B
-Ljava/text/NumberFormat;->minimumFractionDigits:I
-Ljava/text/NumberFormat;->minimumIntegerDigits:I
-Ljava/text/NumberFormat;->minIntegerDigits:B
-Ljava/text/NumberFormat;->NUMBERSTYLE:I
-Ljava/text/NumberFormat;->parseIntegerOnly:Z
-Ljava/text/NumberFormat;->PERCENTSTYLE:I
-Ljava/text/NumberFormat;->serialVersionOnStream:I
-Ljava/text/ParseException;->errorOffset:I
-Ljava/text/ParsePosition;->errorIndex:I
-Ljava/text/ParsePosition;->index:I
-Ljava/text/RuleBasedCollator;-><init>(Landroid/icu/text/RuleBasedCollator;)V
-Ljava/text/RuleBasedCollator;->collAsICU()Landroid/icu/text/RuleBasedCollator;
-Ljava/text/SimpleDateFormat;-><init>(IILjava/util/Locale;)V
-Ljava/text/SimpleDateFormat;->cachedNumberFormatData:Ljava/util/concurrent/ConcurrentMap;
-Ljava/text/SimpleDateFormat;->checkNegativeNumberExpression()V
-Ljava/text/SimpleDateFormat;->compile(Ljava/lang/String;)[C
-Ljava/text/SimpleDateFormat;->compiledPattern:[C
-Ljava/text/SimpleDateFormat;->currentSerialVersion:I
-Ljava/text/SimpleDateFormat;->defaultCenturyStart:Ljava/util/Date;
-Ljava/text/SimpleDateFormat;->defaultCenturyStartYear:I
-Ljava/text/SimpleDateFormat;->DST_NAME_TYPES:Ljava/util/Set;
-Ljava/text/SimpleDateFormat;->encode(IILjava/lang/StringBuilder;)V
-Ljava/text/SimpleDateFormat;->format(Ljava/util/Date;Ljava/lang/StringBuffer;Ljava/text/Format$FieldDelegate;)Ljava/lang/StringBuffer;
-Ljava/text/SimpleDateFormat;->formatData:Ljava/text/DateFormatSymbols;
-Ljava/text/SimpleDateFormat;->formatMonth(IIILjava/lang/StringBuffer;ZZ)Ljava/lang/String;
-Ljava/text/SimpleDateFormat;->formatWeekday(IIZZ)Ljava/lang/String;
-Ljava/text/SimpleDateFormat;->getCalendarName()Ljava/lang/String;
-Ljava/text/SimpleDateFormat;->getDateTimeFormat(IILjava/util/Locale;)Ljava/lang/String;
-Ljava/text/SimpleDateFormat;->getTimeZoneNames()Landroid/icu/text/TimeZoneNames;
-Ljava/text/SimpleDateFormat;->GMT:Ljava/lang/String;
-Ljava/text/SimpleDateFormat;->hasFollowingMinusSign:Z
-Ljava/text/SimpleDateFormat;->initialize(Ljava/util/Locale;)V
-Ljava/text/SimpleDateFormat;->initializeCalendar(Ljava/util/Locale;)V
-Ljava/text/SimpleDateFormat;->initializeDefaultCentury()V
-Ljava/text/SimpleDateFormat;->isDigit(C)Z
-Ljava/text/SimpleDateFormat;->isGregorianCalendar()Z
-Ljava/text/SimpleDateFormat;->locale:Ljava/util/Locale;
-Ljava/text/SimpleDateFormat;->matchString(Ljava/lang/String;IILjava/util/Map;Ljava/text/CalendarBuilder;)I
-Ljava/text/SimpleDateFormat;->matchString(Ljava/lang/String;II[Ljava/lang/String;Ljava/text/CalendarBuilder;)I
-Ljava/text/SimpleDateFormat;->matchZoneString(Ljava/lang/String;I[Ljava/lang/String;)I
-Ljava/text/SimpleDateFormat;->MILLIS_PER_MINUTE:I
-Ljava/text/SimpleDateFormat;->minusSign:C
-Ljava/text/SimpleDateFormat;->NAME_TYPES:Ljava/util/EnumSet;
-Ljava/text/SimpleDateFormat;->originalNumberFormat:Ljava/text/NumberFormat;
-Ljava/text/SimpleDateFormat;->originalNumberPattern:Ljava/lang/String;
-Ljava/text/SimpleDateFormat;->parseAmbiguousDatesAsAfter(Ljava/util/Date;)V
-Ljava/text/SimpleDateFormat;->parseInternal(Ljava/lang/String;Ljava/text/ParsePosition;)Ljava/util/Date;
-Ljava/text/SimpleDateFormat;->parseMonth(Ljava/lang/String;IIIILjava/text/ParsePosition;ZZLjava/text/CalendarBuilder;)I
-Ljava/text/SimpleDateFormat;->parseWeekday(Ljava/lang/String;IIZZLjava/text/CalendarBuilder;)I
-Ljava/text/SimpleDateFormat;->pattern:Ljava/lang/String;
-Ljava/text/SimpleDateFormat;->PATTERN_INDEX_TO_CALENDAR_FIELD:[I
-Ljava/text/SimpleDateFormat;->PATTERN_INDEX_TO_DATE_FORMAT_FIELD:[I
-Ljava/text/SimpleDateFormat;->PATTERN_INDEX_TO_DATE_FORMAT_FIELD_ID:[Ljava/text/DateFormat$Field;
-Ljava/text/SimpleDateFormat;->serialVersionOnStream:I
-Ljava/text/SimpleDateFormat;->subFormat(IILjava/text/Format$FieldDelegate;Ljava/lang/StringBuffer;Z)V
-Ljava/text/SimpleDateFormat;->subParse(Ljava/lang/String;IIIZ[ZLjava/text/ParsePosition;ZLjava/text/CalendarBuilder;)I
-Ljava/text/SimpleDateFormat;->subParseNumericZone(Ljava/lang/String;IIIZLjava/text/CalendarBuilder;)I
-Ljava/text/SimpleDateFormat;->subParseZoneString(Ljava/lang/String;ILjava/text/CalendarBuilder;)I
-Ljava/text/SimpleDateFormat;->subParseZoneStringFromICU(Ljava/lang/String;ILjava/text/CalendarBuilder;)I
-Ljava/text/SimpleDateFormat;->subParseZoneStringFromSymbols(Ljava/lang/String;ILjava/text/CalendarBuilder;)I
-Ljava/text/SimpleDateFormat;->TAG_QUOTE_ASCII_CHAR:I
-Ljava/text/SimpleDateFormat;->TAG_QUOTE_CHARS:I
-Ljava/text/SimpleDateFormat;->timeZoneNames:Landroid/icu/text/TimeZoneNames;
-Ljava/text/SimpleDateFormat;->translatePattern(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
-Ljava/text/SimpleDateFormat;->useDateFormatSymbols()Z
-Ljava/text/SimpleDateFormat;->useDateFormatSymbols:Z
-Ljava/text/SimpleDateFormat;->zeroDigit:C
-Ljava/text/SimpleDateFormat;->zeroPaddingNumber(IIILjava/lang/StringBuffer;)V
-Ljava/text/StringCharacterIterator;->begin:I
-Ljava/text/StringCharacterIterator;->end:I
-Ljava/text/StringCharacterIterator;->pos:I
-Ljava/text/StringCharacterIterator;->text:Ljava/lang/String;
-Ljava/time/chrono/AbstractChronology;->addFieldValue(Ljava/util/Map;Ljava/time/temporal/ChronoField;J)V
-Ljava/time/chrono/AbstractChronology;->CHRONOS_BY_ID:Ljava/util/concurrent/ConcurrentHashMap;
-Ljava/time/chrono/AbstractChronology;->CHRONOS_BY_TYPE:Ljava/util/concurrent/ConcurrentHashMap;
-Ljava/time/chrono/AbstractChronology;->DATE_ORDER:Ljava/util/Comparator;
-Ljava/time/chrono/AbstractChronology;->DATE_TIME_ORDER:Ljava/util/Comparator;
-Ljava/time/chrono/AbstractChronology;->getAvailableChronologies()Ljava/util/Set;
-Ljava/time/chrono/AbstractChronology;->initCache()Z
-Ljava/time/chrono/AbstractChronology;->INSTANT_ORDER:Ljava/util/Comparator;
-Ljava/time/chrono/AbstractChronology;->of(Ljava/lang/String;)Ljava/time/chrono/Chronology;
-Ljava/time/chrono/AbstractChronology;->of0(Ljava/lang/String;)Ljava/time/chrono/Chronology;
-Ljava/time/chrono/AbstractChronology;->ofLocale(Ljava/util/Locale;)Ljava/time/chrono/Chronology;
-Ljava/time/chrono/AbstractChronology;->readExternal(Ljava/io/DataInput;)Ljava/time/chrono/Chronology;
-Ljava/time/chrono/AbstractChronology;->registerChrono(Ljava/time/chrono/Chronology;)Ljava/time/chrono/Chronology;
-Ljava/time/chrono/AbstractChronology;->registerChrono(Ljava/time/chrono/Chronology;Ljava/lang/String;)Ljava/time/chrono/Chronology;
-Ljava/time/chrono/AbstractChronology;->resolveAligned(Ljava/time/chrono/ChronoLocalDate;JJJ)Ljava/time/chrono/ChronoLocalDate;
-Ljava/time/chrono/AbstractChronology;->resolveProlepticMonth(Ljava/util/Map;Ljava/time/format/ResolverStyle;)V
-Ljava/time/chrono/AbstractChronology;->resolveYAA(Ljava/util/Map;Ljava/time/format/ResolverStyle;)Ljava/time/chrono/ChronoLocalDate;
-Ljava/time/chrono/AbstractChronology;->resolveYAD(Ljava/util/Map;Ljava/time/format/ResolverStyle;)Ljava/time/chrono/ChronoLocalDate;
-Ljava/time/chrono/AbstractChronology;->resolveYD(Ljava/util/Map;Ljava/time/format/ResolverStyle;)Ljava/time/chrono/ChronoLocalDate;
-Ljava/time/chrono/AbstractChronology;->resolveYearOfEra(Ljava/util/Map;Ljava/time/format/ResolverStyle;)Ljava/time/chrono/ChronoLocalDate;
-Ljava/time/chrono/AbstractChronology;->resolveYMAA(Ljava/util/Map;Ljava/time/format/ResolverStyle;)Ljava/time/chrono/ChronoLocalDate;
-Ljava/time/chrono/AbstractChronology;->resolveYMAD(Ljava/util/Map;Ljava/time/format/ResolverStyle;)Ljava/time/chrono/ChronoLocalDate;
-Ljava/time/chrono/AbstractChronology;->resolveYMD(Ljava/util/Map;Ljava/time/format/ResolverStyle;)Ljava/time/chrono/ChronoLocalDate;
-Ljava/time/chrono/AbstractChronology;->writeExternal(Ljava/io/DataOutput;)V
-Ljava/time/chrono/ChronoLocalDateImpl;-><init>()V
-Ljava/time/chrono/ChronoLocalDateImpl;->daysUntil(Ljava/time/chrono/ChronoLocalDate;)J
-Ljava/time/chrono/ChronoLocalDateImpl;->ensureValid(Ljava/time/chrono/Chronology;Ljava/time/temporal/Temporal;)Ljava/time/chrono/ChronoLocalDate;
-Ljava/time/chrono/ChronoLocalDateImpl;->minusDays(J)Ljava/time/chrono/ChronoLocalDate;
-Ljava/time/chrono/ChronoLocalDateImpl;->minusMonths(J)Ljava/time/chrono/ChronoLocalDate;
-Ljava/time/chrono/ChronoLocalDateImpl;->minusWeeks(J)Ljava/time/chrono/ChronoLocalDate;
-Ljava/time/chrono/ChronoLocalDateImpl;->minusYears(J)Ljava/time/chrono/ChronoLocalDate;
-Ljava/time/chrono/ChronoLocalDateImpl;->monthsUntil(Ljava/time/chrono/ChronoLocalDate;)J
-Ljava/time/chrono/ChronoLocalDateImpl;->plusDays(J)Ljava/time/chrono/ChronoLocalDate;
-Ljava/time/chrono/ChronoLocalDateImpl;->plusMonths(J)Ljava/time/chrono/ChronoLocalDate;
-Ljava/time/chrono/ChronoLocalDateImpl;->plusWeeks(J)Ljava/time/chrono/ChronoLocalDate;
-Ljava/time/chrono/ChronoLocalDateImpl;->plusYears(J)Ljava/time/chrono/ChronoLocalDate;
-Ljava/time/chrono/HijrahChronology;-><init>(Ljava/lang/String;)V
-Ljava/time/chrono/HijrahChronology;->calendarProperties:Ljava/util/Properties;
-Ljava/time/chrono/HijrahChronology;->calendarType:Ljava/lang/String;
-Ljava/time/chrono/HijrahChronology;->checkCalendarInit()V
-Ljava/time/chrono/HijrahChronology;->checkValidDayOfYear(I)V
-Ljava/time/chrono/HijrahChronology;->checkValidMonth(I)V
-Ljava/time/chrono/HijrahChronology;->checkValidYear(J)I
-Ljava/time/chrono/HijrahChronology;->createEpochMonths(IIILjava/util/Map;)[I
-Ljava/time/chrono/HijrahChronology;->epochDayToEpochMonth(I)I
-Ljava/time/chrono/HijrahChronology;->epochMonthLength(I)I
-Ljava/time/chrono/HijrahChronology;->epochMonthToEpochDay(I)I
-Ljava/time/chrono/HijrahChronology;->epochMonthToMonth(I)I
-Ljava/time/chrono/HijrahChronology;->epochMonthToYear(I)I
-Ljava/time/chrono/HijrahChronology;->getDayOfYear(II)I
-Ljava/time/chrono/HijrahChronology;->getEpochDay(III)J
-Ljava/time/chrono/HijrahChronology;->getHijrahDateInfo(I)[I
-Ljava/time/chrono/HijrahChronology;->getMaximumDayOfYear()I
-Ljava/time/chrono/HijrahChronology;->getMaximumMonthLength()I
-Ljava/time/chrono/HijrahChronology;->getMaximumYear()I
-Ljava/time/chrono/HijrahChronology;->getMinimumMonthLength()I
-Ljava/time/chrono/HijrahChronology;->getMinimumYear()I
-Ljava/time/chrono/HijrahChronology;->getMonthLength(II)I
-Ljava/time/chrono/HijrahChronology;->getSmallestMaximumDayOfYear()I
-Ljava/time/chrono/HijrahChronology;->getYearLength(I)I
-Ljava/time/chrono/HijrahChronology;->hijrahEpochMonthStartDays:[I
-Ljava/time/chrono/HijrahChronology;->hijrahStartEpochMonth:I
-Ljava/time/chrono/HijrahChronology;->initComplete:Z
-Ljava/time/chrono/HijrahChronology;->KEY_ID:Ljava/lang/String;
-Ljava/time/chrono/HijrahChronology;->KEY_ISO_START:Ljava/lang/String;
-Ljava/time/chrono/HijrahChronology;->KEY_TYPE:Ljava/lang/String;
-Ljava/time/chrono/HijrahChronology;->KEY_VERSION:Ljava/lang/String;
-Ljava/time/chrono/HijrahChronology;->loadCalendarData()V
-Ljava/time/chrono/HijrahChronology;->maxEpochDay:I
-Ljava/time/chrono/HijrahChronology;->maxMonthLength:I
-Ljava/time/chrono/HijrahChronology;->maxYearLength:I
-Ljava/time/chrono/HijrahChronology;->minEpochDay:I
-Ljava/time/chrono/HijrahChronology;->minMonthLength:I
-Ljava/time/chrono/HijrahChronology;->minYearLength:I
-Ljava/time/chrono/HijrahChronology;->parseMonths(Ljava/lang/String;)[I
-Ljava/time/chrono/HijrahChronology;->parseYMD(Ljava/lang/String;)[I
-Ljava/time/chrono/HijrahChronology;->PROP_PREFIX:Ljava/lang/String;
-Ljava/time/chrono/HijrahChronology;->PROP_TYPE_SUFFIX:Ljava/lang/String;
-Ljava/time/chrono/HijrahChronology;->readConfigProperties(Ljava/lang/String;)Ljava/util/Properties;
-Ljava/time/chrono/HijrahChronology;->registerVariants()V
-Ljava/time/chrono/HijrahChronology;->typeId:Ljava/lang/String;
-Ljava/time/chrono/HijrahChronology;->yearMonthToDayOfYear(II)I
-Ljava/time/chrono/HijrahChronology;->yearToEpochMonth(I)I
-Ljava/time/chrono/HijrahDate;-><init>(Ljava/time/chrono/HijrahChronology;III)V
-Ljava/time/chrono/HijrahDate;-><init>(Ljava/time/chrono/HijrahChronology;J)V
-Ljava/time/chrono/HijrahDate;->chrono:Ljava/time/chrono/HijrahChronology;
-Ljava/time/chrono/HijrahDate;->dayOfMonth:I
-Ljava/time/chrono/HijrahDate;->getDayOfWeek()I
-Ljava/time/chrono/HijrahDate;->getDayOfYear()I
-Ljava/time/chrono/HijrahDate;->getEraValue()I
-Ljava/time/chrono/HijrahDate;->getProlepticMonth()J
-Ljava/time/chrono/HijrahDate;->minusDays(J)Ljava/time/chrono/HijrahDate;
-Ljava/time/chrono/HijrahDate;->minusMonths(J)Ljava/time/chrono/HijrahDate;
-Ljava/time/chrono/HijrahDate;->minusWeeks(J)Ljava/time/chrono/HijrahDate;
-Ljava/time/chrono/HijrahDate;->minusYears(J)Ljava/time/chrono/HijrahDate;
-Ljava/time/chrono/HijrahDate;->monthOfYear:I
-Ljava/time/chrono/HijrahDate;->of(Ljava/time/chrono/HijrahChronology;III)Ljava/time/chrono/HijrahDate;
-Ljava/time/chrono/HijrahDate;->ofEpochDay(Ljava/time/chrono/HijrahChronology;J)Ljava/time/chrono/HijrahDate;
-Ljava/time/chrono/HijrahDate;->plusDays(J)Ljava/time/chrono/HijrahDate;
-Ljava/time/chrono/HijrahDate;->plusMonths(J)Ljava/time/chrono/HijrahDate;
-Ljava/time/chrono/HijrahDate;->plusWeeks(J)Ljava/time/chrono/HijrahDate;
-Ljava/time/chrono/HijrahDate;->plusYears(J)Ljava/time/chrono/HijrahDate;
-Ljava/time/chrono/HijrahDate;->prolepticYear:I
-Ljava/time/chrono/HijrahDate;->readExternal(Ljava/io/ObjectInput;)Ljava/time/chrono/HijrahDate;
-Ljava/time/chrono/HijrahDate;->resolvePreviousValid(III)Ljava/time/chrono/HijrahDate;
-Ljava/time/chrono/HijrahDate;->writeExternal(Ljava/io/ObjectOutput;)V
-Ljava/time/chrono/IsoChronology;-><init>()V
-Ljava/time/chrono/IsoChronology;->resolveProlepticMonth(Ljava/util/Map;Ljava/time/format/ResolverStyle;)V
-Ljava/time/chrono/IsoChronology;->resolveYearOfEra(Ljava/util/Map;Ljava/time/format/ResolverStyle;)Ljava/time/LocalDate;
-Ljava/time/chrono/IsoChronology;->resolveYMD(Ljava/util/Map;Ljava/time/format/ResolverStyle;)Ljava/time/LocalDate;
-Ljava/time/chrono/JapaneseChronology;-><init>()V
-Ljava/time/chrono/JapaneseChronology;->createCalendar()Ljava/util/Calendar;
-Ljava/time/chrono/JapaneseChronology;->getCurrentEra()Ljava/time/chrono/JapaneseEra;
-Ljava/time/chrono/JapaneseChronology;->JCAL:Lsun/util/calendar/LocalGregorianCalendar;
-Ljava/time/chrono/JapaneseChronology;->LOCALE:Ljava/util/Locale;
-Ljava/time/chrono/JapaneseChronology;->prolepticYearLenient(Ljava/time/chrono/JapaneseEra;I)I
-Ljava/time/chrono/JapaneseChronology;->resolveYD(Ljava/time/chrono/JapaneseEra;ILjava/util/Map;Ljava/time/format/ResolverStyle;)Ljava/time/chrono/ChronoLocalDate;
-Ljava/time/chrono/JapaneseChronology;->resolveYearOfEra(Ljava/util/Map;Ljava/time/format/ResolverStyle;)Ljava/time/chrono/ChronoLocalDate;
-Ljava/time/chrono/JapaneseChronology;->resolveYMD(Ljava/time/chrono/JapaneseEra;ILjava/util/Map;Ljava/time/format/ResolverStyle;)Ljava/time/chrono/ChronoLocalDate;
-Ljava/time/chrono/JapaneseDate;-><init>(Ljava/time/chrono/JapaneseEra;ILjava/time/LocalDate;)V
-Ljava/time/chrono/JapaneseDate;-><init>(Ljava/time/LocalDate;)V
-Ljava/time/chrono/JapaneseDate;->era:Ljava/time/chrono/JapaneseEra;
-Ljava/time/chrono/JapaneseDate;->isoDate:Ljava/time/LocalDate;
-Ljava/time/chrono/JapaneseDate;->MEIJI_6_ISODATE:Ljava/time/LocalDate;
-Ljava/time/chrono/JapaneseDate;->minusDays(J)Ljava/time/chrono/JapaneseDate;
-Ljava/time/chrono/JapaneseDate;->minusMonths(J)Ljava/time/chrono/JapaneseDate;
-Ljava/time/chrono/JapaneseDate;->minusWeeks(J)Ljava/time/chrono/JapaneseDate;
-Ljava/time/chrono/JapaneseDate;->minusYears(J)Ljava/time/chrono/JapaneseDate;
-Ljava/time/chrono/JapaneseDate;->ofYearDay(Ljava/time/chrono/JapaneseEra;II)Ljava/time/chrono/JapaneseDate;
-Ljava/time/chrono/JapaneseDate;->plusDays(J)Ljava/time/chrono/JapaneseDate;
-Ljava/time/chrono/JapaneseDate;->plusMonths(J)Ljava/time/chrono/JapaneseDate;
-Ljava/time/chrono/JapaneseDate;->plusWeeks(J)Ljava/time/chrono/JapaneseDate;
-Ljava/time/chrono/JapaneseDate;->plusYears(J)Ljava/time/chrono/JapaneseDate;
-Ljava/time/chrono/JapaneseDate;->readExternal(Ljava/io/DataInput;)Ljava/time/chrono/JapaneseDate;
-Ljava/time/chrono/JapaneseDate;->toPrivateJapaneseDate(Ljava/time/LocalDate;)Lsun/util/calendar/LocalGregorianCalendar$Date;
-Ljava/time/chrono/JapaneseDate;->with(Ljava/time/LocalDate;)Ljava/time/chrono/JapaneseDate;
-Ljava/time/chrono/JapaneseDate;->withYear(I)Ljava/time/chrono/JapaneseDate;
-Ljava/time/chrono/JapaneseDate;->withYear(Ljava/time/chrono/JapaneseEra;I)Ljava/time/chrono/JapaneseDate;
-Ljava/time/chrono/JapaneseDate;->writeExternal(Ljava/io/DataOutput;)V
-Ljava/time/chrono/JapaneseDate;->yearOfEra:I
-Ljava/time/chrono/JapaneseEra;-><init>(ILjava/time/LocalDate;)V
-Ljava/time/chrono/JapaneseEra;->eraValue:I
-Ljava/time/chrono/JapaneseEra;->ERA_CONFIG:[Lsun/util/calendar/Era;
-Ljava/time/chrono/JapaneseEra;->ERA_OFFSET:I
-Ljava/time/chrono/JapaneseEra;->from(Ljava/time/LocalDate;)Ljava/time/chrono/JapaneseEra;
-Ljava/time/chrono/JapaneseEra;->getAbbreviation()Ljava/lang/String;
-Ljava/time/chrono/JapaneseEra;->getName()Ljava/lang/String;
-Ljava/time/chrono/JapaneseEra;->getPrivateEra()Lsun/util/calendar/Era;
-Ljava/time/chrono/JapaneseEra;->KNOWN_ERAS:[Ljava/time/chrono/JapaneseEra;
-Ljava/time/chrono/JapaneseEra;->N_ERA_CONSTANTS:I
-Ljava/time/chrono/JapaneseEra;->ordinal(I)I
-Ljava/time/chrono/JapaneseEra;->privateEraFrom(Ljava/time/LocalDate;)Lsun/util/calendar/Era;
-Ljava/time/chrono/JapaneseEra;->readExternal(Ljava/io/DataInput;)Ljava/time/chrono/JapaneseEra;
-Ljava/time/chrono/JapaneseEra;->since:Ljava/time/LocalDate;
-Ljava/time/chrono/JapaneseEra;->toJapaneseEra(Lsun/util/calendar/Era;)Ljava/time/chrono/JapaneseEra;
-Ljava/time/chrono/JapaneseEra;->writeExternal(Ljava/io/DataOutput;)V
-Ljava/time/chrono/MinguoChronology;-><init>()V
-Ljava/time/chrono/MinguoChronology;->YEARS_DIFFERENCE:I
-Ljava/time/chrono/MinguoDate;-><init>(Ljava/time/LocalDate;)V
-Ljava/time/chrono/MinguoDate;->getProlepticMonth()J
-Ljava/time/chrono/MinguoDate;->getProlepticYear()I
-Ljava/time/chrono/MinguoDate;->isoDate:Ljava/time/LocalDate;
-Ljava/time/chrono/MinguoDate;->minusDays(J)Ljava/time/chrono/MinguoDate;
-Ljava/time/chrono/MinguoDate;->minusMonths(J)Ljava/time/chrono/MinguoDate;
-Ljava/time/chrono/MinguoDate;->minusWeeks(J)Ljava/time/chrono/MinguoDate;
-Ljava/time/chrono/MinguoDate;->minusYears(J)Ljava/time/chrono/MinguoDate;
-Ljava/time/chrono/MinguoDate;->plusDays(J)Ljava/time/chrono/MinguoDate;
-Ljava/time/chrono/MinguoDate;->plusMonths(J)Ljava/time/chrono/MinguoDate;
-Ljava/time/chrono/MinguoDate;->plusWeeks(J)Ljava/time/chrono/MinguoDate;
-Ljava/time/chrono/MinguoDate;->plusYears(J)Ljava/time/chrono/MinguoDate;
-Ljava/time/chrono/MinguoDate;->readExternal(Ljava/io/DataInput;)Ljava/time/chrono/MinguoDate;
-Ljava/time/chrono/MinguoDate;->with(Ljava/time/LocalDate;)Ljava/time/chrono/MinguoDate;
-Ljava/time/chrono/MinguoDate;->writeExternal(Ljava/io/DataOutput;)V
-Ljava/time/chrono/ThaiBuddhistChronology;-><init>()V
-Ljava/time/chrono/ThaiBuddhistChronology;->ERA_FULL_NAMES:Ljava/util/HashMap;
-Ljava/time/chrono/ThaiBuddhistChronology;->ERA_NARROW_NAMES:Ljava/util/HashMap;
-Ljava/time/chrono/ThaiBuddhistChronology;->ERA_SHORT_NAMES:Ljava/util/HashMap;
-Ljava/time/chrono/ThaiBuddhistChronology;->FALLBACK_LANGUAGE:Ljava/lang/String;
-Ljava/time/chrono/ThaiBuddhistChronology;->TARGET_LANGUAGE:Ljava/lang/String;
-Ljava/time/chrono/ThaiBuddhistChronology;->YEARS_DIFFERENCE:I
-Ljava/time/chrono/ThaiBuddhistDate;-><init>(Ljava/time/LocalDate;)V
-Ljava/time/chrono/ThaiBuddhistDate;->getProlepticMonth()J
-Ljava/time/chrono/ThaiBuddhistDate;->getProlepticYear()I
-Ljava/time/chrono/ThaiBuddhistDate;->isoDate:Ljava/time/LocalDate;
-Ljava/time/chrono/ThaiBuddhistDate;->minusDays(J)Ljava/time/chrono/ThaiBuddhistDate;
-Ljava/time/chrono/ThaiBuddhistDate;->minusMonths(J)Ljava/time/chrono/ThaiBuddhistDate;
-Ljava/time/chrono/ThaiBuddhistDate;->minusWeeks(J)Ljava/time/chrono/ThaiBuddhistDate;
-Ljava/time/chrono/ThaiBuddhistDate;->minusYears(J)Ljava/time/chrono/ThaiBuddhistDate;
-Ljava/time/chrono/ThaiBuddhistDate;->plusDays(J)Ljava/time/chrono/ThaiBuddhistDate;
-Ljava/time/chrono/ThaiBuddhistDate;->plusMonths(J)Ljava/time/chrono/ThaiBuddhistDate;
-Ljava/time/chrono/ThaiBuddhistDate;->plusWeeks(J)Ljava/time/chrono/ThaiBuddhistDate;
-Ljava/time/chrono/ThaiBuddhistDate;->plusYears(J)Ljava/time/chrono/ThaiBuddhistDate;
-Ljava/time/chrono/ThaiBuddhistDate;->readExternal(Ljava/io/DataInput;)Ljava/time/chrono/ThaiBuddhistDate;
-Ljava/time/chrono/ThaiBuddhistDate;->with(Ljava/time/LocalDate;)Ljava/time/chrono/ThaiBuddhistDate;
-Ljava/time/chrono/ThaiBuddhistDate;->writeExternal(Ljava/io/DataOutput;)V
-Ljava/time/Clock$FixedClock;-><init>(Ljava/time/Instant;Ljava/time/ZoneId;)V
-Ljava/time/Clock$FixedClock;->instant:Ljava/time/Instant;
-Ljava/time/Clock$FixedClock;->zone:Ljava/time/ZoneId;
-Ljava/time/Clock$OffsetClock;-><init>(Ljava/time/Clock;Ljava/time/Duration;)V
-Ljava/time/Clock$OffsetClock;->baseClock:Ljava/time/Clock;
-Ljava/time/Clock$OffsetClock;->offset:Ljava/time/Duration;
-Ljava/time/Clock$SystemClock;-><init>(Ljava/time/ZoneId;)V
-Ljava/time/Clock$SystemClock;->zone:Ljava/time/ZoneId;
-Ljava/time/Clock$TickClock;-><init>(Ljava/time/Clock;J)V
-Ljava/time/Clock$TickClock;->baseClock:Ljava/time/Clock;
-Ljava/time/Clock$TickClock;->tickNanos:J
-Ljava/time/DayOfWeek;->ENUMS:[Ljava/time/DayOfWeek;
-Ljava/time/Duration$DurationUnits;-><init>()V
-Ljava/time/Duration$DurationUnits;->UNITS:Ljava/util/List;
-Ljava/time/Duration;-><init>(JI)V
-Ljava/time/Duration;->BI_NANOS_PER_SECOND:Ljava/math/BigInteger;
-Ljava/time/Duration;->create(JI)Ljava/time/Duration;
-Ljava/time/Duration;->create(Ljava/math/BigDecimal;)Ljava/time/Duration;
-Ljava/time/Duration;->create(ZJJJJI)Ljava/time/Duration;
-Ljava/time/Duration;->nanos:I
-Ljava/time/Duration;->parseFraction(Ljava/lang/CharSequence;Ljava/lang/String;I)I
-Ljava/time/Duration;->parseNumber(Ljava/lang/CharSequence;Ljava/lang/String;ILjava/lang/String;)J
-Ljava/time/Duration;->PATTERN:Ljava/util/regex/Pattern;
-Ljava/time/Duration;->plus(JJ)Ljava/time/Duration;
-Ljava/time/Duration;->readExternal(Ljava/io/DataInput;)Ljava/time/Duration;
-Ljava/time/Duration;->seconds:J
-Ljava/time/Duration;->writeExternal(Ljava/io/DataOutput;)V
-Ljava/time/format/DateTimeFormatter$ClassicFormat;-><init>(Ljava/time/format/DateTimeFormatter;Ljava/time/temporal/TemporalQuery;)V
-Ljava/time/format/DateTimeFormatter$ClassicFormat;->formatter:Ljava/time/format/DateTimeFormatter;
-Ljava/time/format/DateTimeFormatter$ClassicFormat;->parseType:Ljava/time/temporal/TemporalQuery;
-Ljava/time/format/DateTimeFormatter;-><init>(Ljava/time/format/DateTimeFormatterBuilder$CompositePrinterParser;Ljava/util/Locale;Ljava/time/format/DecimalStyle;Ljava/time/format/ResolverStyle;Ljava/util/Set;Ljava/time/chrono/Chronology;Ljava/time/ZoneId;)V
-Ljava/time/format/DateTimeFormatter;->chrono:Ljava/time/chrono/Chronology;
-Ljava/time/format/DateTimeFormatter;->createError(Ljava/lang/CharSequence;Ljava/lang/RuntimeException;)Ljava/time/format/DateTimeParseException;
-Ljava/time/format/DateTimeFormatter;->decimalStyle:Ljava/time/format/DecimalStyle;
-Ljava/time/format/DateTimeFormatter;->locale:Ljava/util/Locale;
-Ljava/time/format/DateTimeFormatter;->PARSED_EXCESS_DAYS:Ljava/time/temporal/TemporalQuery;
-Ljava/time/format/DateTimeFormatter;->PARSED_LEAP_SECOND:Ljava/time/temporal/TemporalQuery;
-Ljava/time/format/DateTimeFormatter;->parseResolved0(Ljava/lang/CharSequence;Ljava/text/ParsePosition;)Ljava/time/temporal/TemporalAccessor;
-Ljava/time/format/DateTimeFormatter;->parseUnresolved0(Ljava/lang/CharSequence;Ljava/text/ParsePosition;)Ljava/time/format/DateTimeParseContext;
-Ljava/time/format/DateTimeFormatter;->printerParser:Ljava/time/format/DateTimeFormatterBuilder$CompositePrinterParser;
-Ljava/time/format/DateTimeFormatter;->resolverFields:Ljava/util/Set;
-Ljava/time/format/DateTimeFormatter;->resolverStyle:Ljava/time/format/ResolverStyle;
-Ljava/time/format/DateTimeFormatter;->toPrinterParser(Z)Ljava/time/format/DateTimeFormatterBuilder$CompositePrinterParser;
-Ljava/time/format/DateTimeFormatter;->zone:Ljava/time/ZoneId;
-Ljava/time/format/DateTimeFormatterBuilder$CharLiteralPrinterParser;-><init>(C)V
-Ljava/time/format/DateTimeFormatterBuilder$CharLiteralPrinterParser;->format(Ljava/time/format/DateTimePrintContext;Ljava/lang/StringBuilder;)Z
-Ljava/time/format/DateTimeFormatterBuilder$CharLiteralPrinterParser;->literal:C
-Ljava/time/format/DateTimeFormatterBuilder$CharLiteralPrinterParser;->parse(Ljava/time/format/DateTimeParseContext;Ljava/lang/CharSequence;I)I
-Ljava/time/format/DateTimeFormatterBuilder$ChronoPrinterParser;-><init>(Ljava/time/format/TextStyle;)V
-Ljava/time/format/DateTimeFormatterBuilder$ChronoPrinterParser;->format(Ljava/time/format/DateTimePrintContext;Ljava/lang/StringBuilder;)Z
-Ljava/time/format/DateTimeFormatterBuilder$ChronoPrinterParser;->getChronologyName(Ljava/time/chrono/Chronology;Ljava/util/Locale;)Ljava/lang/String;
-Ljava/time/format/DateTimeFormatterBuilder$ChronoPrinterParser;->parse(Ljava/time/format/DateTimeParseContext;Ljava/lang/CharSequence;I)I
-Ljava/time/format/DateTimeFormatterBuilder$ChronoPrinterParser;->textStyle:Ljava/time/format/TextStyle;
-Ljava/time/format/DateTimeFormatterBuilder$CompositePrinterParser;-><init>(Ljava/util/List;Z)V
-Ljava/time/format/DateTimeFormatterBuilder$CompositePrinterParser;-><init>([Ljava/time/format/DateTimeFormatterBuilder$DateTimePrinterParser;Z)V
-Ljava/time/format/DateTimeFormatterBuilder$CompositePrinterParser;->format(Ljava/time/format/DateTimePrintContext;Ljava/lang/StringBuilder;)Z
-Ljava/time/format/DateTimeFormatterBuilder$CompositePrinterParser;->optional:Z
-Ljava/time/format/DateTimeFormatterBuilder$CompositePrinterParser;->parse(Ljava/time/format/DateTimeParseContext;Ljava/lang/CharSequence;I)I
-Ljava/time/format/DateTimeFormatterBuilder$CompositePrinterParser;->printerParsers:[Ljava/time/format/DateTimeFormatterBuilder$DateTimePrinterParser;
-Ljava/time/format/DateTimeFormatterBuilder$CompositePrinterParser;->withOptional(Z)Ljava/time/format/DateTimeFormatterBuilder$CompositePrinterParser;
-Ljava/time/format/DateTimeFormatterBuilder$DateTimePrinterParser;->format(Ljava/time/format/DateTimePrintContext;Ljava/lang/StringBuilder;)Z
-Ljava/time/format/DateTimeFormatterBuilder$DateTimePrinterParser;->parse(Ljava/time/format/DateTimeParseContext;Ljava/lang/CharSequence;I)I
-Ljava/time/format/DateTimeFormatterBuilder$DefaultValueParser;-><init>(Ljava/time/temporal/TemporalField;J)V
-Ljava/time/format/DateTimeFormatterBuilder$DefaultValueParser;->field:Ljava/time/temporal/TemporalField;
-Ljava/time/format/DateTimeFormatterBuilder$DefaultValueParser;->format(Ljava/time/format/DateTimePrintContext;Ljava/lang/StringBuilder;)Z
-Ljava/time/format/DateTimeFormatterBuilder$DefaultValueParser;->parse(Ljava/time/format/DateTimeParseContext;Ljava/lang/CharSequence;I)I
-Ljava/time/format/DateTimeFormatterBuilder$DefaultValueParser;->value:J
-Ljava/time/format/DateTimeFormatterBuilder$FractionPrinterParser;-><init>(Ljava/time/temporal/TemporalField;IIZ)V
-Ljava/time/format/DateTimeFormatterBuilder$FractionPrinterParser;->convertFromFraction(Ljava/math/BigDecimal;)J
-Ljava/time/format/DateTimeFormatterBuilder$FractionPrinterParser;->convertToFraction(J)Ljava/math/BigDecimal;
-Ljava/time/format/DateTimeFormatterBuilder$FractionPrinterParser;->decimalPoint:Z
-Ljava/time/format/DateTimeFormatterBuilder$FractionPrinterParser;->field:Ljava/time/temporal/TemporalField;
-Ljava/time/format/DateTimeFormatterBuilder$FractionPrinterParser;->format(Ljava/time/format/DateTimePrintContext;Ljava/lang/StringBuilder;)Z
-Ljava/time/format/DateTimeFormatterBuilder$FractionPrinterParser;->maxWidth:I
-Ljava/time/format/DateTimeFormatterBuilder$FractionPrinterParser;->minWidth:I
-Ljava/time/format/DateTimeFormatterBuilder$FractionPrinterParser;->parse(Ljava/time/format/DateTimeParseContext;Ljava/lang/CharSequence;I)I
-Ljava/time/format/DateTimeFormatterBuilder$InstantPrinterParser;-><init>(I)V
-Ljava/time/format/DateTimeFormatterBuilder$InstantPrinterParser;->format(Ljava/time/format/DateTimePrintContext;Ljava/lang/StringBuilder;)Z
-Ljava/time/format/DateTimeFormatterBuilder$InstantPrinterParser;->fractionalDigits:I
-Ljava/time/format/DateTimeFormatterBuilder$InstantPrinterParser;->parse(Ljava/time/format/DateTimeParseContext;Ljava/lang/CharSequence;I)I
-Ljava/time/format/DateTimeFormatterBuilder$InstantPrinterParser;->SECONDS_0000_TO_1970:J
-Ljava/time/format/DateTimeFormatterBuilder$InstantPrinterParser;->SECONDS_PER_10000_YEARS:J
-Ljava/time/format/DateTimeFormatterBuilder$LocalizedOffsetIdPrinterParser;-><init>(Ljava/time/format/TextStyle;)V
-Ljava/time/format/DateTimeFormatterBuilder$LocalizedOffsetIdPrinterParser;->appendHMS(Ljava/lang/StringBuilder;I)Ljava/lang/StringBuilder;
-Ljava/time/format/DateTimeFormatterBuilder$LocalizedOffsetIdPrinterParser;->format(Ljava/time/format/DateTimePrintContext;Ljava/lang/StringBuilder;)Z
-Ljava/time/format/DateTimeFormatterBuilder$LocalizedOffsetIdPrinterParser;->getDigit(Ljava/lang/CharSequence;I)I
-Ljava/time/format/DateTimeFormatterBuilder$LocalizedOffsetIdPrinterParser;->parse(Ljava/time/format/DateTimeParseContext;Ljava/lang/CharSequence;I)I
-Ljava/time/format/DateTimeFormatterBuilder$LocalizedOffsetIdPrinterParser;->style:Ljava/time/format/TextStyle;
-Ljava/time/format/DateTimeFormatterBuilder$LocalizedPrinterParser;-><init>(Ljava/time/format/FormatStyle;Ljava/time/format/FormatStyle;)V
-Ljava/time/format/DateTimeFormatterBuilder$LocalizedPrinterParser;->dateStyle:Ljava/time/format/FormatStyle;
-Ljava/time/format/DateTimeFormatterBuilder$LocalizedPrinterParser;->format(Ljava/time/format/DateTimePrintContext;Ljava/lang/StringBuilder;)Z
-Ljava/time/format/DateTimeFormatterBuilder$LocalizedPrinterParser;->formatter(Ljava/util/Locale;Ljava/time/chrono/Chronology;)Ljava/time/format/DateTimeFormatter;
-Ljava/time/format/DateTimeFormatterBuilder$LocalizedPrinterParser;->FORMATTER_CACHE:Ljava/util/concurrent/ConcurrentMap;
-Ljava/time/format/DateTimeFormatterBuilder$LocalizedPrinterParser;->parse(Ljava/time/format/DateTimeParseContext;Ljava/lang/CharSequence;I)I
-Ljava/time/format/DateTimeFormatterBuilder$LocalizedPrinterParser;->timeStyle:Ljava/time/format/FormatStyle;
-Ljava/time/format/DateTimeFormatterBuilder$NumberPrinterParser;-><init>(Ljava/time/temporal/TemporalField;IILjava/time/format/SignStyle;)V
-Ljava/time/format/DateTimeFormatterBuilder$NumberPrinterParser;-><init>(Ljava/time/temporal/TemporalField;IILjava/time/format/SignStyle;I)V
-Ljava/time/format/DateTimeFormatterBuilder$NumberPrinterParser;->EXCEED_POINTS:[J
-Ljava/time/format/DateTimeFormatterBuilder$NumberPrinterParser;->field:Ljava/time/temporal/TemporalField;
-Ljava/time/format/DateTimeFormatterBuilder$NumberPrinterParser;->format(Ljava/time/format/DateTimePrintContext;Ljava/lang/StringBuilder;)Z
-Ljava/time/format/DateTimeFormatterBuilder$NumberPrinterParser;->getValue(Ljava/time/format/DateTimePrintContext;J)J
-Ljava/time/format/DateTimeFormatterBuilder$NumberPrinterParser;->isFixedWidth(Ljava/time/format/DateTimeParseContext;)Z
-Ljava/time/format/DateTimeFormatterBuilder$NumberPrinterParser;->maxWidth:I
-Ljava/time/format/DateTimeFormatterBuilder$NumberPrinterParser;->minWidth:I
-Ljava/time/format/DateTimeFormatterBuilder$NumberPrinterParser;->parse(Ljava/time/format/DateTimeParseContext;Ljava/lang/CharSequence;I)I
-Ljava/time/format/DateTimeFormatterBuilder$NumberPrinterParser;->setValue(Ljava/time/format/DateTimeParseContext;JII)I
-Ljava/time/format/DateTimeFormatterBuilder$NumberPrinterParser;->signStyle:Ljava/time/format/SignStyle;
-Ljava/time/format/DateTimeFormatterBuilder$NumberPrinterParser;->subsequentWidth:I
-Ljava/time/format/DateTimeFormatterBuilder$NumberPrinterParser;->withFixedWidth()Ljava/time/format/DateTimeFormatterBuilder$NumberPrinterParser;
-Ljava/time/format/DateTimeFormatterBuilder$NumberPrinterParser;->withSubsequentWidth(I)Ljava/time/format/DateTimeFormatterBuilder$NumberPrinterParser;
-Ljava/time/format/DateTimeFormatterBuilder$OffsetIdPrinterParser;-><init>(Ljava/lang/String;Ljava/lang/String;)V
-Ljava/time/format/DateTimeFormatterBuilder$OffsetIdPrinterParser;->checkPattern(Ljava/lang/String;)I
-Ljava/time/format/DateTimeFormatterBuilder$OffsetIdPrinterParser;->format(Ljava/time/format/DateTimePrintContext;Ljava/lang/StringBuilder;)Z
-Ljava/time/format/DateTimeFormatterBuilder$OffsetIdPrinterParser;->INSTANCE_ID_Z:Ljava/time/format/DateTimeFormatterBuilder$OffsetIdPrinterParser;
-Ljava/time/format/DateTimeFormatterBuilder$OffsetIdPrinterParser;->INSTANCE_ID_ZERO:Ljava/time/format/DateTimeFormatterBuilder$OffsetIdPrinterParser;
-Ljava/time/format/DateTimeFormatterBuilder$OffsetIdPrinterParser;->noOffsetText:Ljava/lang/String;
-Ljava/time/format/DateTimeFormatterBuilder$OffsetIdPrinterParser;->parse(Ljava/time/format/DateTimeParseContext;Ljava/lang/CharSequence;I)I
-Ljava/time/format/DateTimeFormatterBuilder$OffsetIdPrinterParser;->parseNumber([IILjava/lang/CharSequence;Z)Z
-Ljava/time/format/DateTimeFormatterBuilder$OffsetIdPrinterParser;->PATTERNS:[Ljava/lang/String;
-Ljava/time/format/DateTimeFormatterBuilder$OffsetIdPrinterParser;->type:I
-Ljava/time/format/DateTimeFormatterBuilder$PadPrinterParserDecorator;-><init>(Ljava/time/format/DateTimeFormatterBuilder$DateTimePrinterParser;IC)V
-Ljava/time/format/DateTimeFormatterBuilder$PadPrinterParserDecorator;->format(Ljava/time/format/DateTimePrintContext;Ljava/lang/StringBuilder;)Z
-Ljava/time/format/DateTimeFormatterBuilder$PadPrinterParserDecorator;->padChar:C
-Ljava/time/format/DateTimeFormatterBuilder$PadPrinterParserDecorator;->padWidth:I
-Ljava/time/format/DateTimeFormatterBuilder$PadPrinterParserDecorator;->parse(Ljava/time/format/DateTimeParseContext;Ljava/lang/CharSequence;I)I
-Ljava/time/format/DateTimeFormatterBuilder$PadPrinterParserDecorator;->printerParser:Ljava/time/format/DateTimeFormatterBuilder$DateTimePrinterParser;
-Ljava/time/format/DateTimeFormatterBuilder$PrefixTree$CI;-><init>(Ljava/lang/String;Ljava/lang/String;Ljava/time/format/DateTimeFormatterBuilder$PrefixTree;)V
-Ljava/time/format/DateTimeFormatterBuilder$PrefixTree$CI;->isEqual(CC)Z
-Ljava/time/format/DateTimeFormatterBuilder$PrefixTree$CI;->newNode(Ljava/lang/String;Ljava/lang/String;Ljava/time/format/DateTimeFormatterBuilder$PrefixTree;)Ljava/time/format/DateTimeFormatterBuilder$PrefixTree$CI;
-Ljava/time/format/DateTimeFormatterBuilder$PrefixTree$CI;->prefixOf(Ljava/lang/CharSequence;II)Z
-Ljava/time/format/DateTimeFormatterBuilder$PrefixTree$LENIENT;-><init>(Ljava/lang/String;Ljava/lang/String;Ljava/time/format/DateTimeFormatterBuilder$PrefixTree;)V
-Ljava/time/format/DateTimeFormatterBuilder$PrefixTree$LENIENT;->isLenientChar(C)Z
-Ljava/time/format/DateTimeFormatterBuilder$PrefixTree$LENIENT;->match(Ljava/lang/CharSequence;Ljava/text/ParsePosition;)Ljava/lang/String;
-Ljava/time/format/DateTimeFormatterBuilder$PrefixTree$LENIENT;->newNode(Ljava/lang/String;Ljava/lang/String;Ljava/time/format/DateTimeFormatterBuilder$PrefixTree;)Ljava/time/format/DateTimeFormatterBuilder$PrefixTree$CI;
-Ljava/time/format/DateTimeFormatterBuilder$PrefixTree$LENIENT;->toKey(Ljava/lang/String;)Ljava/lang/String;
-Ljava/time/format/DateTimeFormatterBuilder$PrefixTree;-><init>(Ljava/lang/String;Ljava/lang/String;Ljava/time/format/DateTimeFormatterBuilder$PrefixTree;)V
-Ljava/time/format/DateTimeFormatterBuilder$PrefixTree;->add(Ljava/lang/String;Ljava/lang/String;)Z
-Ljava/time/format/DateTimeFormatterBuilder$PrefixTree;->add0(Ljava/lang/String;Ljava/lang/String;)Z
-Ljava/time/format/DateTimeFormatterBuilder$PrefixTree;->c0:C
-Ljava/time/format/DateTimeFormatterBuilder$PrefixTree;->child:Ljava/time/format/DateTimeFormatterBuilder$PrefixTree;
-Ljava/time/format/DateTimeFormatterBuilder$PrefixTree;->copyTree()Ljava/time/format/DateTimeFormatterBuilder$PrefixTree;
-Ljava/time/format/DateTimeFormatterBuilder$PrefixTree;->isEqual(CC)Z
-Ljava/time/format/DateTimeFormatterBuilder$PrefixTree;->key:Ljava/lang/String;
-Ljava/time/format/DateTimeFormatterBuilder$PrefixTree;->match(Ljava/lang/CharSequence;II)Ljava/lang/String;
-Ljava/time/format/DateTimeFormatterBuilder$PrefixTree;->match(Ljava/lang/CharSequence;Ljava/text/ParsePosition;)Ljava/lang/String;
-Ljava/time/format/DateTimeFormatterBuilder$PrefixTree;->newNode(Ljava/lang/String;Ljava/lang/String;Ljava/time/format/DateTimeFormatterBuilder$PrefixTree;)Ljava/time/format/DateTimeFormatterBuilder$PrefixTree;
-Ljava/time/format/DateTimeFormatterBuilder$PrefixTree;->newTree(Ljava/time/format/DateTimeParseContext;)Ljava/time/format/DateTimeFormatterBuilder$PrefixTree;
-Ljava/time/format/DateTimeFormatterBuilder$PrefixTree;->newTree(Ljava/util/Set;Ljava/time/format/DateTimeParseContext;)Ljava/time/format/DateTimeFormatterBuilder$PrefixTree;
-Ljava/time/format/DateTimeFormatterBuilder$PrefixTree;->prefixLength(Ljava/lang/String;)I
-Ljava/time/format/DateTimeFormatterBuilder$PrefixTree;->prefixOf(Ljava/lang/CharSequence;II)Z
-Ljava/time/format/DateTimeFormatterBuilder$PrefixTree;->sibling:Ljava/time/format/DateTimeFormatterBuilder$PrefixTree;
-Ljava/time/format/DateTimeFormatterBuilder$PrefixTree;->toKey(Ljava/lang/String;)Ljava/lang/String;
-Ljava/time/format/DateTimeFormatterBuilder$PrefixTree;->value:Ljava/lang/String;
-Ljava/time/format/DateTimeFormatterBuilder$ReducedPrinterParser;-><init>(Ljava/time/temporal/TemporalField;IIILjava/time/chrono/ChronoLocalDate;)V
-Ljava/time/format/DateTimeFormatterBuilder$ReducedPrinterParser;-><init>(Ljava/time/temporal/TemporalField;IIILjava/time/chrono/ChronoLocalDate;I)V
-Ljava/time/format/DateTimeFormatterBuilder$ReducedPrinterParser;->baseDate:Ljava/time/chrono/ChronoLocalDate;
-Ljava/time/format/DateTimeFormatterBuilder$ReducedPrinterParser;->baseValue:I
-Ljava/time/format/DateTimeFormatterBuilder$ReducedPrinterParser;->BASE_DATE:Ljava/time/LocalDate;
-Ljava/time/format/DateTimeFormatterBuilder$ReducedPrinterParser;->getValue(Ljava/time/format/DateTimePrintContext;J)J
-Ljava/time/format/DateTimeFormatterBuilder$ReducedPrinterParser;->isFixedWidth(Ljava/time/format/DateTimeParseContext;)Z
-Ljava/time/format/DateTimeFormatterBuilder$ReducedPrinterParser;->setValue(Ljava/time/format/DateTimeParseContext;JII)I
-Ljava/time/format/DateTimeFormatterBuilder$ReducedPrinterParser;->withFixedWidth()Ljava/time/format/DateTimeFormatterBuilder$ReducedPrinterParser;
-Ljava/time/format/DateTimeFormatterBuilder$ReducedPrinterParser;->withSubsequentWidth(I)Ljava/time/format/DateTimeFormatterBuilder$ReducedPrinterParser;
-Ljava/time/format/DateTimeFormatterBuilder$SettingsParser;->format(Ljava/time/format/DateTimePrintContext;Ljava/lang/StringBuilder;)Z
-Ljava/time/format/DateTimeFormatterBuilder$SettingsParser;->INSENSITIVE:Ljava/time/format/DateTimeFormatterBuilder$SettingsParser;
-Ljava/time/format/DateTimeFormatterBuilder$SettingsParser;->LENIENT:Ljava/time/format/DateTimeFormatterBuilder$SettingsParser;
-Ljava/time/format/DateTimeFormatterBuilder$SettingsParser;->parse(Ljava/time/format/DateTimeParseContext;Ljava/lang/CharSequence;I)I
-Ljava/time/format/DateTimeFormatterBuilder$SettingsParser;->SENSITIVE:Ljava/time/format/DateTimeFormatterBuilder$SettingsParser;
-Ljava/time/format/DateTimeFormatterBuilder$SettingsParser;->STRICT:Ljava/time/format/DateTimeFormatterBuilder$SettingsParser;
-Ljava/time/format/DateTimeFormatterBuilder$SettingsParser;->valueOf(Ljava/lang/String;)Ljava/time/format/DateTimeFormatterBuilder$SettingsParser;
-Ljava/time/format/DateTimeFormatterBuilder$SettingsParser;->values()[Ljava/time/format/DateTimeFormatterBuilder$SettingsParser;
-Ljava/time/format/DateTimeFormatterBuilder$StringLiteralPrinterParser;-><init>(Ljava/lang/String;)V
-Ljava/time/format/DateTimeFormatterBuilder$StringLiteralPrinterParser;->format(Ljava/time/format/DateTimePrintContext;Ljava/lang/StringBuilder;)Z
-Ljava/time/format/DateTimeFormatterBuilder$StringLiteralPrinterParser;->literal:Ljava/lang/String;
-Ljava/time/format/DateTimeFormatterBuilder$StringLiteralPrinterParser;->parse(Ljava/time/format/DateTimeParseContext;Ljava/lang/CharSequence;I)I
-Ljava/time/format/DateTimeFormatterBuilder$TextPrinterParser;-><init>(Ljava/time/temporal/TemporalField;Ljava/time/format/TextStyle;Ljava/time/format/DateTimeTextProvider;)V
-Ljava/time/format/DateTimeFormatterBuilder$TextPrinterParser;->field:Ljava/time/temporal/TemporalField;
-Ljava/time/format/DateTimeFormatterBuilder$TextPrinterParser;->format(Ljava/time/format/DateTimePrintContext;Ljava/lang/StringBuilder;)Z
-Ljava/time/format/DateTimeFormatterBuilder$TextPrinterParser;->numberPrinterParser()Ljava/time/format/DateTimeFormatterBuilder$NumberPrinterParser;
-Ljava/time/format/DateTimeFormatterBuilder$TextPrinterParser;->numberPrinterParser:Ljava/time/format/DateTimeFormatterBuilder$NumberPrinterParser;
-Ljava/time/format/DateTimeFormatterBuilder$TextPrinterParser;->parse(Ljava/time/format/DateTimeParseContext;Ljava/lang/CharSequence;I)I
-Ljava/time/format/DateTimeFormatterBuilder$TextPrinterParser;->provider:Ljava/time/format/DateTimeTextProvider;
-Ljava/time/format/DateTimeFormatterBuilder$TextPrinterParser;->textStyle:Ljava/time/format/TextStyle;
-Ljava/time/format/DateTimeFormatterBuilder$WeekBasedFieldPrinterParser;-><init>(CI)V
-Ljava/time/format/DateTimeFormatterBuilder$WeekBasedFieldPrinterParser;->chr:C
-Ljava/time/format/DateTimeFormatterBuilder$WeekBasedFieldPrinterParser;->count:I
-Ljava/time/format/DateTimeFormatterBuilder$WeekBasedFieldPrinterParser;->format(Ljava/time/format/DateTimePrintContext;Ljava/lang/StringBuilder;)Z
-Ljava/time/format/DateTimeFormatterBuilder$WeekBasedFieldPrinterParser;->parse(Ljava/time/format/DateTimeParseContext;Ljava/lang/CharSequence;I)I
-Ljava/time/format/DateTimeFormatterBuilder$WeekBasedFieldPrinterParser;->printerParser(Ljava/util/Locale;)Ljava/time/format/DateTimeFormatterBuilder$DateTimePrinterParser;
-Ljava/time/format/DateTimeFormatterBuilder$ZoneIdPrinterParser;-><init>(Ljava/time/temporal/TemporalQuery;Ljava/lang/String;)V
-Ljava/time/format/DateTimeFormatterBuilder$ZoneIdPrinterParser;->cachedPrefixTree:Ljava/util/Map$Entry;
-Ljava/time/format/DateTimeFormatterBuilder$ZoneIdPrinterParser;->cachedPrefixTreeCI:Ljava/util/Map$Entry;
-Ljava/time/format/DateTimeFormatterBuilder$ZoneIdPrinterParser;->description:Ljava/lang/String;
-Ljava/time/format/DateTimeFormatterBuilder$ZoneIdPrinterParser;->format(Ljava/time/format/DateTimePrintContext;Ljava/lang/StringBuilder;)Z
-Ljava/time/format/DateTimeFormatterBuilder$ZoneIdPrinterParser;->getTree(Ljava/time/format/DateTimeParseContext;)Ljava/time/format/DateTimeFormatterBuilder$PrefixTree;
-Ljava/time/format/DateTimeFormatterBuilder$ZoneIdPrinterParser;->parse(Ljava/time/format/DateTimeParseContext;Ljava/lang/CharSequence;I)I
-Ljava/time/format/DateTimeFormatterBuilder$ZoneIdPrinterParser;->parseOffsetBased(Ljava/time/format/DateTimeParseContext;Ljava/lang/CharSequence;IILjava/time/format/DateTimeFormatterBuilder$OffsetIdPrinterParser;)I
-Ljava/time/format/DateTimeFormatterBuilder$ZoneIdPrinterParser;->query:Ljava/time/temporal/TemporalQuery;
-Ljava/time/format/DateTimeFormatterBuilder$ZoneTextPrinterParser;-><init>(Ljava/time/format/TextStyle;Ljava/util/Set;)V
-Ljava/time/format/DateTimeFormatterBuilder$ZoneTextPrinterParser;->cache:Ljava/util/Map;
-Ljava/time/format/DateTimeFormatterBuilder$ZoneTextPrinterParser;->cachedTree:Ljava/util/Map;
-Ljava/time/format/DateTimeFormatterBuilder$ZoneTextPrinterParser;->cachedTreeCI:Ljava/util/Map;
-Ljava/time/format/DateTimeFormatterBuilder$ZoneTextPrinterParser;->DST:I
-Ljava/time/format/DateTimeFormatterBuilder$ZoneTextPrinterParser;->format(Ljava/time/format/DateTimePrintContext;Ljava/lang/StringBuilder;)Z
-Ljava/time/format/DateTimeFormatterBuilder$ZoneTextPrinterParser;->FULL_TYPES:[Landroid/icu/text/TimeZoneNames$NameType;
-Ljava/time/format/DateTimeFormatterBuilder$ZoneTextPrinterParser;->GENERIC:I
-Ljava/time/format/DateTimeFormatterBuilder$ZoneTextPrinterParser;->getDisplayName(Ljava/lang/String;ILjava/util/Locale;)Ljava/lang/String;
-Ljava/time/format/DateTimeFormatterBuilder$ZoneTextPrinterParser;->getTree(Ljava/time/format/DateTimeParseContext;)Ljava/time/format/DateTimeFormatterBuilder$PrefixTree;
-Ljava/time/format/DateTimeFormatterBuilder$ZoneTextPrinterParser;->preferredZones:Ljava/util/Set;
-Ljava/time/format/DateTimeFormatterBuilder$ZoneTextPrinterParser;->SHORT_TYPES:[Landroid/icu/text/TimeZoneNames$NameType;
-Ljava/time/format/DateTimeFormatterBuilder$ZoneTextPrinterParser;->STD:I
-Ljava/time/format/DateTimeFormatterBuilder$ZoneTextPrinterParser;->textStyle:Ljava/time/format/TextStyle;
-Ljava/time/format/DateTimeFormatterBuilder$ZoneTextPrinterParser;->TYPES:[Landroid/icu/text/TimeZoneNames$NameType;
-Ljava/time/format/DateTimeFormatterBuilder;-><init>(Ljava/time/format/DateTimeFormatterBuilder;Z)V
-Ljava/time/format/DateTimeFormatterBuilder;->active:Ljava/time/format/DateTimeFormatterBuilder;
-Ljava/time/format/DateTimeFormatterBuilder;->appendInternal(Ljava/time/format/DateTimeFormatterBuilder$DateTimePrinterParser;)I
-Ljava/time/format/DateTimeFormatterBuilder;->appendValue(Ljava/time/format/DateTimeFormatterBuilder$NumberPrinterParser;)Ljava/time/format/DateTimeFormatterBuilder;
-Ljava/time/format/DateTimeFormatterBuilder;->convertStyle(Ljava/time/format/FormatStyle;)I
-Ljava/time/format/DateTimeFormatterBuilder;->FIELD_MAP:Ljava/util/Map;
-Ljava/time/format/DateTimeFormatterBuilder;->LENGTH_SORT:Ljava/util/Comparator;
-Ljava/time/format/DateTimeFormatterBuilder;->optional:Z
-Ljava/time/format/DateTimeFormatterBuilder;->padNextChar:C
-Ljava/time/format/DateTimeFormatterBuilder;->padNextWidth:I
-Ljava/time/format/DateTimeFormatterBuilder;->parent:Ljava/time/format/DateTimeFormatterBuilder;
-Ljava/time/format/DateTimeFormatterBuilder;->parseField(CILjava/time/temporal/TemporalField;)V
-Ljava/time/format/DateTimeFormatterBuilder;->parsePattern(Ljava/lang/String;)V
-Ljava/time/format/DateTimeFormatterBuilder;->printerParsers:Ljava/util/List;
-Ljava/time/format/DateTimeFormatterBuilder;->QUERY_REGION_ONLY:Ljava/time/temporal/TemporalQuery;
-Ljava/time/format/DateTimeFormatterBuilder;->toFormatter(Ljava/time/format/ResolverStyle;Ljava/time/chrono/Chronology;)Ljava/time/format/DateTimeFormatter;
-Ljava/time/format/DateTimeFormatterBuilder;->toFormatter(Ljava/util/Locale;Ljava/time/format/ResolverStyle;Ljava/time/chrono/Chronology;)Ljava/time/format/DateTimeFormatter;
-Ljava/time/format/DateTimeFormatterBuilder;->valueParserIndex:I
-Ljava/time/format/DateTimeParseContext;-><init>(Ljava/time/format/DateTimeFormatter;)V
-Ljava/time/format/DateTimeParseContext;->addChronoChangedListener(Ljava/util/function/Consumer;)V
-Ljava/time/format/DateTimeParseContext;->caseSensitive:Z
-Ljava/time/format/DateTimeParseContext;->charEquals(CC)Z
-Ljava/time/format/DateTimeParseContext;->charEqualsIgnoreCase(CC)Z
-Ljava/time/format/DateTimeParseContext;->chronoListeners:Ljava/util/ArrayList;
-Ljava/time/format/DateTimeParseContext;->copy()Ljava/time/format/DateTimeParseContext;
-Ljava/time/format/DateTimeParseContext;->currentParsed()Ljava/time/format/Parsed;
-Ljava/time/format/DateTimeParseContext;->endOptional(Z)V
-Ljava/time/format/DateTimeParseContext;->formatter:Ljava/time/format/DateTimeFormatter;
-Ljava/time/format/DateTimeParseContext;->getDecimalStyle()Ljava/time/format/DecimalStyle;
-Ljava/time/format/DateTimeParseContext;->getEffectiveChronology()Ljava/time/chrono/Chronology;
-Ljava/time/format/DateTimeParseContext;->getLocale()Ljava/util/Locale;
-Ljava/time/format/DateTimeParseContext;->getParsed(Ljava/time/temporal/TemporalField;)Ljava/lang/Long;
-Ljava/time/format/DateTimeParseContext;->isCaseSensitive()Z
-Ljava/time/format/DateTimeParseContext;->isStrict()Z
-Ljava/time/format/DateTimeParseContext;->parsed:Ljava/util/ArrayList;
-Ljava/time/format/DateTimeParseContext;->setCaseSensitive(Z)V
-Ljava/time/format/DateTimeParseContext;->setParsed(Ljava/time/chrono/Chronology;)V
-Ljava/time/format/DateTimeParseContext;->setParsed(Ljava/time/ZoneId;)V
-Ljava/time/format/DateTimeParseContext;->setParsedField(Ljava/time/temporal/TemporalField;JII)I
-Ljava/time/format/DateTimeParseContext;->setParsedLeapSecond()V
-Ljava/time/format/DateTimeParseContext;->setStrict(Z)V
-Ljava/time/format/DateTimeParseContext;->startOptional()V
-Ljava/time/format/DateTimeParseContext;->strict:Z
-Ljava/time/format/DateTimeParseContext;->subSequenceEquals(Ljava/lang/CharSequence;ILjava/lang/CharSequence;II)Z
-Ljava/time/format/DateTimeParseContext;->toResolved(Ljava/time/format/ResolverStyle;Ljava/util/Set;)Ljava/time/temporal/TemporalAccessor;
-Ljava/time/format/DateTimeParseContext;->toUnresolved()Ljava/time/format/Parsed;
-Ljava/time/format/DateTimeParseException;->errorIndex:I
-Ljava/time/format/DateTimeParseException;->parsedString:Ljava/lang/String;
-Ljava/time/format/DateTimePrintContext;-><init>(Ljava/time/temporal/TemporalAccessor;Ljava/time/format/DateTimeFormatter;)V
-Ljava/time/format/DateTimePrintContext;->adjust(Ljava/time/temporal/TemporalAccessor;Ljava/time/format/DateTimeFormatter;)Ljava/time/temporal/TemporalAccessor;
-Ljava/time/format/DateTimePrintContext;->endOptional()V
-Ljava/time/format/DateTimePrintContext;->formatter:Ljava/time/format/DateTimeFormatter;
-Ljava/time/format/DateTimePrintContext;->getDecimalStyle()Ljava/time/format/DecimalStyle;
-Ljava/time/format/DateTimePrintContext;->getLocale()Ljava/util/Locale;
-Ljava/time/format/DateTimePrintContext;->getTemporal()Ljava/time/temporal/TemporalAccessor;
-Ljava/time/format/DateTimePrintContext;->getValue(Ljava/time/temporal/TemporalField;)Ljava/lang/Long;
-Ljava/time/format/DateTimePrintContext;->getValue(Ljava/time/temporal/TemporalQuery;)Ljava/lang/Object;
-Ljava/time/format/DateTimePrintContext;->optional:I
-Ljava/time/format/DateTimePrintContext;->startOptional()V
-Ljava/time/format/DateTimePrintContext;->temporal:Ljava/time/temporal/TemporalAccessor;
-Ljava/time/format/DateTimeTextProvider$LocaleStore;-><init>(Ljava/util/Map;)V
-Ljava/time/format/DateTimeTextProvider$LocaleStore;->getText(JLjava/time/format/TextStyle;)Ljava/lang/String;
-Ljava/time/format/DateTimeTextProvider$LocaleStore;->getTextIterator(Ljava/time/format/TextStyle;)Ljava/util/Iterator;
-Ljava/time/format/DateTimeTextProvider$LocaleStore;->parsable:Ljava/util/Map;
-Ljava/time/format/DateTimeTextProvider$LocaleStore;->valueTextMap:Ljava/util/Map;
-Ljava/time/format/DateTimeTextProvider;-><init>()V
-Ljava/time/format/DateTimeTextProvider;->CACHE:Ljava/util/concurrent/ConcurrentMap;
-Ljava/time/format/DateTimeTextProvider;->COMPARATOR:Ljava/util/Comparator;
-Ljava/time/format/DateTimeTextProvider;->createEntry(Ljava/lang/Object;Ljava/lang/Object;)Ljava/util/Map$Entry;
-Ljava/time/format/DateTimeTextProvider;->createStore(Ljava/time/temporal/TemporalField;Ljava/util/Locale;)Ljava/lang/Object;
-Ljava/time/format/DateTimeTextProvider;->extractQuarters(Landroid/icu/impl/ICUResourceBundle;Ljava/lang/String;)Ljava/util/Map;
-Ljava/time/format/DateTimeTextProvider;->findStore(Ljava/time/temporal/TemporalField;Ljava/util/Locale;)Ljava/lang/Object;
-Ljava/time/format/DateTimeTextProvider;->getInstance()Ljava/time/format/DateTimeTextProvider;
-Ljava/time/format/DateTimeTextProvider;->getText(Ljava/time/chrono/Chronology;Ljava/time/temporal/TemporalField;JLjava/time/format/TextStyle;Ljava/util/Locale;)Ljava/lang/String;
-Ljava/time/format/DateTimeTextProvider;->getText(Ljava/time/temporal/TemporalField;JLjava/time/format/TextStyle;Ljava/util/Locale;)Ljava/lang/String;
-Ljava/time/format/DateTimeTextProvider;->getTextIterator(Ljava/time/chrono/Chronology;Ljava/time/temporal/TemporalField;Ljava/time/format/TextStyle;Ljava/util/Locale;)Ljava/util/Iterator;
-Ljava/time/format/DateTimeTextProvider;->getTextIterator(Ljava/time/temporal/TemporalField;Ljava/time/format/TextStyle;Ljava/util/Locale;)Ljava/util/Iterator;
-Ljava/time/format/DateTimeTextProvider;->toWeekDay(I)I
-Ljava/time/format/DecimalStyle;-><init>(CCCC)V
-Ljava/time/format/DecimalStyle;->CACHE:Ljava/util/concurrent/ConcurrentMap;
-Ljava/time/format/DecimalStyle;->convertNumberToI18N(Ljava/lang/String;)Ljava/lang/String;
-Ljava/time/format/DecimalStyle;->convertToDigit(C)I
-Ljava/time/format/DecimalStyle;->create(Ljava/util/Locale;)Ljava/time/format/DecimalStyle;
-Ljava/time/format/DecimalStyle;->decimalSeparator:C
-Ljava/time/format/DecimalStyle;->negativeSign:C
-Ljava/time/format/DecimalStyle;->positiveSign:C
-Ljava/time/format/DecimalStyle;->zeroDigit:C
-Ljava/time/format/Parsed;-><init>()V
-Ljava/time/format/Parsed;->chrono:Ljava/time/chrono/Chronology;
-Ljava/time/format/Parsed;->copy()Ljava/time/format/Parsed;
-Ljava/time/format/Parsed;->crossCheck()V
-Ljava/time/format/Parsed;->crossCheck(Ljava/time/temporal/TemporalAccessor;)V
-Ljava/time/format/Parsed;->date:Ljava/time/chrono/ChronoLocalDate;
-Ljava/time/format/Parsed;->excessDays:Ljava/time/Period;
-Ljava/time/format/Parsed;->fieldValues:Ljava/util/Map;
-Ljava/time/format/Parsed;->leapSecond:Z
-Ljava/time/format/Parsed;->resolve(Ljava/time/format/ResolverStyle;Ljava/util/Set;)Ljava/time/temporal/TemporalAccessor;
-Ljava/time/format/Parsed;->resolveDateFields()V
-Ljava/time/format/Parsed;->resolveFields()V
-Ljava/time/format/Parsed;->resolveFractional()V
-Ljava/time/format/Parsed;->resolveInstant()V
-Ljava/time/format/Parsed;->resolveInstantFields()V
-Ljava/time/format/Parsed;->resolveInstantFields0(Ljava/time/ZoneId;)V
-Ljava/time/format/Parsed;->resolvePeriod()V
-Ljava/time/format/Parsed;->resolverStyle:Ljava/time/format/ResolverStyle;
-Ljava/time/format/Parsed;->resolveTime(JJJJ)V
-Ljava/time/format/Parsed;->resolveTimeFields()V
-Ljava/time/format/Parsed;->resolveTimeLenient()V
-Ljava/time/format/Parsed;->time:Ljava/time/LocalTime;
-Ljava/time/format/Parsed;->updateCheckConflict(Ljava/time/chrono/ChronoLocalDate;)V
-Ljava/time/format/Parsed;->updateCheckConflict(Ljava/time/LocalTime;Ljava/time/Period;)V
-Ljava/time/format/Parsed;->updateCheckConflict(Ljava/time/temporal/TemporalField;Ljava/time/temporal/TemporalField;Ljava/lang/Long;)V
-Ljava/time/format/Parsed;->zone:Ljava/time/ZoneId;
-Ljava/time/format/SignStyle;->parse(ZZZ)Z
-Ljava/time/format/TextStyle;->calendarStyle:I
-Ljava/time/format/TextStyle;->toCalendarStyle()I
-Ljava/time/format/TextStyle;->zoneNameStyleIndex()I
-Ljava/time/format/TextStyle;->zoneNameStyleIndex:I
-Ljava/time/Instant;-><init>(JI)V
-Ljava/time/Instant;->create(JI)Ljava/time/Instant;
-Ljava/time/Instant;->MAX_SECOND:J
-Ljava/time/Instant;->MIN_SECOND:J
-Ljava/time/Instant;->nanos:I
-Ljava/time/Instant;->nanosUntil(Ljava/time/Instant;)J
-Ljava/time/Instant;->plus(JJ)Ljava/time/Instant;
-Ljava/time/Instant;->readExternal(Ljava/io/DataInput;)Ljava/time/Instant;
-Ljava/time/Instant;->seconds:J
-Ljava/time/Instant;->secondsUntil(Ljava/time/Instant;)J
-Ljava/time/Instant;->writeExternal(Ljava/io/DataOutput;)V
-Ljava/time/LocalDate;-><init>(III)V
-Ljava/time/LocalDate;->compareTo0(Ljava/time/LocalDate;)I
-Ljava/time/LocalDate;->create(III)Ljava/time/LocalDate;
-Ljava/time/LocalDate;->day:S
-Ljava/time/LocalDate;->daysUntil(Ljava/time/LocalDate;)J
-Ljava/time/LocalDate;->DAYS_0000_TO_1970:J
-Ljava/time/LocalDate;->DAYS_PER_CYCLE:I
-Ljava/time/LocalDate;->get0(Ljava/time/temporal/TemporalField;)I
-Ljava/time/LocalDate;->getProlepticMonth()J
-Ljava/time/LocalDate;->month:S
-Ljava/time/LocalDate;->monthsUntil(Ljava/time/LocalDate;)J
-Ljava/time/LocalDate;->readExternal(Ljava/io/DataInput;)Ljava/time/LocalDate;
-Ljava/time/LocalDate;->resolvePreviousValid(III)Ljava/time/LocalDate;
-Ljava/time/LocalDate;->writeExternal(Ljava/io/DataOutput;)V
-Ljava/time/LocalDate;->year:I
-Ljava/time/LocalDateTime;-><init>(Ljava/time/LocalDate;Ljava/time/LocalTime;)V
-Ljava/time/LocalDateTime;->compareTo0(Ljava/time/LocalDateTime;)I
-Ljava/time/LocalDateTime;->date:Ljava/time/LocalDate;
-Ljava/time/LocalDateTime;->plusWithOverflow(Ljava/time/LocalDate;JJJJI)Ljava/time/LocalDateTime;
-Ljava/time/LocalDateTime;->readExternal(Ljava/io/DataInput;)Ljava/time/LocalDateTime;
-Ljava/time/LocalDateTime;->time:Ljava/time/LocalTime;
-Ljava/time/LocalDateTime;->with(Ljava/time/LocalDate;Ljava/time/LocalTime;)Ljava/time/LocalDateTime;
-Ljava/time/LocalDateTime;->writeExternal(Ljava/io/DataOutput;)V
-Ljava/time/LocalTime;-><init>(IIII)V
-Ljava/time/LocalTime;->create(IIII)Ljava/time/LocalTime;
-Ljava/time/LocalTime;->get0(Ljava/time/temporal/TemporalField;)I
-Ljava/time/LocalTime;->hour:B
-Ljava/time/LocalTime;->HOURS:[Ljava/time/LocalTime;
-Ljava/time/LocalTime;->HOURS_PER_DAY:I
-Ljava/time/LocalTime;->MICROS_PER_DAY:J
-Ljava/time/LocalTime;->MILLIS_PER_DAY:J
-Ljava/time/LocalTime;->minute:B
-Ljava/time/LocalTime;->MINUTES_PER_DAY:I
-Ljava/time/LocalTime;->MINUTES_PER_HOUR:I
-Ljava/time/LocalTime;->nano:I
-Ljava/time/LocalTime;->NANOS_PER_DAY:J
-Ljava/time/LocalTime;->NANOS_PER_HOUR:J
-Ljava/time/LocalTime;->NANOS_PER_MINUTE:J
-Ljava/time/LocalTime;->NANOS_PER_SECOND:J
-Ljava/time/LocalTime;->readExternal(Ljava/io/DataInput;)Ljava/time/LocalTime;
-Ljava/time/LocalTime;->second:B
-Ljava/time/LocalTime;->SECONDS_PER_DAY:I
-Ljava/time/LocalTime;->SECONDS_PER_HOUR:I
-Ljava/time/LocalTime;->SECONDS_PER_MINUTE:I
-Ljava/time/LocalTime;->writeExternal(Ljava/io/DataOutput;)V
-Ljava/time/Month;->ENUMS:[Ljava/time/Month;
-Ljava/time/MonthDay;-><init>(II)V
-Ljava/time/MonthDay;->day:I
-Ljava/time/MonthDay;->month:I
-Ljava/time/MonthDay;->PARSER:Ljava/time/format/DateTimeFormatter;
-Ljava/time/MonthDay;->readExternal(Ljava/io/DataInput;)Ljava/time/MonthDay;
-Ljava/time/MonthDay;->writeExternal(Ljava/io/DataOutput;)V
-Ljava/time/OffsetDateTime;->compareInstant(Ljava/time/OffsetDateTime;Ljava/time/OffsetDateTime;)I
-Ljava/time/OffsetDateTime;->dateTime:Ljava/time/LocalDateTime;
-Ljava/time/OffsetDateTime;->offset:Ljava/time/ZoneOffset;
-Ljava/time/OffsetDateTime;->readExternal(Ljava/io/ObjectInput;)Ljava/time/OffsetDateTime;
-Ljava/time/OffsetDateTime;->with(Ljava/time/LocalDateTime;Ljava/time/ZoneOffset;)Ljava/time/OffsetDateTime;
-Ljava/time/OffsetDateTime;->writeExternal(Ljava/io/ObjectOutput;)V
-Ljava/time/OffsetTime;-><init>(Ljava/time/LocalTime;Ljava/time/ZoneOffset;)V
-Ljava/time/OffsetTime;->offset:Ljava/time/ZoneOffset;
-Ljava/time/OffsetTime;->readExternal(Ljava/io/ObjectInput;)Ljava/time/OffsetTime;
-Ljava/time/OffsetTime;->time:Ljava/time/LocalTime;
-Ljava/time/OffsetTime;->toEpochNano()J
-Ljava/time/OffsetTime;->with(Ljava/time/LocalTime;Ljava/time/ZoneOffset;)Ljava/time/OffsetTime;
-Ljava/time/OffsetTime;->writeExternal(Ljava/io/ObjectOutput;)V
-Ljava/time/Period;-><init>(III)V
-Ljava/time/Period;->create(III)Ljava/time/Period;
-Ljava/time/Period;->days:I
-Ljava/time/Period;->months:I
-Ljava/time/Period;->parseNumber(Ljava/lang/CharSequence;Ljava/lang/String;I)I
-Ljava/time/Period;->PATTERN:Ljava/util/regex/Pattern;
-Ljava/time/Period;->readExternal(Ljava/io/DataInput;)Ljava/time/Period;
-Ljava/time/Period;->SUPPORTED_UNITS:Ljava/util/List;
-Ljava/time/Period;->validateChrono(Ljava/time/temporal/TemporalAccessor;)V
-Ljava/time/Period;->writeExternal(Ljava/io/DataOutput;)V
-Ljava/time/Period;->years:I
-Ljava/time/temporal/ChronoField;->baseUnit:Ljava/time/temporal/TemporalUnit;
-Ljava/time/temporal/ChronoField;->displayNameKey:Ljava/lang/String;
-Ljava/time/temporal/ChronoField;->getIcuFieldNumber(Ljava/time/temporal/ChronoField;)I
-Ljava/time/temporal/ChronoField;->name:Ljava/lang/String;
-Ljava/time/temporal/ChronoField;->range:Ljava/time/temporal/ValueRange;
-Ljava/time/temporal/ChronoField;->rangeUnit:Ljava/time/temporal/TemporalUnit;
-Ljava/time/temporal/ChronoUnit;->duration:Ljava/time/Duration;
-Ljava/time/temporal/ChronoUnit;->name:Ljava/lang/String;
-Ljava/time/temporal/IsoFields$Field;->DAY_OF_QUARTER:Ljava/time/temporal/IsoFields$Field;
-Ljava/time/temporal/IsoFields$Field;->ensureIso(Ljava/time/temporal/TemporalAccessor;)V
-Ljava/time/temporal/IsoFields$Field;->getWeek(Ljava/time/LocalDate;)I
-Ljava/time/temporal/IsoFields$Field;->getWeekBasedYear(Ljava/time/LocalDate;)I
-Ljava/time/temporal/IsoFields$Field;->getWeekRange(I)I
-Ljava/time/temporal/IsoFields$Field;->getWeekRange(Ljava/time/LocalDate;)Ljava/time/temporal/ValueRange;
-Ljava/time/temporal/IsoFields$Field;->isIso(Ljava/time/temporal/TemporalAccessor;)Z
-Ljava/time/temporal/IsoFields$Field;->QUARTER_DAYS:[I
-Ljava/time/temporal/IsoFields$Field;->QUARTER_OF_YEAR:Ljava/time/temporal/IsoFields$Field;
-Ljava/time/temporal/IsoFields$Field;->valueOf(Ljava/lang/String;)Ljava/time/temporal/IsoFields$Field;
-Ljava/time/temporal/IsoFields$Field;->values()[Ljava/time/temporal/IsoFields$Field;
-Ljava/time/temporal/IsoFields$Field;->WEEK_BASED_YEAR:Ljava/time/temporal/IsoFields$Field;
-Ljava/time/temporal/IsoFields$Field;->WEEK_OF_WEEK_BASED_YEAR:Ljava/time/temporal/IsoFields$Field;
-Ljava/time/temporal/IsoFields$Unit;->duration:Ljava/time/Duration;
-Ljava/time/temporal/IsoFields$Unit;->name:Ljava/lang/String;
-Ljava/time/temporal/IsoFields$Unit;->QUARTER_YEARS:Ljava/time/temporal/IsoFields$Unit;
-Ljava/time/temporal/IsoFields$Unit;->valueOf(Ljava/lang/String;)Ljava/time/temporal/IsoFields$Unit;
-Ljava/time/temporal/IsoFields$Unit;->values()[Ljava/time/temporal/IsoFields$Unit;
-Ljava/time/temporal/IsoFields$Unit;->WEEK_BASED_YEARS:Ljava/time/temporal/IsoFields$Unit;
-Ljava/time/temporal/IsoFields;-><init>()V
-Ljava/time/temporal/JulianFields$Field;->baseUnit:Ljava/time/temporal/TemporalUnit;
-Ljava/time/temporal/JulianFields$Field;->JULIAN_DAY:Ljava/time/temporal/JulianFields$Field;
-Ljava/time/temporal/JulianFields$Field;->MODIFIED_JULIAN_DAY:Ljava/time/temporal/JulianFields$Field;
-Ljava/time/temporal/JulianFields$Field;->name:Ljava/lang/String;
-Ljava/time/temporal/JulianFields$Field;->offset:J
-Ljava/time/temporal/JulianFields$Field;->range:Ljava/time/temporal/ValueRange;
-Ljava/time/temporal/JulianFields$Field;->rangeUnit:Ljava/time/temporal/TemporalUnit;
-Ljava/time/temporal/JulianFields$Field;->RATA_DIE:Ljava/time/temporal/JulianFields$Field;
-Ljava/time/temporal/JulianFields$Field;->valueOf(Ljava/lang/String;)Ljava/time/temporal/JulianFields$Field;
-Ljava/time/temporal/JulianFields$Field;->values()[Ljava/time/temporal/JulianFields$Field;
-Ljava/time/temporal/JulianFields;-><init>()V
-Ljava/time/temporal/JulianFields;->JULIAN_DAY_OFFSET:J
-Ljava/time/temporal/TemporalAdjusters;-><init>()V
-Ljava/time/temporal/TemporalQueries;-><init>()V
-Ljava/time/temporal/TemporalQueries;->CHRONO:Ljava/time/temporal/TemporalQuery;
-Ljava/time/temporal/TemporalQueries;->LOCAL_DATE:Ljava/time/temporal/TemporalQuery;
-Ljava/time/temporal/TemporalQueries;->LOCAL_TIME:Ljava/time/temporal/TemporalQuery;
-Ljava/time/temporal/TemporalQueries;->OFFSET:Ljava/time/temporal/TemporalQuery;
-Ljava/time/temporal/TemporalQueries;->PRECISION:Ljava/time/temporal/TemporalQuery;
-Ljava/time/temporal/TemporalQueries;->ZONE:Ljava/time/temporal/TemporalQuery;
-Ljava/time/temporal/TemporalQueries;->ZONE_ID:Ljava/time/temporal/TemporalQuery;
-Ljava/time/temporal/ValueRange;-><init>(JJJJ)V
-Ljava/time/temporal/ValueRange;->genInvalidFieldMessage(Ljava/time/temporal/TemporalField;J)Ljava/lang/String;
-Ljava/time/temporal/ValueRange;->maxLargest:J
-Ljava/time/temporal/ValueRange;->maxSmallest:J
-Ljava/time/temporal/ValueRange;->minLargest:J
-Ljava/time/temporal/ValueRange;->minSmallest:J
-Ljava/time/temporal/WeekFields$ComputedDayOfField;-><init>(Ljava/lang/String;Ljava/time/temporal/WeekFields;Ljava/time/temporal/TemporalUnit;Ljava/time/temporal/TemporalUnit;Ljava/time/temporal/ValueRange;)V
-Ljava/time/temporal/WeekFields$ComputedDayOfField;->baseUnit:Ljava/time/temporal/TemporalUnit;
-Ljava/time/temporal/WeekFields$ComputedDayOfField;->computeWeek(II)I
-Ljava/time/temporal/WeekFields$ComputedDayOfField;->DAY_OF_WEEK_RANGE:Ljava/time/temporal/ValueRange;
-Ljava/time/temporal/WeekFields$ComputedDayOfField;->localizedDayOfWeek(I)I
-Ljava/time/temporal/WeekFields$ComputedDayOfField;->localizedDayOfWeek(Ljava/time/temporal/TemporalAccessor;)I
-Ljava/time/temporal/WeekFields$ComputedDayOfField;->localizedWeekBasedYear(Ljava/time/temporal/TemporalAccessor;)I
-Ljava/time/temporal/WeekFields$ComputedDayOfField;->localizedWeekOfMonth(Ljava/time/temporal/TemporalAccessor;)J
-Ljava/time/temporal/WeekFields$ComputedDayOfField;->localizedWeekOfWeekBasedYear(Ljava/time/temporal/TemporalAccessor;)I
-Ljava/time/temporal/WeekFields$ComputedDayOfField;->localizedWeekOfYear(Ljava/time/temporal/TemporalAccessor;)J
-Ljava/time/temporal/WeekFields$ComputedDayOfField;->name:Ljava/lang/String;
-Ljava/time/temporal/WeekFields$ComputedDayOfField;->ofDayOfWeekField(Ljava/time/temporal/WeekFields;)Ljava/time/temporal/WeekFields$ComputedDayOfField;
-Ljava/time/temporal/WeekFields$ComputedDayOfField;->ofWeekBasedYear(Ljava/time/chrono/Chronology;III)Ljava/time/chrono/ChronoLocalDate;
-Ljava/time/temporal/WeekFields$ComputedDayOfField;->ofWeekBasedYearField(Ljava/time/temporal/WeekFields;)Ljava/time/temporal/WeekFields$ComputedDayOfField;
-Ljava/time/temporal/WeekFields$ComputedDayOfField;->ofWeekOfMonthField(Ljava/time/temporal/WeekFields;)Ljava/time/temporal/WeekFields$ComputedDayOfField;
-Ljava/time/temporal/WeekFields$ComputedDayOfField;->ofWeekOfWeekBasedYearField(Ljava/time/temporal/WeekFields;)Ljava/time/temporal/WeekFields$ComputedDayOfField;
-Ljava/time/temporal/WeekFields$ComputedDayOfField;->ofWeekOfYearField(Ljava/time/temporal/WeekFields;)Ljava/time/temporal/WeekFields$ComputedDayOfField;
-Ljava/time/temporal/WeekFields$ComputedDayOfField;->range:Ljava/time/temporal/ValueRange;
-Ljava/time/temporal/WeekFields$ComputedDayOfField;->rangeByWeek(Ljava/time/temporal/TemporalAccessor;Ljava/time/temporal/TemporalField;)Ljava/time/temporal/ValueRange;
-Ljava/time/temporal/WeekFields$ComputedDayOfField;->rangeUnit:Ljava/time/temporal/TemporalUnit;
-Ljava/time/temporal/WeekFields$ComputedDayOfField;->rangeWeekOfWeekBasedYear(Ljava/time/temporal/TemporalAccessor;)Ljava/time/temporal/ValueRange;
-Ljava/time/temporal/WeekFields$ComputedDayOfField;->resolveWBY(Ljava/util/Map;Ljava/time/chrono/Chronology;ILjava/time/format/ResolverStyle;)Ljava/time/chrono/ChronoLocalDate;
-Ljava/time/temporal/WeekFields$ComputedDayOfField;->resolveWoM(Ljava/util/Map;Ljava/time/chrono/Chronology;IJJILjava/time/format/ResolverStyle;)Ljava/time/chrono/ChronoLocalDate;
-Ljava/time/temporal/WeekFields$ComputedDayOfField;->resolveWoY(Ljava/util/Map;Ljava/time/chrono/Chronology;IJILjava/time/format/ResolverStyle;)Ljava/time/chrono/ChronoLocalDate;
-Ljava/time/temporal/WeekFields$ComputedDayOfField;->startOfWeekOffset(II)I
-Ljava/time/temporal/WeekFields$ComputedDayOfField;->weekDef:Ljava/time/temporal/WeekFields;
-Ljava/time/temporal/WeekFields$ComputedDayOfField;->WEEK_OF_MONTH_RANGE:Ljava/time/temporal/ValueRange;
-Ljava/time/temporal/WeekFields$ComputedDayOfField;->WEEK_OF_WEEK_BASED_YEAR_RANGE:Ljava/time/temporal/ValueRange;
-Ljava/time/temporal/WeekFields$ComputedDayOfField;->WEEK_OF_YEAR_RANGE:Ljava/time/temporal/ValueRange;
-Ljava/time/temporal/WeekFields;-><init>(Ljava/time/DayOfWeek;I)V
-Ljava/time/temporal/WeekFields;->CACHE:Ljava/util/concurrent/ConcurrentMap;
-Ljava/time/temporal/WeekFields;->dayOfWeek:Ljava/time/temporal/TemporalField;
-Ljava/time/temporal/WeekFields;->firstDayOfWeek:Ljava/time/DayOfWeek;
-Ljava/time/temporal/WeekFields;->minimalDays:I
-Ljava/time/temporal/WeekFields;->weekBasedYear:Ljava/time/temporal/TemporalField;
-Ljava/time/temporal/WeekFields;->weekOfMonth:Ljava/time/temporal/TemporalField;
-Ljava/time/temporal/WeekFields;->weekOfWeekBasedYear:Ljava/time/temporal/TemporalField;
-Ljava/time/temporal/WeekFields;->weekOfYear:Ljava/time/temporal/TemporalField;
-Ljava/time/Year;-><init>(I)V
-Ljava/time/Year;->PARSER:Ljava/time/format/DateTimeFormatter;
-Ljava/time/Year;->readExternal(Ljava/io/DataInput;)Ljava/time/Year;
-Ljava/time/Year;->writeExternal(Ljava/io/DataOutput;)V
-Ljava/time/Year;->year:I
-Ljava/time/YearMonth;-><init>(II)V
-Ljava/time/YearMonth;->getProlepticMonth()J
-Ljava/time/YearMonth;->month:I
-Ljava/time/YearMonth;->PARSER:Ljava/time/format/DateTimeFormatter;
-Ljava/time/YearMonth;->readExternal(Ljava/io/DataInput;)Ljava/time/YearMonth;
-Ljava/time/YearMonth;->with(II)Ljava/time/YearMonth;
-Ljava/time/YearMonth;->writeExternal(Ljava/io/DataOutput;)V
-Ljava/time/YearMonth;->year:I
-Ljava/time/zone/ZoneOffsetTransition;-><init>(JLjava/time/ZoneOffset;Ljava/time/ZoneOffset;)V
-Ljava/time/zone/ZoneOffsetTransition;-><init>(Ljava/time/LocalDateTime;Ljava/time/ZoneOffset;Ljava/time/ZoneOffset;)V
-Ljava/time/zone/ZoneOffsetTransition;->getDurationSeconds()I
-Ljava/time/zone/ZoneOffsetTransition;->getValidOffsets()Ljava/util/List;
-Ljava/time/zone/ZoneOffsetTransition;->offsetAfter:Ljava/time/ZoneOffset;
-Ljava/time/zone/ZoneOffsetTransition;->offsetBefore:Ljava/time/ZoneOffset;
-Ljava/time/zone/ZoneOffsetTransition;->readExternal(Ljava/io/DataInput;)Ljava/time/zone/ZoneOffsetTransition;
-Ljava/time/zone/ZoneOffsetTransition;->transition:Ljava/time/LocalDateTime;
-Ljava/time/zone/ZoneOffsetTransition;->writeExternal(Ljava/io/DataOutput;)V
-Ljava/time/zone/ZoneOffsetTransitionRule;-><init>(Ljava/time/Month;ILjava/time/DayOfWeek;Ljava/time/LocalTime;ZLjava/time/zone/ZoneOffsetTransitionRule$TimeDefinition;Ljava/time/ZoneOffset;Ljava/time/ZoneOffset;Ljava/time/ZoneOffset;)V
-Ljava/time/zone/ZoneOffsetTransitionRule;->dom:B
-Ljava/time/zone/ZoneOffsetTransitionRule;->dow:Ljava/time/DayOfWeek;
-Ljava/time/zone/ZoneOffsetTransitionRule;->month:Ljava/time/Month;
-Ljava/time/zone/ZoneOffsetTransitionRule;->offsetAfter:Ljava/time/ZoneOffset;
-Ljava/time/zone/ZoneOffsetTransitionRule;->offsetBefore:Ljava/time/ZoneOffset;
-Ljava/time/zone/ZoneOffsetTransitionRule;->readExternal(Ljava/io/DataInput;)Ljava/time/zone/ZoneOffsetTransitionRule;
-Ljava/time/zone/ZoneOffsetTransitionRule;->standardOffset:Ljava/time/ZoneOffset;
-Ljava/time/zone/ZoneOffsetTransitionRule;->time:Ljava/time/LocalTime;
-Ljava/time/zone/ZoneOffsetTransitionRule;->timeDefinition:Ljava/time/zone/ZoneOffsetTransitionRule$TimeDefinition;
-Ljava/time/zone/ZoneOffsetTransitionRule;->timeEndOfDay:Z
-Ljava/time/zone/ZoneOffsetTransitionRule;->writeExternal(Ljava/io/DataOutput;)V
-Ljava/time/zone/ZoneRules;-><init>(Ljava/time/ZoneOffset;)V
-Ljava/time/zone/ZoneRules;-><init>(Ljava/time/ZoneOffset;Ljava/time/ZoneOffset;Ljava/util/List;Ljava/util/List;Ljava/util/List;)V
-Ljava/time/zone/ZoneRules;-><init>([J[Ljava/time/ZoneOffset;[J[Ljava/time/ZoneOffset;[Ljava/time/zone/ZoneOffsetTransitionRule;)V
-Ljava/time/zone/ZoneRules;->EMPTY_LASTRULES:[Ljava/time/zone/ZoneOffsetTransitionRule;
-Ljava/time/zone/ZoneRules;->EMPTY_LDT_ARRAY:[Ljava/time/LocalDateTime;
-Ljava/time/zone/ZoneRules;->EMPTY_LONG_ARRAY:[J
-Ljava/time/zone/ZoneRules;->findOffsetInfo(Ljava/time/LocalDateTime;Ljava/time/zone/ZoneOffsetTransition;)Ljava/lang/Object;
-Ljava/time/zone/ZoneRules;->findTransitionArray(I)[Ljava/time/zone/ZoneOffsetTransition;
-Ljava/time/zone/ZoneRules;->findYear(JLjava/time/ZoneOffset;)I
-Ljava/time/zone/ZoneRules;->getOffsetInfo(Ljava/time/LocalDateTime;)Ljava/lang/Object;
-Ljava/time/zone/ZoneRules;->lastRules:[Ljava/time/zone/ZoneOffsetTransitionRule;
-Ljava/time/zone/ZoneRules;->lastRulesCache:Ljava/util/concurrent/ConcurrentMap;
-Ljava/time/zone/ZoneRules;->LAST_CACHED_YEAR:I
-Ljava/time/zone/ZoneRules;->readExternal(Ljava/io/DataInput;)Ljava/time/zone/ZoneRules;
-Ljava/time/zone/ZoneRules;->savingsInstantTransitions:[J
-Ljava/time/zone/ZoneRules;->savingsLocalTransitions:[Ljava/time/LocalDateTime;
-Ljava/time/zone/ZoneRules;->standardOffsets:[Ljava/time/ZoneOffset;
-Ljava/time/zone/ZoneRules;->standardTransitions:[J
-Ljava/time/zone/ZoneRules;->wallOffsets:[Ljava/time/ZoneOffset;
-Ljava/time/zone/ZoneRules;->writeExternal(Ljava/io/DataOutput;)V
-Ljava/time/ZonedDateTime;-><init>(Ljava/time/LocalDateTime;Ljava/time/ZoneOffset;Ljava/time/ZoneId;)V
-Ljava/time/ZonedDateTime;->create(JILjava/time/ZoneId;)Ljava/time/ZonedDateTime;
-Ljava/time/ZonedDateTime;->dateTime:Ljava/time/LocalDateTime;
-Ljava/time/ZonedDateTime;->offset:Ljava/time/ZoneOffset;
-Ljava/time/ZonedDateTime;->ofLenient(Ljava/time/LocalDateTime;Ljava/time/ZoneOffset;Ljava/time/ZoneId;)Ljava/time/ZonedDateTime;
-Ljava/time/ZonedDateTime;->readExternal(Ljava/io/ObjectInput;)Ljava/time/ZonedDateTime;
-Ljava/time/ZonedDateTime;->resolveInstant(Ljava/time/LocalDateTime;)Ljava/time/ZonedDateTime;
-Ljava/time/ZonedDateTime;->resolveLocal(Ljava/time/LocalDateTime;)Ljava/time/ZonedDateTime;
-Ljava/time/ZonedDateTime;->resolveOffset(Ljava/time/ZoneOffset;)Ljava/time/ZonedDateTime;
-Ljava/time/ZonedDateTime;->writeExternal(Ljava/io/DataOutput;)V
-Ljava/time/ZonedDateTime;->zone:Ljava/time/ZoneId;
-Ljava/time/ZoneId;-><init>()V
-Ljava/time/ZoneId;->ofWithPrefix(Ljava/lang/String;IZ)Ljava/time/ZoneId;
-Ljava/time/ZoneId;->toTemporal()Ljava/time/temporal/TemporalAccessor;
-Ljava/time/ZoneId;->write(Ljava/io/DataOutput;)V
-Ljava/time/ZoneOffset;-><init>(I)V
-Ljava/time/ZoneOffset;->buildId(I)Ljava/lang/String;
-Ljava/time/ZoneOffset;->id:Ljava/lang/String;
-Ljava/time/ZoneOffset;->ID_CACHE:Ljava/util/concurrent/ConcurrentMap;
-Ljava/time/ZoneOffset;->MAX_SECONDS:I
-Ljava/time/ZoneOffset;->parseNumber(Ljava/lang/CharSequence;IZ)I
-Ljava/time/ZoneOffset;->readExternal(Ljava/io/DataInput;)Ljava/time/ZoneOffset;
-Ljava/time/ZoneOffset;->SECONDS_CACHE:Ljava/util/concurrent/ConcurrentMap;
-Ljava/time/ZoneOffset;->totalSeconds(III)I
-Ljava/time/ZoneOffset;->totalSeconds:I
-Ljava/time/ZoneOffset;->validate(III)V
-Ljava/time/ZoneOffset;->write(Ljava/io/DataOutput;)V
-Ljava/time/ZoneOffset;->writeExternal(Ljava/io/DataOutput;)V
-Ljava/util/AbstractCollection;->finishToArray([Ljava/lang/Object;Ljava/util/Iterator;)[Ljava/lang/Object;
-Ljava/util/AbstractCollection;->hugeCapacity(I)I
-Ljava/util/AbstractCollection;->MAX_ARRAY_SIZE:I
-Ljava/util/AbstractList$Itr;->checkForComodification()V
-Ljava/util/AbstractList$Itr;->cursor:I
-Ljava/util/AbstractList$Itr;->expectedModCount:I
-Ljava/util/AbstractList$Itr;->lastRet:I
-Ljava/util/AbstractList;->outOfBoundsMsg(I)Ljava/lang/String;
-Ljava/util/AbstractList;->rangeCheckForAdd(I)V
-Ljava/util/AbstractMap$SimpleEntry;->key:Ljava/lang/Object;
-Ljava/util/AbstractMap$SimpleEntry;->value:Ljava/lang/Object;
-Ljava/util/AbstractMap$SimpleImmutableEntry;->key:Ljava/lang/Object;
-Ljava/util/AbstractMap$SimpleImmutableEntry;->value:Ljava/lang/Object;
-Ljava/util/AbstractMap;->eq(Ljava/lang/Object;Ljava/lang/Object;)Z
-Ljava/util/AbstractMap;->keySet:Ljava/util/Set;
-Ljava/util/AbstractMap;->values:Ljava/util/Collection;
-Ljava/util/ArrayDeque$DeqIterator;->cursor:I
-Ljava/util/ArrayDeque$DeqIterator;->fence:I
-Ljava/util/ArrayDeque$DeqIterator;->lastRet:I
-Ljava/util/ArrayDeque$DeqSpliterator;-><init>(Ljava/util/ArrayDeque;II)V
-Ljava/util/ArrayDeque$DeqSpliterator;->deq:Ljava/util/ArrayDeque;
-Ljava/util/ArrayDeque$DeqSpliterator;->fence:I
-Ljava/util/ArrayDeque$DeqSpliterator;->forEachRemaining(Ljava/util/function/Consumer;)V
-Ljava/util/ArrayDeque$DeqSpliterator;->getFence()I
-Ljava/util/ArrayDeque$DeqSpliterator;->index:I
-Ljava/util/ArrayDeque$DeqSpliterator;->tryAdvance(Ljava/util/function/Consumer;)Z
-Ljava/util/ArrayDeque$DescendingIterator;->cursor:I
-Ljava/util/ArrayDeque$DescendingIterator;->fence:I
-Ljava/util/ArrayDeque$DescendingIterator;->lastRet:I
-Ljava/util/ArrayDeque;->allocateElements(I)V
-Ljava/util/ArrayDeque;->checkInvariants()V
-Ljava/util/ArrayDeque;->delete(I)Z
-Ljava/util/ArrayDeque;->doubleCapacity()V
-Ljava/util/ArrayDeque;->MIN_INITIAL_CAPACITY:I
-Ljava/util/ArrayList$ArrayListSpliterator;-><init>(Ljava/util/ArrayList;III)V
-Ljava/util/ArrayList$ArrayListSpliterator;->expectedModCount:I
-Ljava/util/ArrayList$ArrayListSpliterator;->fence:I
-Ljava/util/ArrayList$ArrayListSpliterator;->forEachRemaining(Ljava/util/function/Consumer;)V
-Ljava/util/ArrayList$ArrayListSpliterator;->getFence()I
-Ljava/util/ArrayList$ArrayListSpliterator;->index:I
-Ljava/util/ArrayList$ArrayListSpliterator;->list:Ljava/util/ArrayList;
-Ljava/util/ArrayList$ArrayListSpliterator;->tryAdvance(Ljava/util/function/Consumer;)Z
-Ljava/util/ArrayList$Itr;->cursor:I
-Ljava/util/ArrayList$Itr;->expectedModCount:I
-Ljava/util/ArrayList$Itr;->lastRet:I
-Ljava/util/ArrayList$Itr;->limit:I
-Ljava/util/ArrayList$SubList;->outOfBoundsMsg(I)Ljava/lang/String;
-Ljava/util/ArrayList;->batchRemove(Ljava/util/Collection;Z)Z
-Ljava/util/ArrayList;->DEFAULTCAPACITY_EMPTY_ELEMENTDATA:[Ljava/lang/Object;
-Ljava/util/ArrayList;->DEFAULT_CAPACITY:I
-Ljava/util/ArrayList;->EMPTY_ELEMENTDATA:[Ljava/lang/Object;
-Ljava/util/ArrayList;->ensureCapacityInternal(I)V
-Ljava/util/ArrayList;->ensureExplicitCapacity(I)V
-Ljava/util/ArrayList;->fastRemove(I)V
-Ljava/util/ArrayList;->grow(I)V
-Ljava/util/ArrayList;->hugeCapacity(I)I
-Ljava/util/ArrayList;->MAX_ARRAY_SIZE:I
-Ljava/util/ArrayList;->outOfBoundsMsg(I)Ljava/lang/String;
-Ljava/util/ArrayList;->subListRangeCheck(III)V
-Ljava/util/Arrays$ArrayList;-><init>([Ljava/lang/Object;)V
-Ljava/util/Arrays$ArrayList;->forEach(Ljava/util/function/Consumer;)V
-Ljava/util/Arrays$NaturalOrder;-><init>()V
-Ljava/util/Arrays$NaturalOrder;->compare(Ljava/lang/Object;Ljava/lang/Object;)I
-Ljava/util/Arrays$NaturalOrder;->INSTANCE:Ljava/util/Arrays$NaturalOrder;
-Ljava/util/Arrays;-><init>()V
-Ljava/util/Arrays;->binarySearch0([BIIB)I
-Ljava/util/Arrays;->binarySearch0([CIIC)I
-Ljava/util/Arrays;->binarySearch0([DIID)I
-Ljava/util/Arrays;->binarySearch0([FIIF)I
-Ljava/util/Arrays;->binarySearch0([IIII)I
-Ljava/util/Arrays;->binarySearch0([JIIJ)I
-Ljava/util/Arrays;->binarySearch0([Ljava/lang/Object;IILjava/lang/Object;)I
-Ljava/util/Arrays;->binarySearch0([Ljava/lang/Object;IILjava/lang/Object;Ljava/util/Comparator;)I
-Ljava/util/Arrays;->binarySearch0([SIIS)I
-Ljava/util/Arrays;->deepEquals0(Ljava/lang/Object;Ljava/lang/Object;)Z
-Ljava/util/Arrays;->INSERTIONSORT_THRESHOLD:I
-Ljava/util/Arrays;->mergeSort([Ljava/lang/Object;[Ljava/lang/Object;III)V
-Ljava/util/Arrays;->MIN_ARRAY_SORT_GRAN:I
-Ljava/util/Arrays;->rangeCheck(III)V
-Ljava/util/Arrays;->swap([Ljava/lang/Object;II)V
-Ljava/util/Base64$DecInputStream;-><init>(Ljava/io/InputStream;[IZ)V
-Ljava/util/Base64$DecInputStream;->base64:[I
-Ljava/util/Base64$DecInputStream;->bits:I
-Ljava/util/Base64$DecInputStream;->closed:Z
-Ljava/util/Base64$DecInputStream;->eof:Z
-Ljava/util/Base64$DecInputStream;->is:Ljava/io/InputStream;
-Ljava/util/Base64$DecInputStream;->isMIME:Z
-Ljava/util/Base64$DecInputStream;->nextin:I
-Ljava/util/Base64$DecInputStream;->nextout:I
-Ljava/util/Base64$DecInputStream;->sbBuf:[B
-Ljava/util/Base64$Decoder;-><init>(ZZ)V
-Ljava/util/Base64$Decoder;->decode0([BII[B)I
-Ljava/util/Base64$Decoder;->fromBase64:[I
-Ljava/util/Base64$Decoder;->fromBase64URL:[I
-Ljava/util/Base64$Decoder;->isMIME:Z
-Ljava/util/Base64$Decoder;->isURL:Z
-Ljava/util/Base64$Decoder;->outLength([BII)I
-Ljava/util/Base64$Decoder;->RFC2045:Ljava/util/Base64$Decoder;
-Ljava/util/Base64$Decoder;->RFC4648:Ljava/util/Base64$Decoder;
-Ljava/util/Base64$Decoder;->RFC4648_URLSAFE:Ljava/util/Base64$Decoder;
-Ljava/util/Base64$Encoder;-><init>(Z[BIZ)V
-Ljava/util/Base64$Encoder;->CRLF:[B
-Ljava/util/Base64$Encoder;->doPadding:Z
-Ljava/util/Base64$Encoder;->encode0([BII[B)I
-Ljava/util/Base64$Encoder;->isURL:Z
-Ljava/util/Base64$Encoder;->linemax:I
-Ljava/util/Base64$Encoder;->MIMELINEMAX:I
-Ljava/util/Base64$Encoder;->newline:[B
-Ljava/util/Base64$Encoder;->outLength(I)I
-Ljava/util/Base64$Encoder;->RFC2045:Ljava/util/Base64$Encoder;
-Ljava/util/Base64$Encoder;->RFC4648:Ljava/util/Base64$Encoder;
-Ljava/util/Base64$Encoder;->RFC4648_URLSAFE:Ljava/util/Base64$Encoder;
-Ljava/util/Base64$Encoder;->toBase64:[C
-Ljava/util/Base64$Encoder;->toBase64URL:[C
-Ljava/util/Base64$EncOutputStream;-><init>(Ljava/io/OutputStream;[C[BIZ)V
-Ljava/util/Base64$EncOutputStream;->b0:I
-Ljava/util/Base64$EncOutputStream;->b1:I
-Ljava/util/Base64$EncOutputStream;->b2:I
-Ljava/util/Base64$EncOutputStream;->base64:[C
-Ljava/util/Base64$EncOutputStream;->checkNewline()V
-Ljava/util/Base64$EncOutputStream;->closed:Z
-Ljava/util/Base64$EncOutputStream;->doPadding:Z
-Ljava/util/Base64$EncOutputStream;->leftover:I
-Ljava/util/Base64$EncOutputStream;->linemax:I
-Ljava/util/Base64$EncOutputStream;->linepos:I
-Ljava/util/Base64$EncOutputStream;->newline:[B
-Ljava/util/Base64;-><init>()V
-Ljava/util/BitSet;-><init>([J)V
-Ljava/util/BitSet;->ADDRESS_BITS_PER_WORD:I
-Ljava/util/BitSet;->BITS_PER_WORD:I
-Ljava/util/BitSet;->BIT_INDEX_MASK:I
-Ljava/util/BitSet;->checkInvariants()V
-Ljava/util/BitSet;->checkRange(II)V
-Ljava/util/BitSet;->ensureCapacity(I)V
-Ljava/util/BitSet;->expandTo(I)V
-Ljava/util/BitSet;->initWords(I)V
-Ljava/util/BitSet;->recalculateWordsInUse()V
-Ljava/util/BitSet;->sizeIsSticky:Z
-Ljava/util/BitSet;->trimToSize()V
-Ljava/util/BitSet;->wordIndex(I)I
-Ljava/util/BitSet;->words:[J
-Ljava/util/BitSet;->wordsInUse:I
-Ljava/util/BitSet;->WORD_MASK:J
-Ljava/util/Calendar$AvailableCalendarTypes;-><init>()V
-Ljava/util/Calendar$AvailableCalendarTypes;->SET:Ljava/util/Set;
-Ljava/util/Calendar$Builder;->allocateFields()V
-Ljava/util/Calendar$Builder;->fields:[I
-Ljava/util/Calendar$Builder;->firstDayOfWeek:I
-Ljava/util/Calendar$Builder;->instant:J
-Ljava/util/Calendar$Builder;->internalSet(II)V
-Ljava/util/Calendar$Builder;->isInstantSet()Z
-Ljava/util/Calendar$Builder;->isSet(I)Z
-Ljava/util/Calendar$Builder;->isValidWeekParameter(I)Z
-Ljava/util/Calendar$Builder;->lenient:Z
-Ljava/util/Calendar$Builder;->locale:Ljava/util/Locale;
-Ljava/util/Calendar$Builder;->maxFieldIndex:I
-Ljava/util/Calendar$Builder;->minimalDaysInFirstWeek:I
-Ljava/util/Calendar$Builder;->nextStamp:I
-Ljava/util/Calendar$Builder;->NFIELDS:I
-Ljava/util/Calendar$Builder;->type:Ljava/lang/String;
-Ljava/util/Calendar$Builder;->WEEK_YEAR:I
-Ljava/util/Calendar$Builder;->zone:Ljava/util/TimeZone;
-Ljava/util/Calendar$CalendarAccessControlContext;-><init>()V
-Ljava/util/Calendar$CalendarAccessControlContext;->INSTANCE:Ljava/security/AccessControlContext;
-Ljava/util/Calendar;->adjustStamp()V
-Ljava/util/Calendar;->aggregateStamp(II)I
-Ljava/util/Calendar;->ALL_FIELDS:I
-Ljava/util/Calendar;->AM_PM_MASK:I
-Ljava/util/Calendar;->appendValue(Ljava/lang/StringBuilder;Ljava/lang/String;ZJ)V
-Ljava/util/Calendar;->areAllFieldsSet:Z
-Ljava/util/Calendar;->cachedLocaleData:Ljava/util/concurrent/ConcurrentMap;
-Ljava/util/Calendar;->checkDisplayNameParams(IIIILjava/util/Locale;I)Z
-Ljava/util/Calendar;->compareTo(J)I
-Ljava/util/Calendar;->COMPUTED:I
-Ljava/util/Calendar;->createCalendar(Ljava/util/TimeZone;Ljava/util/Locale;)Ljava/util/Calendar;
-Ljava/util/Calendar;->currentSerialVersion:I
-Ljava/util/Calendar;->DATE_MASK:I
-Ljava/util/Calendar;->DAY_OF_MONTH_MASK:I
-Ljava/util/Calendar;->DAY_OF_WEEK_IN_MONTH_MASK:I
-Ljava/util/Calendar;->DAY_OF_WEEK_MASK:I
-Ljava/util/Calendar;->DAY_OF_YEAR_MASK:I
-Ljava/util/Calendar;->DST_OFFSET_MASK:I
-Ljava/util/Calendar;->ERA_MASK:I
-Ljava/util/Calendar;->FIELD_NAME:[Ljava/lang/String;
-Ljava/util/Calendar;->firstDayOfWeek:I
-Ljava/util/Calendar;->getBaseStyle(I)I
-Ljava/util/Calendar;->getDisplayNamesImpl(IILjava/util/Locale;)Ljava/util/Map;
-Ljava/util/Calendar;->getFieldName(I)Ljava/lang/String;
-Ljava/util/Calendar;->getFieldStrings(IILjava/text/DateFormatSymbols;)[Ljava/lang/String;
-Ljava/util/Calendar;->getJapaneseImperialInstance(Ljava/util/TimeZone;Ljava/util/Locale;)Ljava/util/Calendar;
-Ljava/util/Calendar;->getMillisOf(Ljava/util/Calendar;)J
-Ljava/util/Calendar;->getSetStateFields()I
-Ljava/util/Calendar;->getZone()Ljava/util/TimeZone;
-Ljava/util/Calendar;->HOUR_MASK:I
-Ljava/util/Calendar;->HOUR_OF_DAY_MASK:I
-Ljava/util/Calendar;->internalSet(II)V
-Ljava/util/Calendar;->invalidateWeekFields()V
-Ljava/util/Calendar;->isExternallySet(I)Z
-Ljava/util/Calendar;->isFieldSet(II)Z
-Ljava/util/Calendar;->isFullyNormalized()Z
-Ljava/util/Calendar;->isNarrowFormatStyle(I)Z
-Ljava/util/Calendar;->isNarrowStyle(I)Z
-Ljava/util/Calendar;->isPartiallyNormalized()Z
-Ljava/util/Calendar;->isStandaloneStyle(I)Z
-Ljava/util/Calendar;->lenient:Z
-Ljava/util/Calendar;->MILLISECOND_MASK:I
-Ljava/util/Calendar;->minimalDaysInFirstWeek:I
-Ljava/util/Calendar;->MINIMUM_USER_STAMP:I
-Ljava/util/Calendar;->MINUTE_MASK:I
-Ljava/util/Calendar;->MONTH_MASK:I
-Ljava/util/Calendar;->nextStamp:I
-Ljava/util/Calendar;->SECOND_MASK:I
-Ljava/util/Calendar;->selectFields()I
-Ljava/util/Calendar;->serialVersionOnStream:I
-Ljava/util/Calendar;->setFieldsComputed(I)V
-Ljava/util/Calendar;->setFieldsNormalized(I)V
-Ljava/util/Calendar;->setUnnormalized()V
-Ljava/util/Calendar;->setWeekCountData(Ljava/util/Locale;)V
-Ljava/util/Calendar;->setZoneShared(Z)V
-Ljava/util/Calendar;->sharedZone:Z
-Ljava/util/Calendar;->stamp:[I
-Ljava/util/Calendar;->STANDALONE_MASK:I
-Ljava/util/Calendar;->toStandaloneStyle(I)I
-Ljava/util/Calendar;->UNSET:I
-Ljava/util/Calendar;->updateTime()V
-Ljava/util/Calendar;->WEEK_OF_MONTH_MASK:I
-Ljava/util/Calendar;->WEEK_OF_YEAR_MASK:I
-Ljava/util/Calendar;->YEAR_MASK:I
-Ljava/util/Calendar;->ZONE_OFFSET_MASK:I
-Ljava/util/Collections$AsLIFOQueue;-><init>(Ljava/util/Deque;)V
-Ljava/util/Collections$AsLIFOQueue;->forEach(Ljava/util/function/Consumer;)V
-Ljava/util/Collections$AsLIFOQueue;->q:Ljava/util/Deque;
-Ljava/util/Collections$CheckedCollection;-><init>(Ljava/util/Collection;Ljava/lang/Class;)V
-Ljava/util/Collections$CheckedCollection;->badElementMsg(Ljava/lang/Object;)Ljava/lang/String;
-Ljava/util/Collections$CheckedCollection;->c:Ljava/util/Collection;
-Ljava/util/Collections$CheckedCollection;->checkedCopyOf(Ljava/util/Collection;)Ljava/util/Collection;
-Ljava/util/Collections$CheckedCollection;->forEach(Ljava/util/function/Consumer;)V
-Ljava/util/Collections$CheckedCollection;->type:Ljava/lang/Class;
-Ljava/util/Collections$CheckedCollection;->typeCheck(Ljava/lang/Object;)Ljava/lang/Object;
-Ljava/util/Collections$CheckedCollection;->zeroLengthElementArray()[Ljava/lang/Object;
-Ljava/util/Collections$CheckedCollection;->zeroLengthElementArray:[Ljava/lang/Object;
-Ljava/util/Collections$CheckedList;-><init>(Ljava/util/List;Ljava/lang/Class;)V
-Ljava/util/Collections$CheckedList;->list:Ljava/util/List;
-Ljava/util/Collections$CheckedMap$CheckedEntrySet$CheckedEntry;-><init>(Ljava/util/Map$Entry;Ljava/lang/Class;)V
-Ljava/util/Collections$CheckedMap$CheckedEntrySet$CheckedEntry;->badValueMsg(Ljava/lang/Object;)Ljava/lang/String;
-Ljava/util/Collections$CheckedMap$CheckedEntrySet$CheckedEntry;->e:Ljava/util/Map$Entry;
-Ljava/util/Collections$CheckedMap$CheckedEntrySet$CheckedEntry;->valueType:Ljava/lang/Class;
-Ljava/util/Collections$CheckedMap$CheckedEntrySet;-><init>(Ljava/util/Set;Ljava/lang/Class;)V
-Ljava/util/Collections$CheckedMap$CheckedEntrySet;->add(Ljava/util/Map$Entry;)Z
-Ljava/util/Collections$CheckedMap$CheckedEntrySet;->addAll(Ljava/util/Collection;)Z
-Ljava/util/Collections$CheckedMap$CheckedEntrySet;->batchRemove(Ljava/util/Collection;Z)Z
-Ljava/util/Collections$CheckedMap$CheckedEntrySet;->checkedEntry(Ljava/util/Map$Entry;Ljava/lang/Class;)Ljava/util/Collections$CheckedMap$CheckedEntrySet$CheckedEntry;
-Ljava/util/Collections$CheckedMap$CheckedEntrySet;->s:Ljava/util/Set;
-Ljava/util/Collections$CheckedMap$CheckedEntrySet;->valueType:Ljava/lang/Class;
-Ljava/util/Collections$CheckedMap;-><init>(Ljava/util/Map;Ljava/lang/Class;Ljava/lang/Class;)V
-Ljava/util/Collections$CheckedMap;->badKeyMsg(Ljava/lang/Object;)Ljava/lang/String;
-Ljava/util/Collections$CheckedMap;->badValueMsg(Ljava/lang/Object;)Ljava/lang/String;
-Ljava/util/Collections$CheckedMap;->entrySet:Ljava/util/Set;
-Ljava/util/Collections$CheckedMap;->keyType:Ljava/lang/Class;
-Ljava/util/Collections$CheckedMap;->m:Ljava/util/Map;
-Ljava/util/Collections$CheckedMap;->typeCheck(Ljava/lang/Object;Ljava/lang/Object;)V
-Ljava/util/Collections$CheckedMap;->typeCheck(Ljava/util/function/BiFunction;)Ljava/util/function/BiFunction;
-Ljava/util/Collections$CheckedMap;->valueType:Ljava/lang/Class;
-Ljava/util/Collections$CheckedNavigableMap;-><init>(Ljava/util/NavigableMap;Ljava/lang/Class;Ljava/lang/Class;)V
-Ljava/util/Collections$CheckedNavigableMap;->nm:Ljava/util/NavigableMap;
-Ljava/util/Collections$CheckedNavigableSet;-><init>(Ljava/util/NavigableSet;Ljava/lang/Class;)V
-Ljava/util/Collections$CheckedNavigableSet;->ns:Ljava/util/NavigableSet;
-Ljava/util/Collections$CheckedQueue;-><init>(Ljava/util/Queue;Ljava/lang/Class;)V
-Ljava/util/Collections$CheckedQueue;->queue:Ljava/util/Queue;
-Ljava/util/Collections$CheckedRandomAccessList;-><init>(Ljava/util/List;Ljava/lang/Class;)V
-Ljava/util/Collections$CheckedSet;-><init>(Ljava/util/Set;Ljava/lang/Class;)V
-Ljava/util/Collections$CheckedSortedMap;-><init>(Ljava/util/SortedMap;Ljava/lang/Class;Ljava/lang/Class;)V
-Ljava/util/Collections$CheckedSortedMap;->sm:Ljava/util/SortedMap;
-Ljava/util/Collections$CheckedSortedSet;-><init>(Ljava/util/SortedSet;Ljava/lang/Class;)V
-Ljava/util/Collections$CheckedSortedSet;->ss:Ljava/util/SortedSet;
-Ljava/util/Collections$CopiesList;-><init>(ILjava/lang/Object;)V
-Ljava/util/Collections$CopiesList;->element:Ljava/lang/Object;
-Ljava/util/Collections$CopiesList;->n:I
-Ljava/util/Collections$EmptyEnumeration;-><init>()V
-Ljava/util/Collections$EmptyEnumeration;->EMPTY_ENUMERATION:Ljava/util/Collections$EmptyEnumeration;
-Ljava/util/Collections$EmptyIterator;-><init>()V
-Ljava/util/Collections$EmptyIterator;->EMPTY_ITERATOR:Ljava/util/Collections$EmptyIterator;
-Ljava/util/Collections$EmptyList;->forEach(Ljava/util/function/Consumer;)V
-Ljava/util/Collections$EmptyListIterator;-><init>()V
-Ljava/util/Collections$EmptyListIterator;->EMPTY_ITERATOR:Ljava/util/Collections$EmptyListIterator;
-Ljava/util/Collections$EmptySet;-><init>()V
-Ljava/util/Collections$EmptySet;->forEach(Ljava/util/function/Consumer;)V
-Ljava/util/Collections$ReverseComparator2;-><init>(Ljava/util/Comparator;)V
-Ljava/util/Collections$ReverseComparator2;->cmp:Ljava/util/Comparator;
-Ljava/util/Collections$ReverseComparator;-><init>()V
-Ljava/util/Collections$ReverseComparator;->compare(Ljava/lang/Comparable;Ljava/lang/Comparable;)I
-Ljava/util/Collections$ReverseComparator;->REVERSE_ORDER:Ljava/util/Collections$ReverseComparator;
-Ljava/util/Collections$SetFromMap;-><init>(Ljava/util/Map;)V
-Ljava/util/Collections$SetFromMap;->forEach(Ljava/util/function/Consumer;)V
-Ljava/util/Collections$SetFromMap;->m:Ljava/util/Map;
-Ljava/util/Collections$SetFromMap;->s:Ljava/util/Set;
-Ljava/util/Collections$SingletonList;-><init>(Ljava/lang/Object;)V
-Ljava/util/Collections$SingletonList;->element:Ljava/lang/Object;
-Ljava/util/Collections$SingletonList;->forEach(Ljava/util/function/Consumer;)V
-Ljava/util/Collections$SingletonMap;-><init>(Ljava/lang/Object;Ljava/lang/Object;)V
-Ljava/util/Collections$SingletonMap;->entrySet:Ljava/util/Set;
-Ljava/util/Collections$SingletonMap;->k:Ljava/lang/Object;
-Ljava/util/Collections$SingletonMap;->keySet:Ljava/util/Set;
-Ljava/util/Collections$SingletonMap;->v:Ljava/lang/Object;
-Ljava/util/Collections$SingletonMap;->values:Ljava/util/Collection;
-Ljava/util/Collections$SingletonSet;-><init>(Ljava/lang/Object;)V
-Ljava/util/Collections$SingletonSet;->element:Ljava/lang/Object;
-Ljava/util/Collections$SingletonSet;->forEach(Ljava/util/function/Consumer;)V
-Ljava/util/Collections$SynchronizedCollection;-><init>(Ljava/util/Collection;)V
-Ljava/util/Collections$SynchronizedCollection;-><init>(Ljava/util/Collection;Ljava/lang/Object;)V
-Ljava/util/Collections$SynchronizedCollection;->forEach(Ljava/util/function/Consumer;)V
-Ljava/util/Collections$SynchronizedCollection;->mutex:Ljava/lang/Object;
-Ljava/util/Collections$SynchronizedList;-><init>(Ljava/util/List;)V
-Ljava/util/Collections$SynchronizedList;-><init>(Ljava/util/List;Ljava/lang/Object;)V
-Ljava/util/Collections$SynchronizedMap;-><init>(Ljava/util/Map;)V
-Ljava/util/Collections$SynchronizedMap;-><init>(Ljava/util/Map;Ljava/lang/Object;)V
-Ljava/util/Collections$SynchronizedMap;->entrySet:Ljava/util/Set;
-Ljava/util/Collections$SynchronizedMap;->keySet:Ljava/util/Set;
-Ljava/util/Collections$SynchronizedMap;->mutex:Ljava/lang/Object;
-Ljava/util/Collections$SynchronizedMap;->values:Ljava/util/Collection;
-Ljava/util/Collections$SynchronizedNavigableMap;-><init>(Ljava/util/NavigableMap;)V
-Ljava/util/Collections$SynchronizedNavigableMap;-><init>(Ljava/util/NavigableMap;Ljava/lang/Object;)V
-Ljava/util/Collections$SynchronizedNavigableMap;->nm:Ljava/util/NavigableMap;
-Ljava/util/Collections$SynchronizedNavigableSet;-><init>(Ljava/util/NavigableSet;)V
-Ljava/util/Collections$SynchronizedNavigableSet;-><init>(Ljava/util/NavigableSet;Ljava/lang/Object;)V
-Ljava/util/Collections$SynchronizedNavigableSet;->ns:Ljava/util/NavigableSet;
-Ljava/util/Collections$SynchronizedRandomAccessList;-><init>(Ljava/util/List;)V
-Ljava/util/Collections$SynchronizedRandomAccessList;-><init>(Ljava/util/List;Ljava/lang/Object;)V
-Ljava/util/Collections$SynchronizedSet;-><init>(Ljava/util/Set;)V
-Ljava/util/Collections$SynchronizedSet;-><init>(Ljava/util/Set;Ljava/lang/Object;)V
-Ljava/util/Collections$SynchronizedSortedMap;-><init>(Ljava/util/SortedMap;)V
-Ljava/util/Collections$SynchronizedSortedMap;-><init>(Ljava/util/SortedMap;Ljava/lang/Object;)V
-Ljava/util/Collections$SynchronizedSortedMap;->sm:Ljava/util/SortedMap;
-Ljava/util/Collections$SynchronizedSortedSet;-><init>(Ljava/util/SortedSet;)V
-Ljava/util/Collections$SynchronizedSortedSet;-><init>(Ljava/util/SortedSet;Ljava/lang/Object;)V
-Ljava/util/Collections$SynchronizedSortedSet;->ss:Ljava/util/SortedSet;
-Ljava/util/Collections$UnmodifiableCollection;-><init>(Ljava/util/Collection;)V
-Ljava/util/Collections$UnmodifiableCollection;->forEach(Ljava/util/function/Consumer;)V
-Ljava/util/Collections$UnmodifiableList;-><init>(Ljava/util/List;)V
-Ljava/util/Collections$UnmodifiableList;->list:Ljava/util/List;
-Ljava/util/Collections$UnmodifiableMap$UnmodifiableEntrySet$UnmodifiableEntry;-><init>(Ljava/util/Map$Entry;)V
-Ljava/util/Collections$UnmodifiableMap$UnmodifiableEntrySet$UnmodifiableEntry;->e:Ljava/util/Map$Entry;
-Ljava/util/Collections$UnmodifiableMap$UnmodifiableEntrySet$UnmodifiableEntrySetSpliterator;-><init>(Ljava/util/Spliterator;)V
-Ljava/util/Collections$UnmodifiableMap$UnmodifiableEntrySet$UnmodifiableEntrySetSpliterator;->forEachRemaining(Ljava/util/function/Consumer;)V
-Ljava/util/Collections$UnmodifiableMap$UnmodifiableEntrySet$UnmodifiableEntrySetSpliterator;->s:Ljava/util/Spliterator;
-Ljava/util/Collections$UnmodifiableMap$UnmodifiableEntrySet$UnmodifiableEntrySetSpliterator;->tryAdvance(Ljava/util/function/Consumer;)Z
-Ljava/util/Collections$UnmodifiableMap$UnmodifiableEntrySet;-><init>(Ljava/util/Set;)V
-Ljava/util/Collections$UnmodifiableMap$UnmodifiableEntrySet;->entryConsumer(Ljava/util/function/Consumer;)Ljava/util/function/Consumer;
-Ljava/util/Collections$UnmodifiableMap$UnmodifiableEntrySet;->forEach(Ljava/util/function/Consumer;)V
-Ljava/util/Collections$UnmodifiableMap;-><init>(Ljava/util/Map;)V
-Ljava/util/Collections$UnmodifiableMap;->entrySet:Ljava/util/Set;
-Ljava/util/Collections$UnmodifiableMap;->keySet:Ljava/util/Set;
-Ljava/util/Collections$UnmodifiableMap;->values:Ljava/util/Collection;
-Ljava/util/Collections$UnmodifiableNavigableMap$EmptyNavigableMap;-><init>()V
-Ljava/util/Collections$UnmodifiableNavigableMap;-><init>(Ljava/util/NavigableMap;)V
-Ljava/util/Collections$UnmodifiableNavigableMap;->EMPTY_NAVIGABLE_MAP:Ljava/util/Collections$UnmodifiableNavigableMap$EmptyNavigableMap;
-Ljava/util/Collections$UnmodifiableNavigableMap;->nm:Ljava/util/NavigableMap;
-Ljava/util/Collections$UnmodifiableNavigableSet$EmptyNavigableSet;-><init>()V
-Ljava/util/Collections$UnmodifiableNavigableSet;-><init>(Ljava/util/NavigableSet;)V
-Ljava/util/Collections$UnmodifiableNavigableSet;->EMPTY_NAVIGABLE_SET:Ljava/util/NavigableSet;
-Ljava/util/Collections$UnmodifiableNavigableSet;->ns:Ljava/util/NavigableSet;
-Ljava/util/Collections$UnmodifiableRandomAccessList;-><init>(Ljava/util/List;)V
-Ljava/util/Collections$UnmodifiableSet;-><init>(Ljava/util/Set;)V
-Ljava/util/Collections$UnmodifiableSortedMap;-><init>(Ljava/util/SortedMap;)V
-Ljava/util/Collections$UnmodifiableSortedMap;->sm:Ljava/util/SortedMap;
-Ljava/util/Collections$UnmodifiableSortedSet;-><init>(Ljava/util/SortedSet;)V
-Ljava/util/Collections$UnmodifiableSortedSet;->ss:Ljava/util/SortedSet;
-Ljava/util/Collections;-><init>()V
-Ljava/util/Collections;->BINARYSEARCH_THRESHOLD:I
-Ljava/util/Collections;->COPY_THRESHOLD:I
-Ljava/util/Collections;->eq(Ljava/lang/Object;Ljava/lang/Object;)Z
-Ljava/util/Collections;->FILL_THRESHOLD:I
-Ljava/util/Collections;->get(Ljava/util/ListIterator;I)Ljava/lang/Object;
-Ljava/util/Collections;->indexedBinarySearch(Ljava/util/List;Ljava/lang/Object;)I
-Ljava/util/Collections;->indexedBinarySearch(Ljava/util/List;Ljava/lang/Object;Ljava/util/Comparator;)I
-Ljava/util/Collections;->INDEXOFSUBLIST_THRESHOLD:I
-Ljava/util/Collections;->iteratorBinarySearch(Ljava/util/List;Ljava/lang/Object;)I
-Ljava/util/Collections;->iteratorBinarySearch(Ljava/util/List;Ljava/lang/Object;Ljava/util/Comparator;)I
-Ljava/util/Collections;->r:Ljava/util/Random;
-Ljava/util/Collections;->REPLACEALL_THRESHOLD:I
-Ljava/util/Collections;->REVERSE_THRESHOLD:I
-Ljava/util/Collections;->rotate1(Ljava/util/List;I)V
-Ljava/util/Collections;->rotate2(Ljava/util/List;I)V
-Ljava/util/Collections;->ROTATE_THRESHOLD:I
-Ljava/util/Collections;->SHUFFLE_THRESHOLD:I
-Ljava/util/Collections;->singletonIterator(Ljava/lang/Object;)Ljava/util/Iterator;
-Ljava/util/Collections;->singletonSpliterator(Ljava/lang/Object;)Ljava/util/Spliterator;
-Ljava/util/Collections;->swap([Ljava/lang/Object;II)V
-Ljava/util/Collections;->synchronizedCollection(Ljava/util/Collection;Ljava/lang/Object;)Ljava/util/Collection;
-Ljava/util/Collections;->synchronizedList(Ljava/util/List;Ljava/lang/Object;)Ljava/util/List;
-Ljava/util/Collections;->synchronizedSet(Ljava/util/Set;Ljava/lang/Object;)Ljava/util/Set;
-Ljava/util/Collections;->zeroLengthArray(Ljava/lang/Class;)[Ljava/lang/Object;
-Ljava/util/concurrent/AbstractExecutorService;->cancelAll(Ljava/util/ArrayList;)V
-Ljava/util/concurrent/AbstractExecutorService;->cancelAll(Ljava/util/ArrayList;I)V
-Ljava/util/concurrent/AbstractExecutorService;->doInvokeAny(Ljava/util/Collection;ZJ)Ljava/lang/Object;
-Ljava/util/concurrent/ArrayBlockingQueue$Itr;->cursor:I
-Ljava/util/concurrent/ArrayBlockingQueue$Itr;->detach()V
-Ljava/util/concurrent/ArrayBlockingQueue$Itr;->DETACHED:I
-Ljava/util/concurrent/ArrayBlockingQueue$Itr;->distance(III)I
-Ljava/util/concurrent/ArrayBlockingQueue$Itr;->incCursor(I)I
-Ljava/util/concurrent/ArrayBlockingQueue$Itr;->incorporateDequeues()V
-Ljava/util/concurrent/ArrayBlockingQueue$Itr;->invalidated(IIJI)Z
-Ljava/util/concurrent/ArrayBlockingQueue$Itr;->isDetached()Z
-Ljava/util/concurrent/ArrayBlockingQueue$Itr;->lastItem:Ljava/lang/Object;
-Ljava/util/concurrent/ArrayBlockingQueue$Itr;->lastRet:I
-Ljava/util/concurrent/ArrayBlockingQueue$Itr;->nextIndex:I
-Ljava/util/concurrent/ArrayBlockingQueue$Itr;->nextItem:Ljava/lang/Object;
-Ljava/util/concurrent/ArrayBlockingQueue$Itr;->NONE:I
-Ljava/util/concurrent/ArrayBlockingQueue$Itr;->noNext()V
-Ljava/util/concurrent/ArrayBlockingQueue$Itr;->prevCycles:I
-Ljava/util/concurrent/ArrayBlockingQueue$Itr;->prevTakeIndex:I
-Ljava/util/concurrent/ArrayBlockingQueue$Itr;->REMOVED:I
-Ljava/util/concurrent/ArrayBlockingQueue$Itr;->removedAt(I)Z
-Ljava/util/concurrent/ArrayBlockingQueue$Itr;->shutdown()V
-Ljava/util/concurrent/ArrayBlockingQueue$Itr;->takeIndexWrapped()Z
-Ljava/util/concurrent/ArrayBlockingQueue$Itrs$Node;->next:Ljava/util/concurrent/ArrayBlockingQueue$Itrs$Node;
-Ljava/util/concurrent/ArrayBlockingQueue$Itrs;->cycles:I
-Ljava/util/concurrent/ArrayBlockingQueue$Itrs;->doSomeSweeping(Z)V
-Ljava/util/concurrent/ArrayBlockingQueue$Itrs;->elementDequeued()V
-Ljava/util/concurrent/ArrayBlockingQueue$Itrs;->head:Ljava/util/concurrent/ArrayBlockingQueue$Itrs$Node;
-Ljava/util/concurrent/ArrayBlockingQueue$Itrs;->LONG_SWEEP_PROBES:I
-Ljava/util/concurrent/ArrayBlockingQueue$Itrs;->queueIsEmpty()V
-Ljava/util/concurrent/ArrayBlockingQueue$Itrs;->register(Ljava/util/concurrent/ArrayBlockingQueue$Itr;)V
-Ljava/util/concurrent/ArrayBlockingQueue$Itrs;->removedAt(I)V
-Ljava/util/concurrent/ArrayBlockingQueue$Itrs;->SHORT_SWEEP_PROBES:I
-Ljava/util/concurrent/ArrayBlockingQueue$Itrs;->sweeper:Ljava/util/concurrent/ArrayBlockingQueue$Itrs$Node;
-Ljava/util/concurrent/ArrayBlockingQueue$Itrs;->takeIndexWrapped()V
-Ljava/util/concurrent/ArrayBlockingQueue;->count:I
-Ljava/util/concurrent/ArrayBlockingQueue;->dec(I)I
-Ljava/util/concurrent/ArrayBlockingQueue;->dequeue()Ljava/lang/Object;
-Ljava/util/concurrent/ArrayBlockingQueue;->enqueue(Ljava/lang/Object;)V
-Ljava/util/concurrent/ArrayBlockingQueue;->itemAt(I)Ljava/lang/Object;
-Ljava/util/concurrent/ArrayBlockingQueue;->items:[Ljava/lang/Object;
-Ljava/util/concurrent/ArrayBlockingQueue;->itrs:Ljava/util/concurrent/ArrayBlockingQueue$Itrs;
-Ljava/util/concurrent/ArrayBlockingQueue;->lock:Ljava/util/concurrent/locks/ReentrantLock;
-Ljava/util/concurrent/ArrayBlockingQueue;->notEmpty:Ljava/util/concurrent/locks/Condition;
-Ljava/util/concurrent/ArrayBlockingQueue;->notFull:Ljava/util/concurrent/locks/Condition;
-Ljava/util/concurrent/ArrayBlockingQueue;->putIndex:I
-Ljava/util/concurrent/ArrayBlockingQueue;->removeAt(I)V
-Ljava/util/concurrent/ArrayBlockingQueue;->takeIndex:I
-Ljava/util/concurrent/atomic/AtomicBoolean;->U:Lsun/misc/Unsafe;
-Ljava/util/concurrent/atomic/AtomicBoolean;->value:I
-Ljava/util/concurrent/atomic/AtomicBoolean;->VALUE:J
-Ljava/util/concurrent/atomic/AtomicInteger;->U:Lsun/misc/Unsafe;
-Ljava/util/concurrent/atomic/AtomicInteger;->VALUE:J
-Ljava/util/concurrent/atomic/AtomicIntegerArray;->ABASE:I
-Ljava/util/concurrent/atomic/AtomicIntegerArray;->array:[I
-Ljava/util/concurrent/atomic/AtomicIntegerArray;->ASHIFT:I
-Ljava/util/concurrent/atomic/AtomicIntegerArray;->byteOffset(I)J
-Ljava/util/concurrent/atomic/AtomicIntegerArray;->checkedByteOffset(I)J
-Ljava/util/concurrent/atomic/AtomicIntegerArray;->compareAndSetRaw(JII)Z
-Ljava/util/concurrent/atomic/AtomicIntegerArray;->getRaw(J)I
-Ljava/util/concurrent/atomic/AtomicIntegerArray;->U:Lsun/misc/Unsafe;
-Ljava/util/concurrent/atomic/AtomicIntegerFieldUpdater$AtomicIntegerFieldUpdaterImpl;-><init>(Ljava/lang/Class;Ljava/lang/String;Ljava/lang/Class;)V
-Ljava/util/concurrent/atomic/AtomicIntegerFieldUpdater$AtomicIntegerFieldUpdaterImpl;->accessCheck(Ljava/lang/Object;)V
-Ljava/util/concurrent/atomic/AtomicIntegerFieldUpdater$AtomicIntegerFieldUpdaterImpl;->cclass:Ljava/lang/Class;
-Ljava/util/concurrent/atomic/AtomicIntegerFieldUpdater$AtomicIntegerFieldUpdaterImpl;->offset:J
-Ljava/util/concurrent/atomic/AtomicIntegerFieldUpdater$AtomicIntegerFieldUpdaterImpl;->tclass:Ljava/lang/Class;
-Ljava/util/concurrent/atomic/AtomicIntegerFieldUpdater$AtomicIntegerFieldUpdaterImpl;->throwAccessCheckException(Ljava/lang/Object;)V
-Ljava/util/concurrent/atomic/AtomicIntegerFieldUpdater$AtomicIntegerFieldUpdaterImpl;->U:Lsun/misc/Unsafe;
-Ljava/util/concurrent/atomic/AtomicLong;->U:Lsun/misc/Unsafe;
-Ljava/util/concurrent/atomic/AtomicLong;->VALUE:J
-Ljava/util/concurrent/atomic/AtomicLong;->value:J
-Ljava/util/concurrent/atomic/AtomicLong;->VMSupportsCS8()Z
-Ljava/util/concurrent/atomic/AtomicLong;->VM_SUPPORTS_LONG_CAS:Z
-Ljava/util/concurrent/atomic/AtomicLongArray;->ABASE:I
-Ljava/util/concurrent/atomic/AtomicLongArray;->array:[J
-Ljava/util/concurrent/atomic/AtomicLongArray;->ASHIFT:I
-Ljava/util/concurrent/atomic/AtomicLongArray;->byteOffset(I)J
-Ljava/util/concurrent/atomic/AtomicLongArray;->checkedByteOffset(I)J
-Ljava/util/concurrent/atomic/AtomicLongArray;->compareAndSetRaw(JJJ)Z
-Ljava/util/concurrent/atomic/AtomicLongArray;->getRaw(J)J
-Ljava/util/concurrent/atomic/AtomicLongArray;->U:Lsun/misc/Unsafe;
-Ljava/util/concurrent/atomic/AtomicLongFieldUpdater$CASUpdater;-><init>(Ljava/lang/Class;Ljava/lang/String;Ljava/lang/Class;)V
-Ljava/util/concurrent/atomic/AtomicLongFieldUpdater$CASUpdater;->accessCheck(Ljava/lang/Object;)V
-Ljava/util/concurrent/atomic/AtomicLongFieldUpdater$CASUpdater;->cclass:Ljava/lang/Class;
-Ljava/util/concurrent/atomic/AtomicLongFieldUpdater$CASUpdater;->offset:J
-Ljava/util/concurrent/atomic/AtomicLongFieldUpdater$CASUpdater;->tclass:Ljava/lang/Class;
-Ljava/util/concurrent/atomic/AtomicLongFieldUpdater$CASUpdater;->throwAccessCheckException(Ljava/lang/Object;)V
-Ljava/util/concurrent/atomic/AtomicLongFieldUpdater$CASUpdater;->U:Lsun/misc/Unsafe;
-Ljava/util/concurrent/atomic/AtomicLongFieldUpdater$LockedUpdater;-><init>(Ljava/lang/Class;Ljava/lang/String;Ljava/lang/Class;)V
-Ljava/util/concurrent/atomic/AtomicLongFieldUpdater$LockedUpdater;->accessCheck(Ljava/lang/Object;)V
-Ljava/util/concurrent/atomic/AtomicLongFieldUpdater$LockedUpdater;->accessCheckException(Ljava/lang/Object;)Ljava/lang/RuntimeException;
-Ljava/util/concurrent/atomic/AtomicLongFieldUpdater$LockedUpdater;->cclass:Ljava/lang/Class;
-Ljava/util/concurrent/atomic/AtomicLongFieldUpdater$LockedUpdater;->offset:J
-Ljava/util/concurrent/atomic/AtomicLongFieldUpdater$LockedUpdater;->tclass:Ljava/lang/Class;
-Ljava/util/concurrent/atomic/AtomicLongFieldUpdater$LockedUpdater;->U:Lsun/misc/Unsafe;
-Ljava/util/concurrent/atomic/AtomicMarkableReference$Pair;-><init>(Ljava/lang/Object;Z)V
-Ljava/util/concurrent/atomic/AtomicMarkableReference$Pair;->mark:Z
-Ljava/util/concurrent/atomic/AtomicMarkableReference$Pair;->of(Ljava/lang/Object;Z)Ljava/util/concurrent/atomic/AtomicMarkableReference$Pair;
-Ljava/util/concurrent/atomic/AtomicMarkableReference$Pair;->reference:Ljava/lang/Object;
-Ljava/util/concurrent/atomic/AtomicMarkableReference;->casPair(Ljava/util/concurrent/atomic/AtomicMarkableReference$Pair;Ljava/util/concurrent/atomic/AtomicMarkableReference$Pair;)Z
-Ljava/util/concurrent/atomic/AtomicMarkableReference;->PAIR:J
-Ljava/util/concurrent/atomic/AtomicMarkableReference;->pair:Ljava/util/concurrent/atomic/AtomicMarkableReference$Pair;
-Ljava/util/concurrent/atomic/AtomicMarkableReference;->U:Lsun/misc/Unsafe;
-Ljava/util/concurrent/atomic/AtomicReference;->U:Lsun/misc/Unsafe;
-Ljava/util/concurrent/atomic/AtomicReference;->VALUE:J
-Ljava/util/concurrent/atomic/AtomicReference;->value:Ljava/lang/Object;
-Ljava/util/concurrent/atomic/AtomicReferenceArray;->ABASE:I
-Ljava/util/concurrent/atomic/AtomicReferenceArray;->ARRAY:J
-Ljava/util/concurrent/atomic/AtomicReferenceArray;->array:[Ljava/lang/Object;
-Ljava/util/concurrent/atomic/AtomicReferenceArray;->ASHIFT:I
-Ljava/util/concurrent/atomic/AtomicReferenceArray;->byteOffset(I)J
-Ljava/util/concurrent/atomic/AtomicReferenceArray;->checkedByteOffset(I)J
-Ljava/util/concurrent/atomic/AtomicReferenceArray;->compareAndSetRaw(JLjava/lang/Object;Ljava/lang/Object;)Z
-Ljava/util/concurrent/atomic/AtomicReferenceArray;->getRaw(J)Ljava/lang/Object;
-Ljava/util/concurrent/atomic/AtomicReferenceArray;->U:Lsun/misc/Unsafe;
-Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater$AtomicReferenceFieldUpdaterImpl;-><init>(Ljava/lang/Class;Ljava/lang/Class;Ljava/lang/String;Ljava/lang/Class;)V
-Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater$AtomicReferenceFieldUpdaterImpl;->accessCheck(Ljava/lang/Object;)V
-Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater$AtomicReferenceFieldUpdaterImpl;->cclass:Ljava/lang/Class;
-Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater$AtomicReferenceFieldUpdaterImpl;->offset:J
-Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater$AtomicReferenceFieldUpdaterImpl;->tclass:Ljava/lang/Class;
-Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater$AtomicReferenceFieldUpdaterImpl;->throwAccessCheckException(Ljava/lang/Object;)V
-Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater$AtomicReferenceFieldUpdaterImpl;->throwCCE()V
-Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater$AtomicReferenceFieldUpdaterImpl;->U:Lsun/misc/Unsafe;
-Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater$AtomicReferenceFieldUpdaterImpl;->valueCheck(Ljava/lang/Object;)V
-Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater$AtomicReferenceFieldUpdaterImpl;->vclass:Ljava/lang/Class;
-Ljava/util/concurrent/atomic/AtomicStampedReference$Pair;-><init>(Ljava/lang/Object;I)V
-Ljava/util/concurrent/atomic/AtomicStampedReference$Pair;->of(Ljava/lang/Object;I)Ljava/util/concurrent/atomic/AtomicStampedReference$Pair;
-Ljava/util/concurrent/atomic/AtomicStampedReference$Pair;->reference:Ljava/lang/Object;
-Ljava/util/concurrent/atomic/AtomicStampedReference$Pair;->stamp:I
-Ljava/util/concurrent/atomic/AtomicStampedReference;->casPair(Ljava/util/concurrent/atomic/AtomicStampedReference$Pair;Ljava/util/concurrent/atomic/AtomicStampedReference$Pair;)Z
-Ljava/util/concurrent/atomic/AtomicStampedReference;->PAIR:J
-Ljava/util/concurrent/atomic/AtomicStampedReference;->pair:Ljava/util/concurrent/atomic/AtomicStampedReference$Pair;
-Ljava/util/concurrent/atomic/AtomicStampedReference;->U:Lsun/misc/Unsafe;
-Ljava/util/concurrent/atomic/DoubleAccumulator$SerializationProxy;-><init>(DLjava/util/function/DoubleBinaryOperator;J)V
-Ljava/util/concurrent/atomic/DoubleAccumulator$SerializationProxy;->function:Ljava/util/function/DoubleBinaryOperator;
-Ljava/util/concurrent/atomic/DoubleAccumulator$SerializationProxy;->identity:J
-Ljava/util/concurrent/atomic/DoubleAccumulator$SerializationProxy;->value:D
-Ljava/util/concurrent/atomic/DoubleAccumulator;->function:Ljava/util/function/DoubleBinaryOperator;
-Ljava/util/concurrent/atomic/DoubleAccumulator;->identity:J
-Ljava/util/concurrent/atomic/DoubleAdder$SerializationProxy;-><init>(Ljava/util/concurrent/atomic/DoubleAdder;)V
-Ljava/util/concurrent/atomic/DoubleAdder$SerializationProxy;->value:D
-Ljava/util/concurrent/atomic/LongAccumulator$SerializationProxy;-><init>(JLjava/util/function/LongBinaryOperator;J)V
-Ljava/util/concurrent/atomic/LongAccumulator$SerializationProxy;->function:Ljava/util/function/LongBinaryOperator;
-Ljava/util/concurrent/atomic/LongAccumulator$SerializationProxy;->identity:J
-Ljava/util/concurrent/atomic/LongAccumulator$SerializationProxy;->value:J
-Ljava/util/concurrent/atomic/LongAccumulator;->function:Ljava/util/function/LongBinaryOperator;
-Ljava/util/concurrent/atomic/LongAccumulator;->identity:J
-Ljava/util/concurrent/atomic/LongAdder$SerializationProxy;-><init>(Ljava/util/concurrent/atomic/LongAdder;)V
-Ljava/util/concurrent/atomic/LongAdder$SerializationProxy;->value:J
-Ljava/util/concurrent/atomic/Striped64$Cell;-><init>(J)V
-Ljava/util/concurrent/atomic/Striped64$Cell;->cas(JJ)Z
-Ljava/util/concurrent/atomic/Striped64$Cell;->reset()V
-Ljava/util/concurrent/atomic/Striped64$Cell;->reset(J)V
-Ljava/util/concurrent/atomic/Striped64$Cell;->U:Lsun/misc/Unsafe;
-Ljava/util/concurrent/atomic/Striped64$Cell;->VALUE:J
-Ljava/util/concurrent/atomic/Striped64$Cell;->value:J
-Ljava/util/concurrent/atomic/Striped64;-><init>()V
-Ljava/util/concurrent/atomic/Striped64;->advanceProbe(I)I
-Ljava/util/concurrent/atomic/Striped64;->apply(Ljava/util/function/DoubleBinaryOperator;JD)J
-Ljava/util/concurrent/atomic/Striped64;->BASE:J
-Ljava/util/concurrent/atomic/Striped64;->base:J
-Ljava/util/concurrent/atomic/Striped64;->casBase(JJ)Z
-Ljava/util/concurrent/atomic/Striped64;->casCellsBusy()Z
-Ljava/util/concurrent/atomic/Striped64;->cells:[Ljava/util/concurrent/atomic/Striped64$Cell;
-Ljava/util/concurrent/atomic/Striped64;->cellsBusy:I
-Ljava/util/concurrent/atomic/Striped64;->CELLSBUSY:J
-Ljava/util/concurrent/atomic/Striped64;->doubleAccumulate(DLjava/util/function/DoubleBinaryOperator;Z)V
-Ljava/util/concurrent/atomic/Striped64;->getProbe()I
-Ljava/util/concurrent/atomic/Striped64;->longAccumulate(JLjava/util/function/LongBinaryOperator;Z)V
-Ljava/util/concurrent/atomic/Striped64;->NCPU:I
-Ljava/util/concurrent/atomic/Striped64;->PROBE:J
-Ljava/util/concurrent/atomic/Striped64;->U:Lsun/misc/Unsafe;
-Ljava/util/concurrent/CompletableFuture$AltResult;-><init>(Ljava/lang/Throwable;)V
-Ljava/util/concurrent/CompletableFuture$AltResult;->ex:Ljava/lang/Throwable;
-Ljava/util/concurrent/CompletableFuture$AsyncRun;-><init>(Ljava/util/concurrent/CompletableFuture;Ljava/lang/Runnable;)V
-Ljava/util/concurrent/CompletableFuture$AsyncRun;->dep:Ljava/util/concurrent/CompletableFuture;
-Ljava/util/concurrent/CompletableFuture$AsyncRun;->fn:Ljava/lang/Runnable;
-Ljava/util/concurrent/CompletableFuture$AsyncRun;->setRawResult(Ljava/lang/Void;)V
-Ljava/util/concurrent/CompletableFuture$AsyncSupply;-><init>(Ljava/util/concurrent/CompletableFuture;Ljava/util/function/Supplier;)V
-Ljava/util/concurrent/CompletableFuture$AsyncSupply;->dep:Ljava/util/concurrent/CompletableFuture;
-Ljava/util/concurrent/CompletableFuture$AsyncSupply;->fn:Ljava/util/function/Supplier;
-Ljava/util/concurrent/CompletableFuture$AsyncSupply;->setRawResult(Ljava/lang/Void;)V
-Ljava/util/concurrent/CompletableFuture$BiAccept;-><init>(Ljava/util/concurrent/Executor;Ljava/util/concurrent/CompletableFuture;Ljava/util/concurrent/CompletableFuture;Ljava/util/concurrent/CompletableFuture;Ljava/util/function/BiConsumer;)V
-Ljava/util/concurrent/CompletableFuture$BiAccept;->fn:Ljava/util/function/BiConsumer;
-Ljava/util/concurrent/CompletableFuture$BiAccept;->tryFire(I)Ljava/util/concurrent/CompletableFuture;
-Ljava/util/concurrent/CompletableFuture$BiApply;-><init>(Ljava/util/concurrent/Executor;Ljava/util/concurrent/CompletableFuture;Ljava/util/concurrent/CompletableFuture;Ljava/util/concurrent/CompletableFuture;Ljava/util/function/BiFunction;)V
-Ljava/util/concurrent/CompletableFuture$BiApply;->fn:Ljava/util/function/BiFunction;
-Ljava/util/concurrent/CompletableFuture$BiApply;->tryFire(I)Ljava/util/concurrent/CompletableFuture;
-Ljava/util/concurrent/CompletableFuture$BiCompletion;-><init>(Ljava/util/concurrent/Executor;Ljava/util/concurrent/CompletableFuture;Ljava/util/concurrent/CompletableFuture;Ljava/util/concurrent/CompletableFuture;)V
-Ljava/util/concurrent/CompletableFuture$BiCompletion;->snd:Ljava/util/concurrent/CompletableFuture;
-Ljava/util/concurrent/CompletableFuture$BiRelay;-><init>(Ljava/util/concurrent/CompletableFuture;Ljava/util/concurrent/CompletableFuture;Ljava/util/concurrent/CompletableFuture;)V
-Ljava/util/concurrent/CompletableFuture$BiRelay;->tryFire(I)Ljava/util/concurrent/CompletableFuture;
-Ljava/util/concurrent/CompletableFuture$BiRun;-><init>(Ljava/util/concurrent/Executor;Ljava/util/concurrent/CompletableFuture;Ljava/util/concurrent/CompletableFuture;Ljava/util/concurrent/CompletableFuture;Ljava/lang/Runnable;)V
-Ljava/util/concurrent/CompletableFuture$BiRun;->fn:Ljava/lang/Runnable;
-Ljava/util/concurrent/CompletableFuture$BiRun;->tryFire(I)Ljava/util/concurrent/CompletableFuture;
-Ljava/util/concurrent/CompletableFuture$Canceller;-><init>(Ljava/util/concurrent/Future;)V
-Ljava/util/concurrent/CompletableFuture$Canceller;->accept(Ljava/lang/Object;Ljava/lang/Throwable;)V
-Ljava/util/concurrent/CompletableFuture$Canceller;->f:Ljava/util/concurrent/Future;
-Ljava/util/concurrent/CompletableFuture$CoCompletion;-><init>(Ljava/util/concurrent/CompletableFuture$BiCompletion;)V
-Ljava/util/concurrent/CompletableFuture$CoCompletion;->base:Ljava/util/concurrent/CompletableFuture$BiCompletion;
-Ljava/util/concurrent/CompletableFuture$CoCompletion;->isLive()Z
-Ljava/util/concurrent/CompletableFuture$CoCompletion;->tryFire(I)Ljava/util/concurrent/CompletableFuture;
-Ljava/util/concurrent/CompletableFuture$Completion;-><init>()V
-Ljava/util/concurrent/CompletableFuture$Completion;->isLive()Z
-Ljava/util/concurrent/CompletableFuture$Completion;->next:Ljava/util/concurrent/CompletableFuture$Completion;
-Ljava/util/concurrent/CompletableFuture$Completion;->setRawResult(Ljava/lang/Void;)V
-Ljava/util/concurrent/CompletableFuture$Completion;->tryFire(I)Ljava/util/concurrent/CompletableFuture;
-Ljava/util/concurrent/CompletableFuture$DelayedCompleter;-><init>(Ljava/util/concurrent/CompletableFuture;Ljava/lang/Object;)V
-Ljava/util/concurrent/CompletableFuture$DelayedCompleter;->f:Ljava/util/concurrent/CompletableFuture;
-Ljava/util/concurrent/CompletableFuture$DelayedCompleter;->u:Ljava/lang/Object;
-Ljava/util/concurrent/CompletableFuture$DelayedExecutor;-><init>(JLjava/util/concurrent/TimeUnit;Ljava/util/concurrent/Executor;)V
-Ljava/util/concurrent/CompletableFuture$DelayedExecutor;->delay:J
-Ljava/util/concurrent/CompletableFuture$DelayedExecutor;->executor:Ljava/util/concurrent/Executor;
-Ljava/util/concurrent/CompletableFuture$DelayedExecutor;->unit:Ljava/util/concurrent/TimeUnit;
-Ljava/util/concurrent/CompletableFuture$Delayer$DaemonThreadFactory;-><init>()V
-Ljava/util/concurrent/CompletableFuture$Delayer;-><init>()V
-Ljava/util/concurrent/CompletableFuture$Delayer;->delay(Ljava/lang/Runnable;JLjava/util/concurrent/TimeUnit;)Ljava/util/concurrent/ScheduledFuture;
-Ljava/util/concurrent/CompletableFuture$Delayer;->delayer:Ljava/util/concurrent/ScheduledThreadPoolExecutor;
-Ljava/util/concurrent/CompletableFuture$MinimalStage;-><init>()V
-Ljava/util/concurrent/CompletableFuture$MinimalStage;-><init>(Ljava/lang/Object;)V
-Ljava/util/concurrent/CompletableFuture$MinimalStage;->completeAsync(Ljava/util/function/Supplier;)Ljava/util/concurrent/CompletableFuture;
-Ljava/util/concurrent/CompletableFuture$MinimalStage;->completeAsync(Ljava/util/function/Supplier;Ljava/util/concurrent/Executor;)Ljava/util/concurrent/CompletableFuture;
-Ljava/util/concurrent/CompletableFuture$MinimalStage;->completeOnTimeout(Ljava/lang/Object;JLjava/util/concurrent/TimeUnit;)Ljava/util/concurrent/CompletableFuture;
-Ljava/util/concurrent/CompletableFuture$MinimalStage;->newIncompleteFuture()Ljava/util/concurrent/CompletableFuture;
-Ljava/util/concurrent/CompletableFuture$MinimalStage;->orTimeout(JLjava/util/concurrent/TimeUnit;)Ljava/util/concurrent/CompletableFuture;
-Ljava/util/concurrent/CompletableFuture$OrAccept;-><init>(Ljava/util/concurrent/Executor;Ljava/util/concurrent/CompletableFuture;Ljava/util/concurrent/CompletableFuture;Ljava/util/concurrent/CompletableFuture;Ljava/util/function/Consumer;)V
-Ljava/util/concurrent/CompletableFuture$OrAccept;->fn:Ljava/util/function/Consumer;
-Ljava/util/concurrent/CompletableFuture$OrAccept;->tryFire(I)Ljava/util/concurrent/CompletableFuture;
-Ljava/util/concurrent/CompletableFuture$OrApply;-><init>(Ljava/util/concurrent/Executor;Ljava/util/concurrent/CompletableFuture;Ljava/util/concurrent/CompletableFuture;Ljava/util/concurrent/CompletableFuture;Ljava/util/function/Function;)V
-Ljava/util/concurrent/CompletableFuture$OrApply;->fn:Ljava/util/function/Function;
-Ljava/util/concurrent/CompletableFuture$OrApply;->tryFire(I)Ljava/util/concurrent/CompletableFuture;
-Ljava/util/concurrent/CompletableFuture$OrRelay;-><init>(Ljava/util/concurrent/CompletableFuture;Ljava/util/concurrent/CompletableFuture;Ljava/util/concurrent/CompletableFuture;)V
-Ljava/util/concurrent/CompletableFuture$OrRelay;->tryFire(I)Ljava/util/concurrent/CompletableFuture;
-Ljava/util/concurrent/CompletableFuture$OrRun;-><init>(Ljava/util/concurrent/Executor;Ljava/util/concurrent/CompletableFuture;Ljava/util/concurrent/CompletableFuture;Ljava/util/concurrent/CompletableFuture;Ljava/lang/Runnable;)V
-Ljava/util/concurrent/CompletableFuture$OrRun;->fn:Ljava/lang/Runnable;
-Ljava/util/concurrent/CompletableFuture$OrRun;->tryFire(I)Ljava/util/concurrent/CompletableFuture;
-Ljava/util/concurrent/CompletableFuture$Signaller;-><init>(ZJJ)V
-Ljava/util/concurrent/CompletableFuture$Signaller;->deadline:J
-Ljava/util/concurrent/CompletableFuture$Signaller;->interrupted:Z
-Ljava/util/concurrent/CompletableFuture$Signaller;->interruptible:Z
-Ljava/util/concurrent/CompletableFuture$Signaller;->isLive()Z
-Ljava/util/concurrent/CompletableFuture$Signaller;->nanos:J
-Ljava/util/concurrent/CompletableFuture$Signaller;->thread:Ljava/lang/Thread;
-Ljava/util/concurrent/CompletableFuture$Signaller;->tryFire(I)Ljava/util/concurrent/CompletableFuture;
-Ljava/util/concurrent/CompletableFuture$TaskSubmitter;-><init>(Ljava/util/concurrent/Executor;Ljava/lang/Runnable;)V
-Ljava/util/concurrent/CompletableFuture$TaskSubmitter;->action:Ljava/lang/Runnable;
-Ljava/util/concurrent/CompletableFuture$TaskSubmitter;->executor:Ljava/util/concurrent/Executor;
-Ljava/util/concurrent/CompletableFuture$ThreadPerTaskExecutor;-><init>()V
-Ljava/util/concurrent/CompletableFuture$Timeout;-><init>(Ljava/util/concurrent/CompletableFuture;)V
-Ljava/util/concurrent/CompletableFuture$Timeout;->f:Ljava/util/concurrent/CompletableFuture;
-Ljava/util/concurrent/CompletableFuture$UniAccept;-><init>(Ljava/util/concurrent/Executor;Ljava/util/concurrent/CompletableFuture;Ljava/util/concurrent/CompletableFuture;Ljava/util/function/Consumer;)V
-Ljava/util/concurrent/CompletableFuture$UniAccept;->fn:Ljava/util/function/Consumer;
-Ljava/util/concurrent/CompletableFuture$UniAccept;->tryFire(I)Ljava/util/concurrent/CompletableFuture;
-Ljava/util/concurrent/CompletableFuture$UniApply;-><init>(Ljava/util/concurrent/Executor;Ljava/util/concurrent/CompletableFuture;Ljava/util/concurrent/CompletableFuture;Ljava/util/function/Function;)V
-Ljava/util/concurrent/CompletableFuture$UniApply;->fn:Ljava/util/function/Function;
-Ljava/util/concurrent/CompletableFuture$UniApply;->tryFire(I)Ljava/util/concurrent/CompletableFuture;
-Ljava/util/concurrent/CompletableFuture$UniCompletion;-><init>(Ljava/util/concurrent/Executor;Ljava/util/concurrent/CompletableFuture;Ljava/util/concurrent/CompletableFuture;)V
-Ljava/util/concurrent/CompletableFuture$UniCompletion;->claim()Z
-Ljava/util/concurrent/CompletableFuture$UniCompletion;->dep:Ljava/util/concurrent/CompletableFuture;
-Ljava/util/concurrent/CompletableFuture$UniCompletion;->executor:Ljava/util/concurrent/Executor;
-Ljava/util/concurrent/CompletableFuture$UniCompletion;->isLive()Z
-Ljava/util/concurrent/CompletableFuture$UniCompletion;->src:Ljava/util/concurrent/CompletableFuture;
-Ljava/util/concurrent/CompletableFuture$UniCompose;-><init>(Ljava/util/concurrent/Executor;Ljava/util/concurrent/CompletableFuture;Ljava/util/concurrent/CompletableFuture;Ljava/util/function/Function;)V
-Ljava/util/concurrent/CompletableFuture$UniCompose;->fn:Ljava/util/function/Function;
-Ljava/util/concurrent/CompletableFuture$UniCompose;->tryFire(I)Ljava/util/concurrent/CompletableFuture;
-Ljava/util/concurrent/CompletableFuture$UniExceptionally;-><init>(Ljava/util/concurrent/CompletableFuture;Ljava/util/concurrent/CompletableFuture;Ljava/util/function/Function;)V
-Ljava/util/concurrent/CompletableFuture$UniExceptionally;->fn:Ljava/util/function/Function;
-Ljava/util/concurrent/CompletableFuture$UniExceptionally;->tryFire(I)Ljava/util/concurrent/CompletableFuture;
-Ljava/util/concurrent/CompletableFuture$UniHandle;-><init>(Ljava/util/concurrent/Executor;Ljava/util/concurrent/CompletableFuture;Ljava/util/concurrent/CompletableFuture;Ljava/util/function/BiFunction;)V
-Ljava/util/concurrent/CompletableFuture$UniHandle;->fn:Ljava/util/function/BiFunction;
-Ljava/util/concurrent/CompletableFuture$UniHandle;->tryFire(I)Ljava/util/concurrent/CompletableFuture;
-Ljava/util/concurrent/CompletableFuture$UniRelay;-><init>(Ljava/util/concurrent/CompletableFuture;Ljava/util/concurrent/CompletableFuture;)V
-Ljava/util/concurrent/CompletableFuture$UniRelay;->tryFire(I)Ljava/util/concurrent/CompletableFuture;
-Ljava/util/concurrent/CompletableFuture$UniRun;-><init>(Ljava/util/concurrent/Executor;Ljava/util/concurrent/CompletableFuture;Ljava/util/concurrent/CompletableFuture;Ljava/lang/Runnable;)V
-Ljava/util/concurrent/CompletableFuture$UniRun;->fn:Ljava/lang/Runnable;
-Ljava/util/concurrent/CompletableFuture$UniRun;->tryFire(I)Ljava/util/concurrent/CompletableFuture;
-Ljava/util/concurrent/CompletableFuture$UniWhenComplete;-><init>(Ljava/util/concurrent/Executor;Ljava/util/concurrent/CompletableFuture;Ljava/util/concurrent/CompletableFuture;Ljava/util/function/BiConsumer;)V
-Ljava/util/concurrent/CompletableFuture$UniWhenComplete;->fn:Ljava/util/function/BiConsumer;
-Ljava/util/concurrent/CompletableFuture$UniWhenComplete;->tryFire(I)Ljava/util/concurrent/CompletableFuture;
-Ljava/util/concurrent/CompletableFuture;-><init>(Ljava/lang/Object;)V
-Ljava/util/concurrent/CompletableFuture;->andTree([Ljava/util/concurrent/CompletableFuture;II)Ljava/util/concurrent/CompletableFuture;
-Ljava/util/concurrent/CompletableFuture;->ASYNC:I
-Ljava/util/concurrent/CompletableFuture;->asyncRunStage(Ljava/util/concurrent/Executor;Ljava/lang/Runnable;)Ljava/util/concurrent/CompletableFuture;
-Ljava/util/concurrent/CompletableFuture;->asyncSupplyStage(Ljava/util/concurrent/Executor;Ljava/util/function/Supplier;)Ljava/util/concurrent/CompletableFuture;
-Ljava/util/concurrent/CompletableFuture;->ASYNC_POOL:Ljava/util/concurrent/Executor;
-Ljava/util/concurrent/CompletableFuture;->biAccept(Ljava/util/concurrent/CompletableFuture;Ljava/util/concurrent/CompletableFuture;Ljava/util/function/BiConsumer;Ljava/util/concurrent/CompletableFuture$BiAccept;)Z
-Ljava/util/concurrent/CompletableFuture;->biAcceptStage(Ljava/util/concurrent/Executor;Ljava/util/concurrent/CompletionStage;Ljava/util/function/BiConsumer;)Ljava/util/concurrent/CompletableFuture;
-Ljava/util/concurrent/CompletableFuture;->biApply(Ljava/util/concurrent/CompletableFuture;Ljava/util/concurrent/CompletableFuture;Ljava/util/function/BiFunction;Ljava/util/concurrent/CompletableFuture$BiApply;)Z
-Ljava/util/concurrent/CompletableFuture;->biApplyStage(Ljava/util/concurrent/Executor;Ljava/util/concurrent/CompletionStage;Ljava/util/function/BiFunction;)Ljava/util/concurrent/CompletableFuture;
-Ljava/util/concurrent/CompletableFuture;->bipush(Ljava/util/concurrent/CompletableFuture;Ljava/util/concurrent/CompletableFuture$BiCompletion;)V
-Ljava/util/concurrent/CompletableFuture;->biRelay(Ljava/util/concurrent/CompletableFuture;Ljava/util/concurrent/CompletableFuture;)Z
-Ljava/util/concurrent/CompletableFuture;->biRun(Ljava/util/concurrent/CompletableFuture;Ljava/util/concurrent/CompletableFuture;Ljava/lang/Runnable;Ljava/util/concurrent/CompletableFuture$BiRun;)Z
-Ljava/util/concurrent/CompletableFuture;->biRunStage(Ljava/util/concurrent/Executor;Ljava/util/concurrent/CompletionStage;Ljava/lang/Runnable;)Ljava/util/concurrent/CompletableFuture;
-Ljava/util/concurrent/CompletableFuture;->casStack(Ljava/util/concurrent/CompletableFuture$Completion;Ljava/util/concurrent/CompletableFuture$Completion;)Z
-Ljava/util/concurrent/CompletableFuture;->cleanStack()V
-Ljava/util/concurrent/CompletableFuture;->completeAsync(Ljava/util/function/Supplier;)Ljava/util/concurrent/CompletableFuture;
-Ljava/util/concurrent/CompletableFuture;->completeAsync(Ljava/util/function/Supplier;Ljava/util/concurrent/Executor;)Ljava/util/concurrent/CompletableFuture;
-Ljava/util/concurrent/CompletableFuture;->completedStage(Ljava/lang/Object;)Ljava/util/concurrent/CompletionStage;
-Ljava/util/concurrent/CompletableFuture;->completeNull()Z
-Ljava/util/concurrent/CompletableFuture;->completeOnTimeout(Ljava/lang/Object;JLjava/util/concurrent/TimeUnit;)Ljava/util/concurrent/CompletableFuture;
-Ljava/util/concurrent/CompletableFuture;->completeRelay(Ljava/lang/Object;)Z
-Ljava/util/concurrent/CompletableFuture;->completeThrowable(Ljava/lang/Throwable;)Z
-Ljava/util/concurrent/CompletableFuture;->completeThrowable(Ljava/lang/Throwable;Ljava/lang/Object;)Z
-Ljava/util/concurrent/CompletableFuture;->completeValue(Ljava/lang/Object;)Z
-Ljava/util/concurrent/CompletableFuture;->copy()Ljava/util/concurrent/CompletableFuture;
-Ljava/util/concurrent/CompletableFuture;->defaultExecutor()Ljava/util/concurrent/Executor;
-Ljava/util/concurrent/CompletableFuture;->delayedExecutor(JLjava/util/concurrent/TimeUnit;)Ljava/util/concurrent/Executor;
-Ljava/util/concurrent/CompletableFuture;->delayedExecutor(JLjava/util/concurrent/TimeUnit;Ljava/util/concurrent/Executor;)Ljava/util/concurrent/Executor;
-Ljava/util/concurrent/CompletableFuture;->encodeOutcome(Ljava/lang/Object;Ljava/lang/Throwable;)Ljava/lang/Object;
-Ljava/util/concurrent/CompletableFuture;->encodeRelay(Ljava/lang/Object;)Ljava/lang/Object;
-Ljava/util/concurrent/CompletableFuture;->encodeThrowable(Ljava/lang/Throwable;)Ljava/util/concurrent/CompletableFuture$AltResult;
-Ljava/util/concurrent/CompletableFuture;->encodeThrowable(Ljava/lang/Throwable;Ljava/lang/Object;)Ljava/lang/Object;
-Ljava/util/concurrent/CompletableFuture;->encodeValue(Ljava/lang/Object;)Ljava/lang/Object;
-Ljava/util/concurrent/CompletableFuture;->failedFuture(Ljava/lang/Throwable;)Ljava/util/concurrent/CompletableFuture;
-Ljava/util/concurrent/CompletableFuture;->failedStage(Ljava/lang/Throwable;)Ljava/util/concurrent/CompletionStage;
-Ljava/util/concurrent/CompletableFuture;->internalComplete(Ljava/lang/Object;)Z
-Ljava/util/concurrent/CompletableFuture;->lazySetNext(Ljava/util/concurrent/CompletableFuture$Completion;Ljava/util/concurrent/CompletableFuture$Completion;)V
-Ljava/util/concurrent/CompletableFuture;->minimalCompletionStage()Ljava/util/concurrent/CompletionStage;
-Ljava/util/concurrent/CompletableFuture;->NESTED:I
-Ljava/util/concurrent/CompletableFuture;->newIncompleteFuture()Ljava/util/concurrent/CompletableFuture;
-Ljava/util/concurrent/CompletableFuture;->NEXT:J
-Ljava/util/concurrent/CompletableFuture;->NIL:Ljava/util/concurrent/CompletableFuture$AltResult;
-Ljava/util/concurrent/CompletableFuture;->orAccept(Ljava/util/concurrent/CompletableFuture;Ljava/util/concurrent/CompletableFuture;Ljava/util/function/Consumer;Ljava/util/concurrent/CompletableFuture$OrAccept;)Z
-Ljava/util/concurrent/CompletableFuture;->orAcceptStage(Ljava/util/concurrent/Executor;Ljava/util/concurrent/CompletionStage;Ljava/util/function/Consumer;)Ljava/util/concurrent/CompletableFuture;
-Ljava/util/concurrent/CompletableFuture;->orApply(Ljava/util/concurrent/CompletableFuture;Ljava/util/concurrent/CompletableFuture;Ljava/util/function/Function;Ljava/util/concurrent/CompletableFuture$OrApply;)Z
-Ljava/util/concurrent/CompletableFuture;->orApplyStage(Ljava/util/concurrent/Executor;Ljava/util/concurrent/CompletionStage;Ljava/util/function/Function;)Ljava/util/concurrent/CompletableFuture;
-Ljava/util/concurrent/CompletableFuture;->orpush(Ljava/util/concurrent/CompletableFuture;Ljava/util/concurrent/CompletableFuture$BiCompletion;)V
-Ljava/util/concurrent/CompletableFuture;->orRelay(Ljava/util/concurrent/CompletableFuture;Ljava/util/concurrent/CompletableFuture;)Z
-Ljava/util/concurrent/CompletableFuture;->orRun(Ljava/util/concurrent/CompletableFuture;Ljava/util/concurrent/CompletableFuture;Ljava/lang/Runnable;Ljava/util/concurrent/CompletableFuture$OrRun;)Z
-Ljava/util/concurrent/CompletableFuture;->orRunStage(Ljava/util/concurrent/Executor;Ljava/util/concurrent/CompletionStage;Ljava/lang/Runnable;)Ljava/util/concurrent/CompletableFuture;
-Ljava/util/concurrent/CompletableFuture;->orTimeout(JLjava/util/concurrent/TimeUnit;)Ljava/util/concurrent/CompletableFuture;
-Ljava/util/concurrent/CompletableFuture;->orTree([Ljava/util/concurrent/CompletableFuture;II)Ljava/util/concurrent/CompletableFuture;
-Ljava/util/concurrent/CompletableFuture;->postComplete()V
-Ljava/util/concurrent/CompletableFuture;->postFire(Ljava/util/concurrent/CompletableFuture;I)Ljava/util/concurrent/CompletableFuture;
-Ljava/util/concurrent/CompletableFuture;->postFire(Ljava/util/concurrent/CompletableFuture;Ljava/util/concurrent/CompletableFuture;I)Ljava/util/concurrent/CompletableFuture;
-Ljava/util/concurrent/CompletableFuture;->push(Ljava/util/concurrent/CompletableFuture$UniCompletion;)V
-Ljava/util/concurrent/CompletableFuture;->pushStack(Ljava/util/concurrent/CompletableFuture$Completion;)V
-Ljava/util/concurrent/CompletableFuture;->reportGet(Ljava/lang/Object;)Ljava/lang/Object;
-Ljava/util/concurrent/CompletableFuture;->reportJoin(Ljava/lang/Object;)Ljava/lang/Object;
-Ljava/util/concurrent/CompletableFuture;->RESULT:J
-Ljava/util/concurrent/CompletableFuture;->result:Ljava/lang/Object;
-Ljava/util/concurrent/CompletableFuture;->screenExecutor(Ljava/util/concurrent/Executor;)Ljava/util/concurrent/Executor;
-Ljava/util/concurrent/CompletableFuture;->SPINS:I
-Ljava/util/concurrent/CompletableFuture;->STACK:J
-Ljava/util/concurrent/CompletableFuture;->stack:Ljava/util/concurrent/CompletableFuture$Completion;
-Ljava/util/concurrent/CompletableFuture;->SYNC:I
-Ljava/util/concurrent/CompletableFuture;->timedGet(J)Ljava/lang/Object;
-Ljava/util/concurrent/CompletableFuture;->tryPushStack(Ljava/util/concurrent/CompletableFuture$Completion;)Z
-Ljava/util/concurrent/CompletableFuture;->U:Lsun/misc/Unsafe;
-Ljava/util/concurrent/CompletableFuture;->uniAccept(Ljava/util/concurrent/CompletableFuture;Ljava/util/function/Consumer;Ljava/util/concurrent/CompletableFuture$UniAccept;)Z
-Ljava/util/concurrent/CompletableFuture;->uniAcceptStage(Ljava/util/concurrent/Executor;Ljava/util/function/Consumer;)Ljava/util/concurrent/CompletableFuture;
-Ljava/util/concurrent/CompletableFuture;->uniApply(Ljava/util/concurrent/CompletableFuture;Ljava/util/function/Function;Ljava/util/concurrent/CompletableFuture$UniApply;)Z
-Ljava/util/concurrent/CompletableFuture;->uniApplyStage(Ljava/util/concurrent/Executor;Ljava/util/function/Function;)Ljava/util/concurrent/CompletableFuture;
-Ljava/util/concurrent/CompletableFuture;->uniAsMinimalStage()Ljava/util/concurrent/CompletableFuture$MinimalStage;
-Ljava/util/concurrent/CompletableFuture;->uniCompose(Ljava/util/concurrent/CompletableFuture;Ljava/util/function/Function;Ljava/util/concurrent/CompletableFuture$UniCompose;)Z
-Ljava/util/concurrent/CompletableFuture;->uniComposeStage(Ljava/util/concurrent/Executor;Ljava/util/function/Function;)Ljava/util/concurrent/CompletableFuture;
-Ljava/util/concurrent/CompletableFuture;->uniCopyStage()Ljava/util/concurrent/CompletableFuture;
-Ljava/util/concurrent/CompletableFuture;->uniExceptionally(Ljava/util/concurrent/CompletableFuture;Ljava/util/function/Function;Ljava/util/concurrent/CompletableFuture$UniExceptionally;)Z
-Ljava/util/concurrent/CompletableFuture;->uniExceptionallyStage(Ljava/util/function/Function;)Ljava/util/concurrent/CompletableFuture;
-Ljava/util/concurrent/CompletableFuture;->uniHandle(Ljava/util/concurrent/CompletableFuture;Ljava/util/function/BiFunction;Ljava/util/concurrent/CompletableFuture$UniHandle;)Z
-Ljava/util/concurrent/CompletableFuture;->uniHandleStage(Ljava/util/concurrent/Executor;Ljava/util/function/BiFunction;)Ljava/util/concurrent/CompletableFuture;
-Ljava/util/concurrent/CompletableFuture;->uniRelay(Ljava/util/concurrent/CompletableFuture;)Z
-Ljava/util/concurrent/CompletableFuture;->uniRun(Ljava/util/concurrent/CompletableFuture;Ljava/lang/Runnable;Ljava/util/concurrent/CompletableFuture$UniRun;)Z
-Ljava/util/concurrent/CompletableFuture;->uniRunStage(Ljava/util/concurrent/Executor;Ljava/lang/Runnable;)Ljava/util/concurrent/CompletableFuture;
-Ljava/util/concurrent/CompletableFuture;->uniWhenComplete(Ljava/util/concurrent/CompletableFuture;Ljava/util/function/BiConsumer;Ljava/util/concurrent/CompletableFuture$UniWhenComplete;)Z
-Ljava/util/concurrent/CompletableFuture;->uniWhenCompleteStage(Ljava/util/concurrent/Executor;Ljava/util/function/BiConsumer;)Ljava/util/concurrent/CompletableFuture;
-Ljava/util/concurrent/CompletableFuture;->USE_COMMON_POOL:Z
-Ljava/util/concurrent/CompletableFuture;->waitingGet(Z)Ljava/lang/Object;
-Ljava/util/concurrent/ConcurrentHashMap$BaseIterator;-><init>([Ljava/util/concurrent/ConcurrentHashMap$Node;IIILjava/util/concurrent/ConcurrentHashMap;)V
-Ljava/util/concurrent/ConcurrentHashMap$BaseIterator;->hasNext()Z
-Ljava/util/concurrent/ConcurrentHashMap$BaseIterator;->lastReturned:Ljava/util/concurrent/ConcurrentHashMap$Node;
-Ljava/util/concurrent/ConcurrentHashMap$BaseIterator;->map:Ljava/util/concurrent/ConcurrentHashMap;
-Ljava/util/concurrent/ConcurrentHashMap$BaseIterator;->remove()V
-Ljava/util/concurrent/ConcurrentHashMap$BulkTask;-><init>(Ljava/util/concurrent/ConcurrentHashMap$BulkTask;III[Ljava/util/concurrent/ConcurrentHashMap$Node;)V
-Ljava/util/concurrent/ConcurrentHashMap$BulkTask;->advance()Ljava/util/concurrent/ConcurrentHashMap$Node;
-Ljava/util/concurrent/ConcurrentHashMap$BulkTask;->baseIndex:I
-Ljava/util/concurrent/ConcurrentHashMap$BulkTask;->baseLimit:I
-Ljava/util/concurrent/ConcurrentHashMap$BulkTask;->baseSize:I
-Ljava/util/concurrent/ConcurrentHashMap$BulkTask;->batch:I
-Ljava/util/concurrent/ConcurrentHashMap$BulkTask;->index:I
-Ljava/util/concurrent/ConcurrentHashMap$BulkTask;->next:Ljava/util/concurrent/ConcurrentHashMap$Node;
-Ljava/util/concurrent/ConcurrentHashMap$BulkTask;->pushState([Ljava/util/concurrent/ConcurrentHashMap$Node;II)V
-Ljava/util/concurrent/ConcurrentHashMap$BulkTask;->recoverState(I)V
-Ljava/util/concurrent/ConcurrentHashMap$BulkTask;->spare:Ljava/util/concurrent/ConcurrentHashMap$TableStack;
-Ljava/util/concurrent/ConcurrentHashMap$BulkTask;->stack:Ljava/util/concurrent/ConcurrentHashMap$TableStack;
-Ljava/util/concurrent/ConcurrentHashMap$BulkTask;->tab:[Ljava/util/concurrent/ConcurrentHashMap$Node;
-Ljava/util/concurrent/ConcurrentHashMap$CollectionView;-><init>(Ljava/util/concurrent/ConcurrentHashMap;)V
-Ljava/util/concurrent/ConcurrentHashMap$CollectionView;->getMap()Ljava/util/concurrent/ConcurrentHashMap;
-Ljava/util/concurrent/ConcurrentHashMap$CollectionView;->map:Ljava/util/concurrent/ConcurrentHashMap;
-Ljava/util/concurrent/ConcurrentHashMap$CollectionView;->OOME_MSG:Ljava/lang/String;
-Ljava/util/concurrent/ConcurrentHashMap$CounterCell;-><init>(J)V
-Ljava/util/concurrent/ConcurrentHashMap$CounterCell;->value:J
-Ljava/util/concurrent/ConcurrentHashMap$EntryIterator;-><init>([Ljava/util/concurrent/ConcurrentHashMap$Node;IIILjava/util/concurrent/ConcurrentHashMap;)V
-Ljava/util/concurrent/ConcurrentHashMap$EntrySetView;-><init>(Ljava/util/concurrent/ConcurrentHashMap;)V
-Ljava/util/concurrent/ConcurrentHashMap$EntrySetView;->add(Ljava/util/Map$Entry;)Z
-Ljava/util/concurrent/ConcurrentHashMap$EntrySetView;->addAll(Ljava/util/Collection;)Z
-Ljava/util/concurrent/ConcurrentHashMap$EntrySetView;->forEach(Ljava/util/function/Consumer;)V
-Ljava/util/concurrent/ConcurrentHashMap$EntrySetView;->removeIf(Ljava/util/function/Predicate;)Z
-Ljava/util/concurrent/ConcurrentHashMap$EntrySpliterator;-><init>([Ljava/util/concurrent/ConcurrentHashMap$Node;IIIJLjava/util/concurrent/ConcurrentHashMap;)V
-Ljava/util/concurrent/ConcurrentHashMap$EntrySpliterator;->est:J
-Ljava/util/concurrent/ConcurrentHashMap$EntrySpliterator;->forEachRemaining(Ljava/util/function/Consumer;)V
-Ljava/util/concurrent/ConcurrentHashMap$EntrySpliterator;->map:Ljava/util/concurrent/ConcurrentHashMap;
-Ljava/util/concurrent/ConcurrentHashMap$EntrySpliterator;->tryAdvance(Ljava/util/function/Consumer;)Z
-Ljava/util/concurrent/ConcurrentHashMap$ForEachEntryTask;-><init>(Ljava/util/concurrent/ConcurrentHashMap$BulkTask;III[Ljava/util/concurrent/ConcurrentHashMap$Node;Ljava/util/function/Consumer;)V
-Ljava/util/concurrent/ConcurrentHashMap$ForEachEntryTask;->action:Ljava/util/function/Consumer;
-Ljava/util/concurrent/ConcurrentHashMap$ForEachKeyTask;-><init>(Ljava/util/concurrent/ConcurrentHashMap$BulkTask;III[Ljava/util/concurrent/ConcurrentHashMap$Node;Ljava/util/function/Consumer;)V
-Ljava/util/concurrent/ConcurrentHashMap$ForEachKeyTask;->action:Ljava/util/function/Consumer;
-Ljava/util/concurrent/ConcurrentHashMap$ForEachMappingTask;-><init>(Ljava/util/concurrent/ConcurrentHashMap$BulkTask;III[Ljava/util/concurrent/ConcurrentHashMap$Node;Ljava/util/function/BiConsumer;)V
-Ljava/util/concurrent/ConcurrentHashMap$ForEachMappingTask;->action:Ljava/util/function/BiConsumer;
-Ljava/util/concurrent/ConcurrentHashMap$ForEachTransformedEntryTask;-><init>(Ljava/util/concurrent/ConcurrentHashMap$BulkTask;III[Ljava/util/concurrent/ConcurrentHashMap$Node;Ljava/util/function/Function;Ljava/util/function/Consumer;)V
-Ljava/util/concurrent/ConcurrentHashMap$ForEachTransformedEntryTask;->action:Ljava/util/function/Consumer;
-Ljava/util/concurrent/ConcurrentHashMap$ForEachTransformedEntryTask;->transformer:Ljava/util/function/Function;
-Ljava/util/concurrent/ConcurrentHashMap$ForEachTransformedKeyTask;-><init>(Ljava/util/concurrent/ConcurrentHashMap$BulkTask;III[Ljava/util/concurrent/ConcurrentHashMap$Node;Ljava/util/function/Function;Ljava/util/function/Consumer;)V
-Ljava/util/concurrent/ConcurrentHashMap$ForEachTransformedKeyTask;->action:Ljava/util/function/Consumer;
-Ljava/util/concurrent/ConcurrentHashMap$ForEachTransformedKeyTask;->transformer:Ljava/util/function/Function;
-Ljava/util/concurrent/ConcurrentHashMap$ForEachTransformedMappingTask;-><init>(Ljava/util/concurrent/ConcurrentHashMap$BulkTask;III[Ljava/util/concurrent/ConcurrentHashMap$Node;Ljava/util/function/BiFunction;Ljava/util/function/Consumer;)V
-Ljava/util/concurrent/ConcurrentHashMap$ForEachTransformedMappingTask;->action:Ljava/util/function/Consumer;
-Ljava/util/concurrent/ConcurrentHashMap$ForEachTransformedMappingTask;->transformer:Ljava/util/function/BiFunction;
-Ljava/util/concurrent/ConcurrentHashMap$ForEachTransformedValueTask;-><init>(Ljava/util/concurrent/ConcurrentHashMap$BulkTask;III[Ljava/util/concurrent/ConcurrentHashMap$Node;Ljava/util/function/Function;Ljava/util/function/Consumer;)V
-Ljava/util/concurrent/ConcurrentHashMap$ForEachTransformedValueTask;->action:Ljava/util/function/Consumer;
-Ljava/util/concurrent/ConcurrentHashMap$ForEachTransformedValueTask;->transformer:Ljava/util/function/Function;
-Ljava/util/concurrent/ConcurrentHashMap$ForEachValueTask;-><init>(Ljava/util/concurrent/ConcurrentHashMap$BulkTask;III[Ljava/util/concurrent/ConcurrentHashMap$Node;Ljava/util/function/Consumer;)V
-Ljava/util/concurrent/ConcurrentHashMap$ForEachValueTask;->action:Ljava/util/function/Consumer;
-Ljava/util/concurrent/ConcurrentHashMap$ForwardingNode;-><init>([Ljava/util/concurrent/ConcurrentHashMap$Node;)V
-Ljava/util/concurrent/ConcurrentHashMap$ForwardingNode;->find(ILjava/lang/Object;)Ljava/util/concurrent/ConcurrentHashMap$Node;
-Ljava/util/concurrent/ConcurrentHashMap$ForwardingNode;->nextTable:[Ljava/util/concurrent/ConcurrentHashMap$Node;
-Ljava/util/concurrent/ConcurrentHashMap$KeyIterator;-><init>([Ljava/util/concurrent/ConcurrentHashMap$Node;IIILjava/util/concurrent/ConcurrentHashMap;)V
-Ljava/util/concurrent/ConcurrentHashMap$KeySetView;-><init>(Ljava/util/concurrent/ConcurrentHashMap;Ljava/lang/Object;)V
-Ljava/util/concurrent/ConcurrentHashMap$KeySetView;->value:Ljava/lang/Object;
-Ljava/util/concurrent/ConcurrentHashMap$KeySpliterator;-><init>([Ljava/util/concurrent/ConcurrentHashMap$Node;IIIJ)V
-Ljava/util/concurrent/ConcurrentHashMap$KeySpliterator;->est:J
-Ljava/util/concurrent/ConcurrentHashMap$KeySpliterator;->forEachRemaining(Ljava/util/function/Consumer;)V
-Ljava/util/concurrent/ConcurrentHashMap$KeySpliterator;->tryAdvance(Ljava/util/function/Consumer;)Z
-Ljava/util/concurrent/ConcurrentHashMap$MapEntry;-><init>(Ljava/lang/Object;Ljava/lang/Object;Ljava/util/concurrent/ConcurrentHashMap;)V
-Ljava/util/concurrent/ConcurrentHashMap$MapEntry;->key:Ljava/lang/Object;
-Ljava/util/concurrent/ConcurrentHashMap$MapEntry;->map:Ljava/util/concurrent/ConcurrentHashMap;
-Ljava/util/concurrent/ConcurrentHashMap$MapEntry;->val:Ljava/lang/Object;
-Ljava/util/concurrent/ConcurrentHashMap$MapReduceEntriesTask;-><init>(Ljava/util/concurrent/ConcurrentHashMap$BulkTask;III[Ljava/util/concurrent/ConcurrentHashMap$Node;Ljava/util/concurrent/ConcurrentHashMap$MapReduceEntriesTask;Ljava/util/function/Function;Ljava/util/function/BiFunction;)V
-Ljava/util/concurrent/ConcurrentHashMap$MapReduceEntriesTask;->nextRight:Ljava/util/concurrent/ConcurrentHashMap$MapReduceEntriesTask;
-Ljava/util/concurrent/ConcurrentHashMap$MapReduceEntriesTask;->reducer:Ljava/util/function/BiFunction;
-Ljava/util/concurrent/ConcurrentHashMap$MapReduceEntriesTask;->result:Ljava/lang/Object;
-Ljava/util/concurrent/ConcurrentHashMap$MapReduceEntriesTask;->rights:Ljava/util/concurrent/ConcurrentHashMap$MapReduceEntriesTask;
-Ljava/util/concurrent/ConcurrentHashMap$MapReduceEntriesTask;->transformer:Ljava/util/function/Function;
-Ljava/util/concurrent/ConcurrentHashMap$MapReduceEntriesToDoubleTask;-><init>(Ljava/util/concurrent/ConcurrentHashMap$BulkTask;III[Ljava/util/concurrent/ConcurrentHashMap$Node;Ljava/util/concurrent/ConcurrentHashMap$MapReduceEntriesToDoubleTask;Ljava/util/function/ToDoubleFunction;DLjava/util/function/DoubleBinaryOperator;)V
-Ljava/util/concurrent/ConcurrentHashMap$MapReduceEntriesToDoubleTask;->basis:D
-Ljava/util/concurrent/ConcurrentHashMap$MapReduceEntriesToDoubleTask;->nextRight:Ljava/util/concurrent/ConcurrentHashMap$MapReduceEntriesToDoubleTask;
-Ljava/util/concurrent/ConcurrentHashMap$MapReduceEntriesToDoubleTask;->reducer:Ljava/util/function/DoubleBinaryOperator;
-Ljava/util/concurrent/ConcurrentHashMap$MapReduceEntriesToDoubleTask;->result:D
-Ljava/util/concurrent/ConcurrentHashMap$MapReduceEntriesToDoubleTask;->rights:Ljava/util/concurrent/ConcurrentHashMap$MapReduceEntriesToDoubleTask;
-Ljava/util/concurrent/ConcurrentHashMap$MapReduceEntriesToDoubleTask;->transformer:Ljava/util/function/ToDoubleFunction;
-Ljava/util/concurrent/ConcurrentHashMap$MapReduceEntriesToIntTask;-><init>(Ljava/util/concurrent/ConcurrentHashMap$BulkTask;III[Ljava/util/concurrent/ConcurrentHashMap$Node;Ljava/util/concurrent/ConcurrentHashMap$MapReduceEntriesToIntTask;Ljava/util/function/ToIntFunction;ILjava/util/function/IntBinaryOperator;)V
-Ljava/util/concurrent/ConcurrentHashMap$MapReduceEntriesToIntTask;->basis:I
-Ljava/util/concurrent/ConcurrentHashMap$MapReduceEntriesToIntTask;->nextRight:Ljava/util/concurrent/ConcurrentHashMap$MapReduceEntriesToIntTask;
-Ljava/util/concurrent/ConcurrentHashMap$MapReduceEntriesToIntTask;->reducer:Ljava/util/function/IntBinaryOperator;
-Ljava/util/concurrent/ConcurrentHashMap$MapReduceEntriesToIntTask;->result:I
-Ljava/util/concurrent/ConcurrentHashMap$MapReduceEntriesToIntTask;->rights:Ljava/util/concurrent/ConcurrentHashMap$MapReduceEntriesToIntTask;
-Ljava/util/concurrent/ConcurrentHashMap$MapReduceEntriesToIntTask;->transformer:Ljava/util/function/ToIntFunction;
-Ljava/util/concurrent/ConcurrentHashMap$MapReduceEntriesToLongTask;-><init>(Ljava/util/concurrent/ConcurrentHashMap$BulkTask;III[Ljava/util/concurrent/ConcurrentHashMap$Node;Ljava/util/concurrent/ConcurrentHashMap$MapReduceEntriesToLongTask;Ljava/util/function/ToLongFunction;JLjava/util/function/LongBinaryOperator;)V
-Ljava/util/concurrent/ConcurrentHashMap$MapReduceEntriesToLongTask;->basis:J
-Ljava/util/concurrent/ConcurrentHashMap$MapReduceEntriesToLongTask;->nextRight:Ljava/util/concurrent/ConcurrentHashMap$MapReduceEntriesToLongTask;
-Ljava/util/concurrent/ConcurrentHashMap$MapReduceEntriesToLongTask;->reducer:Ljava/util/function/LongBinaryOperator;
-Ljava/util/concurrent/ConcurrentHashMap$MapReduceEntriesToLongTask;->result:J
-Ljava/util/concurrent/ConcurrentHashMap$MapReduceEntriesToLongTask;->rights:Ljava/util/concurrent/ConcurrentHashMap$MapReduceEntriesToLongTask;
-Ljava/util/concurrent/ConcurrentHashMap$MapReduceEntriesToLongTask;->transformer:Ljava/util/function/ToLongFunction;
-Ljava/util/concurrent/ConcurrentHashMap$MapReduceKeysTask;-><init>(Ljava/util/concurrent/ConcurrentHashMap$BulkTask;III[Ljava/util/concurrent/ConcurrentHashMap$Node;Ljava/util/concurrent/ConcurrentHashMap$MapReduceKeysTask;Ljava/util/function/Function;Ljava/util/function/BiFunction;)V
-Ljava/util/concurrent/ConcurrentHashMap$MapReduceKeysTask;->nextRight:Ljava/util/concurrent/ConcurrentHashMap$MapReduceKeysTask;
-Ljava/util/concurrent/ConcurrentHashMap$MapReduceKeysTask;->reducer:Ljava/util/function/BiFunction;
-Ljava/util/concurrent/ConcurrentHashMap$MapReduceKeysTask;->result:Ljava/lang/Object;
-Ljava/util/concurrent/ConcurrentHashMap$MapReduceKeysTask;->rights:Ljava/util/concurrent/ConcurrentHashMap$MapReduceKeysTask;
-Ljava/util/concurrent/ConcurrentHashMap$MapReduceKeysTask;->transformer:Ljava/util/function/Function;
-Ljava/util/concurrent/ConcurrentHashMap$MapReduceKeysToDoubleTask;-><init>(Ljava/util/concurrent/ConcurrentHashMap$BulkTask;III[Ljava/util/concurrent/ConcurrentHashMap$Node;Ljava/util/concurrent/ConcurrentHashMap$MapReduceKeysToDoubleTask;Ljava/util/function/ToDoubleFunction;DLjava/util/function/DoubleBinaryOperator;)V
-Ljava/util/concurrent/ConcurrentHashMap$MapReduceKeysToDoubleTask;->basis:D
-Ljava/util/concurrent/ConcurrentHashMap$MapReduceKeysToDoubleTask;->nextRight:Ljava/util/concurrent/ConcurrentHashMap$MapReduceKeysToDoubleTask;
-Ljava/util/concurrent/ConcurrentHashMap$MapReduceKeysToDoubleTask;->reducer:Ljava/util/function/DoubleBinaryOperator;
-Ljava/util/concurrent/ConcurrentHashMap$MapReduceKeysToDoubleTask;->result:D
-Ljava/util/concurrent/ConcurrentHashMap$MapReduceKeysToDoubleTask;->rights:Ljava/util/concurrent/ConcurrentHashMap$MapReduceKeysToDoubleTask;
-Ljava/util/concurrent/ConcurrentHashMap$MapReduceKeysToDoubleTask;->transformer:Ljava/util/function/ToDoubleFunction;
-Ljava/util/concurrent/ConcurrentHashMap$MapReduceKeysToIntTask;-><init>(Ljava/util/concurrent/ConcurrentHashMap$BulkTask;III[Ljava/util/concurrent/ConcurrentHashMap$Node;Ljava/util/concurrent/ConcurrentHashMap$MapReduceKeysToIntTask;Ljava/util/function/ToIntFunction;ILjava/util/function/IntBinaryOperator;)V
-Ljava/util/concurrent/ConcurrentHashMap$MapReduceKeysToIntTask;->basis:I
-Ljava/util/concurrent/ConcurrentHashMap$MapReduceKeysToIntTask;->nextRight:Ljava/util/concurrent/ConcurrentHashMap$MapReduceKeysToIntTask;
-Ljava/util/concurrent/ConcurrentHashMap$MapReduceKeysToIntTask;->reducer:Ljava/util/function/IntBinaryOperator;
-Ljava/util/concurrent/ConcurrentHashMap$MapReduceKeysToIntTask;->result:I
-Ljava/util/concurrent/ConcurrentHashMap$MapReduceKeysToIntTask;->rights:Ljava/util/concurrent/ConcurrentHashMap$MapReduceKeysToIntTask;
-Ljava/util/concurrent/ConcurrentHashMap$MapReduceKeysToIntTask;->transformer:Ljava/util/function/ToIntFunction;
-Ljava/util/concurrent/ConcurrentHashMap$MapReduceKeysToLongTask;-><init>(Ljava/util/concurrent/ConcurrentHashMap$BulkTask;III[Ljava/util/concurrent/ConcurrentHashMap$Node;Ljava/util/concurrent/ConcurrentHashMap$MapReduceKeysToLongTask;Ljava/util/function/ToLongFunction;JLjava/util/function/LongBinaryOperator;)V
-Ljava/util/concurrent/ConcurrentHashMap$MapReduceKeysToLongTask;->basis:J
-Ljava/util/concurrent/ConcurrentHashMap$MapReduceKeysToLongTask;->nextRight:Ljava/util/concurrent/ConcurrentHashMap$MapReduceKeysToLongTask;
-Ljava/util/concurrent/ConcurrentHashMap$MapReduceKeysToLongTask;->reducer:Ljava/util/function/LongBinaryOperator;
-Ljava/util/concurrent/ConcurrentHashMap$MapReduceKeysToLongTask;->result:J
-Ljava/util/concurrent/ConcurrentHashMap$MapReduceKeysToLongTask;->rights:Ljava/util/concurrent/ConcurrentHashMap$MapReduceKeysToLongTask;
-Ljava/util/concurrent/ConcurrentHashMap$MapReduceKeysToLongTask;->transformer:Ljava/util/function/ToLongFunction;
-Ljava/util/concurrent/ConcurrentHashMap$MapReduceMappingsTask;-><init>(Ljava/util/concurrent/ConcurrentHashMap$BulkTask;III[Ljava/util/concurrent/ConcurrentHashMap$Node;Ljava/util/concurrent/ConcurrentHashMap$MapReduceMappingsTask;Ljava/util/function/BiFunction;Ljava/util/function/BiFunction;)V
-Ljava/util/concurrent/ConcurrentHashMap$MapReduceMappingsTask;->nextRight:Ljava/util/concurrent/ConcurrentHashMap$MapReduceMappingsTask;
-Ljava/util/concurrent/ConcurrentHashMap$MapReduceMappingsTask;->reducer:Ljava/util/function/BiFunction;
-Ljava/util/concurrent/ConcurrentHashMap$MapReduceMappingsTask;->result:Ljava/lang/Object;
-Ljava/util/concurrent/ConcurrentHashMap$MapReduceMappingsTask;->rights:Ljava/util/concurrent/ConcurrentHashMap$MapReduceMappingsTask;
-Ljava/util/concurrent/ConcurrentHashMap$MapReduceMappingsTask;->transformer:Ljava/util/function/BiFunction;
-Ljava/util/concurrent/ConcurrentHashMap$MapReduceMappingsToDoubleTask;-><init>(Ljava/util/concurrent/ConcurrentHashMap$BulkTask;III[Ljava/util/concurrent/ConcurrentHashMap$Node;Ljava/util/concurrent/ConcurrentHashMap$MapReduceMappingsToDoubleTask;Ljava/util/function/ToDoubleBiFunction;DLjava/util/function/DoubleBinaryOperator;)V
-Ljava/util/concurrent/ConcurrentHashMap$MapReduceMappingsToDoubleTask;->basis:D
-Ljava/util/concurrent/ConcurrentHashMap$MapReduceMappingsToDoubleTask;->nextRight:Ljava/util/concurrent/ConcurrentHashMap$MapReduceMappingsToDoubleTask;
-Ljava/util/concurrent/ConcurrentHashMap$MapReduceMappingsToDoubleTask;->reducer:Ljava/util/function/DoubleBinaryOperator;
-Ljava/util/concurrent/ConcurrentHashMap$MapReduceMappingsToDoubleTask;->result:D
-Ljava/util/concurrent/ConcurrentHashMap$MapReduceMappingsToDoubleTask;->rights:Ljava/util/concurrent/ConcurrentHashMap$MapReduceMappingsToDoubleTask;
-Ljava/util/concurrent/ConcurrentHashMap$MapReduceMappingsToDoubleTask;->transformer:Ljava/util/function/ToDoubleBiFunction;
-Ljava/util/concurrent/ConcurrentHashMap$MapReduceMappingsToIntTask;-><init>(Ljava/util/concurrent/ConcurrentHashMap$BulkTask;III[Ljava/util/concurrent/ConcurrentHashMap$Node;Ljava/util/concurrent/ConcurrentHashMap$MapReduceMappingsToIntTask;Ljava/util/function/ToIntBiFunction;ILjava/util/function/IntBinaryOperator;)V
-Ljava/util/concurrent/ConcurrentHashMap$MapReduceMappingsToIntTask;->basis:I
-Ljava/util/concurrent/ConcurrentHashMap$MapReduceMappingsToIntTask;->nextRight:Ljava/util/concurrent/ConcurrentHashMap$MapReduceMappingsToIntTask;
-Ljava/util/concurrent/ConcurrentHashMap$MapReduceMappingsToIntTask;->reducer:Ljava/util/function/IntBinaryOperator;
-Ljava/util/concurrent/ConcurrentHashMap$MapReduceMappingsToIntTask;->result:I
-Ljava/util/concurrent/ConcurrentHashMap$MapReduceMappingsToIntTask;->rights:Ljava/util/concurrent/ConcurrentHashMap$MapReduceMappingsToIntTask;
-Ljava/util/concurrent/ConcurrentHashMap$MapReduceMappingsToIntTask;->transformer:Ljava/util/function/ToIntBiFunction;
-Ljava/util/concurrent/ConcurrentHashMap$MapReduceMappingsToLongTask;-><init>(Ljava/util/concurrent/ConcurrentHashMap$BulkTask;III[Ljava/util/concurrent/ConcurrentHashMap$Node;Ljava/util/concurrent/ConcurrentHashMap$MapReduceMappingsToLongTask;Ljava/util/function/ToLongBiFunction;JLjava/util/function/LongBinaryOperator;)V
-Ljava/util/concurrent/ConcurrentHashMap$MapReduceMappingsToLongTask;->basis:J
-Ljava/util/concurrent/ConcurrentHashMap$MapReduceMappingsToLongTask;->nextRight:Ljava/util/concurrent/ConcurrentHashMap$MapReduceMappingsToLongTask;
-Ljava/util/concurrent/ConcurrentHashMap$MapReduceMappingsToLongTask;->reducer:Ljava/util/function/LongBinaryOperator;
-Ljava/util/concurrent/ConcurrentHashMap$MapReduceMappingsToLongTask;->result:J
-Ljava/util/concurrent/ConcurrentHashMap$MapReduceMappingsToLongTask;->rights:Ljava/util/concurrent/ConcurrentHashMap$MapReduceMappingsToLongTask;
-Ljava/util/concurrent/ConcurrentHashMap$MapReduceMappingsToLongTask;->transformer:Ljava/util/function/ToLongBiFunction;
-Ljava/util/concurrent/ConcurrentHashMap$MapReduceValuesTask;-><init>(Ljava/util/concurrent/ConcurrentHashMap$BulkTask;III[Ljava/util/concurrent/ConcurrentHashMap$Node;Ljava/util/concurrent/ConcurrentHashMap$MapReduceValuesTask;Ljava/util/function/Function;Ljava/util/function/BiFunction;)V
-Ljava/util/concurrent/ConcurrentHashMap$MapReduceValuesTask;->nextRight:Ljava/util/concurrent/ConcurrentHashMap$MapReduceValuesTask;
-Ljava/util/concurrent/ConcurrentHashMap$MapReduceValuesTask;->reducer:Ljava/util/function/BiFunction;
-Ljava/util/concurrent/ConcurrentHashMap$MapReduceValuesTask;->result:Ljava/lang/Object;
-Ljava/util/concurrent/ConcurrentHashMap$MapReduceValuesTask;->rights:Ljava/util/concurrent/ConcurrentHashMap$MapReduceValuesTask;
-Ljava/util/concurrent/ConcurrentHashMap$MapReduceValuesTask;->transformer:Ljava/util/function/Function;
-Ljava/util/concurrent/ConcurrentHashMap$MapReduceValuesToDoubleTask;-><init>(Ljava/util/concurrent/ConcurrentHashMap$BulkTask;III[Ljava/util/concurrent/ConcurrentHashMap$Node;Ljava/util/concurrent/ConcurrentHashMap$MapReduceValuesToDoubleTask;Ljava/util/function/ToDoubleFunction;DLjava/util/function/DoubleBinaryOperator;)V
-Ljava/util/concurrent/ConcurrentHashMap$MapReduceValuesToDoubleTask;->basis:D
-Ljava/util/concurrent/ConcurrentHashMap$MapReduceValuesToDoubleTask;->nextRight:Ljava/util/concurrent/ConcurrentHashMap$MapReduceValuesToDoubleTask;
-Ljava/util/concurrent/ConcurrentHashMap$MapReduceValuesToDoubleTask;->reducer:Ljava/util/function/DoubleBinaryOperator;
-Ljava/util/concurrent/ConcurrentHashMap$MapReduceValuesToDoubleTask;->result:D
-Ljava/util/concurrent/ConcurrentHashMap$MapReduceValuesToDoubleTask;->rights:Ljava/util/concurrent/ConcurrentHashMap$MapReduceValuesToDoubleTask;
-Ljava/util/concurrent/ConcurrentHashMap$MapReduceValuesToDoubleTask;->transformer:Ljava/util/function/ToDoubleFunction;
-Ljava/util/concurrent/ConcurrentHashMap$MapReduceValuesToIntTask;-><init>(Ljava/util/concurrent/ConcurrentHashMap$BulkTask;III[Ljava/util/concurrent/ConcurrentHashMap$Node;Ljava/util/concurrent/ConcurrentHashMap$MapReduceValuesToIntTask;Ljava/util/function/ToIntFunction;ILjava/util/function/IntBinaryOperator;)V
-Ljava/util/concurrent/ConcurrentHashMap$MapReduceValuesToIntTask;->basis:I
-Ljava/util/concurrent/ConcurrentHashMap$MapReduceValuesToIntTask;->nextRight:Ljava/util/concurrent/ConcurrentHashMap$MapReduceValuesToIntTask;
-Ljava/util/concurrent/ConcurrentHashMap$MapReduceValuesToIntTask;->reducer:Ljava/util/function/IntBinaryOperator;
-Ljava/util/concurrent/ConcurrentHashMap$MapReduceValuesToIntTask;->result:I
-Ljava/util/concurrent/ConcurrentHashMap$MapReduceValuesToIntTask;->rights:Ljava/util/concurrent/ConcurrentHashMap$MapReduceValuesToIntTask;
-Ljava/util/concurrent/ConcurrentHashMap$MapReduceValuesToIntTask;->transformer:Ljava/util/function/ToIntFunction;
-Ljava/util/concurrent/ConcurrentHashMap$MapReduceValuesToLongTask;-><init>(Ljava/util/concurrent/ConcurrentHashMap$BulkTask;III[Ljava/util/concurrent/ConcurrentHashMap$Node;Ljava/util/concurrent/ConcurrentHashMap$MapReduceValuesToLongTask;Ljava/util/function/ToLongFunction;JLjava/util/function/LongBinaryOperator;)V
-Ljava/util/concurrent/ConcurrentHashMap$MapReduceValuesToLongTask;->basis:J
-Ljava/util/concurrent/ConcurrentHashMap$MapReduceValuesToLongTask;->nextRight:Ljava/util/concurrent/ConcurrentHashMap$MapReduceValuesToLongTask;
-Ljava/util/concurrent/ConcurrentHashMap$MapReduceValuesToLongTask;->reducer:Ljava/util/function/LongBinaryOperator;
-Ljava/util/concurrent/ConcurrentHashMap$MapReduceValuesToLongTask;->result:J
-Ljava/util/concurrent/ConcurrentHashMap$MapReduceValuesToLongTask;->rights:Ljava/util/concurrent/ConcurrentHashMap$MapReduceValuesToLongTask;
-Ljava/util/concurrent/ConcurrentHashMap$MapReduceValuesToLongTask;->transformer:Ljava/util/function/ToLongFunction;
-Ljava/util/concurrent/ConcurrentHashMap$Node;-><init>(ILjava/lang/Object;Ljava/lang/Object;Ljava/util/concurrent/ConcurrentHashMap$Node;)V
-Ljava/util/concurrent/ConcurrentHashMap$Node;->find(ILjava/lang/Object;)Ljava/util/concurrent/ConcurrentHashMap$Node;
-Ljava/util/concurrent/ConcurrentHashMap$Node;->hash:I
-Ljava/util/concurrent/ConcurrentHashMap$Node;->key:Ljava/lang/Object;
-Ljava/util/concurrent/ConcurrentHashMap$Node;->next:Ljava/util/concurrent/ConcurrentHashMap$Node;
-Ljava/util/concurrent/ConcurrentHashMap$Node;->val:Ljava/lang/Object;
-Ljava/util/concurrent/ConcurrentHashMap$ReduceEntriesTask;-><init>(Ljava/util/concurrent/ConcurrentHashMap$BulkTask;III[Ljava/util/concurrent/ConcurrentHashMap$Node;Ljava/util/concurrent/ConcurrentHashMap$ReduceEntriesTask;Ljava/util/function/BiFunction;)V
-Ljava/util/concurrent/ConcurrentHashMap$ReduceEntriesTask;->nextRight:Ljava/util/concurrent/ConcurrentHashMap$ReduceEntriesTask;
-Ljava/util/concurrent/ConcurrentHashMap$ReduceEntriesTask;->reducer:Ljava/util/function/BiFunction;
-Ljava/util/concurrent/ConcurrentHashMap$ReduceEntriesTask;->result:Ljava/util/Map$Entry;
-Ljava/util/concurrent/ConcurrentHashMap$ReduceEntriesTask;->rights:Ljava/util/concurrent/ConcurrentHashMap$ReduceEntriesTask;
-Ljava/util/concurrent/ConcurrentHashMap$ReduceKeysTask;-><init>(Ljava/util/concurrent/ConcurrentHashMap$BulkTask;III[Ljava/util/concurrent/ConcurrentHashMap$Node;Ljava/util/concurrent/ConcurrentHashMap$ReduceKeysTask;Ljava/util/function/BiFunction;)V
-Ljava/util/concurrent/ConcurrentHashMap$ReduceKeysTask;->nextRight:Ljava/util/concurrent/ConcurrentHashMap$ReduceKeysTask;
-Ljava/util/concurrent/ConcurrentHashMap$ReduceKeysTask;->reducer:Ljava/util/function/BiFunction;
-Ljava/util/concurrent/ConcurrentHashMap$ReduceKeysTask;->result:Ljava/lang/Object;
-Ljava/util/concurrent/ConcurrentHashMap$ReduceKeysTask;->rights:Ljava/util/concurrent/ConcurrentHashMap$ReduceKeysTask;
-Ljava/util/concurrent/ConcurrentHashMap$ReduceValuesTask;-><init>(Ljava/util/concurrent/ConcurrentHashMap$BulkTask;III[Ljava/util/concurrent/ConcurrentHashMap$Node;Ljava/util/concurrent/ConcurrentHashMap$ReduceValuesTask;Ljava/util/function/BiFunction;)V
-Ljava/util/concurrent/ConcurrentHashMap$ReduceValuesTask;->nextRight:Ljava/util/concurrent/ConcurrentHashMap$ReduceValuesTask;
-Ljava/util/concurrent/ConcurrentHashMap$ReduceValuesTask;->reducer:Ljava/util/function/BiFunction;
-Ljava/util/concurrent/ConcurrentHashMap$ReduceValuesTask;->result:Ljava/lang/Object;
-Ljava/util/concurrent/ConcurrentHashMap$ReduceValuesTask;->rights:Ljava/util/concurrent/ConcurrentHashMap$ReduceValuesTask;
-Ljava/util/concurrent/ConcurrentHashMap$ReservationNode;-><init>()V
-Ljava/util/concurrent/ConcurrentHashMap$ReservationNode;->find(ILjava/lang/Object;)Ljava/util/concurrent/ConcurrentHashMap$Node;
-Ljava/util/concurrent/ConcurrentHashMap$SearchEntriesTask;-><init>(Ljava/util/concurrent/ConcurrentHashMap$BulkTask;III[Ljava/util/concurrent/ConcurrentHashMap$Node;Ljava/util/function/Function;Ljava/util/concurrent/atomic/AtomicReference;)V
-Ljava/util/concurrent/ConcurrentHashMap$SearchEntriesTask;->result:Ljava/util/concurrent/atomic/AtomicReference;
-Ljava/util/concurrent/ConcurrentHashMap$SearchEntriesTask;->searchFunction:Ljava/util/function/Function;
-Ljava/util/concurrent/ConcurrentHashMap$SearchKeysTask;-><init>(Ljava/util/concurrent/ConcurrentHashMap$BulkTask;III[Ljava/util/concurrent/ConcurrentHashMap$Node;Ljava/util/function/Function;Ljava/util/concurrent/atomic/AtomicReference;)V
-Ljava/util/concurrent/ConcurrentHashMap$SearchKeysTask;->result:Ljava/util/concurrent/atomic/AtomicReference;
-Ljava/util/concurrent/ConcurrentHashMap$SearchKeysTask;->searchFunction:Ljava/util/function/Function;
-Ljava/util/concurrent/ConcurrentHashMap$SearchMappingsTask;-><init>(Ljava/util/concurrent/ConcurrentHashMap$BulkTask;III[Ljava/util/concurrent/ConcurrentHashMap$Node;Ljava/util/function/BiFunction;Ljava/util/concurrent/atomic/AtomicReference;)V
-Ljava/util/concurrent/ConcurrentHashMap$SearchMappingsTask;->result:Ljava/util/concurrent/atomic/AtomicReference;
-Ljava/util/concurrent/ConcurrentHashMap$SearchMappingsTask;->searchFunction:Ljava/util/function/BiFunction;
-Ljava/util/concurrent/ConcurrentHashMap$SearchValuesTask;-><init>(Ljava/util/concurrent/ConcurrentHashMap$BulkTask;III[Ljava/util/concurrent/ConcurrentHashMap$Node;Ljava/util/function/Function;Ljava/util/concurrent/atomic/AtomicReference;)V
-Ljava/util/concurrent/ConcurrentHashMap$SearchValuesTask;->result:Ljava/util/concurrent/atomic/AtomicReference;
-Ljava/util/concurrent/ConcurrentHashMap$SearchValuesTask;->searchFunction:Ljava/util/function/Function;
-Ljava/util/concurrent/ConcurrentHashMap$Segment;-><init>(F)V
-Ljava/util/concurrent/ConcurrentHashMap$Segment;->loadFactor:F
-Ljava/util/concurrent/ConcurrentHashMap$TableStack;-><init>()V
-Ljava/util/concurrent/ConcurrentHashMap$TableStack;->index:I
-Ljava/util/concurrent/ConcurrentHashMap$TableStack;->length:I
-Ljava/util/concurrent/ConcurrentHashMap$TableStack;->next:Ljava/util/concurrent/ConcurrentHashMap$TableStack;
-Ljava/util/concurrent/ConcurrentHashMap$TableStack;->tab:[Ljava/util/concurrent/ConcurrentHashMap$Node;
-Ljava/util/concurrent/ConcurrentHashMap$Traverser;-><init>([Ljava/util/concurrent/ConcurrentHashMap$Node;III)V
-Ljava/util/concurrent/ConcurrentHashMap$Traverser;->advance()Ljava/util/concurrent/ConcurrentHashMap$Node;
-Ljava/util/concurrent/ConcurrentHashMap$Traverser;->baseIndex:I
-Ljava/util/concurrent/ConcurrentHashMap$Traverser;->baseLimit:I
-Ljava/util/concurrent/ConcurrentHashMap$Traverser;->baseSize:I
-Ljava/util/concurrent/ConcurrentHashMap$Traverser;->index:I
-Ljava/util/concurrent/ConcurrentHashMap$Traverser;->next:Ljava/util/concurrent/ConcurrentHashMap$Node;
-Ljava/util/concurrent/ConcurrentHashMap$Traverser;->pushState([Ljava/util/concurrent/ConcurrentHashMap$Node;II)V
-Ljava/util/concurrent/ConcurrentHashMap$Traverser;->recoverState(I)V
-Ljava/util/concurrent/ConcurrentHashMap$Traverser;->spare:Ljava/util/concurrent/ConcurrentHashMap$TableStack;
-Ljava/util/concurrent/ConcurrentHashMap$Traverser;->stack:Ljava/util/concurrent/ConcurrentHashMap$TableStack;
-Ljava/util/concurrent/ConcurrentHashMap$Traverser;->tab:[Ljava/util/concurrent/ConcurrentHashMap$Node;
-Ljava/util/concurrent/ConcurrentHashMap$TreeBin;-><init>(Ljava/util/concurrent/ConcurrentHashMap$TreeNode;)V
-Ljava/util/concurrent/ConcurrentHashMap$TreeBin;->balanceDeletion(Ljava/util/concurrent/ConcurrentHashMap$TreeNode;Ljava/util/concurrent/ConcurrentHashMap$TreeNode;)Ljava/util/concurrent/ConcurrentHashMap$TreeNode;
-Ljava/util/concurrent/ConcurrentHashMap$TreeBin;->balanceInsertion(Ljava/util/concurrent/ConcurrentHashMap$TreeNode;Ljava/util/concurrent/ConcurrentHashMap$TreeNode;)Ljava/util/concurrent/ConcurrentHashMap$TreeNode;
-Ljava/util/concurrent/ConcurrentHashMap$TreeBin;->checkInvariants(Ljava/util/concurrent/ConcurrentHashMap$TreeNode;)Z
-Ljava/util/concurrent/ConcurrentHashMap$TreeBin;->contendedLock()V
-Ljava/util/concurrent/ConcurrentHashMap$TreeBin;->find(ILjava/lang/Object;)Ljava/util/concurrent/ConcurrentHashMap$Node;
-Ljava/util/concurrent/ConcurrentHashMap$TreeBin;->first:Ljava/util/concurrent/ConcurrentHashMap$TreeNode;
-Ljava/util/concurrent/ConcurrentHashMap$TreeBin;->lockRoot()V
-Ljava/util/concurrent/ConcurrentHashMap$TreeBin;->lockState:I
-Ljava/util/concurrent/ConcurrentHashMap$TreeBin;->LOCKSTATE:J
-Ljava/util/concurrent/ConcurrentHashMap$TreeBin;->putTreeVal(ILjava/lang/Object;Ljava/lang/Object;)Ljava/util/concurrent/ConcurrentHashMap$TreeNode;
-Ljava/util/concurrent/ConcurrentHashMap$TreeBin;->READER:I
-Ljava/util/concurrent/ConcurrentHashMap$TreeBin;->removeTreeNode(Ljava/util/concurrent/ConcurrentHashMap$TreeNode;)Z
-Ljava/util/concurrent/ConcurrentHashMap$TreeBin;->root:Ljava/util/concurrent/ConcurrentHashMap$TreeNode;
-Ljava/util/concurrent/ConcurrentHashMap$TreeBin;->rotateLeft(Ljava/util/concurrent/ConcurrentHashMap$TreeNode;Ljava/util/concurrent/ConcurrentHashMap$TreeNode;)Ljava/util/concurrent/ConcurrentHashMap$TreeNode;
-Ljava/util/concurrent/ConcurrentHashMap$TreeBin;->rotateRight(Ljava/util/concurrent/ConcurrentHashMap$TreeNode;Ljava/util/concurrent/ConcurrentHashMap$TreeNode;)Ljava/util/concurrent/ConcurrentHashMap$TreeNode;
-Ljava/util/concurrent/ConcurrentHashMap$TreeBin;->tieBreakOrder(Ljava/lang/Object;Ljava/lang/Object;)I
-Ljava/util/concurrent/ConcurrentHashMap$TreeBin;->U:Lsun/misc/Unsafe;
-Ljava/util/concurrent/ConcurrentHashMap$TreeBin;->unlockRoot()V
-Ljava/util/concurrent/ConcurrentHashMap$TreeBin;->WAITER:I
-Ljava/util/concurrent/ConcurrentHashMap$TreeBin;->waiter:Ljava/lang/Thread;
-Ljava/util/concurrent/ConcurrentHashMap$TreeBin;->WRITER:I
-Ljava/util/concurrent/ConcurrentHashMap$TreeNode;-><init>(ILjava/lang/Object;Ljava/lang/Object;Ljava/util/concurrent/ConcurrentHashMap$Node;Ljava/util/concurrent/ConcurrentHashMap$TreeNode;)V
-Ljava/util/concurrent/ConcurrentHashMap$TreeNode;->find(ILjava/lang/Object;)Ljava/util/concurrent/ConcurrentHashMap$Node;
-Ljava/util/concurrent/ConcurrentHashMap$TreeNode;->findTreeNode(ILjava/lang/Object;Ljava/lang/Class;)Ljava/util/concurrent/ConcurrentHashMap$TreeNode;
-Ljava/util/concurrent/ConcurrentHashMap$TreeNode;->left:Ljava/util/concurrent/ConcurrentHashMap$TreeNode;
-Ljava/util/concurrent/ConcurrentHashMap$TreeNode;->parent:Ljava/util/concurrent/ConcurrentHashMap$TreeNode;
-Ljava/util/concurrent/ConcurrentHashMap$TreeNode;->prev:Ljava/util/concurrent/ConcurrentHashMap$TreeNode;
-Ljava/util/concurrent/ConcurrentHashMap$TreeNode;->red:Z
-Ljava/util/concurrent/ConcurrentHashMap$TreeNode;->right:Ljava/util/concurrent/ConcurrentHashMap$TreeNode;
-Ljava/util/concurrent/ConcurrentHashMap$ValueIterator;-><init>([Ljava/util/concurrent/ConcurrentHashMap$Node;IIILjava/util/concurrent/ConcurrentHashMap;)V
-Ljava/util/concurrent/ConcurrentHashMap$ValueSpliterator;-><init>([Ljava/util/concurrent/ConcurrentHashMap$Node;IIIJ)V
-Ljava/util/concurrent/ConcurrentHashMap$ValueSpliterator;->est:J
-Ljava/util/concurrent/ConcurrentHashMap$ValueSpliterator;->forEachRemaining(Ljava/util/function/Consumer;)V
-Ljava/util/concurrent/ConcurrentHashMap$ValueSpliterator;->tryAdvance(Ljava/util/function/Consumer;)Z
-Ljava/util/concurrent/ConcurrentHashMap$ValuesView;-><init>(Ljava/util/concurrent/ConcurrentHashMap;)V
-Ljava/util/concurrent/ConcurrentHashMap$ValuesView;->add(Ljava/lang/Object;)Z
-Ljava/util/concurrent/ConcurrentHashMap$ValuesView;->addAll(Ljava/util/Collection;)Z
-Ljava/util/concurrent/ConcurrentHashMap$ValuesView;->forEach(Ljava/util/function/Consumer;)V
-Ljava/util/concurrent/ConcurrentHashMap$ValuesView;->removeIf(Ljava/util/function/Predicate;)Z
-Ljava/util/concurrent/ConcurrentHashMap;->ABASE:I
-Ljava/util/concurrent/ConcurrentHashMap;->addCount(JI)V
-Ljava/util/concurrent/ConcurrentHashMap;->ASHIFT:I
-Ljava/util/concurrent/ConcurrentHashMap;->BASECOUNT:J
-Ljava/util/concurrent/ConcurrentHashMap;->baseCount:J
-Ljava/util/concurrent/ConcurrentHashMap;->batchFor(J)I
-Ljava/util/concurrent/ConcurrentHashMap;->casTabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;ILjava/util/concurrent/ConcurrentHashMap$Node;Ljava/util/concurrent/ConcurrentHashMap$Node;)Z
-Ljava/util/concurrent/ConcurrentHashMap;->cellsBusy:I
-Ljava/util/concurrent/ConcurrentHashMap;->CELLSBUSY:J
-Ljava/util/concurrent/ConcurrentHashMap;->CELLVALUE:J
-Ljava/util/concurrent/ConcurrentHashMap;->comparableClassFor(Ljava/lang/Object;)Ljava/lang/Class;
-Ljava/util/concurrent/ConcurrentHashMap;->compareComparables(Ljava/lang/Class;Ljava/lang/Object;Ljava/lang/Object;)I
-Ljava/util/concurrent/ConcurrentHashMap;->counterCells:[Ljava/util/concurrent/ConcurrentHashMap$CounterCell;
-Ljava/util/concurrent/ConcurrentHashMap;->DEFAULT_CAPACITY:I
-Ljava/util/concurrent/ConcurrentHashMap;->DEFAULT_CONCURRENCY_LEVEL:I
-Ljava/util/concurrent/ConcurrentHashMap;->entrySet:Ljava/util/concurrent/ConcurrentHashMap$EntrySetView;
-Ljava/util/concurrent/ConcurrentHashMap;->fullAddCount(JZ)V
-Ljava/util/concurrent/ConcurrentHashMap;->HASH_BITS:I
-Ljava/util/concurrent/ConcurrentHashMap;->helpTransfer([Ljava/util/concurrent/ConcurrentHashMap$Node;Ljava/util/concurrent/ConcurrentHashMap$Node;)[Ljava/util/concurrent/ConcurrentHashMap$Node;
-Ljava/util/concurrent/ConcurrentHashMap;->initTable()[Ljava/util/concurrent/ConcurrentHashMap$Node;
-Ljava/util/concurrent/ConcurrentHashMap;->keySet:Ljava/util/concurrent/ConcurrentHashMap$KeySetView;
-Ljava/util/concurrent/ConcurrentHashMap;->LOAD_FACTOR:F
-Ljava/util/concurrent/ConcurrentHashMap;->MAXIMUM_CAPACITY:I
-Ljava/util/concurrent/ConcurrentHashMap;->MAX_ARRAY_SIZE:I
-Ljava/util/concurrent/ConcurrentHashMap;->MAX_RESIZERS:I
-Ljava/util/concurrent/ConcurrentHashMap;->MIN_TRANSFER_STRIDE:I
-Ljava/util/concurrent/ConcurrentHashMap;->MIN_TREEIFY_CAPACITY:I
-Ljava/util/concurrent/ConcurrentHashMap;->MOVED:I
-Ljava/util/concurrent/ConcurrentHashMap;->NCPU:I
-Ljava/util/concurrent/ConcurrentHashMap;->nextTable:[Ljava/util/concurrent/ConcurrentHashMap$Node;
-Ljava/util/concurrent/ConcurrentHashMap;->putVal(Ljava/lang/Object;Ljava/lang/Object;Z)Ljava/lang/Object;
-Ljava/util/concurrent/ConcurrentHashMap;->removeEntryIf(Ljava/util/function/Predicate;)Z
-Ljava/util/concurrent/ConcurrentHashMap;->removeValueIf(Ljava/util/function/Predicate;)Z
-Ljava/util/concurrent/ConcurrentHashMap;->replaceNode(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
-Ljava/util/concurrent/ConcurrentHashMap;->RESERVED:I
-Ljava/util/concurrent/ConcurrentHashMap;->resizeStamp(I)I
-Ljava/util/concurrent/ConcurrentHashMap;->RESIZE_STAMP_BITS:I
-Ljava/util/concurrent/ConcurrentHashMap;->RESIZE_STAMP_SHIFT:I
-Ljava/util/concurrent/ConcurrentHashMap;->setTabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;ILjava/util/concurrent/ConcurrentHashMap$Node;)V
-Ljava/util/concurrent/ConcurrentHashMap;->sizeCtl:I
-Ljava/util/concurrent/ConcurrentHashMap;->SIZECTL:J
-Ljava/util/concurrent/ConcurrentHashMap;->spread(I)I
-Ljava/util/concurrent/ConcurrentHashMap;->sumCount()J
-Ljava/util/concurrent/ConcurrentHashMap;->tabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;I)Ljava/util/concurrent/ConcurrentHashMap$Node;
-Ljava/util/concurrent/ConcurrentHashMap;->table:[Ljava/util/concurrent/ConcurrentHashMap$Node;
-Ljava/util/concurrent/ConcurrentHashMap;->tableSizeFor(I)I
-Ljava/util/concurrent/ConcurrentHashMap;->transfer([Ljava/util/concurrent/ConcurrentHashMap$Node;[Ljava/util/concurrent/ConcurrentHashMap$Node;)V
-Ljava/util/concurrent/ConcurrentHashMap;->transferIndex:I
-Ljava/util/concurrent/ConcurrentHashMap;->TRANSFERINDEX:J
-Ljava/util/concurrent/ConcurrentHashMap;->TREEBIN:I
-Ljava/util/concurrent/ConcurrentHashMap;->treeifyBin([Ljava/util/concurrent/ConcurrentHashMap$Node;I)V
-Ljava/util/concurrent/ConcurrentHashMap;->TREEIFY_THRESHOLD:I
-Ljava/util/concurrent/ConcurrentHashMap;->tryPresize(I)V
-Ljava/util/concurrent/ConcurrentHashMap;->U:Lsun/misc/Unsafe;
-Ljava/util/concurrent/ConcurrentHashMap;->untreeify(Ljava/util/concurrent/ConcurrentHashMap$Node;)Ljava/util/concurrent/ConcurrentHashMap$Node;
-Ljava/util/concurrent/ConcurrentHashMap;->UNTREEIFY_THRESHOLD:I
-Ljava/util/concurrent/ConcurrentHashMap;->values:Ljava/util/concurrent/ConcurrentHashMap$ValuesView;
-Ljava/util/concurrent/ConcurrentLinkedDeque$AbstractItr;->advance()V
-Ljava/util/concurrent/ConcurrentLinkedDeque$AbstractItr;->lastRet:Ljava/util/concurrent/ConcurrentLinkedDeque$Node;
-Ljava/util/concurrent/ConcurrentLinkedDeque$AbstractItr;->nextItem:Ljava/lang/Object;
-Ljava/util/concurrent/ConcurrentLinkedDeque$AbstractItr;->nextNode(Ljava/util/concurrent/ConcurrentLinkedDeque$Node;)Ljava/util/concurrent/ConcurrentLinkedDeque$Node;
-Ljava/util/concurrent/ConcurrentLinkedDeque$AbstractItr;->nextNode:Ljava/util/concurrent/ConcurrentLinkedDeque$Node;
-Ljava/util/concurrent/ConcurrentLinkedDeque$AbstractItr;->startNode()Ljava/util/concurrent/ConcurrentLinkedDeque$Node;
-Ljava/util/concurrent/ConcurrentLinkedDeque$CLDSpliterator;-><init>(Ljava/util/concurrent/ConcurrentLinkedDeque;)V
-Ljava/util/concurrent/ConcurrentLinkedDeque$CLDSpliterator;->batch:I
-Ljava/util/concurrent/ConcurrentLinkedDeque$CLDSpliterator;->current:Ljava/util/concurrent/ConcurrentLinkedDeque$Node;
-Ljava/util/concurrent/ConcurrentLinkedDeque$CLDSpliterator;->exhausted:Z
-Ljava/util/concurrent/ConcurrentLinkedDeque$CLDSpliterator;->forEachRemaining(Ljava/util/function/Consumer;)V
-Ljava/util/concurrent/ConcurrentLinkedDeque$CLDSpliterator;->MAX_BATCH:I
-Ljava/util/concurrent/ConcurrentLinkedDeque$CLDSpliterator;->queue:Ljava/util/concurrent/ConcurrentLinkedDeque;
-Ljava/util/concurrent/ConcurrentLinkedDeque$CLDSpliterator;->tryAdvance(Ljava/util/function/Consumer;)Z
-Ljava/util/concurrent/ConcurrentLinkedDeque$DescendingItr;->nextNode(Ljava/util/concurrent/ConcurrentLinkedDeque$Node;)Ljava/util/concurrent/ConcurrentLinkedDeque$Node;
-Ljava/util/concurrent/ConcurrentLinkedDeque$DescendingItr;->startNode()Ljava/util/concurrent/ConcurrentLinkedDeque$Node;
-Ljava/util/concurrent/ConcurrentLinkedDeque$Itr;->nextNode(Ljava/util/concurrent/ConcurrentLinkedDeque$Node;)Ljava/util/concurrent/ConcurrentLinkedDeque$Node;
-Ljava/util/concurrent/ConcurrentLinkedDeque$Itr;->startNode()Ljava/util/concurrent/ConcurrentLinkedDeque$Node;
-Ljava/util/concurrent/ConcurrentLinkedDeque$Node;-><init>()V
-Ljava/util/concurrent/ConcurrentLinkedDeque$Node;-><init>(Ljava/lang/Object;)V
-Ljava/util/concurrent/ConcurrentLinkedDeque$Node;->casItem(Ljava/lang/Object;Ljava/lang/Object;)Z
-Ljava/util/concurrent/ConcurrentLinkedDeque$Node;->casNext(Ljava/util/concurrent/ConcurrentLinkedDeque$Node;Ljava/util/concurrent/ConcurrentLinkedDeque$Node;)Z
-Ljava/util/concurrent/ConcurrentLinkedDeque$Node;->casPrev(Ljava/util/concurrent/ConcurrentLinkedDeque$Node;Ljava/util/concurrent/ConcurrentLinkedDeque$Node;)Z
-Ljava/util/concurrent/ConcurrentLinkedDeque$Node;->ITEM:J
-Ljava/util/concurrent/ConcurrentLinkedDeque$Node;->item:Ljava/lang/Object;
-Ljava/util/concurrent/ConcurrentLinkedDeque$Node;->lazySetNext(Ljava/util/concurrent/ConcurrentLinkedDeque$Node;)V
-Ljava/util/concurrent/ConcurrentLinkedDeque$Node;->lazySetPrev(Ljava/util/concurrent/ConcurrentLinkedDeque$Node;)V
-Ljava/util/concurrent/ConcurrentLinkedDeque$Node;->NEXT:J
-Ljava/util/concurrent/ConcurrentLinkedDeque$Node;->next:Ljava/util/concurrent/ConcurrentLinkedDeque$Node;
-Ljava/util/concurrent/ConcurrentLinkedDeque$Node;->PREV:J
-Ljava/util/concurrent/ConcurrentLinkedDeque$Node;->prev:Ljava/util/concurrent/ConcurrentLinkedDeque$Node;
-Ljava/util/concurrent/ConcurrentLinkedDeque$Node;->U:Lsun/misc/Unsafe;
-Ljava/util/concurrent/ConcurrentLinkedDeque;->casHead(Ljava/util/concurrent/ConcurrentLinkedDeque$Node;Ljava/util/concurrent/ConcurrentLinkedDeque$Node;)Z
-Ljava/util/concurrent/ConcurrentLinkedDeque;->casTail(Ljava/util/concurrent/ConcurrentLinkedDeque$Node;Ljava/util/concurrent/ConcurrentLinkedDeque$Node;)Z
-Ljava/util/concurrent/ConcurrentLinkedDeque;->first()Ljava/util/concurrent/ConcurrentLinkedDeque$Node;
-Ljava/util/concurrent/ConcurrentLinkedDeque;->HEAD:J
-Ljava/util/concurrent/ConcurrentLinkedDeque;->head:Ljava/util/concurrent/ConcurrentLinkedDeque$Node;
-Ljava/util/concurrent/ConcurrentLinkedDeque;->HOPS:I
-Ljava/util/concurrent/ConcurrentLinkedDeque;->initHeadTail(Ljava/util/concurrent/ConcurrentLinkedDeque$Node;Ljava/util/concurrent/ConcurrentLinkedDeque$Node;)V
-Ljava/util/concurrent/ConcurrentLinkedDeque;->last()Ljava/util/concurrent/ConcurrentLinkedDeque$Node;
-Ljava/util/concurrent/ConcurrentLinkedDeque;->linkFirst(Ljava/lang/Object;)V
-Ljava/util/concurrent/ConcurrentLinkedDeque;->linkLast(Ljava/lang/Object;)V
-Ljava/util/concurrent/ConcurrentLinkedDeque;->nextTerminator()Ljava/util/concurrent/ConcurrentLinkedDeque$Node;
-Ljava/util/concurrent/ConcurrentLinkedDeque;->NEXT_TERMINATOR:Ljava/util/concurrent/ConcurrentLinkedDeque$Node;
-Ljava/util/concurrent/ConcurrentLinkedDeque;->pred(Ljava/util/concurrent/ConcurrentLinkedDeque$Node;)Ljava/util/concurrent/ConcurrentLinkedDeque$Node;
-Ljava/util/concurrent/ConcurrentLinkedDeque;->prevTerminator()Ljava/util/concurrent/ConcurrentLinkedDeque$Node;
-Ljava/util/concurrent/ConcurrentLinkedDeque;->PREV_TERMINATOR:Ljava/util/concurrent/ConcurrentLinkedDeque$Node;
-Ljava/util/concurrent/ConcurrentLinkedDeque;->screenNullResult(Ljava/lang/Object;)Ljava/lang/Object;
-Ljava/util/concurrent/ConcurrentLinkedDeque;->skipDeletedPredecessors(Ljava/util/concurrent/ConcurrentLinkedDeque$Node;)V
-Ljava/util/concurrent/ConcurrentLinkedDeque;->skipDeletedSuccessors(Ljava/util/concurrent/ConcurrentLinkedDeque$Node;)V
-Ljava/util/concurrent/ConcurrentLinkedDeque;->succ(Ljava/util/concurrent/ConcurrentLinkedDeque$Node;)Ljava/util/concurrent/ConcurrentLinkedDeque$Node;
-Ljava/util/concurrent/ConcurrentLinkedDeque;->TAIL:J
-Ljava/util/concurrent/ConcurrentLinkedDeque;->tail:Ljava/util/concurrent/ConcurrentLinkedDeque$Node;
-Ljava/util/concurrent/ConcurrentLinkedDeque;->toArrayInternal([Ljava/lang/Object;)[Ljava/lang/Object;
-Ljava/util/concurrent/ConcurrentLinkedDeque;->U:Lsun/misc/Unsafe;
-Ljava/util/concurrent/ConcurrentLinkedDeque;->unlink(Ljava/util/concurrent/ConcurrentLinkedDeque$Node;)V
-Ljava/util/concurrent/ConcurrentLinkedDeque;->unlinkFirst(Ljava/util/concurrent/ConcurrentLinkedDeque$Node;Ljava/util/concurrent/ConcurrentLinkedDeque$Node;)V
-Ljava/util/concurrent/ConcurrentLinkedDeque;->unlinkLast(Ljava/util/concurrent/ConcurrentLinkedDeque$Node;Ljava/util/concurrent/ConcurrentLinkedDeque$Node;)V
-Ljava/util/concurrent/ConcurrentLinkedDeque;->updateHead()V
-Ljava/util/concurrent/ConcurrentLinkedDeque;->updateTail()V
-Ljava/util/concurrent/ConcurrentLinkedQueue$CLQSpliterator;-><init>(Ljava/util/concurrent/ConcurrentLinkedQueue;)V
-Ljava/util/concurrent/ConcurrentLinkedQueue$CLQSpliterator;->batch:I
-Ljava/util/concurrent/ConcurrentLinkedQueue$CLQSpliterator;->current:Ljava/util/concurrent/ConcurrentLinkedQueue$Node;
-Ljava/util/concurrent/ConcurrentLinkedQueue$CLQSpliterator;->exhausted:Z
-Ljava/util/concurrent/ConcurrentLinkedQueue$CLQSpliterator;->forEachRemaining(Ljava/util/function/Consumer;)V
-Ljava/util/concurrent/ConcurrentLinkedQueue$CLQSpliterator;->MAX_BATCH:I
-Ljava/util/concurrent/ConcurrentLinkedQueue$CLQSpliterator;->queue:Ljava/util/concurrent/ConcurrentLinkedQueue;
-Ljava/util/concurrent/ConcurrentLinkedQueue$CLQSpliterator;->tryAdvance(Ljava/util/function/Consumer;)Z
-Ljava/util/concurrent/ConcurrentLinkedQueue$Itr;->lastRet:Ljava/util/concurrent/ConcurrentLinkedQueue$Node;
-Ljava/util/concurrent/ConcurrentLinkedQueue$Itr;->nextItem:Ljava/lang/Object;
-Ljava/util/concurrent/ConcurrentLinkedQueue$Itr;->nextNode:Ljava/util/concurrent/ConcurrentLinkedQueue$Node;
-Ljava/util/concurrent/ConcurrentLinkedQueue$Node;-><init>()V
-Ljava/util/concurrent/ConcurrentLinkedQueue$Node;->item:Ljava/lang/Object;
-Ljava/util/concurrent/ConcurrentLinkedQueue$Node;->next:Ljava/util/concurrent/ConcurrentLinkedQueue$Node;
-Ljava/util/concurrent/ConcurrentLinkedQueue;->casHead(Ljava/util/concurrent/ConcurrentLinkedQueue$Node;Ljava/util/concurrent/ConcurrentLinkedQueue$Node;)Z
-Ljava/util/concurrent/ConcurrentLinkedQueue;->casItem(Ljava/util/concurrent/ConcurrentLinkedQueue$Node;Ljava/lang/Object;Ljava/lang/Object;)Z
-Ljava/util/concurrent/ConcurrentLinkedQueue;->casNext(Ljava/util/concurrent/ConcurrentLinkedQueue$Node;Ljava/util/concurrent/ConcurrentLinkedQueue$Node;Ljava/util/concurrent/ConcurrentLinkedQueue$Node;)Z
-Ljava/util/concurrent/ConcurrentLinkedQueue;->casTail(Ljava/util/concurrent/ConcurrentLinkedQueue$Node;Ljava/util/concurrent/ConcurrentLinkedQueue$Node;)Z
-Ljava/util/concurrent/ConcurrentLinkedQueue;->first()Ljava/util/concurrent/ConcurrentLinkedQueue$Node;
-Ljava/util/concurrent/ConcurrentLinkedQueue;->HEAD:J
-Ljava/util/concurrent/ConcurrentLinkedQueue;->head:Ljava/util/concurrent/ConcurrentLinkedQueue$Node;
-Ljava/util/concurrent/ConcurrentLinkedQueue;->ITEM:J
-Ljava/util/concurrent/ConcurrentLinkedQueue;->lazySetNext(Ljava/util/concurrent/ConcurrentLinkedQueue$Node;Ljava/util/concurrent/ConcurrentLinkedQueue$Node;)V
-Ljava/util/concurrent/ConcurrentLinkedQueue;->newNode(Ljava/lang/Object;)Ljava/util/concurrent/ConcurrentLinkedQueue$Node;
-Ljava/util/concurrent/ConcurrentLinkedQueue;->NEXT:J
-Ljava/util/concurrent/ConcurrentLinkedQueue;->succ(Ljava/util/concurrent/ConcurrentLinkedQueue$Node;)Ljava/util/concurrent/ConcurrentLinkedQueue$Node;
-Ljava/util/concurrent/ConcurrentLinkedQueue;->TAIL:J
-Ljava/util/concurrent/ConcurrentLinkedQueue;->tail:Ljava/util/concurrent/ConcurrentLinkedQueue$Node;
-Ljava/util/concurrent/ConcurrentLinkedQueue;->toArrayInternal([Ljava/lang/Object;)[Ljava/lang/Object;
-Ljava/util/concurrent/ConcurrentLinkedQueue;->U:Lsun/misc/Unsafe;
-Ljava/util/concurrent/ConcurrentLinkedQueue;->updateHead(Ljava/util/concurrent/ConcurrentLinkedQueue$Node;Ljava/util/concurrent/ConcurrentLinkedQueue$Node;)V
-Ljava/util/concurrent/ConcurrentSkipListMap$CSLMSpliterator;-><init>(Ljava/util/Comparator;Ljava/util/concurrent/ConcurrentSkipListMap$Index;Ljava/util/concurrent/ConcurrentSkipListMap$Node;Ljava/lang/Object;I)V
-Ljava/util/concurrent/ConcurrentSkipListMap$CSLMSpliterator;->comparator:Ljava/util/Comparator;
-Ljava/util/concurrent/ConcurrentSkipListMap$CSLMSpliterator;->current:Ljava/util/concurrent/ConcurrentSkipListMap$Node;
-Ljava/util/concurrent/ConcurrentSkipListMap$CSLMSpliterator;->est:I
-Ljava/util/concurrent/ConcurrentSkipListMap$CSLMSpliterator;->estimateSize()J
-Ljava/util/concurrent/ConcurrentSkipListMap$CSLMSpliterator;->fence:Ljava/lang/Object;
-Ljava/util/concurrent/ConcurrentSkipListMap$CSLMSpliterator;->row:Ljava/util/concurrent/ConcurrentSkipListMap$Index;
-Ljava/util/concurrent/ConcurrentSkipListMap$EntrySet;-><init>(Ljava/util/concurrent/ConcurrentNavigableMap;)V
-Ljava/util/concurrent/ConcurrentSkipListMap$EntrySet;->m:Ljava/util/concurrent/ConcurrentNavigableMap;
-Ljava/util/concurrent/ConcurrentSkipListMap$EntrySet;->removeIf(Ljava/util/function/Predicate;)Z
-Ljava/util/concurrent/ConcurrentSkipListMap$EntrySpliterator;-><init>(Ljava/util/Comparator;Ljava/util/concurrent/ConcurrentSkipListMap$Index;Ljava/util/concurrent/ConcurrentSkipListMap$Node;Ljava/lang/Object;I)V
-Ljava/util/concurrent/ConcurrentSkipListMap$EntrySpliterator;->forEachRemaining(Ljava/util/function/Consumer;)V
-Ljava/util/concurrent/ConcurrentSkipListMap$EntrySpliterator;->tryAdvance(Ljava/util/function/Consumer;)Z
-Ljava/util/concurrent/ConcurrentSkipListMap$HeadIndex;-><init>(Ljava/util/concurrent/ConcurrentSkipListMap$Node;Ljava/util/concurrent/ConcurrentSkipListMap$Index;Ljava/util/concurrent/ConcurrentSkipListMap$Index;I)V
-Ljava/util/concurrent/ConcurrentSkipListMap$HeadIndex;->level:I
-Ljava/util/concurrent/ConcurrentSkipListMap$Index;-><init>(Ljava/util/concurrent/ConcurrentSkipListMap$Node;Ljava/util/concurrent/ConcurrentSkipListMap$Index;Ljava/util/concurrent/ConcurrentSkipListMap$Index;)V
-Ljava/util/concurrent/ConcurrentSkipListMap$Index;->casRight(Ljava/util/concurrent/ConcurrentSkipListMap$Index;Ljava/util/concurrent/ConcurrentSkipListMap$Index;)Z
-Ljava/util/concurrent/ConcurrentSkipListMap$Index;->down:Ljava/util/concurrent/ConcurrentSkipListMap$Index;
-Ljava/util/concurrent/ConcurrentSkipListMap$Index;->indexesDeletedNode()Z
-Ljava/util/concurrent/ConcurrentSkipListMap$Index;->link(Ljava/util/concurrent/ConcurrentSkipListMap$Index;Ljava/util/concurrent/ConcurrentSkipListMap$Index;)Z
-Ljava/util/concurrent/ConcurrentSkipListMap$Index;->node:Ljava/util/concurrent/ConcurrentSkipListMap$Node;
-Ljava/util/concurrent/ConcurrentSkipListMap$Index;->RIGHT:J
-Ljava/util/concurrent/ConcurrentSkipListMap$Index;->right:Ljava/util/concurrent/ConcurrentSkipListMap$Index;
-Ljava/util/concurrent/ConcurrentSkipListMap$Index;->U:Lsun/misc/Unsafe;
-Ljava/util/concurrent/ConcurrentSkipListMap$Index;->unlink(Ljava/util/concurrent/ConcurrentSkipListMap$Index;)Z
-Ljava/util/concurrent/ConcurrentSkipListMap$Iter;->advance()V
-Ljava/util/concurrent/ConcurrentSkipListMap$Iter;->lastReturned:Ljava/util/concurrent/ConcurrentSkipListMap$Node;
-Ljava/util/concurrent/ConcurrentSkipListMap$Iter;->next:Ljava/util/concurrent/ConcurrentSkipListMap$Node;
-Ljava/util/concurrent/ConcurrentSkipListMap$Iter;->nextValue:Ljava/lang/Object;
-Ljava/util/concurrent/ConcurrentSkipListMap$KeySet;-><init>(Ljava/util/concurrent/ConcurrentNavigableMap;)V
-Ljava/util/concurrent/ConcurrentSkipListMap$KeySet;->ceiling(Ljava/lang/Object;)Ljava/lang/Object;
-Ljava/util/concurrent/ConcurrentSkipListMap$KeySet;->floor(Ljava/lang/Object;)Ljava/lang/Object;
-Ljava/util/concurrent/ConcurrentSkipListMap$KeySet;->headSet(Ljava/lang/Object;)Ljava/util/NavigableSet;
-Ljava/util/concurrent/ConcurrentSkipListMap$KeySet;->headSet(Ljava/lang/Object;Z)Ljava/util/NavigableSet;
-Ljava/util/concurrent/ConcurrentSkipListMap$KeySet;->higher(Ljava/lang/Object;)Ljava/lang/Object;
-Ljava/util/concurrent/ConcurrentSkipListMap$KeySet;->lower(Ljava/lang/Object;)Ljava/lang/Object;
-Ljava/util/concurrent/ConcurrentSkipListMap$KeySet;->m:Ljava/util/concurrent/ConcurrentNavigableMap;
-Ljava/util/concurrent/ConcurrentSkipListMap$KeySet;->subSet(Ljava/lang/Object;Ljava/lang/Object;)Ljava/util/NavigableSet;
-Ljava/util/concurrent/ConcurrentSkipListMap$KeySet;->subSet(Ljava/lang/Object;ZLjava/lang/Object;Z)Ljava/util/NavigableSet;
-Ljava/util/concurrent/ConcurrentSkipListMap$KeySet;->tailSet(Ljava/lang/Object;)Ljava/util/NavigableSet;
-Ljava/util/concurrent/ConcurrentSkipListMap$KeySet;->tailSet(Ljava/lang/Object;Z)Ljava/util/NavigableSet;
-Ljava/util/concurrent/ConcurrentSkipListMap$KeySpliterator;-><init>(Ljava/util/Comparator;Ljava/util/concurrent/ConcurrentSkipListMap$Index;Ljava/util/concurrent/ConcurrentSkipListMap$Node;Ljava/lang/Object;I)V
-Ljava/util/concurrent/ConcurrentSkipListMap$KeySpliterator;->forEachRemaining(Ljava/util/function/Consumer;)V
-Ljava/util/concurrent/ConcurrentSkipListMap$KeySpliterator;->tryAdvance(Ljava/util/function/Consumer;)Z
-Ljava/util/concurrent/ConcurrentSkipListMap$Node;-><init>(Ljava/lang/Object;Ljava/lang/Object;Ljava/util/concurrent/ConcurrentSkipListMap$Node;)V
-Ljava/util/concurrent/ConcurrentSkipListMap$Node;-><init>(Ljava/util/concurrent/ConcurrentSkipListMap$Node;)V
-Ljava/util/concurrent/ConcurrentSkipListMap$Node;->appendMarker(Ljava/util/concurrent/ConcurrentSkipListMap$Node;)Z
-Ljava/util/concurrent/ConcurrentSkipListMap$Node;->casNext(Ljava/util/concurrent/ConcurrentSkipListMap$Node;Ljava/util/concurrent/ConcurrentSkipListMap$Node;)Z
-Ljava/util/concurrent/ConcurrentSkipListMap$Node;->casValue(Ljava/lang/Object;Ljava/lang/Object;)Z
-Ljava/util/concurrent/ConcurrentSkipListMap$Node;->createSnapshot()Ljava/util/AbstractMap$SimpleImmutableEntry;
-Ljava/util/concurrent/ConcurrentSkipListMap$Node;->getValidValue()Ljava/lang/Object;
-Ljava/util/concurrent/ConcurrentSkipListMap$Node;->helpDelete(Ljava/util/concurrent/ConcurrentSkipListMap$Node;Ljava/util/concurrent/ConcurrentSkipListMap$Node;)V
-Ljava/util/concurrent/ConcurrentSkipListMap$Node;->isBaseHeader()Z
-Ljava/util/concurrent/ConcurrentSkipListMap$Node;->isMarker()Z
-Ljava/util/concurrent/ConcurrentSkipListMap$Node;->key:Ljava/lang/Object;
-Ljava/util/concurrent/ConcurrentSkipListMap$Node;->NEXT:J
-Ljava/util/concurrent/ConcurrentSkipListMap$Node;->next:Ljava/util/concurrent/ConcurrentSkipListMap$Node;
-Ljava/util/concurrent/ConcurrentSkipListMap$Node;->U:Lsun/misc/Unsafe;
-Ljava/util/concurrent/ConcurrentSkipListMap$Node;->VALUE:J
-Ljava/util/concurrent/ConcurrentSkipListMap$Node;->value:Ljava/lang/Object;
-Ljava/util/concurrent/ConcurrentSkipListMap$SubMap$SubMapIter;->advance()V
-Ljava/util/concurrent/ConcurrentSkipListMap$SubMap$SubMapIter;->ascend()V
-Ljava/util/concurrent/ConcurrentSkipListMap$SubMap$SubMapIter;->descend()V
-Ljava/util/concurrent/ConcurrentSkipListMap$SubMap$SubMapIter;->lastReturned:Ljava/util/concurrent/ConcurrentSkipListMap$Node;
-Ljava/util/concurrent/ConcurrentSkipListMap$SubMap$SubMapIter;->next:Ljava/util/concurrent/ConcurrentSkipListMap$Node;
-Ljava/util/concurrent/ConcurrentSkipListMap$SubMap$SubMapIter;->nextValue:Ljava/lang/Object;
-Ljava/util/concurrent/ConcurrentSkipListMap$SubMap;-><init>(Ljava/util/concurrent/ConcurrentSkipListMap;Ljava/lang/Object;ZLjava/lang/Object;ZZ)V
-Ljava/util/concurrent/ConcurrentSkipListMap$SubMap;->checkKeyBounds(Ljava/lang/Object;Ljava/util/Comparator;)V
-Ljava/util/concurrent/ConcurrentSkipListMap$SubMap;->entrySetView:Ljava/util/Set;
-Ljava/util/concurrent/ConcurrentSkipListMap$SubMap;->getNearEntry(Ljava/lang/Object;I)Ljava/util/Map$Entry;
-Ljava/util/concurrent/ConcurrentSkipListMap$SubMap;->getNearKey(Ljava/lang/Object;I)Ljava/lang/Object;
-Ljava/util/concurrent/ConcurrentSkipListMap$SubMap;->hi:Ljava/lang/Object;
-Ljava/util/concurrent/ConcurrentSkipListMap$SubMap;->highestEntry()Ljava/util/Map$Entry;
-Ljava/util/concurrent/ConcurrentSkipListMap$SubMap;->highestKey()Ljava/lang/Object;
-Ljava/util/concurrent/ConcurrentSkipListMap$SubMap;->hiInclusive:Z
-Ljava/util/concurrent/ConcurrentSkipListMap$SubMap;->hiNode(Ljava/util/Comparator;)Ljava/util/concurrent/ConcurrentSkipListMap$Node;
-Ljava/util/concurrent/ConcurrentSkipListMap$SubMap;->inBounds(Ljava/lang/Object;Ljava/util/Comparator;)Z
-Ljava/util/concurrent/ConcurrentSkipListMap$SubMap;->isBeforeEnd(Ljava/util/concurrent/ConcurrentSkipListMap$Node;Ljava/util/Comparator;)Z
-Ljava/util/concurrent/ConcurrentSkipListMap$SubMap;->isDescending:Z
-Ljava/util/concurrent/ConcurrentSkipListMap$SubMap;->keySetView:Ljava/util/concurrent/ConcurrentSkipListMap$KeySet;
-Ljava/util/concurrent/ConcurrentSkipListMap$SubMap;->lo:Ljava/lang/Object;
-Ljava/util/concurrent/ConcurrentSkipListMap$SubMap;->loInclusive:Z
-Ljava/util/concurrent/ConcurrentSkipListMap$SubMap;->loNode(Ljava/util/Comparator;)Ljava/util/concurrent/ConcurrentSkipListMap$Node;
-Ljava/util/concurrent/ConcurrentSkipListMap$SubMap;->lowestEntry()Ljava/util/Map$Entry;
-Ljava/util/concurrent/ConcurrentSkipListMap$SubMap;->lowestKey()Ljava/lang/Object;
-Ljava/util/concurrent/ConcurrentSkipListMap$SubMap;->m:Ljava/util/concurrent/ConcurrentSkipListMap;
-Ljava/util/concurrent/ConcurrentSkipListMap$SubMap;->newSubMap(Ljava/lang/Object;ZLjava/lang/Object;Z)Ljava/util/concurrent/ConcurrentSkipListMap$SubMap;
-Ljava/util/concurrent/ConcurrentSkipListMap$SubMap;->removeHighest()Ljava/util/Map$Entry;
-Ljava/util/concurrent/ConcurrentSkipListMap$SubMap;->removeLowest()Ljava/util/Map$Entry;
-Ljava/util/concurrent/ConcurrentSkipListMap$SubMap;->tooHigh(Ljava/lang/Object;Ljava/util/Comparator;)Z
-Ljava/util/concurrent/ConcurrentSkipListMap$SubMap;->tooLow(Ljava/lang/Object;Ljava/util/Comparator;)Z
-Ljava/util/concurrent/ConcurrentSkipListMap$SubMap;->valuesView:Ljava/util/Collection;
-Ljava/util/concurrent/ConcurrentSkipListMap$Values;-><init>(Ljava/util/concurrent/ConcurrentNavigableMap;)V
-Ljava/util/concurrent/ConcurrentSkipListMap$Values;->m:Ljava/util/concurrent/ConcurrentNavigableMap;
-Ljava/util/concurrent/ConcurrentSkipListMap$Values;->removeIf(Ljava/util/function/Predicate;)Z
-Ljava/util/concurrent/ConcurrentSkipListMap$ValueSpliterator;-><init>(Ljava/util/Comparator;Ljava/util/concurrent/ConcurrentSkipListMap$Index;Ljava/util/concurrent/ConcurrentSkipListMap$Node;Ljava/lang/Object;I)V
-Ljava/util/concurrent/ConcurrentSkipListMap$ValueSpliterator;->forEachRemaining(Ljava/util/function/Consumer;)V
-Ljava/util/concurrent/ConcurrentSkipListMap$ValueSpliterator;->tryAdvance(Ljava/util/function/Consumer;)Z
-Ljava/util/concurrent/ConcurrentSkipListMap;->BASE_HEADER:Ljava/lang/Object;
-Ljava/util/concurrent/ConcurrentSkipListMap;->buildFromSorted(Ljava/util/SortedMap;)V
-Ljava/util/concurrent/ConcurrentSkipListMap;->casHead(Ljava/util/concurrent/ConcurrentSkipListMap$HeadIndex;Ljava/util/concurrent/ConcurrentSkipListMap$HeadIndex;)Z
-Ljava/util/concurrent/ConcurrentSkipListMap;->clearIndexToFirst()V
-Ljava/util/concurrent/ConcurrentSkipListMap;->comparator:Ljava/util/Comparator;
-Ljava/util/concurrent/ConcurrentSkipListMap;->cpr(Ljava/util/Comparator;Ljava/lang/Object;Ljava/lang/Object;)I
-Ljava/util/concurrent/ConcurrentSkipListMap;->descendingMap:Ljava/util/concurrent/ConcurrentNavigableMap;
-Ljava/util/concurrent/ConcurrentSkipListMap;->doGet(Ljava/lang/Object;)Ljava/lang/Object;
-Ljava/util/concurrent/ConcurrentSkipListMap;->doPut(Ljava/lang/Object;Ljava/lang/Object;Z)Ljava/lang/Object;
-Ljava/util/concurrent/ConcurrentSkipListMap;->doRemove(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
-Ljava/util/concurrent/ConcurrentSkipListMap;->doRemoveFirstEntry()Ljava/util/Map$Entry;
-Ljava/util/concurrent/ConcurrentSkipListMap;->doRemoveLastEntry()Ljava/util/Map$Entry;
-Ljava/util/concurrent/ConcurrentSkipListMap;->entrySet:Ljava/util/concurrent/ConcurrentSkipListMap$EntrySet;
-Ljava/util/concurrent/ConcurrentSkipListMap;->entrySpliterator()Ljava/util/concurrent/ConcurrentSkipListMap$EntrySpliterator;
-Ljava/util/concurrent/ConcurrentSkipListMap;->EQ:I
-Ljava/util/concurrent/ConcurrentSkipListMap;->findFirst()Ljava/util/concurrent/ConcurrentSkipListMap$Node;
-Ljava/util/concurrent/ConcurrentSkipListMap;->findLast()Ljava/util/concurrent/ConcurrentSkipListMap$Node;
-Ljava/util/concurrent/ConcurrentSkipListMap;->findNear(Ljava/lang/Object;ILjava/util/Comparator;)Ljava/util/concurrent/ConcurrentSkipListMap$Node;
-Ljava/util/concurrent/ConcurrentSkipListMap;->findNode(Ljava/lang/Object;)Ljava/util/concurrent/ConcurrentSkipListMap$Node;
-Ljava/util/concurrent/ConcurrentSkipListMap;->findPredecessor(Ljava/lang/Object;Ljava/util/Comparator;)Ljava/util/concurrent/ConcurrentSkipListMap$Node;
-Ljava/util/concurrent/ConcurrentSkipListMap;->findPredecessorOfLast()Ljava/util/concurrent/ConcurrentSkipListMap$Node;
-Ljava/util/concurrent/ConcurrentSkipListMap;->getNear(Ljava/lang/Object;I)Ljava/util/AbstractMap$SimpleImmutableEntry;
-Ljava/util/concurrent/ConcurrentSkipListMap;->GT:I
-Ljava/util/concurrent/ConcurrentSkipListMap;->HEAD:J
-Ljava/util/concurrent/ConcurrentSkipListMap;->head:Ljava/util/concurrent/ConcurrentSkipListMap$HeadIndex;
-Ljava/util/concurrent/ConcurrentSkipListMap;->initialize()V
-Ljava/util/concurrent/ConcurrentSkipListMap;->keySet:Ljava/util/concurrent/ConcurrentSkipListMap$KeySet;
-Ljava/util/concurrent/ConcurrentSkipListMap;->keySpliterator()Ljava/util/concurrent/ConcurrentSkipListMap$KeySpliterator;
-Ljava/util/concurrent/ConcurrentSkipListMap;->LT:I
-Ljava/util/concurrent/ConcurrentSkipListMap;->removeEntryIf(Ljava/util/function/Predicate;)Z
-Ljava/util/concurrent/ConcurrentSkipListMap;->removeValueIf(Ljava/util/function/Predicate;)Z
-Ljava/util/concurrent/ConcurrentSkipListMap;->toList(Ljava/util/Collection;)Ljava/util/List;
-Ljava/util/concurrent/ConcurrentSkipListMap;->tryReduceLevel()V
-Ljava/util/concurrent/ConcurrentSkipListMap;->U:Lsun/misc/Unsafe;
-Ljava/util/concurrent/ConcurrentSkipListMap;->values:Ljava/util/concurrent/ConcurrentSkipListMap$Values;
-Ljava/util/concurrent/ConcurrentSkipListMap;->valueSpliterator()Ljava/util/concurrent/ConcurrentSkipListMap$ValueSpliterator;
-Ljava/util/concurrent/ConcurrentSkipListSet;-><init>(Ljava/util/concurrent/ConcurrentNavigableMap;)V
-Ljava/util/concurrent/ConcurrentSkipListSet;->m:Ljava/util/concurrent/ConcurrentNavigableMap;
-Ljava/util/concurrent/ConcurrentSkipListSet;->MAP:J
-Ljava/util/concurrent/ConcurrentSkipListSet;->setMap(Ljava/util/concurrent/ConcurrentNavigableMap;)V
-Ljava/util/concurrent/ConcurrentSkipListSet;->U:Lsun/misc/Unsafe;
-Ljava/util/concurrent/CopyOnWriteArrayList$COWIterator;-><init>([Ljava/lang/Object;I)V
-Ljava/util/concurrent/CopyOnWriteArrayList$COWIterator;->cursor:I
-Ljava/util/concurrent/CopyOnWriteArrayList$COWIterator;->snapshot:[Ljava/lang/Object;
-Ljava/util/concurrent/CopyOnWriteArrayList$COWSubList;-><init>(Ljava/util/concurrent/CopyOnWriteArrayList;II)V
-Ljava/util/concurrent/CopyOnWriteArrayList$COWSubList;->checkForComodification()V
-Ljava/util/concurrent/CopyOnWriteArrayList$COWSubList;->expectedArray:[Ljava/lang/Object;
-Ljava/util/concurrent/CopyOnWriteArrayList$COWSubList;->forEach(Ljava/util/function/Consumer;)V
-Ljava/util/concurrent/CopyOnWriteArrayList$COWSubList;->l:Ljava/util/concurrent/CopyOnWriteArrayList;
-Ljava/util/concurrent/CopyOnWriteArrayList$COWSubList;->offset:I
-Ljava/util/concurrent/CopyOnWriteArrayList$COWSubList;->rangeCheck(I)V
-Ljava/util/concurrent/CopyOnWriteArrayList$COWSubList;->size:I
-Ljava/util/concurrent/CopyOnWriteArrayList$COWSubListIterator;-><init>(Ljava/util/List;III)V
-Ljava/util/concurrent/CopyOnWriteArrayList$COWSubListIterator;->it:Ljava/util/ListIterator;
-Ljava/util/concurrent/CopyOnWriteArrayList$COWSubListIterator;->offset:I
-Ljava/util/concurrent/CopyOnWriteArrayList$COWSubListIterator;->size:I
-Ljava/util/concurrent/CopyOnWriteArrayList;->addIfAbsent(Ljava/lang/Object;[Ljava/lang/Object;)Z
-Ljava/util/concurrent/CopyOnWriteArrayList;->get([Ljava/lang/Object;I)Ljava/lang/Object;
-Ljava/util/concurrent/CopyOnWriteArrayList;->getArray()[Ljava/lang/Object;
-Ljava/util/concurrent/CopyOnWriteArrayList;->indexOf(Ljava/lang/Object;[Ljava/lang/Object;II)I
-Ljava/util/concurrent/CopyOnWriteArrayList;->lastIndexOf(Ljava/lang/Object;[Ljava/lang/Object;I)I
-Ljava/util/concurrent/CopyOnWriteArrayList;->LOCK:J
-Ljava/util/concurrent/CopyOnWriteArrayList;->lock:Ljava/lang/Object;
-Ljava/util/concurrent/CopyOnWriteArrayList;->outOfBounds(II)Ljava/lang/String;
-Ljava/util/concurrent/CopyOnWriteArrayList;->remove(Ljava/lang/Object;[Ljava/lang/Object;I)Z
-Ljava/util/concurrent/CopyOnWriteArrayList;->removeRange(II)V
-Ljava/util/concurrent/CopyOnWriteArrayList;->resetLock()V
-Ljava/util/concurrent/CopyOnWriteArrayList;->setArray([Ljava/lang/Object;)V
-Ljava/util/concurrent/CopyOnWriteArrayList;->U:Lsun/misc/Unsafe;
-Ljava/util/concurrent/CopyOnWriteArraySet;->compareSets([Ljava/lang/Object;Ljava/util/Set;)I
-Ljava/util/concurrent/CountDownLatch$Sync;-><init>(I)V
-Ljava/util/concurrent/CountDownLatch$Sync;->getCount()I
-Ljava/util/concurrent/CountDownLatch;->sync:Ljava/util/concurrent/CountDownLatch$Sync;
-Ljava/util/concurrent/CountedCompleter;->completer:Ljava/util/concurrent/CountedCompleter;
-Ljava/util/concurrent/CountedCompleter;->internalPropagateException(Ljava/lang/Throwable;)V
-Ljava/util/concurrent/CountedCompleter;->pending:I
-Ljava/util/concurrent/CountedCompleter;->PENDING:J
-Ljava/util/concurrent/CountedCompleter;->U:Lsun/misc/Unsafe;
-Ljava/util/concurrent/CyclicBarrier$Generation;-><init>()V
-Ljava/util/concurrent/CyclicBarrier$Generation;->broken:Z
-Ljava/util/concurrent/CyclicBarrier;->barrierCommand:Ljava/lang/Runnable;
-Ljava/util/concurrent/CyclicBarrier;->breakBarrier()V
-Ljava/util/concurrent/CyclicBarrier;->count:I
-Ljava/util/concurrent/CyclicBarrier;->dowait(ZJ)I
-Ljava/util/concurrent/CyclicBarrier;->generation:Ljava/util/concurrent/CyclicBarrier$Generation;
-Ljava/util/concurrent/CyclicBarrier;->lock:Ljava/util/concurrent/locks/ReentrantLock;
-Ljava/util/concurrent/CyclicBarrier;->nextGeneration()V
-Ljava/util/concurrent/CyclicBarrier;->parties:I
-Ljava/util/concurrent/CyclicBarrier;->trip:Ljava/util/concurrent/locks/Condition;
-Ljava/util/concurrent/DelayQueue$Itr;->array:[Ljava/lang/Object;
-Ljava/util/concurrent/DelayQueue$Itr;->cursor:I
-Ljava/util/concurrent/DelayQueue$Itr;->lastRet:I
-Ljava/util/concurrent/DelayQueue;->available:Ljava/util/concurrent/locks/Condition;
-Ljava/util/concurrent/DelayQueue;->leader:Ljava/lang/Thread;
-Ljava/util/concurrent/DelayQueue;->lock:Ljava/util/concurrent/locks/ReentrantLock;
-Ljava/util/concurrent/DelayQueue;->peekExpired()Ljava/util/concurrent/Delayed;
-Ljava/util/concurrent/DelayQueue;->q:Ljava/util/PriorityQueue;
-Ljava/util/concurrent/DelayQueue;->removeEQ(Ljava/lang/Object;)V
-Ljava/util/concurrent/Exchanger$Node;-><init>()V
-Ljava/util/concurrent/Exchanger$Node;->bound:I
-Ljava/util/concurrent/Exchanger$Node;->collides:I
-Ljava/util/concurrent/Exchanger$Node;->hash:I
-Ljava/util/concurrent/Exchanger$Node;->index:I
-Ljava/util/concurrent/Exchanger$Node;->item:Ljava/lang/Object;
-Ljava/util/concurrent/Exchanger$Node;->match:Ljava/lang/Object;
-Ljava/util/concurrent/Exchanger$Node;->parked:Ljava/lang/Thread;
-Ljava/util/concurrent/Exchanger$Participant;-><init>()V
-Ljava/util/concurrent/Exchanger;->ABASE:I
-Ljava/util/concurrent/Exchanger;->arena:[Ljava/util/concurrent/Exchanger$Node;
-Ljava/util/concurrent/Exchanger;->arenaExchange(Ljava/lang/Object;ZJ)Ljava/lang/Object;
-Ljava/util/concurrent/Exchanger;->ASHIFT:I
-Ljava/util/concurrent/Exchanger;->BLOCKER:J
-Ljava/util/concurrent/Exchanger;->bound:I
-Ljava/util/concurrent/Exchanger;->BOUND:J
-Ljava/util/concurrent/Exchanger;->FULL:I
-Ljava/util/concurrent/Exchanger;->MATCH:J
-Ljava/util/concurrent/Exchanger;->MMASK:I
-Ljava/util/concurrent/Exchanger;->NCPU:I
-Ljava/util/concurrent/Exchanger;->NULL_ITEM:Ljava/lang/Object;
-Ljava/util/concurrent/Exchanger;->participant:Ljava/util/concurrent/Exchanger$Participant;
-Ljava/util/concurrent/Exchanger;->SEQ:I
-Ljava/util/concurrent/Exchanger;->SLOT:J
-Ljava/util/concurrent/Exchanger;->slot:Ljava/util/concurrent/Exchanger$Node;
-Ljava/util/concurrent/Exchanger;->slotExchange(Ljava/lang/Object;ZJ)Ljava/lang/Object;
-Ljava/util/concurrent/Exchanger;->SPINS:I
-Ljava/util/concurrent/Exchanger;->TIMED_OUT:Ljava/lang/Object;
-Ljava/util/concurrent/Exchanger;->U:Lsun/misc/Unsafe;
-Ljava/util/concurrent/ExecutorCompletionService$QueueingFuture;-><init>(Ljava/util/concurrent/RunnableFuture;Ljava/util/concurrent/BlockingQueue;)V
-Ljava/util/concurrent/ExecutorCompletionService$QueueingFuture;->completionQueue:Ljava/util/concurrent/BlockingQueue;
-Ljava/util/concurrent/ExecutorCompletionService$QueueingFuture;->task:Ljava/util/concurrent/Future;
-Ljava/util/concurrent/ExecutorCompletionService;->aes:Ljava/util/concurrent/AbstractExecutorService;
-Ljava/util/concurrent/ExecutorCompletionService;->completionQueue:Ljava/util/concurrent/BlockingQueue;
-Ljava/util/concurrent/ExecutorCompletionService;->executor:Ljava/util/concurrent/Executor;
-Ljava/util/concurrent/ExecutorCompletionService;->newTaskFor(Ljava/lang/Runnable;Ljava/lang/Object;)Ljava/util/concurrent/RunnableFuture;
-Ljava/util/concurrent/ExecutorCompletionService;->newTaskFor(Ljava/util/concurrent/Callable;)Ljava/util/concurrent/RunnableFuture;
-Ljava/util/concurrent/Executors$DefaultThreadFactory;-><init>()V
-Ljava/util/concurrent/Executors$DefaultThreadFactory;->group:Ljava/lang/ThreadGroup;
-Ljava/util/concurrent/Executors$DefaultThreadFactory;->namePrefix:Ljava/lang/String;
-Ljava/util/concurrent/Executors$DefaultThreadFactory;->poolNumber:Ljava/util/concurrent/atomic/AtomicInteger;
-Ljava/util/concurrent/Executors$DefaultThreadFactory;->threadNumber:Ljava/util/concurrent/atomic/AtomicInteger;
-Ljava/util/concurrent/Executors$DelegatedExecutorService;-><init>(Ljava/util/concurrent/ExecutorService;)V
-Ljava/util/concurrent/Executors$DelegatedExecutorService;->e:Ljava/util/concurrent/ExecutorService;
-Ljava/util/concurrent/Executors$DelegatedScheduledExecutorService;-><init>(Ljava/util/concurrent/ScheduledExecutorService;)V
-Ljava/util/concurrent/Executors$DelegatedScheduledExecutorService;->e:Ljava/util/concurrent/ScheduledExecutorService;
-Ljava/util/concurrent/Executors$FinalizableDelegatedExecutorService;-><init>(Ljava/util/concurrent/ExecutorService;)V
-Ljava/util/concurrent/Executors$PrivilegedCallable;-><init>(Ljava/util/concurrent/Callable;)V
-Ljava/util/concurrent/Executors$PrivilegedCallable;->acc:Ljava/security/AccessControlContext;
-Ljava/util/concurrent/Executors$PrivilegedCallable;->task:Ljava/util/concurrent/Callable;
-Ljava/util/concurrent/Executors$PrivilegedCallableUsingCurrentClassLoader;-><init>(Ljava/util/concurrent/Callable;)V
-Ljava/util/concurrent/Executors$PrivilegedCallableUsingCurrentClassLoader;->acc:Ljava/security/AccessControlContext;
-Ljava/util/concurrent/Executors$PrivilegedCallableUsingCurrentClassLoader;->ccl:Ljava/lang/ClassLoader;
-Ljava/util/concurrent/Executors$PrivilegedCallableUsingCurrentClassLoader;->task:Ljava/util/concurrent/Callable;
-Ljava/util/concurrent/Executors$PrivilegedThreadFactory;-><init>()V
-Ljava/util/concurrent/Executors$PrivilegedThreadFactory;->acc:Ljava/security/AccessControlContext;
-Ljava/util/concurrent/Executors$PrivilegedThreadFactory;->ccl:Ljava/lang/ClassLoader;
-Ljava/util/concurrent/Executors$RunnableAdapter;-><init>(Ljava/lang/Runnable;Ljava/lang/Object;)V
-Ljava/util/concurrent/Executors$RunnableAdapter;->result:Ljava/lang/Object;
-Ljava/util/concurrent/Executors;-><init>()V
-Ljava/util/concurrent/ForkJoinPool$AuxState;-><init>()V
-Ljava/util/concurrent/ForkJoinPool$AuxState;->indexSeed:J
-Ljava/util/concurrent/ForkJoinPool$AuxState;->stealCount:J
-Ljava/util/concurrent/ForkJoinPool$DefaultForkJoinWorkerThreadFactory;-><init>()V
-Ljava/util/concurrent/ForkJoinPool$EmptyTask;-><init>()V
-Ljava/util/concurrent/ForkJoinPool$EmptyTask;->setRawResult(Ljava/lang/Void;)V
-Ljava/util/concurrent/ForkJoinPool$InnocuousForkJoinWorkerThreadFactory;-><init>()V
-Ljava/util/concurrent/ForkJoinPool$InnocuousForkJoinWorkerThreadFactory;->innocuousAcc:Ljava/security/AccessControlContext;
-Ljava/util/concurrent/ForkJoinPool$WorkQueue;-><init>(Ljava/util/concurrent/ForkJoinPool;Ljava/util/concurrent/ForkJoinWorkerThread;)V
-Ljava/util/concurrent/ForkJoinPool$WorkQueue;->ABASE:I
-Ljava/util/concurrent/ForkJoinPool$WorkQueue;->array:[Ljava/util/concurrent/ForkJoinTask;
-Ljava/util/concurrent/ForkJoinPool$WorkQueue;->ASHIFT:I
-Ljava/util/concurrent/ForkJoinPool$WorkQueue;->base:I
-Ljava/util/concurrent/ForkJoinPool$WorkQueue;->cancelAll()V
-Ljava/util/concurrent/ForkJoinPool$WorkQueue;->config:I
-Ljava/util/concurrent/ForkJoinPool$WorkQueue;->currentJoin:Ljava/util/concurrent/ForkJoinTask;
-Ljava/util/concurrent/ForkJoinPool$WorkQueue;->currentSteal:Ljava/util/concurrent/ForkJoinTask;
-Ljava/util/concurrent/ForkJoinPool$WorkQueue;->getPoolIndex()I
-Ljava/util/concurrent/ForkJoinPool$WorkQueue;->growAndSharedPush(Ljava/util/concurrent/ForkJoinTask;)V
-Ljava/util/concurrent/ForkJoinPool$WorkQueue;->growArray()[Ljava/util/concurrent/ForkJoinTask;
-Ljava/util/concurrent/ForkJoinPool$WorkQueue;->hint:I
-Ljava/util/concurrent/ForkJoinPool$WorkQueue;->INITIAL_QUEUE_CAPACITY:I
-Ljava/util/concurrent/ForkJoinPool$WorkQueue;->isApparentlyUnblocked()Z
-Ljava/util/concurrent/ForkJoinPool$WorkQueue;->isEmpty()Z
-Ljava/util/concurrent/ForkJoinPool$WorkQueue;->localPollAndExec()V
-Ljava/util/concurrent/ForkJoinPool$WorkQueue;->localPopAndExec()V
-Ljava/util/concurrent/ForkJoinPool$WorkQueue;->MAXIMUM_QUEUE_CAPACITY:I
-Ljava/util/concurrent/ForkJoinPool$WorkQueue;->nextLocalTask()Ljava/util/concurrent/ForkJoinTask;
-Ljava/util/concurrent/ForkJoinPool$WorkQueue;->nsteals:I
-Ljava/util/concurrent/ForkJoinPool$WorkQueue;->owner:Ljava/util/concurrent/ForkJoinWorkerThread;
-Ljava/util/concurrent/ForkJoinPool$WorkQueue;->parker:Ljava/lang/Thread;
-Ljava/util/concurrent/ForkJoinPool$WorkQueue;->peek()Ljava/util/concurrent/ForkJoinTask;
-Ljava/util/concurrent/ForkJoinPool$WorkQueue;->poll()Ljava/util/concurrent/ForkJoinTask;
-Ljava/util/concurrent/ForkJoinPool$WorkQueue;->pollAndExecCC(Ljava/util/concurrent/CountedCompleter;)I
-Ljava/util/concurrent/ForkJoinPool$WorkQueue;->pollAt(I)Ljava/util/concurrent/ForkJoinTask;
-Ljava/util/concurrent/ForkJoinPool$WorkQueue;->pool:Ljava/util/concurrent/ForkJoinPool;
-Ljava/util/concurrent/ForkJoinPool$WorkQueue;->pop()Ljava/util/concurrent/ForkJoinTask;
-Ljava/util/concurrent/ForkJoinPool$WorkQueue;->popCC(Ljava/util/concurrent/CountedCompleter;I)Ljava/util/concurrent/CountedCompleter;
-Ljava/util/concurrent/ForkJoinPool$WorkQueue;->push(Ljava/util/concurrent/ForkJoinTask;)V
-Ljava/util/concurrent/ForkJoinPool$WorkQueue;->qlock:I
-Ljava/util/concurrent/ForkJoinPool$WorkQueue;->QLOCK:J
-Ljava/util/concurrent/ForkJoinPool$WorkQueue;->queueSize()I
-Ljava/util/concurrent/ForkJoinPool$WorkQueue;->runTask(Ljava/util/concurrent/ForkJoinTask;)V
-Ljava/util/concurrent/ForkJoinPool$WorkQueue;->scanState:I
-Ljava/util/concurrent/ForkJoinPool$WorkQueue;->sharedPush(Ljava/util/concurrent/ForkJoinTask;)I
-Ljava/util/concurrent/ForkJoinPool$WorkQueue;->stackPred:I
-Ljava/util/concurrent/ForkJoinPool$WorkQueue;->top:I
-Ljava/util/concurrent/ForkJoinPool$WorkQueue;->transferStealCount(Ljava/util/concurrent/ForkJoinPool;)V
-Ljava/util/concurrent/ForkJoinPool$WorkQueue;->tryRemoveAndExec(Ljava/util/concurrent/ForkJoinTask;)Z
-Ljava/util/concurrent/ForkJoinPool$WorkQueue;->trySharedUnpush(Ljava/util/concurrent/ForkJoinTask;)Z
-Ljava/util/concurrent/ForkJoinPool$WorkQueue;->tryUnpush(Ljava/util/concurrent/ForkJoinTask;)Z
-Ljava/util/concurrent/ForkJoinPool$WorkQueue;->U:Lsun/misc/Unsafe;
-Ljava/util/concurrent/ForkJoinPool;-><init>(ILjava/util/concurrent/ForkJoinPool$ForkJoinWorkerThreadFactory;Ljava/lang/Thread$UncaughtExceptionHandler;ILjava/lang/String;)V
-Ljava/util/concurrent/ForkJoinPool;->ABASE:I
-Ljava/util/concurrent/ForkJoinPool;->AC_MASK:J
-Ljava/util/concurrent/ForkJoinPool;->AC_SHIFT:I
-Ljava/util/concurrent/ForkJoinPool;->AC_UNIT:J
-Ljava/util/concurrent/ForkJoinPool;->ADD_WORKER:J
-Ljava/util/concurrent/ForkJoinPool;->ASHIFT:I
-Ljava/util/concurrent/ForkJoinPool;->auxState:Ljava/util/concurrent/ForkJoinPool$AuxState;
-Ljava/util/concurrent/ForkJoinPool;->awaitJoin(Ljava/util/concurrent/ForkJoinPool$WorkQueue;Ljava/util/concurrent/ForkJoinTask;J)I
-Ljava/util/concurrent/ForkJoinPool;->awaitWork(Ljava/util/concurrent/ForkJoinPool$WorkQueue;)I
-Ljava/util/concurrent/ForkJoinPool;->checkFactory(Ljava/util/concurrent/ForkJoinPool$ForkJoinWorkerThreadFactory;)Ljava/util/concurrent/ForkJoinPool$ForkJoinWorkerThreadFactory;
-Ljava/util/concurrent/ForkJoinPool;->checkParallelism(I)I
-Ljava/util/concurrent/ForkJoinPool;->checkPermission()V
-Ljava/util/concurrent/ForkJoinPool;->common:Ljava/util/concurrent/ForkJoinPool;
-Ljava/util/concurrent/ForkJoinPool;->commonSubmitterQueue()Ljava/util/concurrent/ForkJoinPool$WorkQueue;
-Ljava/util/concurrent/ForkJoinPool;->COMMON_MAX_SPARES:I
-Ljava/util/concurrent/ForkJoinPool;->COMMON_PARALLELISM:I
-Ljava/util/concurrent/ForkJoinPool;->config:I
-Ljava/util/concurrent/ForkJoinPool;->createWorker(Z)Z
-Ljava/util/concurrent/ForkJoinPool;->CTL:J
-Ljava/util/concurrent/ForkJoinPool;->ctl:J
-Ljava/util/concurrent/ForkJoinPool;->DEFAULT_COMMON_MAX_SPARES:I
-Ljava/util/concurrent/ForkJoinPool;->deregisterWorker(Ljava/util/concurrent/ForkJoinWorkerThread;Ljava/lang/Throwable;)V
-Ljava/util/concurrent/ForkJoinPool;->EVENMASK:I
-Ljava/util/concurrent/ForkJoinPool;->externalHelpComplete(Ljava/util/concurrent/CountedCompleter;I)I
-Ljava/util/concurrent/ForkJoinPool;->externalPush(Ljava/util/concurrent/ForkJoinTask;)V
-Ljava/util/concurrent/ForkJoinPool;->externalSubmit(Ljava/util/concurrent/ForkJoinTask;)Ljava/util/concurrent/ForkJoinTask;
-Ljava/util/concurrent/ForkJoinPool;->factory:Ljava/util/concurrent/ForkJoinPool$ForkJoinWorkerThreadFactory;
-Ljava/util/concurrent/ForkJoinPool;->FIFO_QUEUE:I
-Ljava/util/concurrent/ForkJoinPool;->findNonEmptyStealQueue()Ljava/util/concurrent/ForkJoinPool$WorkQueue;
-Ljava/util/concurrent/ForkJoinPool;->getSurplusQueuedTaskCount()I
-Ljava/util/concurrent/ForkJoinPool;->helpComplete(Ljava/util/concurrent/ForkJoinPool$WorkQueue;Ljava/util/concurrent/CountedCompleter;I)I
-Ljava/util/concurrent/ForkJoinPool;->helpQuiescePool(Ljava/util/concurrent/ForkJoinPool$WorkQueue;)V
-Ljava/util/concurrent/ForkJoinPool;->helpStealer(Ljava/util/concurrent/ForkJoinPool$WorkQueue;Ljava/util/concurrent/ForkJoinTask;)V
-Ljava/util/concurrent/ForkJoinPool;->IDLE_TIMEOUT_MS:J
-Ljava/util/concurrent/ForkJoinPool;->inactivate(Ljava/util/concurrent/ForkJoinPool$WorkQueue;I)V
-Ljava/util/concurrent/ForkJoinPool;->IS_OWNED:I
-Ljava/util/concurrent/ForkJoinPool;->LIFO_QUEUE:I
-Ljava/util/concurrent/ForkJoinPool;->makeCommonPool()Ljava/util/concurrent/ForkJoinPool;
-Ljava/util/concurrent/ForkJoinPool;->MAX_CAP:I
-Ljava/util/concurrent/ForkJoinPool;->MODE_MASK:I
-Ljava/util/concurrent/ForkJoinPool;->modifyThreadPermission:Ljava/lang/RuntimePermission;
-Ljava/util/concurrent/ForkJoinPool;->nextPoolId()I
-Ljava/util/concurrent/ForkJoinPool;->nextTaskFor(Ljava/util/concurrent/ForkJoinPool$WorkQueue;)Ljava/util/concurrent/ForkJoinTask;
-Ljava/util/concurrent/ForkJoinPool;->POLL_LIMIT:I
-Ljava/util/concurrent/ForkJoinPool;->poolNumberSequence:I
-Ljava/util/concurrent/ForkJoinPool;->quiesceCommonPool()V
-Ljava/util/concurrent/ForkJoinPool;->registerWorker(Ljava/util/concurrent/ForkJoinWorkerThread;)Ljava/util/concurrent/ForkJoinPool$WorkQueue;
-Ljava/util/concurrent/ForkJoinPool;->runState:I
-Ljava/util/concurrent/ForkJoinPool;->RUNSTATE:J
-Ljava/util/concurrent/ForkJoinPool;->runWorker(Ljava/util/concurrent/ForkJoinPool$WorkQueue;)V
-Ljava/util/concurrent/ForkJoinPool;->scan(Ljava/util/concurrent/ForkJoinPool$WorkQueue;III)I
-Ljava/util/concurrent/ForkJoinPool;->SEED_INCREMENT:I
-Ljava/util/concurrent/ForkJoinPool;->SHUTDOWN:I
-Ljava/util/concurrent/ForkJoinPool;->signalWork()V
-Ljava/util/concurrent/ForkJoinPool;->SMASK:I
-Ljava/util/concurrent/ForkJoinPool;->SPARE_WORKER:I
-Ljava/util/concurrent/ForkJoinPool;->SP_MASK:J
-Ljava/util/concurrent/ForkJoinPool;->SQMASK:I
-Ljava/util/concurrent/ForkJoinPool;->SS_SEQ:I
-Ljava/util/concurrent/ForkJoinPool;->STARTED:I
-Ljava/util/concurrent/ForkJoinPool;->STOP:I
-Ljava/util/concurrent/ForkJoinPool;->TC_MASK:J
-Ljava/util/concurrent/ForkJoinPool;->TC_SHIFT:I
-Ljava/util/concurrent/ForkJoinPool;->TC_UNIT:J
-Ljava/util/concurrent/ForkJoinPool;->TERMINATED:I
-Ljava/util/concurrent/ForkJoinPool;->timedAwaitWork(Ljava/util/concurrent/ForkJoinPool$WorkQueue;J)I
-Ljava/util/concurrent/ForkJoinPool;->TIMEOUT_SLOP_MS:J
-Ljava/util/concurrent/ForkJoinPool;->tryAddWorker(J)V
-Ljava/util/concurrent/ForkJoinPool;->tryCompensate(Ljava/util/concurrent/ForkJoinPool$WorkQueue;)Z
-Ljava/util/concurrent/ForkJoinPool;->tryCreateExternalQueue(I)V
-Ljava/util/concurrent/ForkJoinPool;->tryDropSpare(Ljava/util/concurrent/ForkJoinPool$WorkQueue;)Z
-Ljava/util/concurrent/ForkJoinPool;->tryExternalUnpush(Ljava/util/concurrent/ForkJoinTask;)Z
-Ljava/util/concurrent/ForkJoinPool;->tryInitialize(Z)V
-Ljava/util/concurrent/ForkJoinPool;->tryReactivate(Ljava/util/concurrent/ForkJoinPool$WorkQueue;[Ljava/util/concurrent/ForkJoinPool$WorkQueue;I)V
-Ljava/util/concurrent/ForkJoinPool;->tryRelease(JLjava/util/concurrent/ForkJoinPool$WorkQueue;J)Z
-Ljava/util/concurrent/ForkJoinPool;->tryTerminate(ZZ)I
-Ljava/util/concurrent/ForkJoinPool;->U:Lsun/misc/Unsafe;
-Ljava/util/concurrent/ForkJoinPool;->UC_MASK:J
-Ljava/util/concurrent/ForkJoinPool;->ueh:Ljava/lang/Thread$UncaughtExceptionHandler;
-Ljava/util/concurrent/ForkJoinPool;->UNREGISTERED:I
-Ljava/util/concurrent/ForkJoinPool;->UNSIGNALLED:I
-Ljava/util/concurrent/ForkJoinPool;->workerNamePrefix:Ljava/lang/String;
-Ljava/util/concurrent/ForkJoinPool;->workQueues:[Ljava/util/concurrent/ForkJoinPool$WorkQueue;
-Ljava/util/concurrent/ForkJoinTask$AdaptedCallable;-><init>(Ljava/util/concurrent/Callable;)V
-Ljava/util/concurrent/ForkJoinTask$AdaptedCallable;->callable:Ljava/util/concurrent/Callable;
-Ljava/util/concurrent/ForkJoinTask$AdaptedCallable;->result:Ljava/lang/Object;
-Ljava/util/concurrent/ForkJoinTask$AdaptedCallable;->setRawResult(Ljava/lang/Object;)V
-Ljava/util/concurrent/ForkJoinTask$AdaptedRunnable;-><init>(Ljava/lang/Runnable;Ljava/lang/Object;)V
-Ljava/util/concurrent/ForkJoinTask$AdaptedRunnable;->result:Ljava/lang/Object;
-Ljava/util/concurrent/ForkJoinTask$AdaptedRunnable;->runnable:Ljava/lang/Runnable;
-Ljava/util/concurrent/ForkJoinTask$AdaptedRunnable;->setRawResult(Ljava/lang/Object;)V
-Ljava/util/concurrent/ForkJoinTask$AdaptedRunnableAction;-><init>(Ljava/lang/Runnable;)V
-Ljava/util/concurrent/ForkJoinTask$AdaptedRunnableAction;->runnable:Ljava/lang/Runnable;
-Ljava/util/concurrent/ForkJoinTask$AdaptedRunnableAction;->setRawResult(Ljava/lang/Void;)V
-Ljava/util/concurrent/ForkJoinTask$ExceptionNode;-><init>(Ljava/util/concurrent/ForkJoinTask;Ljava/lang/Throwable;Ljava/util/concurrent/ForkJoinTask$ExceptionNode;Ljava/lang/ref/ReferenceQueue;)V
-Ljava/util/concurrent/ForkJoinTask$ExceptionNode;->ex:Ljava/lang/Throwable;
-Ljava/util/concurrent/ForkJoinTask$ExceptionNode;->hashCode:I
-Ljava/util/concurrent/ForkJoinTask$ExceptionNode;->next:Ljava/util/concurrent/ForkJoinTask$ExceptionNode;
-Ljava/util/concurrent/ForkJoinTask$ExceptionNode;->thrower:J
-Ljava/util/concurrent/ForkJoinTask$RunnableExecuteAction;-><init>(Ljava/lang/Runnable;)V
-Ljava/util/concurrent/ForkJoinTask$RunnableExecuteAction;->internalPropagateException(Ljava/lang/Throwable;)V
-Ljava/util/concurrent/ForkJoinTask$RunnableExecuteAction;->runnable:Ljava/lang/Runnable;
-Ljava/util/concurrent/ForkJoinTask$RunnableExecuteAction;->setRawResult(Ljava/lang/Void;)V
-Ljava/util/concurrent/ForkJoinTask;->cancelIgnoringExceptions(Ljava/util/concurrent/ForkJoinTask;)V
-Ljava/util/concurrent/ForkJoinTask;->CANCELLED:I
-Ljava/util/concurrent/ForkJoinTask;->clearExceptionalCompletion()V
-Ljava/util/concurrent/ForkJoinTask;->doExec()I
-Ljava/util/concurrent/ForkJoinTask;->doInvoke()I
-Ljava/util/concurrent/ForkJoinTask;->doJoin()I
-Ljava/util/concurrent/ForkJoinTask;->DONE_MASK:I
-Ljava/util/concurrent/ForkJoinTask;->EXCEPTIONAL:I
-Ljava/util/concurrent/ForkJoinTask;->exceptionTable:[Ljava/util/concurrent/ForkJoinTask$ExceptionNode;
-Ljava/util/concurrent/ForkJoinTask;->exceptionTableLock:Ljava/util/concurrent/locks/ReentrantLock;
-Ljava/util/concurrent/ForkJoinTask;->exceptionTableRefQueue:Ljava/lang/ref/ReferenceQueue;
-Ljava/util/concurrent/ForkJoinTask;->EXCEPTION_MAP_CAPACITY:I
-Ljava/util/concurrent/ForkJoinTask;->expungeStaleExceptions()V
-Ljava/util/concurrent/ForkJoinTask;->externalAwaitDone()I
-Ljava/util/concurrent/ForkJoinTask;->externalInterruptibleAwaitDone()I
-Ljava/util/concurrent/ForkJoinTask;->getThrowableException()Ljava/lang/Throwable;
-Ljava/util/concurrent/ForkJoinTask;->helpExpungeStaleExceptions()V
-Ljava/util/concurrent/ForkJoinTask;->internalPropagateException(Ljava/lang/Throwable;)V
-Ljava/util/concurrent/ForkJoinTask;->internalWait(J)V
-Ljava/util/concurrent/ForkJoinTask;->NORMAL:I
-Ljava/util/concurrent/ForkJoinTask;->pollSubmission()Ljava/util/concurrent/ForkJoinTask;
-Ljava/util/concurrent/ForkJoinTask;->recordExceptionalCompletion(Ljava/lang/Throwable;)I
-Ljava/util/concurrent/ForkJoinTask;->reportException(I)V
-Ljava/util/concurrent/ForkJoinTask;->rethrow(Ljava/lang/Throwable;)V
-Ljava/util/concurrent/ForkJoinTask;->setCompletion(I)I
-Ljava/util/concurrent/ForkJoinTask;->setExceptionalCompletion(Ljava/lang/Throwable;)I
-Ljava/util/concurrent/ForkJoinTask;->SIGNAL:I
-Ljava/util/concurrent/ForkJoinTask;->SMASK:I
-Ljava/util/concurrent/ForkJoinTask;->status:I
-Ljava/util/concurrent/ForkJoinTask;->STATUS:J
-Ljava/util/concurrent/ForkJoinTask;->U:Lsun/misc/Unsafe;
-Ljava/util/concurrent/ForkJoinTask;->uncheckedThrow(Ljava/lang/Throwable;)V
-Ljava/util/concurrent/ForkJoinWorkerThread$InnocuousForkJoinWorkerThread;-><init>(Ljava/util/concurrent/ForkJoinPool;)V
-Ljava/util/concurrent/ForkJoinWorkerThread$InnocuousForkJoinWorkerThread;->afterTopLevelExec()V
-Ljava/util/concurrent/ForkJoinWorkerThread$InnocuousForkJoinWorkerThread;->createThreadGroup()Ljava/lang/ThreadGroup;
-Ljava/util/concurrent/ForkJoinWorkerThread$InnocuousForkJoinWorkerThread;->innocuousThreadGroup:Ljava/lang/ThreadGroup;
-Ljava/util/concurrent/ForkJoinWorkerThread$InnocuousForkJoinWorkerThread;->INNOCUOUS_ACC:Ljava/security/AccessControlContext;
-Ljava/util/concurrent/ForkJoinWorkerThread;-><init>(Ljava/util/concurrent/ForkJoinPool;Ljava/lang/ThreadGroup;Ljava/security/AccessControlContext;)V
-Ljava/util/concurrent/ForkJoinWorkerThread;->afterTopLevelExec()V
-Ljava/util/concurrent/ForkJoinWorkerThread;->eraseThreadLocals()V
-Ljava/util/concurrent/ForkJoinWorkerThread;->INHERITABLETHREADLOCALS:J
-Ljava/util/concurrent/ForkJoinWorkerThread;->INHERITEDACCESSCONTROLCONTEXT:J
-Ljava/util/concurrent/ForkJoinWorkerThread;->pool:Ljava/util/concurrent/ForkJoinPool;
-Ljava/util/concurrent/ForkJoinWorkerThread;->THREADLOCALS:J
-Ljava/util/concurrent/ForkJoinWorkerThread;->U:Lsun/misc/Unsafe;
-Ljava/util/concurrent/ForkJoinWorkerThread;->workQueue:Ljava/util/concurrent/ForkJoinPool$WorkQueue;
-Ljava/util/concurrent/FutureTask$WaitNode;-><init>()V
-Ljava/util/concurrent/FutureTask$WaitNode;->next:Ljava/util/concurrent/FutureTask$WaitNode;
-Ljava/util/concurrent/FutureTask$WaitNode;->thread:Ljava/lang/Thread;
-Ljava/util/concurrent/FutureTask;->awaitDone(ZJ)I
-Ljava/util/concurrent/FutureTask;->CANCELLED:I
-Ljava/util/concurrent/FutureTask;->COMPLETING:I
-Ljava/util/concurrent/FutureTask;->finishCompletion()V
-Ljava/util/concurrent/FutureTask;->handlePossibleCancellationInterrupt(I)V
-Ljava/util/concurrent/FutureTask;->INTERRUPTED:I
-Ljava/util/concurrent/FutureTask;->INTERRUPTING:I
-Ljava/util/concurrent/FutureTask;->NEW:I
-Ljava/util/concurrent/FutureTask;->NORMAL:I
-Ljava/util/concurrent/FutureTask;->removeWaiter(Ljava/util/concurrent/FutureTask$WaitNode;)V
-Ljava/util/concurrent/FutureTask;->report(I)Ljava/lang/Object;
-Ljava/util/concurrent/FutureTask;->RUNNER:J
-Ljava/util/concurrent/FutureTask;->runner:Ljava/lang/Thread;
-Ljava/util/concurrent/FutureTask;->STATE:J
-Ljava/util/concurrent/FutureTask;->U:Lsun/misc/Unsafe;
-Ljava/util/concurrent/FutureTask;->WAITERS:J
-Ljava/util/concurrent/FutureTask;->waiters:Ljava/util/concurrent/FutureTask$WaitNode;
-Ljava/util/concurrent/LinkedBlockingDeque$AbstractItr;->advance()V
-Ljava/util/concurrent/LinkedBlockingDeque$AbstractItr;->firstNode()Ljava/util/concurrent/LinkedBlockingDeque$Node;
-Ljava/util/concurrent/LinkedBlockingDeque$AbstractItr;->lastRet:Ljava/util/concurrent/LinkedBlockingDeque$Node;
-Ljava/util/concurrent/LinkedBlockingDeque$AbstractItr;->next:Ljava/util/concurrent/LinkedBlockingDeque$Node;
-Ljava/util/concurrent/LinkedBlockingDeque$AbstractItr;->nextItem:Ljava/lang/Object;
-Ljava/util/concurrent/LinkedBlockingDeque$AbstractItr;->nextNode(Ljava/util/concurrent/LinkedBlockingDeque$Node;)Ljava/util/concurrent/LinkedBlockingDeque$Node;
-Ljava/util/concurrent/LinkedBlockingDeque$AbstractItr;->succ(Ljava/util/concurrent/LinkedBlockingDeque$Node;)Ljava/util/concurrent/LinkedBlockingDeque$Node;
-Ljava/util/concurrent/LinkedBlockingDeque$DescendingItr;->firstNode()Ljava/util/concurrent/LinkedBlockingDeque$Node;
-Ljava/util/concurrent/LinkedBlockingDeque$DescendingItr;->nextNode(Ljava/util/concurrent/LinkedBlockingDeque$Node;)Ljava/util/concurrent/LinkedBlockingDeque$Node;
-Ljava/util/concurrent/LinkedBlockingDeque$Itr;->firstNode()Ljava/util/concurrent/LinkedBlockingDeque$Node;
-Ljava/util/concurrent/LinkedBlockingDeque$Itr;->nextNode(Ljava/util/concurrent/LinkedBlockingDeque$Node;)Ljava/util/concurrent/LinkedBlockingDeque$Node;
-Ljava/util/concurrent/LinkedBlockingDeque$LBDSpliterator;-><init>(Ljava/util/concurrent/LinkedBlockingDeque;)V
-Ljava/util/concurrent/LinkedBlockingDeque$LBDSpliterator;->batch:I
-Ljava/util/concurrent/LinkedBlockingDeque$LBDSpliterator;->current:Ljava/util/concurrent/LinkedBlockingDeque$Node;
-Ljava/util/concurrent/LinkedBlockingDeque$LBDSpliterator;->est:J
-Ljava/util/concurrent/LinkedBlockingDeque$LBDSpliterator;->exhausted:Z
-Ljava/util/concurrent/LinkedBlockingDeque$LBDSpliterator;->forEachRemaining(Ljava/util/function/Consumer;)V
-Ljava/util/concurrent/LinkedBlockingDeque$LBDSpliterator;->MAX_BATCH:I
-Ljava/util/concurrent/LinkedBlockingDeque$LBDSpliterator;->queue:Ljava/util/concurrent/LinkedBlockingDeque;
-Ljava/util/concurrent/LinkedBlockingDeque$LBDSpliterator;->tryAdvance(Ljava/util/function/Consumer;)Z
-Ljava/util/concurrent/LinkedBlockingDeque$Node;-><init>(Ljava/lang/Object;)V
-Ljava/util/concurrent/LinkedBlockingDeque$Node;->item:Ljava/lang/Object;
-Ljava/util/concurrent/LinkedBlockingDeque$Node;->next:Ljava/util/concurrent/LinkedBlockingDeque$Node;
-Ljava/util/concurrent/LinkedBlockingDeque$Node;->prev:Ljava/util/concurrent/LinkedBlockingDeque$Node;
-Ljava/util/concurrent/LinkedBlockingDeque;->capacity:I
-Ljava/util/concurrent/LinkedBlockingDeque;->count:I
-Ljava/util/concurrent/LinkedBlockingDeque;->last:Ljava/util/concurrent/LinkedBlockingDeque$Node;
-Ljava/util/concurrent/LinkedBlockingDeque;->linkFirst(Ljava/util/concurrent/LinkedBlockingDeque$Node;)Z
-Ljava/util/concurrent/LinkedBlockingDeque;->linkLast(Ljava/util/concurrent/LinkedBlockingDeque$Node;)Z
-Ljava/util/concurrent/LinkedBlockingDeque;->notEmpty:Ljava/util/concurrent/locks/Condition;
-Ljava/util/concurrent/LinkedBlockingDeque;->notFull:Ljava/util/concurrent/locks/Condition;
-Ljava/util/concurrent/LinkedBlockingDeque;->unlink(Ljava/util/concurrent/LinkedBlockingDeque$Node;)V
-Ljava/util/concurrent/LinkedBlockingDeque;->unlinkFirst()Ljava/lang/Object;
-Ljava/util/concurrent/LinkedBlockingDeque;->unlinkLast()Ljava/lang/Object;
-Ljava/util/concurrent/LinkedBlockingQueue$Itr;->current:Ljava/util/concurrent/LinkedBlockingQueue$Node;
-Ljava/util/concurrent/LinkedBlockingQueue$Itr;->currentElement:Ljava/lang/Object;
-Ljava/util/concurrent/LinkedBlockingQueue$Itr;->lastRet:Ljava/util/concurrent/LinkedBlockingQueue$Node;
-Ljava/util/concurrent/LinkedBlockingQueue$LBQSpliterator;-><init>(Ljava/util/concurrent/LinkedBlockingQueue;)V
-Ljava/util/concurrent/LinkedBlockingQueue$LBQSpliterator;->batch:I
-Ljava/util/concurrent/LinkedBlockingQueue$LBQSpliterator;->current:Ljava/util/concurrent/LinkedBlockingQueue$Node;
-Ljava/util/concurrent/LinkedBlockingQueue$LBQSpliterator;->est:J
-Ljava/util/concurrent/LinkedBlockingQueue$LBQSpliterator;->exhausted:Z
-Ljava/util/concurrent/LinkedBlockingQueue$LBQSpliterator;->forEachRemaining(Ljava/util/function/Consumer;)V
-Ljava/util/concurrent/LinkedBlockingQueue$LBQSpliterator;->MAX_BATCH:I
-Ljava/util/concurrent/LinkedBlockingQueue$LBQSpliterator;->queue:Ljava/util/concurrent/LinkedBlockingQueue;
-Ljava/util/concurrent/LinkedBlockingQueue$LBQSpliterator;->tryAdvance(Ljava/util/function/Consumer;)Z
-Ljava/util/concurrent/LinkedBlockingQueue$Node;-><init>(Ljava/lang/Object;)V
-Ljava/util/concurrent/LinkedBlockingQueue$Node;->item:Ljava/lang/Object;
-Ljava/util/concurrent/LinkedBlockingQueue$Node;->next:Ljava/util/concurrent/LinkedBlockingQueue$Node;
-Ljava/util/concurrent/LinkedBlockingQueue;->count:Ljava/util/concurrent/atomic/AtomicInteger;
-Ljava/util/concurrent/LinkedBlockingQueue;->dequeue()Ljava/lang/Object;
-Ljava/util/concurrent/LinkedBlockingQueue;->enqueue(Ljava/util/concurrent/LinkedBlockingQueue$Node;)V
-Ljava/util/concurrent/LinkedBlockingQueue;->fullyLock()V
-Ljava/util/concurrent/LinkedBlockingQueue;->fullyUnlock()V
-Ljava/util/concurrent/LinkedBlockingQueue;->last:Ljava/util/concurrent/LinkedBlockingQueue$Node;
-Ljava/util/concurrent/LinkedBlockingQueue;->notEmpty:Ljava/util/concurrent/locks/Condition;
-Ljava/util/concurrent/LinkedBlockingQueue;->notFull:Ljava/util/concurrent/locks/Condition;
-Ljava/util/concurrent/LinkedBlockingQueue;->signalNotEmpty()V
-Ljava/util/concurrent/LinkedBlockingQueue;->signalNotFull()V
-Ljava/util/concurrent/LinkedBlockingQueue;->unlink(Ljava/util/concurrent/LinkedBlockingQueue$Node;Ljava/util/concurrent/LinkedBlockingQueue$Node;)V
-Ljava/util/concurrent/LinkedTransferQueue$Itr;->advance(Ljava/util/concurrent/LinkedTransferQueue$Node;)V
-Ljava/util/concurrent/LinkedTransferQueue$Itr;->lastPred:Ljava/util/concurrent/LinkedTransferQueue$Node;
-Ljava/util/concurrent/LinkedTransferQueue$Itr;->lastRet:Ljava/util/concurrent/LinkedTransferQueue$Node;
-Ljava/util/concurrent/LinkedTransferQueue$Itr;->nextItem:Ljava/lang/Object;
-Ljava/util/concurrent/LinkedTransferQueue$Itr;->nextNode:Ljava/util/concurrent/LinkedTransferQueue$Node;
-Ljava/util/concurrent/LinkedTransferQueue$LTQSpliterator;->batch:I
-Ljava/util/concurrent/LinkedTransferQueue$LTQSpliterator;->current:Ljava/util/concurrent/LinkedTransferQueue$Node;
-Ljava/util/concurrent/LinkedTransferQueue$LTQSpliterator;->exhausted:Z
-Ljava/util/concurrent/LinkedTransferQueue$LTQSpliterator;->forEachRemaining(Ljava/util/function/Consumer;)V
-Ljava/util/concurrent/LinkedTransferQueue$LTQSpliterator;->MAX_BATCH:I
-Ljava/util/concurrent/LinkedTransferQueue$LTQSpliterator;->tryAdvance(Ljava/util/function/Consumer;)Z
-Ljava/util/concurrent/LinkedTransferQueue$Node;-><init>(Ljava/lang/Object;Z)V
-Ljava/util/concurrent/LinkedTransferQueue$Node;->cannotPrecede(Z)Z
-Ljava/util/concurrent/LinkedTransferQueue$Node;->casItem(Ljava/lang/Object;Ljava/lang/Object;)Z
-Ljava/util/concurrent/LinkedTransferQueue$Node;->casNext(Ljava/util/concurrent/LinkedTransferQueue$Node;Ljava/util/concurrent/LinkedTransferQueue$Node;)Z
-Ljava/util/concurrent/LinkedTransferQueue$Node;->forgetContents()V
-Ljava/util/concurrent/LinkedTransferQueue$Node;->forgetNext()V
-Ljava/util/concurrent/LinkedTransferQueue$Node;->isData:Z
-Ljava/util/concurrent/LinkedTransferQueue$Node;->isMatched()Z
-Ljava/util/concurrent/LinkedTransferQueue$Node;->isUnmatchedRequest()Z
-Ljava/util/concurrent/LinkedTransferQueue$Node;->ITEM:J
-Ljava/util/concurrent/LinkedTransferQueue$Node;->item:Ljava/lang/Object;
-Ljava/util/concurrent/LinkedTransferQueue$Node;->NEXT:J
-Ljava/util/concurrent/LinkedTransferQueue$Node;->next:Ljava/util/concurrent/LinkedTransferQueue$Node;
-Ljava/util/concurrent/LinkedTransferQueue$Node;->tryMatchData()Z
-Ljava/util/concurrent/LinkedTransferQueue$Node;->U:Lsun/misc/Unsafe;
-Ljava/util/concurrent/LinkedTransferQueue$Node;->WAITER:J
-Ljava/util/concurrent/LinkedTransferQueue$Node;->waiter:Ljava/lang/Thread;
-Ljava/util/concurrent/LinkedTransferQueue;->ASYNC:I
-Ljava/util/concurrent/LinkedTransferQueue;->awaitMatch(Ljava/util/concurrent/LinkedTransferQueue$Node;Ljava/util/concurrent/LinkedTransferQueue$Node;Ljava/lang/Object;ZJ)Ljava/lang/Object;
-Ljava/util/concurrent/LinkedTransferQueue;->casHead(Ljava/util/concurrent/LinkedTransferQueue$Node;Ljava/util/concurrent/LinkedTransferQueue$Node;)Z
-Ljava/util/concurrent/LinkedTransferQueue;->casSweepVotes(II)Z
-Ljava/util/concurrent/LinkedTransferQueue;->casTail(Ljava/util/concurrent/LinkedTransferQueue$Node;Ljava/util/concurrent/LinkedTransferQueue$Node;)Z
-Ljava/util/concurrent/LinkedTransferQueue;->CHAINED_SPINS:I
-Ljava/util/concurrent/LinkedTransferQueue;->countOfMode(Z)I
-Ljava/util/concurrent/LinkedTransferQueue;->findAndRemove(Ljava/lang/Object;)Z
-Ljava/util/concurrent/LinkedTransferQueue;->firstDataNode()Ljava/util/concurrent/LinkedTransferQueue$Node;
-Ljava/util/concurrent/LinkedTransferQueue;->FRONT_SPINS:I
-Ljava/util/concurrent/LinkedTransferQueue;->HEAD:J
-Ljava/util/concurrent/LinkedTransferQueue;->head:Ljava/util/concurrent/LinkedTransferQueue$Node;
-Ljava/util/concurrent/LinkedTransferQueue;->MP:Z
-Ljava/util/concurrent/LinkedTransferQueue;->NOW:I
-Ljava/util/concurrent/LinkedTransferQueue;->spinsFor(Ljava/util/concurrent/LinkedTransferQueue$Node;Z)I
-Ljava/util/concurrent/LinkedTransferQueue;->succ(Ljava/util/concurrent/LinkedTransferQueue$Node;)Ljava/util/concurrent/LinkedTransferQueue$Node;
-Ljava/util/concurrent/LinkedTransferQueue;->sweep()V
-Ljava/util/concurrent/LinkedTransferQueue;->sweepVotes:I
-Ljava/util/concurrent/LinkedTransferQueue;->SWEEPVOTES:J
-Ljava/util/concurrent/LinkedTransferQueue;->SWEEP_THRESHOLD:I
-Ljava/util/concurrent/LinkedTransferQueue;->SYNC:I
-Ljava/util/concurrent/LinkedTransferQueue;->TAIL:J
-Ljava/util/concurrent/LinkedTransferQueue;->tail:Ljava/util/concurrent/LinkedTransferQueue$Node;
-Ljava/util/concurrent/LinkedTransferQueue;->TIMED:I
-Ljava/util/concurrent/LinkedTransferQueue;->toArrayInternal([Ljava/lang/Object;)[Ljava/lang/Object;
-Ljava/util/concurrent/LinkedTransferQueue;->tryAppend(Ljava/util/concurrent/LinkedTransferQueue$Node;Z)Ljava/util/concurrent/LinkedTransferQueue$Node;
-Ljava/util/concurrent/LinkedTransferQueue;->U:Lsun/misc/Unsafe;
-Ljava/util/concurrent/LinkedTransferQueue;->unsplice(Ljava/util/concurrent/LinkedTransferQueue$Node;Ljava/util/concurrent/LinkedTransferQueue$Node;)V
-Ljava/util/concurrent/LinkedTransferQueue;->xfer(Ljava/lang/Object;ZIJ)Ljava/lang/Object;
-Ljava/util/concurrent/locks/AbstractOwnableSynchronizer;->exclusiveOwnerThread:Ljava/lang/Thread;
-Ljava/util/concurrent/locks/AbstractQueuedLongSynchronizer$ConditionObject;->addConditionWaiter()Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
-Ljava/util/concurrent/locks/AbstractQueuedLongSynchronizer$ConditionObject;->checkInterruptWhileWaiting(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)I
-Ljava/util/concurrent/locks/AbstractQueuedLongSynchronizer$ConditionObject;->doSignal(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)V
-Ljava/util/concurrent/locks/AbstractQueuedLongSynchronizer$ConditionObject;->doSignalAll(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)V
-Ljava/util/concurrent/locks/AbstractQueuedLongSynchronizer$ConditionObject;->firstWaiter:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
-Ljava/util/concurrent/locks/AbstractQueuedLongSynchronizer$ConditionObject;->isOwnedBy(Ljava/util/concurrent/locks/AbstractQueuedLongSynchronizer;)Z
-Ljava/util/concurrent/locks/AbstractQueuedLongSynchronizer$ConditionObject;->lastWaiter:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
-Ljava/util/concurrent/locks/AbstractQueuedLongSynchronizer$ConditionObject;->REINTERRUPT:I
-Ljava/util/concurrent/locks/AbstractQueuedLongSynchronizer$ConditionObject;->reportInterruptAfterWait(I)V
-Ljava/util/concurrent/locks/AbstractQueuedLongSynchronizer$ConditionObject;->THROW_IE:I
-Ljava/util/concurrent/locks/AbstractQueuedLongSynchronizer$ConditionObject;->unlinkCancelledWaiters()V
-Ljava/util/concurrent/locks/AbstractQueuedLongSynchronizer;->acquireQueued(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;J)Z
-Ljava/util/concurrent/locks/AbstractQueuedLongSynchronizer;->addWaiter(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
-Ljava/util/concurrent/locks/AbstractQueuedLongSynchronizer;->apparentlyFirstQueuedIsExclusive()Z
-Ljava/util/concurrent/locks/AbstractQueuedLongSynchronizer;->cancelAcquire(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)V
-Ljava/util/concurrent/locks/AbstractQueuedLongSynchronizer;->compareAndSetTail(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)Z
-Ljava/util/concurrent/locks/AbstractQueuedLongSynchronizer;->doAcquireInterruptibly(J)V
-Ljava/util/concurrent/locks/AbstractQueuedLongSynchronizer;->doAcquireNanos(JJ)Z
-Ljava/util/concurrent/locks/AbstractQueuedLongSynchronizer;->doAcquireShared(J)V
-Ljava/util/concurrent/locks/AbstractQueuedLongSynchronizer;->doAcquireSharedInterruptibly(J)V
-Ljava/util/concurrent/locks/AbstractQueuedLongSynchronizer;->doAcquireSharedNanos(JJ)Z
-Ljava/util/concurrent/locks/AbstractQueuedLongSynchronizer;->doReleaseShared()V
-Ljava/util/concurrent/locks/AbstractQueuedLongSynchronizer;->enq(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
-Ljava/util/concurrent/locks/AbstractQueuedLongSynchronizer;->findNodeFromTail(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)Z
-Ljava/util/concurrent/locks/AbstractQueuedLongSynchronizer;->fullGetFirstQueuedThread()Ljava/lang/Thread;
-Ljava/util/concurrent/locks/AbstractQueuedLongSynchronizer;->fullyRelease(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)J
-Ljava/util/concurrent/locks/AbstractQueuedLongSynchronizer;->HEAD:J
-Ljava/util/concurrent/locks/AbstractQueuedLongSynchronizer;->head:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
-Ljava/util/concurrent/locks/AbstractQueuedLongSynchronizer;->initializeSyncQueue()V
-Ljava/util/concurrent/locks/AbstractQueuedLongSynchronizer;->isOnSyncQueue(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)Z
-Ljava/util/concurrent/locks/AbstractQueuedLongSynchronizer;->parkAndCheckInterrupt()Z
-Ljava/util/concurrent/locks/AbstractQueuedLongSynchronizer;->selfInterrupt()V
-Ljava/util/concurrent/locks/AbstractQueuedLongSynchronizer;->setHead(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)V
-Ljava/util/concurrent/locks/AbstractQueuedLongSynchronizer;->setHeadAndPropagate(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;J)V
-Ljava/util/concurrent/locks/AbstractQueuedLongSynchronizer;->shouldParkAfterFailedAcquire(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)Z
-Ljava/util/concurrent/locks/AbstractQueuedLongSynchronizer;->SPIN_FOR_TIMEOUT_THRESHOLD:J
-Ljava/util/concurrent/locks/AbstractQueuedLongSynchronizer;->STATE:J
-Ljava/util/concurrent/locks/AbstractQueuedLongSynchronizer;->state:J
-Ljava/util/concurrent/locks/AbstractQueuedLongSynchronizer;->TAIL:J
-Ljava/util/concurrent/locks/AbstractQueuedLongSynchronizer;->tail:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
-Ljava/util/concurrent/locks/AbstractQueuedLongSynchronizer;->transferAfterCancelledWait(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)Z
-Ljava/util/concurrent/locks/AbstractQueuedLongSynchronizer;->transferForSignal(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)Z
-Ljava/util/concurrent/locks/AbstractQueuedLongSynchronizer;->U:Lsun/misc/Unsafe;
-Ljava/util/concurrent/locks/AbstractQueuedLongSynchronizer;->unparkSuccessor(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)V
-Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject;->addConditionWaiter()Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
-Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject;->checkInterruptWhileWaiting(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)I
-Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject;->doSignal(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)V
-Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject;->doSignalAll(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)V
-Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject;->firstWaiter:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
-Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject;->isOwnedBy(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;)Z
-Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject;->lastWaiter:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
-Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject;->REINTERRUPT:I
-Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject;->reportInterruptAfterWait(I)V
-Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject;->THROW_IE:I
-Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject;->unlinkCancelledWaiters()V
-Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;-><init>()V
-Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;-><init>(I)V
-Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;-><init>(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)V
-Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;->CANCELLED:I
-Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;->compareAndSetNext(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)Z
-Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;->compareAndSetWaitStatus(II)Z
-Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;->CONDITION:I
-Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;->EXCLUSIVE:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
-Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;->isShared()Z
-Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;->NEXT:J
-Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;->next:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
-Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;->nextWaiter:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
-Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;->predecessor()Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
-Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;->PREV:J
-Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;->prev:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
-Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;->PROPAGATE:I
-Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;->SHARED:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
-Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;->SIGNAL:I
-Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;->THREAD:J
-Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;->thread:Ljava/lang/Thread;
-Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;->U:Lsun/misc/Unsafe;
-Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;->waitStatus:I
-Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;->WAITSTATUS:J
-Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;->acquireQueued(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;I)Z
-Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;->addWaiter(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
-Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;->apparentlyFirstQueuedIsExclusive()Z
-Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;->cancelAcquire(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)V
-Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;->compareAndSetTail(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)Z
-Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;->doAcquireInterruptibly(I)V
-Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;->doAcquireNanos(IJ)Z
-Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;->doAcquireShared(I)V
-Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;->doAcquireSharedInterruptibly(I)V
-Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;->doAcquireSharedNanos(IJ)Z
-Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;->doReleaseShared()V
-Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;->enq(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
-Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;->findNodeFromTail(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)Z
-Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;->fullGetFirstQueuedThread()Ljava/lang/Thread;
-Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;->fullyRelease(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)I
-Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;->HEAD:J
-Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;->head:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
-Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;->initializeSyncQueue()V
-Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;->isOnSyncQueue(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)Z
-Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;->parkAndCheckInterrupt()Z
-Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;->selfInterrupt()V
-Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;->setHead(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)V
-Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;->setHeadAndPropagate(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;I)V
-Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;->shouldParkAfterFailedAcquire(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)Z
-Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;->SPIN_FOR_TIMEOUT_THRESHOLD:J
-Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;->state:I
-Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;->STATE:J
-Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;->TAIL:J
-Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;->tail:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
-Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;->transferAfterCancelledWait(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)Z
-Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;->transferForSignal(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)Z
-Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;->U:Lsun/misc/Unsafe;
-Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;->unparkSuccessor(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)V
-Ljava/util/concurrent/locks/LockSupport;-><init>()V
-Ljava/util/concurrent/locks/LockSupport;->nextSecondarySeed()I
-Ljava/util/concurrent/locks/LockSupport;->PARKBLOCKER:J
-Ljava/util/concurrent/locks/LockSupport;->SECONDARY:J
-Ljava/util/concurrent/locks/LockSupport;->setBlocker(Ljava/lang/Thread;Ljava/lang/Object;)V
-Ljava/util/concurrent/locks/LockSupport;->U:Lsun/misc/Unsafe;
-Ljava/util/concurrent/locks/ReentrantLock$FairSync;-><init>()V
-Ljava/util/concurrent/locks/ReentrantLock$FairSync;->lock()V
-Ljava/util/concurrent/locks/ReentrantLock$NonfairSync;-><init>()V
-Ljava/util/concurrent/locks/ReentrantLock$NonfairSync;->lock()V
-Ljava/util/concurrent/locks/ReentrantLock$Sync;-><init>()V
-Ljava/util/concurrent/locks/ReentrantLock$Sync;->getHoldCount()I
-Ljava/util/concurrent/locks/ReentrantLock$Sync;->getOwner()Ljava/lang/Thread;
-Ljava/util/concurrent/locks/ReentrantLock$Sync;->isLocked()Z
-Ljava/util/concurrent/locks/ReentrantLock$Sync;->lock()V
-Ljava/util/concurrent/locks/ReentrantLock$Sync;->newCondition()Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject;
-Ljava/util/concurrent/locks/ReentrantLock$Sync;->nonfairTryAcquire(I)Z
-Ljava/util/concurrent/locks/ReentrantReadWriteLock$FairSync;-><init>()V
-Ljava/util/concurrent/locks/ReentrantReadWriteLock$FairSync;->readerShouldBlock()Z
-Ljava/util/concurrent/locks/ReentrantReadWriteLock$FairSync;->writerShouldBlock()Z
-Ljava/util/concurrent/locks/ReentrantReadWriteLock$NonfairSync;-><init>()V
-Ljava/util/concurrent/locks/ReentrantReadWriteLock$NonfairSync;->readerShouldBlock()Z
-Ljava/util/concurrent/locks/ReentrantReadWriteLock$NonfairSync;->writerShouldBlock()Z
-Ljava/util/concurrent/locks/ReentrantReadWriteLock$ReadLock;->sync:Ljava/util/concurrent/locks/ReentrantReadWriteLock$Sync;
-Ljava/util/concurrent/locks/ReentrantReadWriteLock$Sync$HoldCounter;-><init>()V
-Ljava/util/concurrent/locks/ReentrantReadWriteLock$Sync$HoldCounter;->count:I
-Ljava/util/concurrent/locks/ReentrantReadWriteLock$Sync$HoldCounter;->tid:J
-Ljava/util/concurrent/locks/ReentrantReadWriteLock$Sync$ThreadLocalHoldCounter;-><init>()V
-Ljava/util/concurrent/locks/ReentrantReadWriteLock$Sync;-><init>()V
-Ljava/util/concurrent/locks/ReentrantReadWriteLock$Sync;->cachedHoldCounter:Ljava/util/concurrent/locks/ReentrantReadWriteLock$Sync$HoldCounter;
-Ljava/util/concurrent/locks/ReentrantReadWriteLock$Sync;->exclusiveCount(I)I
-Ljava/util/concurrent/locks/ReentrantReadWriteLock$Sync;->EXCLUSIVE_MASK:I
-Ljava/util/concurrent/locks/ReentrantReadWriteLock$Sync;->firstReader:Ljava/lang/Thread;
-Ljava/util/concurrent/locks/ReentrantReadWriteLock$Sync;->firstReaderHoldCount:I
-Ljava/util/concurrent/locks/ReentrantReadWriteLock$Sync;->fullTryAcquireShared(Ljava/lang/Thread;)I
-Ljava/util/concurrent/locks/ReentrantReadWriteLock$Sync;->getCount()I
-Ljava/util/concurrent/locks/ReentrantReadWriteLock$Sync;->getOwner()Ljava/lang/Thread;
-Ljava/util/concurrent/locks/ReentrantReadWriteLock$Sync;->getReadHoldCount()I
-Ljava/util/concurrent/locks/ReentrantReadWriteLock$Sync;->getReadLockCount()I
-Ljava/util/concurrent/locks/ReentrantReadWriteLock$Sync;->getWriteHoldCount()I
-Ljava/util/concurrent/locks/ReentrantReadWriteLock$Sync;->isWriteLocked()Z
-Ljava/util/concurrent/locks/ReentrantReadWriteLock$Sync;->MAX_COUNT:I
-Ljava/util/concurrent/locks/ReentrantReadWriteLock$Sync;->newCondition()Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject;
-Ljava/util/concurrent/locks/ReentrantReadWriteLock$Sync;->readerShouldBlock()Z
-Ljava/util/concurrent/locks/ReentrantReadWriteLock$Sync;->readHolds:Ljava/util/concurrent/locks/ReentrantReadWriteLock$Sync$ThreadLocalHoldCounter;
-Ljava/util/concurrent/locks/ReentrantReadWriteLock$Sync;->sharedCount(I)I
-Ljava/util/concurrent/locks/ReentrantReadWriteLock$Sync;->SHARED_SHIFT:I
-Ljava/util/concurrent/locks/ReentrantReadWriteLock$Sync;->SHARED_UNIT:I
-Ljava/util/concurrent/locks/ReentrantReadWriteLock$Sync;->tryReadLock()Z
-Ljava/util/concurrent/locks/ReentrantReadWriteLock$Sync;->tryWriteLock()Z
-Ljava/util/concurrent/locks/ReentrantReadWriteLock$Sync;->unmatchedUnlockException()Ljava/lang/IllegalMonitorStateException;
-Ljava/util/concurrent/locks/ReentrantReadWriteLock$Sync;->writerShouldBlock()Z
-Ljava/util/concurrent/locks/ReentrantReadWriteLock$WriteLock;->sync:Ljava/util/concurrent/locks/ReentrantReadWriteLock$Sync;
-Ljava/util/concurrent/locks/ReentrantReadWriteLock;->getThreadId(Ljava/lang/Thread;)J
-Ljava/util/concurrent/locks/ReentrantReadWriteLock;->readerLock:Ljava/util/concurrent/locks/ReentrantReadWriteLock$ReadLock;
-Ljava/util/concurrent/locks/ReentrantReadWriteLock;->sync:Ljava/util/concurrent/locks/ReentrantReadWriteLock$Sync;
-Ljava/util/concurrent/locks/ReentrantReadWriteLock;->TID:J
-Ljava/util/concurrent/locks/ReentrantReadWriteLock;->U:Lsun/misc/Unsafe;
-Ljava/util/concurrent/locks/ReentrantReadWriteLock;->writerLock:Ljava/util/concurrent/locks/ReentrantReadWriteLock$WriteLock;
-Ljava/util/concurrent/locks/StampedLock$WNode;-><init>(ILjava/util/concurrent/locks/StampedLock$WNode;)V
-Ljava/util/concurrent/locks/StampedLock$WNode;->cowait:Ljava/util/concurrent/locks/StampedLock$WNode;
-Ljava/util/concurrent/locks/StampedLock$WNode;->mode:I
-Ljava/util/concurrent/locks/StampedLock$WNode;->next:Ljava/util/concurrent/locks/StampedLock$WNode;
-Ljava/util/concurrent/locks/StampedLock$WNode;->prev:Ljava/util/concurrent/locks/StampedLock$WNode;
-Ljava/util/concurrent/locks/StampedLock$WNode;->status:I
-Ljava/util/concurrent/locks/StampedLock$WNode;->thread:Ljava/lang/Thread;
-Ljava/util/concurrent/locks/StampedLock;->ABITS:J
-Ljava/util/concurrent/locks/StampedLock;->acquireRead(ZJ)J
-Ljava/util/concurrent/locks/StampedLock;->acquireWrite(ZJ)J
-Ljava/util/concurrent/locks/StampedLock;->CANCELLED:I
-Ljava/util/concurrent/locks/StampedLock;->cancelWaiter(Ljava/util/concurrent/locks/StampedLock$WNode;Ljava/util/concurrent/locks/StampedLock$WNode;Z)J
-Ljava/util/concurrent/locks/StampedLock;->getReadLockCount(J)I
-Ljava/util/concurrent/locks/StampedLock;->HEAD_SPINS:I
-Ljava/util/concurrent/locks/StampedLock;->INTERRUPTED:J
-Ljava/util/concurrent/locks/StampedLock;->LG_READERS:I
-Ljava/util/concurrent/locks/StampedLock;->MAX_HEAD_SPINS:I
-Ljava/util/concurrent/locks/StampedLock;->NCPU:I
-Ljava/util/concurrent/locks/StampedLock;->ORIGIN:J
-Ljava/util/concurrent/locks/StampedLock;->OVERFLOW_YIELD_RATE:I
-Ljava/util/concurrent/locks/StampedLock;->PARKBLOCKER:J
-Ljava/util/concurrent/locks/StampedLock;->RBITS:J
-Ljava/util/concurrent/locks/StampedLock;->readerOverflow:I
-Ljava/util/concurrent/locks/StampedLock;->readLockView:Ljava/util/concurrent/locks/StampedLock$ReadLockView;
-Ljava/util/concurrent/locks/StampedLock;->readWriteLockView:Ljava/util/concurrent/locks/StampedLock$ReadWriteLockView;
-Ljava/util/concurrent/locks/StampedLock;->release(Ljava/util/concurrent/locks/StampedLock$WNode;)V
-Ljava/util/concurrent/locks/StampedLock;->RFULL:J
-Ljava/util/concurrent/locks/StampedLock;->RMODE:I
-Ljava/util/concurrent/locks/StampedLock;->RUNIT:J
-Ljava/util/concurrent/locks/StampedLock;->SBITS:J
-Ljava/util/concurrent/locks/StampedLock;->SPINS:I
-Ljava/util/concurrent/locks/StampedLock;->STATE:J
-Ljava/util/concurrent/locks/StampedLock;->state:J
-Ljava/util/concurrent/locks/StampedLock;->tryDecReaderOverflow(J)J
-Ljava/util/concurrent/locks/StampedLock;->tryIncReaderOverflow(J)J
-Ljava/util/concurrent/locks/StampedLock;->U:Lsun/misc/Unsafe;
-Ljava/util/concurrent/locks/StampedLock;->unstampedUnlockRead()V
-Ljava/util/concurrent/locks/StampedLock;->unstampedUnlockWrite()V
-Ljava/util/concurrent/locks/StampedLock;->WAITING:I
-Ljava/util/concurrent/locks/StampedLock;->WBIT:J
-Ljava/util/concurrent/locks/StampedLock;->WCOWAIT:J
-Ljava/util/concurrent/locks/StampedLock;->WHEAD:J
-Ljava/util/concurrent/locks/StampedLock;->whead:Ljava/util/concurrent/locks/StampedLock$WNode;
-Ljava/util/concurrent/locks/StampedLock;->WMODE:I
-Ljava/util/concurrent/locks/StampedLock;->WNEXT:J
-Ljava/util/concurrent/locks/StampedLock;->writeLockView:Ljava/util/concurrent/locks/StampedLock$WriteLockView;
-Ljava/util/concurrent/locks/StampedLock;->WSTATUS:J
-Ljava/util/concurrent/locks/StampedLock;->WTAIL:J
-Ljava/util/concurrent/locks/StampedLock;->wtail:Ljava/util/concurrent/locks/StampedLock$WNode;
-Ljava/util/concurrent/Phaser$QNode;-><init>(Ljava/util/concurrent/Phaser;IZZJ)V
-Ljava/util/concurrent/Phaser$QNode;->deadline:J
-Ljava/util/concurrent/Phaser$QNode;->interruptible:Z
-Ljava/util/concurrent/Phaser$QNode;->nanos:J
-Ljava/util/concurrent/Phaser$QNode;->next:Ljava/util/concurrent/Phaser$QNode;
-Ljava/util/concurrent/Phaser$QNode;->phase:I
-Ljava/util/concurrent/Phaser$QNode;->phaser:Ljava/util/concurrent/Phaser;
-Ljava/util/concurrent/Phaser$QNode;->thread:Ljava/lang/Thread;
-Ljava/util/concurrent/Phaser$QNode;->timed:Z
-Ljava/util/concurrent/Phaser$QNode;->wasInterrupted:Z
-Ljava/util/concurrent/Phaser;->abortWait(I)I
-Ljava/util/concurrent/Phaser;->arrivedOf(J)I
-Ljava/util/concurrent/Phaser;->badArrive(J)Ljava/lang/String;
-Ljava/util/concurrent/Phaser;->badRegister(J)Ljava/lang/String;
-Ljava/util/concurrent/Phaser;->COUNTS_MASK:J
-Ljava/util/concurrent/Phaser;->doArrive(I)I
-Ljava/util/concurrent/Phaser;->doRegister(I)I
-Ljava/util/concurrent/Phaser;->EMPTY:I
-Ljava/util/concurrent/Phaser;->evenQ:Ljava/util/concurrent/atomic/AtomicReference;
-Ljava/util/concurrent/Phaser;->internalAwaitAdvance(ILjava/util/concurrent/Phaser$QNode;)I
-Ljava/util/concurrent/Phaser;->MAX_PARTIES:I
-Ljava/util/concurrent/Phaser;->MAX_PHASE:I
-Ljava/util/concurrent/Phaser;->NCPU:I
-Ljava/util/concurrent/Phaser;->oddQ:Ljava/util/concurrent/atomic/AtomicReference;
-Ljava/util/concurrent/Phaser;->ONE_ARRIVAL:I
-Ljava/util/concurrent/Phaser;->ONE_DEREGISTER:I
-Ljava/util/concurrent/Phaser;->ONE_PARTY:I
-Ljava/util/concurrent/Phaser;->parent:Ljava/util/concurrent/Phaser;
-Ljava/util/concurrent/Phaser;->partiesOf(J)I
-Ljava/util/concurrent/Phaser;->PARTIES_MASK:J
-Ljava/util/concurrent/Phaser;->PARTIES_SHIFT:I
-Ljava/util/concurrent/Phaser;->phaseOf(J)I
-Ljava/util/concurrent/Phaser;->PHASE_SHIFT:I
-Ljava/util/concurrent/Phaser;->queueFor(I)Ljava/util/concurrent/atomic/AtomicReference;
-Ljava/util/concurrent/Phaser;->reconcileState()J
-Ljava/util/concurrent/Phaser;->releaseWaiters(I)V
-Ljava/util/concurrent/Phaser;->root:Ljava/util/concurrent/Phaser;
-Ljava/util/concurrent/Phaser;->SPINS_PER_ARRIVAL:I
-Ljava/util/concurrent/Phaser;->STATE:J
-Ljava/util/concurrent/Phaser;->state:J
-Ljava/util/concurrent/Phaser;->stateToString(J)Ljava/lang/String;
-Ljava/util/concurrent/Phaser;->TERMINATION_BIT:J
-Ljava/util/concurrent/Phaser;->U:Lsun/misc/Unsafe;
-Ljava/util/concurrent/Phaser;->unarrivedOf(J)I
-Ljava/util/concurrent/Phaser;->UNARRIVED_MASK:I
-Ljava/util/concurrent/PriorityBlockingQueue$Itr;->array:[Ljava/lang/Object;
-Ljava/util/concurrent/PriorityBlockingQueue$Itr;->cursor:I
-Ljava/util/concurrent/PriorityBlockingQueue$Itr;->lastRet:I
-Ljava/util/concurrent/PriorityBlockingQueue$PBQSpliterator;-><init>(Ljava/util/concurrent/PriorityBlockingQueue;[Ljava/lang/Object;II)V
-Ljava/util/concurrent/PriorityBlockingQueue$PBQSpliterator;->array:[Ljava/lang/Object;
-Ljava/util/concurrent/PriorityBlockingQueue$PBQSpliterator;->fence:I
-Ljava/util/concurrent/PriorityBlockingQueue$PBQSpliterator;->forEachRemaining(Ljava/util/function/Consumer;)V
-Ljava/util/concurrent/PriorityBlockingQueue$PBQSpliterator;->getFence()I
-Ljava/util/concurrent/PriorityBlockingQueue$PBQSpliterator;->index:I
-Ljava/util/concurrent/PriorityBlockingQueue$PBQSpliterator;->queue:Ljava/util/concurrent/PriorityBlockingQueue;
-Ljava/util/concurrent/PriorityBlockingQueue$PBQSpliterator;->tryAdvance(Ljava/util/function/Consumer;)Z
-Ljava/util/concurrent/PriorityBlockingQueue;->allocationSpinLock:I
-Ljava/util/concurrent/PriorityBlockingQueue;->ALLOCATIONSPINLOCK:J
-Ljava/util/concurrent/PriorityBlockingQueue;->comparator:Ljava/util/Comparator;
-Ljava/util/concurrent/PriorityBlockingQueue;->DEFAULT_INITIAL_CAPACITY:I
-Ljava/util/concurrent/PriorityBlockingQueue;->heapify()V
-Ljava/util/concurrent/PriorityBlockingQueue;->indexOf(Ljava/lang/Object;)I
-Ljava/util/concurrent/PriorityBlockingQueue;->MAX_ARRAY_SIZE:I
-Ljava/util/concurrent/PriorityBlockingQueue;->q:Ljava/util/PriorityQueue;
-Ljava/util/concurrent/PriorityBlockingQueue;->queue:[Ljava/lang/Object;
-Ljava/util/concurrent/PriorityBlockingQueue;->removeAt(I)V
-Ljava/util/concurrent/PriorityBlockingQueue;->removeEQ(Ljava/lang/Object;)V
-Ljava/util/concurrent/PriorityBlockingQueue;->siftDownComparable(ILjava/lang/Object;[Ljava/lang/Object;I)V
-Ljava/util/concurrent/PriorityBlockingQueue;->siftDownUsingComparator(ILjava/lang/Object;[Ljava/lang/Object;ILjava/util/Comparator;)V
-Ljava/util/concurrent/PriorityBlockingQueue;->siftUpComparable(ILjava/lang/Object;[Ljava/lang/Object;)V
-Ljava/util/concurrent/PriorityBlockingQueue;->siftUpUsingComparator(ILjava/lang/Object;[Ljava/lang/Object;Ljava/util/Comparator;)V
-Ljava/util/concurrent/PriorityBlockingQueue;->size:I
-Ljava/util/concurrent/PriorityBlockingQueue;->tryGrow([Ljava/lang/Object;I)V
-Ljava/util/concurrent/PriorityBlockingQueue;->U:Lsun/misc/Unsafe;
-Ljava/util/concurrent/RecursiveTask;->result:Ljava/lang/Object;
-Ljava/util/concurrent/ScheduledThreadPoolExecutor$DelayedWorkQueue$Itr;->array:[Ljava/util/concurrent/RunnableScheduledFuture;
-Ljava/util/concurrent/ScheduledThreadPoolExecutor$DelayedWorkQueue$Itr;->cursor:I
-Ljava/util/concurrent/ScheduledThreadPoolExecutor$DelayedWorkQueue$Itr;->lastRet:I
-Ljava/util/concurrent/ScheduledThreadPoolExecutor$DelayedWorkQueue;-><init>()V
-Ljava/util/concurrent/ScheduledThreadPoolExecutor$DelayedWorkQueue;->add(Ljava/lang/Runnable;)Z
-Ljava/util/concurrent/ScheduledThreadPoolExecutor$DelayedWorkQueue;->available:Ljava/util/concurrent/locks/Condition;
-Ljava/util/concurrent/ScheduledThreadPoolExecutor$DelayedWorkQueue;->drainTo(Ljava/util/Collection;)I
-Ljava/util/concurrent/ScheduledThreadPoolExecutor$DelayedWorkQueue;->drainTo(Ljava/util/Collection;I)I
-Ljava/util/concurrent/ScheduledThreadPoolExecutor$DelayedWorkQueue;->finishPoll(Ljava/util/concurrent/RunnableScheduledFuture;)Ljava/util/concurrent/RunnableScheduledFuture;
-Ljava/util/concurrent/ScheduledThreadPoolExecutor$DelayedWorkQueue;->grow()V
-Ljava/util/concurrent/ScheduledThreadPoolExecutor$DelayedWorkQueue;->indexOf(Ljava/lang/Object;)I
-Ljava/util/concurrent/ScheduledThreadPoolExecutor$DelayedWorkQueue;->INITIAL_CAPACITY:I
-Ljava/util/concurrent/ScheduledThreadPoolExecutor$DelayedWorkQueue;->leader:Ljava/lang/Thread;
-Ljava/util/concurrent/ScheduledThreadPoolExecutor$DelayedWorkQueue;->lock:Ljava/util/concurrent/locks/ReentrantLock;
-Ljava/util/concurrent/ScheduledThreadPoolExecutor$DelayedWorkQueue;->offer(Ljava/lang/Runnable;)Z
-Ljava/util/concurrent/ScheduledThreadPoolExecutor$DelayedWorkQueue;->offer(Ljava/lang/Runnable;JLjava/util/concurrent/TimeUnit;)Z
-Ljava/util/concurrent/ScheduledThreadPoolExecutor$DelayedWorkQueue;->peekExpired()Ljava/util/concurrent/RunnableScheduledFuture;
-Ljava/util/concurrent/ScheduledThreadPoolExecutor$DelayedWorkQueue;->put(Ljava/lang/Runnable;)V
-Ljava/util/concurrent/ScheduledThreadPoolExecutor$DelayedWorkQueue;->queue:[Ljava/util/concurrent/RunnableScheduledFuture;
-Ljava/util/concurrent/ScheduledThreadPoolExecutor$DelayedWorkQueue;->setIndex(Ljava/util/concurrent/RunnableScheduledFuture;I)V
-Ljava/util/concurrent/ScheduledThreadPoolExecutor$DelayedWorkQueue;->siftDown(ILjava/util/concurrent/RunnableScheduledFuture;)V
-Ljava/util/concurrent/ScheduledThreadPoolExecutor$DelayedWorkQueue;->siftUp(ILjava/util/concurrent/RunnableScheduledFuture;)V
-Ljava/util/concurrent/ScheduledThreadPoolExecutor$DelayedWorkQueue;->size:I
-Ljava/util/concurrent/ScheduledThreadPoolExecutor$ScheduledFutureTask;->compareTo(Ljava/util/concurrent/Delayed;)I
-Ljava/util/concurrent/ScheduledThreadPoolExecutor$ScheduledFutureTask;->heapIndex:I
-Ljava/util/concurrent/ScheduledThreadPoolExecutor$ScheduledFutureTask;->outerTask:Ljava/util/concurrent/RunnableScheduledFuture;
-Ljava/util/concurrent/ScheduledThreadPoolExecutor$ScheduledFutureTask;->period:J
-Ljava/util/concurrent/ScheduledThreadPoolExecutor$ScheduledFutureTask;->sequenceNumber:J
-Ljava/util/concurrent/ScheduledThreadPoolExecutor$ScheduledFutureTask;->setNextRunTime()V
-Ljava/util/concurrent/ScheduledThreadPoolExecutor$ScheduledFutureTask;->time:J
-Ljava/util/concurrent/ScheduledThreadPoolExecutor;->canRunInCurrentRunState(Z)Z
-Ljava/util/concurrent/ScheduledThreadPoolExecutor;->continueExistingPeriodicTasksAfterShutdown:Z
-Ljava/util/concurrent/ScheduledThreadPoolExecutor;->DEFAULT_KEEPALIVE_MILLIS:J
-Ljava/util/concurrent/ScheduledThreadPoolExecutor;->delayedExecute(Ljava/util/concurrent/RunnableScheduledFuture;)V
-Ljava/util/concurrent/ScheduledThreadPoolExecutor;->executeExistingDelayedTasksAfterShutdown:Z
-Ljava/util/concurrent/ScheduledThreadPoolExecutor;->onShutdown()V
-Ljava/util/concurrent/ScheduledThreadPoolExecutor;->overflowFree(J)J
-Ljava/util/concurrent/ScheduledThreadPoolExecutor;->reExecutePeriodic(Ljava/util/concurrent/RunnableScheduledFuture;)V
-Ljava/util/concurrent/ScheduledThreadPoolExecutor;->removeOnCancel:Z
-Ljava/util/concurrent/ScheduledThreadPoolExecutor;->sequencer:Ljava/util/concurrent/atomic/AtomicLong;
-Ljava/util/concurrent/ScheduledThreadPoolExecutor;->triggerTime(J)J
-Ljava/util/concurrent/ScheduledThreadPoolExecutor;->triggerTime(JLjava/util/concurrent/TimeUnit;)J
-Ljava/util/concurrent/Semaphore$FairSync;-><init>(I)V
-Ljava/util/concurrent/Semaphore$NonfairSync;-><init>(I)V
-Ljava/util/concurrent/Semaphore$Sync;-><init>(I)V
-Ljava/util/concurrent/Semaphore$Sync;->drainPermits()I
-Ljava/util/concurrent/Semaphore$Sync;->getPermits()I
-Ljava/util/concurrent/Semaphore$Sync;->nonfairTryAcquireShared(I)I
-Ljava/util/concurrent/Semaphore$Sync;->reducePermits(I)V
-Ljava/util/concurrent/Semaphore;->sync:Ljava/util/concurrent/Semaphore$Sync;
-Ljava/util/concurrent/SynchronousQueue$FifoWaitQueue;-><init>()V
-Ljava/util/concurrent/SynchronousQueue$LifoWaitQueue;-><init>()V
-Ljava/util/concurrent/SynchronousQueue$Transferer;-><init>()V
-Ljava/util/concurrent/SynchronousQueue$Transferer;->transfer(Ljava/lang/Object;ZJ)Ljava/lang/Object;
-Ljava/util/concurrent/SynchronousQueue$TransferQueue$QNode;-><init>(Ljava/lang/Object;Z)V
-Ljava/util/concurrent/SynchronousQueue$TransferQueue$QNode;->casItem(Ljava/lang/Object;Ljava/lang/Object;)Z
-Ljava/util/concurrent/SynchronousQueue$TransferQueue$QNode;->casNext(Ljava/util/concurrent/SynchronousQueue$TransferQueue$QNode;Ljava/util/concurrent/SynchronousQueue$TransferQueue$QNode;)Z
-Ljava/util/concurrent/SynchronousQueue$TransferQueue$QNode;->isCancelled()Z
-Ljava/util/concurrent/SynchronousQueue$TransferQueue$QNode;->isData:Z
-Ljava/util/concurrent/SynchronousQueue$TransferQueue$QNode;->isOffList()Z
-Ljava/util/concurrent/SynchronousQueue$TransferQueue$QNode;->ITEM:J
-Ljava/util/concurrent/SynchronousQueue$TransferQueue$QNode;->item:Ljava/lang/Object;
-Ljava/util/concurrent/SynchronousQueue$TransferQueue$QNode;->NEXT:J
-Ljava/util/concurrent/SynchronousQueue$TransferQueue$QNode;->next:Ljava/util/concurrent/SynchronousQueue$TransferQueue$QNode;
-Ljava/util/concurrent/SynchronousQueue$TransferQueue$QNode;->tryCancel(Ljava/lang/Object;)V
-Ljava/util/concurrent/SynchronousQueue$TransferQueue$QNode;->U:Lsun/misc/Unsafe;
-Ljava/util/concurrent/SynchronousQueue$TransferQueue$QNode;->waiter:Ljava/lang/Thread;
-Ljava/util/concurrent/SynchronousQueue$TransferQueue;-><init>()V
-Ljava/util/concurrent/SynchronousQueue$TransferQueue;->advanceHead(Ljava/util/concurrent/SynchronousQueue$TransferQueue$QNode;Ljava/util/concurrent/SynchronousQueue$TransferQueue$QNode;)V
-Ljava/util/concurrent/SynchronousQueue$TransferQueue;->advanceTail(Ljava/util/concurrent/SynchronousQueue$TransferQueue$QNode;Ljava/util/concurrent/SynchronousQueue$TransferQueue$QNode;)V
-Ljava/util/concurrent/SynchronousQueue$TransferQueue;->awaitFulfill(Ljava/util/concurrent/SynchronousQueue$TransferQueue$QNode;Ljava/lang/Object;ZJ)Ljava/lang/Object;
-Ljava/util/concurrent/SynchronousQueue$TransferQueue;->casCleanMe(Ljava/util/concurrent/SynchronousQueue$TransferQueue$QNode;Ljava/util/concurrent/SynchronousQueue$TransferQueue$QNode;)Z
-Ljava/util/concurrent/SynchronousQueue$TransferQueue;->clean(Ljava/util/concurrent/SynchronousQueue$TransferQueue$QNode;Ljava/util/concurrent/SynchronousQueue$TransferQueue$QNode;)V
-Ljava/util/concurrent/SynchronousQueue$TransferQueue;->CLEANME:J
-Ljava/util/concurrent/SynchronousQueue$TransferQueue;->cleanMe:Ljava/util/concurrent/SynchronousQueue$TransferQueue$QNode;
-Ljava/util/concurrent/SynchronousQueue$TransferQueue;->HEAD:J
-Ljava/util/concurrent/SynchronousQueue$TransferQueue;->head:Ljava/util/concurrent/SynchronousQueue$TransferQueue$QNode;
-Ljava/util/concurrent/SynchronousQueue$TransferQueue;->TAIL:J
-Ljava/util/concurrent/SynchronousQueue$TransferQueue;->tail:Ljava/util/concurrent/SynchronousQueue$TransferQueue$QNode;
-Ljava/util/concurrent/SynchronousQueue$TransferQueue;->transfer(Ljava/lang/Object;ZJ)Ljava/lang/Object;
-Ljava/util/concurrent/SynchronousQueue$TransferQueue;->U:Lsun/misc/Unsafe;
-Ljava/util/concurrent/SynchronousQueue$TransferStack$SNode;-><init>(Ljava/lang/Object;)V
-Ljava/util/concurrent/SynchronousQueue$TransferStack$SNode;->casNext(Ljava/util/concurrent/SynchronousQueue$TransferStack$SNode;Ljava/util/concurrent/SynchronousQueue$TransferStack$SNode;)Z
-Ljava/util/concurrent/SynchronousQueue$TransferStack$SNode;->isCancelled()Z
-Ljava/util/concurrent/SynchronousQueue$TransferStack$SNode;->item:Ljava/lang/Object;
-Ljava/util/concurrent/SynchronousQueue$TransferStack$SNode;->MATCH:J
-Ljava/util/concurrent/SynchronousQueue$TransferStack$SNode;->match:Ljava/util/concurrent/SynchronousQueue$TransferStack$SNode;
-Ljava/util/concurrent/SynchronousQueue$TransferStack$SNode;->mode:I
-Ljava/util/concurrent/SynchronousQueue$TransferStack$SNode;->NEXT:J
-Ljava/util/concurrent/SynchronousQueue$TransferStack$SNode;->next:Ljava/util/concurrent/SynchronousQueue$TransferStack$SNode;
-Ljava/util/concurrent/SynchronousQueue$TransferStack$SNode;->tryCancel()V
-Ljava/util/concurrent/SynchronousQueue$TransferStack$SNode;->tryMatch(Ljava/util/concurrent/SynchronousQueue$TransferStack$SNode;)Z
-Ljava/util/concurrent/SynchronousQueue$TransferStack$SNode;->U:Lsun/misc/Unsafe;
-Ljava/util/concurrent/SynchronousQueue$TransferStack$SNode;->waiter:Ljava/lang/Thread;
-Ljava/util/concurrent/SynchronousQueue$TransferStack;-><init>()V
-Ljava/util/concurrent/SynchronousQueue$TransferStack;->awaitFulfill(Ljava/util/concurrent/SynchronousQueue$TransferStack$SNode;ZJ)Ljava/util/concurrent/SynchronousQueue$TransferStack$SNode;
-Ljava/util/concurrent/SynchronousQueue$TransferStack;->casHead(Ljava/util/concurrent/SynchronousQueue$TransferStack$SNode;Ljava/util/concurrent/SynchronousQueue$TransferStack$SNode;)Z
-Ljava/util/concurrent/SynchronousQueue$TransferStack;->clean(Ljava/util/concurrent/SynchronousQueue$TransferStack$SNode;)V
-Ljava/util/concurrent/SynchronousQueue$TransferStack;->DATA:I
-Ljava/util/concurrent/SynchronousQueue$TransferStack;->FULFILLING:I
-Ljava/util/concurrent/SynchronousQueue$TransferStack;->HEAD:J
-Ljava/util/concurrent/SynchronousQueue$TransferStack;->head:Ljava/util/concurrent/SynchronousQueue$TransferStack$SNode;
-Ljava/util/concurrent/SynchronousQueue$TransferStack;->isFulfilling(I)Z
-Ljava/util/concurrent/SynchronousQueue$TransferStack;->REQUEST:I
-Ljava/util/concurrent/SynchronousQueue$TransferStack;->shouldSpin(Ljava/util/concurrent/SynchronousQueue$TransferStack$SNode;)Z
-Ljava/util/concurrent/SynchronousQueue$TransferStack;->snode(Ljava/util/concurrent/SynchronousQueue$TransferStack$SNode;Ljava/lang/Object;Ljava/util/concurrent/SynchronousQueue$TransferStack$SNode;I)Ljava/util/concurrent/SynchronousQueue$TransferStack$SNode;
-Ljava/util/concurrent/SynchronousQueue$TransferStack;->transfer(Ljava/lang/Object;ZJ)Ljava/lang/Object;
-Ljava/util/concurrent/SynchronousQueue$TransferStack;->U:Lsun/misc/Unsafe;
-Ljava/util/concurrent/SynchronousQueue$WaitQueue;-><init>()V
-Ljava/util/concurrent/SynchronousQueue;->MAX_TIMED_SPINS:I
-Ljava/util/concurrent/SynchronousQueue;->MAX_UNTIMED_SPINS:I
-Ljava/util/concurrent/SynchronousQueue;->qlock:Ljava/util/concurrent/locks/ReentrantLock;
-Ljava/util/concurrent/SynchronousQueue;->SPIN_FOR_TIMEOUT_THRESHOLD:J
-Ljava/util/concurrent/SynchronousQueue;->transferer:Ljava/util/concurrent/SynchronousQueue$Transferer;
-Ljava/util/concurrent/SynchronousQueue;->waitingConsumers:Ljava/util/concurrent/SynchronousQueue$WaitQueue;
-Ljava/util/concurrent/SynchronousQueue;->waitingProducers:Ljava/util/concurrent/SynchronousQueue$WaitQueue;
-Ljava/util/concurrent/ThreadLocalRandom$RandomDoublesSpliterator;-><init>(JJDD)V
-Ljava/util/concurrent/ThreadLocalRandom$RandomDoublesSpliterator;->bound:D
-Ljava/util/concurrent/ThreadLocalRandom$RandomDoublesSpliterator;->fence:J
-Ljava/util/concurrent/ThreadLocalRandom$RandomDoublesSpliterator;->index:J
-Ljava/util/concurrent/ThreadLocalRandom$RandomDoublesSpliterator;->origin:D
-Ljava/util/concurrent/ThreadLocalRandom$RandomIntsSpliterator;-><init>(JJII)V
-Ljava/util/concurrent/ThreadLocalRandom$RandomIntsSpliterator;->bound:I
-Ljava/util/concurrent/ThreadLocalRandom$RandomIntsSpliterator;->fence:J
-Ljava/util/concurrent/ThreadLocalRandom$RandomIntsSpliterator;->index:J
-Ljava/util/concurrent/ThreadLocalRandom$RandomIntsSpliterator;->origin:I
-Ljava/util/concurrent/ThreadLocalRandom$RandomLongsSpliterator;-><init>(JJJJ)V
-Ljava/util/concurrent/ThreadLocalRandom$RandomLongsSpliterator;->bound:J
-Ljava/util/concurrent/ThreadLocalRandom$RandomLongsSpliterator;->fence:J
-Ljava/util/concurrent/ThreadLocalRandom$RandomLongsSpliterator;->index:J
-Ljava/util/concurrent/ThreadLocalRandom$RandomLongsSpliterator;->origin:J
-Ljava/util/concurrent/ThreadLocalRandom;-><init>()V
-Ljava/util/concurrent/ThreadLocalRandom;->advanceProbe(I)I
-Ljava/util/concurrent/ThreadLocalRandom;->BAD_BOUND:Ljava/lang/String;
-Ljava/util/concurrent/ThreadLocalRandom;->BAD_RANGE:Ljava/lang/String;
-Ljava/util/concurrent/ThreadLocalRandom;->BAD_SIZE:Ljava/lang/String;
-Ljava/util/concurrent/ThreadLocalRandom;->DOUBLE_UNIT:D
-Ljava/util/concurrent/ThreadLocalRandom;->FLOAT_UNIT:F
-Ljava/util/concurrent/ThreadLocalRandom;->GAMMA:J
-Ljava/util/concurrent/ThreadLocalRandom;->getProbe()I
-Ljava/util/concurrent/ThreadLocalRandom;->initialized:Z
-Ljava/util/concurrent/ThreadLocalRandom;->instance:Ljava/util/concurrent/ThreadLocalRandom;
-Ljava/util/concurrent/ThreadLocalRandom;->internalNextDouble(DD)D
-Ljava/util/concurrent/ThreadLocalRandom;->internalNextInt(II)I
-Ljava/util/concurrent/ThreadLocalRandom;->internalNextLong(JJ)J
-Ljava/util/concurrent/ThreadLocalRandom;->localInit()V
-Ljava/util/concurrent/ThreadLocalRandom;->mix32(J)I
-Ljava/util/concurrent/ThreadLocalRandom;->mix64(J)J
-Ljava/util/concurrent/ThreadLocalRandom;->nextLocalGaussian:Ljava/lang/ThreadLocal;
-Ljava/util/concurrent/ThreadLocalRandom;->nextSecondarySeed()I
-Ljava/util/concurrent/ThreadLocalRandom;->nextSeed()J
-Ljava/util/concurrent/ThreadLocalRandom;->PROBE:J
-Ljava/util/concurrent/ThreadLocalRandom;->probeGenerator:Ljava/util/concurrent/atomic/AtomicInteger;
-Ljava/util/concurrent/ThreadLocalRandom;->PROBE_INCREMENT:I
-Ljava/util/concurrent/ThreadLocalRandom;->SECONDARY:J
-Ljava/util/concurrent/ThreadLocalRandom;->SEED:J
-Ljava/util/concurrent/ThreadLocalRandom;->seeder:Ljava/util/concurrent/atomic/AtomicLong;
-Ljava/util/concurrent/ThreadLocalRandom;->SEEDER_INCREMENT:J
-Ljava/util/concurrent/ThreadLocalRandom;->U:Lsun/misc/Unsafe;
-Ljava/util/concurrent/ThreadPoolExecutor$Worker;->completedTasks:J
-Ljava/util/concurrent/ThreadPoolExecutor$Worker;->firstTask:Ljava/lang/Runnable;
-Ljava/util/concurrent/ThreadPoolExecutor$Worker;->interruptIfStarted()V
-Ljava/util/concurrent/ThreadPoolExecutor$Worker;->isLocked()Z
-Ljava/util/concurrent/ThreadPoolExecutor$Worker;->lock()V
-Ljava/util/concurrent/ThreadPoolExecutor$Worker;->thread:Ljava/lang/Thread;
-Ljava/util/concurrent/ThreadPoolExecutor$Worker;->tryLock()Z
-Ljava/util/concurrent/ThreadPoolExecutor$Worker;->unlock()V
-Ljava/util/concurrent/ThreadPoolExecutor;->addWorker(Ljava/lang/Runnable;Z)Z
-Ljava/util/concurrent/ThreadPoolExecutor;->addWorkerFailed(Ljava/util/concurrent/ThreadPoolExecutor$Worker;)V
-Ljava/util/concurrent/ThreadPoolExecutor;->advanceRunState(I)V
-Ljava/util/concurrent/ThreadPoolExecutor;->CAPACITY:I
-Ljava/util/concurrent/ThreadPoolExecutor;->checkShutdownAccess()V
-Ljava/util/concurrent/ThreadPoolExecutor;->compareAndDecrementWorkerCount(I)Z
-Ljava/util/concurrent/ThreadPoolExecutor;->compareAndIncrementWorkerCount(I)Z
-Ljava/util/concurrent/ThreadPoolExecutor;->completedTaskCount:J
-Ljava/util/concurrent/ThreadPoolExecutor;->corePoolSize:I
-Ljava/util/concurrent/ThreadPoolExecutor;->COUNT_BITS:I
-Ljava/util/concurrent/ThreadPoolExecutor;->ctlOf(II)I
-Ljava/util/concurrent/ThreadPoolExecutor;->decrementWorkerCount()V
-Ljava/util/concurrent/ThreadPoolExecutor;->drainQueue()Ljava/util/List;
-Ljava/util/concurrent/ThreadPoolExecutor;->ensurePrestart()V
-Ljava/util/concurrent/ThreadPoolExecutor;->getTask()Ljava/lang/Runnable;
-Ljava/util/concurrent/ThreadPoolExecutor;->handler:Ljava/util/concurrent/RejectedExecutionHandler;
-Ljava/util/concurrent/ThreadPoolExecutor;->interruptIdleWorkers()V
-Ljava/util/concurrent/ThreadPoolExecutor;->interruptIdleWorkers(Z)V
-Ljava/util/concurrent/ThreadPoolExecutor;->interruptWorkers()V
-Ljava/util/concurrent/ThreadPoolExecutor;->isRunning(I)Z
-Ljava/util/concurrent/ThreadPoolExecutor;->isRunningOrShutdown(Z)Z
-Ljava/util/concurrent/ThreadPoolExecutor;->keepAliveTime:J
-Ljava/util/concurrent/ThreadPoolExecutor;->largestPoolSize:I
-Ljava/util/concurrent/ThreadPoolExecutor;->maximumPoolSize:I
-Ljava/util/concurrent/ThreadPoolExecutor;->ONLY_ONE:Z
-Ljava/util/concurrent/ThreadPoolExecutor;->onShutdown()V
-Ljava/util/concurrent/ThreadPoolExecutor;->processWorkerExit(Ljava/util/concurrent/ThreadPoolExecutor$Worker;Z)V
-Ljava/util/concurrent/ThreadPoolExecutor;->reject(Ljava/lang/Runnable;)V
-Ljava/util/concurrent/ThreadPoolExecutor;->RUNNING:I
-Ljava/util/concurrent/ThreadPoolExecutor;->runStateAtLeast(II)Z
-Ljava/util/concurrent/ThreadPoolExecutor;->runStateLessThan(II)Z
-Ljava/util/concurrent/ThreadPoolExecutor;->runStateOf(I)I
-Ljava/util/concurrent/ThreadPoolExecutor;->runWorker(Ljava/util/concurrent/ThreadPoolExecutor$Worker;)V
-Ljava/util/concurrent/ThreadPoolExecutor;->SHUTDOWN:I
-Ljava/util/concurrent/ThreadPoolExecutor;->shutdownPerm:Ljava/lang/RuntimePermission;
-Ljava/util/concurrent/ThreadPoolExecutor;->STOP:I
-Ljava/util/concurrent/ThreadPoolExecutor;->TERMINATED:I
-Ljava/util/concurrent/ThreadPoolExecutor;->termination:Ljava/util/concurrent/locks/Condition;
-Ljava/util/concurrent/ThreadPoolExecutor;->threadFactory:Ljava/util/concurrent/ThreadFactory;
-Ljava/util/concurrent/ThreadPoolExecutor;->TIDYING:I
-Ljava/util/concurrent/ThreadPoolExecutor;->tryTerminate()V
-Ljava/util/concurrent/ThreadPoolExecutor;->workerCountOf(I)I
-Ljava/util/concurrent/ThreadPoolExecutor;->workers:Ljava/util/HashSet;
-Ljava/util/concurrent/ThreadPoolExecutor;->workQueue:Ljava/util/concurrent/BlockingQueue;
-Ljava/util/concurrent/TimeUnit;->C0:J
-Ljava/util/concurrent/TimeUnit;->C1:J
-Ljava/util/concurrent/TimeUnit;->C2:J
-Ljava/util/concurrent/TimeUnit;->C3:J
-Ljava/util/concurrent/TimeUnit;->C4:J
-Ljava/util/concurrent/TimeUnit;->C5:J
-Ljava/util/concurrent/TimeUnit;->C6:J
-Ljava/util/concurrent/TimeUnit;->excessNanos(JJ)I
-Ljava/util/concurrent/TimeUnit;->MAX:J
-Ljava/util/concurrent/TimeUnit;->x(JJJ)J
-Ljava/util/Currency;-><init>(Landroid/icu/util/Currency;)V
-Ljava/util/Currency;->available:Ljava/util/HashSet;
-Ljava/util/Currency;->currencyCode:Ljava/lang/String;
-Ljava/util/Currency;->icuCurrency:Landroid/icu/util/Currency;
-Ljava/util/Currency;->instances:Ljava/util/concurrent/ConcurrentMap;
-Ljava/util/Date;->cdate:Lsun/util/calendar/BaseCalendar$Date;
-Ljava/util/Date;->convertToAbbr(Ljava/lang/StringBuilder;Ljava/lang/String;)Ljava/lang/StringBuilder;
-Ljava/util/Date;->defaultCenturyStart:I
-Ljava/util/Date;->fastTime:J
-Ljava/util/Date;->gcal:Lsun/util/calendar/BaseCalendar;
-Ljava/util/Date;->getCalendarDate()Lsun/util/calendar/BaseCalendar$Date;
-Ljava/util/Date;->getCalendarSystem(I)Lsun/util/calendar/BaseCalendar;
-Ljava/util/Date;->getCalendarSystem(J)Lsun/util/calendar/BaseCalendar;
-Ljava/util/Date;->getCalendarSystem(Lsun/util/calendar/BaseCalendar$Date;)Lsun/util/calendar/BaseCalendar;
-Ljava/util/Date;->getJulianCalendar()Lsun/util/calendar/BaseCalendar;
-Ljava/util/Date;->getMillisOf(Ljava/util/Date;)J
-Ljava/util/Date;->getTimeImpl()J
-Ljava/util/Date;->jcal:Lsun/util/calendar/BaseCalendar;
-Ljava/util/Date;->normalize()Lsun/util/calendar/BaseCalendar$Date;
-Ljava/util/Date;->normalize(Lsun/util/calendar/BaseCalendar$Date;)Lsun/util/calendar/BaseCalendar$Date;
-Ljava/util/Date;->ttb:[I
-Ljava/util/Date;->wtb:[Ljava/lang/String;
-Ljava/util/DoubleSummaryStatistics;->count:J
-Ljava/util/DoubleSummaryStatistics;->max:D
-Ljava/util/DoubleSummaryStatistics;->min:D
-Ljava/util/DoubleSummaryStatistics;->simpleSum:D
-Ljava/util/DoubleSummaryStatistics;->sum:D
-Ljava/util/DoubleSummaryStatistics;->sumCompensation:D
-Ljava/util/DoubleSummaryStatistics;->sumWithCompensation(D)V
-Ljava/util/DuplicateFormatFlagsException;->flags:Ljava/lang/String;
-Ljava/util/EnumMap$EntryIterator$Entry;->checkIndexForEntryUse()V
-Ljava/util/EnumMap$EntryIterator$Entry;->index:I
-Ljava/util/EnumMap$EntryIterator;->lastReturnedEntry:Ljava/util/EnumMap$EntryIterator$Entry;
-Ljava/util/EnumMap$EntrySet;->fillEntryArray([Ljava/lang/Object;)[Ljava/lang/Object;
-Ljava/util/EnumMap$EnumMapIterator;->checkLastReturnedIndex()V
-Ljava/util/EnumMap$EnumMapIterator;->index:I
-Ljava/util/EnumMap$EnumMapIterator;->lastReturnedIndex:I
-Ljava/util/EnumMap;->containsMapping(Ljava/lang/Object;Ljava/lang/Object;)Z
-Ljava/util/EnumMap;->entryHashCode(I)I
-Ljava/util/EnumMap;->entrySet:Ljava/util/Set;
-Ljava/util/EnumMap;->equals(Ljava/util/EnumMap;)Z
-Ljava/util/EnumMap;->getKeyUniverse(Ljava/lang/Class;)[Ljava/lang/Enum;
-Ljava/util/EnumMap;->isValidKey(Ljava/lang/Object;)Z
-Ljava/util/EnumMap;->keyUniverse:[Ljava/lang/Enum;
-Ljava/util/EnumMap;->maskNull(Ljava/lang/Object;)Ljava/lang/Object;
-Ljava/util/EnumMap;->NULL:Ljava/lang/Object;
-Ljava/util/EnumMap;->removeMapping(Ljava/lang/Object;Ljava/lang/Object;)Z
-Ljava/util/EnumMap;->size:I
-Ljava/util/EnumMap;->typeCheck(Ljava/lang/Enum;)V
-Ljava/util/EnumMap;->unmaskNull(Ljava/lang/Object;)Ljava/lang/Object;
-Ljava/util/EnumMap;->vals:[Ljava/lang/Object;
-Ljava/util/EnumMap;->ZERO_LENGTH_ENUM_ARRAY:[Ljava/lang/Enum;
-Ljava/util/EnumSet$SerializationProxy;-><init>(Ljava/util/EnumSet;)V
-Ljava/util/EnumSet$SerializationProxy;->elements:[Ljava/lang/Enum;
-Ljava/util/EnumSet$SerializationProxy;->elementType:Ljava/lang/Class;
-Ljava/util/EnumSet;-><init>(Ljava/lang/Class;[Ljava/lang/Enum;)V
-Ljava/util/EnumSet;->addAll()V
-Ljava/util/EnumSet;->addRange(Ljava/lang/Enum;Ljava/lang/Enum;)V
-Ljava/util/EnumSet;->complement()V
-Ljava/util/EnumSet;->getUniverse(Ljava/lang/Class;)[Ljava/lang/Enum;
-Ljava/util/EnumSet;->typeCheck(Ljava/lang/Enum;)V
-Ljava/util/EnumSet;->universe:[Ljava/lang/Enum;
-Ljava/util/EnumSet;->ZERO_LENGTH_ENUM_ARRAY:[Ljava/lang/Enum;
-Ljava/util/EventListenerProxy;->listener:Ljava/util/EventListener;
-Ljava/util/FormatFlagsConversionMismatchException;->c:C
-Ljava/util/FormatFlagsConversionMismatchException;->f:Ljava/lang/String;
-Ljava/util/FormattableFlags;-><init>()V
-Ljava/util/Formatter$Conversion;-><init>()V
-Ljava/util/Formatter$Conversion;->BOOLEAN:C
-Ljava/util/Formatter$Conversion;->BOOLEAN_UPPER:C
-Ljava/util/Formatter$Conversion;->CHARACTER:C
-Ljava/util/Formatter$Conversion;->CHARACTER_UPPER:C
-Ljava/util/Formatter$Conversion;->DATE_TIME:C
-Ljava/util/Formatter$Conversion;->DATE_TIME_UPPER:C
-Ljava/util/Formatter$Conversion;->DECIMAL_FLOAT:C
-Ljava/util/Formatter$Conversion;->DECIMAL_INTEGER:C
-Ljava/util/Formatter$Conversion;->GENERAL:C
-Ljava/util/Formatter$Conversion;->GENERAL_UPPER:C
-Ljava/util/Formatter$Conversion;->HASHCODE:C
-Ljava/util/Formatter$Conversion;->HASHCODE_UPPER:C
-Ljava/util/Formatter$Conversion;->HEXADECIMAL_FLOAT:C
-Ljava/util/Formatter$Conversion;->HEXADECIMAL_FLOAT_UPPER:C
-Ljava/util/Formatter$Conversion;->HEXADECIMAL_INTEGER:C
-Ljava/util/Formatter$Conversion;->HEXADECIMAL_INTEGER_UPPER:C
-Ljava/util/Formatter$Conversion;->isCharacter(C)Z
-Ljava/util/Formatter$Conversion;->isFloat(C)Z
-Ljava/util/Formatter$Conversion;->isGeneral(C)Z
-Ljava/util/Formatter$Conversion;->isInteger(C)Z
-Ljava/util/Formatter$Conversion;->isText(C)Z
-Ljava/util/Formatter$Conversion;->isValid(C)Z
-Ljava/util/Formatter$Conversion;->LINE_SEPARATOR:C
-Ljava/util/Formatter$Conversion;->OCTAL_INTEGER:C
-Ljava/util/Formatter$Conversion;->PERCENT_SIGN:C
-Ljava/util/Formatter$Conversion;->SCIENTIFIC:C
-Ljava/util/Formatter$Conversion;->SCIENTIFIC_UPPER:C
-Ljava/util/Formatter$Conversion;->STRING:C
-Ljava/util/Formatter$Conversion;->STRING_UPPER:C
-Ljava/util/Formatter$DateTime;-><init>()V
-Ljava/util/Formatter$DateTime;->AM_PM:C
-Ljava/util/Formatter$DateTime;->CENTURY:C
-Ljava/util/Formatter$DateTime;->DATE:C
-Ljava/util/Formatter$DateTime;->DATE_TIME:C
-Ljava/util/Formatter$DateTime;->DAY_OF_MONTH:C
-Ljava/util/Formatter$DateTime;->DAY_OF_MONTH_0:C
-Ljava/util/Formatter$DateTime;->DAY_OF_YEAR:C
-Ljava/util/Formatter$DateTime;->HOUR:C
-Ljava/util/Formatter$DateTime;->HOUR_0:C
-Ljava/util/Formatter$DateTime;->HOUR_OF_DAY:C
-Ljava/util/Formatter$DateTime;->HOUR_OF_DAY_0:C
-Ljava/util/Formatter$DateTime;->ISO_STANDARD_DATE:C
-Ljava/util/Formatter$DateTime;->isValid(C)Z
-Ljava/util/Formatter$DateTime;->MILLISECOND:C
-Ljava/util/Formatter$DateTime;->MILLISECOND_SINCE_EPOCH:C
-Ljava/util/Formatter$DateTime;->MINUTE:C
-Ljava/util/Formatter$DateTime;->MONTH:C
-Ljava/util/Formatter$DateTime;->NAME_OF_DAY:C
-Ljava/util/Formatter$DateTime;->NAME_OF_DAY_ABBREV:C
-Ljava/util/Formatter$DateTime;->NAME_OF_MONTH:C
-Ljava/util/Formatter$DateTime;->NAME_OF_MONTH_ABBREV:C
-Ljava/util/Formatter$DateTime;->NAME_OF_MONTH_ABBREV_X:C
-Ljava/util/Formatter$DateTime;->NANOSECOND:C
-Ljava/util/Formatter$DateTime;->SECOND:C
-Ljava/util/Formatter$DateTime;->SECONDS_SINCE_EPOCH:C
-Ljava/util/Formatter$DateTime;->TIME:C
-Ljava/util/Formatter$DateTime;->TIME_12_HOUR:C
-Ljava/util/Formatter$DateTime;->TIME_24_HOUR:C
-Ljava/util/Formatter$DateTime;->YEAR_2:C
-Ljava/util/Formatter$DateTime;->YEAR_4:C
-Ljava/util/Formatter$DateTime;->ZONE:C
-Ljava/util/Formatter$DateTime;->ZONE_NUMERIC:C
-Ljava/util/Formatter$FixedString;->index()I
-Ljava/util/Formatter$FixedString;->print(Ljava/lang/Object;Ljava/util/Locale;)V
-Ljava/util/Formatter$FixedString;->s:Ljava/lang/String;
-Ljava/util/Formatter$Flags;-><init>(I)V
-Ljava/util/Formatter$Flags;->add(Ljava/util/Formatter$Flags;)Ljava/util/Formatter$Flags;
-Ljava/util/Formatter$Flags;->ALTERNATE:Ljava/util/Formatter$Flags;
-Ljava/util/Formatter$Flags;->contains(Ljava/util/Formatter$Flags;)Z
-Ljava/util/Formatter$Flags;->dup()Ljava/util/Formatter$Flags;
-Ljava/util/Formatter$Flags;->flags:I
-Ljava/util/Formatter$Flags;->GROUP:Ljava/util/Formatter$Flags;
-Ljava/util/Formatter$Flags;->LEADING_SPACE:Ljava/util/Formatter$Flags;
-Ljava/util/Formatter$Flags;->LEFT_JUSTIFY:Ljava/util/Formatter$Flags;
-Ljava/util/Formatter$Flags;->NONE:Ljava/util/Formatter$Flags;
-Ljava/util/Formatter$Flags;->PARENTHESES:Ljava/util/Formatter$Flags;
-Ljava/util/Formatter$Flags;->parse(C)Ljava/util/Formatter$Flags;
-Ljava/util/Formatter$Flags;->parse(Ljava/lang/String;)Ljava/util/Formatter$Flags;
-Ljava/util/Formatter$Flags;->PLUS:Ljava/util/Formatter$Flags;
-Ljava/util/Formatter$Flags;->PREVIOUS:Ljava/util/Formatter$Flags;
-Ljava/util/Formatter$Flags;->remove(Ljava/util/Formatter$Flags;)Ljava/util/Formatter$Flags;
-Ljava/util/Formatter$Flags;->toString(Ljava/util/Formatter$Flags;)Ljava/lang/String;
-Ljava/util/Formatter$Flags;->UPPERCASE:Ljava/util/Formatter$Flags;
-Ljava/util/Formatter$Flags;->valueOf()I
-Ljava/util/Formatter$Flags;->ZERO_PAD:Ljava/util/Formatter$Flags;
-Ljava/util/Formatter$FormatSpecifier$BigDecimalLayout;->dot:Z
-Ljava/util/Formatter$FormatSpecifier$BigDecimalLayout;->exp:Ljava/lang/StringBuilder;
-Ljava/util/Formatter$FormatSpecifier$BigDecimalLayout;->exponent()[C
-Ljava/util/Formatter$FormatSpecifier$BigDecimalLayout;->hasDot()Z
-Ljava/util/Formatter$FormatSpecifier$BigDecimalLayout;->layout(Ljava/math/BigInteger;ILjava/util/Formatter$BigDecimalLayoutForm;)V
-Ljava/util/Formatter$FormatSpecifier$BigDecimalLayout;->layoutChars()[C
-Ljava/util/Formatter$FormatSpecifier$BigDecimalLayout;->mant:Ljava/lang/StringBuilder;
-Ljava/util/Formatter$FormatSpecifier$BigDecimalLayout;->mantissa()[C
-Ljava/util/Formatter$FormatSpecifier$BigDecimalLayout;->scale()I
-Ljava/util/Formatter$FormatSpecifier$BigDecimalLayout;->scale:I
-Ljava/util/Formatter$FormatSpecifier$BigDecimalLayout;->toCharArray(Ljava/lang/StringBuilder;)[C
-Ljava/util/Formatter$FormatSpecifier;->addDot([C)[C
-Ljava/util/Formatter$FormatSpecifier;->addZeros([CI)[C
-Ljava/util/Formatter$FormatSpecifier;->adjustWidth(ILjava/util/Formatter$Flags;Z)I
-Ljava/util/Formatter$FormatSpecifier;->c:C
-Ljava/util/Formatter$FormatSpecifier;->checkCharacter()V
-Ljava/util/Formatter$FormatSpecifier;->checkDateTime()V
-Ljava/util/Formatter$FormatSpecifier;->checkFloat()V
-Ljava/util/Formatter$FormatSpecifier;->checkGeneral()V
-Ljava/util/Formatter$FormatSpecifier;->checkInteger()V
-Ljava/util/Formatter$FormatSpecifier;->checkNumeric()V
-Ljava/util/Formatter$FormatSpecifier;->checkText()V
-Ljava/util/Formatter$FormatSpecifier;->conversion()C
-Ljava/util/Formatter$FormatSpecifier;->conversion(Ljava/lang/String;)C
-Ljava/util/Formatter$FormatSpecifier;->dt:Z
-Ljava/util/Formatter$FormatSpecifier;->f:Ljava/util/Formatter$Flags;
-Ljava/util/Formatter$FormatSpecifier;->failConversion(CLjava/lang/Object;)V
-Ljava/util/Formatter$FormatSpecifier;->failMismatch(Ljava/util/Formatter$Flags;C)V
-Ljava/util/Formatter$FormatSpecifier;->flags()Ljava/util/Formatter$Flags;
-Ljava/util/Formatter$FormatSpecifier;->flags(Ljava/lang/String;)Ljava/util/Formatter$Flags;
-Ljava/util/Formatter$FormatSpecifier;->getZero(Ljava/util/Locale;)C
-Ljava/util/Formatter$FormatSpecifier;->hexDouble(DI)Ljava/lang/String;
-Ljava/util/Formatter$FormatSpecifier;->index()I
-Ljava/util/Formatter$FormatSpecifier;->index(Ljava/lang/String;)I
-Ljava/util/Formatter$FormatSpecifier;->index:I
-Ljava/util/Formatter$FormatSpecifier;->justify(Ljava/lang/String;)Ljava/lang/String;
-Ljava/util/Formatter$FormatSpecifier;->leadingSign(Ljava/lang/StringBuilder;Z)Ljava/lang/StringBuilder;
-Ljava/util/Formatter$FormatSpecifier;->localizedMagnitude(Ljava/lang/StringBuilder;JLjava/util/Formatter$Flags;ILjava/util/Locale;)Ljava/lang/StringBuilder;
-Ljava/util/Formatter$FormatSpecifier;->localizedMagnitude(Ljava/lang/StringBuilder;[CLjava/util/Formatter$Flags;ILjava/util/Locale;)Ljava/lang/StringBuilder;
-Ljava/util/Formatter$FormatSpecifier;->precision()I
-Ljava/util/Formatter$FormatSpecifier;->precision(Ljava/lang/String;)I
-Ljava/util/Formatter$FormatSpecifier;->precision:I
-Ljava/util/Formatter$FormatSpecifier;->print(BLjava/util/Locale;)V
-Ljava/util/Formatter$FormatSpecifier;->print(DLjava/util/Locale;)V
-Ljava/util/Formatter$FormatSpecifier;->print(FLjava/util/Locale;)V
-Ljava/util/Formatter$FormatSpecifier;->print(ILjava/util/Locale;)V
-Ljava/util/Formatter$FormatSpecifier;->print(JLjava/util/Locale;)V
-Ljava/util/Formatter$FormatSpecifier;->print(Ljava/lang/Object;Ljava/util/Locale;)V
-Ljava/util/Formatter$FormatSpecifier;->print(Ljava/lang/String;)V
-Ljava/util/Formatter$FormatSpecifier;->print(Ljava/lang/StringBuilder;DLjava/util/Locale;Ljava/util/Formatter$Flags;CIZ)V
-Ljava/util/Formatter$FormatSpecifier;->print(Ljava/lang/StringBuilder;Ljava/math/BigDecimal;Ljava/util/Locale;Ljava/util/Formatter$Flags;CIZ)V
-Ljava/util/Formatter$FormatSpecifier;->print(Ljava/lang/StringBuilder;Ljava/time/temporal/TemporalAccessor;CLjava/util/Locale;)Ljava/lang/Appendable;
-Ljava/util/Formatter$FormatSpecifier;->print(Ljava/lang/StringBuilder;Ljava/util/Calendar;CLjava/util/Locale;)Ljava/lang/Appendable;
-Ljava/util/Formatter$FormatSpecifier;->print(Ljava/math/BigDecimal;Ljava/util/Locale;)V
-Ljava/util/Formatter$FormatSpecifier;->print(Ljava/math/BigInteger;Ljava/util/Locale;)V
-Ljava/util/Formatter$FormatSpecifier;->print(Ljava/time/temporal/TemporalAccessor;CLjava/util/Locale;)V
-Ljava/util/Formatter$FormatSpecifier;->print(Ljava/util/Calendar;CLjava/util/Locale;)V
-Ljava/util/Formatter$FormatSpecifier;->print(SLjava/util/Locale;)V
-Ljava/util/Formatter$FormatSpecifier;->printBoolean(Ljava/lang/Object;)V
-Ljava/util/Formatter$FormatSpecifier;->printCharacter(Ljava/lang/Object;)V
-Ljava/util/Formatter$FormatSpecifier;->printDateTime(Ljava/lang/Object;Ljava/util/Locale;)V
-Ljava/util/Formatter$FormatSpecifier;->printFloat(Ljava/lang/Object;Ljava/util/Locale;)V
-Ljava/util/Formatter$FormatSpecifier;->printHashCode(Ljava/lang/Object;)V
-Ljava/util/Formatter$FormatSpecifier;->printInteger(Ljava/lang/Object;Ljava/util/Locale;)V
-Ljava/util/Formatter$FormatSpecifier;->printString(Ljava/lang/Object;Ljava/util/Locale;)V
-Ljava/util/Formatter$FormatSpecifier;->trailingSign(Ljava/lang/StringBuilder;Z)Ljava/lang/StringBuilder;
-Ljava/util/Formatter$FormatSpecifier;->trailingZeros([CI)[C
-Ljava/util/Formatter$FormatSpecifier;->width()I
-Ljava/util/Formatter$FormatSpecifier;->width(Ljava/lang/String;)I
-Ljava/util/Formatter$FormatSpecifier;->width:I
-Ljava/util/Formatter$FormatSpecifierParser;->advance()C
-Ljava/util/Formatter$FormatSpecifierParser;->back(I)V
-Ljava/util/Formatter$FormatSpecifierParser;->conv:Ljava/lang/String;
-Ljava/util/Formatter$FormatSpecifierParser;->cursor:I
-Ljava/util/Formatter$FormatSpecifierParser;->FLAGS:Ljava/lang/String;
-Ljava/util/Formatter$FormatSpecifierParser;->flags:Ljava/lang/String;
-Ljava/util/Formatter$FormatSpecifierParser;->format:Ljava/lang/String;
-Ljava/util/Formatter$FormatSpecifierParser;->fs:Ljava/util/Formatter$FormatSpecifier;
-Ljava/util/Formatter$FormatSpecifierParser;->getEndIdx()I
-Ljava/util/Formatter$FormatSpecifierParser;->getFormatSpecifier()Ljava/util/Formatter$FormatSpecifier;
-Ljava/util/Formatter$FormatSpecifierParser;->index:Ljava/lang/String;
-Ljava/util/Formatter$FormatSpecifierParser;->isEnd()Z
-Ljava/util/Formatter$FormatSpecifierParser;->nextInt()Ljava/lang/String;
-Ljava/util/Formatter$FormatSpecifierParser;->nextIsInt()Z
-Ljava/util/Formatter$FormatSpecifierParser;->peek()C
-Ljava/util/Formatter$FormatSpecifierParser;->precision:Ljava/lang/String;
-Ljava/util/Formatter$FormatSpecifierParser;->tT:Ljava/lang/String;
-Ljava/util/Formatter$FormatSpecifierParser;->width:Ljava/lang/String;
-Ljava/util/Formatter$FormatString;->index()I
-Ljava/util/Formatter$FormatString;->print(Ljava/lang/Object;Ljava/util/Locale;)V
-Ljava/util/Formatter;-><init>(Ljava/nio/charset/Charset;Ljava/util/Locale;Ljava/io/File;)V
-Ljava/util/Formatter;-><init>(Ljava/util/Locale;Ljava/lang/Appendable;)V
-Ljava/util/Formatter;->a:Ljava/lang/Appendable;
-Ljava/util/Formatter;->ensureOpen()V
-Ljava/util/Formatter;->getZero(Ljava/util/Locale;)C
-Ljava/util/Formatter;->l:Ljava/util/Locale;
-Ljava/util/Formatter;->lastException:Ljava/io/IOException;
-Ljava/util/Formatter;->MAX_FD_CHARS:I
-Ljava/util/Formatter;->nonNullAppendable(Ljava/lang/Appendable;)Ljava/lang/Appendable;
-Ljava/util/Formatter;->parse(Ljava/lang/String;)[Ljava/util/Formatter$FormatString;
-Ljava/util/Formatter;->scaleUp:D
-Ljava/util/Formatter;->toCharset(Ljava/lang/String;)Ljava/nio/charset/Charset;
-Ljava/util/Formatter;->zero:C
-Ljava/util/GregorianCalendar;-><init>(IIIIIII)V
-Ljava/util/GregorianCalendar;-><init>(J)V
-Ljava/util/GregorianCalendar;-><init>(Ljava/util/TimeZone;Ljava/util/Locale;Z)V
-Ljava/util/GregorianCalendar;->actualMonthLength()I
-Ljava/util/GregorianCalendar;->adjustDstOffsetForInvalidWallClock(JLjava/util/TimeZone;I)I
-Ljava/util/GregorianCalendar;->adjustForZoneAndDaylightSavingsTime(IJLjava/util/TimeZone;)J
-Ljava/util/GregorianCalendar;->BCE:I
-Ljava/util/GregorianCalendar;->cachedFixedDate:J
-Ljava/util/GregorianCalendar;->calsys:Lsun/util/calendar/BaseCalendar;
-Ljava/util/GregorianCalendar;->cdate:Lsun/util/calendar/BaseCalendar$Date;
-Ljava/util/GregorianCalendar;->CE:I
-Ljava/util/GregorianCalendar;->computeFields(II)I
-Ljava/util/GregorianCalendar;->DEFAULT_GREGORIAN_CUTOVER:J
-Ljava/util/GregorianCalendar;->EPOCH_OFFSET:I
-Ljava/util/GregorianCalendar;->EPOCH_YEAR:I
-Ljava/util/GregorianCalendar;->gcal:Lsun/util/calendar/Gregorian;
-Ljava/util/GregorianCalendar;->gdate:Lsun/util/calendar/BaseCalendar$Date;
-Ljava/util/GregorianCalendar;->getCalendarDate(J)Lsun/util/calendar/BaseCalendar$Date;
-Ljava/util/GregorianCalendar;->getCurrentFixedDate()J
-Ljava/util/GregorianCalendar;->getCutoverCalendarSystem()Lsun/util/calendar/BaseCalendar;
-Ljava/util/GregorianCalendar;->getFixedDate(Lsun/util/calendar/BaseCalendar;II)J
-Ljava/util/GregorianCalendar;->getFixedDateJan1(Lsun/util/calendar/BaseCalendar$Date;J)J
-Ljava/util/GregorianCalendar;->getFixedDateMonth1(Lsun/util/calendar/BaseCalendar$Date;J)J
-Ljava/util/GregorianCalendar;->getGregorianCutoverDate()Lsun/util/calendar/BaseCalendar$Date;
-Ljava/util/GregorianCalendar;->getJulianCalendarSystem()Lsun/util/calendar/BaseCalendar;
-Ljava/util/GregorianCalendar;->getLastJulianDate()Lsun/util/calendar/BaseCalendar$Date;
-Ljava/util/GregorianCalendar;->getNormalizedCalendar()Ljava/util/GregorianCalendar;
-Ljava/util/GregorianCalendar;->getRolledValue(IIII)I
-Ljava/util/GregorianCalendar;->getWeekNumber(JJ)I
-Ljava/util/GregorianCalendar;->getYearOffsetInMillis()J
-Ljava/util/GregorianCalendar;->gregorianCutover:J
-Ljava/util/GregorianCalendar;->gregorianCutoverDate:J
-Ljava/util/GregorianCalendar;->gregorianCutoverYear:I
-Ljava/util/GregorianCalendar;->gregorianCutoverYearJulian:I
-Ljava/util/GregorianCalendar;->internalGetEra()I
-Ljava/util/GregorianCalendar;->isCutoverYear(I)Z
-Ljava/util/GregorianCalendar;->jcal:Lsun/util/calendar/JulianCalendar;
-Ljava/util/GregorianCalendar;->jeras:[Lsun/util/calendar/Era;
-Ljava/util/GregorianCalendar;->LEAP_MONTH_LENGTH:[I
-Ljava/util/GregorianCalendar;->LEAST_MAX_VALUES:[I
-Ljava/util/GregorianCalendar;->MAX_VALUES:[I
-Ljava/util/GregorianCalendar;->MIN_VALUES:[I
-Ljava/util/GregorianCalendar;->monthLength(I)I
-Ljava/util/GregorianCalendar;->monthLength(II)I
-Ljava/util/GregorianCalendar;->MONTH_LENGTH:[I
-Ljava/util/GregorianCalendar;->ONE_DAY:J
-Ljava/util/GregorianCalendar;->ONE_HOUR:I
-Ljava/util/GregorianCalendar;->ONE_MINUTE:I
-Ljava/util/GregorianCalendar;->ONE_SECOND:I
-Ljava/util/GregorianCalendar;->ONE_WEEK:J
-Ljava/util/GregorianCalendar;->originalFields:[I
-Ljava/util/GregorianCalendar;->pinDayOfMonth()V
-Ljava/util/GregorianCalendar;->setGregorianChange(J)V
-Ljava/util/GregorianCalendar;->yearLength()I
-Ljava/util/GregorianCalendar;->yearLength(I)I
-Ljava/util/GregorianCalendar;->zoneOffsets:[I
-Ljava/util/HashMap$EntrySet;->forEach(Ljava/util/function/Consumer;)V
-Ljava/util/HashMap$EntrySpliterator;-><init>(Ljava/util/HashMap;IIII)V
-Ljava/util/HashMap$EntrySpliterator;->forEachRemaining(Ljava/util/function/Consumer;)V
-Ljava/util/HashMap$EntrySpliterator;->tryAdvance(Ljava/util/function/Consumer;)Z
-Ljava/util/HashMap$HashIterator;->current:Ljava/util/HashMap$Node;
-Ljava/util/HashMap$HashIterator;->expectedModCount:I
-Ljava/util/HashMap$HashIterator;->index:I
-Ljava/util/HashMap$HashIterator;->next:Ljava/util/HashMap$Node;
-Ljava/util/HashMap$HashIterator;->nextNode()Ljava/util/HashMap$Node;
-Ljava/util/HashMap$HashMapSpliterator;-><init>(Ljava/util/HashMap;IIII)V
-Ljava/util/HashMap$HashMapSpliterator;->current:Ljava/util/HashMap$Node;
-Ljava/util/HashMap$HashMapSpliterator;->est:I
-Ljava/util/HashMap$HashMapSpliterator;->estimateSize()J
-Ljava/util/HashMap$HashMapSpliterator;->expectedModCount:I
-Ljava/util/HashMap$HashMapSpliterator;->fence:I
-Ljava/util/HashMap$HashMapSpliterator;->getFence()I
-Ljava/util/HashMap$HashMapSpliterator;->index:I
-Ljava/util/HashMap$HashMapSpliterator;->map:Ljava/util/HashMap;
-Ljava/util/HashMap$KeySet;->forEach(Ljava/util/function/Consumer;)V
-Ljava/util/HashMap$KeySpliterator;-><init>(Ljava/util/HashMap;IIII)V
-Ljava/util/HashMap$KeySpliterator;->forEachRemaining(Ljava/util/function/Consumer;)V
-Ljava/util/HashMap$KeySpliterator;->tryAdvance(Ljava/util/function/Consumer;)Z
-Ljava/util/HashMap$Node;-><init>(ILjava/lang/Object;Ljava/lang/Object;Ljava/util/HashMap$Node;)V
-Ljava/util/HashMap$Node;->hash:I
-Ljava/util/HashMap$TreeNode;-><init>(ILjava/lang/Object;Ljava/lang/Object;Ljava/util/HashMap$Node;)V
-Ljava/util/HashMap$TreeNode;->balanceDeletion(Ljava/util/HashMap$TreeNode;Ljava/util/HashMap$TreeNode;)Ljava/util/HashMap$TreeNode;
-Ljava/util/HashMap$TreeNode;->balanceInsertion(Ljava/util/HashMap$TreeNode;Ljava/util/HashMap$TreeNode;)Ljava/util/HashMap$TreeNode;
-Ljava/util/HashMap$TreeNode;->checkInvariants(Ljava/util/HashMap$TreeNode;)Z
-Ljava/util/HashMap$TreeNode;->find(ILjava/lang/Object;Ljava/lang/Class;)Ljava/util/HashMap$TreeNode;
-Ljava/util/HashMap$TreeNode;->getTreeNode(ILjava/lang/Object;)Ljava/util/HashMap$TreeNode;
-Ljava/util/HashMap$TreeNode;->left:Ljava/util/HashMap$TreeNode;
-Ljava/util/HashMap$TreeNode;->moveRootToFront([Ljava/util/HashMap$Node;Ljava/util/HashMap$TreeNode;)V
-Ljava/util/HashMap$TreeNode;->parent:Ljava/util/HashMap$TreeNode;
-Ljava/util/HashMap$TreeNode;->prev:Ljava/util/HashMap$TreeNode;
-Ljava/util/HashMap$TreeNode;->putTreeVal(Ljava/util/HashMap;[Ljava/util/HashMap$Node;ILjava/lang/Object;Ljava/lang/Object;)Ljava/util/HashMap$TreeNode;
-Ljava/util/HashMap$TreeNode;->red:Z
-Ljava/util/HashMap$TreeNode;->removeTreeNode(Ljava/util/HashMap;[Ljava/util/HashMap$Node;Z)V
-Ljava/util/HashMap$TreeNode;->right:Ljava/util/HashMap$TreeNode;
-Ljava/util/HashMap$TreeNode;->root()Ljava/util/HashMap$TreeNode;
-Ljava/util/HashMap$TreeNode;->rotateLeft(Ljava/util/HashMap$TreeNode;Ljava/util/HashMap$TreeNode;)Ljava/util/HashMap$TreeNode;
-Ljava/util/HashMap$TreeNode;->rotateRight(Ljava/util/HashMap$TreeNode;Ljava/util/HashMap$TreeNode;)Ljava/util/HashMap$TreeNode;
-Ljava/util/HashMap$TreeNode;->split(Ljava/util/HashMap;[Ljava/util/HashMap$Node;II)V
-Ljava/util/HashMap$TreeNode;->tieBreakOrder(Ljava/lang/Object;Ljava/lang/Object;)I
-Ljava/util/HashMap$TreeNode;->treeify([Ljava/util/HashMap$Node;)V
-Ljava/util/HashMap$TreeNode;->untreeify(Ljava/util/HashMap;)Ljava/util/HashMap$Node;
-Ljava/util/HashMap$Values;->forEach(Ljava/util/function/Consumer;)V
-Ljava/util/HashMap$ValueSpliterator;-><init>(Ljava/util/HashMap;IIII)V
-Ljava/util/HashMap$ValueSpliterator;->forEachRemaining(Ljava/util/function/Consumer;)V
-Ljava/util/HashMap$ValueSpliterator;->tryAdvance(Ljava/util/function/Consumer;)Z
-Ljava/util/HashMap;->afterNodeAccess(Ljava/util/HashMap$Node;)V
-Ljava/util/HashMap;->afterNodeInsertion(Z)V
-Ljava/util/HashMap;->afterNodeRemoval(Ljava/util/HashMap$Node;)V
-Ljava/util/HashMap;->capacity()I
-Ljava/util/HashMap;->comparableClassFor(Ljava/lang/Object;)Ljava/lang/Class;
-Ljava/util/HashMap;->compareComparables(Ljava/lang/Class;Ljava/lang/Object;Ljava/lang/Object;)I
-Ljava/util/HashMap;->DEFAULT_INITIAL_CAPACITY:I
-Ljava/util/HashMap;->DEFAULT_LOAD_FACTOR:F
-Ljava/util/HashMap;->entrySet:Ljava/util/Set;
-Ljava/util/HashMap;->getNode(ILjava/lang/Object;)Ljava/util/HashMap$Node;
-Ljava/util/HashMap;->hash(Ljava/lang/Object;)I
-Ljava/util/HashMap;->internalWriteEntries(Ljava/io/ObjectOutputStream;)V
-Ljava/util/HashMap;->loadFactor()F
-Ljava/util/HashMap;->loadFactor:F
-Ljava/util/HashMap;->MAXIMUM_CAPACITY:I
-Ljava/util/HashMap;->MIN_TREEIFY_CAPACITY:I
-Ljava/util/HashMap;->newNode(ILjava/lang/Object;Ljava/lang/Object;Ljava/util/HashMap$Node;)Ljava/util/HashMap$Node;
-Ljava/util/HashMap;->newTreeNode(ILjava/lang/Object;Ljava/lang/Object;Ljava/util/HashMap$Node;)Ljava/util/HashMap$TreeNode;
-Ljava/util/HashMap;->putMapEntries(Ljava/util/Map;Z)V
-Ljava/util/HashMap;->putVal(ILjava/lang/Object;Ljava/lang/Object;ZZ)Ljava/lang/Object;
-Ljava/util/HashMap;->reinitialize()V
-Ljava/util/HashMap;->removeNode(ILjava/lang/Object;Ljava/lang/Object;ZZ)Ljava/util/HashMap$Node;
-Ljava/util/HashMap;->replacementNode(Ljava/util/HashMap$Node;Ljava/util/HashMap$Node;)Ljava/util/HashMap$Node;
-Ljava/util/HashMap;->replacementTreeNode(Ljava/util/HashMap$Node;Ljava/util/HashMap$Node;)Ljava/util/HashMap$TreeNode;
-Ljava/util/HashMap;->resize()[Ljava/util/HashMap$Node;
-Ljava/util/HashMap;->size:I
-Ljava/util/HashMap;->tableSizeFor(I)I
-Ljava/util/HashMap;->threshold:I
-Ljava/util/HashMap;->treeifyBin([Ljava/util/HashMap$Node;I)V
-Ljava/util/HashMap;->TREEIFY_THRESHOLD:I
-Ljava/util/HashMap;->UNTREEIFY_THRESHOLD:I
-Ljava/util/HashSet;-><init>(IFZ)V
-Ljava/util/HashSet;->PRESENT:Ljava/lang/Object;
-Ljava/util/Hashtable$EntrySet;->add(Ljava/util/Map$Entry;)Z
-Ljava/util/Hashtable$Enumerator;->entry:Ljava/util/Hashtable$HashtableEntry;
-Ljava/util/Hashtable$Enumerator;->expectedModCount:I
-Ljava/util/Hashtable$Enumerator;->index:I
-Ljava/util/Hashtable$Enumerator;->iterator:Z
-Ljava/util/Hashtable$Enumerator;->lastReturned:Ljava/util/Hashtable$HashtableEntry;
-Ljava/util/Hashtable$Enumerator;->table:[Ljava/util/Hashtable$HashtableEntry;
-Ljava/util/Hashtable$Enumerator;->type:I
-Ljava/util/Hashtable$HashtableEntry;-><init>(ILjava/lang/Object;Ljava/lang/Object;Ljava/util/Hashtable$HashtableEntry;)V
-Ljava/util/Hashtable$HashtableEntry;->hash:I
-Ljava/util/Hashtable$HashtableEntry;->key:Ljava/lang/Object;
-Ljava/util/Hashtable$HashtableEntry;->next:Ljava/util/Hashtable$HashtableEntry;
-Ljava/util/Hashtable$HashtableEntry;->value:Ljava/lang/Object;
-Ljava/util/Hashtable;->addEntry(ILjava/lang/Object;Ljava/lang/Object;I)V
-Ljava/util/Hashtable;->count:I
-Ljava/util/Hashtable;->ENTRIES:I
-Ljava/util/Hashtable;->entrySet:Ljava/util/Set;
-Ljava/util/Hashtable;->getEnumeration(I)Ljava/util/Enumeration;
-Ljava/util/Hashtable;->getIterator(I)Ljava/util/Iterator;
-Ljava/util/Hashtable;->KEYS:I
-Ljava/util/Hashtable;->keySet:Ljava/util/Set;
-Ljava/util/Hashtable;->loadFactor:F
-Ljava/util/Hashtable;->MAX_ARRAY_SIZE:I
-Ljava/util/Hashtable;->modCount:I
-Ljava/util/Hashtable;->reconstitutionPut([Ljava/util/Hashtable$HashtableEntry;Ljava/lang/Object;Ljava/lang/Object;)V
-Ljava/util/Hashtable;->table:[Ljava/util/Hashtable$HashtableEntry;
-Ljava/util/Hashtable;->threshold:I
-Ljava/util/Hashtable;->VALUES:I
-Ljava/util/Hashtable;->values:Ljava/util/Collection;
-Ljava/util/IdentityHashMap$EntryIterator$Entry;->checkIndexForEntryUse()V
-Ljava/util/IdentityHashMap$EntryIterator$Entry;->index:I
-Ljava/util/IdentityHashMap$EntryIterator;->lastReturnedEntry:Ljava/util/IdentityHashMap$EntryIterator$Entry;
-Ljava/util/IdentityHashMap$EntrySpliterator;-><init>(Ljava/util/IdentityHashMap;IIII)V
-Ljava/util/IdentityHashMap$EntrySpliterator;->forEachRemaining(Ljava/util/function/Consumer;)V
-Ljava/util/IdentityHashMap$EntrySpliterator;->tryAdvance(Ljava/util/function/Consumer;)Z
-Ljava/util/IdentityHashMap$IdentityHashMapIterator;->expectedModCount:I
-Ljava/util/IdentityHashMap$IdentityHashMapIterator;->index:I
-Ljava/util/IdentityHashMap$IdentityHashMapIterator;->indexValid:Z
-Ljava/util/IdentityHashMap$IdentityHashMapIterator;->lastReturnedIndex:I
-Ljava/util/IdentityHashMap$IdentityHashMapIterator;->nextIndex()I
-Ljava/util/IdentityHashMap$IdentityHashMapIterator;->traversalTable:[Ljava/lang/Object;
-Ljava/util/IdentityHashMap$IdentityHashMapSpliterator;-><init>(Ljava/util/IdentityHashMap;IIII)V
-Ljava/util/IdentityHashMap$IdentityHashMapSpliterator;->est:I
-Ljava/util/IdentityHashMap$IdentityHashMapSpliterator;->estimateSize()J
-Ljava/util/IdentityHashMap$IdentityHashMapSpliterator;->expectedModCount:I
-Ljava/util/IdentityHashMap$IdentityHashMapSpliterator;->fence:I
-Ljava/util/IdentityHashMap$IdentityHashMapSpliterator;->getFence()I
-Ljava/util/IdentityHashMap$IdentityHashMapSpliterator;->index:I
-Ljava/util/IdentityHashMap$IdentityHashMapSpliterator;->map:Ljava/util/IdentityHashMap;
-Ljava/util/IdentityHashMap$KeySpliterator;-><init>(Ljava/util/IdentityHashMap;IIII)V
-Ljava/util/IdentityHashMap$KeySpliterator;->forEachRemaining(Ljava/util/function/Consumer;)V
-Ljava/util/IdentityHashMap$KeySpliterator;->tryAdvance(Ljava/util/function/Consumer;)Z
-Ljava/util/IdentityHashMap$ValueSpliterator;-><init>(Ljava/util/IdentityHashMap;IIII)V
-Ljava/util/IdentityHashMap$ValueSpliterator;->forEachRemaining(Ljava/util/function/Consumer;)V
-Ljava/util/IdentityHashMap$ValueSpliterator;->tryAdvance(Ljava/util/function/Consumer;)Z
-Ljava/util/IdentityHashMap;->capacity(I)I
-Ljava/util/IdentityHashMap;->closeDeletion(I)V
-Ljava/util/IdentityHashMap;->containsMapping(Ljava/lang/Object;Ljava/lang/Object;)Z
-Ljava/util/IdentityHashMap;->DEFAULT_CAPACITY:I
-Ljava/util/IdentityHashMap;->entrySet:Ljava/util/Set;
-Ljava/util/IdentityHashMap;->hash(Ljava/lang/Object;I)I
-Ljava/util/IdentityHashMap;->init(I)V
-Ljava/util/IdentityHashMap;->maskNull(Ljava/lang/Object;)Ljava/lang/Object;
-Ljava/util/IdentityHashMap;->MAXIMUM_CAPACITY:I
-Ljava/util/IdentityHashMap;->MINIMUM_CAPACITY:I
-Ljava/util/IdentityHashMap;->modCount:I
-Ljava/util/IdentityHashMap;->nextKeyIndex(II)I
-Ljava/util/IdentityHashMap;->NULL_KEY:Ljava/lang/Object;
-Ljava/util/IdentityHashMap;->putForCreate(Ljava/lang/Object;Ljava/lang/Object;)V
-Ljava/util/IdentityHashMap;->removeMapping(Ljava/lang/Object;Ljava/lang/Object;)Z
-Ljava/util/IdentityHashMap;->resize(I)Z
-Ljava/util/IdentityHashMap;->size:I
-Ljava/util/IdentityHashMap;->table:[Ljava/lang/Object;
-Ljava/util/IdentityHashMap;->unmaskNull(Ljava/lang/Object;)Ljava/lang/Object;
-Ljava/util/IllegalFormatCodePointException;->c:I
-Ljava/util/IllegalFormatConversionException;->arg:Ljava/lang/Class;
-Ljava/util/IllegalFormatConversionException;->c:C
-Ljava/util/IllegalFormatException;-><init>()V
-Ljava/util/IllegalFormatFlagsException;->flags:Ljava/lang/String;
-Ljava/util/IllegalFormatPrecisionException;->p:I
-Ljava/util/IllegalFormatWidthException;->w:I
-Ljava/util/IllformedLocaleException;->_errIdx:I
-Ljava/util/IntSummaryStatistics;->count:J
-Ljava/util/IntSummaryStatistics;->max:I
-Ljava/util/IntSummaryStatistics;->min:I
-Ljava/util/IntSummaryStatistics;->sum:J
-Ljava/util/jar/Attributes$Name;->hashCode:I
-Ljava/util/jar/Attributes$Name;->isAlpha(C)Z
-Ljava/util/jar/Attributes$Name;->isDigit(C)Z
-Ljava/util/jar/Attributes$Name;->isValid(C)Z
-Ljava/util/jar/Attributes$Name;->isValid(Ljava/lang/String;)Z
-Ljava/util/jar/Attributes$Name;->name:Ljava/lang/String;
-Ljava/util/jar/Attributes$Name;->NAME:Ljava/util/jar/Attributes$Name;
-Ljava/util/jar/Attributes;->read(Ljava/util/jar/Manifest$FastInputStream;[B)V
-Ljava/util/jar/Attributes;->write(Ljava/io/DataOutputStream;)V
-Ljava/util/jar/Attributes;->writeMain(Ljava/io/DataOutputStream;)V
-Ljava/util/jar/JarEntry;->attr:Ljava/util/jar/Attributes;
-Ljava/util/jar/JarEntry;->certs:[Ljava/security/cert/Certificate;
-Ljava/util/jar/JarEntry;->signers:[Ljava/security/CodeSigner;
-Ljava/util/jar/JarFile$JarEntryIterator;->e:Ljava/util/Enumeration;
-Ljava/util/jar/JarFile;->checkForSpecialAttributes()V
-Ljava/util/jar/JarFile;->CLASSPATH_CHARS:[C
-Ljava/util/jar/JarFile;->CLASSPATH_LASTOCC:[I
-Ljava/util/jar/JarFile;->CLASSPATH_OPTOSFT:[I
-Ljava/util/jar/JarFile;->getBytes(Ljava/util/zip/ZipEntry;)[B
-Ljava/util/jar/JarFile;->getManEntry()Ljava/util/jar/JarEntry;
-Ljava/util/jar/JarFile;->getManifestFromReference()Ljava/util/jar/Manifest;
-Ljava/util/jar/JarFile;->getMetaInfEntryNames()[Ljava/lang/String;
-Ljava/util/jar/JarFile;->hasCheckedSpecialAttributes:Z
-Ljava/util/jar/JarFile;->hasClassPathAttribute()Z
-Ljava/util/jar/JarFile;->hasClassPathAttribute:Z
-Ljava/util/jar/JarFile;->initializeVerifier()V
-Ljava/util/jar/JarFile;->jv:Ljava/util/jar/JarVerifier;
-Ljava/util/jar/JarFile;->jvInitialized:Z
-Ljava/util/jar/JarFile;->manEntry:Ljava/util/jar/JarEntry;
-Ljava/util/jar/JarFile;->match([C[B[I[I)Z
-Ljava/util/jar/JarFile;->maybeInstantiateVerifier()V
-Ljava/util/jar/JarFile;->META_DIR:Ljava/lang/String;
-Ljava/util/jar/JarFile;->newEntry(Ljava/util/zip/ZipEntry;)Ljava/util/jar/JarEntry;
-Ljava/util/jar/JarFile;->verify:Z
-Ljava/util/jar/JarInputStream;->checkManifest(Ljava/util/jar/JarEntry;)Ljava/util/jar/JarEntry;
-Ljava/util/jar/JarInputStream;->doVerify:Z
-Ljava/util/jar/JarInputStream;->first:Ljava/util/jar/JarEntry;
-Ljava/util/jar/JarInputStream;->getBytes(Ljava/io/InputStream;)[B
-Ljava/util/jar/JarInputStream;->jv:Ljava/util/jar/JarVerifier;
-Ljava/util/jar/JarInputStream;->man:Ljava/util/jar/Manifest;
-Ljava/util/jar/JarInputStream;->mev:Lsun/security/util/ManifestEntryVerifier;
-Ljava/util/jar/JarInputStream;->tryManifest:Z
-Ljava/util/jar/JarOutputStream;->firstEntry:Z
-Ljava/util/jar/JarOutputStream;->get16([BI)I
-Ljava/util/jar/JarOutputStream;->hasMagic([B)Z
-Ljava/util/jar/JarOutputStream;->JAR_MAGIC:I
-Ljava/util/jar/JarOutputStream;->set16([BII)V
-Ljava/util/jar/JarVerifier$VerifierCodeSource;-><init>(Ljava/lang/Object;Ljava/net/URL;[Ljava/security/cert/Certificate;)V
-Ljava/util/jar/JarVerifier$VerifierCodeSource;-><init>(Ljava/lang/Object;Ljava/net/URL;[Ljava/security/CodeSigner;)V
-Ljava/util/jar/JarVerifier$VerifierCodeSource;->csdomain:Ljava/lang/Object;
-Ljava/util/jar/JarVerifier$VerifierCodeSource;->getPrivateCertificates()[Ljava/security/cert/Certificate;
-Ljava/util/jar/JarVerifier$VerifierCodeSource;->getPrivateSigners()[Ljava/security/CodeSigner;
-Ljava/util/jar/JarVerifier$VerifierCodeSource;->isSameDomain(Ljava/lang/Object;)Z
-Ljava/util/jar/JarVerifier$VerifierCodeSource;->vcerts:[Ljava/security/cert/Certificate;
-Ljava/util/jar/JarVerifier$VerifierCodeSource;->vlocation:Ljava/net/URL;
-Ljava/util/jar/JarVerifier$VerifierCodeSource;->vsigners:[Ljava/security/CodeSigner;
-Ljava/util/jar/JarVerifier$VerifierStream;-><init>(Ljava/util/jar/Manifest;Ljava/util/jar/JarEntry;Ljava/io/InputStream;Ljava/util/jar/JarVerifier;)V
-Ljava/util/jar/JarVerifier$VerifierStream;->is:Ljava/io/InputStream;
-Ljava/util/jar/JarVerifier$VerifierStream;->jv:Ljava/util/jar/JarVerifier;
-Ljava/util/jar/JarVerifier$VerifierStream;->mev:Lsun/security/util/ManifestEntryVerifier;
-Ljava/util/jar/JarVerifier$VerifierStream;->numLeft:J
-Ljava/util/jar/JarVerifier;-><init>([B)V
-Ljava/util/jar/JarVerifier;->anyToVerify:Z
-Ljava/util/jar/JarVerifier;->baos:Ljava/io/ByteArrayOutputStream;
-Ljava/util/jar/JarVerifier;->beginEntry(Ljava/util/jar/JarEntry;Lsun/security/util/ManifestEntryVerifier;)V
-Ljava/util/jar/JarVerifier;->csdomain:Ljava/lang/Object;
-Ljava/util/jar/JarVerifier;->debug:Lsun/security/util/Debug;
-Ljava/util/jar/JarVerifier;->doneWithMeta()V
-Ljava/util/jar/JarVerifier;->eagerValidation:Z
-Ljava/util/jar/JarVerifier;->emptyEnumeration:Ljava/util/Enumeration;
-Ljava/util/jar/JarVerifier;->emptySigner:[Ljava/security/CodeSigner;
-Ljava/util/jar/JarVerifier;->entries2(Ljava/util/jar/JarFile;Ljava/util/Enumeration;)Ljava/util/Enumeration;
-Ljava/util/jar/JarVerifier;->entryNames(Ljava/util/jar/JarFile;[Ljava/security/CodeSource;)Ljava/util/Enumeration;
-Ljava/util/jar/JarVerifier;->findMatchingSigners(Ljava/security/CodeSource;)[Ljava/security/CodeSigner;
-Ljava/util/jar/JarVerifier;->getCerts(Ljava/lang/String;)[Ljava/security/cert/Certificate;
-Ljava/util/jar/JarVerifier;->getCerts(Ljava/util/jar/JarFile;Ljava/util/jar/JarEntry;)[Ljava/security/cert/Certificate;
-Ljava/util/jar/JarVerifier;->getCodeSigners(Ljava/lang/String;)[Ljava/security/CodeSigner;
-Ljava/util/jar/JarVerifier;->getCodeSigners(Ljava/util/jar/JarFile;Ljava/util/jar/JarEntry;)[Ljava/security/CodeSigner;
-Ljava/util/jar/JarVerifier;->getCodeSource(Ljava/net/URL;Ljava/lang/String;)Ljava/security/CodeSource;
-Ljava/util/jar/JarVerifier;->getCodeSource(Ljava/net/URL;Ljava/util/jar/JarFile;Ljava/util/jar/JarEntry;)Ljava/security/CodeSource;
-Ljava/util/jar/JarVerifier;->getCodeSources(Ljava/util/jar/JarFile;Ljava/net/URL;)[Ljava/security/CodeSource;
-Ljava/util/jar/JarVerifier;->getJarCodeSigners()Ljava/util/List;
-Ljava/util/jar/JarVerifier;->getManifestDigests()Ljava/util/List;
-Ljava/util/jar/JarVerifier;->getUnsignedCS(Ljava/net/URL;)Ljava/security/CodeSource;
-Ljava/util/jar/JarVerifier;->isSigningRelated(Ljava/lang/String;)Z
-Ljava/util/jar/JarVerifier;->jarCodeSigners:Ljava/util/List;
-Ljava/util/jar/JarVerifier;->lastURL:Ljava/net/URL;
-Ljava/util/jar/JarVerifier;->lastURLMap:Ljava/util/Map;
-Ljava/util/jar/JarVerifier;->manDig:Lsun/security/util/ManifestDigester;
-Ljava/util/jar/JarVerifier;->manifestDigests:Ljava/util/List;
-Ljava/util/jar/JarVerifier;->manifestRawBytes:[B
-Ljava/util/jar/JarVerifier;->mapSignersToCertArray([Ljava/security/CodeSigner;)[Ljava/security/cert/Certificate;
-Ljava/util/jar/JarVerifier;->mapSignersToCodeSource(Ljava/net/URL;[Ljava/security/CodeSigner;)Ljava/security/CodeSource;
-Ljava/util/jar/JarVerifier;->mapSignersToCodeSources(Ljava/net/URL;Ljava/util/List;Z)[Ljava/security/CodeSource;
-Ljava/util/jar/JarVerifier;->nothingToVerify()Z
-Ljava/util/jar/JarVerifier;->parsingBlockOrSF:Z
-Ljava/util/jar/JarVerifier;->parsingMeta:Z
-Ljava/util/jar/JarVerifier;->pendingBlocks:Ljava/util/ArrayList;
-Ljava/util/jar/JarVerifier;->processEntry(Lsun/security/util/ManifestEntryVerifier;)V
-Ljava/util/jar/JarVerifier;->setEagerValidation(Z)V
-Ljava/util/jar/JarVerifier;->sigFileData:Ljava/util/Hashtable;
-Ljava/util/jar/JarVerifier;->sigFileSigners:Ljava/util/Hashtable;
-Ljava/util/jar/JarVerifier;->signerCache:Ljava/util/ArrayList;
-Ljava/util/jar/JarVerifier;->signerMap()Ljava/util/Map;
-Ljava/util/jar/JarVerifier;->signerMap:Ljava/util/Map;
-Ljava/util/jar/JarVerifier;->signerToCodeSource:Ljava/util/Map;
-Ljava/util/jar/JarVerifier;->unsignedEntryNames(Ljava/util/jar/JarFile;)Ljava/util/Enumeration;
-Ljava/util/jar/JarVerifier;->update(ILsun/security/util/ManifestEntryVerifier;)V
-Ljava/util/jar/JarVerifier;->update(I[BIILsun/security/util/ManifestEntryVerifier;)V
-Ljava/util/jar/JarVerifier;->urlToCodeSourceMap:Ljava/util/Map;
-Ljava/util/jar/JarVerifier;->verifiedSigners:Ljava/util/Hashtable;
-Ljava/util/jar/Manifest$FastInputStream;-><init>(Ljava/io/InputStream;)V
-Ljava/util/jar/Manifest$FastInputStream;-><init>(Ljava/io/InputStream;I)V
-Ljava/util/jar/Manifest$FastInputStream;->buf:[B
-Ljava/util/jar/Manifest$FastInputStream;->count:I
-Ljava/util/jar/Manifest$FastInputStream;->fill()V
-Ljava/util/jar/Manifest$FastInputStream;->peek()B
-Ljava/util/jar/Manifest$FastInputStream;->pos:I
-Ljava/util/jar/Manifest$FastInputStream;->readLine([B)I
-Ljava/util/jar/Manifest$FastInputStream;->readLine([BII)I
-Ljava/util/jar/Manifest;->attr:Ljava/util/jar/Attributes;
-Ljava/util/jar/Manifest;->entries:Ljava/util/Map;
-Ljava/util/jar/Manifest;->make72Safe(Ljava/lang/StringBuffer;)V
-Ljava/util/jar/Manifest;->parseName([BI)Ljava/lang/String;
-Ljava/util/jar/Manifest;->toLower(I)I
-Ljava/util/jar/Pack200;-><init>()V
-Ljava/util/jar/Pack200;->newInstance(Ljava/lang/String;)Ljava/lang/Object;
-Ljava/util/jar/Pack200;->packerImpl:Ljava/lang/Class;
-Ljava/util/jar/Pack200;->PACK_PROVIDER:Ljava/lang/String;
-Ljava/util/jar/Pack200;->unpackerImpl:Ljava/lang/Class;
-Ljava/util/jar/Pack200;->UNPACK_PROVIDER:Ljava/lang/String;
-Ljava/util/LinkedHashMap$LinkedEntrySet;->forEach(Ljava/util/function/Consumer;)V
-Ljava/util/LinkedHashMap$LinkedHashIterator;->current:Ljava/util/LinkedHashMap$LinkedHashMapEntry;
-Ljava/util/LinkedHashMap$LinkedHashIterator;->expectedModCount:I
-Ljava/util/LinkedHashMap$LinkedHashIterator;->next:Ljava/util/LinkedHashMap$LinkedHashMapEntry;
-Ljava/util/LinkedHashMap$LinkedHashIterator;->nextNode()Ljava/util/LinkedHashMap$LinkedHashMapEntry;
-Ljava/util/LinkedHashMap$LinkedHashIterator;->remove()V
-Ljava/util/LinkedHashMap$LinkedHashMapEntry;-><init>(ILjava/lang/Object;Ljava/lang/Object;Ljava/util/HashMap$Node;)V
-Ljava/util/LinkedHashMap$LinkedHashMapEntry;->after:Ljava/util/LinkedHashMap$LinkedHashMapEntry;
-Ljava/util/LinkedHashMap$LinkedHashMapEntry;->before:Ljava/util/LinkedHashMap$LinkedHashMapEntry;
-Ljava/util/LinkedHashMap$LinkedKeySet;->forEach(Ljava/util/function/Consumer;)V
-Ljava/util/LinkedHashMap$LinkedValues;->forEach(Ljava/util/function/Consumer;)V
-Ljava/util/LinkedHashMap;->afterNodeAccess(Ljava/util/HashMap$Node;)V
-Ljava/util/LinkedHashMap;->afterNodeInsertion(Z)V
-Ljava/util/LinkedHashMap;->afterNodeRemoval(Ljava/util/HashMap$Node;)V
-Ljava/util/LinkedHashMap;->head:Ljava/util/LinkedHashMap$LinkedHashMapEntry;
-Ljava/util/LinkedHashMap;->internalWriteEntries(Ljava/io/ObjectOutputStream;)V
-Ljava/util/LinkedHashMap;->linkNodeLast(Ljava/util/LinkedHashMap$LinkedHashMapEntry;)V
-Ljava/util/LinkedHashMap;->newNode(ILjava/lang/Object;Ljava/lang/Object;Ljava/util/HashMap$Node;)Ljava/util/HashMap$Node;
-Ljava/util/LinkedHashMap;->newTreeNode(ILjava/lang/Object;Ljava/lang/Object;Ljava/util/HashMap$Node;)Ljava/util/HashMap$TreeNode;
-Ljava/util/LinkedHashMap;->reinitialize()V
-Ljava/util/LinkedHashMap;->replacementNode(Ljava/util/HashMap$Node;Ljava/util/HashMap$Node;)Ljava/util/HashMap$Node;
-Ljava/util/LinkedHashMap;->replacementTreeNode(Ljava/util/HashMap$Node;Ljava/util/HashMap$Node;)Ljava/util/HashMap$TreeNode;
-Ljava/util/LinkedHashMap;->tail:Ljava/util/LinkedHashMap$LinkedHashMapEntry;
-Ljava/util/LinkedHashMap;->transferLinks(Ljava/util/LinkedHashMap$LinkedHashMapEntry;Ljava/util/LinkedHashMap$LinkedHashMapEntry;)V
-Ljava/util/LinkedList$DescendingIterator;->itr:Ljava/util/LinkedList$ListItr;
-Ljava/util/LinkedList$ListItr;->checkForComodification()V
-Ljava/util/LinkedList$ListItr;->expectedModCount:I
-Ljava/util/LinkedList$ListItr;->lastReturned:Ljava/util/LinkedList$Node;
-Ljava/util/LinkedList$ListItr;->next:Ljava/util/LinkedList$Node;
-Ljava/util/LinkedList$ListItr;->nextIndex:I
-Ljava/util/LinkedList$LLSpliterator;-><init>(Ljava/util/LinkedList;II)V
-Ljava/util/LinkedList$LLSpliterator;->batch:I
-Ljava/util/LinkedList$LLSpliterator;->BATCH_UNIT:I
-Ljava/util/LinkedList$LLSpliterator;->current:Ljava/util/LinkedList$Node;
-Ljava/util/LinkedList$LLSpliterator;->est:I
-Ljava/util/LinkedList$LLSpliterator;->expectedModCount:I
-Ljava/util/LinkedList$LLSpliterator;->forEachRemaining(Ljava/util/function/Consumer;)V
-Ljava/util/LinkedList$LLSpliterator;->getEst()I
-Ljava/util/LinkedList$LLSpliterator;->list:Ljava/util/LinkedList;
-Ljava/util/LinkedList$LLSpliterator;->MAX_BATCH:I
-Ljava/util/LinkedList$LLSpliterator;->tryAdvance(Ljava/util/function/Consumer;)Z
-Ljava/util/LinkedList$Node;-><init>(Ljava/util/LinkedList$Node;Ljava/lang/Object;Ljava/util/LinkedList$Node;)V
-Ljava/util/LinkedList$Node;->prev:Ljava/util/LinkedList$Node;
-Ljava/util/LinkedList;->checkElementIndex(I)V
-Ljava/util/LinkedList;->checkPositionIndex(I)V
-Ljava/util/LinkedList;->isElementIndex(I)Z
-Ljava/util/LinkedList;->isPositionIndex(I)Z
-Ljava/util/LinkedList;->last:Ljava/util/LinkedList$Node;
-Ljava/util/LinkedList;->linkBefore(Ljava/lang/Object;Ljava/util/LinkedList$Node;)V
-Ljava/util/LinkedList;->linkFirst(Ljava/lang/Object;)V
-Ljava/util/LinkedList;->linkLast(Ljava/lang/Object;)V
-Ljava/util/LinkedList;->node(I)Ljava/util/LinkedList$Node;
-Ljava/util/LinkedList;->outOfBoundsMsg(I)Ljava/lang/String;
-Ljava/util/LinkedList;->superClone()Ljava/util/LinkedList;
-Ljava/util/LinkedList;->unlink(Ljava/util/LinkedList$Node;)Ljava/lang/Object;
-Ljava/util/LinkedList;->unlinkFirst(Ljava/util/LinkedList$Node;)Ljava/lang/Object;
-Ljava/util/LinkedList;->unlinkLast(Ljava/util/LinkedList$Node;)Ljava/lang/Object;
-Ljava/util/ListResourceBundle;->loadLookup()V
-Ljava/util/ListResourceBundle;->lookup:Ljava/util/Map;
-Ljava/util/Locale$Builder;->localeBuilder:Lsun/util/locale/InternalLocaleBuilder;
-Ljava/util/Locale$Cache;-><init>()V
-Ljava/util/Locale$Cache;->createObject(Ljava/util/Locale$LocaleKey;)Ljava/util/Locale;
-Ljava/util/Locale$Category;->countryKey:Ljava/lang/String;
-Ljava/util/Locale$Category;->languageKey:Ljava/lang/String;
-Ljava/util/Locale$Category;->scriptKey:Ljava/lang/String;
-Ljava/util/Locale$Category;->variantKey:Ljava/lang/String;
-Ljava/util/Locale$LanguageRange;->hash:I
-Ljava/util/Locale$LanguageRange;->isSubtagIllFormed(Ljava/lang/String;Z)Z
-Ljava/util/Locale$LanguageRange;->range:Ljava/lang/String;
-Ljava/util/Locale$LanguageRange;->weight:D
-Ljava/util/Locale$LocaleKey;-><init>(Lsun/util/locale/BaseLocale;Lsun/util/locale/LocaleExtensions;)V
-Ljava/util/Locale$LocaleKey;->base:Lsun/util/locale/BaseLocale;
-Ljava/util/Locale$LocaleKey;->exts:Lsun/util/locale/LocaleExtensions;
-Ljava/util/Locale$LocaleKey;->hash:I
-Ljava/util/Locale$NoImagePreloadHolder;-><init>()V
-Ljava/util/Locale$NoImagePreloadHolder;->defaultLocale:Ljava/util/Locale;
-Ljava/util/Locale;-><init>(Lsun/util/locale/BaseLocale;Lsun/util/locale/LocaleExtensions;)V
-Ljava/util/Locale;->adjustLanguageCode(Ljava/lang/String;)Ljava/lang/String;
-Ljava/util/Locale;->baseLocale:Lsun/util/locale/BaseLocale;
-Ljava/util/Locale;->composeList(Ljava/text/MessageFormat;[Ljava/lang/String;)[Ljava/lang/String;
-Ljava/util/Locale;->convertOldISOCodes(Ljava/lang/String;)Ljava/lang/String;
-Ljava/util/Locale;->defaultDisplayLocale:Ljava/util/Locale;
-Ljava/util/Locale;->defaultFormatLocale:Ljava/util/Locale;
-Ljava/util/Locale;->DISPLAY_COUNTRY:I
-Ljava/util/Locale;->DISPLAY_LANGUAGE:I
-Ljava/util/Locale;->DISPLAY_SCRIPT:I
-Ljava/util/Locale;->DISPLAY_VARIANT:I
-Ljava/util/Locale;->formatList([Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
-Ljava/util/Locale;->getBaseLocale()Lsun/util/locale/BaseLocale;
-Ljava/util/Locale;->getCompatibilityExtensions(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Lsun/util/locale/LocaleExtensions;
-Ljava/util/Locale;->getInstance(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/util/Locale;
-Ljava/util/Locale;->getInstance(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lsun/util/locale/LocaleExtensions;)Ljava/util/Locale;
-Ljava/util/Locale;->getLocaleExtensions()Lsun/util/locale/LocaleExtensions;
-Ljava/util/Locale;->hashCodeValue:I
-Ljava/util/Locale;->initDefault()Ljava/util/Locale;
-Ljava/util/Locale;->initDefault(Ljava/util/Locale$Category;)Ljava/util/Locale;
-Ljava/util/Locale;->isAsciiAlphaNum(Ljava/lang/String;)Z
-Ljava/util/Locale;->isoCountries:[Ljava/lang/String;
-Ljava/util/Locale;->isoLanguages:[Ljava/lang/String;
-Ljava/util/Locale;->isUnicodeExtensionKey(Ljava/lang/String;)Z
-Ljava/util/Locale;->isUnM49AreaCode(Ljava/lang/String;)Z
-Ljava/util/Locale;->isValidBcp47Alpha(Ljava/lang/String;II)Z
-Ljava/util/Locale;->isValidVariantSubtag(Ljava/lang/String;)Z
-Ljava/util/Locale;->languageTag:Ljava/lang/String;
-Ljava/util/Locale;->LOCALECACHE:Ljava/util/Locale$Cache;
-Ljava/util/Locale;->localeExtensions:Lsun/util/locale/LocaleExtensions;
-Ljava/util/Locale;->normalizeAndValidateLanguage(Ljava/lang/String;Z)Ljava/lang/String;
-Ljava/util/Locale;->normalizeAndValidateRegion(Ljava/lang/String;Z)Ljava/lang/String;
-Ljava/util/Locale;->normalizeAndValidateVariant(Ljava/lang/String;)Ljava/lang/String;
-Ljava/util/Locale;->UNDETERMINED_LANGUAGE:Ljava/lang/String;
-Ljava/util/logging/ConsoleHandler;->configure()V
-Ljava/util/logging/ErrorManager;->reported:Z
-Ljava/util/logging/FileHandler$InitializationErrorManager;-><init>()V
-Ljava/util/logging/FileHandler$InitializationErrorManager;->lastException:Ljava/lang/Exception;
-Ljava/util/logging/FileHandler$MeteredStream;->out:Ljava/io/OutputStream;
-Ljava/util/logging/FileHandler$MeteredStream;->written:I
-Ljava/util/logging/FileHandler;->append:Z
-Ljava/util/logging/FileHandler;->configure()V
-Ljava/util/logging/FileHandler;->count:I
-Ljava/util/logging/FileHandler;->files:[Ljava/io/File;
-Ljava/util/logging/FileHandler;->generate(Ljava/lang/String;II)Ljava/io/File;
-Ljava/util/logging/FileHandler;->isParentWritable(Ljava/nio/file/Path;)Z
-Ljava/util/logging/FileHandler;->limit:I
-Ljava/util/logging/FileHandler;->lockFileChannel:Ljava/nio/channels/FileChannel;
-Ljava/util/logging/FileHandler;->lockFileName:Ljava/lang/String;
-Ljava/util/logging/FileHandler;->locks:Ljava/util/Set;
-Ljava/util/logging/FileHandler;->MAX_LOCKS:I
-Ljava/util/logging/FileHandler;->meter:Ljava/util/logging/FileHandler$MeteredStream;
-Ljava/util/logging/FileHandler;->open(Ljava/io/File;Z)V
-Ljava/util/logging/FileHandler;->openFiles()V
-Ljava/util/logging/FileHandler;->pattern:Ljava/lang/String;
-Ljava/util/logging/FileHandler;->rotate()V
-Ljava/util/logging/Handler;->checkPermission()V
-Ljava/util/logging/Handler;->encoding:Ljava/lang/String;
-Ljava/util/logging/Handler;->errorManager:Ljava/util/logging/ErrorManager;
-Ljava/util/logging/Handler;->filter:Ljava/util/logging/Filter;
-Ljava/util/logging/Handler;->formatter:Ljava/util/logging/Formatter;
-Ljava/util/logging/Handler;->logLevel:Ljava/util/logging/Level;
-Ljava/util/logging/Handler;->manager:Ljava/util/logging/LogManager;
-Ljava/util/logging/Handler;->offValue:I
-Ljava/util/logging/Level$KnownLevel;-><init>(Ljava/util/logging/Level;)V
-Ljava/util/logging/Level$KnownLevel;->add(Ljava/util/logging/Level;)V
-Ljava/util/logging/Level$KnownLevel;->findByLocalizedLevelName(Ljava/lang/String;)Ljava/util/logging/Level$KnownLevel;
-Ljava/util/logging/Level$KnownLevel;->findByName(Ljava/lang/String;)Ljava/util/logging/Level$KnownLevel;
-Ljava/util/logging/Level$KnownLevel;->findByValue(I)Ljava/util/logging/Level$KnownLevel;
-Ljava/util/logging/Level$KnownLevel;->intToLevels:Ljava/util/Map;
-Ljava/util/logging/Level$KnownLevel;->levelObject:Ljava/util/logging/Level;
-Ljava/util/logging/Level$KnownLevel;->matches(Ljava/util/logging/Level;)Ljava/util/logging/Level$KnownLevel;
-Ljava/util/logging/Level$KnownLevel;->mirroredLevel:Ljava/util/logging/Level;
-Ljava/util/logging/Level$KnownLevel;->nameToLevels:Ljava/util/Map;
-Ljava/util/logging/Level;-><init>(Ljava/lang/String;ILjava/lang/String;Z)V
-Ljava/util/logging/Level;->cachedLocale:Ljava/util/Locale;
-Ljava/util/logging/Level;->computeLocalizedLevelName(Ljava/util/Locale;)Ljava/lang/String;
-Ljava/util/logging/Level;->defaultBundle:Ljava/lang/String;
-Ljava/util/logging/Level;->findLevel(Ljava/lang/String;)Ljava/util/logging/Level;
-Ljava/util/logging/Level;->getCachedLocalizedLevelName()Ljava/lang/String;
-Ljava/util/logging/Level;->getLevelName()Ljava/lang/String;
-Ljava/util/logging/Level;->getLocalizedLevelName()Ljava/lang/String;
-Ljava/util/logging/Level;->localizedLevelName:Ljava/lang/String;
-Ljava/util/logging/Level;->name:Ljava/lang/String;
-Ljava/util/logging/Level;->resourceBundleName:Ljava/lang/String;
-Ljava/util/logging/Level;->value:I
-Ljava/util/logging/Logger$LoggerBundle;-><init>(Ljava/lang/String;Ljava/util/ResourceBundle;)V
-Ljava/util/logging/Logger$LoggerBundle;->get(Ljava/lang/String;Ljava/util/ResourceBundle;)Ljava/util/logging/Logger$LoggerBundle;
-Ljava/util/logging/Logger$LoggerBundle;->isSystemBundle()Z
-Ljava/util/logging/Logger$LoggerBundle;->resourceBundleName:Ljava/lang/String;
-Ljava/util/logging/Logger$LoggerBundle;->userBundle:Ljava/util/ResourceBundle;
-Ljava/util/logging/Logger$SystemLoggerHelper;-><init>()V
-Ljava/util/logging/Logger$SystemLoggerHelper;->disableCallerCheck:Z
-Ljava/util/logging/Logger$SystemLoggerHelper;->getBooleanProperty(Ljava/lang/String;)Z
-Ljava/util/logging/Logger;-><init>(Ljava/lang/String;)V
-Ljava/util/logging/Logger;-><init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Class;Ljava/util/logging/LogManager;Z)V
-Ljava/util/logging/Logger;->accessCheckedHandlers()[Ljava/util/logging/Handler;
-Ljava/util/logging/Logger;->anonymous:Z
-Ljava/util/logging/Logger;->callersClassLoaderRef:Ljava/lang/ref/WeakReference;
-Ljava/util/logging/Logger;->catalog:Ljava/util/ResourceBundle;
-Ljava/util/logging/Logger;->catalogLocale:Ljava/util/Locale;
-Ljava/util/logging/Logger;->catalogName:Ljava/lang/String;
-Ljava/util/logging/Logger;->checkPermission()V
-Ljava/util/logging/Logger;->demandLogger(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Class;)Ljava/util/logging/Logger;
-Ljava/util/logging/Logger;->doLog(Ljava/util/logging/LogRecord;)V
-Ljava/util/logging/Logger;->doLog(Ljava/util/logging/LogRecord;Ljava/lang/String;)V
-Ljava/util/logging/Logger;->doLog(Ljava/util/logging/LogRecord;Ljava/util/ResourceBundle;)V
-Ljava/util/logging/Logger;->doSetParent(Ljava/util/logging/Logger;)V
-Ljava/util/logging/Logger;->emptyHandlers:[Ljava/util/logging/Handler;
-Ljava/util/logging/Logger;->filter:Ljava/util/logging/Filter;
-Ljava/util/logging/Logger;->findResourceBundle(Ljava/lang/String;Z)Ljava/util/ResourceBundle;
-Ljava/util/logging/Logger;->findSystemResourceBundle(Ljava/util/Locale;)Ljava/util/ResourceBundle;
-Ljava/util/logging/Logger;->getCallersClassLoader()Ljava/lang/ClassLoader;
-Ljava/util/logging/Logger;->getEffectiveLoggerBundle()Ljava/util/logging/Logger$LoggerBundle;
-Ljava/util/logging/Logger;->getPlatformLogger(Ljava/lang/String;)Ljava/util/logging/Logger;
-Ljava/util/logging/Logger;->handlers:Ljava/util/concurrent/CopyOnWriteArrayList;
-Ljava/util/logging/Logger;->isLevelInitialized()Z
-Ljava/util/logging/Logger;->isSystemLogger:Z
-Ljava/util/logging/Logger;->kids:Ljava/util/ArrayList;
-Ljava/util/logging/Logger;->levelObject:Ljava/util/logging/Level;
-Ljava/util/logging/Logger;->levelValue:I
-Ljava/util/logging/Logger;->loggerBundle:Ljava/util/logging/Logger$LoggerBundle;
-Ljava/util/logging/Logger;->manager:Ljava/util/logging/LogManager;
-Ljava/util/logging/Logger;->name:Ljava/lang/String;
-Ljava/util/logging/Logger;->NO_RESOURCE_BUNDLE:Ljava/util/logging/Logger$LoggerBundle;
-Ljava/util/logging/Logger;->offValue:I
-Ljava/util/logging/Logger;->parent:Ljava/util/logging/Logger;
-Ljava/util/logging/Logger;->removeChildLogger(Ljava/util/logging/LogManager$LoggerWeakRef;)V
-Ljava/util/logging/Logger;->setCallersClassLoaderRef(Ljava/lang/Class;)V
-Ljava/util/logging/Logger;->setLogManager(Ljava/util/logging/LogManager;)V
-Ljava/util/logging/Logger;->setupResourceInfo(Ljava/lang/String;Ljava/lang/Class;)V
-Ljava/util/logging/Logger;->SYSTEM_BUNDLE:Ljava/util/logging/Logger$LoggerBundle;
-Ljava/util/logging/Logger;->SYSTEM_LOGGER_RB_NAME:Ljava/lang/String;
-Ljava/util/logging/Logger;->updateEffectiveLevel()V
-Ljava/util/logging/Logger;->useParentHandlers:Z
-Ljava/util/logging/LogManager$Beans;-><init>()V
-Ljava/util/logging/LogManager$Beans;->getClass(Ljava/lang/String;)Ljava/lang/Class;
-Ljava/util/logging/LogManager$Beans;->invokePropertyChange(Ljava/lang/Object;Ljava/lang/Object;)V
-Ljava/util/logging/LogManager$Beans;->isBeansPresent()Z
-Ljava/util/logging/LogManager$Beans;->newPropertyChangeEvent(Ljava/lang/Object;Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
-Ljava/util/logging/LogManager$Beans;->propertyChangeEventClass:Ljava/lang/Class;
-Ljava/util/logging/LogManager$Beans;->propertyChangeListenerClass:Ljava/lang/Class;
-Ljava/util/logging/LogManager$Beans;->propertyChangeMethod:Ljava/lang/reflect/Method;
-Ljava/util/logging/LogManager$Beans;->propertyEventCtor:Ljava/lang/reflect/Constructor;
-Ljava/util/logging/LogManager$LoggerContext;->addLocalLogger(Ljava/util/logging/Logger;)Z
-Ljava/util/logging/LogManager$LoggerContext;->addLocalLogger(Ljava/util/logging/Logger;Ljava/util/logging/LogManager;)Z
-Ljava/util/logging/LogManager$LoggerContext;->addLocalLogger(Ljava/util/logging/Logger;Z)Z
-Ljava/util/logging/LogManager$LoggerContext;->addLocalLogger(Ljava/util/logging/Logger;ZLjava/util/logging/LogManager;)Z
-Ljava/util/logging/LogManager$LoggerContext;->demandLogger(Ljava/lang/String;Ljava/lang/String;)Ljava/util/logging/Logger;
-Ljava/util/logging/LogManager$LoggerContext;->ensureAllDefaultLoggers(Ljava/util/logging/Logger;)V
-Ljava/util/logging/LogManager$LoggerContext;->ensureDefaultLogger(Ljava/util/logging/Logger;)V
-Ljava/util/logging/LogManager$LoggerContext;->ensureInitialized()V
-Ljava/util/logging/LogManager$LoggerContext;->findLogger(Ljava/lang/String;)Ljava/util/logging/Logger;
-Ljava/util/logging/LogManager$LoggerContext;->getGlobalLogger()Ljava/util/logging/Logger;
-Ljava/util/logging/LogManager$LoggerContext;->getLoggerNames()Ljava/util/Enumeration;
-Ljava/util/logging/LogManager$LoggerContext;->getNode(Ljava/lang/String;)Ljava/util/logging/LogManager$LogNode;
-Ljava/util/logging/LogManager$LoggerContext;->getOwner()Ljava/util/logging/LogManager;
-Ljava/util/logging/LogManager$LoggerContext;->getRootLogger()Ljava/util/logging/Logger;
-Ljava/util/logging/LogManager$LoggerContext;->namedLoggers:Ljava/util/Hashtable;
-Ljava/util/logging/LogManager$LoggerContext;->processParentHandlers(Ljava/util/logging/Logger;Ljava/lang/String;)V
-Ljava/util/logging/LogManager$LoggerContext;->removeLoggerRef(Ljava/lang/String;Ljava/util/logging/LogManager$LoggerWeakRef;)V
-Ljava/util/logging/LogManager$LoggerContext;->requiresDefaultLoggers()Z
-Ljava/util/logging/LogManager$LoggerContext;->root:Ljava/util/logging/LogManager$LogNode;
-Ljava/util/logging/LogManager$LoggerWeakRef;->dispose()V
-Ljava/util/logging/LogManager$LoggerWeakRef;->disposed:Z
-Ljava/util/logging/LogManager$LoggerWeakRef;->name:Ljava/lang/String;
-Ljava/util/logging/LogManager$LoggerWeakRef;->node:Ljava/util/logging/LogManager$LogNode;
-Ljava/util/logging/LogManager$LoggerWeakRef;->parentRef:Ljava/lang/ref/WeakReference;
-Ljava/util/logging/LogManager$LoggerWeakRef;->setNode(Ljava/util/logging/LogManager$LogNode;)V
-Ljava/util/logging/LogManager$LoggerWeakRef;->setParentRef(Ljava/lang/ref/WeakReference;)V
-Ljava/util/logging/LogManager$LogNode;-><init>(Ljava/util/logging/LogManager$LogNode;Ljava/util/logging/LogManager$LoggerContext;)V
-Ljava/util/logging/LogManager$LogNode;->children:Ljava/util/HashMap;
-Ljava/util/logging/LogManager$LogNode;->context:Ljava/util/logging/LogManager$LoggerContext;
-Ljava/util/logging/LogManager$LogNode;->loggerRef:Ljava/util/logging/LogManager$LoggerWeakRef;
-Ljava/util/logging/LogManager$LogNode;->parent:Ljava/util/logging/LogManager$LogNode;
-Ljava/util/logging/LogManager$LogNode;->walkAndSetParent(Ljava/util/logging/Logger;)V
-Ljava/util/logging/LogManager$RootLogger;->accessCheckedHandlers()[Ljava/util/logging/Handler;
-Ljava/util/logging/LogManager$SystemLoggerContext;->demandLogger(Ljava/lang/String;Ljava/lang/String;)Ljava/util/logging/Logger;
-Ljava/util/logging/LogManager;-><init>(Ljava/lang/Void;)V
-Ljava/util/logging/LogManager;->checkPermission()V
-Ljava/util/logging/LogManager;->checkSubclassPermissions()Ljava/lang/Void;
-Ljava/util/logging/LogManager;->contexts()Ljava/util/List;
-Ljava/util/logging/LogManager;->contextsMap:Ljava/util/WeakHashMap;
-Ljava/util/logging/LogManager;->controlPermission:Ljava/security/Permission;
-Ljava/util/logging/LogManager;->deathImminent:Z
-Ljava/util/logging/LogManager;->defaultLevel:Ljava/util/logging/Level;
-Ljava/util/logging/LogManager;->demandLogger(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Class;)Ljava/util/logging/Logger;
-Ljava/util/logging/LogManager;->demandSystemLogger(Ljava/lang/String;Ljava/lang/String;)Ljava/util/logging/Logger;
-Ljava/util/logging/LogManager;->doSetLevel(Ljava/util/logging/Logger;Ljava/util/logging/Level;)V
-Ljava/util/logging/LogManager;->doSetParent(Ljava/util/logging/Logger;Ljava/util/logging/Logger;)V
-Ljava/util/logging/LogManager;->drainLoggerRefQueueBounded()V
-Ljava/util/logging/LogManager;->ensureLogManagerInitialized()V
-Ljava/util/logging/LogManager;->getBooleanProperty(Ljava/lang/String;Z)Z
-Ljava/util/logging/LogManager;->getClassInstance(Ljava/lang/String;)Ljava/lang/Class;
-Ljava/util/logging/LogManager;->getFilterProperty(Ljava/lang/String;Ljava/util/logging/Filter;)Ljava/util/logging/Filter;
-Ljava/util/logging/LogManager;->getIntProperty(Ljava/lang/String;I)I
-Ljava/util/logging/LogManager;->getLevelProperty(Ljava/lang/String;Ljava/util/logging/Level;)Ljava/util/logging/Level;
-Ljava/util/logging/LogManager;->getStringProperty(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
-Ljava/util/logging/LogManager;->getSystemContext()Ljava/util/logging/LogManager$LoggerContext;
-Ljava/util/logging/LogManager;->getUserContext()Ljava/util/logging/LogManager$LoggerContext;
-Ljava/util/logging/LogManager;->initializationDone:Z
-Ljava/util/logging/LogManager;->initializedCalled:Z
-Ljava/util/logging/LogManager;->initializedGlobalHandlers:Z
-Ljava/util/logging/LogManager;->initializeGlobalHandlers()V
-Ljava/util/logging/LogManager;->listenerMap:Ljava/util/Map;
-Ljava/util/logging/LogManager;->loadLoggerHandlers(Ljava/util/logging/Logger;Ljava/lang/String;Ljava/lang/String;)V
-Ljava/util/logging/LogManager;->loggerRefQueue:Ljava/lang/ref/ReferenceQueue;
-Ljava/util/logging/LogManager;->loggingMXBean:Ljava/util/logging/LoggingMXBean;
-Ljava/util/logging/LogManager;->manager:Ljava/util/logging/LogManager;
-Ljava/util/logging/LogManager;->MAX_ITERATIONS:I
-Ljava/util/logging/LogManager;->parseClassNames(Ljava/lang/String;)[Ljava/lang/String;
-Ljava/util/logging/LogManager;->props:Ljava/util/Properties;
-Ljava/util/logging/LogManager;->readPrimordialConfiguration()V
-Ljava/util/logging/LogManager;->readPrimordialConfiguration:Z
-Ljava/util/logging/LogManager;->resetLogger(Ljava/util/logging/Logger;)V
-Ljava/util/logging/LogManager;->rootLogger:Ljava/util/logging/Logger;
-Ljava/util/logging/LogManager;->setLevelsOnExistingLoggers()V
-Ljava/util/logging/LogManager;->systemContext:Ljava/util/logging/LogManager$LoggerContext;
-Ljava/util/logging/LogManager;->userContext:Ljava/util/logging/LogManager$LoggerContext;
-Ljava/util/logging/LogRecord;->defaultThreadID()I
-Ljava/util/logging/LogRecord;->globalSequenceNumber:Ljava/util/concurrent/atomic/AtomicLong;
-Ljava/util/logging/LogRecord;->inferCaller()V
-Ljava/util/logging/LogRecord;->isLoggerImplFrame(Ljava/lang/String;)Z
-Ljava/util/logging/LogRecord;->level:Ljava/util/logging/Level;
-Ljava/util/logging/LogRecord;->loggerName:Ljava/lang/String;
-Ljava/util/logging/LogRecord;->message:Ljava/lang/String;
-Ljava/util/logging/LogRecord;->millis:J
-Ljava/util/logging/LogRecord;->MIN_SEQUENTIAL_THREAD_ID:I
-Ljava/util/logging/LogRecord;->needToInferCaller:Z
-Ljava/util/logging/LogRecord;->nextThreadId:Ljava/util/concurrent/atomic/AtomicInteger;
-Ljava/util/logging/LogRecord;->parameters:[Ljava/lang/Object;
-Ljava/util/logging/LogRecord;->resourceBundle:Ljava/util/ResourceBundle;
-Ljava/util/logging/LogRecord;->resourceBundleName:Ljava/lang/String;
-Ljava/util/logging/LogRecord;->sequenceNumber:J
-Ljava/util/logging/LogRecord;->sourceClassName:Ljava/lang/String;
-Ljava/util/logging/LogRecord;->sourceMethodName:Ljava/lang/String;
-Ljava/util/logging/LogRecord;->threadID:I
-Ljava/util/logging/LogRecord;->threadIds:Ljava/lang/ThreadLocal;
-Ljava/util/logging/LogRecord;->thrown:Ljava/lang/Throwable;
-Ljava/util/logging/MemoryHandler;->buffer:[Ljava/util/logging/LogRecord;
-Ljava/util/logging/MemoryHandler;->configure()V
-Ljava/util/logging/MemoryHandler;->count:I
-Ljava/util/logging/MemoryHandler;->DEFAULT_SIZE:I
-Ljava/util/logging/MemoryHandler;->init()V
-Ljava/util/logging/MemoryHandler;->pushLevel:Ljava/util/logging/Level;
-Ljava/util/logging/MemoryHandler;->size:I
-Ljava/util/logging/MemoryHandler;->start:I
-Ljava/util/logging/MemoryHandler;->target:Ljava/util/logging/Handler;
-Ljava/util/logging/SimpleFormatter;->dat:Ljava/util/Date;
-Ljava/util/logging/SimpleFormatter;->format:Ljava/lang/String;
-Ljava/util/logging/SocketHandler;->configure()V
-Ljava/util/logging/SocketHandler;->connect()V
-Ljava/util/logging/SocketHandler;->host:Ljava/lang/String;
-Ljava/util/logging/SocketHandler;->port:I
-Ljava/util/logging/SocketHandler;->sock:Ljava/net/Socket;
-Ljava/util/logging/StreamHandler;->configure()V
-Ljava/util/logging/StreamHandler;->doneHeader:Z
-Ljava/util/logging/StreamHandler;->flushAndClose()V
-Ljava/util/logging/StreamHandler;->output:Ljava/io/OutputStream;
-Ljava/util/logging/StreamHandler;->writer:Ljava/io/Writer;
-Ljava/util/logging/XMLFormatter;->a2(Ljava/lang/StringBuilder;I)V
-Ljava/util/logging/XMLFormatter;->appendISO8601(Ljava/lang/StringBuilder;J)V
-Ljava/util/logging/XMLFormatter;->escape(Ljava/lang/StringBuilder;Ljava/lang/String;)V
-Ljava/util/logging/XMLFormatter;->manager:Ljava/util/logging/LogManager;
-Ljava/util/LongSummaryStatistics;->count:J
-Ljava/util/LongSummaryStatistics;->max:J
-Ljava/util/LongSummaryStatistics;->min:J
-Ljava/util/LongSummaryStatistics;->sum:J
-Ljava/util/MissingFormatArgumentException;->s:Ljava/lang/String;
-Ljava/util/MissingFormatWidthException;->s:Ljava/lang/String;
-Ljava/util/MissingResourceException;-><init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)V
-Ljava/util/MissingResourceException;->className:Ljava/lang/String;
-Ljava/util/MissingResourceException;->key:Ljava/lang/String;
-Ljava/util/Objects;-><init>()V
-Ljava/util/Observable;->changed:Z
-Ljava/util/Observable;->obs:Ljava/util/Vector;
-Ljava/util/Optional;-><init>()V
-Ljava/util/Optional;-><init>(Ljava/lang/Object;)V
-Ljava/util/Optional;->EMPTY:Ljava/util/Optional;
-Ljava/util/Optional;->value:Ljava/lang/Object;
-Ljava/util/OptionalDouble;-><init>()V
-Ljava/util/OptionalDouble;-><init>(D)V
-Ljava/util/OptionalDouble;->EMPTY:Ljava/util/OptionalDouble;
-Ljava/util/OptionalDouble;->isPresent:Z
-Ljava/util/OptionalDouble;->value:D
-Ljava/util/OptionalInt;-><init>()V
-Ljava/util/OptionalInt;-><init>(I)V
-Ljava/util/OptionalInt;->EMPTY:Ljava/util/OptionalInt;
-Ljava/util/OptionalInt;->isPresent:Z
-Ljava/util/OptionalInt;->value:I
-Ljava/util/OptionalLong;-><init>()V
-Ljava/util/OptionalLong;-><init>(J)V
-Ljava/util/OptionalLong;->EMPTY:Ljava/util/OptionalLong;
-Ljava/util/OptionalLong;->isPresent:Z
-Ljava/util/OptionalLong;->value:J
-Ljava/util/prefs/AbstractPreferences$EventDispatchThread;-><init>()V
-Ljava/util/prefs/AbstractPreferences;->absolutePath:Ljava/lang/String;
-Ljava/util/prefs/AbstractPreferences;->EMPTY_ABSTRACT_PREFS_ARRAY:[Ljava/util/prefs/AbstractPreferences;
-Ljava/util/prefs/AbstractPreferences;->EMPTY_STRING_ARRAY:[Ljava/lang/String;
-Ljava/util/prefs/AbstractPreferences;->enqueueNodeAddedEvent(Ljava/util/prefs/Preferences;)V
-Ljava/util/prefs/AbstractPreferences;->enqueueNodeRemovedEvent(Ljava/util/prefs/Preferences;)V
-Ljava/util/prefs/AbstractPreferences;->enqueuePreferenceChangeEvent(Ljava/lang/String;Ljava/lang/String;)V
-Ljava/util/prefs/AbstractPreferences;->eventDispatchThread:Ljava/lang/Thread;
-Ljava/util/prefs/AbstractPreferences;->eventQueue:Ljava/util/List;
-Ljava/util/prefs/AbstractPreferences;->flush2()V
-Ljava/util/prefs/AbstractPreferences;->kidCache:Ljava/util/Map;
-Ljava/util/prefs/AbstractPreferences;->name:Ljava/lang/String;
-Ljava/util/prefs/AbstractPreferences;->node(Ljava/util/StringTokenizer;)Ljava/util/prefs/Preferences;
-Ljava/util/prefs/AbstractPreferences;->nodeExists(Ljava/util/StringTokenizer;)Z
-Ljava/util/prefs/AbstractPreferences;->nodeListeners()[Ljava/util/prefs/NodeChangeListener;
-Ljava/util/prefs/AbstractPreferences;->nodeListeners:Ljava/util/ArrayList;
-Ljava/util/prefs/AbstractPreferences;->parent:Ljava/util/prefs/AbstractPreferences;
-Ljava/util/prefs/AbstractPreferences;->prefListeners()[Ljava/util/prefs/PreferenceChangeListener;
-Ljava/util/prefs/AbstractPreferences;->prefListeners:Ljava/util/ArrayList;
-Ljava/util/prefs/AbstractPreferences;->removed:Z
-Ljava/util/prefs/AbstractPreferences;->removeNode2()V
-Ljava/util/prefs/AbstractPreferences;->root:Ljava/util/prefs/AbstractPreferences;
-Ljava/util/prefs/AbstractPreferences;->startEventDispatchThreadIfNecessary()V
-Ljava/util/prefs/AbstractPreferences;->sync2()V
-Ljava/util/prefs/FileSystemPreferences$Change;->replay()V
-Ljava/util/prefs/FileSystemPreferences$NodeCreate;->replay()V
-Ljava/util/prefs/FileSystemPreferences$Put;->key:Ljava/lang/String;
-Ljava/util/prefs/FileSystemPreferences$Put;->replay()V
-Ljava/util/prefs/FileSystemPreferences$Put;->value:Ljava/lang/String;
-Ljava/util/prefs/FileSystemPreferences$Remove;->key:Ljava/lang/String;
-Ljava/util/prefs/FileSystemPreferences$Remove;->replay()V
-Ljava/util/prefs/FileSystemPreferences;-><init>(Ljava/lang/String;Ljava/io/File;Z)V
-Ljava/util/prefs/FileSystemPreferences;-><init>(Ljava/util/prefs/FileSystemPreferences;Ljava/lang/String;)V
-Ljava/util/prefs/FileSystemPreferences;-><init>(Z)V
-Ljava/util/prefs/FileSystemPreferences;->byteArray(Ljava/lang/String;)[B
-Ljava/util/prefs/FileSystemPreferences;->changeLog:Ljava/util/List;
-Ljava/util/prefs/FileSystemPreferences;->checkLockFile0ErrorCode(I)V
-Ljava/util/prefs/FileSystemPreferences;->chmod(Ljava/lang/String;I)I
-Ljava/util/prefs/FileSystemPreferences;->dir:Ljava/io/File;
-Ljava/util/prefs/FileSystemPreferences;->dirName(Ljava/lang/String;)Ljava/lang/String;
-Ljava/util/prefs/FileSystemPreferences;->EACCES:I
-Ljava/util/prefs/FileSystemPreferences;->EAGAIN:I
-Ljava/util/prefs/FileSystemPreferences;->EMPTY_STRING_ARRAY:[Ljava/lang/String;
-Ljava/util/prefs/FileSystemPreferences;->ERROR_CODE:I
-Ljava/util/prefs/FileSystemPreferences;->getLogger()Lsun/util/logging/PlatformLogger;
-Ljava/util/prefs/FileSystemPreferences;->getSystemRoot()Ljava/util/prefs/Preferences;
-Ljava/util/prefs/FileSystemPreferences;->getUserRoot()Ljava/util/prefs/Preferences;
-Ljava/util/prefs/FileSystemPreferences;->initCacheIfNecessary()V
-Ljava/util/prefs/FileSystemPreferences;->INIT_SLEEP_TIME:I
-Ljava/util/prefs/FileSystemPreferences;->isDirChar(C)Z
-Ljava/util/prefs/FileSystemPreferences;->isSystemRootModified:Z
-Ljava/util/prefs/FileSystemPreferences;->isSystemRootWritable:Z
-Ljava/util/prefs/FileSystemPreferences;->isUserNode:Z
-Ljava/util/prefs/FileSystemPreferences;->isUserRootModified:Z
-Ljava/util/prefs/FileSystemPreferences;->isUserRootWritable:Z
-Ljava/util/prefs/FileSystemPreferences;->lastSyncTime:J
-Ljava/util/prefs/FileSystemPreferences;->loadCache()V
-Ljava/util/prefs/FileSystemPreferences;->lockFile(Z)Z
-Ljava/util/prefs/FileSystemPreferences;->lockFile0(Ljava/lang/String;IZ)[I
-Ljava/util/prefs/FileSystemPreferences;->LOCK_HANDLE:I
-Ljava/util/prefs/FileSystemPreferences;->MAX_ATTEMPTS:I
-Ljava/util/prefs/FileSystemPreferences;->nodeCreate:Ljava/util/prefs/FileSystemPreferences$NodeCreate;
-Ljava/util/prefs/FileSystemPreferences;->nodeName(Ljava/lang/String;)Ljava/lang/String;
-Ljava/util/prefs/FileSystemPreferences;->prefsCache:Ljava/util/Map;
-Ljava/util/prefs/FileSystemPreferences;->prefsFile:Ljava/io/File;
-Ljava/util/prefs/FileSystemPreferences;->replayChanges()V
-Ljava/util/prefs/FileSystemPreferences;->setupSystemRoot()V
-Ljava/util/prefs/FileSystemPreferences;->setupUserRoot()V
-Ljava/util/prefs/FileSystemPreferences;->syncSpiPrivileged()V
-Ljava/util/prefs/FileSystemPreferences;->syncWorld()V
-Ljava/util/prefs/FileSystemPreferences;->systemLockFile:Ljava/io/File;
-Ljava/util/prefs/FileSystemPreferences;->systemRoot:Ljava/util/prefs/Preferences;
-Ljava/util/prefs/FileSystemPreferences;->systemRootDir:Ljava/io/File;
-Ljava/util/prefs/FileSystemPreferences;->systemRootLockHandle:I
-Ljava/util/prefs/FileSystemPreferences;->systemRootModFile:Ljava/io/File;
-Ljava/util/prefs/FileSystemPreferences;->systemRootModTime:J
-Ljava/util/prefs/FileSystemPreferences;->tmpFile:Ljava/io/File;
-Ljava/util/prefs/FileSystemPreferences;->unlockFile()V
-Ljava/util/prefs/FileSystemPreferences;->unlockFile0(I)I
-Ljava/util/prefs/FileSystemPreferences;->userLockFile:Ljava/io/File;
-Ljava/util/prefs/FileSystemPreferences;->userRoot:Ljava/util/prefs/Preferences;
-Ljava/util/prefs/FileSystemPreferences;->userRootDir:Ljava/io/File;
-Ljava/util/prefs/FileSystemPreferences;->userRootLockHandle:I
-Ljava/util/prefs/FileSystemPreferences;->userRootModFile:Ljava/io/File;
-Ljava/util/prefs/FileSystemPreferences;->userRootModTime:J
-Ljava/util/prefs/FileSystemPreferences;->USER_READ_WRITE:I
-Ljava/util/prefs/FileSystemPreferences;->USER_RWX:I
-Ljava/util/prefs/FileSystemPreferences;->USER_RWX_ALL_RX:I
-Ljava/util/prefs/FileSystemPreferences;->USER_RW_ALL_READ:I
-Ljava/util/prefs/FileSystemPreferences;->writeBackCache()V
-Ljava/util/prefs/NodeChangeEvent;->child:Ljava/util/prefs/Preferences;
-Ljava/util/prefs/PreferenceChangeEvent;->key:Ljava/lang/String;
-Ljava/util/prefs/PreferenceChangeEvent;->newValue:Ljava/lang/String;
-Ljava/util/prefs/Preferences;->factory:Ljava/util/prefs/PreferencesFactory;
-Ljava/util/prefs/Preferences;->findPreferencesFactory()Ljava/util/prefs/PreferencesFactory;
-Ljava/util/prefs/Preferences;->nodeName(Ljava/lang/Class;)Ljava/lang/String;
-Ljava/util/prefs/Preferences;->prefsPerm:Ljava/security/Permission;
-Ljava/util/prefs/Preferences;->setPreferencesFactory(Ljava/util/prefs/PreferencesFactory;)Ljava/util/prefs/PreferencesFactory;
-Ljava/util/PriorityQueue$Itr;->cursor:I
-Ljava/util/PriorityQueue$Itr;->expectedModCount:I
-Ljava/util/PriorityQueue$Itr;->forgetMeNot:Ljava/util/ArrayDeque;
-Ljava/util/PriorityQueue$Itr;->lastRet:I
-Ljava/util/PriorityQueue$Itr;->lastRetElt:Ljava/lang/Object;
-Ljava/util/PriorityQueue$PriorityQueueSpliterator;-><init>(Ljava/util/PriorityQueue;III)V
-Ljava/util/PriorityQueue$PriorityQueueSpliterator;->expectedModCount:I
-Ljava/util/PriorityQueue$PriorityQueueSpliterator;->fence:I
-Ljava/util/PriorityQueue$PriorityQueueSpliterator;->forEachRemaining(Ljava/util/function/Consumer;)V
-Ljava/util/PriorityQueue$PriorityQueueSpliterator;->getFence()I
-Ljava/util/PriorityQueue$PriorityQueueSpliterator;->index:I
-Ljava/util/PriorityQueue$PriorityQueueSpliterator;->pq:Ljava/util/PriorityQueue;
-Ljava/util/PriorityQueue$PriorityQueueSpliterator;->tryAdvance(Ljava/util/function/Consumer;)Z
-Ljava/util/PriorityQueue;->comparator:Ljava/util/Comparator;
-Ljava/util/PriorityQueue;->DEFAULT_INITIAL_CAPACITY:I
-Ljava/util/PriorityQueue;->grow(I)V
-Ljava/util/PriorityQueue;->heapify()V
-Ljava/util/PriorityQueue;->hugeCapacity(I)I
-Ljava/util/PriorityQueue;->indexOf(Ljava/lang/Object;)I
-Ljava/util/PriorityQueue;->initElementsFromCollection(Ljava/util/Collection;)V
-Ljava/util/PriorityQueue;->initFromCollection(Ljava/util/Collection;)V
-Ljava/util/PriorityQueue;->initFromPriorityQueue(Ljava/util/PriorityQueue;)V
-Ljava/util/PriorityQueue;->MAX_ARRAY_SIZE:I
-Ljava/util/PriorityQueue;->removeAt(I)Ljava/lang/Object;
-Ljava/util/PriorityQueue;->removeEq(Ljava/lang/Object;)Z
-Ljava/util/PriorityQueue;->siftDown(ILjava/lang/Object;)V
-Ljava/util/PriorityQueue;->siftDownComparable(ILjava/lang/Object;)V
-Ljava/util/PriorityQueue;->siftDownUsingComparator(ILjava/lang/Object;)V
-Ljava/util/PriorityQueue;->siftUp(ILjava/lang/Object;)V
-Ljava/util/PriorityQueue;->siftUpComparable(ILjava/lang/Object;)V
-Ljava/util/PriorityQueue;->siftUpUsingComparator(ILjava/lang/Object;)V
-Ljava/util/Properties$LineReader;->inByteBuf:[B
-Ljava/util/Properties$LineReader;->inCharBuf:[C
-Ljava/util/Properties$LineReader;->inLimit:I
-Ljava/util/Properties$LineReader;->inOff:I
-Ljava/util/Properties$LineReader;->inStream:Ljava/io/InputStream;
-Ljava/util/Properties$LineReader;->lineBuf:[C
-Ljava/util/Properties$LineReader;->reader:Ljava/io/Reader;
-Ljava/util/Properties$LineReader;->readLine()I
-Ljava/util/Properties;->enumerate(Ljava/util/Hashtable;)V
-Ljava/util/Properties;->enumerateStringProperties(Ljava/util/Hashtable;)V
-Ljava/util/Properties;->hexDigit:[C
-Ljava/util/Properties;->load0(Ljava/util/Properties$LineReader;)V
-Ljava/util/Properties;->loadConvert([CII[C)Ljava/lang/String;
-Ljava/util/Properties;->store0(Ljava/io/BufferedWriter;Ljava/lang/String;Z)V
-Ljava/util/Properties;->toHex(I)C
-Ljava/util/Properties;->writeComments(Ljava/io/BufferedWriter;Ljava/lang/String;)V
-Ljava/util/PropertyResourceBundle;->lookup:Ljava/util/Map;
-Ljava/util/Random$RandomDoublesSpliterator;-><init>(Ljava/util/Random;JJDD)V
-Ljava/util/Random$RandomDoublesSpliterator;->bound:D
-Ljava/util/Random$RandomDoublesSpliterator;->fence:J
-Ljava/util/Random$RandomDoublesSpliterator;->index:J
-Ljava/util/Random$RandomDoublesSpliterator;->origin:D
-Ljava/util/Random$RandomDoublesSpliterator;->rng:Ljava/util/Random;
-Ljava/util/Random$RandomIntsSpliterator;-><init>(Ljava/util/Random;JJII)V
-Ljava/util/Random$RandomIntsSpliterator;->bound:I
-Ljava/util/Random$RandomIntsSpliterator;->fence:J
-Ljava/util/Random$RandomIntsSpliterator;->index:J
-Ljava/util/Random$RandomIntsSpliterator;->origin:I
-Ljava/util/Random$RandomIntsSpliterator;->rng:Ljava/util/Random;
-Ljava/util/Random$RandomLongsSpliterator;-><init>(Ljava/util/Random;JJJJ)V
-Ljava/util/Random$RandomLongsSpliterator;->bound:J
-Ljava/util/Random$RandomLongsSpliterator;->fence:J
-Ljava/util/Random$RandomLongsSpliterator;->index:J
-Ljava/util/Random$RandomLongsSpliterator;->origin:J
-Ljava/util/Random$RandomLongsSpliterator;->rng:Ljava/util/Random;
-Ljava/util/Random;->addend:J
-Ljava/util/Random;->BadBound:Ljava/lang/String;
-Ljava/util/Random;->BadRange:Ljava/lang/String;
-Ljava/util/Random;->BadSize:Ljava/lang/String;
-Ljava/util/Random;->DOUBLE_UNIT:D
-Ljava/util/Random;->haveNextNextGaussian:Z
-Ljava/util/Random;->initialScramble(J)J
-Ljava/util/Random;->internalNextDouble(DD)D
-Ljava/util/Random;->internalNextInt(II)I
-Ljava/util/Random;->internalNextLong(JJ)J
-Ljava/util/Random;->mask:J
-Ljava/util/Random;->multiplier:J
-Ljava/util/Random;->nextNextGaussian:D
-Ljava/util/Random;->resetSeed(J)V
-Ljava/util/Random;->seed:Ljava/util/concurrent/atomic/AtomicLong;
-Ljava/util/Random;->seedOffset:J
-Ljava/util/Random;->seedUniquifier:Ljava/util/concurrent/atomic/AtomicLong;
-Ljava/util/Random;->unsafe:Lsun/misc/Unsafe;
-Ljava/util/regex/Matcher$OffsetBasedMatchResult;-><init>(Ljava/lang/String;[I)V
-Ljava/util/regex/Matcher$OffsetBasedMatchResult;->input:Ljava/lang/String;
-Ljava/util/regex/Matcher$OffsetBasedMatchResult;->offsets:[I
-Ljava/util/regex/Matcher;-><init>(Ljava/util/regex/Pattern;Ljava/lang/CharSequence;)V
-Ljava/util/regex/Matcher;->address:J
-Ljava/util/regex/Matcher;->anchoringBounds:Z
-Ljava/util/regex/Matcher;->appendEvaluated(Ljava/lang/StringBuffer;Ljava/lang/String;)V
-Ljava/util/regex/Matcher;->ensureMatch()V
-Ljava/util/regex/Matcher;->findImpl(JI[I)Z
-Ljava/util/regex/Matcher;->findNextImpl(J[I)Z
-Ljava/util/regex/Matcher;->getMatchedGroupIndex(JLjava/lang/String;)I
-Ljava/util/regex/Matcher;->getMatchedGroupIndex0(JLjava/lang/String;)I
-Ljava/util/regex/Matcher;->getNativeFinalizer()J
-Ljava/util/regex/Matcher;->groupCountImpl(J)I
-Ljava/util/regex/Matcher;->hitEndImpl(J)Z
-Ljava/util/regex/Matcher;->input:Ljava/lang/String;
-Ljava/util/regex/Matcher;->lookingAtImpl(J[I)Z
-Ljava/util/regex/Matcher;->matchesImpl(J[I)Z
-Ljava/util/regex/Matcher;->matchFound:Z
-Ljava/util/regex/Matcher;->matchOffsets:[I
-Ljava/util/regex/Matcher;->nativeFinalizer:Ljava/lang/Runnable;
-Ljava/util/regex/Matcher;->nativeSize()I
-Ljava/util/regex/Matcher;->openImpl(J)J
-Ljava/util/regex/Matcher;->originalInput:Ljava/lang/CharSequence;
-Ljava/util/regex/Matcher;->pattern:Ljava/util/regex/Pattern;
-Ljava/util/regex/Matcher;->regionEnd:I
-Ljava/util/regex/Matcher;->regionStart:I
-Ljava/util/regex/Matcher;->registry:Llibcore/util/NativeAllocationRegistry;
-Ljava/util/regex/Matcher;->requireEndImpl(J)Z
-Ljava/util/regex/Matcher;->reset(Ljava/lang/CharSequence;II)Ljava/util/regex/Matcher;
-Ljava/util/regex/Matcher;->resetForInput()V
-Ljava/util/regex/Matcher;->setInputImpl(JLjava/lang/String;II)V
-Ljava/util/regex/Matcher;->transparentBounds:Z
-Ljava/util/regex/Matcher;->useAnchoringBoundsImpl(JZ)V
-Ljava/util/regex/Matcher;->useTransparentBoundsImpl(JZ)V
-Ljava/util/regex/Pattern;-><init>(Ljava/lang/String;I)V
-Ljava/util/regex/Pattern;->address:J
-Ljava/util/regex/Pattern;->compile()V
-Ljava/util/regex/Pattern;->compileImpl(Ljava/lang/String;I)J
-Ljava/util/regex/Pattern;->fastSplit(Ljava/lang/String;Ljava/lang/String;I)[Ljava/lang/String;
-Ljava/util/regex/Pattern;->FASTSPLIT_METACHARACTERS:Ljava/lang/String;
-Ljava/util/regex/Pattern;->flags:I
-Ljava/util/regex/Pattern;->getNativeFinalizer()J
-Ljava/util/regex/Pattern;->nativeSize()I
-Ljava/util/regex/Pattern;->pattern:Ljava/lang/String;
-Ljava/util/regex/Pattern;->registry:Llibcore/util/NativeAllocationRegistry;
-Ljava/util/regex/PatternSyntaxException;->desc:Ljava/lang/String;
-Ljava/util/regex/PatternSyntaxException;->index:I
-Ljava/util/regex/PatternSyntaxException;->nl:Ljava/lang/String;
-Ljava/util/regex/PatternSyntaxException;->pattern:Ljava/lang/String;
-Ljava/util/ResourceBundle$BundleReference;-><init>(Ljava/util/ResourceBundle;Ljava/lang/ref/ReferenceQueue;Ljava/util/ResourceBundle$CacheKey;)V
-Ljava/util/ResourceBundle$BundleReference;->cacheKey:Ljava/util/ResourceBundle$CacheKey;
-Ljava/util/ResourceBundle$BundleReference;->getCacheKey()Ljava/util/ResourceBundle$CacheKey;
-Ljava/util/ResourceBundle$CacheKey;-><init>(Ljava/lang/String;Ljava/util/Locale;Ljava/lang/ClassLoader;)V
-Ljava/util/ResourceBundle$CacheKey;->calculateHashCode()V
-Ljava/util/ResourceBundle$CacheKey;->cause:Ljava/lang/Throwable;
-Ljava/util/ResourceBundle$CacheKey;->expirationTime:J
-Ljava/util/ResourceBundle$CacheKey;->format:Ljava/lang/String;
-Ljava/util/ResourceBundle$CacheKey;->getCause()Ljava/lang/Throwable;
-Ljava/util/ResourceBundle$CacheKey;->getFormat()Ljava/lang/String;
-Ljava/util/ResourceBundle$CacheKey;->getLoader()Ljava/lang/ClassLoader;
-Ljava/util/ResourceBundle$CacheKey;->getLocale()Ljava/util/Locale;
-Ljava/util/ResourceBundle$CacheKey;->getName()Ljava/lang/String;
-Ljava/util/ResourceBundle$CacheKey;->hashCodeCache:I
-Ljava/util/ResourceBundle$CacheKey;->loaderRef:Ljava/util/ResourceBundle$LoaderReference;
-Ljava/util/ResourceBundle$CacheKey;->loadTime:J
-Ljava/util/ResourceBundle$CacheKey;->locale:Ljava/util/Locale;
-Ljava/util/ResourceBundle$CacheKey;->name:Ljava/lang/String;
-Ljava/util/ResourceBundle$CacheKey;->setCause(Ljava/lang/Throwable;)V
-Ljava/util/ResourceBundle$CacheKey;->setFormat(Ljava/lang/String;)V
-Ljava/util/ResourceBundle$CacheKey;->setLocale(Ljava/util/Locale;)Ljava/util/ResourceBundle$CacheKey;
-Ljava/util/ResourceBundle$CacheKey;->setName(Ljava/lang/String;)Ljava/util/ResourceBundle$CacheKey;
-Ljava/util/ResourceBundle$CacheKeyReference;->getCacheKey()Ljava/util/ResourceBundle$CacheKey;
-Ljava/util/ResourceBundle$Control$CandidateListCache;-><init>()V
-Ljava/util/ResourceBundle$Control$CandidateListCache;->createObject(Lsun/util/locale/BaseLocale;)Ljava/util/List;
-Ljava/util/ResourceBundle$Control$CandidateListCache;->getDefaultList(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/util/List;
-Ljava/util/ResourceBundle$Control;->CANDIDATES_CACHE:Ljava/util/ResourceBundle$Control$CandidateListCache;
-Ljava/util/ResourceBundle$Control;->INSTANCE:Ljava/util/ResourceBundle$Control;
-Ljava/util/ResourceBundle$Control;->toResourceName0(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
-Ljava/util/ResourceBundle$LoaderReference;-><init>(Ljava/lang/ClassLoader;Ljava/lang/ref/ReferenceQueue;Ljava/util/ResourceBundle$CacheKey;)V
-Ljava/util/ResourceBundle$LoaderReference;->cacheKey:Ljava/util/ResourceBundle$CacheKey;
-Ljava/util/ResourceBundle$LoaderReference;->getCacheKey()Ljava/util/ResourceBundle$CacheKey;
-Ljava/util/ResourceBundle$NoFallbackControl;-><init>(Ljava/util/List;)V
-Ljava/util/ResourceBundle$NoFallbackControl;->CLASS_ONLY_NO_FALLBACK:Ljava/util/ResourceBundle$Control;
-Ljava/util/ResourceBundle$NoFallbackControl;->NO_FALLBACK:Ljava/util/ResourceBundle$Control;
-Ljava/util/ResourceBundle$NoFallbackControl;->PROPERTIES_ONLY_NO_FALLBACK:Ljava/util/ResourceBundle$Control;
-Ljava/util/ResourceBundle$RBClassLoader;-><init>()V
-Ljava/util/ResourceBundle$RBClassLoader;->INSTANCE:Ljava/util/ResourceBundle$RBClassLoader;
-Ljava/util/ResourceBundle$RBClassLoader;->loader:Ljava/lang/ClassLoader;
-Ljava/util/ResourceBundle$SingleFormatControl;-><init>(Ljava/util/List;)V
-Ljava/util/ResourceBundle$SingleFormatControl;->CLASS_ONLY:Ljava/util/ResourceBundle$Control;
-Ljava/util/ResourceBundle$SingleFormatControl;->formats:Ljava/util/List;
-Ljava/util/ResourceBundle$SingleFormatControl;->PROPERTIES_ONLY:Ljava/util/ResourceBundle$Control;
-Ljava/util/ResourceBundle;->cacheKey:Ljava/util/ResourceBundle$CacheKey;
-Ljava/util/ResourceBundle;->cacheList:Ljava/util/concurrent/ConcurrentMap;
-Ljava/util/ResourceBundle;->checkList(Ljava/util/List;)Z
-Ljava/util/ResourceBundle;->expired:Z
-Ljava/util/ResourceBundle;->findBundle(Ljava/util/ResourceBundle$CacheKey;Ljava/util/List;Ljava/util/List;ILjava/util/ResourceBundle$Control;Ljava/util/ResourceBundle;)Ljava/util/ResourceBundle;
-Ljava/util/ResourceBundle;->findBundleInCache(Ljava/util/ResourceBundle$CacheKey;Ljava/util/ResourceBundle$Control;)Ljava/util/ResourceBundle;
-Ljava/util/ResourceBundle;->getBundleImpl(Ljava/lang/String;Ljava/util/Locale;Ljava/lang/ClassLoader;Ljava/util/ResourceBundle$Control;)Ljava/util/ResourceBundle;
-Ljava/util/ResourceBundle;->getDefaultControl(Ljava/lang/String;)Ljava/util/ResourceBundle$Control;
-Ljava/util/ResourceBundle;->getLoader(Ljava/lang/ClassLoader;)Ljava/lang/ClassLoader;
-Ljava/util/ResourceBundle;->hasValidParentChain(Ljava/util/ResourceBundle;)Z
-Ljava/util/ResourceBundle;->INITIAL_CACHE_SIZE:I
-Ljava/util/ResourceBundle;->isValidBundle(Ljava/util/ResourceBundle;)Z
-Ljava/util/ResourceBundle;->keySet:Ljava/util/Set;
-Ljava/util/ResourceBundle;->loadBundle(Ljava/util/ResourceBundle$CacheKey;Ljava/util/List;Ljava/util/ResourceBundle$Control;Z)Ljava/util/ResourceBundle;
-Ljava/util/ResourceBundle;->locale:Ljava/util/Locale;
-Ljava/util/ResourceBundle;->name:Ljava/lang/String;
-Ljava/util/ResourceBundle;->NONEXISTENT_BUNDLE:Ljava/util/ResourceBundle;
-Ljava/util/ResourceBundle;->putBundleInCache(Ljava/util/ResourceBundle$CacheKey;Ljava/util/ResourceBundle;Ljava/util/ResourceBundle$Control;)Ljava/util/ResourceBundle;
-Ljava/util/ResourceBundle;->referenceQueue:Ljava/lang/ref/ReferenceQueue;
-Ljava/util/ResourceBundle;->setExpirationTime(Ljava/util/ResourceBundle$CacheKey;Ljava/util/ResourceBundle$Control;)V
-Ljava/util/ResourceBundle;->throwMissingResourceException(Ljava/lang/String;Ljava/util/Locale;Ljava/lang/Throwable;)V
-Ljava/util/Scanner;-><init>(Ljava/io/File;Ljava/nio/charset/CharsetDecoder;)V
-Ljava/util/Scanner;-><init>(Ljava/lang/Readable;Ljava/util/regex/Pattern;)V
-Ljava/util/Scanner;-><init>(Ljava/nio/file/Path;Ljava/nio/charset/Charset;)V
-Ljava/util/Scanner;->BOOLEAN_PATTERN:Ljava/lang/String;
-Ljava/util/Scanner;->boolPattern()Ljava/util/regex/Pattern;
-Ljava/util/Scanner;->boolPattern:Ljava/util/regex/Pattern;
-Ljava/util/Scanner;->buf:Ljava/nio/CharBuffer;
-Ljava/util/Scanner;->BUFFER_SIZE:I
-Ljava/util/Scanner;->buildFloatAndDecimalPattern()V
-Ljava/util/Scanner;->buildIntegerPatternString()Ljava/lang/String;
-Ljava/util/Scanner;->cacheResult()V
-Ljava/util/Scanner;->cacheResult(Ljava/lang/String;)V
-Ljava/util/Scanner;->clearCaches()V
-Ljava/util/Scanner;->closed:Z
-Ljava/util/Scanner;->decimalPattern()Ljava/util/regex/Pattern;
-Ljava/util/Scanner;->decimalPattern:Ljava/util/regex/Pattern;
-Ljava/util/Scanner;->decimalSeparator:Ljava/lang/String;
-Ljava/util/Scanner;->defaultRadix:I
-Ljava/util/Scanner;->delimPattern:Ljava/util/regex/Pattern;
-Ljava/util/Scanner;->digits:Ljava/lang/String;
-Ljava/util/Scanner;->ensureOpen()V
-Ljava/util/Scanner;->findPatternInBuffer(Ljava/util/regex/Pattern;I)Ljava/lang/String;
-Ljava/util/Scanner;->FIND_ANY_PATTERN:Ljava/util/regex/Pattern;
-Ljava/util/Scanner;->floatPattern()Ljava/util/regex/Pattern;
-Ljava/util/Scanner;->floatPattern:Ljava/util/regex/Pattern;
-Ljava/util/Scanner;->getCachedResult()Ljava/lang/String;
-Ljava/util/Scanner;->getCompleteTokenInBuffer(Ljava/util/regex/Pattern;)Ljava/lang/String;
-Ljava/util/Scanner;->groupSeparator:Ljava/lang/String;
-Ljava/util/Scanner;->hasNextPattern:Ljava/util/regex/Pattern;
-Ljava/util/Scanner;->hasNextPosition:I
-Ljava/util/Scanner;->hasNextResult:Ljava/lang/String;
-Ljava/util/Scanner;->hasTokenInBuffer()Z
-Ljava/util/Scanner;->infinityString:Ljava/lang/String;
-Ljava/util/Scanner;->integerPattern()Ljava/util/regex/Pattern;
-Ljava/util/Scanner;->integerPattern:Ljava/util/regex/Pattern;
-Ljava/util/Scanner;->lastException:Ljava/io/IOException;
-Ljava/util/Scanner;->linePattern()Ljava/util/regex/Pattern;
-Ljava/util/Scanner;->linePattern:Ljava/util/regex/Pattern;
-Ljava/util/Scanner;->LINE_PATTERN:Ljava/lang/String;
-Ljava/util/Scanner;->LINE_SEPARATOR_PATTERN:Ljava/lang/String;
-Ljava/util/Scanner;->locale:Ljava/util/Locale;
-Ljava/util/Scanner;->makeReadable(Ljava/io/InputStream;Ljava/nio/charset/Charset;)Ljava/lang/Readable;
-Ljava/util/Scanner;->makeReadable(Ljava/nio/channels/ReadableByteChannel;)Ljava/lang/Readable;
-Ljava/util/Scanner;->makeReadable(Ljava/nio/channels/ReadableByteChannel;Ljava/nio/charset/CharsetDecoder;)Ljava/lang/Readable;
-Ljava/util/Scanner;->makeSpace()Z
-Ljava/util/Scanner;->matcher:Ljava/util/regex/Matcher;
-Ljava/util/Scanner;->matchPatternInBuffer(Ljava/util/regex/Pattern;)Ljava/lang/String;
-Ljava/util/Scanner;->matchValid:Z
-Ljava/util/Scanner;->nanString:Ljava/lang/String;
-Ljava/util/Scanner;->needInput:Z
-Ljava/util/Scanner;->negativePrefix:Ljava/lang/String;
-Ljava/util/Scanner;->negativeSuffix:Ljava/lang/String;
-Ljava/util/Scanner;->non0Digit:Ljava/lang/String;
-Ljava/util/Scanner;->NON_ASCII_DIGIT:Ljava/util/regex/Pattern;
-Ljava/util/Scanner;->patternCache:Lsun/misc/LRUCache;
-Ljava/util/Scanner;->position:I
-Ljava/util/Scanner;->positivePrefix:Ljava/lang/String;
-Ljava/util/Scanner;->positiveSuffix:Ljava/lang/String;
-Ljava/util/Scanner;->processFloatToken(Ljava/lang/String;)Ljava/lang/String;
-Ljava/util/Scanner;->processIntegerToken(Ljava/lang/String;)Ljava/lang/String;
-Ljava/util/Scanner;->radix:I
-Ljava/util/Scanner;->readInput()V
-Ljava/util/Scanner;->revertState()V
-Ljava/util/Scanner;->revertState(Z)Z
-Ljava/util/Scanner;->savedScannerPosition:I
-Ljava/util/Scanner;->saveState()V
-Ljava/util/Scanner;->separatorPattern()Ljava/util/regex/Pattern;
-Ljava/util/Scanner;->separatorPattern:Ljava/util/regex/Pattern;
-Ljava/util/Scanner;->setRadix(I)V
-Ljava/util/Scanner;->SIMPLE_GROUP_INDEX:I
-Ljava/util/Scanner;->skipped:Z
-Ljava/util/Scanner;->source:Ljava/lang/Readable;
-Ljava/util/Scanner;->sourceClosed:Z
-Ljava/util/Scanner;->throwFor()V
-Ljava/util/Scanner;->toCharset(Ljava/lang/String;)Ljava/nio/charset/Charset;
-Ljava/util/Scanner;->toDecoder(Ljava/lang/String;)Ljava/nio/charset/CharsetDecoder;
-Ljava/util/Scanner;->translateSavedIndexes(I)V
-Ljava/util/Scanner;->typeCache:Ljava/lang/Object;
-Ljava/util/Scanner;->useTypeCache()V
-Ljava/util/Scanner;->WHITESPACE_PATTERN:Ljava/util/regex/Pattern;
-Ljava/util/ServiceLoader$LazyIterator;->configs:Ljava/util/Enumeration;
-Ljava/util/ServiceLoader$LazyIterator;->hasNextService()Z
-Ljava/util/ServiceLoader$LazyIterator;->loader:Ljava/lang/ClassLoader;
-Ljava/util/ServiceLoader$LazyIterator;->nextName:Ljava/lang/String;
-Ljava/util/ServiceLoader$LazyIterator;->nextService()Ljava/lang/Object;
-Ljava/util/ServiceLoader$LazyIterator;->pending:Ljava/util/Iterator;
-Ljava/util/ServiceLoader$LazyIterator;->service:Ljava/lang/Class;
-Ljava/util/ServiceLoader;-><init>(Ljava/lang/Class;Ljava/lang/ClassLoader;)V
-Ljava/util/ServiceLoader;->fail(Ljava/lang/Class;Ljava/lang/String;)V
-Ljava/util/ServiceLoader;->fail(Ljava/lang/Class;Ljava/lang/String;Ljava/lang/Throwable;)V
-Ljava/util/ServiceLoader;->fail(Ljava/lang/Class;Ljava/net/URL;ILjava/lang/String;)V
-Ljava/util/ServiceLoader;->loader:Ljava/lang/ClassLoader;
-Ljava/util/ServiceLoader;->loadFromSystemProperty(Ljava/lang/Class;)Ljava/lang/Object;
-Ljava/util/ServiceLoader;->lookupIterator:Ljava/util/ServiceLoader$LazyIterator;
-Ljava/util/ServiceLoader;->parse(Ljava/lang/Class;Ljava/net/URL;)Ljava/util/Iterator;
-Ljava/util/ServiceLoader;->parseLine(Ljava/lang/Class;Ljava/net/URL;Ljava/io/BufferedReader;ILjava/util/List;)I
-Ljava/util/ServiceLoader;->PREFIX:Ljava/lang/String;
-Ljava/util/ServiceLoader;->providers:Ljava/util/LinkedHashMap;
-Ljava/util/ServiceLoader;->service:Ljava/lang/Class;
-Ljava/util/SimpleTimeZone;->cacheEnd:J
-Ljava/util/SimpleTimeZone;->cacheStart:J
-Ljava/util/SimpleTimeZone;->cacheYear:J
-Ljava/util/SimpleTimeZone;->currentSerialVersion:I
-Ljava/util/SimpleTimeZone;->decodeEndRule()V
-Ljava/util/SimpleTimeZone;->decodeRules()V
-Ljava/util/SimpleTimeZone;->decodeStartRule()V
-Ljava/util/SimpleTimeZone;->DOM_MODE:I
-Ljava/util/SimpleTimeZone;->DOW_GE_DOM_MODE:I
-Ljava/util/SimpleTimeZone;->DOW_IN_MONTH_MODE:I
-Ljava/util/SimpleTimeZone;->DOW_LE_DOM_MODE:I
-Ljava/util/SimpleTimeZone;->dstSavings:I
-Ljava/util/SimpleTimeZone;->endDay:I
-Ljava/util/SimpleTimeZone;->endDayOfWeek:I
-Ljava/util/SimpleTimeZone;->endMode:I
-Ljava/util/SimpleTimeZone;->endMonth:I
-Ljava/util/SimpleTimeZone;->endTime:I
-Ljava/util/SimpleTimeZone;->endTimeMode:I
-Ljava/util/SimpleTimeZone;->gcal:Lsun/util/calendar/Gregorian;
-Ljava/util/SimpleTimeZone;->getEnd(Lsun/util/calendar/BaseCalendar;Lsun/util/calendar/BaseCalendar$Date;I)J
-Ljava/util/SimpleTimeZone;->getOffset(Lsun/util/calendar/BaseCalendar;Lsun/util/calendar/BaseCalendar$Date;IJ)I
-Ljava/util/SimpleTimeZone;->getOffsets(J[I)I
-Ljava/util/SimpleTimeZone;->getStart(Lsun/util/calendar/BaseCalendar;Lsun/util/calendar/BaseCalendar$Date;I)J
-Ljava/util/SimpleTimeZone;->getTransition(Lsun/util/calendar/BaseCalendar;Lsun/util/calendar/BaseCalendar$Date;IIIIII)J
-Ljava/util/SimpleTimeZone;->invalidateCache()V
-Ljava/util/SimpleTimeZone;->makeRulesCompatible()V
-Ljava/util/SimpleTimeZone;->millisPerDay:I
-Ljava/util/SimpleTimeZone;->millisPerHour:I
-Ljava/util/SimpleTimeZone;->monthLength:[B
-Ljava/util/SimpleTimeZone;->packRules()[B
-Ljava/util/SimpleTimeZone;->packTimes()[I
-Ljava/util/SimpleTimeZone;->rawOffset:I
-Ljava/util/SimpleTimeZone;->serialVersionOnStream:I
-Ljava/util/SimpleTimeZone;->startDay:I
-Ljava/util/SimpleTimeZone;->startDayOfWeek:I
-Ljava/util/SimpleTimeZone;->startMode:I
-Ljava/util/SimpleTimeZone;->startMonth:I
-Ljava/util/SimpleTimeZone;->startTime:I
-Ljava/util/SimpleTimeZone;->startTimeMode:I
-Ljava/util/SimpleTimeZone;->startYear:I
-Ljava/util/SimpleTimeZone;->staticLeapMonthLength:[B
-Ljava/util/SimpleTimeZone;->staticMonthLength:[B
-Ljava/util/SimpleTimeZone;->unpackRules([B)V
-Ljava/util/SimpleTimeZone;->unpackTimes([I)V
-Ljava/util/SimpleTimeZone;->useDaylight:Z
-Ljava/util/Spliterators$AbstractDoubleSpliterator$HoldingDoubleConsumer;-><init>()V
-Ljava/util/Spliterators$AbstractDoubleSpliterator$HoldingDoubleConsumer;->value:D
-Ljava/util/Spliterators$AbstractDoubleSpliterator;->batch:I
-Ljava/util/Spliterators$AbstractDoubleSpliterator;->BATCH_UNIT:I
-Ljava/util/Spliterators$AbstractDoubleSpliterator;->characteristics:I
-Ljava/util/Spliterators$AbstractDoubleSpliterator;->est:J
-Ljava/util/Spliterators$AbstractDoubleSpliterator;->MAX_BATCH:I
-Ljava/util/Spliterators$AbstractIntSpliterator$HoldingIntConsumer;-><init>()V
-Ljava/util/Spliterators$AbstractIntSpliterator$HoldingIntConsumer;->value:I
-Ljava/util/Spliterators$AbstractIntSpliterator;->batch:I
-Ljava/util/Spliterators$AbstractIntSpliterator;->BATCH_UNIT:I
-Ljava/util/Spliterators$AbstractIntSpliterator;->characteristics:I
-Ljava/util/Spliterators$AbstractIntSpliterator;->est:J
-Ljava/util/Spliterators$AbstractIntSpliterator;->MAX_BATCH:I
-Ljava/util/Spliterators$AbstractLongSpliterator$HoldingLongConsumer;-><init>()V
-Ljava/util/Spliterators$AbstractLongSpliterator$HoldingLongConsumer;->value:J
-Ljava/util/Spliterators$AbstractLongSpliterator;->batch:I
-Ljava/util/Spliterators$AbstractLongSpliterator;->BATCH_UNIT:I
-Ljava/util/Spliterators$AbstractLongSpliterator;->characteristics:I
-Ljava/util/Spliterators$AbstractLongSpliterator;->est:J
-Ljava/util/Spliterators$AbstractLongSpliterator;->MAX_BATCH:I
-Ljava/util/Spliterators$AbstractSpliterator$HoldingConsumer;-><init>()V
-Ljava/util/Spliterators$AbstractSpliterator$HoldingConsumer;->value:Ljava/lang/Object;
-Ljava/util/Spliterators$AbstractSpliterator;->batch:I
-Ljava/util/Spliterators$AbstractSpliterator;->BATCH_UNIT:I
-Ljava/util/Spliterators$AbstractSpliterator;->characteristics:I
-Ljava/util/Spliterators$AbstractSpliterator;->est:J
-Ljava/util/Spliterators$AbstractSpliterator;->MAX_BATCH:I
-Ljava/util/Spliterators$ArraySpliterator;-><init>([Ljava/lang/Object;I)V
-Ljava/util/Spliterators$ArraySpliterator;-><init>([Ljava/lang/Object;III)V
-Ljava/util/Spliterators$ArraySpliterator;->array:[Ljava/lang/Object;
-Ljava/util/Spliterators$ArraySpliterator;->characteristics:I
-Ljava/util/Spliterators$ArraySpliterator;->fence:I
-Ljava/util/Spliterators$ArraySpliterator;->index:I
-Ljava/util/Spliterators$DoubleArraySpliterator;-><init>([DI)V
-Ljava/util/Spliterators$DoubleArraySpliterator;-><init>([DIII)V
-Ljava/util/Spliterators$DoubleArraySpliterator;->array:[D
-Ljava/util/Spliterators$DoubleArraySpliterator;->characteristics:I
-Ljava/util/Spliterators$DoubleArraySpliterator;->fence:I
-Ljava/util/Spliterators$DoubleArraySpliterator;->index:I
-Ljava/util/Spliterators$DoubleIteratorSpliterator;-><init>(Ljava/util/PrimitiveIterator$OfDouble;I)V
-Ljava/util/Spliterators$DoubleIteratorSpliterator;-><init>(Ljava/util/PrimitiveIterator$OfDouble;JI)V
-Ljava/util/Spliterators$DoubleIteratorSpliterator;->batch:I
-Ljava/util/Spliterators$DoubleIteratorSpliterator;->BATCH_UNIT:I
-Ljava/util/Spliterators$DoubleIteratorSpliterator;->characteristics:I
-Ljava/util/Spliterators$DoubleIteratorSpliterator;->est:J
-Ljava/util/Spliterators$DoubleIteratorSpliterator;->it:Ljava/util/PrimitiveIterator$OfDouble;
-Ljava/util/Spliterators$DoubleIteratorSpliterator;->MAX_BATCH:I
-Ljava/util/Spliterators$EmptySpliterator$OfDouble;-><init>()V
-Ljava/util/Spliterators$EmptySpliterator$OfInt;-><init>()V
-Ljava/util/Spliterators$EmptySpliterator$OfLong;-><init>()V
-Ljava/util/Spliterators$EmptySpliterator$OfRef;-><init>()V
-Ljava/util/Spliterators$EmptySpliterator;-><init>()V
-Ljava/util/Spliterators$EmptySpliterator;->characteristics()I
-Ljava/util/Spliterators$EmptySpliterator;->estimateSize()J
-Ljava/util/Spliterators$EmptySpliterator;->forEachRemaining(Ljava/lang/Object;)V
-Ljava/util/Spliterators$EmptySpliterator;->tryAdvance(Ljava/lang/Object;)Z
-Ljava/util/Spliterators$EmptySpliterator;->trySplit()Ljava/util/Spliterator;
-Ljava/util/Spliterators$IntArraySpliterator;-><init>([II)V
-Ljava/util/Spliterators$IntArraySpliterator;-><init>([IIII)V
-Ljava/util/Spliterators$IntArraySpliterator;->array:[I
-Ljava/util/Spliterators$IntArraySpliterator;->characteristics:I
-Ljava/util/Spliterators$IntArraySpliterator;->fence:I
-Ljava/util/Spliterators$IntArraySpliterator;->index:I
-Ljava/util/Spliterators$IntIteratorSpliterator;-><init>(Ljava/util/PrimitiveIterator$OfInt;I)V
-Ljava/util/Spliterators$IntIteratorSpliterator;-><init>(Ljava/util/PrimitiveIterator$OfInt;JI)V
-Ljava/util/Spliterators$IntIteratorSpliterator;->batch:I
-Ljava/util/Spliterators$IntIteratorSpliterator;->BATCH_UNIT:I
-Ljava/util/Spliterators$IntIteratorSpliterator;->characteristics:I
-Ljava/util/Spliterators$IntIteratorSpliterator;->est:J
-Ljava/util/Spliterators$IntIteratorSpliterator;->it:Ljava/util/PrimitiveIterator$OfInt;
-Ljava/util/Spliterators$IntIteratorSpliterator;->MAX_BATCH:I
-Ljava/util/Spliterators$IteratorSpliterator;-><init>(Ljava/util/Collection;I)V
-Ljava/util/Spliterators$IteratorSpliterator;-><init>(Ljava/util/Iterator;I)V
-Ljava/util/Spliterators$IteratorSpliterator;-><init>(Ljava/util/Iterator;JI)V
-Ljava/util/Spliterators$IteratorSpliterator;->batch:I
-Ljava/util/Spliterators$IteratorSpliterator;->BATCH_UNIT:I
-Ljava/util/Spliterators$IteratorSpliterator;->characteristics:I
-Ljava/util/Spliterators$IteratorSpliterator;->collection:Ljava/util/Collection;
-Ljava/util/Spliterators$IteratorSpliterator;->est:J
-Ljava/util/Spliterators$IteratorSpliterator;->it:Ljava/util/Iterator;
-Ljava/util/Spliterators$IteratorSpliterator;->MAX_BATCH:I
-Ljava/util/Spliterators$LongArraySpliterator;-><init>([JI)V
-Ljava/util/Spliterators$LongArraySpliterator;-><init>([JIII)V
-Ljava/util/Spliterators$LongArraySpliterator;->array:[J
-Ljava/util/Spliterators$LongArraySpliterator;->characteristics:I
-Ljava/util/Spliterators$LongArraySpliterator;->fence:I
-Ljava/util/Spliterators$LongArraySpliterator;->index:I
-Ljava/util/Spliterators$LongIteratorSpliterator;-><init>(Ljava/util/PrimitiveIterator$OfLong;I)V
-Ljava/util/Spliterators$LongIteratorSpliterator;-><init>(Ljava/util/PrimitiveIterator$OfLong;JI)V
-Ljava/util/Spliterators$LongIteratorSpliterator;->batch:I
-Ljava/util/Spliterators$LongIteratorSpliterator;->BATCH_UNIT:I
-Ljava/util/Spliterators$LongIteratorSpliterator;->characteristics:I
-Ljava/util/Spliterators$LongIteratorSpliterator;->est:J
-Ljava/util/Spliterators$LongIteratorSpliterator;->it:Ljava/util/PrimitiveIterator$OfLong;
-Ljava/util/Spliterators$LongIteratorSpliterator;->MAX_BATCH:I
-Ljava/util/Spliterators;-><init>()V
-Ljava/util/Spliterators;->checkFromToBounds(III)V
-Ljava/util/Spliterators;->EMPTY_DOUBLE_SPLITERATOR:Ljava/util/Spliterator$OfDouble;
-Ljava/util/Spliterators;->EMPTY_INT_SPLITERATOR:Ljava/util/Spliterator$OfInt;
-Ljava/util/Spliterators;->EMPTY_LONG_SPLITERATOR:Ljava/util/Spliterator$OfLong;
-Ljava/util/Spliterators;->EMPTY_SPLITERATOR:Ljava/util/Spliterator;
-Ljava/util/SplittableRandom$RandomDoublesSpliterator;-><init>(Ljava/util/SplittableRandom;JJDD)V
-Ljava/util/SplittableRandom$RandomDoublesSpliterator;->bound:D
-Ljava/util/SplittableRandom$RandomDoublesSpliterator;->fence:J
-Ljava/util/SplittableRandom$RandomDoublesSpliterator;->index:J
-Ljava/util/SplittableRandom$RandomDoublesSpliterator;->origin:D
-Ljava/util/SplittableRandom$RandomDoublesSpliterator;->rng:Ljava/util/SplittableRandom;
-Ljava/util/SplittableRandom$RandomIntsSpliterator;-><init>(Ljava/util/SplittableRandom;JJII)V
-Ljava/util/SplittableRandom$RandomIntsSpliterator;->bound:I
-Ljava/util/SplittableRandom$RandomIntsSpliterator;->fence:J
-Ljava/util/SplittableRandom$RandomIntsSpliterator;->index:J
-Ljava/util/SplittableRandom$RandomIntsSpliterator;->origin:I
-Ljava/util/SplittableRandom$RandomIntsSpliterator;->rng:Ljava/util/SplittableRandom;
-Ljava/util/SplittableRandom$RandomLongsSpliterator;-><init>(Ljava/util/SplittableRandom;JJJJ)V
-Ljava/util/SplittableRandom$RandomLongsSpliterator;->bound:J
-Ljava/util/SplittableRandom$RandomLongsSpliterator;->fence:J
-Ljava/util/SplittableRandom$RandomLongsSpliterator;->index:J
-Ljava/util/SplittableRandom$RandomLongsSpliterator;->origin:J
-Ljava/util/SplittableRandom$RandomLongsSpliterator;->rng:Ljava/util/SplittableRandom;
-Ljava/util/SplittableRandom;-><init>(JJ)V
-Ljava/util/SplittableRandom;->BAD_BOUND:Ljava/lang/String;
-Ljava/util/SplittableRandom;->BAD_RANGE:Ljava/lang/String;
-Ljava/util/SplittableRandom;->BAD_SIZE:Ljava/lang/String;
-Ljava/util/SplittableRandom;->defaultGen:Ljava/util/concurrent/atomic/AtomicLong;
-Ljava/util/SplittableRandom;->DOUBLE_UNIT:D
-Ljava/util/SplittableRandom;->gamma:J
-Ljava/util/SplittableRandom;->GOLDEN_GAMMA:J
-Ljava/util/SplittableRandom;->internalNextDouble(DD)D
-Ljava/util/SplittableRandom;->internalNextInt(II)I
-Ljava/util/SplittableRandom;->internalNextLong(JJ)J
-Ljava/util/SplittableRandom;->mix32(J)I
-Ljava/util/SplittableRandom;->mix64(J)J
-Ljava/util/SplittableRandom;->mixGamma(J)J
-Ljava/util/SplittableRandom;->nextSeed()J
-Ljava/util/SplittableRandom;->seed:J
-Ljava/util/stream/AbstractPipeline;-><init>(Ljava/util/function/Supplier;IZ)V
-Ljava/util/stream/AbstractPipeline;-><init>(Ljava/util/Spliterator;IZ)V
-Ljava/util/stream/AbstractPipeline;-><init>(Ljava/util/stream/AbstractPipeline;I)V
-Ljava/util/stream/AbstractPipeline;->combinedFlags:I
-Ljava/util/stream/AbstractPipeline;->copyInto(Ljava/util/stream/Sink;Ljava/util/Spliterator;)V
-Ljava/util/stream/AbstractPipeline;->copyIntoWithCancel(Ljava/util/stream/Sink;Ljava/util/Spliterator;)V
-Ljava/util/stream/AbstractPipeline;->depth:I
-Ljava/util/stream/AbstractPipeline;->evaluate(Ljava/util/Spliterator;ZLjava/util/function/IntFunction;)Ljava/util/stream/Node;
-Ljava/util/stream/AbstractPipeline;->evaluate(Ljava/util/stream/TerminalOp;)Ljava/lang/Object;
-Ljava/util/stream/AbstractPipeline;->evaluateToArrayNode(Ljava/util/function/IntFunction;)Ljava/util/stream/Node;
-Ljava/util/stream/AbstractPipeline;->evaluateToNode(Ljava/util/stream/PipelineHelper;Ljava/util/Spliterator;ZLjava/util/function/IntFunction;)Ljava/util/stream/Node;
-Ljava/util/stream/AbstractPipeline;->exactOutputSizeIfKnown(Ljava/util/Spliterator;)J
-Ljava/util/stream/AbstractPipeline;->forEachWithCancel(Ljava/util/Spliterator;Ljava/util/stream/Sink;)V
-Ljava/util/stream/AbstractPipeline;->getOutputShape()Ljava/util/stream/StreamShape;
-Ljava/util/stream/AbstractPipeline;->getSourceShape()Ljava/util/stream/StreamShape;
-Ljava/util/stream/AbstractPipeline;->getStreamAndOpFlags()I
-Ljava/util/stream/AbstractPipeline;->getStreamFlags()I
-Ljava/util/stream/AbstractPipeline;->isOrdered()Z
-Ljava/util/stream/AbstractPipeline;->lazySpliterator(Ljava/util/function/Supplier;)Ljava/util/Spliterator;
-Ljava/util/stream/AbstractPipeline;->linkedOrConsumed:Z
-Ljava/util/stream/AbstractPipeline;->makeNodeBuilder(JLjava/util/function/IntFunction;)Ljava/util/stream/Node$Builder;
-Ljava/util/stream/AbstractPipeline;->MSG_CONSUMED:Ljava/lang/String;
-Ljava/util/stream/AbstractPipeline;->MSG_STREAM_LINKED:Ljava/lang/String;
-Ljava/util/stream/AbstractPipeline;->nextStage:Ljava/util/stream/AbstractPipeline;
-Ljava/util/stream/AbstractPipeline;->opEvaluateParallel(Ljava/util/stream/PipelineHelper;Ljava/util/Spliterator;Ljava/util/function/IntFunction;)Ljava/util/stream/Node;
-Ljava/util/stream/AbstractPipeline;->opEvaluateParallelLazy(Ljava/util/stream/PipelineHelper;Ljava/util/Spliterator;)Ljava/util/Spliterator;
-Ljava/util/stream/AbstractPipeline;->opIsStateful()Z
-Ljava/util/stream/AbstractPipeline;->opWrapSink(ILjava/util/stream/Sink;)Ljava/util/stream/Sink;
-Ljava/util/stream/AbstractPipeline;->parallel:Z
-Ljava/util/stream/AbstractPipeline;->previousStage:Ljava/util/stream/AbstractPipeline;
-Ljava/util/stream/AbstractPipeline;->sourceAnyStateful:Z
-Ljava/util/stream/AbstractPipeline;->sourceCloseAction:Ljava/lang/Runnable;
-Ljava/util/stream/AbstractPipeline;->sourceOrOpFlags:I
-Ljava/util/stream/AbstractPipeline;->sourceSpliterator(I)Ljava/util/Spliterator;
-Ljava/util/stream/AbstractPipeline;->sourceSpliterator:Ljava/util/Spliterator;
-Ljava/util/stream/AbstractPipeline;->sourceStage:Ljava/util/stream/AbstractPipeline;
-Ljava/util/stream/AbstractPipeline;->sourceStageSpliterator()Ljava/util/Spliterator;
-Ljava/util/stream/AbstractPipeline;->sourceSupplier:Ljava/util/function/Supplier;
-Ljava/util/stream/AbstractPipeline;->wrap(Ljava/util/stream/PipelineHelper;Ljava/util/function/Supplier;Z)Ljava/util/Spliterator;
-Ljava/util/stream/AbstractPipeline;->wrapAndCopyInto(Ljava/util/stream/Sink;Ljava/util/Spliterator;)Ljava/util/stream/Sink;
-Ljava/util/stream/AbstractPipeline;->wrapSink(Ljava/util/stream/Sink;)Ljava/util/stream/Sink;
-Ljava/util/stream/AbstractPipeline;->wrapSpliterator(Ljava/util/Spliterator;)Ljava/util/Spliterator;
-Ljava/util/stream/AbstractSpinedBuffer;-><init>()V
-Ljava/util/stream/AbstractSpinedBuffer;-><init>(I)V
-Ljava/util/stream/AbstractSpinedBuffer;->chunkSize(I)I
-Ljava/util/stream/AbstractSpinedBuffer;->clear()V
-Ljava/util/stream/AbstractSpinedBuffer;->count()J
-Ljava/util/stream/AbstractSpinedBuffer;->elementIndex:I
-Ljava/util/stream/AbstractSpinedBuffer;->initialChunkPower:I
-Ljava/util/stream/AbstractSpinedBuffer;->isEmpty()Z
-Ljava/util/stream/AbstractSpinedBuffer;->MAX_CHUNK_POWER:I
-Ljava/util/stream/AbstractSpinedBuffer;->MIN_CHUNK_POWER:I
-Ljava/util/stream/AbstractSpinedBuffer;->MIN_CHUNK_SIZE:I
-Ljava/util/stream/AbstractSpinedBuffer;->MIN_SPINE_SIZE:I
-Ljava/util/stream/AbstractSpinedBuffer;->priorElementCount:[J
-Ljava/util/stream/AbstractSpinedBuffer;->spineIndex:I
-Ljava/util/stream/Collectors$CollectorImpl;-><init>(Ljava/util/function/Supplier;Ljava/util/function/BiConsumer;Ljava/util/function/BinaryOperator;Ljava/util/function/Function;Ljava/util/Set;)V
-Ljava/util/stream/Collectors$CollectorImpl;-><init>(Ljava/util/function/Supplier;Ljava/util/function/BiConsumer;Ljava/util/function/BinaryOperator;Ljava/util/Set;)V
-Ljava/util/stream/Collectors$CollectorImpl;->accumulator:Ljava/util/function/BiConsumer;
-Ljava/util/stream/Collectors$CollectorImpl;->characteristics:Ljava/util/Set;
-Ljava/util/stream/Collectors$CollectorImpl;->combiner:Ljava/util/function/BinaryOperator;
-Ljava/util/stream/Collectors$CollectorImpl;->finisher:Ljava/util/function/Function;
-Ljava/util/stream/Collectors$CollectorImpl;->supplier:Ljava/util/function/Supplier;
-Ljava/util/stream/Collectors$Partition;-><init>(Ljava/lang/Object;Ljava/lang/Object;)V
-Ljava/util/stream/Collectors$Partition;->forFalse:Ljava/lang/Object;
-Ljava/util/stream/Collectors$Partition;->forTrue:Ljava/lang/Object;
-Ljava/util/stream/Collectors;-><init>()V
-Ljava/util/stream/Collectors;->boxSupplier(Ljava/lang/Object;)Ljava/util/function/Supplier;
-Ljava/util/stream/Collectors;->castingIdentity()Ljava/util/function/Function;
-Ljava/util/stream/Collectors;->CH_CONCURRENT_ID:Ljava/util/Set;
-Ljava/util/stream/Collectors;->CH_CONCURRENT_NOID:Ljava/util/Set;
-Ljava/util/stream/Collectors;->CH_ID:Ljava/util/Set;
-Ljava/util/stream/Collectors;->CH_NOID:Ljava/util/Set;
-Ljava/util/stream/Collectors;->CH_UNORDERED_ID:Ljava/util/Set;
-Ljava/util/stream/Collectors;->computeFinalSum([D)D
-Ljava/util/stream/Collectors;->mapMerger(Ljava/util/function/BinaryOperator;)Ljava/util/function/BinaryOperator;
-Ljava/util/stream/Collectors;->sumWithCompensation([DD)[D
-Ljava/util/stream/Collectors;->throwingMerger()Ljava/util/function/BinaryOperator;
-Ljava/util/stream/DoublePipeline$Head;-><init>(Ljava/util/function/Supplier;IZ)V
-Ljava/util/stream/DoublePipeline$Head;-><init>(Ljava/util/Spliterator;IZ)V
-Ljava/util/stream/DoublePipeline$Head;->opIsStateful()Z
-Ljava/util/stream/DoublePipeline$Head;->opWrapSink(ILjava/util/stream/Sink;)Ljava/util/stream/Sink;
-Ljava/util/stream/DoublePipeline$StatefulOp;-><init>(Ljava/util/stream/AbstractPipeline;Ljava/util/stream/StreamShape;I)V
-Ljava/util/stream/DoublePipeline$StatefulOp;->opEvaluateParallel(Ljava/util/stream/PipelineHelper;Ljava/util/Spliterator;Ljava/util/function/IntFunction;)Ljava/util/stream/Node;
-Ljava/util/stream/DoublePipeline$StatefulOp;->opIsStateful()Z
-Ljava/util/stream/DoublePipeline$StatelessOp;-><init>(Ljava/util/stream/AbstractPipeline;Ljava/util/stream/StreamShape;I)V
-Ljava/util/stream/DoublePipeline$StatelessOp;->opIsStateful()Z
-Ljava/util/stream/DoublePipeline;-><init>(Ljava/util/function/Supplier;IZ)V
-Ljava/util/stream/DoublePipeline;-><init>(Ljava/util/Spliterator;IZ)V
-Ljava/util/stream/DoublePipeline;-><init>(Ljava/util/stream/AbstractPipeline;I)V
-Ljava/util/stream/DoublePipeline;->adapt(Ljava/util/Spliterator;)Ljava/util/Spliterator$OfDouble;
-Ljava/util/stream/DoublePipeline;->adapt(Ljava/util/stream/Sink;)Ljava/util/function/DoubleConsumer;
-Ljava/util/stream/DoublePipeline;->evaluateToNode(Ljava/util/stream/PipelineHelper;Ljava/util/Spliterator;ZLjava/util/function/IntFunction;)Ljava/util/stream/Node;
-Ljava/util/stream/DoublePipeline;->forEachWithCancel(Ljava/util/Spliterator;Ljava/util/stream/Sink;)V
-Ljava/util/stream/DoublePipeline;->getOutputShape()Ljava/util/stream/StreamShape;
-Ljava/util/stream/DoublePipeline;->lazySpliterator(Ljava/util/function/Supplier;)Ljava/util/Spliterator$OfDouble;
-Ljava/util/stream/DoublePipeline;->makeNodeBuilder(JLjava/util/function/IntFunction;)Ljava/util/stream/Node$Builder;
-Ljava/util/stream/DoublePipeline;->wrap(Ljava/util/stream/PipelineHelper;Ljava/util/function/Supplier;Z)Ljava/util/Spliterator;
-Ljava/util/stream/IntPipeline$Head;-><init>(Ljava/util/function/Supplier;IZ)V
-Ljava/util/stream/IntPipeline$Head;-><init>(Ljava/util/Spliterator;IZ)V
-Ljava/util/stream/IntPipeline$Head;->opIsStateful()Z
-Ljava/util/stream/IntPipeline$Head;->opWrapSink(ILjava/util/stream/Sink;)Ljava/util/stream/Sink;
-Ljava/util/stream/IntPipeline$StatefulOp;-><init>(Ljava/util/stream/AbstractPipeline;Ljava/util/stream/StreamShape;I)V
-Ljava/util/stream/IntPipeline$StatefulOp;->opEvaluateParallel(Ljava/util/stream/PipelineHelper;Ljava/util/Spliterator;Ljava/util/function/IntFunction;)Ljava/util/stream/Node;
-Ljava/util/stream/IntPipeline$StatefulOp;->opIsStateful()Z
-Ljava/util/stream/IntPipeline$StatelessOp;-><init>(Ljava/util/stream/AbstractPipeline;Ljava/util/stream/StreamShape;I)V
-Ljava/util/stream/IntPipeline$StatelessOp;->opIsStateful()Z
-Ljava/util/stream/IntPipeline;-><init>(Ljava/util/function/Supplier;IZ)V
-Ljava/util/stream/IntPipeline;-><init>(Ljava/util/Spliterator;IZ)V
-Ljava/util/stream/IntPipeline;-><init>(Ljava/util/stream/AbstractPipeline;I)V
-Ljava/util/stream/IntPipeline;->adapt(Ljava/util/Spliterator;)Ljava/util/Spliterator$OfInt;
-Ljava/util/stream/IntPipeline;->adapt(Ljava/util/stream/Sink;)Ljava/util/function/IntConsumer;
-Ljava/util/stream/IntPipeline;->evaluateToNode(Ljava/util/stream/PipelineHelper;Ljava/util/Spliterator;ZLjava/util/function/IntFunction;)Ljava/util/stream/Node;
-Ljava/util/stream/IntPipeline;->forEachWithCancel(Ljava/util/Spliterator;Ljava/util/stream/Sink;)V
-Ljava/util/stream/IntPipeline;->getOutputShape()Ljava/util/stream/StreamShape;
-Ljava/util/stream/IntPipeline;->lazySpliterator(Ljava/util/function/Supplier;)Ljava/util/Spliterator$OfInt;
-Ljava/util/stream/IntPipeline;->makeNodeBuilder(JLjava/util/function/IntFunction;)Ljava/util/stream/Node$Builder;
-Ljava/util/stream/IntPipeline;->wrap(Ljava/util/stream/PipelineHelper;Ljava/util/function/Supplier;Z)Ljava/util/Spliterator;
-Ljava/util/stream/LongPipeline$Head;-><init>(Ljava/util/function/Supplier;IZ)V
-Ljava/util/stream/LongPipeline$Head;-><init>(Ljava/util/Spliterator;IZ)V
-Ljava/util/stream/LongPipeline$Head;->opIsStateful()Z
-Ljava/util/stream/LongPipeline$Head;->opWrapSink(ILjava/util/stream/Sink;)Ljava/util/stream/Sink;
-Ljava/util/stream/LongPipeline$StatefulOp;-><init>(Ljava/util/stream/AbstractPipeline;Ljava/util/stream/StreamShape;I)V
-Ljava/util/stream/LongPipeline$StatefulOp;->opEvaluateParallel(Ljava/util/stream/PipelineHelper;Ljava/util/Spliterator;Ljava/util/function/IntFunction;)Ljava/util/stream/Node;
-Ljava/util/stream/LongPipeline$StatefulOp;->opIsStateful()Z
-Ljava/util/stream/LongPipeline$StatelessOp;-><init>(Ljava/util/stream/AbstractPipeline;Ljava/util/stream/StreamShape;I)V
-Ljava/util/stream/LongPipeline$StatelessOp;->opIsStateful()Z
-Ljava/util/stream/LongPipeline;-><init>(Ljava/util/function/Supplier;IZ)V
-Ljava/util/stream/LongPipeline;-><init>(Ljava/util/Spliterator;IZ)V
-Ljava/util/stream/LongPipeline;-><init>(Ljava/util/stream/AbstractPipeline;I)V
-Ljava/util/stream/LongPipeline;->adapt(Ljava/util/Spliterator;)Ljava/util/Spliterator$OfLong;
-Ljava/util/stream/LongPipeline;->adapt(Ljava/util/stream/Sink;)Ljava/util/function/LongConsumer;
-Ljava/util/stream/LongPipeline;->evaluateToNode(Ljava/util/stream/PipelineHelper;Ljava/util/Spliterator;ZLjava/util/function/IntFunction;)Ljava/util/stream/Node;
-Ljava/util/stream/LongPipeline;->forEachWithCancel(Ljava/util/Spliterator;Ljava/util/stream/Sink;)V
-Ljava/util/stream/LongPipeline;->getOutputShape()Ljava/util/stream/StreamShape;
-Ljava/util/stream/LongPipeline;->lazySpliterator(Ljava/util/function/Supplier;)Ljava/util/Spliterator$OfLong;
-Ljava/util/stream/LongPipeline;->makeNodeBuilder(JLjava/util/function/IntFunction;)Ljava/util/stream/Node$Builder;
-Ljava/util/stream/LongPipeline;->wrap(Ljava/util/stream/PipelineHelper;Ljava/util/function/Supplier;Z)Ljava/util/Spliterator;
-Ljava/util/stream/Node$Builder$OfDouble;->build()Ljava/util/stream/Node$OfDouble;
-Ljava/util/stream/Node$Builder$OfInt;->build()Ljava/util/stream/Node$OfInt;
-Ljava/util/stream/Node$Builder$OfLong;->build()Ljava/util/stream/Node$OfLong;
-Ljava/util/stream/Node$Builder;->build()Ljava/util/stream/Node;
-Ljava/util/stream/Node$OfDouble;->copyInto([Ljava/lang/Double;I)V
-Ljava/util/stream/Node$OfDouble;->forEach(Ljava/util/function/Consumer;)V
-Ljava/util/stream/Node$OfDouble;->getShape()Ljava/util/stream/StreamShape;
-Ljava/util/stream/Node$OfDouble;->newArray(I)[D
-Ljava/util/stream/Node$OfDouble;->truncate(JJLjava/util/function/IntFunction;)Ljava/util/stream/Node$OfDouble;
-Ljava/util/stream/Node$OfInt;->copyInto([Ljava/lang/Integer;I)V
-Ljava/util/stream/Node$OfInt;->forEach(Ljava/util/function/Consumer;)V
-Ljava/util/stream/Node$OfInt;->getShape()Ljava/util/stream/StreamShape;
-Ljava/util/stream/Node$OfInt;->newArray(I)[I
-Ljava/util/stream/Node$OfInt;->truncate(JJLjava/util/function/IntFunction;)Ljava/util/stream/Node$OfInt;
-Ljava/util/stream/Node$OfLong;->copyInto([Ljava/lang/Long;I)V
-Ljava/util/stream/Node$OfLong;->forEach(Ljava/util/function/Consumer;)V
-Ljava/util/stream/Node$OfLong;->getShape()Ljava/util/stream/StreamShape;
-Ljava/util/stream/Node$OfLong;->newArray(I)[J
-Ljava/util/stream/Node$OfLong;->truncate(JJLjava/util/function/IntFunction;)Ljava/util/stream/Node$OfLong;
-Ljava/util/stream/Node$OfPrimitive;->asArray(Ljava/util/function/IntFunction;)[Ljava/lang/Object;
-Ljava/util/stream/Node$OfPrimitive;->asPrimitiveArray()Ljava/lang/Object;
-Ljava/util/stream/Node$OfPrimitive;->copyInto(Ljava/lang/Object;I)V
-Ljava/util/stream/Node$OfPrimitive;->forEach(Ljava/lang/Object;)V
-Ljava/util/stream/Node$OfPrimitive;->getChild(I)Ljava/util/stream/Node$OfPrimitive;
-Ljava/util/stream/Node$OfPrimitive;->newArray(I)Ljava/lang/Object;
-Ljava/util/stream/Node$OfPrimitive;->spliterator()Ljava/util/Spliterator$OfPrimitive;
-Ljava/util/stream/Node$OfPrimitive;->truncate(JJLjava/util/function/IntFunction;)Ljava/util/stream/Node$OfPrimitive;
-Ljava/util/stream/Node;->asArray(Ljava/util/function/IntFunction;)[Ljava/lang/Object;
-Ljava/util/stream/Node;->copyInto([Ljava/lang/Object;I)V
-Ljava/util/stream/Node;->count()J
-Ljava/util/stream/Node;->forEach(Ljava/util/function/Consumer;)V
-Ljava/util/stream/Node;->getChild(I)Ljava/util/stream/Node;
-Ljava/util/stream/Node;->getChildCount()I
-Ljava/util/stream/Node;->getShape()Ljava/util/stream/StreamShape;
-Ljava/util/stream/Node;->spliterator()Ljava/util/Spliterator;
-Ljava/util/stream/Node;->truncate(JJLjava/util/function/IntFunction;)Ljava/util/stream/Node;
-Ljava/util/stream/PipelineHelper;-><init>()V
-Ljava/util/stream/PipelineHelper;->copyInto(Ljava/util/stream/Sink;Ljava/util/Spliterator;)V
-Ljava/util/stream/PipelineHelper;->copyIntoWithCancel(Ljava/util/stream/Sink;Ljava/util/Spliterator;)V
-Ljava/util/stream/PipelineHelper;->evaluate(Ljava/util/Spliterator;ZLjava/util/function/IntFunction;)Ljava/util/stream/Node;
-Ljava/util/stream/PipelineHelper;->exactOutputSizeIfKnown(Ljava/util/Spliterator;)J
-Ljava/util/stream/PipelineHelper;->getSourceShape()Ljava/util/stream/StreamShape;
-Ljava/util/stream/PipelineHelper;->getStreamAndOpFlags()I
-Ljava/util/stream/PipelineHelper;->makeNodeBuilder(JLjava/util/function/IntFunction;)Ljava/util/stream/Node$Builder;
-Ljava/util/stream/PipelineHelper;->wrapAndCopyInto(Ljava/util/stream/Sink;Ljava/util/Spliterator;)Ljava/util/stream/Sink;
-Ljava/util/stream/PipelineHelper;->wrapSink(Ljava/util/stream/Sink;)Ljava/util/stream/Sink;
-Ljava/util/stream/PipelineHelper;->wrapSpliterator(Ljava/util/Spliterator;)Ljava/util/Spliterator;
-Ljava/util/stream/ReferencePipeline$Head;-><init>(Ljava/util/function/Supplier;IZ)V
-Ljava/util/stream/ReferencePipeline$Head;-><init>(Ljava/util/Spliterator;IZ)V
-Ljava/util/stream/ReferencePipeline$Head;->forEach(Ljava/util/function/Consumer;)V
-Ljava/util/stream/ReferencePipeline$Head;->forEachOrdered(Ljava/util/function/Consumer;)V
-Ljava/util/stream/ReferencePipeline$Head;->opIsStateful()Z
-Ljava/util/stream/ReferencePipeline$Head;->opWrapSink(ILjava/util/stream/Sink;)Ljava/util/stream/Sink;
-Ljava/util/stream/ReferencePipeline$StatefulOp;-><init>(Ljava/util/stream/AbstractPipeline;Ljava/util/stream/StreamShape;I)V
-Ljava/util/stream/ReferencePipeline$StatefulOp;->opEvaluateParallel(Ljava/util/stream/PipelineHelper;Ljava/util/Spliterator;Ljava/util/function/IntFunction;)Ljava/util/stream/Node;
-Ljava/util/stream/ReferencePipeline$StatefulOp;->opIsStateful()Z
-Ljava/util/stream/ReferencePipeline$StatelessOp;-><init>(Ljava/util/stream/AbstractPipeline;Ljava/util/stream/StreamShape;I)V
-Ljava/util/stream/ReferencePipeline$StatelessOp;->opIsStateful()Z
-Ljava/util/stream/ReferencePipeline;-><init>(Ljava/util/function/Supplier;IZ)V
-Ljava/util/stream/ReferencePipeline;-><init>(Ljava/util/Spliterator;IZ)V
-Ljava/util/stream/ReferencePipeline;-><init>(Ljava/util/stream/AbstractPipeline;I)V
-Ljava/util/stream/ReferencePipeline;->allMatch(Ljava/util/function/Predicate;)Z
-Ljava/util/stream/ReferencePipeline;->anyMatch(Ljava/util/function/Predicate;)Z
-Ljava/util/stream/ReferencePipeline;->collect(Ljava/util/function/Supplier;Ljava/util/function/BiConsumer;Ljava/util/function/BiConsumer;)Ljava/lang/Object;
-Ljava/util/stream/ReferencePipeline;->collect(Ljava/util/stream/Collector;)Ljava/lang/Object;
-Ljava/util/stream/ReferencePipeline;->evaluateToNode(Ljava/util/stream/PipelineHelper;Ljava/util/Spliterator;ZLjava/util/function/IntFunction;)Ljava/util/stream/Node;
-Ljava/util/stream/ReferencePipeline;->filter(Ljava/util/function/Predicate;)Ljava/util/stream/Stream;
-Ljava/util/stream/ReferencePipeline;->flatMap(Ljava/util/function/Function;)Ljava/util/stream/Stream;
-Ljava/util/stream/ReferencePipeline;->flatMapToDouble(Ljava/util/function/Function;)Ljava/util/stream/DoubleStream;
-Ljava/util/stream/ReferencePipeline;->flatMapToInt(Ljava/util/function/Function;)Ljava/util/stream/IntStream;
-Ljava/util/stream/ReferencePipeline;->flatMapToLong(Ljava/util/function/Function;)Ljava/util/stream/LongStream;
-Ljava/util/stream/ReferencePipeline;->forEach(Ljava/util/function/Consumer;)V
-Ljava/util/stream/ReferencePipeline;->forEachOrdered(Ljava/util/function/Consumer;)V
-Ljava/util/stream/ReferencePipeline;->forEachWithCancel(Ljava/util/Spliterator;Ljava/util/stream/Sink;)V
-Ljava/util/stream/ReferencePipeline;->getOutputShape()Ljava/util/stream/StreamShape;
-Ljava/util/stream/ReferencePipeline;->lazySpliterator(Ljava/util/function/Supplier;)Ljava/util/Spliterator;
-Ljava/util/stream/ReferencePipeline;->makeNodeBuilder(JLjava/util/function/IntFunction;)Ljava/util/stream/Node$Builder;
-Ljava/util/stream/ReferencePipeline;->map(Ljava/util/function/Function;)Ljava/util/stream/Stream;
-Ljava/util/stream/ReferencePipeline;->mapToDouble(Ljava/util/function/ToDoubleFunction;)Ljava/util/stream/DoubleStream;
-Ljava/util/stream/ReferencePipeline;->mapToInt(Ljava/util/function/ToIntFunction;)Ljava/util/stream/IntStream;
-Ljava/util/stream/ReferencePipeline;->mapToLong(Ljava/util/function/ToLongFunction;)Ljava/util/stream/LongStream;
-Ljava/util/stream/ReferencePipeline;->max(Ljava/util/Comparator;)Ljava/util/Optional;
-Ljava/util/stream/ReferencePipeline;->min(Ljava/util/Comparator;)Ljava/util/Optional;
-Ljava/util/stream/ReferencePipeline;->noneMatch(Ljava/util/function/Predicate;)Z
-Ljava/util/stream/ReferencePipeline;->peek(Ljava/util/function/Consumer;)Ljava/util/stream/Stream;
-Ljava/util/stream/ReferencePipeline;->reduce(Ljava/lang/Object;Ljava/util/function/BiFunction;Ljava/util/function/BinaryOperator;)Ljava/lang/Object;
-Ljava/util/stream/ReferencePipeline;->reduce(Ljava/lang/Object;Ljava/util/function/BinaryOperator;)Ljava/lang/Object;
-Ljava/util/stream/ReferencePipeline;->reduce(Ljava/util/function/BinaryOperator;)Ljava/util/Optional;
-Ljava/util/stream/ReferencePipeline;->sorted(Ljava/util/Comparator;)Ljava/util/stream/Stream;
-Ljava/util/stream/ReferencePipeline;->wrap(Ljava/util/stream/PipelineHelper;Ljava/util/function/Supplier;Z)Ljava/util/Spliterator;
-Ljava/util/stream/Sink$ChainedDouble;-><init>(Ljava/util/stream/Sink;)V
-Ljava/util/stream/Sink$ChainedDouble;->begin(J)V
-Ljava/util/stream/Sink$ChainedDouble;->cancellationRequested()Z
-Ljava/util/stream/Sink$ChainedDouble;->downstream:Ljava/util/stream/Sink;
-Ljava/util/stream/Sink$ChainedDouble;->end()V
-Ljava/util/stream/Sink$ChainedInt;-><init>(Ljava/util/stream/Sink;)V
-Ljava/util/stream/Sink$ChainedInt;->begin(J)V
-Ljava/util/stream/Sink$ChainedInt;->cancellationRequested()Z
-Ljava/util/stream/Sink$ChainedInt;->downstream:Ljava/util/stream/Sink;
-Ljava/util/stream/Sink$ChainedInt;->end()V
-Ljava/util/stream/Sink$ChainedLong;-><init>(Ljava/util/stream/Sink;)V
-Ljava/util/stream/Sink$ChainedLong;->begin(J)V
-Ljava/util/stream/Sink$ChainedLong;->cancellationRequested()Z
-Ljava/util/stream/Sink$ChainedLong;->downstream:Ljava/util/stream/Sink;
-Ljava/util/stream/Sink$ChainedLong;->end()V
-Ljava/util/stream/Sink$ChainedReference;-><init>(Ljava/util/stream/Sink;)V
-Ljava/util/stream/Sink$ChainedReference;->begin(J)V
-Ljava/util/stream/Sink$ChainedReference;->cancellationRequested()Z
-Ljava/util/stream/Sink$ChainedReference;->downstream:Ljava/util/stream/Sink;
-Ljava/util/stream/Sink$ChainedReference;->end()V
-Ljava/util/stream/Sink$OfDouble;->accept(Ljava/lang/Double;)V
-Ljava/util/stream/Sink$OfInt;->accept(Ljava/lang/Integer;)V
-Ljava/util/stream/Sink$OfLong;->accept(Ljava/lang/Long;)V
-Ljava/util/stream/Sink;->accept(D)V
-Ljava/util/stream/Sink;->accept(I)V
-Ljava/util/stream/Sink;->accept(J)V
-Ljava/util/stream/Sink;->begin(J)V
-Ljava/util/stream/Sink;->cancellationRequested()Z
-Ljava/util/stream/Sink;->end()V
-Ljava/util/stream/SpinedBuffer$OfDouble;-><init>()V
-Ljava/util/stream/SpinedBuffer$OfDouble;-><init>(I)V
-Ljava/util/stream/SpinedBuffer$OfDouble;->arrayForEach([DIILjava/util/function/DoubleConsumer;)V
-Ljava/util/stream/SpinedBuffer$OfDouble;->arrayLength([D)I
-Ljava/util/stream/SpinedBuffer$OfDouble;->forEach(Ljava/util/function/Consumer;)V
-Ljava/util/stream/SpinedBuffer$OfDouble;->get(J)D
-Ljava/util/stream/SpinedBuffer$OfDouble;->newArray(I)[D
-Ljava/util/stream/SpinedBuffer$OfDouble;->newArrayArray(I)[[D
-Ljava/util/stream/SpinedBuffer$OfInt;-><init>()V
-Ljava/util/stream/SpinedBuffer$OfInt;-><init>(I)V
-Ljava/util/stream/SpinedBuffer$OfInt;->arrayForEach([IIILjava/util/function/IntConsumer;)V
-Ljava/util/stream/SpinedBuffer$OfInt;->arrayLength([I)I
-Ljava/util/stream/SpinedBuffer$OfInt;->forEach(Ljava/util/function/Consumer;)V
-Ljava/util/stream/SpinedBuffer$OfInt;->get(J)I
-Ljava/util/stream/SpinedBuffer$OfInt;->newArray(I)[I
-Ljava/util/stream/SpinedBuffer$OfInt;->newArrayArray(I)[[I
-Ljava/util/stream/SpinedBuffer$OfLong;-><init>()V
-Ljava/util/stream/SpinedBuffer$OfLong;-><init>(I)V
-Ljava/util/stream/SpinedBuffer$OfLong;->arrayForEach([JIILjava/util/function/LongConsumer;)V
-Ljava/util/stream/SpinedBuffer$OfLong;->arrayLength([J)I
-Ljava/util/stream/SpinedBuffer$OfLong;->forEach(Ljava/util/function/Consumer;)V
-Ljava/util/stream/SpinedBuffer$OfLong;->get(J)J
-Ljava/util/stream/SpinedBuffer$OfLong;->newArray(I)[J
-Ljava/util/stream/SpinedBuffer$OfLong;->newArrayArray(I)[[J
-Ljava/util/stream/SpinedBuffer$OfPrimitive$BaseSpliterator;->arrayForOne(Ljava/lang/Object;ILjava/lang/Object;)V
-Ljava/util/stream/SpinedBuffer$OfPrimitive$BaseSpliterator;->arraySpliterator(Ljava/lang/Object;II)Ljava/util/Spliterator$OfPrimitive;
-Ljava/util/stream/SpinedBuffer$OfPrimitive$BaseSpliterator;->lastSpineElementFence:I
-Ljava/util/stream/SpinedBuffer$OfPrimitive$BaseSpliterator;->lastSpineIndex:I
-Ljava/util/stream/SpinedBuffer$OfPrimitive$BaseSpliterator;->newSpliterator(IIII)Ljava/util/Spliterator$OfPrimitive;
-Ljava/util/stream/SpinedBuffer$OfPrimitive$BaseSpliterator;->splChunk:Ljava/lang/Object;
-Ljava/util/stream/SpinedBuffer$OfPrimitive$BaseSpliterator;->splElementIndex:I
-Ljava/util/stream/SpinedBuffer$OfPrimitive$BaseSpliterator;->splSpineIndex:I
-Ljava/util/stream/SpinedBuffer$OfPrimitive;-><init>()V
-Ljava/util/stream/SpinedBuffer$OfPrimitive;-><init>(I)V
-Ljava/util/stream/SpinedBuffer$OfPrimitive;->arrayForEach(Ljava/lang/Object;IILjava/lang/Object;)V
-Ljava/util/stream/SpinedBuffer$OfPrimitive;->arrayLength(Ljava/lang/Object;)I
-Ljava/util/stream/SpinedBuffer$OfPrimitive;->asPrimitiveArray()Ljava/lang/Object;
-Ljava/util/stream/SpinedBuffer$OfPrimitive;->capacity()J
-Ljava/util/stream/SpinedBuffer$OfPrimitive;->chunkFor(J)I
-Ljava/util/stream/SpinedBuffer$OfPrimitive;->clear()V
-Ljava/util/stream/SpinedBuffer$OfPrimitive;->copyInto(Ljava/lang/Object;I)V
-Ljava/util/stream/SpinedBuffer$OfPrimitive;->curChunk:Ljava/lang/Object;
-Ljava/util/stream/SpinedBuffer$OfPrimitive;->ensureCapacity(J)V
-Ljava/util/stream/SpinedBuffer$OfPrimitive;->forEach(Ljava/lang/Object;)V
-Ljava/util/stream/SpinedBuffer$OfPrimitive;->forEach(Ljava/util/function/Consumer;)V
-Ljava/util/stream/SpinedBuffer$OfPrimitive;->increaseCapacity()V
-Ljava/util/stream/SpinedBuffer$OfPrimitive;->inflateSpine()V
-Ljava/util/stream/SpinedBuffer$OfPrimitive;->newArray(I)Ljava/lang/Object;
-Ljava/util/stream/SpinedBuffer$OfPrimitive;->newArrayArray(I)[Ljava/lang/Object;
-Ljava/util/stream/SpinedBuffer$OfPrimitive;->preAccept()V
-Ljava/util/stream/SpinedBuffer$OfPrimitive;->spine:[Ljava/lang/Object;
-Ljava/util/stream/SpinedBuffer;-><init>()V
-Ljava/util/stream/SpinedBuffer;-><init>(I)V
-Ljava/util/stream/SpinedBuffer;->accept(Ljava/lang/Object;)V
-Ljava/util/stream/SpinedBuffer;->asArray(Ljava/util/function/IntFunction;)[Ljava/lang/Object;
-Ljava/util/stream/SpinedBuffer;->capacity()J
-Ljava/util/stream/SpinedBuffer;->clear()V
-Ljava/util/stream/SpinedBuffer;->copyInto([Ljava/lang/Object;I)V
-Ljava/util/stream/SpinedBuffer;->curChunk:[Ljava/lang/Object;
-Ljava/util/stream/SpinedBuffer;->ensureCapacity(J)V
-Ljava/util/stream/SpinedBuffer;->forEach(Ljava/util/function/Consumer;)V
-Ljava/util/stream/SpinedBuffer;->get(J)Ljava/lang/Object;
-Ljava/util/stream/SpinedBuffer;->increaseCapacity()V
-Ljava/util/stream/SpinedBuffer;->inflateSpine()V
-Ljava/util/stream/SpinedBuffer;->spine:[[Ljava/lang/Object;
-Ljava/util/stream/SpinedBuffer;->SPLITERATOR_CHARACTERISTICS:I
-Ljava/util/stream/StreamOpFlag$MaskBuilder;-><init>(Ljava/util/Map;)V
-Ljava/util/stream/StreamOpFlag$MaskBuilder;->build()Ljava/util/Map;
-Ljava/util/stream/StreamOpFlag$MaskBuilder;->clear(Ljava/util/stream/StreamOpFlag$Type;)Ljava/util/stream/StreamOpFlag$MaskBuilder;
-Ljava/util/stream/StreamOpFlag$MaskBuilder;->map:Ljava/util/Map;
-Ljava/util/stream/StreamOpFlag$MaskBuilder;->mask(Ljava/util/stream/StreamOpFlag$Type;Ljava/lang/Integer;)Ljava/util/stream/StreamOpFlag$MaskBuilder;
-Ljava/util/stream/StreamOpFlag$MaskBuilder;->set(Ljava/util/stream/StreamOpFlag$Type;)Ljava/util/stream/StreamOpFlag$MaskBuilder;
-Ljava/util/stream/StreamOpFlag$MaskBuilder;->setAndClear(Ljava/util/stream/StreamOpFlag$Type;)Ljava/util/stream/StreamOpFlag$MaskBuilder;
-Ljava/util/stream/StreamOpFlag$Type;->OP:Ljava/util/stream/StreamOpFlag$Type;
-Ljava/util/stream/StreamOpFlag$Type;->SPLITERATOR:Ljava/util/stream/StreamOpFlag$Type;
-Ljava/util/stream/StreamOpFlag$Type;->STREAM:Ljava/util/stream/StreamOpFlag$Type;
-Ljava/util/stream/StreamOpFlag$Type;->TERMINAL_OP:Ljava/util/stream/StreamOpFlag$Type;
-Ljava/util/stream/StreamOpFlag$Type;->UPSTREAM_TERMINAL_OP:Ljava/util/stream/StreamOpFlag$Type;
-Ljava/util/stream/StreamOpFlag$Type;->valueOf(Ljava/lang/String;)Ljava/util/stream/StreamOpFlag$Type;
-Ljava/util/stream/StreamOpFlag$Type;->values()[Ljava/util/stream/StreamOpFlag$Type;
-Ljava/util/stream/StreamOpFlag;->bitPosition:I
-Ljava/util/stream/StreamOpFlag;->canSet(Ljava/util/stream/StreamOpFlag$Type;)Z
-Ljava/util/stream/StreamOpFlag;->clear()I
-Ljava/util/stream/StreamOpFlag;->clear:I
-Ljava/util/stream/StreamOpFlag;->CLEAR_BITS:I
-Ljava/util/stream/StreamOpFlag;->combineOpFlags(II)I
-Ljava/util/stream/StreamOpFlag;->createFlagMask()I
-Ljava/util/stream/StreamOpFlag;->createMask(Ljava/util/stream/StreamOpFlag$Type;)I
-Ljava/util/stream/StreamOpFlag;->DISTINCT:Ljava/util/stream/StreamOpFlag;
-Ljava/util/stream/StreamOpFlag;->FLAG_MASK:I
-Ljava/util/stream/StreamOpFlag;->FLAG_MASK_IS:I
-Ljava/util/stream/StreamOpFlag;->FLAG_MASK_NOT:I
-Ljava/util/stream/StreamOpFlag;->fromCharacteristics(I)I
-Ljava/util/stream/StreamOpFlag;->fromCharacteristics(Ljava/util/Spliterator;)I
-Ljava/util/stream/StreamOpFlag;->getMask(I)I
-Ljava/util/stream/StreamOpFlag;->INITIAL_OPS_VALUE:I
-Ljava/util/stream/StreamOpFlag;->isCleared(I)Z
-Ljava/util/stream/StreamOpFlag;->isKnown(I)Z
-Ljava/util/stream/StreamOpFlag;->isPreserved(I)Z
-Ljava/util/stream/StreamOpFlag;->isStreamFlag()Z
-Ljava/util/stream/StreamOpFlag;->IS_DISTINCT:I
-Ljava/util/stream/StreamOpFlag;->IS_ORDERED:I
-Ljava/util/stream/StreamOpFlag;->IS_SHORT_CIRCUIT:I
-Ljava/util/stream/StreamOpFlag;->IS_SIZED:I
-Ljava/util/stream/StreamOpFlag;->IS_SORTED:I
-Ljava/util/stream/StreamOpFlag;->maskTable:Ljava/util/Map;
-Ljava/util/stream/StreamOpFlag;->NOT_DISTINCT:I
-Ljava/util/stream/StreamOpFlag;->NOT_ORDERED:I
-Ljava/util/stream/StreamOpFlag;->NOT_SIZED:I
-Ljava/util/stream/StreamOpFlag;->NOT_SORTED:I
-Ljava/util/stream/StreamOpFlag;->OP_MASK:I
-Ljava/util/stream/StreamOpFlag;->ORDERED:Ljava/util/stream/StreamOpFlag;
-Ljava/util/stream/StreamOpFlag;->preserve:I
-Ljava/util/stream/StreamOpFlag;->PRESERVE_BITS:I
-Ljava/util/stream/StreamOpFlag;->set()I
-Ljava/util/stream/StreamOpFlag;->set(Ljava/util/stream/StreamOpFlag$Type;)Ljava/util/stream/StreamOpFlag$MaskBuilder;
-Ljava/util/stream/StreamOpFlag;->set:I
-Ljava/util/stream/StreamOpFlag;->SET_BITS:I
-Ljava/util/stream/StreamOpFlag;->SHORT_CIRCUIT:Ljava/util/stream/StreamOpFlag;
-Ljava/util/stream/StreamOpFlag;->SIZED:Ljava/util/stream/StreamOpFlag;
-Ljava/util/stream/StreamOpFlag;->SORTED:Ljava/util/stream/StreamOpFlag;
-Ljava/util/stream/StreamOpFlag;->SPLITERATOR_CHARACTERISTICS_MASK:I
-Ljava/util/stream/StreamOpFlag;->STREAM_MASK:I
-Ljava/util/stream/StreamOpFlag;->TERMINAL_OP_MASK:I
-Ljava/util/stream/StreamOpFlag;->toCharacteristics(I)I
-Ljava/util/stream/StreamOpFlag;->toStreamFlags(I)I
-Ljava/util/stream/StreamOpFlag;->UPSTREAM_TERMINAL_OP_MASK:I
-Ljava/util/stream/StreamOpFlag;->valueOf(Ljava/lang/String;)Ljava/util/stream/StreamOpFlag;
-Ljava/util/stream/StreamOpFlag;->values()[Ljava/util/stream/StreamOpFlag;
-Ljava/util/stream/StreamShape;->DOUBLE_VALUE:Ljava/util/stream/StreamShape;
-Ljava/util/stream/StreamShape;->INT_VALUE:Ljava/util/stream/StreamShape;
-Ljava/util/stream/StreamShape;->LONG_VALUE:Ljava/util/stream/StreamShape;
-Ljava/util/stream/StreamShape;->REFERENCE:Ljava/util/stream/StreamShape;
-Ljava/util/stream/StreamShape;->valueOf(Ljava/lang/String;)Ljava/util/stream/StreamShape;
-Ljava/util/stream/StreamShape;->values()[Ljava/util/stream/StreamShape;
-Ljava/util/stream/StreamSupport;-><init>()V
-Ljava/util/stream/TerminalOp;->evaluateParallel(Ljava/util/stream/PipelineHelper;Ljava/util/Spliterator;)Ljava/lang/Object;
-Ljava/util/stream/TerminalOp;->evaluateSequential(Ljava/util/stream/PipelineHelper;Ljava/util/Spliterator;)Ljava/lang/Object;
-Ljava/util/stream/TerminalOp;->getOpFlags()I
-Ljava/util/stream/TerminalOp;->inputShape()Ljava/util/stream/StreamShape;
-Ljava/util/StringJoiner;->delimiter:Ljava/lang/String;
-Ljava/util/StringJoiner;->emptyValue:Ljava/lang/String;
-Ljava/util/StringJoiner;->prefix:Ljava/lang/String;
-Ljava/util/StringJoiner;->prepareBuilder()Ljava/lang/StringBuilder;
-Ljava/util/StringJoiner;->suffix:Ljava/lang/String;
-Ljava/util/StringJoiner;->value:Ljava/lang/StringBuilder;
-Ljava/util/StringTokenizer;->currentPosition:I
-Ljava/util/StringTokenizer;->delimiterCodePoints:[I
-Ljava/util/StringTokenizer;->delimiters:Ljava/lang/String;
-Ljava/util/StringTokenizer;->delimsChanged:Z
-Ljava/util/StringTokenizer;->hasSurrogates:Z
-Ljava/util/StringTokenizer;->isDelimiter(I)Z
-Ljava/util/StringTokenizer;->maxDelimCodePoint:I
-Ljava/util/StringTokenizer;->maxPosition:I
-Ljava/util/StringTokenizer;->newPosition:I
-Ljava/util/StringTokenizer;->retDelims:Z
-Ljava/util/StringTokenizer;->scanToken(I)I
-Ljava/util/StringTokenizer;->setMaxDelimCodePoint()V
-Ljava/util/StringTokenizer;->skipDelimiters(I)I
-Ljava/util/StringTokenizer;->str:Ljava/lang/String;
-Ljava/util/TaskQueue;-><init>()V
-Ljava/util/TaskQueue;->add(Ljava/util/TimerTask;)V
-Ljava/util/TaskQueue;->clear()V
-Ljava/util/TaskQueue;->fixDown(I)V
-Ljava/util/TaskQueue;->fixUp(I)V
-Ljava/util/TaskQueue;->get(I)Ljava/util/TimerTask;
-Ljava/util/TaskQueue;->getMin()Ljava/util/TimerTask;
-Ljava/util/TaskQueue;->heapify()V
-Ljava/util/TaskQueue;->isEmpty()Z
-Ljava/util/TaskQueue;->queue:[Ljava/util/TimerTask;
-Ljava/util/TaskQueue;->quickRemove(I)V
-Ljava/util/TaskQueue;->removeMin()V
-Ljava/util/TaskQueue;->rescheduleMin(J)V
-Ljava/util/TaskQueue;->size()I
-Ljava/util/TaskQueue;->size:I
-Ljava/util/Timer;->nextSerialNumber:Ljava/util/concurrent/atomic/AtomicInteger;
-Ljava/util/Timer;->queue:Ljava/util/TaskQueue;
-Ljava/util/Timer;->sched(Ljava/util/TimerTask;JJ)V
-Ljava/util/Timer;->serialNumber()I
-Ljava/util/Timer;->thread:Ljava/util/TimerThread;
-Ljava/util/Timer;->threadReaper:Ljava/lang/Object;
-Ljava/util/TimerTask;->CANCELLED:I
-Ljava/util/TimerTask;->EXECUTED:I
-Ljava/util/TimerTask;->lock:Ljava/lang/Object;
-Ljava/util/TimerTask;->nextExecutionTime:J
-Ljava/util/TimerTask;->SCHEDULED:I
-Ljava/util/TimerTask;->state:I
-Ljava/util/TimerTask;->VIRGIN:I
-Ljava/util/TimerThread;-><init>(Ljava/util/TaskQueue;)V
-Ljava/util/TimerThread;->mainLoop()V
-Ljava/util/TimerThread;->newTasksMayBeScheduled:Z
-Ljava/util/TimerThread;->queue:Ljava/util/TaskQueue;
-Ljava/util/TimeZone$NoImagePreloadHolder;-><init>()V
-Ljava/util/TimeZone$NoImagePreloadHolder;->CUSTOM_ZONE_ID_PATTERN:Ljava/util/regex/Pattern;
-Ljava/util/TimeZone;->appendNumber(Ljava/lang/StringBuilder;II)V
-Ljava/util/TimeZone;->createGmtOffsetString(ZZI)Ljava/lang/String;
-Ljava/util/TimeZone;->defaultTimeZone:Ljava/util/TimeZone;
-Ljava/util/TimeZone;->getCustomTimeZone(Ljava/lang/String;)Ljava/util/TimeZone;
-Ljava/util/TimeZone;->getDefaultRef()Ljava/util/TimeZone;
-Ljava/util/TimeZone;->getOffsets(J[I)I
-Ljava/util/TimeZone;->getSystemGMTOffsetID()Ljava/lang/String;
-Ljava/util/TimeZone;->getSystemTimeZoneID(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
-Ljava/util/TimeZone;->GMT:Ljava/util/TimeZone;
-Ljava/util/TimeZone;->ID:Ljava/lang/String;
-Ljava/util/TimeZone;->NO_TIMEZONE:Ljava/util/TimeZone;
-Ljava/util/TimeZone;->UTC:Ljava/util/TimeZone;
-Ljava/util/TreeMap$AscendingSubMap;-><init>(Ljava/util/TreeMap;ZLjava/lang/Object;ZZLjava/lang/Object;Z)V
-Ljava/util/TreeMap$AscendingSubMap;->descendingKeyIterator()Ljava/util/Iterator;
-Ljava/util/TreeMap$AscendingSubMap;->keyIterator()Ljava/util/Iterator;
-Ljava/util/TreeMap$AscendingSubMap;->keySpliterator()Ljava/util/Spliterator;
-Ljava/util/TreeMap$AscendingSubMap;->subCeiling(Ljava/lang/Object;)Ljava/util/TreeMap$TreeMapEntry;
-Ljava/util/TreeMap$AscendingSubMap;->subFloor(Ljava/lang/Object;)Ljava/util/TreeMap$TreeMapEntry;
-Ljava/util/TreeMap$AscendingSubMap;->subHigher(Ljava/lang/Object;)Ljava/util/TreeMap$TreeMapEntry;
-Ljava/util/TreeMap$AscendingSubMap;->subHighest()Ljava/util/TreeMap$TreeMapEntry;
-Ljava/util/TreeMap$AscendingSubMap;->subLower(Ljava/lang/Object;)Ljava/util/TreeMap$TreeMapEntry;
-Ljava/util/TreeMap$AscendingSubMap;->subLowest()Ljava/util/TreeMap$TreeMapEntry;
-Ljava/util/TreeMap$DescendingKeySpliterator;-><init>(Ljava/util/TreeMap;Ljava/util/TreeMap$TreeMapEntry;Ljava/util/TreeMap$TreeMapEntry;III)V
-Ljava/util/TreeMap$DescendingKeySpliterator;->forEachRemaining(Ljava/util/function/Consumer;)V
-Ljava/util/TreeMap$DescendingKeySpliterator;->tryAdvance(Ljava/util/function/Consumer;)Z
-Ljava/util/TreeMap$DescendingSubMap;-><init>(Ljava/util/TreeMap;ZLjava/lang/Object;ZZLjava/lang/Object;Z)V
-Ljava/util/TreeMap$DescendingSubMap;->descendingKeyIterator()Ljava/util/Iterator;
-Ljava/util/TreeMap$DescendingSubMap;->keyIterator()Ljava/util/Iterator;
-Ljava/util/TreeMap$DescendingSubMap;->keySpliterator()Ljava/util/Spliterator;
-Ljava/util/TreeMap$DescendingSubMap;->reverseComparator:Ljava/util/Comparator;
-Ljava/util/TreeMap$DescendingSubMap;->subCeiling(Ljava/lang/Object;)Ljava/util/TreeMap$TreeMapEntry;
-Ljava/util/TreeMap$DescendingSubMap;->subFloor(Ljava/lang/Object;)Ljava/util/TreeMap$TreeMapEntry;
-Ljava/util/TreeMap$DescendingSubMap;->subHigher(Ljava/lang/Object;)Ljava/util/TreeMap$TreeMapEntry;
-Ljava/util/TreeMap$DescendingSubMap;->subHighest()Ljava/util/TreeMap$TreeMapEntry;
-Ljava/util/TreeMap$DescendingSubMap;->subLower(Ljava/lang/Object;)Ljava/util/TreeMap$TreeMapEntry;
-Ljava/util/TreeMap$DescendingSubMap;->subLowest()Ljava/util/TreeMap$TreeMapEntry;
-Ljava/util/TreeMap$EntrySpliterator;-><init>(Ljava/util/TreeMap;Ljava/util/TreeMap$TreeMapEntry;Ljava/util/TreeMap$TreeMapEntry;III)V
-Ljava/util/TreeMap$EntrySpliterator;->forEachRemaining(Ljava/util/function/Consumer;)V
-Ljava/util/TreeMap$EntrySpliterator;->tryAdvance(Ljava/util/function/Consumer;)Z
-Ljava/util/TreeMap$KeySet;-><init>(Ljava/util/NavigableMap;)V
-Ljava/util/TreeMap$KeySet;->m:Ljava/util/NavigableMap;
-Ljava/util/TreeMap$KeySpliterator;-><init>(Ljava/util/TreeMap;Ljava/util/TreeMap$TreeMapEntry;Ljava/util/TreeMap$TreeMapEntry;III)V
-Ljava/util/TreeMap$KeySpliterator;->forEachRemaining(Ljava/util/function/Consumer;)V
-Ljava/util/TreeMap$KeySpliterator;->tryAdvance(Ljava/util/function/Consumer;)Z
-Ljava/util/TreeMap$NavigableSubMap$DescendingSubMapKeyIterator;->forEachRemaining(Ljava/util/function/Consumer;)V
-Ljava/util/TreeMap$NavigableSubMap$DescendingSubMapKeyIterator;->tryAdvance(Ljava/util/function/Consumer;)Z
-Ljava/util/TreeMap$NavigableSubMap$EntrySetView;->size:I
-Ljava/util/TreeMap$NavigableSubMap$EntrySetView;->sizeModCount:I
-Ljava/util/TreeMap$NavigableSubMap$SubMapIterator;->expectedModCount:I
-Ljava/util/TreeMap$NavigableSubMap$SubMapIterator;->fenceKey:Ljava/lang/Object;
-Ljava/util/TreeMap$NavigableSubMap$SubMapIterator;->lastReturned:Ljava/util/TreeMap$TreeMapEntry;
-Ljava/util/TreeMap$NavigableSubMap$SubMapIterator;->next:Ljava/util/TreeMap$TreeMapEntry;
-Ljava/util/TreeMap$NavigableSubMap$SubMapIterator;->nextEntry()Ljava/util/TreeMap$TreeMapEntry;
-Ljava/util/TreeMap$NavigableSubMap$SubMapIterator;->prevEntry()Ljava/util/TreeMap$TreeMapEntry;
-Ljava/util/TreeMap$NavigableSubMap$SubMapIterator;->removeAscending()V
-Ljava/util/TreeMap$NavigableSubMap$SubMapIterator;->removeDescending()V
-Ljava/util/TreeMap$NavigableSubMap$SubMapKeyIterator;->forEachRemaining(Ljava/util/function/Consumer;)V
-Ljava/util/TreeMap$NavigableSubMap$SubMapKeyIterator;->tryAdvance(Ljava/util/function/Consumer;)Z
-Ljava/util/TreeMap$NavigableSubMap;-><init>(Ljava/util/TreeMap;ZLjava/lang/Object;ZZLjava/lang/Object;Z)V
-Ljava/util/TreeMap$NavigableSubMap;->absCeiling(Ljava/lang/Object;)Ljava/util/TreeMap$TreeMapEntry;
-Ljava/util/TreeMap$NavigableSubMap;->absFloor(Ljava/lang/Object;)Ljava/util/TreeMap$TreeMapEntry;
-Ljava/util/TreeMap$NavigableSubMap;->absHigher(Ljava/lang/Object;)Ljava/util/TreeMap$TreeMapEntry;
-Ljava/util/TreeMap$NavigableSubMap;->absHighest()Ljava/util/TreeMap$TreeMapEntry;
-Ljava/util/TreeMap$NavigableSubMap;->absHighFence()Ljava/util/TreeMap$TreeMapEntry;
-Ljava/util/TreeMap$NavigableSubMap;->absLower(Ljava/lang/Object;)Ljava/util/TreeMap$TreeMapEntry;
-Ljava/util/TreeMap$NavigableSubMap;->absLowest()Ljava/util/TreeMap$TreeMapEntry;
-Ljava/util/TreeMap$NavigableSubMap;->absLowFence()Ljava/util/TreeMap$TreeMapEntry;
-Ljava/util/TreeMap$NavigableSubMap;->descendingKeyIterator()Ljava/util/Iterator;
-Ljava/util/TreeMap$NavigableSubMap;->descendingMapView:Ljava/util/NavigableMap;
-Ljava/util/TreeMap$NavigableSubMap;->entrySetView:Ljava/util/TreeMap$NavigableSubMap$EntrySetView;
-Ljava/util/TreeMap$NavigableSubMap;->fromStart:Z
-Ljava/util/TreeMap$NavigableSubMap;->hi:Ljava/lang/Object;
-Ljava/util/TreeMap$NavigableSubMap;->hiInclusive:Z
-Ljava/util/TreeMap$NavigableSubMap;->inClosedRange(Ljava/lang/Object;)Z
-Ljava/util/TreeMap$NavigableSubMap;->inRange(Ljava/lang/Object;)Z
-Ljava/util/TreeMap$NavigableSubMap;->inRange(Ljava/lang/Object;Z)Z
-Ljava/util/TreeMap$NavigableSubMap;->keyIterator()Ljava/util/Iterator;
-Ljava/util/TreeMap$NavigableSubMap;->keySpliterator()Ljava/util/Spliterator;
-Ljava/util/TreeMap$NavigableSubMap;->lo:Ljava/lang/Object;
-Ljava/util/TreeMap$NavigableSubMap;->loInclusive:Z
-Ljava/util/TreeMap$NavigableSubMap;->m:Ljava/util/TreeMap;
-Ljava/util/TreeMap$NavigableSubMap;->navigableKeySetView:Ljava/util/TreeMap$KeySet;
-Ljava/util/TreeMap$NavigableSubMap;->subCeiling(Ljava/lang/Object;)Ljava/util/TreeMap$TreeMapEntry;
-Ljava/util/TreeMap$NavigableSubMap;->subFloor(Ljava/lang/Object;)Ljava/util/TreeMap$TreeMapEntry;
-Ljava/util/TreeMap$NavigableSubMap;->subHigher(Ljava/lang/Object;)Ljava/util/TreeMap$TreeMapEntry;
-Ljava/util/TreeMap$NavigableSubMap;->subHighest()Ljava/util/TreeMap$TreeMapEntry;
-Ljava/util/TreeMap$NavigableSubMap;->subLower(Ljava/lang/Object;)Ljava/util/TreeMap$TreeMapEntry;
-Ljava/util/TreeMap$NavigableSubMap;->subLowest()Ljava/util/TreeMap$TreeMapEntry;
-Ljava/util/TreeMap$NavigableSubMap;->toEnd:Z
-Ljava/util/TreeMap$NavigableSubMap;->tooHigh(Ljava/lang/Object;)Z
-Ljava/util/TreeMap$NavigableSubMap;->tooLow(Ljava/lang/Object;)Z
-Ljava/util/TreeMap$PrivateEntryIterator;->expectedModCount:I
-Ljava/util/TreeMap$PrivateEntryIterator;->lastReturned:Ljava/util/TreeMap$TreeMapEntry;
-Ljava/util/TreeMap$PrivateEntryIterator;->next:Ljava/util/TreeMap$TreeMapEntry;
-Ljava/util/TreeMap$PrivateEntryIterator;->nextEntry()Ljava/util/TreeMap$TreeMapEntry;
-Ljava/util/TreeMap$PrivateEntryIterator;->prevEntry()Ljava/util/TreeMap$TreeMapEntry;
-Ljava/util/TreeMap$SubMap;->fromKey:Ljava/lang/Object;
-Ljava/util/TreeMap$SubMap;->fromStart:Z
-Ljava/util/TreeMap$SubMap;->toEnd:Z
-Ljava/util/TreeMap$SubMap;->toKey:Ljava/lang/Object;
-Ljava/util/TreeMap$TreeMapEntry;-><init>(Ljava/lang/Object;Ljava/lang/Object;Ljava/util/TreeMap$TreeMapEntry;)V
-Ljava/util/TreeMap$TreeMapEntry;->color:Z
-Ljava/util/TreeMap$TreeMapEntry;->key:Ljava/lang/Object;
-Ljava/util/TreeMap$TreeMapEntry;->left:Ljava/util/TreeMap$TreeMapEntry;
-Ljava/util/TreeMap$TreeMapEntry;->parent:Ljava/util/TreeMap$TreeMapEntry;
-Ljava/util/TreeMap$TreeMapEntry;->right:Ljava/util/TreeMap$TreeMapEntry;
-Ljava/util/TreeMap$TreeMapEntry;->value:Ljava/lang/Object;
-Ljava/util/TreeMap$TreeMapSpliterator;-><init>(Ljava/util/TreeMap;Ljava/util/TreeMap$TreeMapEntry;Ljava/util/TreeMap$TreeMapEntry;III)V
-Ljava/util/TreeMap$TreeMapSpliterator;->current:Ljava/util/TreeMap$TreeMapEntry;
-Ljava/util/TreeMap$TreeMapSpliterator;->est:I
-Ljava/util/TreeMap$TreeMapSpliterator;->estimateSize()J
-Ljava/util/TreeMap$TreeMapSpliterator;->expectedModCount:I
-Ljava/util/TreeMap$TreeMapSpliterator;->fence:Ljava/util/TreeMap$TreeMapEntry;
-Ljava/util/TreeMap$TreeMapSpliterator;->getEstimate()I
-Ljava/util/TreeMap$TreeMapSpliterator;->side:I
-Ljava/util/TreeMap$TreeMapSpliterator;->tree:Ljava/util/TreeMap;
-Ljava/util/TreeMap$ValueSpliterator;-><init>(Ljava/util/TreeMap;Ljava/util/TreeMap$TreeMapEntry;Ljava/util/TreeMap$TreeMapEntry;III)V
-Ljava/util/TreeMap$ValueSpliterator;->forEachRemaining(Ljava/util/function/Consumer;)V
-Ljava/util/TreeMap$ValueSpliterator;->tryAdvance(Ljava/util/function/Consumer;)Z
-Ljava/util/TreeMap;->addAllForTreeSet(Ljava/util/SortedSet;Ljava/lang/Object;)V
-Ljava/util/TreeMap;->BLACK:Z
-Ljava/util/TreeMap;->buildFromSorted(IIIILjava/util/Iterator;Ljava/io/ObjectInputStream;Ljava/lang/Object;)Ljava/util/TreeMap$TreeMapEntry;
-Ljava/util/TreeMap;->buildFromSorted(ILjava/util/Iterator;Ljava/io/ObjectInputStream;Ljava/lang/Object;)V
-Ljava/util/TreeMap;->colorOf(Ljava/util/TreeMap$TreeMapEntry;)Z
-Ljava/util/TreeMap;->comparator:Ljava/util/Comparator;
-Ljava/util/TreeMap;->compare(Ljava/lang/Object;Ljava/lang/Object;)I
-Ljava/util/TreeMap;->computeRedLevel(I)I
-Ljava/util/TreeMap;->deleteEntry(Ljava/util/TreeMap$TreeMapEntry;)V
-Ljava/util/TreeMap;->descendingKeyIterator()Ljava/util/Iterator;
-Ljava/util/TreeMap;->descendingKeySpliterator()Ljava/util/Spliterator;
-Ljava/util/TreeMap;->descendingMap:Ljava/util/NavigableMap;
-Ljava/util/TreeMap;->entrySet:Ljava/util/TreeMap$EntrySet;
-Ljava/util/TreeMap;->exportEntry(Ljava/util/TreeMap$TreeMapEntry;)Ljava/util/Map$Entry;
-Ljava/util/TreeMap;->fixAfterDeletion(Ljava/util/TreeMap$TreeMapEntry;)V
-Ljava/util/TreeMap;->fixAfterInsertion(Ljava/util/TreeMap$TreeMapEntry;)V
-Ljava/util/TreeMap;->getCeilingEntry(Ljava/lang/Object;)Ljava/util/TreeMap$TreeMapEntry;
-Ljava/util/TreeMap;->getEntry(Ljava/lang/Object;)Ljava/util/TreeMap$TreeMapEntry;
-Ljava/util/TreeMap;->getEntryUsingComparator(Ljava/lang/Object;)Ljava/util/TreeMap$TreeMapEntry;
-Ljava/util/TreeMap;->getFirstEntry()Ljava/util/TreeMap$TreeMapEntry;
-Ljava/util/TreeMap;->getFloorEntry(Ljava/lang/Object;)Ljava/util/TreeMap$TreeMapEntry;
-Ljava/util/TreeMap;->getHigherEntry(Ljava/lang/Object;)Ljava/util/TreeMap$TreeMapEntry;
-Ljava/util/TreeMap;->getLastEntry()Ljava/util/TreeMap$TreeMapEntry;
-Ljava/util/TreeMap;->getLowerEntry(Ljava/lang/Object;)Ljava/util/TreeMap$TreeMapEntry;
-Ljava/util/TreeMap;->key(Ljava/util/TreeMap$TreeMapEntry;)Ljava/lang/Object;
-Ljava/util/TreeMap;->keyIterator()Ljava/util/Iterator;
-Ljava/util/TreeMap;->keyOrNull(Ljava/util/TreeMap$TreeMapEntry;)Ljava/lang/Object;
-Ljava/util/TreeMap;->keySpliterator()Ljava/util/Spliterator;
-Ljava/util/TreeMap;->keySpliteratorFor(Ljava/util/NavigableMap;)Ljava/util/Spliterator;
-Ljava/util/TreeMap;->leftOf(Ljava/util/TreeMap$TreeMapEntry;)Ljava/util/TreeMap$TreeMapEntry;
-Ljava/util/TreeMap;->modCount:I
-Ljava/util/TreeMap;->navigableKeySet:Ljava/util/TreeMap$KeySet;
-Ljava/util/TreeMap;->parentOf(Ljava/util/TreeMap$TreeMapEntry;)Ljava/util/TreeMap$TreeMapEntry;
-Ljava/util/TreeMap;->predecessor(Ljava/util/TreeMap$TreeMapEntry;)Ljava/util/TreeMap$TreeMapEntry;
-Ljava/util/TreeMap;->readTreeSet(ILjava/io/ObjectInputStream;Ljava/lang/Object;)V
-Ljava/util/TreeMap;->RED:Z
-Ljava/util/TreeMap;->rightOf(Ljava/util/TreeMap$TreeMapEntry;)Ljava/util/TreeMap$TreeMapEntry;
-Ljava/util/TreeMap;->root:Ljava/util/TreeMap$TreeMapEntry;
-Ljava/util/TreeMap;->rotateLeft(Ljava/util/TreeMap$TreeMapEntry;)V
-Ljava/util/TreeMap;->rotateRight(Ljava/util/TreeMap$TreeMapEntry;)V
-Ljava/util/TreeMap;->setColor(Ljava/util/TreeMap$TreeMapEntry;Z)V
-Ljava/util/TreeMap;->size:I
-Ljava/util/TreeMap;->successor(Ljava/util/TreeMap$TreeMapEntry;)Ljava/util/TreeMap$TreeMapEntry;
-Ljava/util/TreeMap;->UNBOUNDED:Ljava/lang/Object;
-Ljava/util/TreeMap;->valEquals(Ljava/lang/Object;Ljava/lang/Object;)Z
-Ljava/util/TreeSet;-><init>(Ljava/util/NavigableMap;)V
-Ljava/util/TreeSet;->m:Ljava/util/NavigableMap;
-Ljava/util/TreeSet;->PRESENT:Ljava/lang/Object;
-Ljava/util/UnknownFormatConversionException;->s:Ljava/lang/String;
-Ljava/util/UnknownFormatFlagsException;->flags:Ljava/lang/String;
-Ljava/util/UUID$Holder;-><init>()V
-Ljava/util/UUID$Holder;->numberGenerator:Ljava/security/SecureRandom;
-Ljava/util/UUID;-><init>([B)V
-Ljava/util/UUID;->digits(JI)Ljava/lang/String;
-Ljava/util/Vector$Itr;->checkForComodification()V
-Ljava/util/Vector$Itr;->cursor:I
-Ljava/util/Vector$Itr;->expectedModCount:I
-Ljava/util/Vector$Itr;->lastRet:I
-Ljava/util/Vector$Itr;->limit:I
-Ljava/util/Vector$VectorSpliterator;-><init>(Ljava/util/Vector;[Ljava/lang/Object;III)V
-Ljava/util/Vector$VectorSpliterator;->array:[Ljava/lang/Object;
-Ljava/util/Vector$VectorSpliterator;->expectedModCount:I
-Ljava/util/Vector$VectorSpliterator;->fence:I
-Ljava/util/Vector$VectorSpliterator;->forEachRemaining(Ljava/util/function/Consumer;)V
-Ljava/util/Vector$VectorSpliterator;->getFence()I
-Ljava/util/Vector$VectorSpliterator;->index:I
-Ljava/util/Vector$VectorSpliterator;->list:Ljava/util/Vector;
-Ljava/util/Vector$VectorSpliterator;->tryAdvance(Ljava/util/function/Consumer;)Z
-Ljava/util/Vector;->ensureCapacityHelper(I)V
-Ljava/util/Vector;->grow(I)V
-Ljava/util/Vector;->hugeCapacity(I)I
-Ljava/util/Vector;->MAX_ARRAY_SIZE:I
-Ljava/util/WeakHashMap$Entry;-><init>(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/ref/ReferenceQueue;ILjava/util/WeakHashMap$Entry;)V
-Ljava/util/WeakHashMap$Entry;->hash:I
-Ljava/util/WeakHashMap$Entry;->next:Ljava/util/WeakHashMap$Entry;
-Ljava/util/WeakHashMap$Entry;->value:Ljava/lang/Object;
-Ljava/util/WeakHashMap$EntrySet;->deepCopy()Ljava/util/List;
-Ljava/util/WeakHashMap$EntrySpliterator;-><init>(Ljava/util/WeakHashMap;IIII)V
-Ljava/util/WeakHashMap$EntrySpliterator;->forEachRemaining(Ljava/util/function/Consumer;)V
-Ljava/util/WeakHashMap$EntrySpliterator;->tryAdvance(Ljava/util/function/Consumer;)Z
-Ljava/util/WeakHashMap$HashIterator;->currentKey:Ljava/lang/Object;
-Ljava/util/WeakHashMap$HashIterator;->entry:Ljava/util/WeakHashMap$Entry;
-Ljava/util/WeakHashMap$HashIterator;->expectedModCount:I
-Ljava/util/WeakHashMap$HashIterator;->index:I
-Ljava/util/WeakHashMap$HashIterator;->lastReturned:Ljava/util/WeakHashMap$Entry;
-Ljava/util/WeakHashMap$HashIterator;->nextEntry()Ljava/util/WeakHashMap$Entry;
-Ljava/util/WeakHashMap$HashIterator;->nextKey:Ljava/lang/Object;
-Ljava/util/WeakHashMap$KeySpliterator;-><init>(Ljava/util/WeakHashMap;IIII)V
-Ljava/util/WeakHashMap$KeySpliterator;->forEachRemaining(Ljava/util/function/Consumer;)V
-Ljava/util/WeakHashMap$KeySpliterator;->tryAdvance(Ljava/util/function/Consumer;)Z
-Ljava/util/WeakHashMap$ValueSpliterator;-><init>(Ljava/util/WeakHashMap;IIII)V
-Ljava/util/WeakHashMap$ValueSpliterator;->forEachRemaining(Ljava/util/function/Consumer;)V
-Ljava/util/WeakHashMap$ValueSpliterator;->tryAdvance(Ljava/util/function/Consumer;)Z
-Ljava/util/WeakHashMap$WeakHashMapSpliterator;-><init>(Ljava/util/WeakHashMap;IIII)V
-Ljava/util/WeakHashMap$WeakHashMapSpliterator;->current:Ljava/util/WeakHashMap$Entry;
-Ljava/util/WeakHashMap$WeakHashMapSpliterator;->est:I
-Ljava/util/WeakHashMap$WeakHashMapSpliterator;->estimateSize()J
-Ljava/util/WeakHashMap$WeakHashMapSpliterator;->expectedModCount:I
-Ljava/util/WeakHashMap$WeakHashMapSpliterator;->fence:I
-Ljava/util/WeakHashMap$WeakHashMapSpliterator;->getFence()I
-Ljava/util/WeakHashMap$WeakHashMapSpliterator;->index:I
-Ljava/util/WeakHashMap$WeakHashMapSpliterator;->map:Ljava/util/WeakHashMap;
-Ljava/util/WeakHashMap;->containsNullValue()Z
-Ljava/util/WeakHashMap;->DEFAULT_INITIAL_CAPACITY:I
-Ljava/util/WeakHashMap;->DEFAULT_LOAD_FACTOR:F
-Ljava/util/WeakHashMap;->entrySet:Ljava/util/Set;
-Ljava/util/WeakHashMap;->eq(Ljava/lang/Object;Ljava/lang/Object;)Z
-Ljava/util/WeakHashMap;->expungeStaleEntries()V
-Ljava/util/WeakHashMap;->getEntry(Ljava/lang/Object;)Ljava/util/WeakHashMap$Entry;
-Ljava/util/WeakHashMap;->getTable()[Ljava/util/WeakHashMap$Entry;
-Ljava/util/WeakHashMap;->hash(Ljava/lang/Object;)I
-Ljava/util/WeakHashMap;->indexFor(II)I
-Ljava/util/WeakHashMap;->loadFactor:F
-Ljava/util/WeakHashMap;->maskNull(Ljava/lang/Object;)Ljava/lang/Object;
-Ljava/util/WeakHashMap;->MAXIMUM_CAPACITY:I
-Ljava/util/WeakHashMap;->modCount:I
-Ljava/util/WeakHashMap;->newTable(I)[Ljava/util/WeakHashMap$Entry;
-Ljava/util/WeakHashMap;->NULL_KEY:Ljava/lang/Object;
-Ljava/util/WeakHashMap;->queue:Ljava/lang/ref/ReferenceQueue;
-Ljava/util/WeakHashMap;->removeMapping(Ljava/lang/Object;)Z
-Ljava/util/WeakHashMap;->resize(I)V
-Ljava/util/WeakHashMap;->size:I
-Ljava/util/WeakHashMap;->table:[Ljava/util/WeakHashMap$Entry;
-Ljava/util/WeakHashMap;->threshold:I
-Ljava/util/WeakHashMap;->transfer([Ljava/util/WeakHashMap$Entry;[Ljava/util/WeakHashMap$Entry;)V
-Ljava/util/WeakHashMap;->unmaskNull(Ljava/lang/Object;)Ljava/lang/Object;
-Ljava/util/zip/Adler32;->adler:I
-Ljava/util/zip/Adler32;->updateByteBuffer(IJII)I
-Ljava/util/zip/Adler32;->updateBytes(I[BII)I
-Ljava/util/zip/CheckedInputStream;->cksum:Ljava/util/zip/Checksum;
-Ljava/util/zip/CheckedOutputStream;->cksum:Ljava/util/zip/Checksum;
-Ljava/util/zip/CRC32;->crc:I
-Ljava/util/zip/CRC32;->updateByteBuffer(IJII)I
-Ljava/util/zip/CRC32;->updateBytes(I[BII)I
-Ljava/util/zip/Deflater;->bytesRead:J
-Ljava/util/zip/Deflater;->bytesWritten:J
-Ljava/util/zip/Deflater;->deflateBytes(J[BIII)I
-Ljava/util/zip/Deflater;->end(J)V
-Ljava/util/zip/Deflater;->ensureOpen()V
-Ljava/util/zip/Deflater;->getAdler(J)I
-Ljava/util/zip/Deflater;->guard:Ldalvik/system/CloseGuard;
-Ljava/util/zip/Deflater;->init(IIZ)J
-Ljava/util/zip/Deflater;->reset(J)V
-Ljava/util/zip/Deflater;->setDictionary(J[BII)V
-Ljava/util/zip/Deflater;->zsRef:Ljava/util/zip/ZStreamRef;
-Ljava/util/zip/DeflaterInputStream;->ensureOpen()V
-Ljava/util/zip/DeflaterInputStream;->rbuf:[B
-Ljava/util/zip/DeflaterInputStream;->reachEOF:Z
-Ljava/util/zip/DeflaterInputStream;->usesDefaultDeflater:Z
-Ljava/util/zip/DeflaterOutputStream;->closed:Z
-Ljava/util/zip/DeflaterOutputStream;->syncFlush:Z
-Ljava/util/zip/DeflaterOutputStream;->usesDefaultDeflater:Z
-Ljava/util/zip/GZIPInputStream;->closed:Z
-Ljava/util/zip/GZIPInputStream;->ensureOpen()V
-Ljava/util/zip/GZIPInputStream;->FCOMMENT:I
-Ljava/util/zip/GZIPInputStream;->FEXTRA:I
-Ljava/util/zip/GZIPInputStream;->FHCRC:I
-Ljava/util/zip/GZIPInputStream;->FNAME:I
-Ljava/util/zip/GZIPInputStream;->FTEXT:I
-Ljava/util/zip/GZIPInputStream;->readHeader(Ljava/io/InputStream;)I
-Ljava/util/zip/GZIPInputStream;->readTrailer()Z
-Ljava/util/zip/GZIPInputStream;->readUByte(Ljava/io/InputStream;)I
-Ljava/util/zip/GZIPInputStream;->readUInt(Ljava/io/InputStream;)J
-Ljava/util/zip/GZIPInputStream;->readUShort(Ljava/io/InputStream;)I
-Ljava/util/zip/GZIPInputStream;->skipBytes(Ljava/io/InputStream;I)V
-Ljava/util/zip/GZIPInputStream;->tmpbuf:[B
-Ljava/util/zip/GZIPOutputStream;->GZIP_MAGIC:I
-Ljava/util/zip/GZIPOutputStream;->TRAILER_SIZE:I
-Ljava/util/zip/GZIPOutputStream;->writeHeader()V
-Ljava/util/zip/GZIPOutputStream;->writeInt(I[BI)V
-Ljava/util/zip/GZIPOutputStream;->writeShort(I[BI)V
-Ljava/util/zip/GZIPOutputStream;->writeTrailer([BI)V
-Ljava/util/zip/Inflater;->bytesRead:J
-Ljava/util/zip/Inflater;->bytesWritten:J
-Ljava/util/zip/Inflater;->defaultBuf:[B
-Ljava/util/zip/Inflater;->end(J)V
-Ljava/util/zip/Inflater;->ended()Z
-Ljava/util/zip/Inflater;->ensureOpen()V
-Ljava/util/zip/Inflater;->getAdler(J)I
-Ljava/util/zip/Inflater;->guard:Ldalvik/system/CloseGuard;
-Ljava/util/zip/Inflater;->inflateBytes(J[BII)I
-Ljava/util/zip/Inflater;->init(Z)J
-Ljava/util/zip/Inflater;->reset(J)V
-Ljava/util/zip/Inflater;->setDictionary(J[BII)V
-Ljava/util/zip/Inflater;->zsRef:Ljava/util/zip/ZStreamRef;
-Ljava/util/zip/InflaterInputStream;->b:[B
-Ljava/util/zip/InflaterInputStream;->ensureOpen()V
-Ljava/util/zip/InflaterInputStream;->reachEOF:Z
-Ljava/util/zip/InflaterInputStream;->singleByteBuf:[B
-Ljava/util/zip/InflaterOutputStream;->closed:Z
-Ljava/util/zip/InflaterOutputStream;->ensureOpen()V
-Ljava/util/zip/InflaterOutputStream;->usesDefaultInflater:Z
-Ljava/util/zip/InflaterOutputStream;->wbuf:[B
-Ljava/util/zip/ZipCoder;-><init>(Ljava/nio/charset/Charset;)V
-Ljava/util/zip/ZipCoder;->cs:Ljava/nio/charset/Charset;
-Ljava/util/zip/ZipCoder;->dec:Ljava/nio/charset/CharsetDecoder;
-Ljava/util/zip/ZipCoder;->decoder()Ljava/nio/charset/CharsetDecoder;
-Ljava/util/zip/ZipCoder;->enc:Ljava/nio/charset/CharsetEncoder;
-Ljava/util/zip/ZipCoder;->encoder()Ljava/nio/charset/CharsetEncoder;
-Ljava/util/zip/ZipCoder;->get(Ljava/nio/charset/Charset;)Ljava/util/zip/ZipCoder;
-Ljava/util/zip/ZipCoder;->getBytes(Ljava/lang/String;)[B
-Ljava/util/zip/ZipCoder;->getBytesUTF8(Ljava/lang/String;)[B
-Ljava/util/zip/ZipCoder;->isUTF8()Z
-Ljava/util/zip/ZipCoder;->isUTF8:Z
-Ljava/util/zip/ZipCoder;->toString([B)Ljava/lang/String;
-Ljava/util/zip/ZipCoder;->toString([BI)Ljava/lang/String;
-Ljava/util/zip/ZipCoder;->toStringUTF8([BI)Ljava/lang/String;
-Ljava/util/zip/ZipCoder;->utf8:Ljava/util/zip/ZipCoder;
-Ljava/util/zip/ZipEntry;-><init>()V
-Ljava/util/zip/ZipEntry;->atime:Ljava/nio/file/attribute/FileTime;
-Ljava/util/zip/ZipEntry;->comment:Ljava/lang/String;
-Ljava/util/zip/ZipEntry;->crc:J
-Ljava/util/zip/ZipEntry;->csize:J
-Ljava/util/zip/ZipEntry;->ctime:Ljava/nio/file/attribute/FileTime;
-Ljava/util/zip/ZipEntry;->dataOffset:J
-Ljava/util/zip/ZipEntry;->DOSTIME_BEFORE_1980:J
-Ljava/util/zip/ZipEntry;->extra:[B
-Ljava/util/zip/ZipEntry;->flag:I
-Ljava/util/zip/ZipEntry;->getDataOffset()J
-Ljava/util/zip/ZipEntry;->mtime:Ljava/nio/file/attribute/FileTime;
-Ljava/util/zip/ZipEntry;->name:Ljava/lang/String;
-Ljava/util/zip/ZipEntry;->setExtra0([BZ)V
-Ljava/util/zip/ZipEntry;->size:J
-Ljava/util/zip/ZipEntry;->UPPER_DOSTIME_BOUND:J
-Ljava/util/zip/ZipEntry;->xdostime:J
-Ljava/util/zip/ZipFile$ZipEntryIterator;->i:I
-Ljava/util/zip/ZipFile$ZipFileInflaterInputStream;->closeRequested:Z
-Ljava/util/zip/ZipFile$ZipFileInflaterInputStream;->eof:Z
-Ljava/util/zip/ZipFile$ZipFileInflaterInputStream;->zfin:Ljava/util/zip/ZipFile$ZipFileInputStream;
-Ljava/util/zip/ZipFile$ZipFileInputStream;->jzentry:J
-Ljava/util/zip/ZipFile$ZipFileInputStream;->pos:J
-Ljava/util/zip/ZipFile$ZipFileInputStream;->rem:J
-Ljava/util/zip/ZipFile$ZipFileInputStream;->size()J
-Ljava/util/zip/ZipFile$ZipFileInputStream;->size:J
-Ljava/util/zip/ZipFile$ZipFileInputStream;->zfisCloseRequested:Z
-Ljava/util/zip/ZipFile;->closeRequested:Z
-Ljava/util/zip/ZipFile;->DEFLATED:I
-Ljava/util/zip/ZipFile;->ensureOpen()V
-Ljava/util/zip/ZipFile;->ensureOpenOrZipException()V
-Ljava/util/zip/ZipFile;->fileToRemoveOnClose:Ljava/io/File;
-Ljava/util/zip/ZipFile;->freeEntry(JJ)V
-Ljava/util/zip/ZipFile;->getCommentBytes(J)[B
-Ljava/util/zip/ZipFile;->getEntryBytes(JI)[B
-Ljava/util/zip/ZipFile;->getEntryCrc(J)J
-Ljava/util/zip/ZipFile;->getEntryCSize(J)J
-Ljava/util/zip/ZipFile;->getEntryFlag(J)I
-Ljava/util/zip/ZipFile;->getEntryMethod(J)I
-Ljava/util/zip/ZipFile;->getEntrySize(J)J
-Ljava/util/zip/ZipFile;->getEntryTime(J)J
-Ljava/util/zip/ZipFile;->getFileDescriptor()I
-Ljava/util/zip/ZipFile;->getFileDescriptor(J)I
-Ljava/util/zip/ZipFile;->getInflater()Ljava/util/zip/Inflater;
-Ljava/util/zip/ZipFile;->getNextEntry(JI)J
-Ljava/util/zip/ZipFile;->getTotal(J)I
-Ljava/util/zip/ZipFile;->getZipEntry(Ljava/lang/String;J)Ljava/util/zip/ZipEntry;
-Ljava/util/zip/ZipFile;->getZipMessage(J)Ljava/lang/String;
-Ljava/util/zip/ZipFile;->guard:Ldalvik/system/CloseGuard;
-Ljava/util/zip/ZipFile;->inflaterCache:Ljava/util/Deque;
-Ljava/util/zip/ZipFile;->JZENTRY_COMMENT:I
-Ljava/util/zip/ZipFile;->JZENTRY_EXTRA:I
-Ljava/util/zip/ZipFile;->JZENTRY_NAME:I
-Ljava/util/zip/ZipFile;->locsig:Z
-Ljava/util/zip/ZipFile;->name:Ljava/lang/String;
-Ljava/util/zip/ZipFile;->open(Ljava/lang/String;IJZ)J
-Ljava/util/zip/ZipFile;->read(JJJ[BII)I
-Ljava/util/zip/ZipFile;->releaseInflater(Ljava/util/zip/Inflater;)V
-Ljava/util/zip/ZipFile;->startsWithLOC(J)Z
-Ljava/util/zip/ZipFile;->startsWithLocHeader()Z
-Ljava/util/zip/ZipFile;->STORED:I
-Ljava/util/zip/ZipFile;->streams:Ljava/util/Map;
-Ljava/util/zip/ZipFile;->total:I
-Ljava/util/zip/ZipFile;->usemmap:Z
-Ljava/util/zip/ZipFile;->zc:Ljava/util/zip/ZipCoder;
-Ljava/util/zip/ZipInputStream;->b:[B
-Ljava/util/zip/ZipInputStream;->closed:Z
-Ljava/util/zip/ZipInputStream;->crc:Ljava/util/zip/CRC32;
-Ljava/util/zip/ZipInputStream;->DEFLATED:I
-Ljava/util/zip/ZipInputStream;->ensureOpen()V
-Ljava/util/zip/ZipInputStream;->entry:Ljava/util/zip/ZipEntry;
-Ljava/util/zip/ZipInputStream;->entryEOF:Z
-Ljava/util/zip/ZipInputStream;->readEnd(Ljava/util/zip/ZipEntry;)V
-Ljava/util/zip/ZipInputStream;->readFully([BII)V
-Ljava/util/zip/ZipInputStream;->readLOC()Ljava/util/zip/ZipEntry;
-Ljava/util/zip/ZipInputStream;->remaining:J
-Ljava/util/zip/ZipInputStream;->STORED:I
-Ljava/util/zip/ZipInputStream;->zc:Ljava/util/zip/ZipCoder;
-Ljava/util/zip/ZipOutputStream$XEntry;-><init>(Ljava/util/zip/ZipEntry;J)V
-Ljava/util/zip/ZipOutputStream$XEntry;->entry:Ljava/util/zip/ZipEntry;
-Ljava/util/zip/ZipOutputStream$XEntry;->offset:J
-Ljava/util/zip/ZipOutputStream;->closed:Z
-Ljava/util/zip/ZipOutputStream;->comment:[B
-Ljava/util/zip/ZipOutputStream;->crc:Ljava/util/zip/CRC32;
-Ljava/util/zip/ZipOutputStream;->current:Ljava/util/zip/ZipOutputStream$XEntry;
-Ljava/util/zip/ZipOutputStream;->ensureOpen()V
-Ljava/util/zip/ZipOutputStream;->finished:Z
-Ljava/util/zip/ZipOutputStream;->getExtraLen([B)I
-Ljava/util/zip/ZipOutputStream;->inhibitZip64:Z
-Ljava/util/zip/ZipOutputStream;->locoff:J
-Ljava/util/zip/ZipOutputStream;->version(Ljava/util/zip/ZipEntry;)I
-Ljava/util/zip/ZipOutputStream;->writeByte(I)V
-Ljava/util/zip/ZipOutputStream;->writeBytes([BII)V
-Ljava/util/zip/ZipOutputStream;->writeCEN(Ljava/util/zip/ZipOutputStream$XEntry;)V
-Ljava/util/zip/ZipOutputStream;->writeEND(JJ)V
-Ljava/util/zip/ZipOutputStream;->writeEXT(Ljava/util/zip/ZipEntry;)V
-Ljava/util/zip/ZipOutputStream;->writeExtra([B)V
-Ljava/util/zip/ZipOutputStream;->writeInt(J)V
-Ljava/util/zip/ZipOutputStream;->writeLOC(Ljava/util/zip/ZipOutputStream$XEntry;)V
-Ljava/util/zip/ZipOutputStream;->writeLong(J)V
-Ljava/util/zip/ZipOutputStream;->writeShort(I)V
-Ljava/util/zip/ZipOutputStream;->xentries:Ljava/util/Vector;
-Ljava/util/zip/ZipOutputStream;->zc:Ljava/util/zip/ZipCoder;
-Ljava/util/zip/ZStreamRef;-><init>(J)V
-Ljava/util/zip/ZStreamRef;->address()J
-Ljava/util/zip/ZStreamRef;->address:J
-Ljava/util/zip/ZStreamRef;->clear()V
-Ljavax/crypto/Cipher$CipherSpiAndProvider;-><init>(Ljavax/crypto/CipherSpi;Ljava/security/Provider;)V
-Ljavax/crypto/Cipher$CipherSpiAndProvider;->cipherSpi:Ljavax/crypto/CipherSpi;
-Ljavax/crypto/Cipher$CipherSpiAndProvider;->provider:Ljava/security/Provider;
-Ljavax/crypto/Cipher$InitParams;-><init>(Ljavax/crypto/Cipher$InitType;ILjava/security/Key;Ljava/security/SecureRandom;Ljava/security/spec/AlgorithmParameterSpec;Ljava/security/AlgorithmParameters;)V
-Ljavax/crypto/Cipher$InitParams;->initType:Ljavax/crypto/Cipher$InitType;
-Ljavax/crypto/Cipher$InitParams;->key:Ljava/security/Key;
-Ljavax/crypto/Cipher$InitParams;->opmode:I
-Ljavax/crypto/Cipher$InitParams;->params:Ljava/security/AlgorithmParameters;
-Ljavax/crypto/Cipher$InitParams;->random:Ljava/security/SecureRandom;
-Ljavax/crypto/Cipher$InitParams;->spec:Ljava/security/spec/AlgorithmParameterSpec;
-Ljavax/crypto/Cipher$InitType;->ALGORITHM_PARAMS:Ljavax/crypto/Cipher$InitType;
-Ljavax/crypto/Cipher$InitType;->ALGORITHM_PARAM_SPEC:Ljavax/crypto/Cipher$InitType;
-Ljavax/crypto/Cipher$InitType;->KEY:Ljavax/crypto/Cipher$InitType;
-Ljavax/crypto/Cipher$InitType;->valueOf(Ljava/lang/String;)Ljavax/crypto/Cipher$InitType;
-Ljavax/crypto/Cipher$InitType;->values()[Ljavax/crypto/Cipher$InitType;
-Ljavax/crypto/Cipher$NeedToSet;->BOTH:Ljavax/crypto/Cipher$NeedToSet;
-Ljavax/crypto/Cipher$NeedToSet;->MODE:Ljavax/crypto/Cipher$NeedToSet;
-Ljavax/crypto/Cipher$NeedToSet;->NONE:Ljavax/crypto/Cipher$NeedToSet;
-Ljavax/crypto/Cipher$NeedToSet;->PADDING:Ljavax/crypto/Cipher$NeedToSet;
-Ljavax/crypto/Cipher$NeedToSet;->valueOf(Ljava/lang/String;)Ljavax/crypto/Cipher$NeedToSet;
-Ljavax/crypto/Cipher$NeedToSet;->values()[Ljavax/crypto/Cipher$NeedToSet;
-Ljavax/crypto/Cipher$SpiAndProviderUpdater;->getCurrentSpi(Ljavax/crypto/CipherSpi;)Ljavax/crypto/CipherSpi;
-Ljavax/crypto/Cipher$SpiAndProviderUpdater;->initSpiLock:Ljava/lang/Object;
-Ljavax/crypto/Cipher$SpiAndProviderUpdater;->setCipherSpiImplAndProvider(Ljavax/crypto/CipherSpi;Ljava/security/Provider;)V
-Ljavax/crypto/Cipher$SpiAndProviderUpdater;->specifiedProvider:Ljava/security/Provider;
-Ljavax/crypto/Cipher$SpiAndProviderUpdater;->specifiedSpi:Ljavax/crypto/CipherSpi;
-Ljavax/crypto/Cipher$SpiAndProviderUpdater;->updateAndGetSpiAndProvider(Ljavax/crypto/Cipher$InitParams;Ljavax/crypto/CipherSpi;Ljava/security/Provider;)Ljavax/crypto/Cipher$CipherSpiAndProvider;
-Ljavax/crypto/Cipher$SpiAndProviderUpdater;->updateAndGetSpiAndProvider(Ljavax/crypto/CipherSpi;Ljava/security/Provider;)Ljavax/crypto/Cipher$CipherSpiAndProvider;
-Ljavax/crypto/Cipher$Transform;-><init>(Ljava/lang/String;Ljavax/crypto/Cipher$NeedToSet;)V
-Ljavax/crypto/Cipher$Transform;->name:Ljava/lang/String;
-Ljavax/crypto/Cipher$Transform;->needToSet:Ljavax/crypto/Cipher$NeedToSet;
-Ljavax/crypto/Cipher;-><init>(Ljavax/crypto/CipherSpi;Ljava/security/Provider;Ljava/lang/String;[Ljava/lang/String;)V
-Ljavax/crypto/Cipher;->ATTRIBUTE_MODES:Ljava/lang/String;
-Ljavax/crypto/Cipher;->ATTRIBUTE_PADDINGS:Ljava/lang/String;
-Ljavax/crypto/Cipher;->checkCipherState()V
-Ljavax/crypto/Cipher;->checkOpmode(I)V
-Ljavax/crypto/Cipher;->chooseProvider(Ljavax/crypto/Cipher$InitType;ILjava/security/Key;Ljava/security/spec/AlgorithmParameterSpec;Ljava/security/AlgorithmParameters;Ljava/security/SecureRandom;)V
-Ljavax/crypto/Cipher;->createCipher(Ljava/lang/String;Ljava/security/Provider;)Ljavax/crypto/Cipher;
-Ljavax/crypto/Cipher;->exmech:Ljavax/crypto/ExemptionMechanism;
-Ljavax/crypto/Cipher;->getAlgorithmParameterSpec(Ljava/security/AlgorithmParameters;)Ljava/security/spec/AlgorithmParameterSpec;
-Ljavax/crypto/Cipher;->getCurrentSpi()Ljavax/crypto/CipherSpi;
-Ljavax/crypto/Cipher;->getOpmodeString(I)Ljava/lang/String;
-Ljavax/crypto/Cipher;->initialized:Z
-Ljavax/crypto/Cipher;->KEY_USAGE_EXTENSION_OID:Ljava/lang/String;
-Ljavax/crypto/Cipher;->matchAttribute(Ljava/security/Provider$Service;Ljava/lang/String;Ljava/lang/String;)Z
-Ljavax/crypto/Cipher;->opmode:I
-Ljavax/crypto/Cipher;->provider:Ljava/security/Provider;
-Ljavax/crypto/Cipher;->spi:Ljavax/crypto/CipherSpi;
-Ljavax/crypto/Cipher;->spiAndProviderUpdater:Ljavax/crypto/Cipher$SpiAndProviderUpdater;
-Ljavax/crypto/Cipher;->tokenizedTransformation:[Ljava/lang/String;
-Ljavax/crypto/Cipher;->tokenizeTransformation(Ljava/lang/String;)[Ljava/lang/String;
-Ljavax/crypto/Cipher;->transformation:Ljava/lang/String;
-Ljavax/crypto/Cipher;->tryCombinations(Ljavax/crypto/Cipher$InitParams;Ljava/security/Provider;[Ljava/lang/String;)Ljavax/crypto/Cipher$CipherSpiAndProvider;
-Ljavax/crypto/Cipher;->tryTransformWithProvider(Ljavax/crypto/Cipher$InitParams;[Ljava/lang/String;Ljavax/crypto/Cipher$NeedToSet;Ljava/security/Provider$Service;)Ljavax/crypto/Cipher$CipherSpiAndProvider;
-Ljavax/crypto/Cipher;->updateProviderIfNeeded()V
-Ljavax/crypto/CipherInputStream;->cipher:Ljavax/crypto/Cipher;
-Ljavax/crypto/CipherInputStream;->closed:Z
-Ljavax/crypto/CipherInputStream;->done:Z
-Ljavax/crypto/CipherInputStream;->getMoreData()I
-Ljavax/crypto/CipherInputStream;->ibuffer:[B
-Ljavax/crypto/CipherInputStream;->input:Ljava/io/InputStream;
-Ljavax/crypto/CipherInputStream;->obuffer:[B
-Ljavax/crypto/CipherInputStream;->ofinish:I
-Ljavax/crypto/CipherInputStream;->ostart:I
-Ljavax/crypto/CipherOutputStream;->cipher:Ljavax/crypto/Cipher;
-Ljavax/crypto/CipherOutputStream;->closed:Z
-Ljavax/crypto/CipherOutputStream;->ibuffer:[B
-Ljavax/crypto/CipherOutputStream;->obuffer:[B
-Ljavax/crypto/CipherOutputStream;->output:Ljava/io/OutputStream;
-Ljavax/crypto/CipherSpi;->bufferCrypt(Ljava/nio/ByteBuffer;Ljava/nio/ByteBuffer;Z)I
-Ljavax/crypto/CipherSpi;->getTempArraySize(I)I
-Ljavax/crypto/EncryptedPrivateKeyInfo;->algid:Lsun/security/x509/AlgorithmId;
-Ljavax/crypto/EncryptedPrivateKeyInfo;->checkPKCS8Encoding([B)V
-Ljavax/crypto/EncryptedPrivateKeyInfo;->checkTag(Lsun/security/util/DerValue;BLjava/lang/String;)V
-Ljavax/crypto/EncryptedPrivateKeyInfo;->encoded:[B
-Ljavax/crypto/EncryptedPrivateKeyInfo;->encryptedData:[B
-Ljavax/crypto/EncryptedPrivateKeyInfo;->getKeySpecImpl(Ljava/security/Key;Ljava/security/Provider;)Ljava/security/spec/PKCS8EncodedKeySpec;
-Ljavax/crypto/ExemptionMechanism;->done:Z
-Ljavax/crypto/ExemptionMechanism;->exmechSpi:Ljavax/crypto/ExemptionMechanismSpi;
-Ljavax/crypto/ExemptionMechanism;->initialized:Z
-Ljavax/crypto/ExemptionMechanism;->keyStored:Ljava/security/Key;
-Ljavax/crypto/ExemptionMechanism;->mechanism:Ljava/lang/String;
-Ljavax/crypto/ExemptionMechanism;->provider:Ljava/security/Provider;
-Ljavax/crypto/KeyAgreement;-><init>(Ljava/lang/String;)V
-Ljavax/crypto/KeyAgreement;->algorithm:Ljava/lang/String;
-Ljavax/crypto/KeyAgreement;->chooseFirstProvider()V
-Ljavax/crypto/KeyAgreement;->chooseProvider(ILjava/security/Key;Ljava/security/spec/AlgorithmParameterSpec;Ljava/security/SecureRandom;)V
-Ljavax/crypto/KeyAgreement;->implInit(Ljavax/crypto/KeyAgreementSpi;ILjava/security/Key;Ljava/security/spec/AlgorithmParameterSpec;Ljava/security/SecureRandom;)V
-Ljavax/crypto/KeyAgreement;->I_NO_PARAMS:I
-Ljavax/crypto/KeyAgreement;->I_PARAMS:I
-Ljavax/crypto/KeyAgreement;->lock:Ljava/lang/Object;
-Ljavax/crypto/KeyAgreement;->provider:Ljava/security/Provider;
-Ljavax/crypto/KeyAgreement;->spi:Ljavax/crypto/KeyAgreementSpi;
-Ljavax/crypto/KeyAgreement;->warnCount:I
-Ljavax/crypto/KeyGenerator;-><init>(Ljava/lang/String;)V
-Ljavax/crypto/KeyGenerator;->algorithm:Ljava/lang/String;
-Ljavax/crypto/KeyGenerator;->disableFailover()V
-Ljavax/crypto/KeyGenerator;->initKeySize:I
-Ljavax/crypto/KeyGenerator;->initParams:Ljava/security/spec/AlgorithmParameterSpec;
-Ljavax/crypto/KeyGenerator;->initRandom:Ljava/security/SecureRandom;
-Ljavax/crypto/KeyGenerator;->initType:I
-Ljavax/crypto/KeyGenerator;->I_NONE:I
-Ljavax/crypto/KeyGenerator;->I_PARAMS:I
-Ljavax/crypto/KeyGenerator;->I_RANDOM:I
-Ljavax/crypto/KeyGenerator;->I_SIZE:I
-Ljavax/crypto/KeyGenerator;->lock:Ljava/lang/Object;
-Ljavax/crypto/KeyGenerator;->nextSpi(Ljavax/crypto/KeyGeneratorSpi;Z)Ljavax/crypto/KeyGeneratorSpi;
-Ljavax/crypto/KeyGenerator;->provider:Ljava/security/Provider;
-Ljavax/crypto/KeyGenerator;->serviceIterator:Ljava/util/Iterator;
-Ljavax/crypto/KeyGenerator;->spi:Ljavax/crypto/KeyGeneratorSpi;
-Ljavax/crypto/Mac;-><init>(Ljava/lang/String;)V
-Ljavax/crypto/Mac;->algorithm:Ljava/lang/String;
-Ljavax/crypto/Mac;->chooseFirstProvider()V
-Ljavax/crypto/Mac;->chooseProvider(Ljava/security/Key;Ljava/security/spec/AlgorithmParameterSpec;)V
-Ljavax/crypto/Mac;->getCurrentSpi()Ljavax/crypto/MacSpi;
-Ljavax/crypto/Mac;->initialized:Z
-Ljavax/crypto/Mac;->lock:Ljava/lang/Object;
-Ljavax/crypto/Mac;->provider:Ljava/security/Provider;
-Ljavax/crypto/Mac;->spi:Ljavax/crypto/MacSpi;
-Ljavax/crypto/Mac;->warnCount:I
-Ljavax/crypto/SealedObject;->encryptedContent:[B
-Ljavax/crypto/SealedObject;->paramsAlg:Ljava/lang/String;
-Ljavax/crypto/SealedObject;->sealAlg:Ljava/lang/String;
-Ljavax/crypto/SealedObject;->unseal(Ljava/security/Key;Ljava/lang/String;)Ljava/lang/Object;
-Ljavax/crypto/SecretKeyFactory;-><init>(Ljava/lang/String;)V
-Ljavax/crypto/SecretKeyFactory;->algorithm:Ljava/lang/String;
-Ljavax/crypto/SecretKeyFactory;->lock:Ljava/lang/Object;
-Ljavax/crypto/SecretKeyFactory;->nextSpi(Ljavax/crypto/SecretKeyFactorySpi;)Ljavax/crypto/SecretKeyFactorySpi;
-Ljavax/crypto/SecretKeyFactory;->provider:Ljava/security/Provider;
-Ljavax/crypto/SecretKeyFactory;->serviceIterator:Ljava/util/Iterator;
-Ljavax/crypto/SecretKeyFactory;->spi:Ljavax/crypto/SecretKeyFactorySpi;
-Ljavax/crypto/spec/DESedeKeySpec;->key:[B
-Ljavax/crypto/spec/DESKeySpec;->key:[B
-Ljavax/crypto/spec/DESKeySpec;->WEAK_KEYS:[[B
-Ljavax/crypto/spec/DHGenParameterSpec;->exponentSize:I
-Ljavax/crypto/spec/DHGenParameterSpec;->primeSize:I
-Ljavax/crypto/spec/DHParameterSpec;->g:Ljava/math/BigInteger;
-Ljavax/crypto/spec/DHParameterSpec;->l:I
-Ljavax/crypto/spec/DHParameterSpec;->p:Ljava/math/BigInteger;
-Ljavax/crypto/spec/DHPrivateKeySpec;->g:Ljava/math/BigInteger;
-Ljavax/crypto/spec/DHPrivateKeySpec;->p:Ljava/math/BigInteger;
-Ljavax/crypto/spec/DHPrivateKeySpec;->x:Ljava/math/BigInteger;
-Ljavax/crypto/spec/DHPublicKeySpec;->g:Ljava/math/BigInteger;
-Ljavax/crypto/spec/DHPublicKeySpec;->p:Ljava/math/BigInteger;
-Ljavax/crypto/spec/DHPublicKeySpec;->y:Ljava/math/BigInteger;
-Ljavax/crypto/spec/GCMParameterSpec;->init(I[BII)V
-Ljavax/crypto/spec/GCMParameterSpec;->iv:[B
-Ljavax/crypto/spec/GCMParameterSpec;->tLen:I
-Ljavax/crypto/spec/IvParameterSpec;->iv:[B
-Ljavax/crypto/spec/OAEPParameterSpec;-><init>()V
-Ljavax/crypto/spec/OAEPParameterSpec;->mdName:Ljava/lang/String;
-Ljavax/crypto/spec/OAEPParameterSpec;->mgfName:Ljava/lang/String;
-Ljavax/crypto/spec/OAEPParameterSpec;->mgfSpec:Ljava/security/spec/AlgorithmParameterSpec;
-Ljavax/crypto/spec/OAEPParameterSpec;->pSrc:Ljavax/crypto/spec/PSource;
-Ljavax/crypto/spec/PBEKeySpec;->iterationCount:I
-Ljavax/crypto/spec/PBEKeySpec;->keyLength:I
-Ljavax/crypto/spec/PBEKeySpec;->password:[C
-Ljavax/crypto/spec/PBEKeySpec;->salt:[B
-Ljavax/crypto/spec/PBEParameterSpec;->iterationCount:I
-Ljavax/crypto/spec/PBEParameterSpec;->paramSpec:Ljava/security/spec/AlgorithmParameterSpec;
-Ljavax/crypto/spec/PBEParameterSpec;->salt:[B
-Ljavax/crypto/spec/PSource$PSpecified;->p:[B
-Ljavax/crypto/spec/PSource;->pSrcName:Ljava/lang/String;
-Ljavax/crypto/spec/RC2ParameterSpec;->effectiveKeyBits:I
-Ljavax/crypto/spec/RC2ParameterSpec;->iv:[B
-Ljavax/crypto/spec/RC5ParameterSpec;->iv:[B
-Ljavax/crypto/spec/RC5ParameterSpec;->rounds:I
-Ljavax/crypto/spec/RC5ParameterSpec;->version:I
-Ljavax/crypto/spec/RC5ParameterSpec;->wordSize:I
-Ljavax/crypto/spec/SecretKeySpec;->algorithm:Ljava/lang/String;
-Ljavax/crypto/spec/SecretKeySpec;->key:[B
-Ljavax/microedition/khronos/egl/EGLContext;->EGL_INSTANCE:Ljavax/microedition/khronos/egl/EGL;
-Ljavax/net/ServerSocketFactory;->theFactory:Ljavax/net/ServerSocketFactory;
-Ljavax/net/SocketFactory;->setDefault(Ljavax/net/SocketFactory;)V
-Ljavax/net/SocketFactory;->theFactory:Ljavax/net/SocketFactory;
-Ljavax/net/ssl/CertPathTrustManagerParameters;->parameters:Ljava/security/cert/CertPathParameters;
-Ljavax/net/ssl/HandshakeCompletedEvent;->session:Ljavax/net/ssl/SSLSession;
-Ljavax/net/ssl/HttpsURLConnection$NoPreloadHolder;-><init>()V
-Ljavax/net/ssl/HttpsURLConnection$NoPreloadHolder;->defaultHostnameVerifier:Ljavax/net/ssl/HostnameVerifier;
-Ljavax/net/ssl/HttpsURLConnection$NoPreloadHolder;->originalDefaultHostnameVerifierClass:Ljava/lang/Class;
-Ljavax/net/ssl/HttpsURLConnection;->defaultSSLSocketFactory:Ljavax/net/ssl/SSLSocketFactory;
-Ljavax/net/ssl/HttpsURLConnection;->sslSocketFactory:Ljavax/net/ssl/SSLSocketFactory;
-Ljavax/net/ssl/KeyManagerFactory;->algorithm:Ljava/lang/String;
-Ljavax/net/ssl/KeyManagerFactory;->factorySpi:Ljavax/net/ssl/KeyManagerFactorySpi;
-Ljavax/net/ssl/KeyManagerFactory;->provider:Ljava/security/Provider;
-Ljavax/net/ssl/KeyStoreBuilderParameters;->parameters:Ljava/util/List;
-Ljavax/net/ssl/SNIHostName$SNIHostNameMatcher;-><init>(Ljava/lang/String;)V
-Ljavax/net/ssl/SNIHostName$SNIHostNameMatcher;->pattern:Ljava/util/regex/Pattern;
-Ljavax/net/ssl/SNIHostName;->checkHostName()V
-Ljavax/net/ssl/SNIHostName;->hostname:Ljava/lang/String;
-Ljavax/net/ssl/SNIMatcher;->type:I
-Ljavax/net/ssl/SNIServerName;->encoded:[B
-Ljavax/net/ssl/SNIServerName;->HEXES:[C
-Ljavax/net/ssl/SNIServerName;->toHexString([B)Ljava/lang/String;
-Ljavax/net/ssl/SNIServerName;->type:I
-Ljavax/net/ssl/SSLContext;->contextSpi:Ljavax/net/ssl/SSLContextSpi;
-Ljavax/net/ssl/SSLContext;->defaultContext:Ljavax/net/ssl/SSLContext;
-Ljavax/net/ssl/SSLContext;->protocol:Ljava/lang/String;
-Ljavax/net/ssl/SSLContext;->provider:Ljava/security/Provider;
-Ljavax/net/ssl/SSLContextSpi;->getDefaultSocket()Ljavax/net/ssl/SSLSocket;
-Ljavax/net/ssl/SSLEngine;->peerHost:Ljava/lang/String;
-Ljavax/net/ssl/SSLEngine;->peerPort:I
-Ljavax/net/ssl/SSLEngineResult;->bytesConsumed:I
-Ljavax/net/ssl/SSLEngineResult;->bytesProduced:I
-Ljavax/net/ssl/SSLEngineResult;->handshakeStatus:Ljavax/net/ssl/SSLEngineResult$HandshakeStatus;
-Ljavax/net/ssl/SSLEngineResult;->status:Ljavax/net/ssl/SSLEngineResult$Status;
-Ljavax/net/ssl/SSLParameters;->algorithmConstraints:Ljava/security/AlgorithmConstraints;
-Ljavax/net/ssl/SSLParameters;->cipherSuites:[Ljava/lang/String;
-Ljavax/net/ssl/SSLParameters;->clone([Ljava/lang/String;)[Ljava/lang/String;
-Ljavax/net/ssl/SSLParameters;->identificationAlgorithm:Ljava/lang/String;
-Ljavax/net/ssl/SSLParameters;->needClientAuth:Z
-Ljavax/net/ssl/SSLParameters;->preferLocalCipherSuites:Z
-Ljavax/net/ssl/SSLParameters;->protocols:[Ljava/lang/String;
-Ljavax/net/ssl/SSLParameters;->sniMatchers:Ljava/util/Map;
-Ljavax/net/ssl/SSLParameters;->sniNames:Ljava/util/Map;
-Ljavax/net/ssl/SSLParameters;->wantClientAuth:Z
-Ljavax/net/ssl/SSLServerSocketFactory;->lastVersion:I
-Ljavax/net/ssl/SSLServerSocketFactory;->log(Ljava/lang/String;)V
-Ljavax/net/ssl/SSLSessionBindingEvent;->name:Ljava/lang/String;
-Ljavax/net/ssl/SSLSocketFactory;->DEBUG:Z
-Ljavax/net/ssl/SSLSocketFactory;->getSecurityProperty(Ljava/lang/String;)Ljava/lang/String;
-Ljavax/net/ssl/SSLSocketFactory;->lastVersion:I
-Ljavax/net/ssl/SSLSocketFactory;->log(Ljava/lang/String;)V
-Ljavax/net/ssl/StandardConstants;-><init>()V
-Ljavax/net/ssl/TrustManagerFactory;->algorithm:Ljava/lang/String;
-Ljavax/net/ssl/TrustManagerFactory;->factorySpi:Ljavax/net/ssl/TrustManagerFactorySpi;
-Ljavax/net/ssl/TrustManagerFactory;->provider:Ljava/security/Provider;
-Ljavax/security/auth/callback/PasswordCallback;->echoOn:Z
-Ljavax/security/auth/callback/PasswordCallback;->inputPassword:[C
-Ljavax/security/auth/callback/PasswordCallback;->prompt:Ljava/lang/String;
-Ljavax/security/auth/callback/UnsupportedCallbackException;->callback:Ljavax/security/auth/callback/Callback;
-Ljavax/security/auth/PrivateCredentialPermission;-><init>(Ljava/lang/String;Ljava/util/Set;)V
-Ljavax/security/auth/Subject$AuthPermissionHolder;-><init>()V
-Ljavax/security/auth/Subject$AuthPermissionHolder;->DO_AS_PERMISSION:Ljavax/security/auth/AuthPermission;
-Ljavax/security/auth/Subject$AuthPermissionHolder;->DO_AS_PRIVILEGED_PERMISSION:Ljavax/security/auth/AuthPermission;
-Ljavax/security/auth/Subject$AuthPermissionHolder;->GET_SUBJECT_PERMISSION:Ljavax/security/auth/AuthPermission;
-Ljavax/security/auth/Subject$AuthPermissionHolder;->MODIFY_PRINCIPALS_PERMISSION:Ljavax/security/auth/AuthPermission;
-Ljavax/security/auth/Subject$AuthPermissionHolder;->MODIFY_PRIVATE_CREDENTIALS_PERMISSION:Ljavax/security/auth/AuthPermission;
-Ljavax/security/auth/Subject$AuthPermissionHolder;->MODIFY_PUBLIC_CREDENTIALS_PERMISSION:Ljavax/security/auth/AuthPermission;
-Ljavax/security/auth/Subject$AuthPermissionHolder;->SET_READ_ONLY_PERMISSION:Ljavax/security/auth/AuthPermission;
-Ljavax/security/auth/Subject$ClassSet;->add(Ljava/lang/Object;)Z
-Ljavax/security/auth/Subject$ClassSet;->c:Ljava/lang/Class;
-Ljavax/security/auth/Subject$ClassSet;->populateSet()V
-Ljavax/security/auth/Subject$ClassSet;->set:Ljava/util/Set;
-Ljavax/security/auth/Subject$ClassSet;->which:I
-Ljavax/security/auth/Subject$SecureSet;-><init>(Ljavax/security/auth/Subject;I)V
-Ljavax/security/auth/Subject$SecureSet;-><init>(Ljavax/security/auth/Subject;ILjava/util/Set;)V
-Ljavax/security/auth/Subject$SecureSet;->elements:Ljava/util/LinkedList;
-Ljavax/security/auth/Subject$SecureSet;->subject:Ljavax/security/auth/Subject;
-Ljavax/security/auth/Subject$SecureSet;->which:I
-Ljavax/security/auth/Subject;->createContext(Ljavax/security/auth/Subject;Ljava/security/AccessControlContext;)Ljava/security/AccessControlContext;
-Ljavax/security/auth/Subject;->getCredHashCode(Ljava/lang/Object;)I
-Ljavax/security/auth/Subject;->NULL_PD_ARRAY:[Ljava/security/ProtectionDomain;
-Ljavax/security/auth/Subject;->principals:Ljava/util/Set;
-Ljavax/security/auth/Subject;->PRINCIPAL_SET:I
-Ljavax/security/auth/Subject;->privCredentials:Ljava/util/Set;
-Ljavax/security/auth/Subject;->PRIV_CREDENTIAL_SET:I
-Ljavax/security/auth/Subject;->pubCredentials:Ljava/util/Set;
-Ljavax/security/auth/Subject;->PUB_CREDENTIAL_SET:I
-Ljavax/security/auth/Subject;->readOnly:Z
-Ljavax/security/auth/Subject;->toString(Z)Ljava/lang/String;
-Ljavax/security/auth/x500/X500Principal;-><init>(Lsun/security/x509/X500Name;)V
-Ljavax/security/auth/x500/X500Principal;->thisX500Name:Lsun/security/x509/X500Name;
-Ljavax/security/cert/X509Certificate;->DEFAULT_X509_CERT_CLASS:Ljava/lang/String;
-Ljavax/security/cert/X509Certificate;->getInst(Ljava/lang/Object;)Ljavax/security/cert/X509Certificate;
-Ljavax/security/cert/X509Certificate;->X509Provider:Ljava/lang/String;
-Ljavax/security/cert/X509Certificate;->X509_PROVIDER:Ljava/lang/String;
-Ljavax/sql/ConnectionEvent;->ex:Ljava/sql/SQLException;
-Ljavax/sql/StatementEvent;->exception:Ljava/sql/SQLException;
-Ljavax/sql/StatementEvent;->statement:Ljava/sql/PreparedStatement;
-Ljavax/xml/datatype/DatatypeConfigurationException;->causeOnJDK13OrBelow:Ljava/lang/Throwable;
-Ljavax/xml/datatype/DatatypeConfigurationException;->initCauseByReflection(Ljava/lang/Throwable;)V
-Ljavax/xml/datatype/DatatypeConfigurationException;->isJDK14OrAbove:Z
-Ljavax/xml/datatype/DatatypeConfigurationException;->printStackTrace0(Ljava/io/PrintWriter;)V
-Ljavax/xml/datatype/DatatypeConstants$Field;-><init>(Ljava/lang/String;I)V
-Ljavax/xml/datatype/DatatypeConstants$Field;->id:I
-Ljavax/xml/datatype/DatatypeConstants$Field;->str:Ljava/lang/String;
-Ljavax/xml/datatype/DatatypeConstants;-><init>()V
-Ljavax/xml/datatype/Duration;->getCalendarTimeInMillis(Ljava/util/Calendar;)J
-Ljavax/xml/datatype/Duration;->getFieldValueAsInt(Ljavax/xml/datatype/DatatypeConstants$Field;)I
-Ljavax/xml/datatype/Duration;->toString(Ljava/math/BigDecimal;)Ljava/lang/String;
-Ljavax/xml/namespace/QName;->compatibilitySerialVersionUID:J
-Ljavax/xml/namespace/QName;->defaultSerialVersionUID:J
-Ljavax/xml/namespace/QName;->localPart:Ljava/lang/String;
-Ljavax/xml/namespace/QName;->namespaceURI:Ljava/lang/String;
-Ljavax/xml/namespace/QName;->prefix:Ljava/lang/String;
-Ljavax/xml/namespace/QName;->qNameAsString:Ljava/lang/String;
-Ljavax/xml/parsers/DocumentBuilder;->DEBUG:Z
-Ljavax/xml/parsers/DocumentBuilderFactory;->coalescing:Z
-Ljavax/xml/parsers/DocumentBuilderFactory;->expandEntityRef:Z
-Ljavax/xml/parsers/DocumentBuilderFactory;->ignoreComments:Z
-Ljavax/xml/parsers/DocumentBuilderFactory;->namespaceAware:Z
-Ljavax/xml/parsers/DocumentBuilderFactory;->validating:Z
-Ljavax/xml/parsers/DocumentBuilderFactory;->whitespace:Z
-Ljavax/xml/parsers/FactoryConfigurationError;->exception:Ljava/lang/Exception;
-Ljavax/xml/parsers/SAXParser;->DEBUG:Z
-Ljavax/xml/parsers/SAXParserFactory;->namespaceAware:Z
-Ljavax/xml/parsers/SAXParserFactory;->validating:Z
-Ljavax/xml/transform/dom/DOMResult;->nextSibling:Lorg/w3c/dom/Node;
-Ljavax/xml/transform/dom/DOMResult;->node:Lorg/w3c/dom/Node;
-Ljavax/xml/transform/dom/DOMResult;->systemId:Ljava/lang/String;
-Ljavax/xml/transform/dom/DOMSource;->node:Lorg/w3c/dom/Node;
-Ljavax/xml/transform/dom/DOMSource;->systemID:Ljava/lang/String;
-Ljavax/xml/transform/OutputKeys;-><init>()V
-Ljavax/xml/transform/sax/SAXResult;->handler:Lorg/xml/sax/ContentHandler;
-Ljavax/xml/transform/sax/SAXResult;->lexhandler:Lorg/xml/sax/ext/LexicalHandler;
-Ljavax/xml/transform/sax/SAXResult;->systemId:Ljava/lang/String;
-Ljavax/xml/transform/sax/SAXSource;->inputSource:Lorg/xml/sax/InputSource;
-Ljavax/xml/transform/sax/SAXSource;->reader:Lorg/xml/sax/XMLReader;
-Ljavax/xml/transform/stream/StreamResult;->outputStream:Ljava/io/OutputStream;
-Ljavax/xml/transform/stream/StreamResult;->systemId:Ljava/lang/String;
-Ljavax/xml/transform/stream/StreamResult;->writer:Ljava/io/Writer;
-Ljavax/xml/transform/stream/StreamSource;->inputStream:Ljava/io/InputStream;
-Ljavax/xml/transform/stream/StreamSource;->publicId:Ljava/lang/String;
-Ljavax/xml/transform/stream/StreamSource;->reader:Ljava/io/Reader;
-Ljavax/xml/transform/stream/StreamSource;->systemId:Ljava/lang/String;
-Ljavax/xml/transform/TransformerException;->containedException:Ljava/lang/Throwable;
-Ljavax/xml/transform/TransformerException;->locator:Ljavax/xml/transform/SourceLocator;
-Ljavax/xml/transform/TransformerFactoryConfigurationError;->exception:Ljava/lang/Exception;
-Ljavax/xml/XMLConstants;-><init>()V
-Ljavax/xml/xpath/XPathConstants;-><init>()V
-Ljavax/xml/xpath/XPathException;->cause:Ljava/lang/Throwable;
-Llibcore/util/BasicLruCache;->maxSize:I
-Llibcore/util/BasicLruCache;->trimToSize(I)V
-Llibcore/util/NativeAllocationRegistry$CleanerRunner;-><init>(Lsun/misc/Cleaner;)V
-Llibcore/util/NativeAllocationRegistry$CleanerRunner;->cleaner:Lsun/misc/Cleaner;
-Llibcore/util/NativeAllocationRegistry$CleanerThunk;->nativePtr:J
-Llibcore/util/NativeAllocationRegistry$CleanerThunk;->setNativePtr(J)V
-Llibcore/util/NativeAllocationRegistry;->classLoader:Ljava/lang/ClassLoader;
-Llibcore/util/NativeAllocationRegistry;->freeFunction:J
-Llibcore/util/NativeAllocationRegistry;->registerNativeAllocation(J)V
-Llibcore/util/NativeAllocationRegistry;->registerNativeFree(J)V
-Llibcore/util/NativeAllocationRegistry;->size:J
-Llibcore/util/ZoneInfo$CheckedArithmeticException;-><init>()V
-Llibcore/util/ZoneInfo$OffsetInterval;-><init>(IIII)V
-Llibcore/util/ZoneInfo$OffsetInterval;->containsWallTime(J)Z
-Llibcore/util/ZoneInfo$OffsetInterval;->create(Llibcore/util/ZoneInfo;I)Llibcore/util/ZoneInfo$OffsetInterval;
-Llibcore/util/ZoneInfo$OffsetInterval;->endWallTimeSeconds:I
-Llibcore/util/ZoneInfo$OffsetInterval;->getEndWallTimeSeconds()J
-Llibcore/util/ZoneInfo$OffsetInterval;->getIsDst()I
-Llibcore/util/ZoneInfo$OffsetInterval;->getStartWallTimeSeconds()J
-Llibcore/util/ZoneInfo$OffsetInterval;->getTotalOffsetSeconds()I
-Llibcore/util/ZoneInfo$OffsetInterval;->isDst:I
-Llibcore/util/ZoneInfo$OffsetInterval;->startWallTimeSeconds:I
-Llibcore/util/ZoneInfo$OffsetInterval;->totalOffsetSeconds:I
-Llibcore/util/ZoneInfo$WallTime;->calendar:Ljava/util/GregorianCalendar;
-Llibcore/util/ZoneInfo$WallTime;->copyFieldsFromCalendar()V
-Llibcore/util/ZoneInfo$WallTime;->copyFieldsToCalendar()V
-Llibcore/util/ZoneInfo$WallTime;->doWallTimeSearch(Llibcore/util/ZoneInfo;IIZ)Ljava/lang/Integer;
-Llibcore/util/ZoneInfo$WallTime;->getOffsetsOfType(Llibcore/util/ZoneInfo;II)[I
-Llibcore/util/ZoneInfo$WallTime;->gmtOffsetSeconds:I
-Llibcore/util/ZoneInfo$WallTime;->hour:I
-Llibcore/util/ZoneInfo$WallTime;->isDst:I
-Llibcore/util/ZoneInfo$WallTime;->minute:I
-Llibcore/util/ZoneInfo$WallTime;->month:I
-Llibcore/util/ZoneInfo$WallTime;->monthDay:I
-Llibcore/util/ZoneInfo$WallTime;->second:I
-Llibcore/util/ZoneInfo$WallTime;->tryOffsetAdjustments(Llibcore/util/ZoneInfo;ILlibcore/util/ZoneInfo$OffsetInterval;II)Ljava/lang/Integer;
-Llibcore/util/ZoneInfo$WallTime;->weekDay:I
-Llibcore/util/ZoneInfo$WallTime;->year:I
-Llibcore/util/ZoneInfo$WallTime;->yearDay:I
-Llibcore/util/ZoneInfo;-><init>(Ljava/lang/String;[J[B[I[BJ)V
-Llibcore/util/ZoneInfo;->checkedAdd(JI)I
-Llibcore/util/ZoneInfo;->checkedSubtract(II)I
-Llibcore/util/ZoneInfo;->findOffsetIndexForTimeInMilliseconds(J)I
-Llibcore/util/ZoneInfo;->findOffsetIndexForTimeInSeconds(J)I
-Llibcore/util/ZoneInfo;->LEAP:[I
-Llibcore/util/ZoneInfo;->mDstSavings:I
-Llibcore/util/ZoneInfo;->mEarliestRawOffset:I
-Llibcore/util/ZoneInfo;->MILLISECONDS_PER_400_YEARS:J
-Llibcore/util/ZoneInfo;->MILLISECONDS_PER_DAY:J
-Llibcore/util/ZoneInfo;->mIsDsts:[B
-Llibcore/util/ZoneInfo;->mOffsets:[I
-Llibcore/util/ZoneInfo;->mRawOffset:I
-Llibcore/util/ZoneInfo;->mTypes:[B
-Llibcore/util/ZoneInfo;->mUseDst:Z
-Llibcore/util/ZoneInfo;->NORMAL:[I
-Llibcore/util/ZoneInfo;->roundDownMillisToSeconds(J)J
-Llibcore/util/ZoneInfo;->roundUpMillisToSeconds(J)J
-Llibcore/util/ZoneInfo;->UNIX_OFFSET:J
Lorg/apache/http/conn/ssl/AbstractVerifier;->IPV4_PATTERN:Ljava/util/regex/Pattern;
Lorg/apache/http/conn/ssl/AbstractVerifier;->isIPv4Address(Ljava/lang/String;)Z
Lorg/apache/http/conn/ssl/SSLSocketFactory$NoPreloadHolder;-><init>()V
@@ -112510,629 +94147,3 @@
Lorg/apache/http/params/HttpConnectionParams;-><init>()V
Lorg/ccil/cowan/tagsoup/AttributesImpl;->badIndex(I)V
Lorg/ccil/cowan/tagsoup/AttributesImpl;->ensureCapacity(I)V
-Lorg/json/JSONArray;->checkedPut(Ljava/lang/Object;)V
-Lorg/json/JSONStringer$Scope;->DANGLING_KEY:Lorg/json/JSONStringer$Scope;
-Lorg/json/JSONStringer$Scope;->EMPTY_ARRAY:Lorg/json/JSONStringer$Scope;
-Lorg/json/JSONStringer$Scope;->EMPTY_OBJECT:Lorg/json/JSONStringer$Scope;
-Lorg/json/JSONStringer$Scope;->NONEMPTY_ARRAY:Lorg/json/JSONStringer$Scope;
-Lorg/json/JSONStringer$Scope;->NONEMPTY_OBJECT:Lorg/json/JSONStringer$Scope;
-Lorg/json/JSONStringer$Scope;->NULL:Lorg/json/JSONStringer$Scope;
-Lorg/json/JSONStringer$Scope;->valueOf(Ljava/lang/String;)Lorg/json/JSONStringer$Scope;
-Lorg/json/JSONStringer$Scope;->values()[Lorg/json/JSONStringer$Scope;
-Lorg/w3c/dom/ls/LSSerializer;->getFilter()Lorg/w3c/dom/ls/LSSerializerFilter;
-Lorg/w3c/dom/ls/LSSerializer;->setFilter(Lorg/w3c/dom/ls/LSSerializerFilter;)V
-Lorg/w3c/dom/traversal/NodeFilter;->FILTER_ACCEPT:S
-Lorg/w3c/dom/traversal/NodeFilter;->FILTER_REJECT:S
-Lorg/w3c/dom/traversal/NodeFilter;->FILTER_SKIP:S
-Lorg/w3c/dom/traversal/NodeFilter;->SHOW_ALL:I
-Lorg/w3c/dom/traversal/NodeFilter;->SHOW_ATTRIBUTE:I
-Lorg/w3c/dom/traversal/NodeFilter;->SHOW_CDATA_SECTION:I
-Lorg/w3c/dom/traversal/NodeFilter;->SHOW_COMMENT:I
-Lorg/w3c/dom/traversal/NodeFilter;->SHOW_DOCUMENT:I
-Lorg/w3c/dom/traversal/NodeFilter;->SHOW_DOCUMENT_FRAGMENT:I
-Lorg/w3c/dom/traversal/NodeFilter;->SHOW_DOCUMENT_TYPE:I
-Lorg/w3c/dom/traversal/NodeFilter;->SHOW_ELEMENT:I
-Lorg/w3c/dom/traversal/NodeFilter;->SHOW_ENTITY:I
-Lorg/w3c/dom/traversal/NodeFilter;->SHOW_ENTITY_REFERENCE:I
-Lorg/w3c/dom/traversal/NodeFilter;->SHOW_NOTATION:I
-Lorg/w3c/dom/traversal/NodeFilter;->SHOW_PROCESSING_INSTRUCTION:I
-Lorg/w3c/dom/traversal/NodeFilter;->SHOW_TEXT:I
-Lorg/w3c/dom/traversal/NodeIterator;->getExpandEntityReferences()Z
-Lorg/w3c/dom/traversal/NodeIterator;->getFilter()Lorg/w3c/dom/traversal/NodeFilter;
-Lorg/w3c/dom/traversal/NodeIterator;->getRoot()Lorg/w3c/dom/Node;
-Lorg/w3c/dom/traversal/NodeIterator;->getWhatToShow()I
-Lorg/w3c/dom/traversal/NodeIterator;->previousNode()Lorg/w3c/dom/Node;
-Lorg/xml/sax/helpers/AttributeListImpl;->names:Ljava/util/ArrayList;
-Lorg/xml/sax/helpers/AttributeListImpl;->types:Ljava/util/ArrayList;
-Lorg/xml/sax/helpers/AttributeListImpl;->values:Ljava/util/ArrayList;
-Lorg/xml/sax/helpers/NamespaceSupport$Context;->attributeNameTable:Ljava/util/Hashtable;
-Lorg/xml/sax/helpers/NamespaceSupport$Context;->clear()V
-Lorg/xml/sax/helpers/NamespaceSupport$Context;->copyTables()V
-Lorg/xml/sax/helpers/NamespaceSupport$Context;->declarations:Ljava/util/ArrayList;
-Lorg/xml/sax/helpers/NamespaceSupport$Context;->declarePrefix(Ljava/lang/String;Ljava/lang/String;)V
-Lorg/xml/sax/helpers/NamespaceSupport$Context;->declSeen:Z
-Lorg/xml/sax/helpers/NamespaceSupport$Context;->declsOK:Z
-Lorg/xml/sax/helpers/NamespaceSupport$Context;->defaultNS:Ljava/lang/String;
-Lorg/xml/sax/helpers/NamespaceSupport$Context;->elementNameTable:Ljava/util/Hashtable;
-Lorg/xml/sax/helpers/NamespaceSupport$Context;->getDeclaredPrefixes()Ljava/util/Enumeration;
-Lorg/xml/sax/helpers/NamespaceSupport$Context;->getPrefix(Ljava/lang/String;)Ljava/lang/String;
-Lorg/xml/sax/helpers/NamespaceSupport$Context;->getPrefixes()Ljava/util/Enumeration;
-Lorg/xml/sax/helpers/NamespaceSupport$Context;->getURI(Ljava/lang/String;)Ljava/lang/String;
-Lorg/xml/sax/helpers/NamespaceSupport$Context;->parent:Lorg/xml/sax/helpers/NamespaceSupport$Context;
-Lorg/xml/sax/helpers/NamespaceSupport$Context;->prefixTable:Ljava/util/Hashtable;
-Lorg/xml/sax/helpers/NamespaceSupport$Context;->processName(Ljava/lang/String;Z)[Ljava/lang/String;
-Lorg/xml/sax/helpers/NamespaceSupport$Context;->setParent(Lorg/xml/sax/helpers/NamespaceSupport$Context;)V
-Lorg/xml/sax/helpers/NamespaceSupport$Context;->uriTable:Ljava/util/Hashtable;
-Lorg/xml/sax/helpers/ParserAdapter$AttributeListAdapter;->qAtts:Lorg/xml/sax/AttributeList;
-Lorg/xml/sax/helpers/ParserAdapter$AttributeListAdapter;->setAttributeList(Lorg/xml/sax/AttributeList;)V
-Lorg/xml/sax/helpers/ParserAdapter;->FEATURES:Ljava/lang/String;
-Lorg/xml/sax/helpers/ParserAdapter;->NAMESPACES:Ljava/lang/String;
-Lorg/xml/sax/helpers/ParserAdapter;->NAMESPACE_PREFIXES:Ljava/lang/String;
-Lorg/xml/sax/helpers/ParserAdapter;->XMLNS_URIs:Ljava/lang/String;
-Lorg/xml/sax/helpers/ParserFactory;-><init>()V
-Lorg/xml/sax/helpers/XMLReaderAdapter$AttributesAdapter;-><init>()V
-Lorg/xml/sax/helpers/XMLReaderAdapter$AttributesAdapter;->attributes:Lorg/xml/sax/Attributes;
-Lorg/xml/sax/helpers/XMLReaderAdapter$AttributesAdapter;->setAttributes(Lorg/xml/sax/Attributes;)V
-Lorg/xml/sax/helpers/XMLReaderFactory;-><init>()V
-Lorg/xml/sax/helpers/XMLReaderFactory;->property:Ljava/lang/String;
-Lorg/xmlpull/v1/XmlPullParserFactory;->getParserInstance()Lorg/xmlpull/v1/XmlPullParser;
-Lorg/xmlpull/v1/XmlPullParserFactory;->getSerializerInstance()Lorg/xmlpull/v1/XmlSerializer;
-Lorg/xmlpull/v1/XmlPullParserFactory;->newInstantiationException(Ljava/lang/String;Ljava/util/ArrayList;)Lorg/xmlpull/v1/XmlPullParserException;
-Lsun/misc/Cleaner;-><init>(Ljava/lang/Object;Ljava/lang/Runnable;)V
-Lsun/misc/Cleaner;->add(Lsun/misc/Cleaner;)Lsun/misc/Cleaner;
-Lsun/misc/Cleaner;->dummyQueue:Ljava/lang/ref/ReferenceQueue;
-Lsun/misc/Cleaner;->first:Lsun/misc/Cleaner;
-Lsun/misc/Cleaner;->next:Lsun/misc/Cleaner;
-Lsun/misc/Cleaner;->prev:Lsun/misc/Cleaner;
-Lsun/misc/Cleaner;->remove(Lsun/misc/Cleaner;)Z
-Lsun/misc/Cleaner;->thunk:Ljava/lang/Runnable;
-Lsun/misc/JarIndex;->addMapping(Ljava/lang/String;Ljava/lang/String;)V
-Lsun/misc/JarIndex;->addToList(Ljava/lang/String;Ljava/lang/String;Ljava/util/HashMap;)V
-Lsun/misc/JarIndex;->indexMap:Ljava/util/HashMap;
-Lsun/misc/JarIndex;->jarFiles:[Ljava/lang/String;
-Lsun/misc/JarIndex;->jarMap:Ljava/util/HashMap;
-Lsun/misc/JarIndex;->metaInfFilenames:Z
-Lsun/misc/JarIndex;->parseJars([Ljava/lang/String;)V
-Lsun/misc/LRUCache;->oa:[Ljava/lang/Object;
-Lsun/misc/LRUCache;->size:I
-Lsun/misc/MetaIndex;-><init>(Ljava/util/List;Z)V
-Lsun/misc/MetaIndex;->contents:[Ljava/lang/String;
-Lsun/misc/MetaIndex;->getJarMap()Ljava/util/Map;
-Lsun/misc/MetaIndex;->isClassOnlyJar:Z
-Lsun/misc/MetaIndex;->jarMap:Ljava/util/Map;
-Lsun/misc/Resource;->cachedInputStream()Ljava/io/InputStream;
-Lsun/misc/Resource;->cis:Ljava/io/InputStream;
-Lsun/misc/Unsafe;-><init>()V
-Lsun/misc/Unsafe;->getArrayBaseOffsetForComponentType(Ljava/lang/Class;)I
-Lsun/misc/Unsafe;->getArrayIndexScaleForComponentType(Ljava/lang/Class;)I
-Lsun/misc/URLClassPath$FileLoader;-><init>(Ljava/net/URL;)V
-Lsun/misc/URLClassPath$FileLoader;->dir:Ljava/io/File;
-Lsun/misc/URLClassPath$FileLoader;->findResource(Ljava/lang/String;Z)Ljava/net/URL;
-Lsun/misc/URLClassPath$FileLoader;->getResource(Ljava/lang/String;Z)Lsun/misc/Resource;
-Lsun/misc/URLClassPath$JarLoader;-><init>(Ljava/net/URL;Ljava/net/URLStreamHandler;Ljava/util/HashMap;Ljava/security/AccessControlContext;)V
-Lsun/misc/URLClassPath$JarLoader;->acc:Ljava/security/AccessControlContext;
-Lsun/misc/URLClassPath$JarLoader;->checkJar(Ljava/util/jar/JarFile;)Ljava/util/jar/JarFile;
-Lsun/misc/URLClassPath$JarLoader;->checkResource(Ljava/lang/String;ZLjava/util/jar/JarEntry;)Lsun/misc/Resource;
-Lsun/misc/URLClassPath$JarLoader;->closed:Z
-Lsun/misc/URLClassPath$JarLoader;->csu:Ljava/net/URL;
-Lsun/misc/URLClassPath$JarLoader;->ensureOpen()V
-Lsun/misc/URLClassPath$JarLoader;->findResource(Ljava/lang/String;Z)Ljava/net/URL;
-Lsun/misc/URLClassPath$JarLoader;->getClassPath()[Ljava/net/URL;
-Lsun/misc/URLClassPath$JarLoader;->getIndex()Lsun/misc/JarIndex;
-Lsun/misc/URLClassPath$JarLoader;->getJarFile(Ljava/net/URL;)Ljava/util/jar/JarFile;
-Lsun/misc/URLClassPath$JarLoader;->getResource(Ljava/lang/String;Z)Lsun/misc/Resource;
-Lsun/misc/URLClassPath$JarLoader;->getResource(Ljava/lang/String;ZLjava/util/Set;)Lsun/misc/Resource;
-Lsun/misc/URLClassPath$JarLoader;->handler:Ljava/net/URLStreamHandler;
-Lsun/misc/URLClassPath$JarLoader;->index:Lsun/misc/JarIndex;
-Lsun/misc/URLClassPath$JarLoader;->isOptimizable(Ljava/net/URL;)Z
-Lsun/misc/URLClassPath$JarLoader;->jar:Ljava/util/jar/JarFile;
-Lsun/misc/URLClassPath$JarLoader;->lmap:Ljava/util/HashMap;
-Lsun/misc/URLClassPath$JarLoader;->metaIndex:Lsun/misc/MetaIndex;
-Lsun/misc/URLClassPath$JarLoader;->parseClassPath(Ljava/net/URL;Ljava/lang/String;)[Ljava/net/URL;
-Lsun/misc/URLClassPath$JarLoader;->parseExtensionsDependencies()V
-Lsun/misc/URLClassPath$JarLoader;->validIndex(Ljava/lang/String;)Z
-Lsun/misc/URLClassPath$Loader;-><init>(Ljava/net/URL;)V
-Lsun/misc/URLClassPath$Loader;->base:Ljava/net/URL;
-Lsun/misc/URLClassPath$Loader;->findResource(Ljava/lang/String;Z)Ljava/net/URL;
-Lsun/misc/URLClassPath$Loader;->getBaseURL()Ljava/net/URL;
-Lsun/misc/URLClassPath$Loader;->getClassPath()[Ljava/net/URL;
-Lsun/misc/URLClassPath$Loader;->getResource(Ljava/lang/String;)Lsun/misc/Resource;
-Lsun/misc/URLClassPath$Loader;->getResource(Ljava/lang/String;Z)Lsun/misc/Resource;
-Lsun/misc/URLClassPath$Loader;->jarfile:Ljava/util/jar/JarFile;
-Lsun/misc/URLClassPath;->acc:Ljava/security/AccessControlContext;
-Lsun/misc/URLClassPath;->check(Ljava/net/URL;)V
-Lsun/misc/URLClassPath;->closed:Z
-Lsun/misc/URLClassPath;->DEBUG:Z
-Lsun/misc/URLClassPath;->DEBUG_LOOKUP_CACHE:Z
-Lsun/misc/URLClassPath;->disableAllLookupCaches()V
-Lsun/misc/URLClassPath;->DISABLE_ACC_CHECKING:Z
-Lsun/misc/URLClassPath;->DISABLE_JAR_CHECKING:Z
-Lsun/misc/URLClassPath;->ensureLoaderOpened(I)Z
-Lsun/misc/URLClassPath;->getLoader(I)Lsun/misc/URLClassPath$Loader;
-Lsun/misc/URLClassPath;->getLoader(Ljava/net/URL;)Lsun/misc/URLClassPath$Loader;
-Lsun/misc/URLClassPath;->getLookupCache(Ljava/lang/String;)[I
-Lsun/misc/URLClassPath;->getLookupCacheForClassLoader(Ljava/lang/ClassLoader;Ljava/lang/String;)[I
-Lsun/misc/URLClassPath;->getLookupCacheURLs(Ljava/lang/ClassLoader;)[Ljava/net/URL;
-Lsun/misc/URLClassPath;->getNextLoader([II)Lsun/misc/URLClassPath$Loader;
-Lsun/misc/URLClassPath;->initLookupCache(Ljava/lang/ClassLoader;)V
-Lsun/misc/URLClassPath;->jarHandler:Ljava/net/URLStreamHandler;
-Lsun/misc/URLClassPath;->JAVA_VERSION:Ljava/lang/String;
-Lsun/misc/URLClassPath;->knownToNotExist(Ljava/lang/String;)Z
-Lsun/misc/URLClassPath;->knownToNotExist0(Ljava/lang/ClassLoader;Ljava/lang/String;)Z
-Lsun/misc/URLClassPath;->lookupCacheEnabled:Z
-Lsun/misc/URLClassPath;->lookupCacheLoader:Ljava/lang/ClassLoader;
-Lsun/misc/URLClassPath;->lookupCacheURLs:[Ljava/net/URL;
-Lsun/misc/URLClassPath;->path:Ljava/util/ArrayList;
-Lsun/misc/URLClassPath;->push([Ljava/net/URL;)V
-Lsun/misc/URLClassPath;->USER_AGENT_JAVA_VERSION:Ljava/lang/String;
-Lsun/misc/URLClassPath;->validateLookupCache(ILjava/lang/String;)V
-Lsun/security/pkcs/ContentInfo;->content:Lsun/security/util/DerValue;
-Lsun/security/pkcs/ContentInfo;->contentType:Lsun/security/util/ObjectIdentifier;
-Lsun/security/pkcs/ContentInfo;->crdata:[I
-Lsun/security/pkcs/ContentInfo;->data:[I
-Lsun/security/pkcs/ContentInfo;->ddata:[I
-Lsun/security/pkcs/ContentInfo;->edata:[I
-Lsun/security/pkcs/ContentInfo;->nsdata:[I
-Lsun/security/pkcs/ContentInfo;->OLD_DATA:[I
-Lsun/security/pkcs/ContentInfo;->OLD_SDATA:[I
-Lsun/security/pkcs/ContentInfo;->pkcs7:[I
-Lsun/security/pkcs/ContentInfo;->sdata:[I
-Lsun/security/pkcs/ContentInfo;->sedata:[I
-Lsun/security/pkcs/ContentInfo;->tstInfo:[I
-Lsun/security/pkcs/PKCS7$VerbatimX509Certificate;-><init>(Ljava/security/cert/X509Certificate;[B)V
-Lsun/security/pkcs/PKCS7$VerbatimX509Certificate;->encodedVerbatim:[B
-Lsun/security/pkcs/PKCS7$WrappedX509Certificate;-><init>(Ljava/security/cert/X509Certificate;)V
-Lsun/security/pkcs/PKCS7$WrappedX509Certificate;->wrapped:Ljava/security/cert/X509Certificate;
-Lsun/security/pkcs/PKCS7;->certificates:[Ljava/security/cert/X509Certificate;
-Lsun/security/pkcs/PKCS7;->certIssuerNames:[Ljava/security/Principal;
-Lsun/security/pkcs/PKCS7;->contentInfo:Lsun/security/pkcs/ContentInfo;
-Lsun/security/pkcs/PKCS7;->contentType:Lsun/security/util/ObjectIdentifier;
-Lsun/security/pkcs/PKCS7;->crls:[Ljava/security/cert/X509CRL;
-Lsun/security/pkcs/PKCS7;->digestAlgorithmIds:[Lsun/security/x509/AlgorithmId;
-Lsun/security/pkcs/PKCS7;->oldStyle:Z
-Lsun/security/pkcs/PKCS7;->parse(Lsun/security/util/DerInputStream;)V
-Lsun/security/pkcs/PKCS7;->parse(Lsun/security/util/DerInputStream;Z)V
-Lsun/security/pkcs/PKCS7;->parseNetscapeCertChain(Lsun/security/util/DerValue;)V
-Lsun/security/pkcs/PKCS7;->parseOldSignedData(Lsun/security/util/DerValue;)V
-Lsun/security/pkcs/PKCS7;->parseSignedData(Lsun/security/util/DerValue;)V
-Lsun/security/pkcs/PKCS7;->populateCertIssuerNames()V
-Lsun/security/pkcs/PKCS7;->signerInfos:[Lsun/security/pkcs/SignerInfo;
-Lsun/security/pkcs/PKCS7;->version:Ljava/math/BigInteger;
-Lsun/security/pkcs/PKCS9Attribute;->BYTE_ARRAY_CLASS:Ljava/lang/Class;
-Lsun/security/pkcs/PKCS9Attribute;->debug:Lsun/security/util/Debug;
-Lsun/security/pkcs/PKCS9Attribute;->index:I
-Lsun/security/pkcs/PKCS9Attribute;->indexOf(Ljava/lang/Object;[Ljava/lang/Object;I)I
-Lsun/security/pkcs/PKCS9Attribute;->init(Lsun/security/util/ObjectIdentifier;Ljava/lang/Object;)V
-Lsun/security/pkcs/PKCS9Attribute;->NAME_OID_TABLE:Ljava/util/Hashtable;
-Lsun/security/pkcs/PKCS9Attribute;->oid:Lsun/security/util/ObjectIdentifier;
-Lsun/security/pkcs/PKCS9Attribute;->OID_NAME_TABLE:Ljava/util/Hashtable;
-Lsun/security/pkcs/PKCS9Attribute;->PKCS9_OIDS:[Lsun/security/util/ObjectIdentifier;
-Lsun/security/pkcs/PKCS9Attribute;->PKCS9_VALUE_TAGS:[[Ljava/lang/Byte;
-Lsun/security/pkcs/PKCS9Attribute;->RSA_PROPRIETARY_STR:Ljava/lang/String;
-Lsun/security/pkcs/PKCS9Attribute;->SINGLE_VALUED:[Z
-Lsun/security/pkcs/PKCS9Attribute;->SMIME_SIGNING_DESC_STR:Ljava/lang/String;
-Lsun/security/pkcs/PKCS9Attribute;->throwSingleValuedException()V
-Lsun/security/pkcs/PKCS9Attribute;->throwTagException(Ljava/lang/Byte;)V
-Lsun/security/pkcs/PKCS9Attribute;->value:Ljava/lang/Object;
-Lsun/security/pkcs/PKCS9Attribute;->VALUE_CLASSES:[Ljava/lang/Class;
-Lsun/security/pkcs/PKCS9Attributes;->attributes:Ljava/util/Hashtable;
-Lsun/security/pkcs/PKCS9Attributes;->castToDerEncoder([Ljava/lang/Object;)[Lsun/security/util/DerEncoder;
-Lsun/security/pkcs/PKCS9Attributes;->decode(Lsun/security/util/DerInputStream;)[B
-Lsun/security/pkcs/PKCS9Attributes;->derEncoding:[B
-Lsun/security/pkcs/PKCS9Attributes;->generateDerEncoding()[B
-Lsun/security/pkcs/PKCS9Attributes;->ignoreUnsupportedAttributes:Z
-Lsun/security/pkcs/PKCS9Attributes;->permittedAttributes:Ljava/util/Hashtable;
-Lsun/security/pkcs/SignerInfo;->authenticatedAttributes:Lsun/security/pkcs/PKCS9Attributes;
-Lsun/security/pkcs/SignerInfo;->certificateSerialNumber:Ljava/math/BigInteger;
-Lsun/security/pkcs/SignerInfo;->digestAlgorithmId:Lsun/security/x509/AlgorithmId;
-Lsun/security/pkcs/SignerInfo;->digestEncryptionAlgorithmId:Lsun/security/x509/AlgorithmId;
-Lsun/security/pkcs/SignerInfo;->DIGEST_PRIMITIVE_SET:Ljava/util/Set;
-Lsun/security/pkcs/SignerInfo;->encryptedDigest:[B
-Lsun/security/pkcs/SignerInfo;->hasTimestamp:Z
-Lsun/security/pkcs/SignerInfo;->issuerName:Lsun/security/x509/X500Name;
-Lsun/security/pkcs/SignerInfo;->JAR_DISABLED_CHECK:Lsun/security/util/DisabledAlgorithmConstraints;
-Lsun/security/pkcs/SignerInfo;->SIG_PRIMITIVE_SET:Ljava/util/Set;
-Lsun/security/pkcs/SignerInfo;->timestamp:Ljava/security/Timestamp;
-Lsun/security/pkcs/SignerInfo;->unauthenticatedAttributes:Lsun/security/pkcs/PKCS9Attributes;
-Lsun/security/pkcs/SignerInfo;->verify(Lsun/security/pkcs/PKCS7;)Lsun/security/pkcs/SignerInfo;
-Lsun/security/pkcs/SignerInfo;->verify(Lsun/security/pkcs/PKCS7;Ljava/io/InputStream;)Lsun/security/pkcs/SignerInfo;
-Lsun/security/pkcs/SignerInfo;->verify(Lsun/security/pkcs/PKCS7;[B)Lsun/security/pkcs/SignerInfo;
-Lsun/security/pkcs/SignerInfo;->verifyTimestamp(Lsun/security/timestamp/TimestampToken;)V
-Lsun/security/pkcs/SignerInfo;->version:Ljava/math/BigInteger;
-Lsun/security/util/AbstractAlgorithmConstraints;->checkAlgorithm([Ljava/lang/String;Ljava/lang/String;Lsun/security/util/AlgorithmDecomposer;)Z
-Lsun/security/util/AbstractAlgorithmConstraints;->getAlgorithms(Ljava/lang/String;)[Ljava/lang/String;
-Lsun/security/util/AlgorithmDecomposer;->decomposeImpl(Ljava/lang/String;)Ljava/util/Set;
-Lsun/security/util/AlgorithmDecomposer;->hasLoop(Ljava/util/Set;Ljava/lang/String;Ljava/lang/String;)V
-Lsun/security/util/AlgorithmDecomposer;->pattern:Ljava/util/regex/Pattern;
-Lsun/security/util/AlgorithmDecomposer;->transPattern:Ljava/util/regex/Pattern;
-Lsun/security/util/BitArray;-><init>(Lsun/security/util/BitArray;)V
-Lsun/security/util/BitArray;->BITS_PER_UNIT:I
-Lsun/security/util/BitArray;->BYTES_PER_LINE:I
-Lsun/security/util/BitArray;->length:I
-Lsun/security/util/BitArray;->NYBBLE:[[B
-Lsun/security/util/BitArray;->position(I)I
-Lsun/security/util/BitArray;->repn:[B
-Lsun/security/util/BitArray;->subscript(I)I
-Lsun/security/util/CertConstraintParameters;->cert:Ljava/security/cert/X509Certificate;
-Lsun/security/util/CertConstraintParameters;->trustedMatch:Z
-Lsun/security/util/Debug;->args:Ljava/lang/String;
-Lsun/security/util/Debug;->hexDigits:[C
-Lsun/security/util/Debug;->marshal(Ljava/lang/String;)Ljava/lang/String;
-Lsun/security/util/Debug;->prefix:Ljava/lang/String;
-Lsun/security/util/DerInputBuffer;-><init>([B)V
-Lsun/security/util/DerInputBuffer;-><init>([BII)V
-Lsun/security/util/DerInputBuffer;->dup()Lsun/security/util/DerInputBuffer;
-Lsun/security/util/DerInputBuffer;->equals(Lsun/security/util/DerInputBuffer;)Z
-Lsun/security/util/DerInputBuffer;->getBigInteger(IZ)Ljava/math/BigInteger;
-Lsun/security/util/DerInputBuffer;->getBitString()[B
-Lsun/security/util/DerInputBuffer;->getBitString(I)[B
-Lsun/security/util/DerInputBuffer;->getGeneralizedTime(I)Ljava/util/Date;
-Lsun/security/util/DerInputBuffer;->getInteger(I)I
-Lsun/security/util/DerInputBuffer;->getPos()I
-Lsun/security/util/DerInputBuffer;->getSlice(II)[B
-Lsun/security/util/DerInputBuffer;->getTime(IZ)Ljava/util/Date;
-Lsun/security/util/DerInputBuffer;->getUnalignedBitString()Lsun/security/util/BitArray;
-Lsun/security/util/DerInputBuffer;->getUTCTime(I)Ljava/util/Date;
-Lsun/security/util/DerInputBuffer;->peek()I
-Lsun/security/util/DerInputBuffer;->toByteArray()[B
-Lsun/security/util/DerInputBuffer;->truncate(I)V
-Lsun/security/util/DerInputStream;-><init>(Lsun/security/util/DerInputBuffer;)V
-Lsun/security/util/DerInputStream;->buffer:Lsun/security/util/DerInputBuffer;
-Lsun/security/util/DerInputStream;->getByte()I
-Lsun/security/util/DerInputStream;->getLength()I
-Lsun/security/util/DerInputStream;->getLength(ILjava/io/InputStream;)I
-Lsun/security/util/DerInputStream;->getLength(Ljava/io/InputStream;)I
-Lsun/security/util/DerInputStream;->init([BIIZ)V
-Lsun/security/util/DerInputStream;->readString(BLjava/lang/String;Ljava/lang/String;)Ljava/lang/String;
-Lsun/security/util/DerOutputStream;->lexOrder:Lsun/security/util/ByteArrayLexOrder;
-Lsun/security/util/DerOutputStream;->putIntegerContents(I)V
-Lsun/security/util/DerOutputStream;->putOrderedSet(B[Lsun/security/util/DerEncoder;Ljava/util/Comparator;)V
-Lsun/security/util/DerOutputStream;->putTime(Ljava/util/Date;B)V
-Lsun/security/util/DerOutputStream;->tagOrder:Lsun/security/util/ByteArrayTagOrder;
-Lsun/security/util/DerOutputStream;->writeString(Ljava/lang/String;BLjava/lang/String;)V
-Lsun/security/util/DerValue;-><init>(Lsun/security/util/DerInputBuffer;Z)V
-Lsun/security/util/DerValue;->append([B[B)[B
-Lsun/security/util/DerValue;->doEquals(Lsun/security/util/DerValue;Lsun/security/util/DerValue;)Z
-Lsun/security/util/DerValue;->init(BLjava/lang/String;)Lsun/security/util/DerInputStream;
-Lsun/security/util/DerValue;->init(ZLjava/io/InputStream;)Lsun/security/util/DerInputStream;
-Lsun/security/util/DerValue;->isPrivate()Z
-Lsun/security/util/DerValue;->length:I
-Lsun/security/util/DerValue;->originalEncodedForm:[B
-Lsun/security/util/DisabledAlgorithmConstraints$Constraint$Operator;->EQ:Lsun/security/util/DisabledAlgorithmConstraints$Constraint$Operator;
-Lsun/security/util/DisabledAlgorithmConstraints$Constraint$Operator;->GE:Lsun/security/util/DisabledAlgorithmConstraints$Constraint$Operator;
-Lsun/security/util/DisabledAlgorithmConstraints$Constraint$Operator;->GT:Lsun/security/util/DisabledAlgorithmConstraints$Constraint$Operator;
-Lsun/security/util/DisabledAlgorithmConstraints$Constraint$Operator;->LE:Lsun/security/util/DisabledAlgorithmConstraints$Constraint$Operator;
-Lsun/security/util/DisabledAlgorithmConstraints$Constraint$Operator;->LT:Lsun/security/util/DisabledAlgorithmConstraints$Constraint$Operator;
-Lsun/security/util/DisabledAlgorithmConstraints$Constraint$Operator;->NE:Lsun/security/util/DisabledAlgorithmConstraints$Constraint$Operator;
-Lsun/security/util/DisabledAlgorithmConstraints$Constraint$Operator;->of(Ljava/lang/String;)Lsun/security/util/DisabledAlgorithmConstraints$Constraint$Operator;
-Lsun/security/util/DisabledAlgorithmConstraints$Constraint$Operator;->valueOf(Ljava/lang/String;)Lsun/security/util/DisabledAlgorithmConstraints$Constraint$Operator;
-Lsun/security/util/DisabledAlgorithmConstraints$Constraint$Operator;->values()[Lsun/security/util/DisabledAlgorithmConstraints$Constraint$Operator;
-Lsun/security/util/DisabledAlgorithmConstraints$Constraint;-><init>()V
-Lsun/security/util/DisabledAlgorithmConstraints$Constraint;->algorithm:Ljava/lang/String;
-Lsun/security/util/DisabledAlgorithmConstraints$Constraint;->nextConstraint:Lsun/security/util/DisabledAlgorithmConstraints$Constraint;
-Lsun/security/util/DisabledAlgorithmConstraints$Constraint;->permits(Ljava/security/Key;)Z
-Lsun/security/util/DisabledAlgorithmConstraints$Constraint;->permits(Lsun/security/util/CertConstraintParameters;)V
-Lsun/security/util/DisabledAlgorithmConstraints$Constraints;-><init>([Ljava/lang/String;)V
-Lsun/security/util/DisabledAlgorithmConstraints$Constraints;->constraintsMap:Ljava/util/Map;
-Lsun/security/util/DisabledAlgorithmConstraints$Constraints;->getConstraints(Ljava/lang/String;)Ljava/util/Set;
-Lsun/security/util/DisabledAlgorithmConstraints$Constraints;->keySizePattern:Ljava/util/regex/Pattern;
-Lsun/security/util/DisabledAlgorithmConstraints$Constraints;->permits(Ljava/security/Key;)Z
-Lsun/security/util/DisabledAlgorithmConstraints$Constraints;->permits(Lsun/security/util/CertConstraintParameters;)V
-Lsun/security/util/DisabledAlgorithmConstraints$jdkCAConstraint;-><init>(Ljava/lang/String;)V
-Lsun/security/util/DisabledAlgorithmConstraints$jdkCAConstraint;->permits(Lsun/security/util/CertConstraintParameters;)V
-Lsun/security/util/DisabledAlgorithmConstraints$KeySizeConstraint;-><init>(Ljava/lang/String;Lsun/security/util/DisabledAlgorithmConstraints$Constraint$Operator;I)V
-Lsun/security/util/DisabledAlgorithmConstraints$KeySizeConstraint;->maxSize:I
-Lsun/security/util/DisabledAlgorithmConstraints$KeySizeConstraint;->minSize:I
-Lsun/security/util/DisabledAlgorithmConstraints$KeySizeConstraint;->permits(Ljava/security/Key;)Z
-Lsun/security/util/DisabledAlgorithmConstraints$KeySizeConstraint;->permits(Lsun/security/util/CertConstraintParameters;)V
-Lsun/security/util/DisabledAlgorithmConstraints$KeySizeConstraint;->permitsImpl(Ljava/security/Key;)Z
-Lsun/security/util/DisabledAlgorithmConstraints$KeySizeConstraint;->prohibitedSize:I
-Lsun/security/util/DisabledAlgorithmConstraints;->algorithmConstraints:Lsun/security/util/DisabledAlgorithmConstraints$Constraints;
-Lsun/security/util/DisabledAlgorithmConstraints;->checkConstraints(Ljava/util/Set;Ljava/lang/String;Ljava/security/Key;Ljava/security/AlgorithmParameters;)Z
-Lsun/security/util/DisabledAlgorithmConstraints;->checkConstraints(Ljava/util/Set;Lsun/security/util/CertConstraintParameters;)V
-Lsun/security/util/DisabledAlgorithmConstraints;->debug:Lsun/security/util/Debug;
-Lsun/security/util/DisabledAlgorithmConstraints;->disabledAlgorithms:[Ljava/lang/String;
-Lsun/security/util/ManifestDigester$Entry;->doOldStyle(Ljava/security/MessageDigest;[BII)V
-Lsun/security/util/ManifestDigester$Entry;->length:I
-Lsun/security/util/ManifestDigester$Entry;->lengthWithBlankLine:I
-Lsun/security/util/ManifestDigester$Entry;->offset:I
-Lsun/security/util/ManifestDigester$Entry;->oldStyle:Z
-Lsun/security/util/ManifestDigester$Entry;->rawBytes:[B
-Lsun/security/util/ManifestDigester$Position;-><init>()V
-Lsun/security/util/ManifestDigester$Position;->endOfFirstLine:I
-Lsun/security/util/ManifestDigester$Position;->endOfSection:I
-Lsun/security/util/ManifestDigester$Position;->startOfNext:I
-Lsun/security/util/ManifestDigester;->entries:Ljava/util/HashMap;
-Lsun/security/util/ManifestDigester;->findSection(ILsun/security/util/ManifestDigester$Position;)Z
-Lsun/security/util/ManifestDigester;->isNameAttr([BI)Z
-Lsun/security/util/ManifestDigester;->rawBytes:[B
-Lsun/security/util/ManifestEntryVerifier$SunProviderHolder;-><init>()V
-Lsun/security/util/ManifestEntryVerifier$SunProviderHolder;->instance:Ljava/security/Provider;
-Lsun/security/util/ManifestEntryVerifier;->createdDigests:Ljava/util/HashMap;
-Lsun/security/util/ManifestEntryVerifier;->debug:Lsun/security/util/Debug;
-Lsun/security/util/ManifestEntryVerifier;->digests:Ljava/util/ArrayList;
-Lsun/security/util/ManifestEntryVerifier;->entry:Ljava/util/jar/JarEntry;
-Lsun/security/util/ManifestEntryVerifier;->hexc:[C
-Lsun/security/util/ManifestEntryVerifier;->man:Ljava/util/jar/Manifest;
-Lsun/security/util/ManifestEntryVerifier;->manifestHashes:Ljava/util/ArrayList;
-Lsun/security/util/ManifestEntryVerifier;->name:Ljava/lang/String;
-Lsun/security/util/ManifestEntryVerifier;->signers:[Ljava/security/CodeSigner;
-Lsun/security/util/ManifestEntryVerifier;->skip:Z
-Lsun/security/util/ManifestEntryVerifier;->toHex([B)Ljava/lang/String;
-Lsun/security/util/ObjectIdentifier$HugeOidNotSupportedByOldJDK;-><init>()V
-Lsun/security/util/ObjectIdentifier$HugeOidNotSupportedByOldJDK;->theOne:Lsun/security/util/ObjectIdentifier$HugeOidNotSupportedByOldJDK;
-Lsun/security/util/ObjectIdentifier;-><init>(Lsun/security/util/DerInputBuffer;)V
-Lsun/security/util/ObjectIdentifier;->check([B)V
-Lsun/security/util/ObjectIdentifier;->checkCount(I)V
-Lsun/security/util/ObjectIdentifier;->checkFirstComponent(I)V
-Lsun/security/util/ObjectIdentifier;->checkFirstComponent(Ljava/math/BigInteger;)V
-Lsun/security/util/ObjectIdentifier;->checkOtherComponent(II)V
-Lsun/security/util/ObjectIdentifier;->checkOtherComponent(ILjava/math/BigInteger;)V
-Lsun/security/util/ObjectIdentifier;->checkSecondComponent(II)V
-Lsun/security/util/ObjectIdentifier;->checkSecondComponent(ILjava/math/BigInteger;)V
-Lsun/security/util/ObjectIdentifier;->componentLen:I
-Lsun/security/util/ObjectIdentifier;->components:Ljava/lang/Object;
-Lsun/security/util/ObjectIdentifier;->componentsCalculated:Z
-Lsun/security/util/ObjectIdentifier;->encode(Lsun/security/util/DerOutputStream;)V
-Lsun/security/util/ObjectIdentifier;->encoding:[B
-Lsun/security/util/ObjectIdentifier;->init([II)V
-Lsun/security/util/ObjectIdentifier;->pack([BIIII)[B
-Lsun/security/util/ObjectIdentifier;->pack7Oid(I[BI)I
-Lsun/security/util/ObjectIdentifier;->pack7Oid(Ljava/math/BigInteger;[BI)I
-Lsun/security/util/ObjectIdentifier;->pack7Oid([BII[BI)I
-Lsun/security/util/ObjectIdentifier;->pack8([BII[BI)I
-Lsun/security/util/ObjectIdentifier;->stringForm:Ljava/lang/String;
-Lsun/security/util/SignatureFileVerifier;->ATTR_DIGEST:Ljava/lang/String;
-Lsun/security/util/SignatureFileVerifier;->block:Lsun/security/pkcs/PKCS7;
-Lsun/security/util/SignatureFileVerifier;->certificateFactory:Ljava/security/cert/CertificateFactory;
-Lsun/security/util/SignatureFileVerifier;->contains([Ljava/security/CodeSigner;Ljava/security/CodeSigner;)Z
-Lsun/security/util/SignatureFileVerifier;->createdDigests:Ljava/util/HashMap;
-Lsun/security/util/SignatureFileVerifier;->debug:Lsun/security/util/Debug;
-Lsun/security/util/SignatureFileVerifier;->DIGEST_PRIMITIVE_SET:Ljava/util/Set;
-Lsun/security/util/SignatureFileVerifier;->getDigest(Ljava/lang/String;)Ljava/security/MessageDigest;
-Lsun/security/util/SignatureFileVerifier;->getSigners([Lsun/security/pkcs/SignerInfo;Lsun/security/pkcs/PKCS7;)[Ljava/security/CodeSigner;
-Lsun/security/util/SignatureFileVerifier;->hexc:[C
-Lsun/security/util/SignatureFileVerifier;->isSubSet([Ljava/security/CodeSigner;[Ljava/security/CodeSigner;)Z
-Lsun/security/util/SignatureFileVerifier;->JAR_DISABLED_CHECK:Lsun/security/util/DisabledAlgorithmConstraints;
-Lsun/security/util/SignatureFileVerifier;->matches([Ljava/security/CodeSigner;[Ljava/security/CodeSigner;[Ljava/security/CodeSigner;)Z
-Lsun/security/util/SignatureFileVerifier;->md:Lsun/security/util/ManifestDigester;
-Lsun/security/util/SignatureFileVerifier;->name:Ljava/lang/String;
-Lsun/security/util/SignatureFileVerifier;->processImpl(Ljava/util/Hashtable;Ljava/util/List;)V
-Lsun/security/util/SignatureFileVerifier;->sfBytes:[B
-Lsun/security/util/SignatureFileVerifier;->signerCache:Ljava/util/ArrayList;
-Lsun/security/util/SignatureFileVerifier;->toHex([B)Ljava/lang/String;
-Lsun/security/util/SignatureFileVerifier;->updateSigners([Ljava/security/CodeSigner;Ljava/util/Hashtable;Ljava/lang/String;)V
-Lsun/security/util/SignatureFileVerifier;->verifyManifestHash(Ljava/util/jar/Manifest;Lsun/security/util/ManifestDigester;Ljava/util/List;)Z
-Lsun/security/util/SignatureFileVerifier;->verifyManifestMainAttrs(Ljava/util/jar/Manifest;Lsun/security/util/ManifestDigester;)Z
-Lsun/security/util/SignatureFileVerifier;->verifySection(Ljava/util/jar/Attributes;Ljava/lang/String;Lsun/security/util/ManifestDigester;)Z
-Lsun/security/util/SignatureFileVerifier;->workaround:Z
-Lsun/security/x509/AlgorithmId;-><init>(Lsun/security/util/ObjectIdentifier;Lsun/security/util/DerValue;)V
-Lsun/security/x509/AlgorithmId;->algid:Lsun/security/util/ObjectIdentifier;
-Lsun/security/x509/AlgorithmId;->algOID(Ljava/lang/String;)Lsun/security/util/ObjectIdentifier;
-Lsun/security/x509/AlgorithmId;->algParams:Ljava/security/AlgorithmParameters;
-Lsun/security/x509/AlgorithmId;->constructedFromDer:Z
-Lsun/security/x509/AlgorithmId;->DH_data:[I
-Lsun/security/x509/AlgorithmId;->DH_PKIX_data:[I
-Lsun/security/x509/AlgorithmId;->dsaWithSHA1_PKIX_data:[I
-Lsun/security/x509/AlgorithmId;->DSA_OIW_data:[I
-Lsun/security/x509/AlgorithmId;->DSA_PKIX_data:[I
-Lsun/security/x509/AlgorithmId;->initOidTableVersion:I
-Lsun/security/x509/AlgorithmId;->md2WithRSAEncryption_data:[I
-Lsun/security/x509/AlgorithmId;->md5WithRSAEncryption_data:[I
-Lsun/security/x509/AlgorithmId;->nameTable:Ljava/util/Map;
-Lsun/security/x509/AlgorithmId;->oidTable:Ljava/util/Map;
-Lsun/security/x509/AlgorithmId;->reinitializeMappingTableLocked()V
-Lsun/security/x509/AlgorithmId;->RSAEncryption_data:[I
-Lsun/security/x509/AlgorithmId;->RSA_data:[I
-Lsun/security/x509/AlgorithmId;->sha1WithDSA_OIW_data:[I
-Lsun/security/x509/AlgorithmId;->sha1WithRSAEncryption_data:[I
-Lsun/security/x509/AlgorithmId;->sha1WithRSAEncryption_OIW_data:[I
-Lsun/security/x509/AlgorithmId;->sha224WithRSAEncryption_data:[I
-Lsun/security/x509/AlgorithmId;->sha256WithRSAEncryption_data:[I
-Lsun/security/x509/AlgorithmId;->sha384WithRSAEncryption_data:[I
-Lsun/security/x509/AlgorithmId;->sha512WithRSAEncryption_data:[I
-Lsun/security/x509/AlgorithmId;->shaWithDSA_OIW_data:[I
-Lsun/security/x509/AVA;-><init>(Ljava/io/Reader;)V
-Lsun/security/x509/AVA;-><init>(Ljava/io/Reader;I)V
-Lsun/security/x509/AVA;-><init>(Ljava/io/Reader;ILjava/util/Map;)V
-Lsun/security/x509/AVA;-><init>(Ljava/io/Reader;Ljava/util/Map;)V
-Lsun/security/x509/AVA;-><init>(Lsun/security/util/DerInputStream;)V
-Lsun/security/x509/AVA;-><init>(Lsun/security/util/DerValue;)V
-Lsun/security/x509/AVA;->debug:Lsun/security/util/Debug;
-Lsun/security/x509/AVA;->DEFAULT:I
-Lsun/security/x509/AVA;->escapedDefault:Ljava/lang/String;
-Lsun/security/x509/AVA;->getEmbeddedHexPair(ILjava/io/Reader;)Ljava/lang/Byte;
-Lsun/security/x509/AVA;->getEmbeddedHexString(Ljava/util/List;)Ljava/lang/String;
-Lsun/security/x509/AVA;->hexDigits:Ljava/lang/String;
-Lsun/security/x509/AVA;->isDerString(Lsun/security/util/DerValue;Z)Z
-Lsun/security/x509/AVA;->isTerminator(II)Z
-Lsun/security/x509/AVA;->oid:Lsun/security/util/ObjectIdentifier;
-Lsun/security/x509/AVA;->parseHexString(Ljava/io/Reader;I)Lsun/security/util/DerValue;
-Lsun/security/x509/AVA;->parseQuotedString(Ljava/io/Reader;Ljava/lang/StringBuilder;)Lsun/security/util/DerValue;
-Lsun/security/x509/AVA;->parseString(Ljava/io/Reader;IILjava/lang/StringBuilder;)Lsun/security/util/DerValue;
-Lsun/security/x509/AVA;->PRESERVE_OLD_DC_ENCODING:Z
-Lsun/security/x509/AVA;->readChar(Ljava/io/Reader;Ljava/lang/String;)I
-Lsun/security/x509/AVA;->RFC1779:I
-Lsun/security/x509/AVA;->RFC2253:I
-Lsun/security/x509/AVA;->specialChars1779:Ljava/lang/String;
-Lsun/security/x509/AVA;->specialChars2253:Ljava/lang/String;
-Lsun/security/x509/AVA;->specialCharsDefault:Ljava/lang/String;
-Lsun/security/x509/AVA;->toKeyword(ILjava/util/Map;)Ljava/lang/String;
-Lsun/security/x509/AVA;->toKeywordValueString(Ljava/lang/String;)Ljava/lang/String;
-Lsun/security/x509/AVA;->trailingSpace(Ljava/io/Reader;)Z
-Lsun/security/x509/AVA;->value:Lsun/security/util/DerValue;
-Lsun/security/x509/CertificatePolicyId;->id:Lsun/security/util/ObjectIdentifier;
-Lsun/security/x509/CertificatePolicySet;->ids:Ljava/util/Vector;
-Lsun/security/x509/Extension;->hashMagic:I
-Lsun/security/x509/GeneralName;->name:Lsun/security/x509/GeneralNameInterface;
-Lsun/security/x509/GeneralSubtree;->maximum:I
-Lsun/security/x509/GeneralSubtree;->minimum:I
-Lsun/security/x509/GeneralSubtree;->MIN_DEFAULT:I
-Lsun/security/x509/GeneralSubtree;->myhash:I
-Lsun/security/x509/GeneralSubtree;->name:Lsun/security/x509/GeneralName;
-Lsun/security/x509/GeneralSubtree;->TAG_MAX:B
-Lsun/security/x509/GeneralSubtree;->TAG_MIN:B
-Lsun/security/x509/GeneralSubtrees;-><init>(Lsun/security/x509/GeneralSubtrees;)V
-Lsun/security/x509/GeneralSubtrees;->createWidestSubtree(Lsun/security/x509/GeneralNameInterface;)Lsun/security/x509/GeneralSubtree;
-Lsun/security/x509/GeneralSubtrees;->getGeneralNameInterface(I)Lsun/security/x509/GeneralNameInterface;
-Lsun/security/x509/GeneralSubtrees;->getGeneralNameInterface(Lsun/security/x509/GeneralSubtree;)Lsun/security/x509/GeneralNameInterface;
-Lsun/security/x509/GeneralSubtrees;->minimize()V
-Lsun/security/x509/GeneralSubtrees;->NAME_DIFF_TYPE:I
-Lsun/security/x509/GeneralSubtrees;->NAME_MATCH:I
-Lsun/security/x509/GeneralSubtrees;->NAME_NARROWS:I
-Lsun/security/x509/GeneralSubtrees;->NAME_SAME_TYPE:I
-Lsun/security/x509/GeneralSubtrees;->NAME_WIDENS:I
-Lsun/security/x509/GeneralSubtrees;->trees:Ljava/util/List;
-Lsun/security/x509/NameConstraintsExtension;->calcMinMax()V
-Lsun/security/x509/NameConstraintsExtension;->encodeThis()V
-Lsun/security/x509/NameConstraintsExtension;->excluded:Lsun/security/x509/GeneralSubtrees;
-Lsun/security/x509/NameConstraintsExtension;->hasMax:Z
-Lsun/security/x509/NameConstraintsExtension;->hasMin:Z
-Lsun/security/x509/NameConstraintsExtension;->minMaxValid:Z
-Lsun/security/x509/NameConstraintsExtension;->permitted:Lsun/security/x509/GeneralSubtrees;
-Lsun/security/x509/NameConstraintsExtension;->TAG_EXCLUDED:B
-Lsun/security/x509/NameConstraintsExtension;->TAG_PERMITTED:B
-Lsun/security/x509/RDN;-><init>(I)V
-Lsun/security/x509/RDN;-><init>(Ljava/lang/String;Ljava/lang/String;)V
-Lsun/security/x509/RDN;-><init>(Ljava/lang/String;Ljava/lang/String;Ljava/util/Map;)V
-Lsun/security/x509/RDN;-><init>(Lsun/security/util/DerValue;)V
-Lsun/security/x509/RDN;->assertion:[Lsun/security/x509/AVA;
-Lsun/security/x509/RDN;->avaList:Ljava/util/List;
-Lsun/security/x509/RDN;->canonicalString:Ljava/lang/String;
-Lsun/security/x509/RDN;->encode(Lsun/security/util/DerOutputStream;)V
-Lsun/security/x509/RDN;->findAttribute(Lsun/security/util/ObjectIdentifier;)Lsun/security/util/DerValue;
-Lsun/security/x509/RDN;->toRFC2253StringInternal(ZLjava/util/Map;)Ljava/lang/String;
-Lsun/security/x509/X500Name;->allAvaList:Ljava/util/List;
-Lsun/security/x509/X500Name;->canonicalDn:Ljava/lang/String;
-Lsun/security/x509/X500Name;->checkNoNewLinesNorTabsAtBeginningOfDN(Ljava/lang/String;)V
-Lsun/security/x509/X500Name;->commonName_data:[I
-Lsun/security/x509/X500Name;->countQuotes(Ljava/lang/String;II)I
-Lsun/security/x509/X500Name;->countryName_data:[I
-Lsun/security/x509/X500Name;->dn:Ljava/lang/String;
-Lsun/security/x509/X500Name;->DNQUALIFIER_DATA:[I
-Lsun/security/x509/X500Name;->DOMAIN_COMPONENT_DATA:[I
-Lsun/security/x509/X500Name;->encoded:[B
-Lsun/security/x509/X500Name;->escaped(IILjava/lang/String;)Z
-Lsun/security/x509/X500Name;->findAttribute(Lsun/security/util/ObjectIdentifier;)Lsun/security/util/DerValue;
-Lsun/security/x509/X500Name;->generateDN()V
-Lsun/security/x509/X500Name;->generateRFC1779DN(Ljava/util/Map;)Ljava/lang/String;
-Lsun/security/x509/X500Name;->generateRFC2253DN(Ljava/util/Map;)Ljava/lang/String;
-Lsun/security/x509/X500Name;->GENERATIONQUALIFIER_DATA:[I
-Lsun/security/x509/X500Name;->getString(Lsun/security/util/DerValue;)Ljava/lang/String;
-Lsun/security/x509/X500Name;->GIVENNAME_DATA:[I
-Lsun/security/x509/X500Name;->INITIALS_DATA:[I
-Lsun/security/x509/X500Name;->intern(Lsun/security/util/ObjectIdentifier;)Lsun/security/util/ObjectIdentifier;
-Lsun/security/x509/X500Name;->internedOIDs:Ljava/util/Map;
-Lsun/security/x509/X500Name;->ipAddress_data:[I
-Lsun/security/x509/X500Name;->isWithinSubtree(Lsun/security/x509/X500Name;)Z
-Lsun/security/x509/X500Name;->localityName_data:[I
-Lsun/security/x509/X500Name;->names:[Lsun/security/x509/RDN;
-Lsun/security/x509/X500Name;->orgName_data:[I
-Lsun/security/x509/X500Name;->orgUnitName_data:[I
-Lsun/security/x509/X500Name;->parseDER(Lsun/security/util/DerInputStream;)V
-Lsun/security/x509/X500Name;->parseDN(Ljava/lang/String;Ljava/util/Map;)V
-Lsun/security/x509/X500Name;->parseRFC2253DN(Ljava/lang/String;)V
-Lsun/security/x509/X500Name;->principalConstructor:Ljava/lang/reflect/Constructor;
-Lsun/security/x509/X500Name;->principalField:Ljava/lang/reflect/Field;
-Lsun/security/x509/X500Name;->rdnList:Ljava/util/List;
-Lsun/security/x509/X500Name;->rfc1779Dn:Ljava/lang/String;
-Lsun/security/x509/X500Name;->rfc2253Dn:Ljava/lang/String;
-Lsun/security/x509/X500Name;->SERIALNUMBER_DATA:[I
-Lsun/security/x509/X500Name;->stateName_data:[I
-Lsun/security/x509/X500Name;->streetAddress_data:[I
-Lsun/security/x509/X500Name;->SURNAME_DATA:[I
-Lsun/security/x509/X500Name;->title_data:[I
-Lsun/security/x509/X500Name;->userid_data:[I
-Lsun/security/x509/X500Name;->x500Principal:Ljavax/security/auth/x500/X500Principal;
-Lsun/util/locale/BaseLocale$Cache;-><init>()V
-Lsun/util/locale/BaseLocale$Cache;->createObject(Ljava/lang/Object;)Ljava/lang/Object;
-Lsun/util/locale/BaseLocale$Cache;->createObject(Lsun/util/locale/BaseLocale$Key;)Lsun/util/locale/BaseLocale;
-Lsun/util/locale/BaseLocale$Cache;->normalizeKey(Ljava/lang/Object;)Ljava/lang/Object;
-Lsun/util/locale/BaseLocale$Cache;->normalizeKey(Lsun/util/locale/BaseLocale$Key;)Lsun/util/locale/BaseLocale$Key;
-Lsun/util/locale/BaseLocale$Key;-><init>(Ljava/lang/String;Ljava/lang/String;)V
-Lsun/util/locale/BaseLocale$Key;-><init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
-Lsun/util/locale/BaseLocale$Key;-><init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Z)V
-Lsun/util/locale/BaseLocale$Key;->hash:I
-Lsun/util/locale/BaseLocale$Key;->lang:Ljava/lang/ref/SoftReference;
-Lsun/util/locale/BaseLocale$Key;->normalize(Lsun/util/locale/BaseLocale$Key;)Lsun/util/locale/BaseLocale$Key;
-Lsun/util/locale/BaseLocale$Key;->normalized:Z
-Lsun/util/locale/BaseLocale$Key;->regn:Ljava/lang/ref/SoftReference;
-Lsun/util/locale/BaseLocale$Key;->scrt:Ljava/lang/ref/SoftReference;
-Lsun/util/locale/BaseLocale$Key;->vart:Ljava/lang/ref/SoftReference;
-Lsun/util/locale/BaseLocale;-><init>(Ljava/lang/String;Ljava/lang/String;)V
-Lsun/util/locale/BaseLocale;-><init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
-Lsun/util/locale/BaseLocale;->CACHE:Lsun/util/locale/BaseLocale$Cache;
-Lsun/util/locale/BaseLocale;->hash:I
-Lsun/util/locale/BaseLocale;->language:Ljava/lang/String;
-Lsun/util/locale/BaseLocale;->region:Ljava/lang/String;
-Lsun/util/locale/BaseLocale;->script:Ljava/lang/String;
-Lsun/util/locale/BaseLocale;->variant:Ljava/lang/String;
-Lsun/util/locale/Extension;-><init>(C)V
-Lsun/util/locale/Extension;-><init>(CLjava/lang/String;)V
-Lsun/util/locale/Extension;->getID()Ljava/lang/String;
-Lsun/util/locale/Extension;->getKey()C
-Lsun/util/locale/Extension;->getValue()Ljava/lang/String;
-Lsun/util/locale/Extension;->id:Ljava/lang/String;
-Lsun/util/locale/Extension;->key:C
-Lsun/util/locale/Extension;->setValue(Ljava/lang/String;)V
-Lsun/util/locale/Extension;->value:Ljava/lang/String;
-Lsun/util/locale/InternalLocaleBuilder$CaseInsensitiveChar;-><init>(C)V
-Lsun/util/locale/InternalLocaleBuilder$CaseInsensitiveChar;-><init>(Ljava/lang/String;)V
-Lsun/util/locale/InternalLocaleBuilder$CaseInsensitiveChar;->ch:C
-Lsun/util/locale/InternalLocaleBuilder$CaseInsensitiveChar;->lowerCh:C
-Lsun/util/locale/InternalLocaleBuilder$CaseInsensitiveChar;->value()C
-Lsun/util/locale/InternalLocaleBuilder$CaseInsensitiveString;-><init>(Ljava/lang/String;)V
-Lsun/util/locale/InternalLocaleBuilder$CaseInsensitiveString;->lowerStr:Ljava/lang/String;
-Lsun/util/locale/InternalLocaleBuilder$CaseInsensitiveString;->str:Ljava/lang/String;
-Lsun/util/locale/InternalLocaleBuilder$CaseInsensitiveString;->value()Ljava/lang/String;
-Lsun/util/locale/InternalLocaleBuilder;->checkVariants(Ljava/lang/String;Ljava/lang/String;)I
-Lsun/util/locale/InternalLocaleBuilder;->extensions:Ljava/util/Map;
-Lsun/util/locale/InternalLocaleBuilder;->language:Ljava/lang/String;
-Lsun/util/locale/InternalLocaleBuilder;->PRIVATEUSE_KEY:Lsun/util/locale/InternalLocaleBuilder$CaseInsensitiveChar;
-Lsun/util/locale/InternalLocaleBuilder;->region:Ljava/lang/String;
-Lsun/util/locale/InternalLocaleBuilder;->removePrivateuseVariant(Ljava/lang/String;)Ljava/lang/String;
-Lsun/util/locale/InternalLocaleBuilder;->script:Ljava/lang/String;
-Lsun/util/locale/InternalLocaleBuilder;->setExtensions(Ljava/util/List;Ljava/lang/String;)Lsun/util/locale/InternalLocaleBuilder;
-Lsun/util/locale/InternalLocaleBuilder;->setUnicodeLocaleExtension(Ljava/lang/String;)V
-Lsun/util/locale/InternalLocaleBuilder;->uattributes:Ljava/util/Set;
-Lsun/util/locale/InternalLocaleBuilder;->ukeywords:Ljava/util/Map;
-Lsun/util/locale/InternalLocaleBuilder;->variant:Ljava/lang/String;
-Lsun/util/locale/LanguageTag;-><init>()V
-Lsun/util/locale/LanguageTag;->extensions:Ljava/util/List;
-Lsun/util/locale/LanguageTag;->extlangs:Ljava/util/List;
-Lsun/util/locale/LanguageTag;->GRANDFATHERED:Ljava/util/Map;
-Lsun/util/locale/LanguageTag;->language:Ljava/lang/String;
-Lsun/util/locale/LanguageTag;->parseExtensions(Lsun/util/locale/StringTokenIterator;Lsun/util/locale/ParseStatus;)Z
-Lsun/util/locale/LanguageTag;->parseExtlangs(Lsun/util/locale/StringTokenIterator;Lsun/util/locale/ParseStatus;)Z
-Lsun/util/locale/LanguageTag;->parseLanguage(Lsun/util/locale/StringTokenIterator;Lsun/util/locale/ParseStatus;)Z
-Lsun/util/locale/LanguageTag;->parsePrivateuse(Lsun/util/locale/StringTokenIterator;Lsun/util/locale/ParseStatus;)Z
-Lsun/util/locale/LanguageTag;->parseRegion(Lsun/util/locale/StringTokenIterator;Lsun/util/locale/ParseStatus;)Z
-Lsun/util/locale/LanguageTag;->parseScript(Lsun/util/locale/StringTokenIterator;Lsun/util/locale/ParseStatus;)Z
-Lsun/util/locale/LanguageTag;->parseVariants(Lsun/util/locale/StringTokenIterator;Lsun/util/locale/ParseStatus;)Z
-Lsun/util/locale/LanguageTag;->privateuse:Ljava/lang/String;
-Lsun/util/locale/LanguageTag;->region:Ljava/lang/String;
-Lsun/util/locale/LanguageTag;->script:Ljava/lang/String;
-Lsun/util/locale/LanguageTag;->variants:Ljava/util/List;
-Lsun/util/locale/LocaleExtensions;-><init>(Ljava/lang/String;Ljava/lang/Character;Lsun/util/locale/Extension;)V
-Lsun/util/locale/LocaleExtensions;-><init>(Ljava/util/Map;Ljava/util/Set;Ljava/util/Map;)V
-Lsun/util/locale/LocaleExtensions;->extensionMap:Ljava/util/Map;
-Lsun/util/locale/LocaleExtensions;->id:Ljava/lang/String;
-Lsun/util/locale/LocaleExtensions;->toID(Ljava/util/SortedMap;)Ljava/lang/String;
-Lsun/util/locale/LocaleObjectCache$CacheEntry;-><init>(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/ref/ReferenceQueue;)V
-Lsun/util/locale/LocaleObjectCache$CacheEntry;->getKey()Ljava/lang/Object;
-Lsun/util/locale/LocaleObjectCache$CacheEntry;->key:Ljava/lang/Object;
-Lsun/util/locale/LocaleObjectCache;->cleanStaleEntries()V
-Lsun/util/locale/LocaleObjectCache;->map:Ljava/util/concurrent/ConcurrentMap;
-Lsun/util/locale/LocaleObjectCache;->queue:Ljava/lang/ref/ReferenceQueue;
-Lsun/util/locale/LocaleSyntaxException;->index:I
-Lsun/util/locale/ParseStatus;->errorIndex:I
-Lsun/util/locale/ParseStatus;->errorMsg:Ljava/lang/String;
-Lsun/util/locale/ParseStatus;->parseLength:I
-Lsun/util/locale/StringTokenIterator;->delimiterChar:C
-Lsun/util/locale/StringTokenIterator;->dlms:Ljava/lang/String;
-Lsun/util/locale/StringTokenIterator;->done:Z
-Lsun/util/locale/StringTokenIterator;->end:I
-Lsun/util/locale/StringTokenIterator;->nextDelimiter(I)I
-Lsun/util/locale/StringTokenIterator;->start:I
-Lsun/util/locale/StringTokenIterator;->text:Ljava/lang/String;
-Lsun/util/locale/StringTokenIterator;->token:Ljava/lang/String;
diff --git a/boot/hiddenapi/hiddenapi-unsupported-packages.txt b/boot/hiddenapi/hiddenapi-unsupported-packages.txt
index 986d259..145f0c22 100644
--- a/boot/hiddenapi/hiddenapi-unsupported-packages.txt
+++ b/boot/hiddenapi/hiddenapi-unsupported-packages.txt
@@ -11,33 +11,5 @@
gov.nist.javax.sip.parser.extensions
gov.nist.javax.sip.parser.ims
gov.nist.javax.sip.stack
-org.apache.xalan
-org.apache.xalan.extensions
-org.apache.xalan.processor
-org.apache.xalan.res
-org.apache.xalan.serialize
-org.apache.xalan.templates
-org.apache.xalan.transformer
-org.apache.xalan.xslt
-org.apache.xml.dtm
-org.apache.xml.dtm.ref
-org.apache.xml.dtm.ref.dom2dtm
-org.apache.xml.dtm.ref.sax2dtm
-org.apache.xml.res
-org.apache.xml.serializer
-org.apache.xml.serializer.dom3
-org.apache.xml.serializer.utils
-org.apache.xml.utils
-org.apache.xml.utils.res
-org.apache.xpath
-org.apache.xpath.axes
-org.apache.xpath.compiler
-org.apache.xpath.domapi
-org.apache.xpath.functions
-org.apache.xpath.jaxp
-org.apache.xpath.objects
-org.apache.xpath.operations
-org.apache.xpath.patterns
-org.apache.xpath.res
org.ccil.cowan.tagsoup
org.ccil.cowan.tagsoup.jaxp
diff --git a/cmds/uiautomator/library/Android.bp b/cmds/uiautomator/library/Android.bp
index 469b452..cffc078 100644
--- a/cmds/uiautomator/library/Android.bp
+++ b/cmds/uiautomator/library/Android.bp
@@ -59,8 +59,8 @@
"android.test.runner",
"junit",
"android.test.base",
- "unsupportedappusage",
],
+ sdk_version: "current",
installable: false,
custom_template: "droiddoc-templates-sdk",
}
diff --git a/core/api/current.txt b/core/api/current.txt
index a4afe78..d603fa0 100644
--- a/core/api/current.txt
+++ b/core/api/current.txt
@@ -592,6 +592,7 @@
field public static final int editTextStyle = 16842862; // 0x101006e
field @Deprecated public static final int editable = 16843115; // 0x101016b
field public static final int editorExtras = 16843300; // 0x1010224
+ field public static final int effectColor;
field public static final int elegantTextHeight = 16843869; // 0x101045d
field public static final int elevation = 16843840; // 0x1010440
field public static final int ellipsize = 16842923; // 0x10100ab
@@ -4022,6 +4023,7 @@
method public void onPictureInPictureModeChanged(boolean, android.content.res.Configuration);
method @Deprecated public void onPictureInPictureModeChanged(boolean);
method public boolean onPictureInPictureRequested();
+ method public void onPictureInPictureUiStateChanged(@NonNull android.app.PictureInPictureUiState);
method @CallSuper protected void onPostCreate(@Nullable android.os.Bundle);
method public void onPostCreate(@Nullable android.os.Bundle, @Nullable android.os.PersistableBundle);
method @CallSuper protected void onPostResume();
@@ -6414,6 +6416,13 @@
method public android.app.PictureInPictureParams.Builder setSourceRectHint(android.graphics.Rect);
}
+ public final class PictureInPictureUiState implements android.os.Parcelable {
+ method public int describeContents();
+ method public boolean isStashed();
+ method public void writeToParcel(@NonNull android.os.Parcel, int);
+ field @NonNull public static final android.os.Parcelable.Creator<android.app.PictureInPictureUiState> CREATOR;
+ }
+
public class Presentation extends android.app.Dialog {
ctor public Presentation(android.content.Context, android.view.Display);
ctor public Presentation(android.content.Context, android.view.Display, int);
@@ -11262,7 +11271,6 @@
field public static final String EXTRA_TIMEZONE = "time-zone";
field public static final String EXTRA_TITLE = "android.intent.extra.TITLE";
field public static final String EXTRA_UID = "android.intent.extra.UID";
- field public static final String EXTRA_UNSTARTABLE_REASON = "android.intent.extra.UNSTARTABLE_REASON";
field public static final String EXTRA_USER = "android.intent.extra.USER";
field public static final String EXTRA_USER_INITIATED = "android.intent.extra.USER_INITIATED";
field public static final int FILL_IN_ACTION = 1; // 0x1
@@ -16791,8 +16799,10 @@
public class RippleDrawable extends android.graphics.drawable.LayerDrawable {
ctor public RippleDrawable(@NonNull android.content.res.ColorStateList, @Nullable android.graphics.drawable.Drawable, @Nullable android.graphics.drawable.Drawable);
+ method @NonNull public android.content.res.ColorStateList getEffectColor();
method public int getRadius();
- method public void setColor(android.content.res.ColorStateList);
+ method public void setColor(@NonNull android.content.res.ColorStateList);
+ method public void setEffectColor(@NonNull android.content.res.ColorStateList);
method public void setRadius(int);
field public static final int RADIUS_AUTO = -1; // 0xffffffff
}
@@ -23297,6 +23307,7 @@
}
public final class MediaRouter2 {
+ method @Nullable public android.media.MediaRouter2.RoutingController getController(@NonNull String);
method @NonNull public java.util.List<android.media.MediaRouter2.RoutingController> getControllers();
method @NonNull public static android.media.MediaRouter2 getInstance(@NonNull android.content.Context);
method @NonNull public java.util.List<android.media.MediaRoute2Info> getRoutes();
@@ -24611,7 +24622,6 @@
package android.media.metrics {
public abstract class Event {
- ctor protected Event(long);
method @NonNull public android.os.Bundle getMetricsBundle();
method @IntRange(from=0xffffffff) public long getTimeSinceCreatedMillis();
}
@@ -24621,7 +24631,7 @@
field @NonNull public static final android.media.metrics.LogSessionId LOG_SESSION_ID_NONE;
}
- public class MediaMetricsManager {
+ public final class MediaMetricsManager {
method @NonNull public android.media.metrics.PlaybackSession createPlaybackSession();
method @NonNull public android.media.metrics.RecordingSession createRecordingSession();
field public static final long INVALID_TIMESTAMP = -1L; // 0xffffffffffffffffL
@@ -25192,6 +25202,7 @@
method public float getPlaybackSpeed();
method public long getPosition();
method public int getState();
+ method public boolean isActive();
method public void writeToParcel(android.os.Parcel, int);
field public static final long ACTION_FAST_FORWARD = 64L; // 0x40L
field public static final long ACTION_PAUSE = 2L; // 0x2L
@@ -37728,16 +37739,16 @@
method @NonNull public java.util.Map<android.view.autofill.AutofillId,android.service.autofill.FieldClassification> getFieldsClassification();
method @NonNull public java.util.Set<java.lang.String> getIgnoredDatasetIds();
method @NonNull public java.util.Map<android.view.autofill.AutofillId,java.util.Set<java.lang.String>> getManuallyEnteredField();
- method public int getNoSaveReason();
+ method public int getNoSaveUiReason();
method @NonNull public java.util.Set<java.lang.String> getSelectedDatasetIds();
method public int getType();
- field public static final int NO_SAVE_REASON_DATASET_MATCH = 6; // 0x6
- field public static final int NO_SAVE_REASON_FIELD_VALIDATION_FAILED = 5; // 0x5
- field public static final int NO_SAVE_REASON_HAS_EMPTY_REQUIRED = 3; // 0x3
- field public static final int NO_SAVE_REASON_NONE = 0; // 0x0
- field public static final int NO_SAVE_REASON_NO_SAVE_INFO = 1; // 0x1
- field public static final int NO_SAVE_REASON_NO_VALUE_CHANGED = 4; // 0x4
- field public static final int NO_SAVE_REASON_WITH_DELAY_SAVE_FLAG = 2; // 0x2
+ field public static final int NO_SAVE_UI_REASON_DATASET_MATCH = 6; // 0x6
+ field public static final int NO_SAVE_UI_REASON_FIELD_VALIDATION_FAILED = 5; // 0x5
+ field public static final int NO_SAVE_UI_REASON_HAS_EMPTY_REQUIRED = 3; // 0x3
+ field public static final int NO_SAVE_UI_REASON_NONE = 0; // 0x0
+ field public static final int NO_SAVE_UI_REASON_NO_SAVE_INFO = 1; // 0x1
+ field public static final int NO_SAVE_UI_REASON_NO_VALUE_CHANGED = 4; // 0x4
+ field public static final int NO_SAVE_UI_REASON_WITH_DELAY_SAVE_FLAG = 2; // 0x2
field public static final int TYPE_AUTHENTICATION_SELECTED = 2; // 0x2
field public static final int TYPE_CONTEXT_COMMITTED = 4; // 0x4
field public static final int TYPE_DATASETS_SHOWN = 5; // 0x5
@@ -43064,6 +43075,13 @@
field @NonNull public static final android.os.Parcelable.Creator<android.telephony.data.TrafficDescriptor> CREATOR;
}
+ public static final class TrafficDescriptor.Builder {
+ ctor public TrafficDescriptor.Builder();
+ method @NonNull public android.telephony.data.TrafficDescriptor build();
+ method @NonNull public android.telephony.data.TrafficDescriptor.Builder setDataNetworkName(@NonNull String);
+ method @NonNull public android.telephony.data.TrafficDescriptor.Builder setOsAppId(@NonNull byte[]);
+ }
+
public final class UrspRule implements android.os.Parcelable {
method public int describeContents();
method @IntRange(from=0x0, to=0xff) public int getPrecedence();
@@ -48450,6 +48468,7 @@
method public boolean checkInputConnectionProxy(android.view.View);
method public void clearAnimation();
method public void clearFocus();
+ method public void clearViewTranslationCallback();
method public static int combineMeasuredStates(int, int);
method protected int computeHorizontalScrollExtent();
method protected int computeHorizontalScrollOffset();
@@ -48486,7 +48505,7 @@
method public boolean dispatchPopulateAccessibilityEvent(android.view.accessibility.AccessibilityEvent);
method public void dispatchProvideAutofillStructure(@NonNull android.view.ViewStructure, int);
method public void dispatchProvideStructure(android.view.ViewStructure);
- method public void dispatchRequestTranslation(@NonNull java.util.Map<android.view.autofill.AutofillId,long[]>, @NonNull int[], @Nullable android.view.translation.TranslationCapability, @NonNull java.util.List<android.view.translation.ViewTranslationRequest>);
+ method public void dispatchRequestTranslation(@NonNull java.util.Map<android.view.autofill.AutofillId,long[]>, @NonNull int[], @NonNull android.view.translation.TranslationCapability, @NonNull java.util.List<android.view.translation.ViewTranslationRequest>);
method protected void dispatchRestoreInstanceState(android.util.SparseArray<android.os.Parcelable>);
method protected void dispatchSaveInstanceState(android.util.SparseArray<android.os.Parcelable>);
method public void dispatchScrollCaptureSearch(@NonNull android.graphics.Rect, @NonNull android.graphics.Point, @NonNull java.util.function.Consumer<android.view.ScrollCaptureTarget>);
@@ -48683,7 +48702,7 @@
method @Nullable public android.graphics.drawable.Drawable getVerticalScrollbarTrackDrawable();
method public int getVerticalScrollbarWidth();
method @Nullable public android.view.ViewRoot getViewRoot();
- method @Nullable public android.view.translation.ViewTranslationCallback getViewTranslationCallback();
+ method @Nullable public android.view.translation.ViewTranslationResponse getViewTranslationResponse();
method public android.view.ViewTreeObserver getViewTreeObserver();
method public int getVisibility();
method public final int getWidth();
@@ -48783,8 +48802,8 @@
method protected void onCreateContextMenu(android.view.ContextMenu);
method protected int[] onCreateDrawableState(int);
method public android.view.inputmethod.InputConnection onCreateInputConnection(android.view.inputmethod.EditorInfo);
- method @Nullable public android.view.translation.ViewTranslationRequest onCreateTranslationRequest(@NonNull int[]);
- method public void onCreateTranslationRequests(@NonNull long[], @NonNull int[], @NonNull java.util.function.Consumer<android.view.translation.ViewTranslationRequest>);
+ method public void onCreateViewTranslationRequest(@NonNull int[], @NonNull java.util.function.Consumer<android.view.translation.ViewTranslationRequest>);
+ method public void onCreateVirtualViewTranslationRequests(@NonNull long[], @NonNull int[], @NonNull java.util.function.Consumer<android.view.translation.ViewTranslationRequest>);
method @CallSuper protected void onDetachedFromWindow();
method protected void onDisplayHint(int);
method public boolean onDragEvent(android.view.DragEvent);
@@ -48829,8 +48848,8 @@
method public void onStartTemporaryDetach();
method public boolean onTouchEvent(android.view.MotionEvent);
method public boolean onTrackballEvent(android.view.MotionEvent);
- method public void onTranslationResponse(@NonNull android.view.translation.ViewTranslationResponse);
- method public void onTranslationResponse(@NonNull android.util.LongSparseArray<android.view.translation.ViewTranslationResponse>);
+ method public void onViewTranslationResponse(@NonNull android.view.translation.ViewTranslationResponse);
+ method public void onVirtualViewTranslationResponses(@NonNull android.util.LongSparseArray<android.view.translation.ViewTranslationResponse>);
method @CallSuper public void onVisibilityAggregated(boolean);
method protected void onVisibilityChanged(@NonNull android.view.View, int);
method public void onWindowFocusChanged(boolean);
@@ -52668,6 +52687,22 @@
method public void onGetSuggestions(android.view.textservice.SuggestionsInfo[]);
}
+ public static class SpellCheckerSession.SpellCheckerSessionParams {
+ method @NonNull public android.os.Bundle getExtras();
+ method @Nullable public java.util.Locale getLocale();
+ method public int getSupportedAttributes();
+ method public boolean shouldReferToSpellCheckerLanguageSettings();
+ }
+
+ public static final class SpellCheckerSession.SpellCheckerSessionParams.Builder {
+ ctor public SpellCheckerSession.SpellCheckerSessionParams.Builder();
+ method @NonNull public android.view.textservice.SpellCheckerSession.SpellCheckerSessionParams build();
+ method @NonNull public android.view.textservice.SpellCheckerSession.SpellCheckerSessionParams.Builder setExtras(@NonNull android.os.Bundle);
+ method @NonNull public android.view.textservice.SpellCheckerSession.SpellCheckerSessionParams.Builder setLocale(@Nullable java.util.Locale);
+ method @NonNull public android.view.textservice.SpellCheckerSession.SpellCheckerSessionParams.Builder setShouldReferToSpellCheckerLanguageSettings(boolean);
+ method @NonNull public android.view.textservice.SpellCheckerSession.SpellCheckerSessionParams.Builder setSupportedAttributes(int);
+ }
+
public final class SpellCheckerSubtype implements android.os.Parcelable {
ctor @Deprecated public SpellCheckerSubtype(int, String, String);
method public boolean containsExtraValueKey(String);
@@ -52721,7 +52756,7 @@
method @NonNull public java.util.List<android.view.textservice.SpellCheckerInfo> getEnabledSpellCheckerInfos();
method public boolean isSpellCheckerEnabled();
method @Nullable public android.view.textservice.SpellCheckerSession newSpellCheckerSession(@Nullable android.os.Bundle, @Nullable java.util.Locale, @NonNull android.view.textservice.SpellCheckerSession.SpellCheckerSessionListener, boolean);
- method @Nullable public android.view.textservice.SpellCheckerSession newSpellCheckerSession(@Nullable java.util.Locale, boolean, int, @Nullable android.os.Bundle, @NonNull java.util.concurrent.Executor, @NonNull android.view.textservice.SpellCheckerSession.SpellCheckerSessionListener);
+ method @Nullable public android.view.textservice.SpellCheckerSession newSpellCheckerSession(@NonNull android.view.textservice.SpellCheckerSession.SpellCheckerSessionParams, @NonNull java.util.concurrent.Executor, @NonNull android.view.textservice.SpellCheckerSession.SpellCheckerSessionListener);
}
}
diff --git a/core/api/module-lib-current.txt b/core/api/module-lib-current.txt
index b653410..2be8c9a 100644
--- a/core/api/module-lib-current.txt
+++ b/core/api/module-lib-current.txt
@@ -161,10 +161,6 @@
method public void onVolumeChanged(@NonNull android.media.session.MediaSession.Token, int);
}
- public final class PlaybackState implements android.os.Parcelable {
- method public boolean isActiveState();
- }
-
}
package android.net {
diff --git a/core/api/removed.txt b/core/api/removed.txt
index a99178d..ef35c59 100644
--- a/core/api/removed.txt
+++ b/core/api/removed.txt
@@ -535,6 +535,14 @@
}
+package android.view.translation {
+
+ public class Translator {
+ method @Deprecated @Nullable public void translate(@NonNull android.view.translation.TranslationRequest, @NonNull java.util.concurrent.Executor, @NonNull java.util.function.Consumer<android.view.translation.TranslationResponse>);
+ }
+
+}
+
package android.webkit {
public class WebViewClient {
diff --git a/core/api/system-current.txt b/core/api/system-current.txt
index fb6c457..b5c25d2 100644
--- a/core/api/system-current.txt
+++ b/core/api/system-current.txt
@@ -19,6 +19,7 @@
field public static final String ACCESS_SHARED_LIBRARIES = "android.permission.ACCESS_SHARED_LIBRARIES";
field public static final String ACCESS_SHORTCUTS = "android.permission.ACCESS_SHORTCUTS";
field public static final String ACCESS_SURFACE_FLINGER = "android.permission.ACCESS_SURFACE_FLINGER";
+ field public static final String ACCESS_TUNED_INFO = "android.permission.ACCESS_TUNED_INFO";
field public static final String ACCESS_TV_DESCRAMBLER = "android.permission.ACCESS_TV_DESCRAMBLER";
field public static final String ACCESS_TV_TUNER = "android.permission.ACCESS_TV_TUNER";
field public static final String ACCESS_VIBRATOR_STATE = "android.permission.ACCESS_VIBRATOR_STATE";
@@ -380,6 +381,7 @@
field public static final int config_systemSpeechRecognizer;
field public static final int config_systemTelevisionNotificationHandler;
field public static final int config_systemTextIntelligence;
+ field public static final int config_systemUi;
field public static final int config_systemUiIntelligence;
field public static final int config_systemVisualIntelligence;
field public static final int config_systemWellbeing;
@@ -438,7 +440,8 @@
public class AlarmManager {
method @RequiresPermission(android.Manifest.permission.UPDATE_DEVICE_STATS) public void set(int, long, long, long, android.app.PendingIntent, android.os.WorkSource);
method @RequiresPermission(android.Manifest.permission.UPDATE_DEVICE_STATS) public void set(int, long, long, long, android.app.AlarmManager.OnAlarmListener, android.os.Handler, android.os.WorkSource);
- method @RequiresPermission(android.Manifest.permission.SCHEDULE_PRIORITIZED_ALARM) public void setPrioritized(int, long, long, @NonNull String, @NonNull java.util.concurrent.Executor, @NonNull android.app.AlarmManager.OnAlarmListener);
+ method @RequiresPermission(allOf={android.Manifest.permission.UPDATE_DEVICE_STATS, android.Manifest.permission.SCHEDULE_EXACT_ALARM}, conditional=true) public void setExact(int, long, @Nullable String, @NonNull java.util.concurrent.Executor, @NonNull android.os.WorkSource, @NonNull android.app.AlarmManager.OnAlarmListener);
+ method @RequiresPermission(android.Manifest.permission.SCHEDULE_PRIORITIZED_ALARM) public void setPrioritized(int, long, long, @Nullable String, @NonNull java.util.concurrent.Executor, @NonNull android.app.AlarmManager.OnAlarmListener);
}
public class AppOpsManager {
@@ -1616,7 +1619,7 @@
ctor public SmartspaceConfig.Builder(@NonNull android.content.Context, @NonNull String);
method @NonNull public android.app.smartspace.SmartspaceConfig build();
method @NonNull public android.app.smartspace.SmartspaceConfig.Builder setExtras(@NonNull android.os.Bundle);
- method @NonNull public android.app.smartspace.SmartspaceConfig.Builder setSmartspaceTargetCount(int);
+ method @NonNull public android.app.smartspace.SmartspaceConfig.Builder setSmartspaceTargetCount(@IntRange(from=0, to=50) int);
}
public final class SmartspaceManager {
@@ -1624,23 +1627,22 @@
}
public final class SmartspaceSession implements java.lang.AutoCloseable {
+ method public void addOnTargetsAvailableListener(@NonNull java.util.concurrent.Executor, @NonNull android.app.smartspace.SmartspaceSession.OnTargetsAvailableListener);
method public void close();
- method public void destroy();
method protected void finalize();
method public void notifySmartspaceEvent(@NonNull android.app.smartspace.SmartspaceTargetEvent);
- method public void registerSmartspaceUpdates(@NonNull java.util.concurrent.Executor, @NonNull android.app.smartspace.SmartspaceSession.Callback);
+ method public void removeOnTargetsAvailableListener(@NonNull android.app.smartspace.SmartspaceSession.OnTargetsAvailableListener);
method public void requestSmartspaceUpdate();
- method public void unregisterSmartspaceUpdates(@NonNull android.app.smartspace.SmartspaceSession.Callback);
}
- public static interface SmartspaceSession.Callback {
+ public static interface SmartspaceSession.OnTargetsAvailableListener {
method public void onTargetsAvailable(@NonNull java.util.List<android.app.smartspace.SmartspaceTarget>);
}
public final class SmartspaceSessionId implements android.os.Parcelable {
method public int describeContents();
method @Nullable public String getId();
- method @NonNull public int getUserId();
+ method @NonNull public android.os.UserHandle getUserHandle();
method public void writeToParcel(@NonNull android.os.Parcel, int);
field @NonNull public static final android.os.Parcelable.Creator<android.app.smartspace.SmartspaceSessionId> CREATOR;
}
@@ -1651,19 +1653,19 @@
method @Nullable public String getAssociatedSmartspaceTargetId();
method @Nullable public android.app.smartspace.SmartspaceAction getBaseAction();
method @NonNull public android.content.ComponentName getComponentName();
- method @NonNull public long getCreationTimeMillis();
- method @NonNull public long getExpiryTimeMillis();
- method @NonNull public int getFeatureType();
+ method public long getCreationTimeMillis();
+ method public long getExpiryTimeMillis();
+ method public int getFeatureType();
method @Nullable public android.app.smartspace.SmartspaceAction getHeaderAction();
method @NonNull public java.util.List<android.app.smartspace.SmartspaceAction> getIconGrid();
- method @NonNull public float getScore();
+ method public float getScore();
method @Nullable public android.net.Uri getSliceUri();
method @NonNull public String getSmartspaceTargetId();
method @Nullable public String getSourceNotificationKey();
method @NonNull public android.os.UserHandle getUserHandle();
- method @Nullable public android.appwidget.AppWidgetProviderInfo getWidgetId();
- method @NonNull public boolean isSensitive();
- method @NonNull public boolean shouldShowExpanded();
+ method @Nullable public android.appwidget.AppWidgetProviderInfo getWidget();
+ method public boolean isSensitive();
+ method public boolean shouldShowExpanded();
method public void writeToParcel(@NonNull android.os.Parcel, int);
field @NonNull public static final android.os.Parcelable.Creator<android.app.smartspace.SmartspaceTarget> CREATOR;
field public static final int FEATURE_ALARM = 7; // 0x7
@@ -1698,17 +1700,17 @@
method @NonNull public android.app.smartspace.SmartspaceTarget.Builder setActionChips(@NonNull java.util.List<android.app.smartspace.SmartspaceAction>);
method @NonNull public android.app.smartspace.SmartspaceTarget.Builder setAssociatedSmartspaceTargetId(@NonNull String);
method @NonNull public android.app.smartspace.SmartspaceTarget.Builder setBaseAction(@NonNull android.app.smartspace.SmartspaceAction);
- method @NonNull public android.app.smartspace.SmartspaceTarget.Builder setCreationTimeMillis(@NonNull long);
- method @NonNull public android.app.smartspace.SmartspaceTarget.Builder setExpiryTimeMillis(@NonNull long);
- method @NonNull public android.app.smartspace.SmartspaceTarget.Builder setFeatureType(@NonNull int);
+ method @NonNull public android.app.smartspace.SmartspaceTarget.Builder setCreationTimeMillis(long);
+ method @NonNull public android.app.smartspace.SmartspaceTarget.Builder setExpiryTimeMillis(long);
+ method @NonNull public android.app.smartspace.SmartspaceTarget.Builder setFeatureType(int);
method @NonNull public android.app.smartspace.SmartspaceTarget.Builder setHeaderAction(@NonNull android.app.smartspace.SmartspaceAction);
method @NonNull public android.app.smartspace.SmartspaceTarget.Builder setIconGrid(@NonNull java.util.List<android.app.smartspace.SmartspaceAction>);
- method @NonNull public android.app.smartspace.SmartspaceTarget.Builder setScore(@NonNull float);
- method @NonNull public android.app.smartspace.SmartspaceTarget.Builder setSensitive(@NonNull boolean);
- method @NonNull public android.app.smartspace.SmartspaceTarget.Builder setShouldShowExpanded(@NonNull boolean);
+ method @NonNull public android.app.smartspace.SmartspaceTarget.Builder setScore(float);
+ method @NonNull public android.app.smartspace.SmartspaceTarget.Builder setSensitive(boolean);
+ method @NonNull public android.app.smartspace.SmartspaceTarget.Builder setShouldShowExpanded(boolean);
method @NonNull public android.app.smartspace.SmartspaceTarget.Builder setSliceUri(@NonNull android.net.Uri);
method @NonNull public android.app.smartspace.SmartspaceTarget.Builder setSourceNotificationKey(@NonNull String);
- method @NonNull public android.app.smartspace.SmartspaceTarget.Builder setWidgetId(@NonNull android.appwidget.AppWidgetProviderInfo);
+ method @NonNull public android.app.smartspace.SmartspaceTarget.Builder setWidget(@NonNull android.appwidget.AppWidgetProviderInfo);
}
public final class SmartspaceTargetEvent implements android.os.Parcelable {
@@ -1720,11 +1722,11 @@
field @NonNull public static final android.os.Parcelable.Creator<android.app.smartspace.SmartspaceTargetEvent> CREATOR;
field public static final int EVENT_TARGET_BLOCK = 5; // 0x5
field public static final int EVENT_TARGET_DISMISS = 4; // 0x4
+ field public static final int EVENT_TARGET_HIDDEN = 3; // 0x3
field public static final int EVENT_TARGET_INTERACTION = 1; // 0x1
- field public static final int EVENT_TARGET_IN_VIEW = 2; // 0x2
- field public static final int EVENT_TARGET_OUT_OF_VIEW = 3; // 0x3
- field public static final int EVENT_UI_SURFACE_IN_VIEW = 6; // 0x6
- field public static final int EVENT_UI_SURFACE_OUT_OF_VIEW = 7; // 0x7
+ field public static final int EVENT_TARGET_SHOWN = 2; // 0x2
+ field public static final int EVENT_UI_SURFACE_HIDDEN = 7; // 0x7
+ field public static final int EVENT_UI_SURFACE_SHOWN = 6; // 0x6
}
public static final class SmartspaceTargetEvent.Builder {
@@ -5325,12 +5327,11 @@
public final class MediaRouter2 {
method @NonNull public java.util.List<android.media.MediaRoute2Info> getAllRoutes();
method @Nullable public String getClientPackageName();
- method @Nullable public android.media.MediaRouter2.RoutingController getController(@NonNull String);
- method @Nullable @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) public static android.media.MediaRouter2 getInstance(@NonNull android.content.Context, @NonNull String);
- method public void setRouteVolume(@NonNull android.media.MediaRoute2Info, int);
- method public void startScan();
- method public void stopScan();
- method public void transfer(@NonNull android.media.MediaRouter2.RoutingController, @NonNull android.media.MediaRoute2Info);
+ method @Nullable @RequiresPermission(android.Manifest.permission.MEDIA_CONTENT_CONTROL) public static android.media.MediaRouter2 getInstance(@NonNull android.content.Context, @NonNull String);
+ method @RequiresPermission(android.Manifest.permission.MEDIA_CONTENT_CONTROL) public void setRouteVolume(@NonNull android.media.MediaRoute2Info, int);
+ method @RequiresPermission(android.Manifest.permission.MEDIA_CONTENT_CONTROL) public void startScan();
+ method @RequiresPermission(android.Manifest.permission.MEDIA_CONTENT_CONTROL) public void stopScan();
+ method @RequiresPermission(android.Manifest.permission.MEDIA_CONTENT_CONTROL) public void transfer(@NonNull android.media.MediaRouter2.RoutingController, @NonNull android.media.MediaRoute2Info);
}
public abstract static class MediaRouter2.RouteCallback {
@@ -5634,8 +5635,9 @@
method public int getAppType();
method @Nullable public android.net.Uri getChannelUri();
method @NonNull public String getInputId();
- method public boolean isForeground();
+ method public boolean isMainSession();
method public boolean isRecordingSession();
+ method public boolean isVisible();
method public void writeToParcel(@NonNull android.os.Parcel, int);
field public static final int APP_TAG_SELF = 0; // 0x0
field public static final int APP_TYPE_NON_SYSTEM = 3; // 0x3
@@ -5759,7 +5761,7 @@
method @RequiresPermission(android.Manifest.permission.MODIFY_PARENTAL_CONTROLS) public void addBlockedRating(@NonNull android.media.tv.TvContentRating);
method @RequiresPermission(android.Manifest.permission.CAPTURE_TV_INPUT) public boolean captureFrame(String, android.view.Surface, android.media.tv.TvStreamConfig);
method @RequiresPermission(android.Manifest.permission.CAPTURE_TV_INPUT) public java.util.List<android.media.tv.TvStreamConfig> getAvailableTvStreamConfigList(String);
- method @NonNull @RequiresPermission("com.android.providers.tv.permission.ACCESS_WATCHED_PROGRAMS") public java.util.List<android.media.tv.TunedInfo> getCurrentTunedInfos();
+ method @NonNull @RequiresPermission(android.Manifest.permission.ACCESS_TUNED_INFO) public java.util.List<android.media.tv.TunedInfo> getCurrentTunedInfos();
method @NonNull @RequiresPermission("android.permission.DVB_DEVICE") public java.util.List<android.media.tv.DvbDeviceInfo> getDvbDeviceList();
method @RequiresPermission(android.Manifest.permission.TV_INPUT_HARDWARE) public java.util.List<android.media.tv.TvInputHardwareInfo> getHardwareList();
method @RequiresPermission(android.Manifest.permission.READ_CONTENT_RATING_SYSTEMS) public java.util.List<android.media.tv.TvContentRatingSystemInfo> getTvContentRatingSystemList();
@@ -5786,7 +5788,7 @@
}
public abstract static class TvInputManager.TvInputCallback {
- method public void onCurrentTunedInfosUpdated(@NonNull java.util.List<android.media.tv.TunedInfo>);
+ method @RequiresPermission(android.Manifest.permission.ACCESS_TUNED_INFO) public void onCurrentTunedInfosUpdated(@NonNull java.util.List<android.media.tv.TunedInfo>);
}
public abstract class TvInputService extends android.app.Service {
@@ -10396,7 +10398,8 @@
ctor public TranslationService();
method @Nullable public final android.os.IBinder onBind(@NonNull android.content.Intent);
method public void onConnected();
- method public abstract void onCreateTranslationSession(@NonNull android.view.translation.TranslationContext, int);
+ method public void onCreateTranslationSession(@NonNull android.view.translation.TranslationContext, int, @NonNull java.util.function.Consumer<java.lang.Boolean>);
+ method @Deprecated public abstract void onCreateTranslationSession(@NonNull android.view.translation.TranslationContext, int);
method public void onDisconnected();
method public abstract void onFinishTranslationSession(int);
method public abstract void onTranslationCapabilitiesRequest(int, int, @NonNull java.util.function.Consumer<java.util.Set<android.view.translation.TranslationCapability>>);
@@ -10406,7 +10409,7 @@
}
public static interface TranslationService.OnTranslationResultCallback {
- method public void onError();
+ method @Deprecated public void onError();
method public void onTranslationSuccess(@NonNull android.view.translation.TranslationResponse);
}
@@ -11081,17 +11084,6 @@
field @NonNull public static final android.os.Parcelable.Creator<android.telephony.CallQuality> CREATOR;
}
- public final class CarrierBandwidth implements android.os.Parcelable {
- ctor public CarrierBandwidth(int, int, int, int);
- method public int describeContents();
- method public int getPrimaryDownlinkCapacityKbps();
- method public int getPrimaryUplinkCapacityKbps();
- method public int getSecondaryDownlinkCapacityKbps();
- method public int getSecondaryUplinkCapacityKbps();
- field @NonNull public static final android.os.Parcelable.Creator<android.telephony.CarrierBandwidth> CREATOR;
- field public static final int INVALID = -1; // 0xffffffff
- }
-
public class CarrierConfigManager {
method @NonNull @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public String getDefaultCarrierServicePackageName();
method @NonNull public static android.os.PersistableBundle getDefaultConfig();
@@ -11108,10 +11100,6 @@
field public static final String KEY_SUPPORT_CDMA_1X_VOICE_CALLS_BOOL = "support_cdma_1x_voice_calls_bool";
}
- public static final class CarrierConfigManager.Ims {
- field public static final String KEY_PUBLISH_SERVICE_DESC_FEATURE_TAG_MAP_OVERRIDE_STRING_ARRAY = "ims.publish_service_desc_feature_tag_map_override_string_array";
- }
-
public static final class CarrierConfigManager.Wifi {
field public static final String KEY_AVOID_5GHZ_SOFTAP_FOR_LAA_BOOL = "wifi.avoid_5ghz_softap_for_laa_bool";
field public static final String KEY_AVOID_5GHZ_WIFI_DIRECT_FOR_LAA_BOOL = "wifi.avoid_5ghz_wifi_direct_for_laa_bool";
@@ -14836,7 +14824,7 @@
method public default boolean onCheckIsTextEditor();
method public void onConfigurationChanged(android.content.res.Configuration);
method public android.view.inputmethod.InputConnection onCreateInputConnection(android.view.inputmethod.EditorInfo);
- method public default void onCreateTranslationRequests(@NonNull long[], @NonNull int[], @NonNull java.util.function.Consumer<android.view.translation.ViewTranslationRequest>);
+ method public default void onCreateVirtualViewTranslationRequests(@NonNull long[], @NonNull int[], @NonNull java.util.function.Consumer<android.view.translation.ViewTranslationRequest>);
method public void onDetachedFromWindow();
method public boolean onDragEvent(android.view.DragEvent);
method public void onDraw(android.graphics.Canvas);
@@ -14861,7 +14849,7 @@
method public void onStartTemporaryDetach();
method public boolean onTouchEvent(android.view.MotionEvent);
method public boolean onTrackballEvent(android.view.MotionEvent);
- method public default void onTranslationResponse(@NonNull android.util.LongSparseArray<android.view.translation.ViewTranslationResponse>);
+ method public default void onVirtualViewTranslationResponses(@NonNull android.util.LongSparseArray<android.view.translation.ViewTranslationResponse>);
method public void onVisibilityChanged(android.view.View, int);
method public void onWindowFocusChanged(boolean);
method public void onWindowVisibilityChanged(int);
diff --git a/core/api/system-removed.txt b/core/api/system-removed.txt
index bf9f4f1..f366a54 100644
--- a/core/api/system-removed.txt
+++ b/core/api/system-removed.txt
@@ -189,14 +189,3 @@
}
-package android.view.translation {
-
- public final class UiTranslationManager {
- method @Deprecated @RequiresPermission(android.Manifest.permission.MANAGE_UI_TRANSLATION) public void finishTranslation(int);
- method @Deprecated @RequiresPermission(android.Manifest.permission.MANAGE_UI_TRANSLATION) public void pauseTranslation(int);
- method @Deprecated @RequiresPermission(android.Manifest.permission.MANAGE_UI_TRANSLATION) public void resumeTranslation(int);
- method @Deprecated @RequiresPermission(android.Manifest.permission.MANAGE_UI_TRANSLATION) public void startTranslation(@NonNull android.view.translation.TranslationSpec, @NonNull android.view.translation.TranslationSpec, @NonNull java.util.List<android.view.autofill.AutofillId>, int);
- }
-
-}
-
diff --git a/core/api/test-current.txt b/core/api/test-current.txt
index 62922db..fee2f77 100644
--- a/core/api/test-current.txt
+++ b/core/api/test-current.txt
@@ -347,6 +347,10 @@
method public boolean isSeamlessResizeEnabled();
}
+ public final class PictureInPictureUiState implements android.os.Parcelable {
+ ctor public PictureInPictureUiState(boolean);
+ }
+
public class StatusBarManager {
method public void clickNotification(@Nullable String, int, int, boolean);
method @RequiresPermission(android.Manifest.permission.STATUS_BAR) public void collapsePanels();
@@ -657,6 +661,16 @@
ctor public UsageStats();
}
+ public static final class UsageStats.Builder {
+ ctor public UsageStats.Builder();
+ method @NonNull public android.app.usage.UsageStats build();
+ method @NonNull public android.app.usage.UsageStats.Builder setFirstTimeStamp(long);
+ method @NonNull public android.app.usage.UsageStats.Builder setLastTimeStamp(long);
+ method @NonNull public android.app.usage.UsageStats.Builder setLastTimeUsed(long);
+ method @NonNull public android.app.usage.UsageStats.Builder setPackageName(@Nullable String);
+ method @NonNull public android.app.usage.UsageStats.Builder setTotalTimeInForeground(long);
+ }
+
public final class UsageStatsManager {
method public void forceUsageSourceSettingRead();
}
@@ -773,8 +787,10 @@
public class ActivityInfo extends android.content.pm.ComponentInfo implements android.os.Parcelable {
method public static boolean isTranslucentOrFloating(android.content.res.TypedArray);
+ field public static final long ALWAYS_SANDBOX_DISPLAY_APIS = 185004937L; // 0xb06f389L
field public static final long FORCE_NON_RESIZE_APP = 181136395L; // 0xacbec0bL
field public static final long FORCE_RESIZE_APP = 174042936L; // 0xa5faf38L
+ field public static final long NEVER_SANDBOX_DISPLAY_APIS = 184838306L; // 0xb0468a2L
field public static final long OVERRIDE_MIN_ASPECT_RATIO = 174042980L; // 0xa5faf64L
field public static final long OVERRIDE_MIN_ASPECT_RATIO_LARGE = 180326787L; // 0xabf9183L
field public static final float OVERRIDE_MIN_ASPECT_RATIO_LARGE_VALUE = 1.7777778f;
@@ -1902,6 +1918,16 @@
method public String getPath();
}
+ public static final class StorageVolume.Builder {
+ ctor public StorageVolume.Builder(@NonNull String, @NonNull java.io.File, @NonNull String, @NonNull android.os.UserHandle, @NonNull String);
+ method @NonNull public android.os.storage.StorageVolume build();
+ method @NonNull public android.os.storage.StorageVolume.Builder setEmulated(boolean);
+ method @NonNull public android.os.storage.StorageVolume.Builder setPrimary(boolean);
+ method @NonNull public android.os.storage.StorageVolume.Builder setRemovable(boolean);
+ method @NonNull public android.os.storage.StorageVolume.Builder setStorageUuid(@Nullable java.util.UUID);
+ method @NonNull public android.os.storage.StorageVolume.Builder setUuid(@Nullable String);
+ }
+
}
package android.os.strictmode {
@@ -2089,7 +2115,7 @@
field public static final String LOCATION_IGNORE_SETTINGS_PACKAGE_WHITELIST = "location_ignore_settings_package_whitelist";
field public static final String LOW_POWER_MODE = "low_power";
field public static final String LOW_POWER_MODE_STICKY = "low_power_sticky";
- field public static final String NOTIFICATION_BUBBLES = "notification_bubbles";
+ field @Deprecated public static final String NOTIFICATION_BUBBLES = "notification_bubbles";
field public static final String OVERLAY_DISPLAY_DEVICES = "overlay_display_devices";
field public static final String SHOW_FIRST_CRASH_DIALOG = "show_first_crash_dialog";
field public static final String USER_DISABLED_HDR_FORMATS = "user_disabled_hdr_formats";
@@ -2113,6 +2139,7 @@
field public static final String IMMERSIVE_MODE_CONFIRMATIONS = "immersive_mode_confirmations";
field public static final String NFC_PAYMENT_DEFAULT_COMPONENT = "nfc_payment_default_component";
field public static final String NOTIFICATION_BADGING = "notification_badging";
+ field public static final String NOTIFICATION_BUBBLES = "notification_bubbles";
field public static final String POWER_MENU_LOCKED_SHOW_CONTENT = "power_menu_locked_show_content";
field public static final String SELECTED_SPELL_CHECKER = "selected_spell_checker";
field public static final String SELECTED_SPELL_CHECKER_SUBTYPE = "selected_spell_checker_subtype";
@@ -2321,6 +2348,14 @@
}
+package android.service.voice {
+
+ public class AlwaysOnHotwordDetector implements android.service.voice.HotwordDetector {
+ method @RequiresPermission(allOf={android.Manifest.permission.RECORD_AUDIO, android.Manifest.permission.CAPTURE_AUDIO_HOTWORD}) public void triggerHardwareRecognitionEventForTest(int, int, boolean, int, int, int, boolean, @NonNull android.media.AudioFormat, @Nullable byte[]);
+ }
+
+}
+
package android.service.watchdog {
public abstract class ExplicitHealthCheckService extends android.app.Service {
diff --git a/core/java/android/app/Activity.java b/core/java/android/app/Activity.java
index 45120b6..198fa65 100644
--- a/core/java/android/app/Activity.java
+++ b/core/java/android/app/Activity.java
@@ -2813,6 +2813,29 @@
}
/**
+ * Called by the system when the activity is in PiP and has state changes.
+ *
+ * Compare to {@link #onPictureInPictureModeChanged(boolean, Configuration)}, which is only
+ * called when PiP mode changes (meaning, enters or exits PiP), this can be called at any time
+ * while the activity is in PiP mode. Therefore, all invocation can only happen after
+ * {@link #onPictureInPictureModeChanged(boolean, Configuration)} is called with true, and
+ * before {@link #onPictureInPictureModeChanged(boolean, Configuration)} is called with false.
+ * You would not need to worry about cases where this is called and the activity is not in
+ * Picture-In-Picture mode. For managing cases where the activity enters/exits
+ * Picture-in-Picture (e.g. resources clean-up on exit), use
+ * {@link #onPictureInPictureModeChanged(boolean, Configuration)}.
+ *
+ * The default state is everything declared in {@link PictureInPictureUiState} is false, such as
+ * {@link PictureInPictureUiState#isStashed()}.
+ *
+ * @param pipState the new Picture-in-Picture state.
+ */
+ public void onPictureInPictureUiStateChanged(@NonNull PictureInPictureUiState pipState) {
+ // Left deliberately empty. There should be no side effects if a direct
+ // subclass of Activity does not call super.
+ }
+
+ /**
* Called by the system when the activity changes to and from picture-in-picture mode.
*
* @see android.R.attr#supportsPictureInPicture
@@ -8792,11 +8815,11 @@
* @hide
*/
public void updateUiTranslationState(int state, TranslationSpec sourceSpec,
- TranslationSpec destSpec, List<AutofillId> viewIds) {
+ TranslationSpec targetSpec, List<AutofillId> viewIds) {
if (mUiTranslationController == null) {
mUiTranslationController = new UiTranslationController(this, getApplicationContext());
}
- mUiTranslationController.updateUiTranslationState(state, sourceSpec, destSpec, viewIds);
+ mUiTranslationController.updateUiTranslationState(state, sourceSpec, targetSpec, viewIds);
}
class HostCallbacks extends FragmentHostCallback<Activity> {
diff --git a/core/java/android/app/ActivityManagerInternal.java b/core/java/android/app/ActivityManagerInternal.java
index a7d5b05..0803524 100644
--- a/core/java/android/app/ActivityManagerInternal.java
+++ b/core/java/android/app/ActivityManagerInternal.java
@@ -570,4 +570,9 @@
/** Unregister an {@link AnrController} */
public abstract void unregisterAnrController(AnrController controller);
+
+ /**
+ * Is the FGS started from an uid temporarily allowed to have while-in-use permission?
+ */
+ public abstract boolean isTempAllowlistedForFgsWhileInUse(int uid);
}
diff --git a/core/java/android/app/ActivityThread.java b/core/java/android/app/ActivityThread.java
index 98fee9c..3a1961a 100644
--- a/core/java/android/app/ActivityThread.java
+++ b/core/java/android/app/ActivityThread.java
@@ -39,7 +39,6 @@
import android.app.assist.AssistContent;
import android.app.assist.AssistStructure;
import android.app.backup.BackupAgent;
-import android.app.backup.BackupManager;
import android.app.servertransaction.ActivityLifecycleItem;
import android.app.servertransaction.ActivityLifecycleItem.LifecycleState;
import android.app.servertransaction.ActivityRelaunchItem;
@@ -1587,9 +1586,17 @@
@Override
public void dumpGfxInfo(ParcelFileDescriptor pfd, String[] args) {
- nDumpGraphicsInfo(pfd.getFileDescriptor());
- WindowManagerGlobal.getInstance().dumpGfxInfo(pfd.getFileDescriptor(), args);
- IoUtils.closeQuietly(pfd);
+ DumpComponentInfo data = new DumpComponentInfo();
+ try {
+ data.fd = pfd.dup();
+ data.token = null;
+ data.args = args;
+ sendMessage(H.DUMP_GFXINFO, data, 0, 0, true /*async*/);
+ } catch (IOException e) {
+ Slog.w(TAG, "dumpGfxInfo failed", e);
+ } finally {
+ IoUtils.closeQuietly(pfd);
+ }
}
@Override
@@ -1835,12 +1842,12 @@
@Override
public void updateUiTranslationState(IBinder activityToken, int state,
- TranslationSpec sourceSpec, TranslationSpec destSpec, List<AutofillId> viewIds) {
+ TranslationSpec sourceSpec, TranslationSpec targetSpec, List<AutofillId> viewIds) {
SomeArgs args = SomeArgs.obtain();
args.arg1 = activityToken;
args.arg2 = state;
args.arg3 = sourceSpec;
- args.arg4 = destSpec;
+ args.arg4 = targetSpec;
args.arg5 = viewIds;
sendMessage(H.UPDATE_UI_TRANSLATION_STATE, args);
}
@@ -1961,6 +1968,7 @@
public static final int ATTACH_STARTUP_AGENTS = 162;
public static final int UPDATE_UI_TRANSLATION_STATE = 163;
public static final int SET_CONTENT_CAPTURE_OPTIONS_CALLBACK = 164;
+ public static final int DUMP_GFXINFO = 165;
public static final int INSTRUMENT_WITHOUT_RESTART = 170;
public static final int FINISH_INSTRUMENTATION_WITHOUT_RESTART = 171;
@@ -2010,6 +2018,7 @@
case UPDATE_UI_TRANSLATION_STATE: return "UPDATE_UI_TRANSLATION_STATE";
case SET_CONTENT_CAPTURE_OPTIONS_CALLBACK:
return "SET_CONTENT_CAPTURE_OPTIONS_CALLBACK";
+ case DUMP_GFXINFO: return "DUMP GFXINFO";
case INSTRUMENT_WITHOUT_RESTART: return "INSTRUMENT_WITHOUT_RESTART";
case FINISH_INSTRUMENTATION_WITHOUT_RESTART:
return "FINISH_INSTRUMENTATION_WITHOUT_RESTART";
@@ -2083,6 +2092,9 @@
case DUMP_SERVICE:
handleDumpService((DumpComponentInfo)msg.obj);
break;
+ case DUMP_GFXINFO:
+ handleDumpGfxInfo((DumpComponentInfo) msg.obj);
+ break;
case LOW_MEMORY:
Trace.traceBegin(Trace.TRACE_TAG_ACTIVITY_MANAGER, "lowMemory");
handleLowMemory();
@@ -3987,6 +3999,12 @@
}
}
+ @Override
+ public void handlePictureInPictureStateChanged(@NonNull ActivityClientRecord r,
+ PictureInPictureUiState pipState) {
+ r.activity.onPictureInPictureUiStateChanged(pipState);
+ }
+
/**
* Register a splash screen manager to this process.
*/
@@ -4169,13 +4187,13 @@
}
private void updateUiTranslationState(IBinder activityToken, int state,
- TranslationSpec sourceSpec, TranslationSpec destSpec, List<AutofillId> viewIds) {
+ TranslationSpec sourceSpec, TranslationSpec targetSpec, List<AutofillId> viewIds) {
final ActivityClientRecord r = mActivities.get(activityToken);
if (r == null) {
Log.w(TAG, "updateUiTranslationState(): no activity for " + activityToken);
return;
}
- r.activity.updateUiTranslationState(state, sourceSpec, destSpec, viewIds);
+ r.activity.updateUiTranslationState(state, sourceSpec, targetSpec, viewIds);
}
private static final ThreadLocal<Intent> sCurrentBroadcastIntent = new ThreadLocal<Intent>();
@@ -4483,6 +4501,17 @@
}
}
+ private void handleDumpGfxInfo(DumpComponentInfo info) {
+ try {
+ nDumpGraphicsInfo(info.fd.getFileDescriptor());
+ WindowManagerGlobal.getInstance().dumpGfxInfo(info.fd.getFileDescriptor(), info.args);
+ } catch (Exception e) {
+ Log.w(TAG, "Caught exception from dumpGfxInfo()", e);
+ } finally {
+ IoUtils.closeQuietly(info.fd);
+ }
+ }
+
private void handleDumpService(DumpComponentInfo info) {
final StrictMode.ThreadPolicy oldPolicy = StrictMode.allowThreadDiskWrites();
try {
diff --git a/core/java/android/app/ClientTransactionHandler.java b/core/java/android/app/ClientTransactionHandler.java
index cf5fd14..c752f34 100644
--- a/core/java/android/app/ClientTransactionHandler.java
+++ b/core/java/android/app/ClientTransactionHandler.java
@@ -159,6 +159,10 @@
/** Request that an activity enter picture-in-picture. */
public abstract void handlePictureInPictureRequested(@NonNull ActivityClientRecord r);
+ /** Signal to an activity (that is currently in PiP) of PiP state changes. */
+ public abstract void handlePictureInPictureStateChanged(@NonNull ActivityClientRecord r,
+ PictureInPictureUiState pipState);
+
/** Whether the activity want to handle splash screen exit animation */
public abstract boolean isHandleSplashScreenExit(@NonNull IBinder token);
diff --git a/core/java/android/app/IActivityClientController.aidl b/core/java/android/app/IActivityClientController.aidl
index ed4836e..09b0c2f 100644
--- a/core/java/android/app/IActivityClientController.aidl
+++ b/core/java/android/app/IActivityClientController.aidl
@@ -37,7 +37,11 @@
interface IActivityClientController {
oneway void activityIdle(in IBinder token, in Configuration config, in boolean stopProfiling);
oneway void activityResumed(in IBinder token, in boolean handleSplashScreenExit);
- oneway void activityTopResumedStateLost();
+ /**
+ * This call is not one-way because {@link #activityPaused()) is not one-way, or
+ * the top-resumed-lost could be reported after activity paused.
+ */
+ void activityTopResumedStateLost();
/**
* Notifies that the activity has completed paused. This call is not one-way because it can make
* consecutive launch in the same process more coherent. About the order of binder call, it
diff --git a/core/java/android/app/IActivityTaskManager.aidl b/core/java/android/app/IActivityTaskManager.aidl
index 346882e..2f1f14e 100644
--- a/core/java/android/app/IActivityTaskManager.aidl
+++ b/core/java/android/app/IActivityTaskManager.aidl
@@ -36,6 +36,7 @@
import android.app.IUserSwitchObserver;
import android.app.Notification;
import android.app.PendingIntent;
+import android.app.PictureInPictureUiState;
import android.app.ProfilerInfo;
import android.app.WaitResult;
import android.app.assist.AssistContent;
@@ -330,4 +331,9 @@
*/
void onSplashScreenViewCopyFinished(int taskId,
in SplashScreenView.SplashScreenViewParcelable material);
+
+ /**
+ * When the Picture-in-picture state has changed.
+ */
+ void onPictureInPictureStateChanged(in PictureInPictureUiState pipState);
}
diff --git a/core/java/android/app/IApplicationThread.aidl b/core/java/android/app/IApplicationThread.aidl
index 78e7ce8..918309e 100644
--- a/core/java/android/app/IApplicationThread.aidl
+++ b/core/java/android/app/IApplicationThread.aidl
@@ -160,5 +160,5 @@
IUiAutomationConnection instrumentationUiConnection,
in ApplicationInfo targetInfo);
void updateUiTranslationState(IBinder activityToken, int state, in TranslationSpec sourceSpec,
- in TranslationSpec destSpec, in List<AutofillId> viewIds);
+ in TranslationSpec targetSpec, in List<AutofillId> viewIds);
}
diff --git a/core/java/android/app/Notification.java b/core/java/android/app/Notification.java
index 7ce0c70..d255616 100644
--- a/core/java/android/app/Notification.java
+++ b/core/java/android/app/Notification.java
@@ -6103,6 +6103,9 @@
button.setImageViewIcon(R.id.action0, action.getIcon());
boolean priority = action.getExtras().getBoolean(CallStyle.KEY_ACTION_PRIORITY);
button.setBoolean(R.id.action0, "setWrapModePriority", priority);
+ int minWidthDimen =
+ priority ? R.dimen.call_notification_system_action_min_width : 0;
+ button.setIntDimen(R.id.action0, "setMinimumWidth", minWidthDimen);
}
} else {
button.setTextViewText(R.id.action0, processTextSpans(
diff --git a/telephony/java/android/telephony/CarrierBandwidth.aidl b/core/java/android/app/PictureInPictureUiState.aidl
similarity index 74%
rename from telephony/java/android/telephony/CarrierBandwidth.aidl
rename to core/java/android/app/PictureInPictureUiState.aidl
index d0861b8..ca81fb6 100644
--- a/telephony/java/android/telephony/CarrierBandwidth.aidl
+++ b/core/java/android/app/PictureInPictureUiState.aidl
@@ -1,11 +1,11 @@
-/*
- * Copyright 2020 The Android Open Source Project
+/**
+ * Copyright (c) 2021, 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
+ * 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,
@@ -13,5 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package android.telephony;
-parcelable CarrierBandwidth;
\ No newline at end of file
+
+package android.app;
+
+parcelable PictureInPictureUiState;
\ No newline at end of file
diff --git a/core/java/android/app/PictureInPictureUiState.java b/core/java/android/app/PictureInPictureUiState.java
new file mode 100644
index 0000000..3d2cb3f
--- /dev/null
+++ b/core/java/android/app/PictureInPictureUiState.java
@@ -0,0 +1,83 @@
+/*
+ * Copyright (C) 2021 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.app;
+
+import android.annotation.NonNull;
+import android.annotation.TestApi;
+import android.os.Parcel;
+import android.os.Parcelable;
+
+import java.util.Objects;
+
+/**
+ * Used by {@link Activity#onPictureInPictureUiStateChanged(PictureInPictureUiState)}.
+ */
+public final class PictureInPictureUiState implements Parcelable {
+
+ private boolean mIsStashed;
+
+ /** {@hide} */
+ PictureInPictureUiState(Parcel in) {
+ mIsStashed = in.readBoolean();
+ }
+
+ /** {@hide} */
+ @TestApi
+ public PictureInPictureUiState(boolean isStashed) {
+ mIsStashed = isStashed;
+ }
+
+ /**
+ * Returns whether Picture-in-Picture is stashed or not.
+ */
+ public boolean isStashed() {
+ return mIsStashed;
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) return true;
+ if (!(o instanceof PictureInPictureUiState)) return false;
+ PictureInPictureUiState that = (PictureInPictureUiState) o;
+ return Objects.equals(mIsStashed, that.mIsStashed);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(mIsStashed);
+ }
+
+ @Override
+ public int describeContents() {
+ return 0;
+ }
+
+ @Override
+ public void writeToParcel(@NonNull Parcel out, int flags) {
+ out.writeBoolean(mIsStashed);
+ }
+
+ public static final @android.annotation.NonNull Creator<PictureInPictureUiState> CREATOR =
+ new Creator<PictureInPictureUiState>() {
+ public PictureInPictureUiState createFromParcel(Parcel in) {
+ return new PictureInPictureUiState(in);
+ }
+ public PictureInPictureUiState[] newArray(int size) {
+ return new PictureInPictureUiState[size];
+ }
+ };
+}
diff --git a/core/java/android/app/servertransaction/PipStateTransactionItem.java b/core/java/android/app/servertransaction/PipStateTransactionItem.java
new file mode 100644
index 0000000..167f5a4
--- /dev/null
+++ b/core/java/android/app/servertransaction/PipStateTransactionItem.java
@@ -0,0 +1,93 @@
+/*
+ * Copyright 2021 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.app.servertransaction;
+
+import android.annotation.Nullable;
+import android.app.ActivityThread.ActivityClientRecord;
+import android.app.ClientTransactionHandler;
+import android.app.PictureInPictureUiState;
+import android.os.Parcel;
+
+/**
+ * Request an activity to enter picture-in-picture mode.
+ * @hide
+ */
+public final class PipStateTransactionItem extends ActivityTransactionItem {
+
+ private PictureInPictureUiState mPipState;
+
+ @Override
+ public void execute(ClientTransactionHandler client, ActivityClientRecord r,
+ PendingTransactionActions pendingActions) {
+ client.handlePictureInPictureStateChanged(r, mPipState);
+ }
+
+ // ObjectPoolItem implementation
+
+ private PipStateTransactionItem() {}
+
+ /** Obtain an instance initialized with provided params. */
+ public static PipStateTransactionItem obtain(PictureInPictureUiState pipState) {
+ PipStateTransactionItem instance = ObjectPool.obtain(PipStateTransactionItem.class);
+ if (instance == null) {
+ instance = new PipStateTransactionItem();
+ }
+ instance.mPipState = pipState;
+
+ return instance;
+ }
+
+ @Override
+ public void recycle() {
+ mPipState = null;
+ ObjectPool.recycle(this);
+ }
+
+ // Parcelable implementation
+
+ /** Write to Parcel. */
+ @Override
+ public void writeToParcel(Parcel dest, int flags) {
+ mPipState.writeToParcel(dest, flags);
+ }
+
+ /** Read from Parcel. */
+ private PipStateTransactionItem(Parcel in) {
+ mPipState = PictureInPictureUiState.CREATOR.createFromParcel(in);
+ }
+
+ public static final @android.annotation.NonNull Creator<PipStateTransactionItem> CREATOR =
+ new Creator<PipStateTransactionItem>() {
+ public PipStateTransactionItem createFromParcel(Parcel in) {
+ return new PipStateTransactionItem(in);
+ }
+
+ public PipStateTransactionItem[] newArray(int size) {
+ return new PipStateTransactionItem[size];
+ }
+ };
+
+ @Override
+ public boolean equals(@Nullable Object o) {
+ return this == o;
+ }
+
+ @Override
+ public String toString() {
+ return "PipStateTransactionItem{}";
+ }
+}
diff --git a/core/java/android/app/smartspace/SmartspaceConfig.java b/core/java/android/app/smartspace/SmartspaceConfig.java
index 07d7bf0..0897b5f 100644
--- a/core/java/android/app/smartspace/SmartspaceConfig.java
+++ b/core/java/android/app/smartspace/SmartspaceConfig.java
@@ -15,6 +15,7 @@
*/
package android.app.smartspace;
+import android.annotation.IntRange;
import android.annotation.NonNull;
import android.annotation.Nullable;
import android.annotation.SuppressLint;
@@ -41,6 +42,7 @@
* The least number of smartspace targets expected to be predicted by the backend. The backend
* will always try to satisfy this threshold but it is not guaranteed to always meet it.
*/
+ @IntRange(from = 0, to = 50)
private final int mSmartspaceTargetCount;
/**
@@ -54,13 +56,15 @@
@NonNull
private String mPackageName;
- /** Send other client UI configurations in extras.
+ /**
+ * Send other client UI configurations in extras.
*
* This can include:
*
- * - Desired maximum update frequency
- * - Request to get periodic updates
- * - Request to support multiple clients for the same UISurface.
+ * - Desired maximum update frequency (For example 1 minute update frequency for AoD, 1 second
+ * update frequency for home screen etc).
+ * - Request to get periodic updates
+ * - Request to support multiple clients for the same UISurface.
*/
@Nullable
private final Bundle mExtras;
@@ -165,7 +169,7 @@
private Bundle mExtras = Bundle.EMPTY;
/**
- * @param context The {@link Context} which is used to fetch the package name.
+ * @param context The {@link Context} which is used to fetch the package name.
* @param uiSurface the UI Surface name associated with this context.
* @hide
*/
@@ -179,7 +183,8 @@
* Used to set the expected number of cards for this context.
*/
@NonNull
- public Builder setSmartspaceTargetCount(int smartspaceTargetCount) {
+ public Builder setSmartspaceTargetCount(
+ @IntRange(from = 0, to = 50) int smartspaceTargetCount) {
this.mSmartspaceTargetCount = smartspaceTargetCount;
return this;
}
diff --git a/core/java/android/app/smartspace/SmartspaceSession.java b/core/java/android/app/smartspace/SmartspaceSession.java
index 16def61..9199581 100644
--- a/core/java/android/app/smartspace/SmartspaceSession.java
+++ b/core/java/android/app/smartspace/SmartspaceSession.java
@@ -63,7 +63,7 @@
*
* void onDestroy() {
* mSmartspaceSession.unregisterPredictionUpdates()
- * mSmartspaceSession.destroy();
+ * mSmartspaceSession.close();
* }
*
* }</pre>
@@ -81,7 +81,8 @@
private final AtomicBoolean mIsClosed = new AtomicBoolean(false);
private final SmartspaceSessionId mSessionId;
- private final ArrayMap<Callback, CallbackWrapper> mRegisteredCallbacks = new ArrayMap<>();
+ private final ArrayMap<OnTargetsAvailableListener, CallbackWrapper> mRegisteredCallbacks =
+ new ArrayMap<>();
private final IBinder mToken = new Binder();
/**
@@ -98,11 +99,11 @@
IBinder b = ServiceManager.getService(Context.SMARTSPACE_SERVICE);
mInterface = android.app.smartspace.ISmartspaceManager.Stub.asInterface(b);
mSessionId = new SmartspaceSessionId(
- context.getPackageName() + ":" + UUID.randomUUID().toString(), context.getUserId());
+ context.getPackageName() + ":" + UUID.randomUUID().toString(), context.getUser());
try {
mInterface.createSmartspaceSession(smartspaceConfig, mSessionId, mToken);
} catch (RemoteException e) {
- Log.e(TAG, "Failed to cerate Smartspace session", e);
+ Log.e(TAG, "Failed to create Smartspace session", e);
e.rethrowFromSystemServer();
}
@@ -145,24 +146,24 @@
* Requests the smartspace service provide continuous updates of smartspace cards via the
* provided callback, until the given callback is unregistered.
*
- * @param callbackExecutor The callback executor to use when calling the callback.
- * @param callback The Callback to be called when updates of Smartspace targets are
+ * @param listenerExecutor The listener executor to use when firing the listener.
+ * @param listener The listener to be called when updates of Smartspace targets are
* available.
*/
- public void registerSmartspaceUpdates(@NonNull @CallbackExecutor Executor callbackExecutor,
- @NonNull Callback callback) {
+ public void addOnTargetsAvailableListener(@NonNull @CallbackExecutor Executor listenerExecutor,
+ @NonNull OnTargetsAvailableListener listener) {
if (mIsClosed.get()) {
throw new IllegalStateException("This client has already been destroyed.");
}
- if (mRegisteredCallbacks.containsKey(callback)) {
+ if (mRegisteredCallbacks.containsKey(listener)) {
// Skip if this callback is already registered
return;
}
try {
- final CallbackWrapper callbackWrapper = new CallbackWrapper(callbackExecutor,
- callback::onTargetsAvailable);
- mRegisteredCallbacks.put(callback, callbackWrapper);
+ final CallbackWrapper callbackWrapper = new CallbackWrapper(listenerExecutor,
+ listener::onTargetsAvailable);
+ mRegisteredCallbacks.put(listener, callbackWrapper);
mInterface.registerSmartspaceUpdates(mSessionId, callbackWrapper);
mInterface.requestSmartspaceUpdate(mSessionId);
} catch (RemoteException e) {
@@ -175,21 +176,21 @@
* Requests the smartspace service to stop providing continuous updates to the provided
* callback until the callback is re-registered.
*
- * @see {@link SmartspaceSession#registerSmartspaceUpdates(Executor, Callback)}.
- *
- * @param callback The callback to be unregistered.
+ * @param listener The callback to be unregistered.
+ * @see {@link SmartspaceSession#addOnTargetsAvailableListener(Executor,
+ * OnTargetsAvailableListener)}.
*/
- public void unregisterSmartspaceUpdates(@NonNull Callback callback) {
+ public void removeOnTargetsAvailableListener(@NonNull OnTargetsAvailableListener listener) {
if (mIsClosed.get()) {
throw new IllegalStateException("This client has already been destroyed.");
}
- if (!mRegisteredCallbacks.containsKey(callback)) {
+ if (!mRegisteredCallbacks.containsKey(listener)) {
// Skip if this callback was never registered
return;
}
try {
- final CallbackWrapper callbackWrapper = mRegisteredCallbacks.remove(callback);
+ final CallbackWrapper callbackWrapper = mRegisteredCallbacks.remove(listener);
mInterface.unregisterSmartspaceUpdates(mSessionId, callbackWrapper);
} catch (RemoteException e) {
Log.e(TAG, "Failed to unregister for smartspace updates", e);
@@ -201,7 +202,7 @@
* Destroys the client and unregisters the callback. Any method on this class after this call
* will throw {@link IllegalStateException}.
*/
- public void destroy() {
+ private void destroy() {
if (!mIsClosed.getAndSet(true)) {
mCloseGuard.close();
@@ -238,6 +239,7 @@
@Override
public void close() {
try {
+ destroy();
finalize();
} catch (Throwable throwable) {
throwable.printStackTrace();
@@ -245,14 +247,14 @@
}
/**
- * Callback for receiving smartspace updates.
+ * Listener to receive smartspace targets from the service.
*/
- public interface Callback {
+ public interface OnTargetsAvailableListener {
/**
* Called when a new set of smartspace targets are available.
*
- * @param targets Sorted list of smartspace targets.
+ * @param targets Ranked list of smartspace targets.
*/
void onTargetsAvailable(@NonNull List<SmartspaceTarget> targets);
}
diff --git a/core/java/android/app/smartspace/SmartspaceSessionId.java b/core/java/android/app/smartspace/SmartspaceSessionId.java
index 5220c35..4040cb3 100644
--- a/core/java/android/app/smartspace/SmartspaceSessionId.java
+++ b/core/java/android/app/smartspace/SmartspaceSessionId.java
@@ -21,6 +21,7 @@
import android.annotation.SystemApi;
import android.os.Parcel;
import android.os.Parcelable;
+import android.os.UserHandle;
import java.util.Objects;
@@ -36,21 +37,21 @@
private final String mId;
@NonNull
- private final int mUserId;
+ private final UserHandle mUserHandle;
/**
* Creates a new id for a Smartspace session.
*
* @hide
*/
- public SmartspaceSessionId(@NonNull final String id, @NonNull final int userId) {
+ public SmartspaceSessionId(@NonNull final String id, @NonNull final UserHandle userHandle) {
mId = id;
- mUserId = userId;
+ mUserHandle = userHandle;
}
private SmartspaceSessionId(Parcel p) {
mId = p.readString();
- mUserId = p.readInt();
+ mUserHandle = p.readTypedObject(UserHandle.CREATOR);
}
/**
@@ -65,8 +66,8 @@
* Returns the userId associated with this sessionId.
*/
@NonNull
- public int getUserId() {
- return mUserId;
+ public UserHandle getUserHandle() {
+ return mUserHandle;
}
@Override
@@ -74,20 +75,20 @@
if (!getClass().equals(o != null ? o.getClass() : null)) return false;
SmartspaceSessionId other = (SmartspaceSessionId) o;
- return mId.equals(other.mId) && mUserId == other.mUserId;
+ return mId.equals(other.mId) && mUserHandle == other.mUserHandle;
}
@Override
public String toString() {
return "SmartspaceSessionId{"
+ "mId='" + mId + '\''
- + ", mUserId=" + mUserId
+ + ", mUserId=" + mUserHandle.getIdentifier()
+ '}';
}
@Override
public int hashCode() {
- return Objects.hash(mId, mUserId);
+ return Objects.hash(mId, mUserHandle);
}
@Override
@@ -98,7 +99,7 @@
@Override
public void writeToParcel(@NonNull Parcel dest, int flags) {
dest.writeString(mId);
- dest.writeInt(mUserId);
+ dest.writeTypedObject(this.mUserHandle, flags);
}
public static final @NonNull Creator<SmartspaceSessionId> CREATOR =
diff --git a/core/java/android/app/smartspace/SmartspaceTarget.java b/core/java/android/app/smartspace/SmartspaceTarget.java
index ce5040e..8e98535 100644
--- a/core/java/android/app/smartspace/SmartspaceTarget.java
+++ b/core/java/android/app/smartspace/SmartspaceTarget.java
@@ -15,6 +15,7 @@
*/
package android.app.smartspace;
+import android.annotation.CurrentTimeMillisLong;
import android.annotation.IntDef;
import android.annotation.NonNull;
import android.annotation.Nullable;
@@ -39,7 +40,7 @@
* {@link SmartspaceAction} as their type because they can have associated actions.
*
* <p><b>NOTE: </b>
- * If {@link mWidgetId} is set, it should be preferred over all other properties.
+ * If {@link mWidget} is set, it should be preferred over all other properties.
* Else, if {@link mSliceUri} is set, it should be preferred over all other data properties.
* Otherwise, the instance should be treated as a data object.
*
@@ -61,18 +62,17 @@
private final SmartspaceAction mBaseAction;
/** A timestamp indicating when the card was created. */
- @NonNull
+ @CurrentTimeMillisLong
private final long mCreationTimeMillis;
/**
* A timestamp indicating when the card should be removed from view, in case the service
* disconnects or restarts.
*/
- @NonNull
+ @CurrentTimeMillisLong
private final long mExpiryTimeMillis;
/** A score assigned to a target. */
- @NonNull
private final float mScore;
/** A {@link List<SmartspaceAction>} containing all action chips. */
@@ -89,18 +89,15 @@
* @see FeatureType
*/
@FeatureType
- @NonNull
private final int mFeatureType;
/**
* Indicates whether the content is sensitive. Certain UI surfaces may choose to skip rendering
* real content until the device is unlocked.
*/
- @NonNull
private final boolean mSensitive;
/** Indicating if the UI should show this target in its expanded state. */
- @NonNull
private final boolean mShouldShowExpanded;
/** A Notification key if the target was generated using a notification. */
@@ -115,7 +112,14 @@
@NonNull
private final UserHandle mUserHandle;
- /** Target Ids of other {@link SmartspaceTarget}s if they are associated with this target. */
+ /**
+ * Target Id of other {@link SmartspaceTarget}s if it is associated with this target. This
+ * association is added to tell the UI that a card would be more useful if displayed with the
+ * associated smartspace target. This field is supposed to be taken as a suggestion and the
+ * association can be ignored based on the situation in the UI. It is possible to have a one way
+ * card association. In other words, Card B can be associated with Card A but not the other way
+ * around.
+ */
@Nullable
private final String mAssociatedSmartspaceTargetId;
@@ -125,7 +129,7 @@
/** {@link AppWidgetProviderInfo} if this target is a widget. */
@Nullable
- private final AppWidgetProviderInfo mWidgetId;
+ private final AppWidgetProviderInfo mWidget;
public static final int FEATURE_UNDEFINED = 0;
public static final int FEATURE_WEATHER = 1;
@@ -202,7 +206,7 @@
this.mUserHandle = in.readTypedObject(UserHandle.CREATOR);
this.mAssociatedSmartspaceTargetId = in.readString();
this.mSliceUri = in.readTypedObject(Uri.CREATOR);
- this.mWidgetId = in.readTypedObject(AppWidgetProviderInfo.CREATOR);
+ this.mWidget = in.readTypedObject(AppWidgetProviderInfo.CREATOR);
}
private SmartspaceTarget(String smartspaceTargetId,
@@ -213,7 +217,7 @@
boolean shouldShowExpanded, String sourceNotificationKey,
ComponentName componentName, UserHandle userHandle,
String associatedSmartspaceTargetId, Uri sliceUri,
- AppWidgetProviderInfo widgetId) {
+ AppWidgetProviderInfo widget) {
mSmartspaceTargetId = smartspaceTargetId;
mHeaderAction = headerAction;
mBaseAction = baseAction;
@@ -230,7 +234,7 @@
mUserHandle = userHandle;
mAssociatedSmartspaceTargetId = associatedSmartspaceTargetId;
mSliceUri = sliceUri;
- mWidgetId = widgetId;
+ mWidget = widget;
}
/**
@@ -260,7 +264,7 @@
/**
* Returns the creation time of the target.
*/
- @NonNull
+ @CurrentTimeMillisLong
public long getCreationTimeMillis() {
return mCreationTimeMillis;
}
@@ -268,7 +272,7 @@
/**
* Returns the expiry time of the target.
*/
- @NonNull
+ @CurrentTimeMillisLong
public long getExpiryTimeMillis() {
return mExpiryTimeMillis;
}
@@ -276,7 +280,6 @@
/**
* Returns the score of the target.
*/
- @NonNull
public float getScore() {
return mScore;
}
@@ -300,7 +303,7 @@
/**
* Returns the feature type of the target.
*/
- @NonNull
+ @FeatureType
public int getFeatureType() {
return mFeatureType;
}
@@ -308,7 +311,6 @@
/**
* Returns whether the target is sensitive or not.
*/
- @NonNull
public boolean isSensitive() {
return mSensitive;
}
@@ -316,7 +318,6 @@
/**
* Returns whether the target should be shown in expanded state.
*/
- @NonNull
public boolean shouldShowExpanded() {
return mShouldShowExpanded;
}
@@ -365,8 +366,8 @@
* Returns the AppWidgetProviderInfo, if the target is a widget.
*/
@Nullable
- public AppWidgetProviderInfo getWidgetId() {
- return mWidgetId;
+ public AppWidgetProviderInfo getWidget() {
+ return mWidget;
}
/**
@@ -403,7 +404,7 @@
dest.writeTypedObject(this.mUserHandle, flags);
dest.writeString(this.mAssociatedSmartspaceTargetId);
dest.writeTypedObject(this.mSliceUri, flags);
- dest.writeTypedObject(this.mWidgetId, flags);
+ dest.writeTypedObject(this.mWidget, flags);
}
@Override
@@ -430,7 +431,7 @@
+ ", mUserHandle=" + mUserHandle
+ ", mAssociatedSmartspaceTargetId='" + mAssociatedSmartspaceTargetId + '\''
+ ", mSliceUri=" + mSliceUri
- + ", mWidgetId=" + mWidgetId
+ + ", mWidget=" + mWidget
+ '}';
}
@@ -456,7 +457,7 @@
&& Objects.equals(mAssociatedSmartspaceTargetId,
that.mAssociatedSmartspaceTargetId)
&& Objects.equals(mSliceUri, that.mSliceUri)
- && Objects.equals(mWidgetId, that.mWidgetId);
+ && Objects.equals(mWidget, that.mWidget);
}
@Override
@@ -464,7 +465,7 @@
return Objects.hash(mSmartspaceTargetId, mHeaderAction, mBaseAction, mCreationTimeMillis,
mExpiryTimeMillis, mScore, mActionChips, mIconGrid, mFeatureType, mSensitive,
mShouldShowExpanded, mSourceNotificationKey, mComponentName, mUserHandle,
- mAssociatedSmartspaceTargetId, mSliceUri, mWidgetId);
+ mAssociatedSmartspaceTargetId, mSliceUri, mWidget);
}
/**
@@ -490,7 +491,7 @@
private final UserHandle mUserHandle;
private String mAssociatedSmartspaceTargetId;
private Uri mSliceUri;
- private AppWidgetProviderInfo mWidgetId;
+ private AppWidgetProviderInfo mWidget;
/**
* A builder for {@link SmartspaceTarget}.
@@ -528,7 +529,7 @@
* Sets the creation time.
*/
@NonNull
- public Builder setCreationTimeMillis(@NonNull long creationTimeMillis) {
+ public Builder setCreationTimeMillis(@CurrentTimeMillisLong long creationTimeMillis) {
this.mCreationTimeMillis = creationTimeMillis;
return this;
}
@@ -537,7 +538,7 @@
* Sets the expiration time.
*/
@NonNull
- public Builder setExpiryTimeMillis(@NonNull long expiryTimeMillis) {
+ public Builder setExpiryTimeMillis(@CurrentTimeMillisLong long expiryTimeMillis) {
this.mExpiryTimeMillis = expiryTimeMillis;
return this;
}
@@ -546,7 +547,7 @@
* Sets the score.
*/
@NonNull
- public Builder setScore(@NonNull float score) {
+ public Builder setScore(float score) {
this.mScore = score;
return this;
}
@@ -573,7 +574,7 @@
* Sets the feature type.
*/
@NonNull
- public Builder setFeatureType(@NonNull int featureType) {
+ public Builder setFeatureType(int featureType) {
this.mFeatureType = featureType;
return this;
}
@@ -582,7 +583,7 @@
* Sets whether the contents are sensitive.
*/
@NonNull
- public Builder setSensitive(@NonNull boolean sensitive) {
+ public Builder setSensitive(boolean sensitive) {
this.mSensitive = sensitive;
return this;
}
@@ -591,7 +592,7 @@
* Sets whether to show the card as expanded.
*/
@NonNull
- public Builder setShouldShowExpanded(@NonNull boolean shouldShowExpanded) {
+ public Builder setShouldShowExpanded(boolean shouldShowExpanded) {
this.mShouldShowExpanded = shouldShowExpanded;
return this;
}
@@ -618,7 +619,7 @@
/**
* Sets the slice uri.
*
- * <p><b>NOTE: </b> If {@link mWidgetId} is also set, {@link mSliceUri} should be ignored.
+ * <p><b>NOTE: </b> If {@link mWidget} is also set, {@link mSliceUri} should be ignored.
*/
@NonNull
public Builder setSliceUri(@NonNull Uri sliceUri) {
@@ -629,12 +630,12 @@
/**
* Sets the widget id.
*
- * <p><b>NOTE: </b> If {@link mWidgetId} is set, all other @Nullable params should be
+ * <p><b>NOTE: </b> If {@link mWidget} is set, all other @Nullable params should be
* ignored.
*/
@NonNull
- public Builder setWidgetId(@NonNull AppWidgetProviderInfo widgetId) {
- this.mWidgetId = widgetId;
+ public Builder setWidget(@NonNull AppWidgetProviderInfo widget) {
+ this.mWidget = widget;
return this;
}
@@ -654,7 +655,7 @@
mHeaderAction, mBaseAction, mCreationTimeMillis, mExpiryTimeMillis, mScore,
mActionChips, mIconGrid, mFeatureType, mSensitive, mShouldShowExpanded,
mSourceNotificationKey, mComponentName, mUserHandle,
- mAssociatedSmartspaceTargetId, mSliceUri, mWidgetId);
+ mAssociatedSmartspaceTargetId, mSliceUri, mWidget);
}
}
}
diff --git a/core/java/android/app/smartspace/SmartspaceTargetEvent.java b/core/java/android/app/smartspace/SmartspaceTargetEvent.java
index 920b9fe..61f8723 100644
--- a/core/java/android/app/smartspace/SmartspaceTargetEvent.java
+++ b/core/java/android/app/smartspace/SmartspaceTargetEvent.java
@@ -41,11 +41,11 @@
/**
* Smartspace target was brought into view.
*/
- public static final int EVENT_TARGET_IN_VIEW = 2;
+ public static final int EVENT_TARGET_SHOWN = 2;
/**
* Smartspace target went out of view.
*/
- public static final int EVENT_TARGET_OUT_OF_VIEW = 3;
+ public static final int EVENT_TARGET_HIDDEN = 3;
/**
* A dismiss action was issued by the user.
*/
@@ -57,11 +57,11 @@
/**
* The Ui surface came into view.
*/
- public static final int EVENT_UI_SURFACE_IN_VIEW = 6;
+ public static final int EVENT_UI_SURFACE_SHOWN = 6;
/**
* The Ui surface went out of view.
*/
- public static final int EVENT_UI_SURFACE_OUT_OF_VIEW = 7;
+ public static final int EVENT_UI_SURFACE_HIDDEN = 7;
/**
* @see Parcelable.Creator
@@ -152,12 +152,12 @@
*/
@IntDef(prefix = {"EVENT_"}, value = {
EVENT_TARGET_INTERACTION,
- EVENT_TARGET_IN_VIEW,
- EVENT_TARGET_OUT_OF_VIEW,
+ EVENT_TARGET_SHOWN,
+ EVENT_TARGET_HIDDEN,
EVENT_TARGET_DISMISS,
EVENT_TARGET_BLOCK,
- EVENT_UI_SURFACE_IN_VIEW,
- EVENT_UI_SURFACE_OUT_OF_VIEW
+ EVENT_UI_SURFACE_SHOWN,
+ EVENT_UI_SURFACE_HIDDEN
})
@Retention(RetentionPolicy.SOURCE)
public @interface EventType {
diff --git a/core/java/android/app/usage/UsageStats.java b/core/java/android/app/usage/UsageStats.java
index cda4634..b723140 100644
--- a/core/java/android/app/usage/UsageStats.java
+++ b/core/java/android/app/usage/UsageStats.java
@@ -31,6 +31,8 @@
import static android.app.usage.UsageEvents.Event.USER_INTERACTION;
import android.annotation.CurrentTimeMillisLong;
+import android.annotation.NonNull;
+import android.annotation.Nullable;
import android.annotation.SystemApi;
import android.annotation.TestApi;
import android.compat.annotation.UnsupportedAppUsage;
@@ -760,4 +762,48 @@
return new UsageStats[size];
}
};
+
+ /** @hide */
+ // This class is used by the mainline test suite, so we have to keep these APIs around across
+ // releases. Consider making this class public to help external developers to write tests as
+ // well.
+ @TestApi
+ public static final class Builder {
+ private final UsageStats mUsageStats = new UsageStats();
+
+ @NonNull
+ public UsageStats build() {
+ return mUsageStats;
+ }
+
+ @NonNull
+ public Builder setPackageName(@Nullable String packageName) {
+ mUsageStats.mPackageName = packageName;
+ return this;
+ }
+
+ @NonNull
+ public Builder setFirstTimeStamp(long firstTimeStamp) {
+ mUsageStats.mBeginTimeStamp = firstTimeStamp;
+ return this;
+ }
+
+ @NonNull
+ public Builder setLastTimeStamp(long lastTimeStamp) {
+ mUsageStats.mEndTimeStamp = lastTimeStamp;
+ return this;
+ }
+
+ @NonNull
+ public Builder setTotalTimeInForeground(long totalTimeInForeground) {
+ mUsageStats.mTotalTimeInForeground = totalTimeInForeground;
+ return this;
+ }
+
+ @NonNull
+ public Builder setLastTimeUsed(long lastTimeUsed) {
+ mUsageStats.mLastTimeUsed = lastTimeUsed;
+ return this;
+ }
+ }
}
diff --git a/core/java/android/content/Intent.java b/core/java/android/content/Intent.java
index f8d407d..71cd6f1 100644
--- a/core/java/android/content/Intent.java
+++ b/core/java/android/content/Intent.java
@@ -2829,55 +2829,6 @@
public static final String ACTION_MY_PACKAGE_UNSUSPENDED = "android.intent.action.MY_PACKAGE_UNSUSPENDED";
/**
- * Broadcast Action: Sent to indicate that the package becomes startable.
- * The intent will have the following extra values:
- * <ul>
- * <li> {@link #EXTRA_UID} containing the integer uid assigned to the package. </li>
- * <li> {@link #EXTRA_PACKAGE_NAME} containing the package name. </li>
- * </li>
- * </ul>
- *
- * <p class="note">This is a protected intent that can only be sent by the system.
- * @hide
- */
- @SdkConstant(SdkConstantType.BROADCAST_INTENT_ACTION)
- public static final String ACTION_PACKAGE_STARTABLE = "android.intent.action.PACKAGE_STARTABLE";
-
- /**
- * Broadcast Action: Sent to indicate that the package becomes unstartable.
- * The intent will have the following extra values:
- * <ul>
- * <li> {@link #EXTRA_UID} containing the integer uid assigned to the package. </li>
- * <li> {@link #EXTRA_PACKAGE_NAME} containing the package name. </li>
- * <li> {@link #EXTRA_UNSTARTABLE_REASON} containing the integer indicating the reason for
- * the state change,
- * @see PackageManager.UnstartableReason
- * </li>
- * </ul>
- *
- * <p class="note">This is a protected intent that can only be sent by the system.
- * @hide
- */
- @SdkConstant(SdkConstantType.BROADCAST_INTENT_ACTION)
- public static final String ACTION_PACKAGE_UNSTARTABLE =
- "android.intent.action.PACKAGE_UNSTARTABLE";
-
- /**
- * Broadcast Action: Sent to indicate that the package is fully loaded.
- * <ul>
- * <li> {@link #EXTRA_UID} containing the integer uid assigned to the package. </li>
- * <li> {@link #EXTRA_PACKAGE_NAME} containing the package name. </li>
- * </li>
- * </ul>
- *
- * <p class="note">This is a protected intent that can only be sent by the system.
- * @hide
- */
- @SdkConstant(SdkConstantType.BROADCAST_INTENT_ACTION)
- public static final String ACTION_PACKAGE_FULLY_LOADED =
- "android.intent.action.PACKAGE_FULLY_LOADED";
-
- /**
* Broadcast Action: A user ID has been removed from the system. The user
* ID number is stored in the extra data under {@link #EXTRA_UID}.
*
@@ -5368,8 +5319,8 @@
public static final String EXTRA_ATTRIBUTION_TAGS = "android.intent.extra.ATTRIBUTION_TAGS";
/**
- * A long representing the start timestamp (in millis) of the permission usage when used with
- * {@link #ACTION_VIEW_PERMISSION_USAGE_FOR_PERIOD}
+ * A long representing the start timestamp (epoch time in millis) of the permission usage
+ * when used with {@link #ACTION_VIEW_PERMISSION_USAGE_FOR_PERIOD}
*
* @hide
*/
@@ -5377,8 +5328,8 @@
public static final String EXTRA_START_TIME = "android.intent.extra.START_TIME";
/**
- * A long representing the end timestamp (in millis) of the permission usage when used with
- * {@link #ACTION_VIEW_PERMISSION_USAGE_FOR_PERIOD}
+ * A long representing the end timestamp (epoch time in millis) of the permission usage when
+ * used with {@link #ACTION_VIEW_PERMISSION_USAGE_FOR_PERIOD}
*
* @hide
*/
@@ -6171,13 +6122,6 @@
*/
public static final String EXTRA_LOCUS_ID = "android.intent.extra.LOCUS_ID";
- /**
- * Intent extra: the reason that the package associated with this intent has become unstartable.
- *
- * <p>Type: String
- */
- public static final String EXTRA_UNSTARTABLE_REASON = "android.intent.extra.UNSTARTABLE_REASON";
-
// ---------------------------------------------------------------------
// ---------------------------------------------------------------------
// Intent flags (see mFlags variable).
diff --git a/core/java/android/content/pm/ActivityInfo.java b/core/java/android/content/pm/ActivityInfo.java
index fa9142c..fc0e214 100644
--- a/core/java/android/content/pm/ActivityInfo.java
+++ b/core/java/android/content/pm/ActivityInfo.java
@@ -961,6 +961,29 @@
public @interface SizeChangesSupportMode {}
/**
+ * This change id forces the packages it is applied to never have Display API sandboxing
+ * applied for a letterbox or SCM activity. The Display APIs will continue to provide
+ * DisplayArea bounds.
+ * @hide
+ */
+ @ChangeId
+ @Overridable
+ @Disabled
+ @TestApi
+ public static final long NEVER_SANDBOX_DISPLAY_APIS = 184838306L; // buganizer id
+
+ /**
+ * This change id forces the packages it is applied to always have Display API sandboxing
+ * applied, regardless of windowing mode. The Display APIs will always provide the app bounds.
+ * @hide
+ */
+ @ChangeId
+ @Overridable
+ @Disabled
+ @TestApi
+ public static final long ALWAYS_SANDBOX_DISPLAY_APIS = 185004937L; // buganizer id
+
+ /**
* This change id is the gatekeeper for all treatments that force a given min aspect ratio.
* Enabling this change will allow the following min aspect ratio treatments to be applied:
* OVERRIDE_MIN_ASPECT_RATIO_MEDIUM
@@ -1325,6 +1348,26 @@
return SIZE_CHANGES_UNSUPPORTED_METADATA;
}
+ /**
+ * Returns if the activity should never be sandboxed to the activity window bounds.
+ * @hide
+ */
+ public boolean neverSandboxDisplayApis() {
+ return CompatChanges.isChangeEnabled(NEVER_SANDBOX_DISPLAY_APIS,
+ applicationInfo.packageName,
+ UserHandle.getUserHandleForUid(applicationInfo.uid));
+ }
+
+ /**
+ * Returns if the activity should always be sandboxed to the activity window bounds.
+ * @hide
+ */
+ public boolean alwaysSandboxDisplayApis() {
+ return CompatChanges.isChangeEnabled(ALWAYS_SANDBOX_DISPLAY_APIS,
+ applicationInfo.packageName,
+ UserHandle.getUserHandleForUid(applicationInfo.uid));
+ }
+
/** @hide */
public void setMaxAspectRatio(float maxAspectRatio) {
this.mMaxAspectRatio = maxAspectRatio;
diff --git a/core/java/android/content/pm/IDataLoaderStatusListener.aidl b/core/java/android/content/pm/IDataLoaderStatusListener.aidl
index 79b70f2..9d8d0a4 100644
--- a/core/java/android/content/pm/IDataLoaderStatusListener.aidl
+++ b/core/java/android/content/pm/IDataLoaderStatusListener.aidl
@@ -52,30 +52,7 @@
* fail and all retry limits are exceeded. */
const int DATA_LOADER_UNRECOVERABLE = 9;
- /** There are no known issues with the data stream. */
- const int STREAM_HEALTHY = 0;
-
- /** There are issues with the current transport layer (network, adb connection, etc.) that may
- * recover automatically or could eventually require user intervention. */
- const int STREAM_TRANSPORT_ERROR = 1;
-
- /** Integrity failures in the data stream, this could be due to file corruption, decompression
- * issues or similar. This indicates a likely unrecoverable error. */
- const int STREAM_INTEGRITY_ERROR = 2;
-
- /** There are issues with the source of the data, e.g., backend availability issues, account
- * issues. This indicates a potentially recoverable error, but one that may take a long time to
- * resolve. */
- const int STREAM_SOURCE_ERROR = 3;
-
- /** The device or app is low on storage and cannot complete the stream as a result.
- * A subsequent page miss resulting in app failure will transition app to unstartable state. */
- const int STREAM_STORAGE_ERROR = 4;
-
/** Data loader status callback */
void onStatusChanged(in int dataLoaderId, in int status);
-
- /** Callback to report streaming health status of a specific data loader */
- void reportStreamHealth(in int dataLoaderId, in int streamStatus);
}
diff --git a/core/java/android/content/pm/IncrementalStatesInfo.java b/core/java/android/content/pm/IncrementalStatesInfo.java
index 6e91c19..0393d34b 100644
--- a/core/java/android/content/pm/IncrementalStatesInfo.java
+++ b/core/java/android/content/pm/IncrementalStatesInfo.java
@@ -24,26 +24,19 @@
* @hide
*/
public class IncrementalStatesInfo implements Parcelable {
- private boolean mIsStartable;
private boolean mIsLoading;
private float mProgress;
- public IncrementalStatesInfo(boolean isStartable, boolean isLoading, float progress) {
- mIsStartable = isStartable;
+ public IncrementalStatesInfo(boolean isLoading, float progress) {
mIsLoading = isLoading;
mProgress = progress;
}
private IncrementalStatesInfo(Parcel source) {
- mIsStartable = source.readBoolean();
mIsLoading = source.readBoolean();
mProgress = source.readFloat();
}
- public boolean isStartable() {
- return mIsStartable;
- }
-
public boolean isLoading() {
return mIsLoading;
}
@@ -59,7 +52,6 @@
@Override
public void writeToParcel(Parcel dest, int flags) {
- dest.writeBoolean(mIsStartable);
dest.writeBoolean(mIsLoading);
dest.writeFloat(mProgress);
}
diff --git a/core/java/android/content/pm/LauncherApps.java b/core/java/android/content/pm/LauncherApps.java
index 8b9b736..a8a5837 100644
--- a/core/java/android/content/pm/LauncherApps.java
+++ b/core/java/android/content/pm/LauncherApps.java
@@ -225,7 +225,6 @@
* Indicates that a package was modified in the specified profile.
* This can happen, for example, when the package is updated or when
* one or more components are enabled or disabled.
- * It can also happen if package state has changed, i.e., package becomes unstartable.
*
* @param packageName The name of the package that has changed.
* @param user The UserHandle of the profile that generated the change.
diff --git a/core/java/android/content/pm/PackageManager.java b/core/java/android/content/pm/PackageManager.java
index bba2fd0..67ecb7c 100644
--- a/core/java/android/content/pm/PackageManager.java
+++ b/core/java/android/content/pm/PackageManager.java
@@ -4370,39 +4370,6 @@
public static final int SYSTEM_APP_STATE_UNINSTALLED = 3;
/**
- * Reasons for why a package is unstartable.
- * @hide
- */
- @IntDef({UNSTARTABLE_REASON_UNKNOWN,
- UNSTARTABLE_REASON_CONNECTION_ERROR,
- UNSTARTABLE_REASON_INSUFFICIENT_STORAGE
- })
- @Retention(RetentionPolicy.SOURCE)
- public @interface UnstartableReason {}
-
- /**
- * Unstartable state with no root cause specified. E.g., data loader seeing missing pages but
- * unclear about the cause. This corresponds to a generic alert window shown to the user when
- * the user attempts to launch the app.
- * @hide
- */
- public static final int UNSTARTABLE_REASON_UNKNOWN = 0;
-
- /**
- * Unstartable state due to connection issues that interrupt package loading.
- * This corresponds to an alert window shown to the user indicating connection errors.
- * @hide
- */
- public static final int UNSTARTABLE_REASON_CONNECTION_ERROR = 1;
-
- /**
- * Unstartable state after encountering storage limitations.
- * This corresponds to an alert window indicating limited storage.
- * @hide
- */
- public static final int UNSTARTABLE_REASON_INSUFFICIENT_STORAGE = 2;
-
- /**
* A manifest property to control app's participation in {@code adb backup}. Should only
* be used by system / privileged apps.
*
@@ -7775,6 +7742,9 @@
* {@link #SYSTEM_APP_STATE_HIDDEN_UNTIL_INSTALLED_VISIBLE} or its installation state (via
* {@link #SYSTEM_APP_STATE_INSTALLED} and {@link #SYSTEM_APP_STATE_UNINSTALLED}.
*
+ * This API may only be called from {@link android.os.Process#SYSTEM_UID} or
+ * {@link android.os.Process#PHONE_UID}.
+ *
* @param packageName Package name of the app.
* @param state State of the app.
* @hide
diff --git a/core/java/android/os/CountDownTimer.java b/core/java/android/os/CountDownTimer.java
index c7bf0fd..51faa85 100644
--- a/core/java/android/os/CountDownTimer.java
+++ b/core/java/android/os/CountDownTimer.java
@@ -22,7 +22,22 @@
*
* Example of showing a 30 second countdown in a text field:
*
- * <pre class="prettyprint">
+ * <div>
+ * <div class="ds-selector-tabs"><section><h3 id="kotlin">Kotlin</h3>
+ * <pre class="prettyprint lang-kotlin">
+ * object : CountDownTimer(30000, 1000) {
+ *
+ * override fun onTick(millisUntilFinished: Long) {
+ * mTextField.setText("seconds remaining: " + millisUntilFinished / 1000)
+ * }
+ *
+ * override fun onFinish() {
+ * mTextField.setText("done!")
+ * }
+ * }.start()
+ * </pre>
+ * </section><section><h3 id="java">Java</h3>
+ * <pre class="prettyprint lang-java">
* new CountDownTimer(30000, 1000) {
*
* public void onTick(long millisUntilFinished) {
@@ -32,8 +47,8 @@
* public void onFinish() {
* mTextField.setText("done!");
* }
- * }.start();
- * </pre>
+ * }.start();
+ * </pre></section></div></div>
*
* The calls to {@link #onTick(long)} are synchronized to this object so that
* one call to {@link #onTick(long)} won't ever occur before the previous
diff --git a/core/java/android/os/Debug.java b/core/java/android/os/Debug.java
index e3b13f4..b8bb353 100644
--- a/core/java/android/os/Debug.java
+++ b/core/java/android/os/Debug.java
@@ -623,7 +623,7 @@
* </tr>
* <tr>
* <td>summary.total-pss</td>
- * <td>Total PPS memory usage in kB.</td>
+ * <td>Total PSS memory usage in kB.</td>
* <td>{@code 1442}</td>
* <td>23</td>
* </tr>
diff --git a/core/java/android/os/Parcelable.java b/core/java/android/os/Parcelable.java
index 7a624e1..a537c98 100644
--- a/core/java/android/os/Parcelable.java
+++ b/core/java/android/os/Parcelable.java
@@ -27,10 +27,39 @@
* and restored from a {@link Parcel}. Classes implementing the Parcelable
* interface must also have a non-null static field called <code>CREATOR</code>
* of a type that implements the {@link Parcelable.Creator} interface.
- *
+ *
* <p>A typical implementation of Parcelable is:</p>
- *
- * <pre>
+ *
+ * <div>
+ * <div class="ds-selector-tabs"><section><h3 id="kotlin">Kotlin</h3>
+ * <pre class="prettyprint lang-kotlin">
+ * class MyParcelable private constructor(`in`: Parcel) : Parcelable {
+ * private val mData: Int = `in`.readInt()
+ *
+ * override fun describeContents(): Int {
+ * return 0
+ * }
+ *
+ * override fun writeToParcel(out: Parcel, flags: Int) {
+ * out.writeInt(mData)
+ * }
+ *
+ * companion object {
+ * val CREATOR: Parcelable.Creator<MyParcelable?>
+ * = object : Parcelable.Creator<MyParcelable?> {
+ * override fun createFromParcel(`in`: Parcel): MyParcelable? {
+ * return MyParcelable(`in`)
+ * }
+ *
+ * override fun newArray(size: Int): Array<MyParcelable?> {
+ * return arrayOfNulls(size)
+ * }
+ * }
+ * }
+ * }
+ * </pre>
+ * </section><section><h3 id="java">Java</h3>
+ * <pre class="prettyprint lang-java">
* public class MyParcelable implements Parcelable {
* private int mData;
*
@@ -52,11 +81,11 @@
* return new MyParcelable[size];
* }
* };
- *
+ *
* private MyParcelable(Parcel in) {
* mData = in.readInt();
* }
- * }</pre>
+ * }</pre></section></div></div>
*/
public interface Parcelable {
/** @hide */
diff --git a/core/java/android/os/RecoverySystem.java b/core/java/android/os/RecoverySystem.java
index b474d7c..051447f 100644
--- a/core/java/android/os/RecoverySystem.java
+++ b/core/java/android/os/RecoverySystem.java
@@ -1423,8 +1423,8 @@
private boolean requestLskf(String packageName, IntentSender sender) throws IOException {
try {
return mService.requestLskf(packageName, sender);
- } catch (RemoteException e) {
- throw new IOException("could request LSKF capture");
+ } catch (RemoteException | SecurityException e) {
+ throw new IOException("could not request LSKF capture", e);
}
}
@@ -1437,8 +1437,8 @@
private boolean clearLskf(String packageName) throws IOException {
try {
return mService.clearLskf(packageName);
- } catch (RemoteException e) {
- throw new IOException("could not clear LSKF");
+ } catch (RemoteException | SecurityException e) {
+ throw new IOException("could not clear LSKF", e);
}
}
@@ -1452,8 +1452,8 @@
private boolean isLskfCaptured(String packageName) throws IOException {
try {
return mService.isLskfCaptured(packageName);
- } catch (RemoteException e) {
- throw new IOException("could not get LSKF capture state");
+ } catch (RemoteException | SecurityException e) {
+ throw new IOException("could not get LSKF capture state", e);
}
}
@@ -1465,12 +1465,11 @@
boolean slotSwitch) throws IOException {
try {
return mService.rebootWithLskf(packageName, reason, slotSwitch);
- } catch (RemoteException e) {
- throw new IOException("could not reboot for update");
+ } catch (RemoteException | SecurityException e) {
+ throw new IOException("could not reboot for update", e);
}
}
-
/**
* Calls the recovery system service to reboot and apply update. This is the legacy API and
* expects a slot switch for A/B devices.
@@ -1480,8 +1479,8 @@
String reason) throws IOException {
try {
return mService.rebootWithLskfAssumeSlotSwitch(packageName, reason);
- } catch (RemoteException e) {
- throw new IOException("could not reboot for update");
+ } catch (RemoteException | RuntimeException e) {
+ throw new IOException("could not reboot for update", e);
}
}
diff --git a/core/java/android/os/incremental/IIncrementalService.aidl b/core/java/android/os/incremental/IIncrementalService.aidl
index ba6fc6e..fe3197a 100644
--- a/core/java/android/os/incremental/IIncrementalService.aidl
+++ b/core/java/android/os/incremental/IIncrementalService.aidl
@@ -163,16 +163,6 @@
boolean unregisterLoadingProgressListener(int storageId);
/**
- * Register storage health status listener.
- */
- boolean registerStorageHealthListener(int storageId, in StorageHealthCheckParams params, in IStorageHealthListener listener);
-
- /**
- * Register storage health status listener.
- */
- void unregisterStorageHealthListener(int storageId);
-
- /**
* Metrics key for the duration in milliseconds between now and the oldest pending read. The value is a long.
*/
const @utf8InCpp String METRICS_MILLIS_SINCE_OLDEST_PENDING_READ = "millisSinceOldestPendingRead";
diff --git a/core/java/android/os/incremental/IStorageHealthListener.aidl b/core/java/android/os/incremental/IStorageHealthListener.aidl
index c71e73f..dc533a0 100644
--- a/core/java/android/os/incremental/IStorageHealthListener.aidl
+++ b/core/java/android/os/incremental/IStorageHealthListener.aidl
@@ -29,12 +29,6 @@
/** There are reads pending for params.unhealthyTimeoutMs,
* marking storage as unhealthy due to unknown issues. */
const int HEALTH_STATUS_UNHEALTHY = 3;
- /** There are reads pending for params.unhealthyTimeoutMs,
- * due to data transportation issues. */
- const int HEALTH_STATUS_UNHEALTHY_TRANSPORT = 4;
- /** There are reads pending for params.unhealthyTimeoutMs,
- * due to limited storage space. */
- const int HEALTH_STATUS_UNHEALTHY_STORAGE = 5;
/** Health status callback. */
void onHealthStatus(in int storageId, in int status);
diff --git a/core/java/android/os/incremental/IncrementalManager.java b/core/java/android/os/incremental/IncrementalManager.java
index 7fb9ae0..9c8ee56 100644
--- a/core/java/android/os/incremental/IncrementalManager.java
+++ b/core/java/android/os/incremental/IncrementalManager.java
@@ -294,7 +294,6 @@
return;
}
mLoadingProgressCallbacks.cleanUpCallbacks(storage);
- unregisterHealthListener(codePath);
storage.unBind(codePath);
} catch (IOException e) {
Slog.w(TAG, "Failed to remove code path", e);
@@ -397,38 +396,6 @@
}
/**
- * Specify the health check params and listener for listening to Incremental Storage health
- * status changes. Notice that this will overwrite the previously registered listener.
- * @param codePath Path of the installed package. This path is on an Incremental Storage.
- * @param healthCheckParams The params for health state change timeouts.
- * @param listener To report health status change.
- * @return True if listener was successfully registered.
- */
- public boolean registerHealthListener(@NonNull String codePath,
- @NonNull StorageHealthCheckParams healthCheckParams,
- @NonNull IStorageHealthListener.Stub listener) {
- final IncrementalStorage storage = openStorage(codePath);
- if (storage == null) {
- // storage does not exist, package not installed
- return false;
- }
- return storage.registerStorageHealthListener(healthCheckParams, listener);
- }
-
- /**
- * Stop listening to health status changes on an Incremental Storage.
- * @param codePath Path of the installed package. This path is on an Incremental Storage.
- */
- public void unregisterHealthListener(@NonNull String codePath) {
- final IncrementalStorage storage = openStorage(codePath);
- if (storage == null) {
- // storage does not exist, package not installed
- return;
- }
- storage.unregisterStorageHealthListener();
- }
-
- /**
* Returns the metrics of an Incremental Storage.
*/
public IncrementalMetrics getMetrics(@NonNull String codePath) {
diff --git a/core/java/android/os/incremental/IncrementalStorage.java b/core/java/android/os/incremental/IncrementalStorage.java
index c19e29f..4d46325 100644
--- a/core/java/android/os/incremental/IncrementalStorage.java
+++ b/core/java/android/os/incremental/IncrementalStorage.java
@@ -589,33 +589,6 @@
}
/**
- * Register to listen to the status changes of the storage health.
- * @param healthCheckParams Params to specify status change timeouts.
- * @param listener To report health status change from Incremental Service to the caller.
- */
- public boolean registerStorageHealthListener(StorageHealthCheckParams healthCheckParams,
- IStorageHealthListener listener) {
- try {
- return mService.registerStorageHealthListener(mId, healthCheckParams, listener);
- } catch (RemoteException e) {
- e.rethrowFromSystemServer();
- return false;
- }
- }
-
- /**
- * Stops listening to the status changes of the storage health.
- */
- public void unregisterStorageHealthListener() {
- try {
- mService.unregisterStorageHealthListener(mId);
- } catch (RemoteException e) {
- e.rethrowFromSystemServer();
- return;
- }
- }
-
- /**
* Returns the metrics of the current storage.
* {@see IIncrementalService} for metrics keys.
*/
diff --git a/core/java/android/os/incremental/V4Signature.java b/core/java/android/os/incremental/V4Signature.java
index 77d8664..688e3e9 100644
--- a/core/java/android/os/incremental/V4Signature.java
+++ b/core/java/android/os/incremental/V4Signature.java
@@ -41,6 +41,8 @@
public static final int HASHING_ALGORITHM_SHA256 = 1;
public static final byte LOG2_BLOCK_SIZE_4096_BYTES = 12;
+ public static final int INCFS_MAX_SIGNATURE_SIZE = 8096; // incrementalfs.h
+
/**
* IncFS hashing data.
*/
@@ -191,8 +193,12 @@
private static V4Signature readFrom(InputStream stream) throws IOException {
final int version = readIntLE(stream);
- final byte[] hashingInfo = readBytes(stream);
- final byte[] signingInfo = readBytes(stream);
+ int maxSize = INCFS_MAX_SIGNATURE_SIZE;
+ final byte[] hashingInfo = readBytes(stream, maxSize);
+ if (hashingInfo != null) {
+ maxSize -= hashingInfo.length;
+ }
+ final byte[] signingInfo = readBytes(stream, maxSize);
return new V4Signature(version, hashingInfo, signingInfo);
}
@@ -231,9 +237,13 @@
stream.write(buffer);
}
- private static byte[] readBytes(InputStream stream) throws IOException {
+ private static byte[] readBytes(InputStream stream, int maxSize) throws IOException {
try {
final int size = readIntLE(stream);
+ if (size > maxSize) {
+ throw new IOException(
+ "Signature is too long. Max allowed is " + INCFS_MAX_SIGNATURE_SIZE);
+ }
final byte[] bytes = new byte[size];
readFully(stream, bytes);
return bytes;
diff --git a/core/java/android/os/storage/StorageVolume.java b/core/java/android/os/storage/StorageVolume.java
index 36177c4..2adcbc3 100644
--- a/core/java/android/os/storage/StorageVolume.java
+++ b/core/java/android/os/storage/StorageVolume.java
@@ -20,6 +20,7 @@
import android.annotation.NonNull;
import android.annotation.Nullable;
+import android.annotation.SuppressLint;
import android.annotation.SystemApi;
import android.annotation.TestApi;
import android.compat.annotation.UnsupportedAppUsage;
@@ -551,4 +552,82 @@
parcel.writeString8(mFsUuid);
parcel.writeString8(mState);
}
+
+ /** @hide */
+ // This class is used by the mainline test suite, so we have to keep these APIs around across
+ // releases. Consider making this class public to help external developers to write tests as
+ // well.
+ @TestApi
+ public static final class Builder {
+ private String mId;
+ private File mPath;
+ private String mDescription;
+ private boolean mPrimary;
+ private boolean mRemovable;
+ private boolean mEmulated;
+ private UserHandle mOwner;
+ private UUID mStorageUuid;
+ private String mUuid;
+ private String mState;
+
+ @SuppressLint("StreamFiles")
+ public Builder(
+ @NonNull String id, @NonNull File path, @NonNull String description,
+ @NonNull UserHandle owner, @NonNull String state) {
+ mId = id;
+ mPath = path;
+ mDescription = description;
+ mOwner = owner;
+ mState = state;
+ }
+
+ @NonNull
+ public Builder setStorageUuid(@Nullable UUID storageUuid) {
+ mStorageUuid = storageUuid;
+ return this;
+ }
+
+ @NonNull
+ public Builder setUuid(@Nullable String uuid) {
+ mUuid = uuid;
+ return this;
+ }
+
+ @NonNull
+ public Builder setPrimary(boolean primary) {
+ mPrimary = primary;
+ return this;
+ }
+
+ @NonNull
+ public Builder setRemovable(boolean removable) {
+ mRemovable = removable;
+ return this;
+ }
+
+ @NonNull
+ public Builder setEmulated(boolean emulated) {
+ mEmulated = emulated;
+ return this;
+ }
+
+ @NonNull
+ public StorageVolume build() {
+ return new StorageVolume(
+ mId,
+ mPath,
+ /* internalPath= */ mPath,
+ mDescription,
+ mPrimary,
+ mRemovable,
+ mEmulated,
+ /* allowMassStorage= */ false,
+ /* maxFileSize= */ 0,
+ mOwner,
+ mStorageUuid,
+ mUuid,
+ mState);
+ }
+ }
+
}
diff --git a/core/java/android/permission/ILegacyPermissionManager.aidl b/core/java/android/permission/ILegacyPermissionManager.aidl
index 3bd4bf5..f1f0836 100644
--- a/core/java/android/permission/ILegacyPermissionManager.aidl
+++ b/core/java/android/permission/ILegacyPermissionManager.aidl
@@ -30,7 +30,11 @@
* @hide
*/
interface ILegacyPermissionManager {
- int checkDeviceIdentifierAccess(String packageName, String callingFeatureId, String message, int pid, int uid);
+ int checkDeviceIdentifierAccess(String packageName, String message, String callingFeatureId,
+ int pid, int uid);
+
+ int checkPhoneNumberAccess(String packageName, String message, String callingFeatureId,
+ int pid, int uid);
void grantDefaultPermissionsToEnabledCarrierApps(in String[] packageNames, int userId);
diff --git a/core/java/android/permission/LegacyPermissionManager.java b/core/java/android/permission/LegacyPermissionManager.java
index b66dd82..a4fa11b 100644
--- a/core/java/android/permission/LegacyPermissionManager.java
+++ b/core/java/android/permission/LegacyPermissionManager.java
@@ -90,6 +90,36 @@
}
/**
+ * Checks whether the package with the given pid/uid can read the device phone number.
+ *
+ * @param packageName the name of the package to be checked for phone number access
+ * @param message the message to be used for logging during phone number access
+ * verification
+ * @param callingFeatureId the feature in the package
+ * @param pid the process id of the package to be checked
+ * @param uid the uid of the package to be checked
+ * @return <ul>
+ * <li>{@link PackageManager#PERMISSION_GRANTED} if the package is allowed phone number
+ * access</li>
+ * <li>{@link android.app.AppOpsManager#MODE_IGNORED} if the package does not have phone
+ * number access but for appcompat reasons this should be a silent failure (ie return empty
+ * or null data)</li>
+ * <li>{@link PackageManager#PERMISSION_DENIED} if the package does not have phone number
+ * access</li>
+ * </ul>
+ * @hide
+ */
+ public int checkPhoneNumberAccess(@Nullable String packageName, @Nullable String message,
+ @Nullable String callingFeatureId, int pid, int uid) {
+ try {
+ return mLegacyPermissionManager.checkPhoneNumberAccess(packageName, message,
+ callingFeatureId, pid, uid);
+ } catch (RemoteException e) {
+ throw e.rethrowFromSystemServer();
+ }
+ }
+
+ /**
* Grant default permissions to currently active LUI app
* @param packageName The package name for the LUI app
* @param user The user handle
diff --git a/core/java/android/provider/Settings.java b/core/java/android/provider/Settings.java
index 2616a667..a9b92a3 100644
--- a/core/java/android/provider/Settings.java
+++ b/core/java/android/provider/Settings.java
@@ -9498,6 +9498,18 @@
= "bubble_important_conversations";
/**
+ * When enabled, notifications able to bubble will display an affordance allowing the user
+ * to bubble them.
+ * The value is boolean (1 to enable or 0 to disable).
+ *
+ * @hide
+ */
+ @TestApi
+ @SuppressLint("NoSettingsProvider")
+ @Readable
+ public static final String NOTIFICATION_BUBBLES = "notification_bubbles";
+
+ /**
* Whether notifications are dismissed by a right-to-left swipe (instead of a left-to-right
* swipe).
*
@@ -9968,6 +9980,7 @@
CLONE_TO_MANAGED_PROFILE.add(LOCATION_CHANGER);
CLONE_TO_MANAGED_PROFILE.add(LOCATION_MODE);
CLONE_TO_MANAGED_PROFILE.add(SHOW_IME_WITH_HARD_KEYBOARD);
+ CLONE_TO_MANAGED_PROFILE.add(NOTIFICATION_BUBBLES);
}
/** @hide */
@@ -10061,7 +10074,9 @@
* Whether the notification bubbles are globally enabled
* The value is boolean (1 or 0).
* @hide
+ * @deprecated moved to secure settings.
*/
+ @Deprecated
@TestApi
@Readable
public static final String NOTIFICATION_BUBBLES = "notification_bubbles";
@@ -14810,7 +14825,7 @@
MOVED_TO_SECURE.add(Global.ZEN_SETTINGS_SUGGESTION_VIEWED);
MOVED_TO_SECURE.add(Global.CHARGING_SOUNDS_ENABLED);
MOVED_TO_SECURE.add(Global.CHARGING_VIBRATION_ENABLED);
-
+ MOVED_TO_SECURE.add(Global.NOTIFICATION_BUBBLES);
}
/** @hide */
diff --git a/core/java/android/service/autofill/FillEventHistory.java b/core/java/android/service/autofill/FillEventHistory.java
index f226528..7a8f6f4 100644
--- a/core/java/android/service/autofill/FillEventHistory.java
+++ b/core/java/android/service/autofill/FillEventHistory.java
@@ -245,35 +245,35 @@
@interface EventIds{}
/** No reason for save dialog. */
- public static final int NO_SAVE_REASON_NONE = 0;
+ public static final int NO_SAVE_UI_REASON_NONE = 0;
/** The SaveInfo associated with the FillResponse is null. */
- public static final int NO_SAVE_REASON_NO_SAVE_INFO = 1;
+ public static final int NO_SAVE_UI_REASON_NO_SAVE_INFO = 1;
/** The service asked to delay save. */
- public static final int NO_SAVE_REASON_WITH_DELAY_SAVE_FLAG = 2;
+ public static final int NO_SAVE_UI_REASON_WITH_DELAY_SAVE_FLAG = 2;
/** There was empty value for required ids. */
- public static final int NO_SAVE_REASON_HAS_EMPTY_REQUIRED = 3;
+ public static final int NO_SAVE_UI_REASON_HAS_EMPTY_REQUIRED = 3;
/** No value has been changed. */
- public static final int NO_SAVE_REASON_NO_VALUE_CHANGED = 4;
+ public static final int NO_SAVE_UI_REASON_NO_VALUE_CHANGED = 4;
/** Fields failed validation. */
- public static final int NO_SAVE_REASON_FIELD_VALIDATION_FAILED = 5;
+ public static final int NO_SAVE_UI_REASON_FIELD_VALIDATION_FAILED = 5;
/** All fields matched contents of datasets. */
- public static final int NO_SAVE_REASON_DATASET_MATCH = 6;
+ public static final int NO_SAVE_UI_REASON_DATASET_MATCH = 6;
/** @hide */
- @IntDef(prefix = { "NO_SAVE_REASON_" }, value = {
- NO_SAVE_REASON_NONE,
- NO_SAVE_REASON_NO_SAVE_INFO,
- NO_SAVE_REASON_WITH_DELAY_SAVE_FLAG,
- NO_SAVE_REASON_HAS_EMPTY_REQUIRED,
- NO_SAVE_REASON_NO_VALUE_CHANGED,
- NO_SAVE_REASON_FIELD_VALIDATION_FAILED,
- NO_SAVE_REASON_DATASET_MATCH
+ @IntDef(prefix = { "NO_SAVE_UI_REASON_" }, value = {
+ NO_SAVE_UI_REASON_NONE,
+ NO_SAVE_UI_REASON_NO_SAVE_INFO,
+ NO_SAVE_UI_REASON_WITH_DELAY_SAVE_FLAG,
+ NO_SAVE_UI_REASON_HAS_EMPTY_REQUIRED,
+ NO_SAVE_UI_REASON_NO_VALUE_CHANGED,
+ NO_SAVE_UI_REASON_FIELD_VALIDATION_FAILED,
+ NO_SAVE_UI_REASON_DATASET_MATCH
})
@Retention(RetentionPolicy.SOURCE)
public @interface NoSaveReason{}
@@ -488,11 +488,12 @@
* Returns the reason why a save dialog was not shown.
*
* <p><b>Note: </b>Only set on events of type {@link #TYPE_CONTEXT_COMMITTED}. For the other
- * event types, the reason is set to NO_SAVE_REASON_NONE.
+ * event types, the reason is set to NO_SAVE_UI_REASON_NONE.
*
* @return The reason why a save dialog was not shown.
*/
- public int getNoSaveReason() {
+ @NoSaveReason
+ public int getNoSaveUiReason() {
return mSaveDialogNotShowReason;
}
@@ -533,7 +534,7 @@
this(eventType, datasetId, clientState, selectedDatasetIds, ignoredDatasetIds,
changedFieldIds, changedDatasetIds, manuallyFilledFieldIds,
manuallyFilledDatasetIds, detectedFieldIds, detectedFieldClassifications,
- NO_SAVE_REASON_NONE);
+ NO_SAVE_UI_REASON_NONE);
}
/**
@@ -599,7 +600,7 @@
mDetectedFieldClassifications = detectedFieldClassifications;
mSaveDialogNotShowReason = Preconditions.checkArgumentInRange(saveDialogNotShowReason,
- NO_SAVE_REASON_NONE, NO_SAVE_REASON_DATASET_MATCH,
+ NO_SAVE_UI_REASON_NONE, NO_SAVE_UI_REASON_DATASET_MATCH,
"saveDialogNotShowReason");
}
diff --git a/core/java/android/service/textservice/SpellCheckerService.java b/core/java/android/service/textservice/SpellCheckerService.java
index e492584..45f9743 100644
--- a/core/java/android/service/textservice/SpellCheckerService.java
+++ b/core/java/android/service/textservice/SpellCheckerService.java
@@ -421,7 +421,8 @@
final ArrayList<SentenceWordItem> wordItems = new ArrayList<SentenceWordItem>();
wordIterator.setCharSequence(originalText, 0, originalText.length());
int wordEnd = wordIterator.following(start);
- int wordStart = wordIterator.getBeginning(wordEnd);
+ int wordStart = wordEnd == BreakIterator.DONE ? BreakIterator.DONE
+ : wordIterator.getBeginning(wordEnd);
if (DBG) {
Log.d(TAG, "iterator: break: ---- 1st word start = " + wordStart + ", end = "
+ wordEnd + "\n" + originalText);
diff --git a/core/java/android/service/translation/ITranslationCallback.aidl b/core/java/android/service/translation/ITranslationCallback.aidl
index 893c9d0..c7e63a0 100644
--- a/core/java/android/service/translation/ITranslationCallback.aidl
+++ b/core/java/android/service/translation/ITranslationCallback.aidl
@@ -25,5 +25,4 @@
*/
oneway interface ITranslationCallback {
void onTranslationResponse(in TranslationResponse translationResponse);
- void onError();
}
diff --git a/core/java/android/service/translation/OnTranslationResultCallbackWrapper.java b/core/java/android/service/translation/OnTranslationResultCallbackWrapper.java
index 10a2aa2..f585155 100644
--- a/core/java/android/service/translation/OnTranslationResultCallbackWrapper.java
+++ b/core/java/android/service/translation/OnTranslationResultCallbackWrapper.java
@@ -66,22 +66,13 @@
}
}
+ /**
+ * @deprecated use {@link #onTranslationSuccess} with error response instead.
+ */
@Override
+ @Deprecated
public void onError() {
- assertNotCalled();
- if (mCalled.getAndSet(true)) {
- throw new IllegalStateException("Already called");
- }
-
- try {
- mCallback.onError();
- } catch (RemoteException e) {
- if (e instanceof DeadObjectException) {
- Log.w(TAG, "Process is dead, ignore.");
- return;
- }
- throw e.rethrowAsRuntimeException();
- }
+ // no-op.
}
private void assertNotCalled() {
diff --git a/core/java/android/service/translation/TranslationService.java b/core/java/android/service/translation/TranslationService.java
index a3bbdb9..17cb3da 100644
--- a/core/java/android/service/translation/TranslationService.java
+++ b/core/java/android/service/translation/TranslationService.java
@@ -16,6 +16,8 @@
package android.service.translation;
+import static android.view.translation.TranslationManager.STATUS_SYNC_CALL_FAIL;
+import static android.view.translation.TranslationManager.STATUS_SYNC_CALL_SUCCESS;
import static android.view.translation.Translator.EXTRA_SERVICE_BINDER;
import static android.view.translation.Translator.EXTRA_SESSION_ID;
@@ -141,7 +143,9 @@
/**
* TODO: implement javadoc
+ * @deprecated use {@link #onTranslationSuccess} with an error response instead.
*/
+ @Deprecated
void onError();
}
@@ -207,13 +211,33 @@
}
/**
- * TODO: fill in javadoc.
+ * Called to notify the service that a session was created
+ * (see {@link android.view.translation.Translator}).
*
- * @param translationContext
- * @param sessionId
+ * <p>The service must call {@code callback.accept()} to acknowledge whether the session is
+ * supported and created successfully. If the translation context is not supported, the service
+ * should call back with {@code false}.</p>
+ *
+ * @param translationContext the {@link TranslationContext} of the session being created.
+ * @param sessionId the int id of the session.
+ * @param callback {@link Consumer} to notify whether the session was successfully created.
*/
// TODO(b/176464808): the session id won't be unique cross client/server process. Need to find
// solution to make it's safe.
+ // TODO: make abstract once aiai is implemented.
+ public void onCreateTranslationSession(@NonNull TranslationContext translationContext,
+ int sessionId, @NonNull Consumer<Boolean> callback) {
+ onCreateTranslationSession(translationContext, sessionId);
+ callback.accept(true);
+ }
+
+ /**
+ * TODO: fill in javadoc.
+ *
+ * @deprecated use {@link #onCreateTranslationSession(TranslationContext, int, Consumer)}
+ * instead.
+ */
+ @Deprecated
public abstract void onCreateTranslationSession(@NonNull TranslationContext translationContext,
int sessionId);
@@ -253,19 +277,30 @@
// TODO(b/176464808): Need to handle client dying case
- // TODO(b/176464808): Need to handle the failure case. e.g. if the context is not supported.
-
private void handleOnCreateTranslationSession(@NonNull TranslationContext translationContext,
int sessionId, IResultReceiver resultReceiver) {
- try {
- final Bundle extras = new Bundle();
- extras.putBinder(EXTRA_SERVICE_BINDER, mClientInterface.asBinder());
- extras.putInt(EXTRA_SESSION_ID, sessionId);
- resultReceiver.send(0, extras);
- } catch (RemoteException e) {
- Log.w(TAG, "RemoteException sending client interface: " + e);
- }
- onCreateTranslationSession(translationContext, sessionId);
+ onCreateTranslationSession(translationContext, sessionId,
+ new Consumer<Boolean>() {
+ @Override
+ public void accept(Boolean created) {
+ try {
+ if (!created) {
+ Log.w(TAG, "handleOnCreateTranslationSession(): context="
+ + translationContext + " not supported by service.");
+ resultReceiver.send(STATUS_SYNC_CALL_FAIL, null);
+ return;
+ }
+
+ final Bundle extras = new Bundle();
+ extras.putBinder(EXTRA_SERVICE_BINDER, mClientInterface.asBinder());
+ extras.putInt(EXTRA_SESSION_ID, sessionId);
+ resultReceiver.send(STATUS_SYNC_CALL_SUCCESS, extras);
+ } catch (RemoteException e) {
+ Log.w(TAG, "RemoteException sending client interface: " + e);
+ }
+ }
+ });
+
}
private void handleOnTranslationCapabilitiesRequest(
@@ -280,9 +315,8 @@
final Bundle bundle = new Bundle();
bundle.putParcelableArray(TranslationManager.EXTRA_CAPABILITIES,
capabilities.toArray(new TranslationCapability[0]));
- resultReceiver.send(TranslationManager.STATUS_SYNC_CALL_SUCCESS, bundle);
+ resultReceiver.send(STATUS_SYNC_CALL_SUCCESS, bundle);
}
});
-
}
}
diff --git a/core/java/android/service/voice/AlwaysOnHotwordDetector.java b/core/java/android/service/voice/AlwaysOnHotwordDetector.java
index 8ca0e7c..0b410a2 100644
--- a/core/java/android/service/voice/AlwaysOnHotwordDetector.java
+++ b/core/java/android/service/voice/AlwaysOnHotwordDetector.java
@@ -24,6 +24,7 @@
import android.annotation.Nullable;
import android.annotation.RequiresPermission;
import android.annotation.SystemApi;
+import android.annotation.TestApi;
import android.app.ActivityThread;
import android.compat.annotation.UnsupportedAppUsage;
import android.content.Context;
@@ -49,6 +50,7 @@
import android.os.RemoteException;
import android.os.SharedMemory;
import android.service.voice.HotwordDetectionService.InitializationStatus;
+import android.util.Log;
import android.util.Slog;
import com.android.internal.app.IHotwordRecognitionStatusCallback;
@@ -628,6 +630,34 @@
}
/**
+ * Test API to simulate to trigger hardware recognition event for test.
+ *
+ * @hide
+ */
+ @TestApi
+ @RequiresPermission(allOf = {RECORD_AUDIO, CAPTURE_AUDIO_HOTWORD})
+ public void triggerHardwareRecognitionEventForTest(int status, int soundModelHandle,
+ boolean captureAvailable, int captureSession, int captureDelayMs, int capturePreambleMs,
+ boolean triggerInData, @NonNull AudioFormat captureFormat, @Nullable byte[] data) {
+ Log.d(TAG, "triggerHardwareRecognitionEventForTest()");
+ synchronized (mLock) {
+ if (mAvailability == STATE_INVALID || mAvailability == STATE_ERROR) {
+ throw new IllegalStateException("triggerHardwareRecognitionEventForTest called on"
+ + " an invalid detector or error state");
+ }
+ try {
+ mModelManagementService.triggerHardwareRecognitionEventForTest(
+ new KeyphraseRecognitionEvent(status, soundModelHandle, captureAvailable,
+ captureSession, captureDelayMs, capturePreambleMs, triggerInData,
+ captureFormat, data, null /* keyphraseExtras */),
+ mInternalCallback);
+ } catch (RemoteException e) {
+ throw e.rethrowFromSystemServer();
+ }
+ }
+ }
+
+ /**
* Gets the recognition modes supported by the associated keyphrase.
*
* @see #RECOGNITION_MODE_USER_IDENTIFICATION
diff --git a/core/java/android/speech/RecognitionListener.java b/core/java/android/speech/RecognitionListener.java
index 07bd9ea..c94b60f 100644
--- a/core/java/android/speech/RecognitionListener.java
+++ b/core/java/android/speech/RecognitionListener.java
@@ -62,7 +62,8 @@
/**
* A network or recognition error occurred.
*
- * @param error code is defined in {@link SpeechRecognizer}
+ * @param error code is defined in {@link SpeechRecognizer}. Implementations need to handle any
+ * integer error constant to be passed here beyond constants prefixed with ERROR_.
*/
void onError(@SpeechRecognizer.RecognitionError int error);
diff --git a/core/java/android/uwb/IUwbAdapter.aidl b/core/java/android/uwb/IUwbAdapter.aidl
index 30da248..62f1c0c 100644
--- a/core/java/android/uwb/IUwbAdapter.aidl
+++ b/core/java/android/uwb/IUwbAdapter.aidl
@@ -16,6 +16,7 @@
package android.uwb;
+import android.content.AttributionSource;
import android.os.PersistableBundle;
import android.uwb.IUwbAdapterStateCallbacks;
import android.uwb.IUwbRangingCallbacks;
@@ -77,11 +78,13 @@
* If the provided sessionHandle is already open for the calling client, then
* #onRangingOpenFailed must be called and the new session must not be opened.
*
+ * @param attributionSource AttributionSource to use for permission enforcement.
* @param sessionHandle the session handle to open ranging for
* @param rangingCallbacks the callbacks used to deliver ranging information
* @param parameters the configuration to use for ranging
*/
- void openRanging(in SessionHandle sessionHandle,
+ void openRanging(in AttributionSource attributionSource,
+ in SessionHandle sessionHandle,
in IUwbRangingCallbacks rangingCallbacks,
in PersistableBundle parameters);
diff --git a/core/java/android/uwb/RangingManager.java b/core/java/android/uwb/RangingManager.java
index ff8b912..6bba796 100644
--- a/core/java/android/uwb/RangingManager.java
+++ b/core/java/android/uwb/RangingManager.java
@@ -63,8 +63,7 @@
new RangingSession(executor, callbacks, mAdapter, sessionHandle);
mRangingSessionTable.put(sessionHandle, session);
try {
- // TODO: Pass in the attributionSource to the service.
- mAdapter.openRanging(sessionHandle, this, params);
+ mAdapter.openRanging(attributionSource, sessionHandle, this, params);
} catch (RemoteException e) {
throw e.rethrowFromSystemServer();
}
diff --git a/core/java/android/view/InsetsController.java b/core/java/android/view/InsetsController.java
index c201e3b..def9ca4 100644
--- a/core/java/android/view/InsetsController.java
+++ b/core/java/android/view/InsetsController.java
@@ -541,9 +541,6 @@
private final SparseArray<InsetsSourceControl> mTmpControlArray = new SparseArray<>();
private final ArrayList<RunningAnimation> mRunningAnimations = new ArrayList<>();
- private final ArrayList<WindowInsetsAnimation> mTmpRunningAnims = new ArrayList<>();
- private final List<WindowInsetsAnimation> mUnmodifiableTmpRunningAnims =
- Collections.unmodifiableList(mTmpRunningAnims);
private final ArrayList<InsetsAnimationControlImpl> mTmpFinishedControls = new ArrayList<>();
private final ArraySet<InsetsSourceConsumer> mRequestedVisibilityChanged = new ArraySet<>();
private WindowInsets mLastInsets;
@@ -601,9 +598,8 @@
return;
}
- mTmpFinishedControls.clear();
- mTmpRunningAnims.clear();
- InsetsState state = new InsetsState(mState, true /* copySources */);
+ final List<WindowInsetsAnimation> runningAnimations = new ArrayList<>();
+ final InsetsState state = new InsetsState(mState, true /* copySources */);
for (int i = mRunningAnimations.size() - 1; i >= 0; i--) {
RunningAnimation runningAnimation = mRunningAnimations.get(i);
if (DEBUG) Log.d(TAG, "Running animation type: " + runningAnimation.type);
@@ -615,7 +611,7 @@
// if it gets finished within applyChangeInsets we still dispatch it to
// onProgress.
if (runningAnimation.startDispatched) {
- mTmpRunningAnims.add(control.getAnimation());
+ runningAnimations.add(control.getAnimation());
}
if (control.applyChangeInsets(state)) {
@@ -628,9 +624,10 @@
mLastInsets.isRound(), mLastInsets.shouldAlwaysConsumeSystemBars(),
mLastLegacySoftInputMode, mLastLegacyWindowFlags, mLastLegacySystemUiFlags,
mWindowType, mLastWindowingMode, null /* typeSideMap */);
- mHost.dispatchWindowInsetsAnimationProgress(insets, mUnmodifiableTmpRunningAnims);
+ mHost.dispatchWindowInsetsAnimationProgress(insets,
+ Collections.unmodifiableList(runningAnimations));
if (DEBUG) {
- for (WindowInsetsAnimation anim : mUnmodifiableTmpRunningAnims) {
+ for (WindowInsetsAnimation anim : runningAnimations) {
Log.d(TAG, String.format("Running animation type: %d, progress: %f",
anim.getTypeMask(), anim.getInterpolatedFraction()));
}
@@ -639,6 +636,7 @@
for (int i = mTmpFinishedControls.size() - 1; i >= 0; i--) {
dispatchAnimationEnd(mTmpFinishedControls.get(i).getAnimation());
}
+ mTmpFinishedControls.clear();
};
}
@@ -1441,7 +1439,7 @@
}
void dump(String prefix, PrintWriter pw) {
- pw.println(prefix); pw.println("InsetsController:");
+ pw.print(prefix); pw.println("InsetsController:");
mState.dump(prefix + " ", pw);
}
diff --git a/core/java/android/view/SurfaceControl.java b/core/java/android/view/SurfaceControl.java
index 4977a6e..3ff7a65 100644
--- a/core/java/android/view/SurfaceControl.java
+++ b/core/java/android/view/SurfaceControl.java
@@ -34,6 +34,7 @@
import android.annotation.TestApi;
import android.compat.annotation.UnsupportedAppUsage;
import android.graphics.Bitmap;
+import android.graphics.BLASTBufferQueue;
import android.graphics.ColorSpace;
import android.graphics.GraphicBuffer;
import android.graphics.Matrix;
@@ -95,6 +96,7 @@
private static native void nativeWriteToParcel(long nativeObject, Parcel out);
private static native void nativeRelease(long nativeObject);
private static native void nativeDisconnect(long nativeObject);
+ private static native void nativeUpdateDefaultBufferSize(long nativeObject, int width, int height);
private static native int nativeCaptureDisplay(DisplayCaptureArgs captureArgs,
ScreenCaptureListener captureListener);
private static native int nativeCaptureLayers(LayerCaptureArgs captureArgs,
@@ -1083,6 +1085,11 @@
throw new IllegalStateException(
"Only buffer layers can set a valid buffer size.");
}
+
+ if ((mFlags & FX_SURFACE_MASK) == FX_SURFACE_NORMAL) {
+ setBLASTLayer();
+ }
+
return new SurfaceControl(
mSession, mName, mWidth, mHeight, mFormat, mFlags, mParent, mMetadata,
mLocalOwnerView, mCallsite);
@@ -1139,9 +1146,6 @@
return setFlags(FX_SURFACE_NORMAL, FX_SURFACE_MASK);
}
- /**
- * Set the initial size of the controlled surface's buffers in pixels.
- */
private void unsetBufferSize() {
mWidth = 0;
mHeight = 0;
@@ -1310,7 +1314,6 @@
* @hide
*/
public Builder setBLASTLayer() {
- unsetBufferSize();
return setFlags(FX_SURFACE_BLAST, FX_SURFACE_MASK);
}
@@ -2659,8 +2662,7 @@
final Point size = mResizedSurfaces.valueAt(i);
final SurfaceControl surfaceControl = mResizedSurfaces.keyAt(i);
synchronized (surfaceControl.mLock) {
- surfaceControl.mWidth = size.x;
- surfaceControl.mHeight = size.y;
+ surfaceControl.resize(size.x, size.y);
}
}
mResizedSurfaces.clear();
@@ -3576,4 +3578,13 @@
public static Transaction getGlobalTransaction() {
return sGlobalTransaction;
}
+
+ /**
+ * @hide
+ */
+ public void resize(int w, int h) {
+ mWidth = w;
+ mHeight = h;
+ nativeUpdateDefaultBufferSize(mNativeObject, w, h);
+ }
}
diff --git a/core/java/android/view/SyncRtSurfaceTransactionApplier.java b/core/java/android/view/SyncRtSurfaceTransactionApplier.java
index acbcbfa..162c71b 100644
--- a/core/java/android/view/SyncRtSurfaceTransactionApplier.java
+++ b/core/java/android/view/SyncRtSurfaceTransactionApplier.java
@@ -191,7 +191,7 @@
* @return this Builder
*/
public Builder withMatrix(Matrix matrix) {
- this.matrix = matrix;
+ this.matrix = new Matrix(matrix);
flags |= FLAG_MATRIX;
return this;
}
@@ -201,7 +201,7 @@
* @return this Builder
*/
public Builder withWindowCrop(Rect windowCrop) {
- this.windowCrop = windowCrop;
+ this.windowCrop = new Rect(windowCrop);
flags |= FLAG_WINDOW_CROP;
return this;
}
@@ -272,8 +272,8 @@
this.flags = params;
this.surface = surface;
this.alpha = alpha;
- this.matrix = new Matrix(matrix);
- this.windowCrop = new Rect(windowCrop);
+ this.matrix = matrix;
+ this.windowCrop = windowCrop;
this.layer = layer;
this.cornerRadius = cornerRadius;
this.backgroundBlurRadius = backgroundBlurRadius;
diff --git a/core/java/android/view/View.java b/core/java/android/view/View.java
index a757295..b82afca 100644
--- a/core/java/android/view/View.java
+++ b/core/java/android/view/View.java
@@ -1494,7 +1494,7 @@
public static final int SCROLL_CAPTURE_HINT_AUTO = 0;
/**
- * Explicitly exclcude this view as a potential scroll capture target. The system will not
+ * Explicitly exclude this view as a potential scroll capture target. The system will not
* consider it. Mutually exclusive with {@link #SCROLL_CAPTURE_HINT_INCLUDE}, which this flag
* takes precedence over.
*
@@ -5260,6 +5260,10 @@
@Nullable
private ViewTranslationCallback mViewTranslationCallback;
+ @Nullable
+
+ private ViewTranslationResponse mViewTranslationResponse;
+
/**
* Simple constructor to use when creating a view from code.
*
@@ -26005,6 +26009,7 @@
*
* @attr ref android.R.styleable#View_minWidth
*/
+ @RemotableViewMethod
public void setMinimumWidth(int minWidth) {
mMinWidth = minWidth;
requestLayout();
@@ -30143,6 +30148,10 @@
*/
public void setScrollCaptureHint(@ScrollCaptureHint int hint) {
mPrivateFlags4 &= ~PFLAG4_SCROLL_CAPTURE_HINT_MASK;
+ // Since include/exclude are mutually exclusive, exclude takes precedence.
+ if ((hint & SCROLL_CAPTURE_HINT_EXCLUDE) != 0) {
+ hint &= ~SCROLL_CAPTURE_HINT_INCLUDE;
+ }
mPrivateFlags4 |= ((hint << PFLAG4_SCROLL_CAPTURE_HINT_SHIFT)
& PFLAG4_SCROLL_CAPTURE_HINT_MASK);
}
@@ -30765,57 +30774,50 @@
}
/**
- * Returns a {@link ViewTranslationRequest} which represents the content to be translated.
- *
- * <p>The default implementation does nothing and returns null.</p>
- *
- * @param supportedFormats the supported translation formats. For now, the only possible value
- * is the {@link android.view.translation.TranslationSpec#DATA_FORMAT_TEXT}.
- * @return the {@link ViewTranslationRequest} which contains the information to be translated or
- * {@code null} if this View doesn't support translation.
- * The {@link AutofillId} must be set on the returned value.
- */
- @Nullable
- public ViewTranslationRequest onCreateTranslationRequest(
- @NonNull @DataFormat int[] supportedFormats) {
- return null;
- }
-
- /**
- * Returns a {@link ViewTranslationRequest} list which represents the content to be translated
- * in the virtual view. This is called if this view returned a virtual view structure
- * from {@link #onProvideContentCaptureStructure} and the system determined that those virtual
- * views were relevant for translation.
+ * Collects a {@link ViewTranslationRequest} which represents the content to be translated in
+ * the view.
*
* <p>The default implementation does nothing.</p>
*
- * @param virtualChildIds the virtual child ids which represents the child views in the virtual
+ * @param supportedFormats the supported translation formats. For now, the only possible value
+ * is the {@link android.view.translation.TranslationSpec#DATA_FORMAT_TEXT}.
+ * @param requestsCollector a {@link ViewTranslationRequest} collector that can be used to
+ * collect the information to be translated in the view. The {@code requestsCollector} only
+ * accepts one request; an IllegalStateException is thrown if more than one
+ * {@link ViewTranslationRequest} is submitted to it. The {@link AutofillId} must be set on the
+ * {@link ViewTranslationRequest}.
+ */
+ public void onCreateViewTranslationRequest(@NonNull @DataFormat int[] supportedFormats,
+ @NonNull Consumer<ViewTranslationRequest> requestsCollector) {
+ }
+
+ /**
+ * Collects {@link ViewTranslationRequest}s which represents the content to be translated
+ * for the virtual views in the host view. This is called if this view returned a virtual
+ * view structure from {@link #onProvideContentCaptureStructure} and the system determined that
+ * those virtual views were relevant for translation.
+ *
+ * <p>The default implementation does nothing.</p>
+ *
+ * @param virtualIds the virtual view ids which represents the virtual views in the host
* view.
* @param supportedFormats the supported translation formats. For now, the only possible value
* is the {@link android.view.translation.TranslationSpec#DATA_FORMAT_TEXT}.
* @param requestsCollector a {@link ViewTranslationRequest} collector that can be called
- * multiple times to collect the information to be translated in the virtual view. One
+ * multiple times to collect the information to be translated in the host view. One
* {@link ViewTranslationRequest} per virtual child. The {@link ViewTranslationRequest} must
* contains the {@link AutofillId} corresponding to the virtualChildIds. Do not keep this
* Consumer after the method returns.
*/
@SuppressLint("NullableCollection")
- public void onCreateTranslationRequests(@NonNull long[] virtualChildIds,
+ public void onCreateVirtualViewTranslationRequests(@NonNull long[] virtualIds,
@NonNull @DataFormat int[] supportedFormats,
@NonNull Consumer<ViewTranslationRequest> requestsCollector) {
// no-op
}
/**
- * Returns a {@link ViewTranslationCallback} that is used to display/hide the translated
- * information. If the View supports displaying translated content, it should implement
- * {@link ViewTranslationCallback}.
- *
- * <p>The default implementation returns null if developers don't set the customized
- * {@link ViewTranslationCallback} by {@link #setViewTranslationCallback} </p>
- *
- * @return a {@link ViewTranslationCallback} that is used to control how to display the
- * translated information or {@code null} if this View doesn't support translation.
+ * @hide
*/
@Nullable
public ViewTranslationCallback getViewTranslationCallback() {
@@ -30835,30 +30837,52 @@
}
/**
- * Called when the content from {@link View#onCreateTranslationRequest} had been translated by
- * the TranslationService.
+ * Clear the {@link ViewTranslationCallback} from this view.
+ */
+ public void clearViewTranslationCallback() {
+ mViewTranslationCallback = null;
+ }
+
+ /**
+ * Returns the {@link ViewTranslationResponse} associated with this view. The response will be
+ * set when the translation is done then {@link #onViewTranslationResponse} is called. The
+ * {@link ViewTranslationCallback} can use to get {@link ViewTranslationResponse} to display the
+ * translated information.
*
- * <p> The default implementation does nothing.</p>
+ * @return a {@link ViewTranslationResponse} that contains the translated information associated
+ * with this view or {@code null} if this View doesn't have the translation.
+ */
+ @Nullable
+ public ViewTranslationResponse getViewTranslationResponse() {
+ return mViewTranslationResponse;
+ }
+
+ /**
+ * Called when the content from {@link View#onCreateViewTranslationRequest} had been translated
+ * by the TranslationService.
+ *
+ * <p> The default implementation will set the ViewTranslationResponse that can be get from
+ * {@link View#getViewTranslationResponse}. </p>
*
* @param response a {@link ViewTranslationResponse} that contains the translated information
* which can be shown in the view.
*/
- public void onTranslationResponse(@NonNull ViewTranslationResponse response) {
- // no-op
+ public void onViewTranslationResponse(@NonNull ViewTranslationResponse response) {
+ mViewTranslationResponse = response;
}
/**
- * Called when the content from {@link View#onCreateTranslationRequest} had been translated by
- * the TranslationService.
+ * Called when the content from {@link View#onCreateVirtualViewTranslationRequests} had been
+ * translated by the TranslationService.
*
* <p> The default implementation does nothing.</p>
*
* @param response a {@link ViewTranslationResponse} SparseArray for the request that send by
- * {@link View#onCreateTranslationRequests} that contains the translated information which can
- * be shown in the view. The key of SparseArray is
- * the virtual child ids.
+ * {@link View#onCreateVirtualViewTranslationRequests} that contains the translated information
+ * which can be shown in the view. The key of SparseArray is the virtual child ids.
*/
- public void onTranslationResponse(@NonNull LongSparseArray<ViewTranslationResponse> response) {
+ public void onVirtualViewTranslationResponses(
+ @NonNull LongSparseArray<ViewTranslationResponse> response) {
// no-op
}
@@ -30866,16 +30890,18 @@
* Dispatch to collect the {@link ViewTranslationRequest}s for translation purpose by traversing
* the hierarchy when the app requests ui translation. Typically, this method should only be
* overridden by subclasses that provide a view hierarchy (such as {@link ViewGroup}). Other
- * classes should override {@link View#onCreateTranslationRequest}. When requested to start the
- * ui translation, the system will call this method to traverse the view hierarchy to call
- * {@link View#onCreateTranslationRequest} to build {@link ViewTranslationRequest}s and create a
+ * classes should override {@link View#onCreateViewTranslationRequest} for normal view or
+ * override {@link View#onVirtualViewTranslationResponses} for view contains virtual children.
+ * When requested to start the ui translation, the system will call this method to traverse the
+ * view hierarchy to collect {@link ViewTranslationRequest}s and create a
* {@link android.view.translation.Translator} to translate the requests. All the
* {@link ViewTranslationRequest}s must be added when the traversal is done.
*
- * <p> The default implementation calls {@link View#onCreateTranslationRequest} to build
- * {@link ViewTranslationRequest} if the view should be translated. The view is marked as having
- * {@link #setHasTransientState(boolean) transient state} so that recycling of views doesn't
- * prevent the system from attaching the response to it.</p>
+ * <p> The default implementation calls {@link View#onCreateViewTranslationRequest} for normal
+ * view or calls {@link View#onVirtualViewTranslationResponses} for view contains virtual
+ * children to build {@link ViewTranslationRequest} if the view should be translated.
+ * The view is marked as having {@link #setHasTransientState(boolean) transient state} so that
+ * recycling of views doesn't prevent the system from attaching the response to it.</p>
*
* @param viewIds a map for the view's {@link AutofillId} and its virtual child ids or
* {@code null} if the view doesn't have virtual child that should be translated. The virtual
@@ -30888,27 +30914,47 @@
*/
public void dispatchRequestTranslation(@NonNull Map<AutofillId, long[]> viewIds,
@NonNull @DataFormat int[] supportedFormats,
- @Nullable TranslationCapability capability,
+ @NonNull TranslationCapability capability,
@NonNull List<ViewTranslationRequest> requests) {
AutofillId autofillId = getAutofillId();
if (viewIds.containsKey(autofillId)) {
if (viewIds.get(autofillId) == null) {
- ViewTranslationRequest request = onCreateTranslationRequest(supportedFormats);
- if (request != null && request.getKeys().size() > 0) {
- requests.add(request);
- if (Log.isLoggable(CONTENT_CAPTURE_LOG_TAG, Log.VERBOSE)) {
- Log.v(CONTENT_CAPTURE_LOG_TAG, "Calling setHasTransientState(true) for "
- + autofillId);
- }
- // TODO: Add a default ViewTranslationCallback for View that resets this in
- // onClearTranslation(). Also update the javadoc for this method to mention
- // that.
- setHasTransientState(true);
- }
+ // TODO: avoiding the allocation per view
+ onCreateViewTranslationRequest(supportedFormats,
+ new ViewTranslationRequestConsumer(requests));
} else {
- onCreateTranslationRequests(viewIds.get(autofillId), supportedFormats, request -> {
- requests.add(request);
- });
+ onCreateVirtualViewTranslationRequests(viewIds.get(autofillId), supportedFormats,
+ request -> {
+ requests.add(request);
+ });
+ }
+ }
+ }
+
+ private class ViewTranslationRequestConsumer implements Consumer<ViewTranslationRequest> {
+ private final List<ViewTranslationRequest> mRequests;
+ private boolean mCalled;
+
+ ViewTranslationRequestConsumer(List<ViewTranslationRequest> requests) {
+ mRequests = requests;
+ }
+
+ @Override
+ public void accept(ViewTranslationRequest request) {
+ if (mCalled) {
+ throw new IllegalStateException("The translation Consumer is not reusable.");
+ }
+ mCalled = true;
+ if (request != null && request.getKeys().size() > 0) {
+ mRequests.add(request);
+ if (Log.isLoggable(CONTENT_CAPTURE_LOG_TAG, Log.VERBOSE)) {
+ Log.v(CONTENT_CAPTURE_LOG_TAG, "Calling setHasTransientState(true) for "
+ + getAutofillId());
+ }
+ // TODO: Add a default ViewTranslationCallback for View that resets this in
+ // onClearTranslation(). Also update the javadoc for this method to mention
+ // that.
+ setHasTransientState(true);
}
}
}
diff --git a/core/java/android/view/ViewGroup.java b/core/java/android/view/ViewGroup.java
index 04e2cde..a02281b 100644
--- a/core/java/android/view/ViewGroup.java
+++ b/core/java/android/view/ViewGroup.java
@@ -7490,12 +7490,9 @@
@NonNull Rect localVisibleRect, @NonNull Point windowOffset,
@NonNull Consumer<ScrollCaptureTarget> targets) {
- // copy local visible rect for modification and dispatch
- final Rect rect = getTempRect();
- rect.set(localVisibleRect);
-
- if (getClipToPadding()) {
- rect.inset(mPaddingLeft, mPaddingTop, mPaddingRight, mPaddingBottom);
+ if (getClipToPadding() && !localVisibleRect.intersect(mPaddingLeft, mPaddingTop,
+ (mRight - mLeft) - mPaddingRight, (mBottom - mTop) - mPaddingBottom)) {
+ return;
}
// Dispatch to self first.
@@ -7506,6 +7503,7 @@
return;
}
+ final Rect tmpRect = getTempRect();
final int childCount = getChildCount();
for (int i = 0; i < childCount; i++) {
View child = getChildAt(i);
@@ -7518,8 +7516,7 @@
// If the resulting rectangle is not empty, the request is forwarded to the child.
// copy local visible rect for modification and dispatch
- final Rect childVisibleRect = getTempRect();
- childVisibleRect.set(localVisibleRect);
+ tmpRect.set(localVisibleRect);
// transform to child coords
final Point childWindowOffset = getTempPoint();
@@ -7528,20 +7525,18 @@
final int dx = child.mLeft - mScrollX;
final int dy = child.mTop - mScrollY;
- childVisibleRect.offset(-dx, -dy);
+ tmpRect.offset(-dx, -dy);
childWindowOffset.offset(dx, dy);
boolean rectIsVisible = true;
// Clip to child bounds
if (getClipChildren()) {
- rectIsVisible = childVisibleRect.intersect(0, 0, child.getWidth(),
- child.getHeight());
+ rectIsVisible = tmpRect.intersect(0, 0, child.getWidth(), child.getHeight());
}
- // Clip to child padding.
if (rectIsVisible) {
- child.dispatchScrollCaptureSearch(childVisibleRect, childWindowOffset, targets);
+ child.dispatchScrollCaptureSearch(tmpRect, childWindowOffset, targets);
}
}
}
diff --git a/core/java/android/view/contentcapture/ContentCaptureEvent.java b/core/java/android/view/contentcapture/ContentCaptureEvent.java
index ce01469..ac45541 100644
--- a/core/java/android/view/contentcapture/ContentCaptureEvent.java
+++ b/core/java/android/view/contentcapture/ContentCaptureEvent.java
@@ -428,10 +428,11 @@
}
if (mNode != null) {
final String className = mNode.getClassName();
- if (mNode != null) {
- string.append(", class=").append(className);
- }
+ string.append(", class=").append(className);
string.append(", id=").append(mNode.getAutofillId());
+ if (mNode.getText() != null) {
+ string.append(", text=").append(getSanitizedString(mNode.getText()));
+ }
}
if (mText != null) {
string.append(", text=").append(getSanitizedString(mText));
diff --git a/core/java/android/view/textservice/SpellCheckerSession.java b/core/java/android/view/textservice/SpellCheckerSession.java
index a449cf1..6cfb938 100644
--- a/core/java/android/view/textservice/SpellCheckerSession.java
+++ b/core/java/android/view/textservice/SpellCheckerSession.java
@@ -17,10 +17,13 @@
package android.view.textservice;
import android.annotation.BinderThread;
+import android.annotation.NonNull;
import android.annotation.Nullable;
+import android.annotation.SuppressLint;
import android.compat.annotation.UnsupportedAppUsage;
import android.os.Binder;
import android.os.Build;
+import android.os.Bundle;
import android.os.Handler;
import android.os.HandlerThread;
import android.os.Message;
@@ -37,6 +40,7 @@
import dalvik.system.CloseGuard;
import java.util.LinkedList;
+import java.util.Locale;
import java.util.Queue;
import java.util.concurrent.Executor;
@@ -525,6 +529,161 @@
}
}
+ /** Parameters used to create a {@link SpellCheckerSession}. */
+ public static class SpellCheckerSessionParams {
+ @Nullable
+ private final Locale mLocale;
+ private final boolean mShouldReferToSpellCheckerLanguageSettings;
+ private final @SuggestionsInfo.ResultAttrs int mSupportedAttributes;
+ private final Bundle mExtras;
+
+ private SpellCheckerSessionParams(Locale locale,
+ boolean referToSpellCheckerLanguageSettings, int supportedAttributes,
+ Bundle extras) {
+ mLocale = locale;
+ mShouldReferToSpellCheckerLanguageSettings = referToSpellCheckerLanguageSettings;
+ mSupportedAttributes = supportedAttributes;
+ mExtras = extras;
+ }
+
+ /**
+ * Returns the locale in which the spell checker should operate.
+ *
+ * @see android.service.textservice.SpellCheckerService.Session#getLocale()
+ */
+ @SuppressLint("UseIcu")
+ @Nullable
+ public Locale getLocale() {
+ return mLocale;
+ }
+
+ /**
+ * Returns true if the user's spell checker language settings should be used to determine
+ * the spell checker locale.
+ */
+ public boolean shouldReferToSpellCheckerLanguageSettings() {
+ return mShouldReferToSpellCheckerLanguageSettings;
+ }
+
+ /**
+ * Returns a bitmask of {@link SuggestionsInfo} attributes that the spell checker can set
+ * in {@link SuggestionsInfo} it returns.
+ *
+ * @see android.service.textservice.SpellCheckerService.Session#getSupportedAttributes()
+ */
+ public @SuggestionsInfo.ResultAttrs int getSupportedAttributes() {
+ return mSupportedAttributes;
+ }
+
+ /**
+ * Returns a bundle containing extra parameters for the spell checker.
+ *
+ * <p>This bundle can be used to pass implementation-specific parameters to the
+ * {@link android.service.textservice.SpellCheckerService} implementation.
+ *
+ * @see android.service.textservice.SpellCheckerService.Session#getBundle()
+ */
+ @NonNull
+ public Bundle getExtras() {
+ return mExtras;
+ }
+
+ /** Builder of {@link SpellCheckerSessionParams}. */
+ public static final class Builder {
+ @Nullable
+ private Locale mLocale;
+ private boolean mShouldReferToSpellCheckerLanguageSettings = false;
+ private @SuggestionsInfo.ResultAttrs int mSupportedAttributes = 0;
+ private Bundle mExtras = Bundle.EMPTY;
+
+ /** Constructs a {@code Builder}. */
+ public Builder() {
+ }
+
+ /**
+ * Returns constructed {@link SpellCheckerSession} instance.
+ *
+ * <p>Before calling this method, either {@link #setLocale(Locale)} should be called
+ * with a non-null locale or
+ * {@link #setShouldReferToSpellCheckerLanguageSettings(boolean)} should be called with
+ * {@code true}.
+ */
+ @NonNull
+ public SpellCheckerSessionParams build() {
+ if (mLocale == null && !mShouldReferToSpellCheckerLanguageSettings) {
+ throw new IllegalArgumentException("mLocale should not be null if "
+ + " mShouldReferToSpellCheckerLanguageSettings is false.");
+ }
+ return new SpellCheckerSessionParams(mLocale,
+ mShouldReferToSpellCheckerLanguageSettings, mSupportedAttributes, mExtras);
+ }
+
+ /**
+ * Sets the locale in which the spell checker should operate.
+ *
+ * @see android.service.textservice.SpellCheckerService.Session#getLocale()
+ */
+ @NonNull
+ public Builder setLocale(@SuppressLint("UseIcu") @Nullable Locale locale) {
+ mLocale = locale;
+ return this;
+ }
+
+ /**
+ * Sets whether or not the user's spell checker language settings should be used to
+ * determine spell checker locale.
+ *
+ * <p>If {@code shouldReferToSpellCheckerLanguageSettings} is true, the exact way of
+ * determining spell checker locale differs based on {@code locale} specified in
+ * {@link #setLocale(Locale)}.
+ * If {@code shouldReferToSpellCheckerLanguageSettings} is true and {@code locale} is
+ * null, the locale specified in Settings will be used. If
+ * {@code shouldReferToSpellCheckerLanguageSettings} is true and {@code locale} is not
+ * null, {@link SpellCheckerSession} can be created only when the locale specified in
+ * Settings is the same as {@code locale}. Exceptionally, if
+ * {@code shouldReferToSpellCheckerLanguageSettings} is true and {@code locale} is
+ * language only (e.g. "en"), the specified locale in Settings (e.g. "en_US") will be
+ * used.
+ *
+ * @see #setLocale(Locale)
+ */
+ @NonNull
+ public Builder setShouldReferToSpellCheckerLanguageSettings(
+ boolean shouldReferToSpellCheckerLanguageSettings) {
+ mShouldReferToSpellCheckerLanguageSettings =
+ shouldReferToSpellCheckerLanguageSettings;
+ return this;
+ }
+
+ /**
+ * Sets a bitmask of {@link SuggestionsInfo} attributes that the spell checker can set
+ * in {@link SuggestionsInfo} it returns.
+ *
+ * @see android.service.textservice.SpellCheckerService.Session#getSupportedAttributes()
+ */
+ @NonNull
+ public Builder setSupportedAttributes(
+ @SuggestionsInfo.ResultAttrs int supportedAttributes) {
+ mSupportedAttributes = supportedAttributes;
+ return this;
+ }
+
+ /**
+ * Sets a bundle containing extra parameters for the spell checker.
+ *
+ * <p>This bundle can be used to pass implementation-specific parameters to the
+ * {@link android.service.textservice.SpellCheckerService} implementation.
+ *
+ * @see android.service.textservice.SpellCheckerService.Session#getBundle()
+ */
+ @NonNull
+ public Builder setExtras(@NonNull Bundle extras) {
+ mExtras = extras;
+ return this;
+ }
+ }
+ }
+
/**
* Callback for getting results from text services
*/
diff --git a/core/java/android/view/textservice/TextServicesManager.java b/core/java/android/view/textservice/TextServicesManager.java
index bf91cca..ae927cf 100644
--- a/core/java/android/view/textservice/TextServicesManager.java
+++ b/core/java/android/view/textservice/TextServicesManager.java
@@ -19,7 +19,6 @@
import android.annotation.CallbackExecutor;
import android.annotation.NonNull;
import android.annotation.Nullable;
-import android.annotation.SuppressLint;
import android.annotation.SystemService;
import android.annotation.UserIdInt;
import android.compat.annotation.UnsupportedAppUsage;
@@ -35,6 +34,7 @@
import android.util.Log;
import android.view.inputmethod.InputMethodManager;
import android.view.textservice.SpellCheckerSession.SpellCheckerSessionListener;
+import android.view.textservice.SpellCheckerSession.SpellCheckerSessionParams;
import com.android.internal.textservice.ISpellCheckerSessionListener;
import com.android.internal.textservice.ITextServicesManager;
@@ -166,15 +166,17 @@
* {@link SuggestionsInfo#RESULT_ATTR_HAS_RECOMMENDED_SUGGESTIONS} will be passed to the spell
* checker as supported attributes.
*
- * @see #newSpellCheckerSession(Locale, boolean, int, Bundle, Executor,
- * SpellCheckerSessionListener)
- * @param bundle A bundle to pass to the spell checker.
- * @param locale The locale for the spell checker.
- * @param listener A spell checker session lister for getting results from the spell checker.
- * The listener will be called on the calling thread.
- * @param referToSpellCheckerLanguageSettings If true, the session for one of enabled
- * languages in settings will be used.
- * @return A spell checker session from the spell checker.
+ * @param locale the locale for the spell checker. If {@code locale} is null and
+ * referToSpellCheckerLanguageSettings is true, the locale specified in Settings will be
+ * returned. If {@code locale} is not null and referToSpellCheckerLanguageSettings is true,
+ * the locale specified in Settings will be returned only when it is same as {@code locale}.
+ * Exceptionally, when referToSpellCheckerLanguageSettings is true and {@code locale} is
+ * only language (e.g. "en"), the specified locale in Settings (e.g. "en_US") will be
+ * selected.
+ * @param listener a spell checker session lister for getting results from the spell checker.
+ * @param referToSpellCheckerLanguageSettings if true, the session for one of enabled
+ * languages in settings will be returned.
+ * @return a spell checker session of the spell checker
*/
@Nullable
public SpellCheckerSession newSpellCheckerSession(@Nullable Bundle bundle,
@@ -186,51 +188,40 @@
int supportedAttributes = SuggestionsInfo.RESULT_ATTR_IN_THE_DICTIONARY
| SuggestionsInfo.RESULT_ATTR_LOOKS_LIKE_TYPO
| SuggestionsInfo.RESULT_ATTR_HAS_RECOMMENDED_SUGGESTIONS;
+ SpellCheckerSessionParams.Builder paramsBuilder = new SpellCheckerSessionParams.Builder()
+ .setLocale(locale)
+ .setShouldReferToSpellCheckerLanguageSettings(referToSpellCheckerLanguageSettings)
+ .setSupportedAttributes(supportedAttributes);
+ if (bundle != null) {
+ paramsBuilder.setExtras(bundle);
+ }
// Using the implicit looper to preserve the old behavior.
Executor executor = new HandlerExecutor(new Handler());
- return newSpellCheckerSession(locale, referToSpellCheckerLanguageSettings,
- supportedAttributes, bundle, executor, listener);
+ return newSpellCheckerSession(paramsBuilder.build(), executor, listener);
}
/**
* Get a spell checker session from the spell checker.
*
- * <p>If {@code locale} is null and {@code referToSpellCheckerLanguageSettings} is true, the
- * locale specified in Settings will be used. If {@code locale} is not null and
- * {@code referToSpellCheckerLanguageSettings} is true, the locale specified in Settings will be
- * returned only when it is same as {@code locale}.
- * Exceptionally, when {@code referToSpellCheckerLanguageSettings} is true and {@code locale} is
- * language only (e.g. "en"), the specified locale in Settings (e.g. "en_US") will be
- * selected.
- *
- * @param locale The locale for the spell checker.
- * @param referToSpellCheckerLanguageSettings If true, the session for one of enabled
- * languages in settings will be used.
- * @param supportedAttributes A union of {@link SuggestionsInfo} attributes that the spell
- * checker can set in the spell checking results.
- * @param bundle A bundle for passing implementation-specific extra parameters for the spell
- * checker. You can check the current spell checker package by
- * {@link #getCurrentSpellCheckerInfo()}.
- * @param executor An executor to call the listener on.
- * @param listener A spell checker session lister for getting results from a spell checker.
+ * @param params The parameters passed to the spell checker.
+ * @param executor The executor on which {@code listener} will be called back.
+ * @param listener a spell checker session lister for getting results from the spell checker.
* @return The spell checker session of the spell checker.
*/
@Nullable
public SpellCheckerSession newSpellCheckerSession(
- @SuppressLint("UseIcu") @Nullable Locale locale,
- boolean referToSpellCheckerLanguageSettings,
- @SuggestionsInfo.ResultAttrs int supportedAttributes,
- @Nullable Bundle bundle,
+ @NonNull SpellCheckerSessionParams params,
@NonNull @CallbackExecutor Executor executor,
@NonNull SpellCheckerSessionListener listener) {
Objects.requireNonNull(executor);
Objects.requireNonNull(listener);
- if (!referToSpellCheckerLanguageSettings && locale == null) {
+ Locale locale = params.getLocale();
+ if (!params.shouldReferToSpellCheckerLanguageSettings() && locale == null) {
throw new IllegalArgumentException("Locale should not be null if you don't refer"
+ " settings.");
}
- if (referToSpellCheckerLanguageSettings && !isSpellCheckerEnabled()) {
+ if (params.shouldReferToSpellCheckerLanguageSettings() && !isSpellCheckerEnabled()) {
return null;
}
@@ -244,7 +235,7 @@
return null;
}
SpellCheckerSubtype subtypeInUse = null;
- if (referToSpellCheckerLanguageSettings) {
+ if (params.shouldReferToSpellCheckerLanguageSettings()) {
subtypeInUse = getCurrentSpellCheckerSubtype(true);
if (subtypeInUse == null) {
return null;
@@ -278,7 +269,8 @@
try {
mService.getSpellCheckerService(mUserId, sci.getId(), subtypeInUse.getLocale(),
session.getTextServicesSessionListener(),
- session.getSpellCheckerSessionListener(), bundle, supportedAttributes);
+ session.getSpellCheckerSessionListener(),
+ params.getExtras(), params.getSupportedAttributes());
} catch (RemoteException e) {
throw e.rethrowFromSystemServer();
}
diff --git a/core/java/android/view/translation/ITranslationManager.aidl b/core/java/android/view/translation/ITranslationManager.aidl
index 9c53f46..560edec 100644
--- a/core/java/android/view/translation/ITranslationManager.aidl
+++ b/core/java/android/view/translation/ITranslationManager.aidl
@@ -40,9 +40,6 @@
void updateUiTranslationState(int state, in TranslationSpec sourceSpec,
in TranslationSpec targetSpec, in List<AutofillId> viewIds, IBinder token, int taskId,
int userId);
- // deprecated
- void updateUiTranslationStateByTaskId(int state, in TranslationSpec sourceSpec,
- in TranslationSpec targetSpec, in List<AutofillId> viewIds, int taskId, int userId);
void registerUiTranslationStateCallback(in IRemoteCallback callback, int userId);
void unregisterUiTranslationStateCallback(in IRemoteCallback callback, int userId);
diff --git a/core/java/android/view/translation/TranslationManager.java b/core/java/android/view/translation/TranslationManager.java
index b61eab9..8785d9c 100644
--- a/core/java/android/view/translation/TranslationManager.java
+++ b/core/java/android/view/translation/TranslationManager.java
@@ -24,6 +24,7 @@
import android.content.Context;
import android.os.Handler;
import android.os.Looper;
+import android.os.Parcelable;
import android.os.RemoteException;
import android.os.SynchronousResultReceiver;
import android.util.ArrayMap;
@@ -200,8 +201,14 @@
if (result.resultCode != STATUS_SYNC_CALL_SUCCESS) {
return Collections.emptySet();
}
- return new ArraySet<>(
- (TranslationCapability[]) result.bundle.getParcelableArray(EXTRA_CAPABILITIES));
+ Parcelable[] parcelables = result.bundle.getParcelableArray(EXTRA_CAPABILITIES);
+ ArraySet<TranslationCapability> capabilities = new ArraySet();
+ for (Parcelable obj : parcelables) {
+ if (obj instanceof TranslationCapability) {
+ capabilities.add((TranslationCapability) obj);
+ }
+ }
+ return capabilities;
} catch (RemoteException e) {
throw e.rethrowFromSystemServer();
} catch (TimeoutException e) {
diff --git a/core/java/android/view/translation/TranslationResponse.java b/core/java/android/view/translation/TranslationResponse.java
index f9b7012..eef283d 100644
--- a/core/java/android/view/translation/TranslationResponse.java
+++ b/core/java/android/view/translation/TranslationResponse.java
@@ -87,7 +87,7 @@
/**
* Adds {@link TranslationResponseValue} to be translated. The input
* TranslationResponseValue format should match those provided by the
- * {@link android.view.translation.Translator}'s destSpec.
+ * {@link android.view.translation.Translator}'s targetSpec.
*
* @param value the translated value.
* @return this Builder.
@@ -109,7 +109,7 @@
/**
* Sets the list of {@link ViewTranslationResponse} to be translated. The input
* ViewTranslationResponse contains {@link TranslationResponseValue}s whose format should
- * match those provided by the {@link android.view.translation.Translator}'s destSpec.
+ * match those provided by the {@link android.view.translation.Translator}'s targetSpec.
*
* @param response the translated response.
* @return this Builder.
diff --git a/core/java/android/view/translation/Translator.java b/core/java/android/view/translation/Translator.java
index 188d562..6037302 100644
--- a/core/java/android/view/translation/Translator.java
+++ b/core/java/android/view/translation/Translator.java
@@ -231,9 +231,8 @@
*
* @throws IllegalStateException if this Translator session was destroyed when called.
*
- * @deprecated use {@link #translate(TranslationRequest, CancellationSignal,
+ * @removed use {@link #translate(TranslationRequest, CancellationSignal,
* Executor, Consumer)} instead.
- * @hide
*/
@Deprecated
@Nullable
@@ -379,24 +378,5 @@
}
}
}
-
- @Override
- public void onError() throws RemoteException {
- final Consumer<TranslationResponse> callback = mCallback.get();
- final Runnable runnable = () -> callback.accept(
- new TranslationResponse.Builder(
- TranslationResponse.TRANSLATION_STATUS_UNKNOWN_ERROR)
- .build());
-
- if (callback != null) {
- final Executor executor = mExecutor.get();
- final long token = Binder.clearCallingIdentity();
- try {
- executor.execute(runnable);
- } finally {
- restoreCallingIdentity(token);
- }
- }
- }
}
}
diff --git a/core/java/android/view/translation/UiTranslationController.java b/core/java/android/view/translation/UiTranslationController.java
index 00aeede..0425572 100644
--- a/core/java/android/view/translation/UiTranslationController.java
+++ b/core/java/android/view/translation/UiTranslationController.java
@@ -100,7 +100,7 @@
* Update the Ui translation state.
*/
public void updateUiTranslationState(@UiTranslationState int state, TranslationSpec sourceSpec,
- TranslationSpec destSpec, List<AutofillId> views) {
+ TranslationSpec targetSpec, List<AutofillId> views) {
if (!mActivity.isResumed() && (state == STATE_UI_TRANSLATION_STARTED
|| state == STATE_UI_TRANSLATION_RESUMED)) {
return;
@@ -113,11 +113,11 @@
switch (state) {
case STATE_UI_TRANSLATION_STARTED:
final Pair<TranslationSpec, TranslationSpec> specs =
- new Pair<>(sourceSpec, destSpec);
+ new Pair<>(sourceSpec, targetSpec);
if (!mTranslators.containsKey(specs)) {
mWorkerHandler.sendMessage(PooledLambda.obtainMessage(
UiTranslationController::createTranslatorAndStart,
- UiTranslationController.this, sourceSpec, destSpec, views));
+ UiTranslationController.this, sourceSpec, targetSpec, views));
} else {
onUiTranslationStarted(mTranslators.get(specs), views);
}
@@ -315,7 +315,7 @@
}
return;
}
- view.onTranslationResponse(virtualChildResponse);
+ view.onVirtualViewTranslationResponses(virtualChildResponse);
if (view.getViewTranslationCallback() != null) {
view.getViewTranslationCallback().onShowTranslation(view);
}
@@ -373,8 +373,7 @@
// TODO: Do this for specific views on request only.
callback.enableContentPadding();
-
- view.onTranslationResponse(response);
+ view.onViewTranslationResponse(response);
callback.onShowTranslation(view);
});
}
@@ -386,12 +385,13 @@
* translation when the Translator is created successfully.
*/
@WorkerThread
- private void createTranslatorAndStart(TranslationSpec sourceSpec, TranslationSpec destSpec,
+ private void createTranslatorAndStart(TranslationSpec sourceSpec, TranslationSpec targetSpec,
List<AutofillId> views) {
- final Translator translator = createTranslatorIfNeeded(sourceSpec, destSpec);
+ // Create Translator
+ final Translator translator = createTranslatorIfNeeded(sourceSpec, targetSpec);
if (translator == null) {
- Log.w(TAG, "Can not create Translator for sourceSpec:" + sourceSpec + " destSpec:"
- + destSpec);
+ Log.w(TAG, "Can not create Translator for sourceSpec:" + sourceSpec + " targetSpec:"
+ + targetSpec);
return;
}
onUiTranslationStarted(translator, views);
diff --git a/core/java/android/view/translation/UiTranslationManager.java b/core/java/android/view/translation/UiTranslationManager.java
index 62868ac..f66fac5 100644
--- a/core/java/android/view/translation/UiTranslationManager.java
+++ b/core/java/android/view/translation/UiTranslationManager.java
@@ -120,48 +120,12 @@
/**
* Request ui translation for a given Views.
*
- * NOTE: Please use {@code startTranslation(TranslationSpec, TranslationSpec, List<AutofillId>,
- * ActivityId)} instead.
- *
* @param sourceSpec {@link TranslationSpec} for the data to be translated.
- * @param destSpec {@link TranslationSpec} for the translated data.
- * @param viewIds A list of the {@link View}'s {@link AutofillId} which needs to be translated
- * @param taskId the Activity Task id which needs ui translation
- * @deprecated Use {@code startTranslation(TranslationSpec, TranslationSpec, List<AutofillId>,
- * ActivityId)} instead.
- *
- * @hide
- * @removed
- */
- @Deprecated
- @RequiresPermission(android.Manifest.permission.MANAGE_UI_TRANSLATION)
- @SystemApi
- public void startTranslation(@NonNull TranslationSpec sourceSpec,
- @NonNull TranslationSpec destSpec, @NonNull List<AutofillId> viewIds,
- int taskId) {
- Objects.requireNonNull(sourceSpec);
- Objects.requireNonNull(destSpec);
- Objects.requireNonNull(viewIds);
- if (viewIds.size() == 0) {
- throw new IllegalArgumentException("Invalid empty views: " + viewIds);
- }
- try {
- mService.updateUiTranslationStateByTaskId(STATE_UI_TRANSLATION_STARTED, sourceSpec,
- destSpec, viewIds, taskId, mContext.getUserId());
- } catch (RemoteException e) {
- throw e.rethrowFromSystemServer();
- }
- }
-
- /**
- * Request ui translation for a given Views.
- *
- * @param sourceSpec {@link TranslationSpec} for the data to be translated.
- * @param destSpec {@link TranslationSpec} for the translated data.
+ * @param targetSpec {@link TranslationSpec} for the translated data.
* @param viewIds A list of the {@link View}'s {@link AutofillId} which needs to be translated
* @param activityId the identifier for the Activity which needs ui translation
* @throws IllegalArgumentException if the no {@link View}'s {@link AutofillId} in the list
- * @throws NullPointerException the sourceSpec, destSpec, viewIds, activityId or
+ * @throws NullPointerException the sourceSpec, targetSpec, viewIds, activityId or
* {@link android.app.assist.ActivityId#getToken()} is {@code null}
*
* @hide
@@ -169,11 +133,11 @@
@RequiresPermission(android.Manifest.permission.MANAGE_UI_TRANSLATION)
@SystemApi
public void startTranslation(@NonNull TranslationSpec sourceSpec,
- @NonNull TranslationSpec destSpec, @NonNull List<AutofillId> viewIds,
+ @NonNull TranslationSpec targetSpec, @NonNull List<AutofillId> viewIds,
@NonNull ActivityId activityId) {
// TODO(b/177789967): Return result code or find a way to notify the status.
Objects.requireNonNull(sourceSpec);
- Objects.requireNonNull(destSpec);
+ Objects.requireNonNull(targetSpec);
Objects.requireNonNull(viewIds);
Objects.requireNonNull(activityId);
Objects.requireNonNull(activityId.getToken());
@@ -182,33 +146,7 @@
}
try {
mService.updateUiTranslationState(STATE_UI_TRANSLATION_STARTED, sourceSpec,
- destSpec, viewIds, activityId.getToken(), activityId.getTaskId(),
- mContext.getUserId());
- } catch (RemoteException e) {
- throw e.rethrowFromSystemServer();
- }
- }
-
- /**
- * Request to disable the ui translation. It will destroy all the {@link Translator}s and no
- * longer to show to show the translated text.
- *
- * NOTE: Please use {@code finishTranslation(ActivityId)} instead.
- *
- * @param taskId the Activity Task id which needs ui translation
- * @deprecated Use {@code finishTranslation(ActivityId)} instead.
- *
- * @hide
- * @removed
- *
- */
- @Deprecated
- @RequiresPermission(android.Manifest.permission.MANAGE_UI_TRANSLATION)
- @SystemApi
- public void finishTranslation(int taskId) {
- try {
- mService.updateUiTranslationStateByTaskId(STATE_UI_TRANSLATION_FINISHED,
- null /* sourceSpec */, null /* destSpec*/, null /* viewIds */, taskId,
+ targetSpec, viewIds, activityId.getToken(), activityId.getTaskId(),
mContext.getUserId());
} catch (RemoteException e) {
throw e.rethrowFromSystemServer();
@@ -232,7 +170,7 @@
Objects.requireNonNull(activityId);
Objects.requireNonNull(activityId.getToken());
mService.updateUiTranslationState(STATE_UI_TRANSLATION_FINISHED,
- null /* sourceSpec */, null /* destSpec*/, null /* viewIds */,
+ null /* sourceSpec */, null /* targetSpec */, null /* viewIds */,
activityId.getToken(), activityId.getTaskId(), mContext.getUserId());
} catch (RemoteException e) {
throw e.rethrowFromSystemServer();
@@ -243,31 +181,6 @@
* Request to pause the current ui translation's {@link Translator} which will switch back to
* the original language.
*
- * NOTE: Please use {@code pauseTranslation(ActivityId)} instead.
- *
- * @param taskId the Activity Task id which needs ui translation
- * @deprecated Use {@code pauseTranslation(ActivityId)} instead.
- *
- * @hide
- * @removed
- */
- @Deprecated
- @RequiresPermission(android.Manifest.permission.MANAGE_UI_TRANSLATION)
- @SystemApi
- public void pauseTranslation(int taskId) {
- try {
- mService.updateUiTranslationStateByTaskId(STATE_UI_TRANSLATION_PAUSED,
- null /* sourceSpec */, null /* destSpec*/, null /* viewIds */, taskId,
- mContext.getUserId());
- } catch (RemoteException e) {
- throw e.rethrowFromSystemServer();
- }
- }
-
- /**
- * Request to pause the current ui translation's {@link Translator} which will switch back to
- * the original language.
- *
* @param activityId the identifier for the Activity which needs ui translation
* @throws NullPointerException the activityId or
* {@link android.app.assist.ActivityId#getToken()} is {@code null}
@@ -281,7 +194,7 @@
Objects.requireNonNull(activityId);
Objects.requireNonNull(activityId.getToken());
mService.updateUiTranslationState(STATE_UI_TRANSLATION_PAUSED,
- null /* sourceSpec */, null /* destSpec*/, null /* viewIds */,
+ null /* sourceSpec */, null /* targetSpec */, null /* viewIds */,
activityId.getToken(), activityId.getTaskId(), mContext.getUserId());
} catch (RemoteException e) {
throw e.rethrowFromSystemServer();
@@ -292,31 +205,6 @@
* Request to resume the paused ui translation's {@link Translator} which will switch to the
* translated language if the text had been translated.
*
- * NOTE: Please use {@code resumeTranslation(ActivityId)} instead.
- *
- * @param taskId the Activity Task id which needs ui translation
- * @deprecated Use {@code resumeTranslation(ActivityId)} instead.
- *
- * @hide
- * @removed
- */
- @Deprecated
- @RequiresPermission(android.Manifest.permission.MANAGE_UI_TRANSLATION)
- @SystemApi
- public void resumeTranslation(int taskId) {
- try {
- mService.updateUiTranslationStateByTaskId(STATE_UI_TRANSLATION_RESUMED,
- null /* sourceSpec */, null /* destSpec*/, null /* viewIds */,
- taskId, mContext.getUserId());
- } catch (RemoteException e) {
- throw e.rethrowFromSystemServer();
- }
- }
-
- /**
- * Request to resume the paused ui translation's {@link Translator} which will switch to the
- * translated language if the text had been translated.
- *
* @param activityId the identifier for the Activity which needs ui translation
* @throws NullPointerException the activityId or
* {@link android.app.assist.ActivityId#getToken()} is {@code null}
@@ -330,7 +218,7 @@
Objects.requireNonNull(activityId);
Objects.requireNonNull(activityId.getToken());
mService.updateUiTranslationState(STATE_UI_TRANSLATION_RESUMED,
- null /* sourceSpec */, null /* destSpec*/, null /* viewIds */,
+ null /* sourceSpec */, null /* targetSpec */, null /* viewIds */,
activityId.getToken(), activityId.getTaskId(), mContext.getUserId());
} catch (RemoteException e) {
throw e.rethrowFromSystemServer();
diff --git a/core/java/android/view/translation/ViewTranslationCallback.java b/core/java/android/view/translation/ViewTranslationCallback.java
index 78b4855..1f0723b 100644
--- a/core/java/android/view/translation/ViewTranslationCallback.java
+++ b/core/java/android/view/translation/ViewTranslationCallback.java
@@ -21,23 +21,27 @@
import android.view.View;
/**
- * Callback for handling the translated information show or hide in the {@link View}. See {@link
- * View#onTranslationResponse} for how to get the translated information.
+ * Callback for handling the translated information show or hide in the {@link View}.
*/
@UiThread
public interface ViewTranslationCallback {
/**
* Called when the translated text is ready to show or if the user has requested to reshow the
- * translated content after hiding it. This may be called before the translation results are
- * returned through the {@link View#onTranslationResponse}.
+ * translated content after hiding it.
+ * <p>
+ * The translated content can be obtained from {@link View#getViewTranslationResponse}. This
+ * method will not be called before {@link View#onViewTranslationResponse} or
+ * {@link View#onVirtualViewTranslationResponses}.
+ *
+ * See {@link View#onViewTranslationResponse} for how to get the translated information.
*
* @return {@code true} if the View handles showing the translation.
*/
boolean onShowTranslation(@NonNull View view);
/**
* Called when the user wants to show the original text instead of the translated text. This
- * may be called before the translation results are returned through the
- * {@link View#onTranslationResponse}.
+ * method will not be called before {@link View#onViewTranslationResponse} or
+ * {@link View#onViewTranslationResponse}.
*
* @return {@code true} if the View handles hiding the translation.
*/
diff --git a/core/java/android/webkit/WebView.java b/core/java/android/webkit/WebView.java
index 6d4fa65..a1d4822 100644
--- a/core/java/android/webkit/WebView.java
+++ b/core/java/android/webkit/WebView.java
@@ -2861,16 +2861,17 @@
@Override
@Nullable
- public void onCreateTranslationRequests(@NonNull long[] virtualChildIds,
+ public void onCreateVirtualViewTranslationRequests(@NonNull long[] virtualIds,
@NonNull @DataFormat int[] supportedFormats,
@NonNull Consumer<ViewTranslationRequest> requestsCollector) {
- mProvider.getViewDelegate().onCreateTranslationRequests(virtualChildIds, supportedFormats,
- requestsCollector);
+ mProvider.getViewDelegate().onCreateVirtualViewTranslationRequests(virtualIds,
+ supportedFormats, requestsCollector);
}
@Override
- public void onTranslationResponse(@NonNull LongSparseArray<ViewTranslationResponse> response) {
- mProvider.getViewDelegate().onTranslationResponse(response);
+ public void onVirtualViewTranslationResponses(
+ @NonNull LongSparseArray<ViewTranslationResponse> response) {
+ mProvider.getViewDelegate().onVirtualViewTranslationResponses(response);
}
/** @hide */
diff --git a/core/java/android/webkit/WebViewProvider.java b/core/java/android/webkit/WebViewProvider.java
index 770a156..8d996ee 100644
--- a/core/java/android/webkit/WebViewProvider.java
+++ b/core/java/android/webkit/WebViewProvider.java
@@ -365,14 +365,14 @@
}
@SuppressLint("NullableCollection")
- default void onCreateTranslationRequests(
- @NonNull @SuppressWarnings("unused") long[] virtualChildIds,
+ default void onCreateVirtualViewTranslationRequests(
+ @NonNull @SuppressWarnings("unused") long[] virtualIds,
@NonNull @SuppressWarnings("unused") @DataFormat int[] supportedFormats,
@NonNull @SuppressWarnings("unused")
Consumer<ViewTranslationRequest> requestsCollector) {
}
- default void onTranslationResponse(
+ default void onVirtualViewTranslationResponses(
@NonNull @SuppressWarnings("unused")
LongSparseArray<ViewTranslationResponse> response) {
}
diff --git a/core/java/android/widget/RemoteViews.java b/core/java/android/widget/RemoteViews.java
index b13cfc0..e47129e 100644
--- a/core/java/android/widget/RemoteViews.java
+++ b/core/java/android/widget/RemoteViews.java
@@ -943,6 +943,13 @@
View target = root.findViewById(viewId);
if (target == null) return;
+ // Ensure that we are applying to an AppWidget root
+ if (!(rootParent instanceof AppWidgetHostView)) {
+ Log.e(LOG_TAG, "setRemoteAdapter can only be used for "
+ + "AppWidgets (root id: " + viewId + ")");
+ return;
+ }
+
if (!(target instanceof AdapterView)) {
Log.e(LOG_TAG, "Cannot call setRemoteAdapter on a view which is not "
+ "an AdapterView (id: " + viewId + ")");
@@ -1008,14 +1015,15 @@
// Ensure that we are applying to an AppWidget root
if (!(rootParent instanceof AppWidgetHostView)) {
- Log.e(LOG_TAG, "SetRemoteViewsAdapterIntent action can only be used for " +
- "AppWidgets (root id: " + viewId + ")");
+ Log.e(LOG_TAG, "setRemoteAdapter can only be used for "
+ + "AppWidgets (root id: " + viewId + ")");
return;
}
+
// Ensure that we are calling setRemoteAdapter on an AdapterView that supports it
if (!(target instanceof AbsListView) && !(target instanceof AdapterViewAnimator)) {
- Log.e(LOG_TAG, "Cannot setRemoteViewsAdapter on a view which is not " +
- "an AbsListView or AdapterViewAnimator (id: " + viewId + ")");
+ Log.e(LOG_TAG, "Cannot setRemoteAdapter on a view which is not "
+ + "an AbsListView or AdapterViewAnimator (id: " + viewId + ")");
return;
}
@@ -1897,31 +1905,49 @@
}
@Override
- protected @NonNull Object getParameterValue(View view) throws ActionException {
+ protected Object getParameterValue(View view) throws ActionException {
Resources resources = view.getContext().getResources();
try {
switch (this.mResourceType) {
case DIMEN_RESOURCE:
- if (this.type == BaseReflectionAction.INT) {
- return resources.getDimensionPixelSize(this.mResId);
- }
- return resources.getDimension(this.mResId);
- case COLOR_RESOURCE:
- switch(this.type) {
+ switch (this.type) {
case BaseReflectionAction.INT:
- return view.getContext().getColor(this.mResId);
- case BaseReflectionAction.COLOR_STATE_LIST:
- return view.getContext().getColorStateList(this.mResId);
+ return mResId == 0 ? 0 : resources.getDimensionPixelSize(mResId);
+ case BaseReflectionAction.FLOAT:
+ return mResId == 0 ? 0f : resources.getDimension(mResId);
default:
throw new ActionException(
- "color resources must be used as int or ColorStateList, "
+ "dimen resources must be used as INT or FLOAT, "
+ "not " + this.type);
}
+ case COLOR_RESOURCE:
+ switch (this.type) {
+ case BaseReflectionAction.INT:
+ return mResId == 0 ? 0 : view.getContext().getColor(mResId);
+ case BaseReflectionAction.COLOR_STATE_LIST:
+ return mResId == 0
+ ? null : view.getContext().getColorStateList(mResId);
+ default:
+ throw new ActionException(
+ "color resources must be used as INT or COLOR_STATE_LIST,"
+ + " not " + this.type);
+ }
case STRING_RESOURCE:
- return resources.getText(this.mResId);
+ switch (this.type) {
+ case BaseReflectionAction.CHAR_SEQUENCE:
+ return mResId == 0 ? null : resources.getText(mResId);
+ case BaseReflectionAction.STRING:
+ return mResId == 0 ? null : resources.getString(mResId);
+ default:
+ throw new ActionException(
+ "string resources must be used as STRING or CHAR_SEQUENCE,"
+ + " not " + this.type);
+ }
default:
throw new ActionException("unknown resource type: " + this.mResourceType);
}
+ } catch (ActionException ex) {
+ throw ex;
} catch (Throwable t) {
throw new ActionException(t);
}
@@ -1963,50 +1989,62 @@
}
@Override
- protected @NonNull Object getParameterValue(View view) throws ActionException {
+ protected Object getParameterValue(View view) throws ActionException {
+ TypedArray typedArray = view.getContext().obtainStyledAttributes(new int[]{mAttrId});
try {
- TypedArray typedArray = view.getContext().obtainStyledAttributes(
- new int[]{this.mAttrId});
- try {
- if (typedArray.getType(0) == TypedValue.TYPE_NULL) {
- throw new ActionException("Attribute 0x" + Integer.toHexString(this.mAttrId)
- + " is not defined");
- }
- switch (this.mResourceType) {
- case DIMEN_RESOURCE:
- if (this.type == BaseReflectionAction.INT) {
- return typedArray.getDimensionPixelSize(0, 0);
- }
- return typedArray.getDimension(0, 0);
- case COLOR_RESOURCE:
- switch (this.type) {
- case BaseReflectionAction.INT:
- return typedArray.getColor(0, 0);
- case BaseReflectionAction.COLOR_STATE_LIST:
- return typedArray.getColorStateList(0);
- default:
- throw new ActionException(
- "Color attribute 0x" + Integer.toHexString(this.mAttrId)
- + " must be used as int or ColorStateList");
- }
- case STRING_RESOURCE:
- String value = typedArray.getString(0);
- if (value == null) {
- throw new ActionException("Attribute 0x"
- + Integer.toHexString(this.mAttrId)
- + " is not a defined or is not a string");
- }
- return value;
- default:
- // Note: This can only be an implementation error.
- throw new ActionException(
- "Unknown resource type: " + this.mResourceType);
- }
- } finally {
- typedArray.recycle();
+ // When mAttrId == 0, we will depend on the default values below
+ if (mAttrId != 0 && typedArray.getType(0) == TypedValue.TYPE_NULL) {
+ throw new ActionException("Attribute 0x" + Integer.toHexString(this.mAttrId)
+ + " is not defined");
}
+ switch (this.mResourceType) {
+ case DIMEN_RESOURCE:
+ switch (this.type) {
+ case BaseReflectionAction.INT:
+ return typedArray.getDimensionPixelSize(0, 0);
+ case BaseReflectionAction.FLOAT:
+ return typedArray.getDimension(0, 0);
+ default:
+ throw new ActionException(
+ "dimen attribute 0x" + Integer.toHexString(this.mAttrId)
+ + " must be used as INT or FLOAT,"
+ + " not " + this.type);
+ }
+ case COLOR_RESOURCE:
+ switch (this.type) {
+ case BaseReflectionAction.INT:
+ return typedArray.getColor(0, 0);
+ case BaseReflectionAction.COLOR_STATE_LIST:
+ return typedArray.getColorStateList(0);
+ default:
+ throw new ActionException(
+ "color attribute 0x" + Integer.toHexString(this.mAttrId)
+ + " must be used as INT or COLOR_STATE_LIST,"
+ + " not " + this.type);
+ }
+ case STRING_RESOURCE:
+ switch (this.type) {
+ case BaseReflectionAction.CHAR_SEQUENCE:
+ return typedArray.getText(0);
+ case BaseReflectionAction.STRING:
+ return typedArray.getString(0);
+ default:
+ throw new ActionException(
+ "string attribute 0x" + Integer.toHexString(this.mAttrId)
+ + " must be used as STRING or CHAR_SEQUENCE,"
+ + " not " + this.type);
+ }
+ default:
+ // Note: This can only be an implementation error.
+ throw new ActionException(
+ "Unknown resource type: " + this.mResourceType);
+ }
+ } catch (ActionException ex) {
+ throw ex;
} catch (Throwable t) {
throw new ActionException(t);
+ } finally {
+ typedArray.recycle();
}
}
@@ -4511,7 +4549,7 @@
*
* @param viewId The id of the view to change
* @param type The margin being set e.g. {@link #MARGIN_END}
- * @param attr a dimension attribute to apply to the margin.
+ * @param attr a dimension attribute to apply to the margin, or 0 to clear the margin.
*/
public void setViewLayoutMarginAttr(@IdRes int viewId, @MarginType int type,
@AttrRes int attr) {
@@ -4694,6 +4732,8 @@
* The dimension will be resolved from the resources at the time the {@link RemoteViews} is
* (re-)applied.
*
+ * Undefined resources will result in an exception, except 0 which will resolve to 0.
+ *
* @param viewId The id of the view on which to call the method.
* @param methodName The name of the method to call.
* @param dimenResource The resource to resolve and pass as argument to the method.
@@ -4728,6 +4768,8 @@
* The dimension will be resolved from the theme attribute at the time the
* {@link RemoteViews} is (re-)applied.
*
+ * Unresolvable attributes will result in an exception, except 0 which will resolve to 0.
+ *
* @param viewId The id of the view on which to call the method.
* @param methodName The name of the method to call.
* @param dimenAttr The attribute to resolve and pass as argument to the method.
@@ -4744,6 +4786,8 @@
* The Color will be resolved from the resources at the time the {@link RemoteViews} is (re-)
* applied.
*
+ * Undefined resources will result in an exception, except 0 which will resolve to 0.
+ *
* @param viewId The id of the view on which to call the method.
* @param methodName The name of the method to call.
* @param colorResource The resource to resolve and pass as argument to the method.
@@ -4760,6 +4804,8 @@
* The Color will be resolved from the theme attribute at the time the {@link RemoteViews} is
* (re-)applied.
*
+ * Unresolvable attributes will result in an exception, except 0 which will resolve to 0.
+ *
* @param viewId The id of the view on which to call the method.
* @param methodName The name of the method to call.
* @param colorAttribute The theme attribute to resolve and pass as argument to the method.
@@ -4838,6 +4884,8 @@
* The ColorStateList will be resolved from the resources at the time the {@link RemoteViews} is
* (re-)applied.
*
+ * Undefined resources will result in an exception, except 0 which will resolve to null.
+ *
* @param viewId The id of the view on which to call the method.
* @param methodName The name of the method to call.
* @param colorResource The resource to resolve and pass as argument to the method.
@@ -4855,6 +4903,8 @@
* The ColorStateList will be resolved from the theme attribute at the time the
* {@link RemoteViews} is (re-)applied.
*
+ * Unresolvable attributes will result in an exception, except 0 which will resolve to null.
+ *
* @param viewId The id of the view on which to call the method.
* @param methodName The name of the method to call.
* @param colorAttr The theme attribute to resolve and pass as argument to the method.
@@ -4895,6 +4945,8 @@
* The dimension will be resolved from the resources at the time the {@link RemoteViews} is
* (re-)applied.
*
+ * Undefined resources will result in an exception, except 0 which will resolve to 0f.
+ *
* @param viewId The id of the view on which to call the method.
* @param methodName The name of the method to call.
* @param dimenResource The resource to resolve and pass as argument to the method.
@@ -4931,6 +4983,8 @@
* The dimension will be resolved from the theme attribute at the time the {@link RemoteViews}
* is (re-)applied.
*
+ * Unresolvable attributes will result in an exception, except 0 which will resolve to 0f.
+ *
* @param viewId The id of the view on which to call the method.
* @param methodName The name of the method to call.
* @param dimenAttr The attribute to resolve and pass as argument to the method.
@@ -4992,6 +5046,8 @@
* The CharSequence will be resolved from the resources at the time the {@link RemoteViews} is
* (re-)applied.
*
+ * Undefined resources will result in an exception, except 0 which will resolve to null.
+ *
* @param viewId The id of the view on which to call the method.
* @param methodName The name of the method to call.
* @param stringResource The resource to resolve and pass as argument to the method.
@@ -5009,6 +5065,8 @@
* The CharSequence will be resolved from the theme attribute at the time the
* {@link RemoteViews} is (re-)applied.
*
+ * Unresolvable attributes will result in an exception, except 0 which will resolve to null.
+ *
* @param viewId The id of the view on which to call the method.
* @param methodName The name of the method to call.
* @param stringAttribute The attribute to resolve and pass as argument to the method.
diff --git a/core/java/android/widget/SpellChecker.java b/core/java/android/widget/SpellChecker.java
index 287c182..a16c151 100644
--- a/core/java/android/widget/SpellChecker.java
+++ b/core/java/android/widget/SpellChecker.java
@@ -28,6 +28,7 @@
import android.view.textservice.SentenceSuggestionsInfo;
import android.view.textservice.SpellCheckerSession;
import android.view.textservice.SpellCheckerSession.SpellCheckerSessionListener;
+import android.view.textservice.SpellCheckerSession.SpellCheckerSessionParams;
import android.view.textservice.SuggestionsInfo;
import android.view.textservice.TextInfo;
import android.view.textservice.TextServicesManager;
@@ -124,10 +125,12 @@
| SuggestionsInfo.RESULT_ATTR_LOOKS_LIKE_TYPO
| SuggestionsInfo.RESULT_ATTR_LOOKS_LIKE_GRAMMAR_ERROR
| SuggestionsInfo.RESULT_ATTR_DONT_SHOW_UI_FOR_SUGGESTIONS;
+ SpellCheckerSessionParams params = new SpellCheckerSessionParams.Builder()
+ .setLocale(mCurrentLocale)
+ .setSupportedAttributes(supportedAttributes)
+ .build();
mSpellCheckerSession = mTextServicesManager.newSpellCheckerSession(
- mCurrentLocale, false, supportedAttributes,
- null /* Bundle not currently used by the textServicesManager */,
- mTextView.getContext().getMainExecutor(), this);
+ params, mTextView.getContext().getMainExecutor(), this);
}
// Restore SpellCheckSpans in pool
diff --git a/core/java/android/widget/TextView.java b/core/java/android/widget/TextView.java
index 1953a76..07a9a5fa 100644
--- a/core/java/android/widget/TextView.java
+++ b/core/java/android/widget/TextView.java
@@ -13870,7 +13870,8 @@
}
/**
- * Returns a {@link ViewTranslationRequest} which represents the content to be translated.
+ * Collects a {@link ViewTranslationRequest} which represents the content to be translated in
+ * the view.
*
* <p>NOTE: When overriding the method, it should not translate the password. If the subclass
* uses {@link TransformationMethod} to display the translated result, it's also not recommend
@@ -13880,15 +13881,15 @@
* android.view.translation.TranslationSpec#DATA_FORMAT_TEXT}.
* @return the {@link ViewTranslationRequest} which contains the information to be translated.
*/
- @Nullable
@Override
- public ViewTranslationRequest onCreateTranslationRequest(@NonNull int[] supportedFormats) {
+ public void onCreateViewTranslationRequest(@NonNull int[] supportedFormats,
+ @NonNull Consumer<ViewTranslationRequest> requestsCollector) {
if (supportedFormats == null || supportedFormats.length == 0) {
// TODO(b/182433547): remove before S release
if (UiTranslationController.DEBUG) {
Log.w(LOG_TAG, "Do not provide the support translation formats.");
}
- return null;
+ return;
}
ViewTranslationRequest.Builder requestBuilder =
new ViewTranslationRequest.Builder(getAutofillId());
@@ -13899,7 +13900,7 @@
if (UiTranslationController.DEBUG) {
Log.w(LOG_TAG, "Cannot create translation request for the empty text.");
}
- return null;
+ return;
}
boolean isPassword = isAnyPasswordInputType() || hasPasswordTransformationMethod();
// TODO(b/177214256): support selectable text translation.
@@ -13914,14 +13915,14 @@
Log.w(LOG_TAG, "Cannot create translation request. editable = "
+ isTextEditable() + ", isPassword = " + isPassword + ", selectable = "
+ isTextSelectable());
+ return;
}
- return null;
}
// TODO(b/176488462): apply the view's important for translation
requestBuilder.setValue(ViewTranslationRequest.ID_TEXT,
TranslationRequestValue.forText(mText));
}
- return requestBuilder.build();
+ requestsCollector.accept(requestBuilder.build());
}
/**
@@ -13932,6 +13933,8 @@
*
* @return a {@link ViewTranslationCallback} that is used to control how to display the
* translated information or {@code null} if this View doesn't support translation.
+ *
+ * @hide
*/
@Nullable
@Override
@@ -13948,15 +13951,17 @@
/**
*
- * Called when the content from {@link #onCreateTranslationRequest} had been translated by the
- * TranslationService. The default implementation will replace the current
+ * Called when the content from {@link #onCreateViewTranslationRequest} had been translated by
+ * the TranslationService. The default implementation will replace the current
* {@link TransformationMethod} to transform the original text to the translated text display.
*
* @param response a {@link ViewTranslationResponse} that contains the translated information
* which can be shown in the view.
*/
@Override
- public void onTranslationResponse(@NonNull ViewTranslationResponse response) {
+ public void onViewTranslationResponse(@NonNull ViewTranslationResponse response) {
+ // set ViewTranslationResponse
+ super.onViewTranslationResponse(response);
// TODO(b/183467275): Use the overridden ViewTranslationCallback instead of our default
// implementation if the view has overridden getViewTranslationCallback.
TextViewTranslationCallback callback =
diff --git a/core/java/android/widget/TextViewTranslationCallback.java b/core/java/android/widget/TextViewTranslationCallback.java
index 73f19a7..0376061 100644
--- a/core/java/android/widget/TextViewTranslationCallback.java
+++ b/core/java/android/widget/TextViewTranslationCallback.java
@@ -79,6 +79,11 @@
@Override
public boolean onShowTranslation(@NonNull View view) {
mIsShowingTranslation = true;
+ if (view.getViewTranslationResponse() == null) {
+ Log.wtf(TAG, "onShowTranslation() shouldn't be called before "
+ + "onViewTranslationResponse().");
+ return false;
+ }
if (mTranslationTransformation != null) {
((TextView) view).setTransformationMethod(mTranslationTransformation);
} else {
@@ -86,6 +91,7 @@
// TODO(b/182433547): remove before S release
Log.w(TAG, "onShowTranslation(): no translated text.");
}
+ return false;
}
return true;
}
@@ -96,6 +102,11 @@
@Override
public boolean onHideTranslation(@NonNull View view) {
mIsShowingTranslation = false;
+ if (view.getViewTranslationResponse() == null) {
+ Log.wtf(TAG, "onHideTranslation() shouldn't be called before "
+ + "onViewTranslationResponse().");
+ return false;
+ }
// Restore to original text content.
if (mTranslationTransformation != null) {
((TextView) view).setTransformationMethod(
@@ -105,6 +116,7 @@
// TODO(b/182433547): remove before S release
Log.w(TAG, "onHideTranslation(): no translated text.");
}
+ return false;
}
return true;
}
@@ -124,6 +136,7 @@
// TODO(b/182433547): remove before S release
Log.w(TAG, "onClearTranslation(): no translated text.");
}
+ return false;
}
return true;
}
diff --git a/core/java/com/android/internal/accessibility/dialog/AccessibilityTargetHelper.java b/core/java/com/android/internal/accessibility/dialog/AccessibilityTargetHelper.java
index 0854955..9d06bb9 100644
--- a/core/java/com/android/internal/accessibility/dialog/AccessibilityTargetHelper.java
+++ b/core/java/com/android/internal/accessibility/dialog/AccessibilityTargetHelper.java
@@ -230,6 +230,7 @@
context.getDrawable(R.drawable.ic_accessibility_color_inversion),
Settings.Secure.ACCESSIBILITY_DISPLAY_INVERSION_ENABLED);
+ // TODO: Update with shortcut icon
final ToggleAllowListingFeatureTarget reduceBrightColors =
new ToggleAllowListingFeatureTarget(context,
shortcutType,
@@ -237,7 +238,7 @@
REDUCE_BRIGHT_COLORS_COMPONENT_NAME.flattenToString()),
REDUCE_BRIGHT_COLORS_COMPONENT_NAME.flattenToString(),
context.getString(R.string.reduce_bright_colors_feature_name),
- context.getDrawable(R.drawable.ic_accessibility_reduce_bright_colors),
+ null,
Settings.Secure.REDUCE_BRIGHT_COLORS_ACTIVATED);
targets.add(magnification);
diff --git a/core/java/com/android/internal/app/IAppOpsCallback.aidl b/core/java/com/android/internal/app/IAppOpsCallback.aidl
index 15221b1..024ff66 100644
--- a/core/java/com/android/internal/app/IAppOpsCallback.aidl
+++ b/core/java/com/android/internal/app/IAppOpsCallback.aidl
@@ -17,7 +17,7 @@
package com.android.internal.app;
// This interface is also used by native code, so must
-// be kept in sync with frameworks/native/libs/binder/include/binder/IAppOpsCallback.h
+// be kept in sync with frameworks/native/libs/permission/include/binder/IAppOpsCallback.h
oneway interface IAppOpsCallback {
void opChanged(int op, int uid, String packageName);
}
diff --git a/core/java/com/android/internal/app/IAppOpsService.aidl b/core/java/com/android/internal/app/IAppOpsService.aidl
index 8a6856e..281702e 100644
--- a/core/java/com/android/internal/app/IAppOpsService.aidl
+++ b/core/java/com/android/internal/app/IAppOpsService.aidl
@@ -33,7 +33,7 @@
interface IAppOpsService {
// These methods are also called by native code, so must
- // be kept in sync with frameworks/native/libs/binder/include/binder/IAppOpsService.h
+ // be kept in sync with frameworks/native/libs/permission/include/binder/IAppOpsService.h
// and not be reordered
int checkOperation(int code, int uid, String packageName);
SyncNotedAppOp noteOperation(int code, int uid, String packageName, @nullable String attributionTag,
diff --git a/core/java/com/android/internal/app/IVoiceInteractionManagerService.aidl b/core/java/com/android/internal/app/IVoiceInteractionManagerService.aidl
index 5a5e745..dddc08a 100644
--- a/core/java/com/android/internal/app/IVoiceInteractionManagerService.aidl
+++ b/core/java/com/android/internal/app/IVoiceInteractionManagerService.aidl
@@ -261,4 +261,11 @@
in AudioFormat audioFormat,
in PersistableBundle options,
in IMicrophoneHotwordDetectionVoiceInteractionCallback callback);
+
+ /**
+ * Test API to simulate to trigger hardware recognition event for test.
+ */
+ void triggerHardwareRecognitionEventForTest(
+ in SoundTrigger.KeyphraseRecognitionEvent event,
+ in IHotwordRecognitionStatusCallback callback);
}
diff --git a/core/java/com/android/internal/content/PackageMonitor.java b/core/java/com/android/internal/content/PackageMonitor.java
index 9a44c05..7c975e1 100644
--- a/core/java/com/android/internal/content/PackageMonitor.java
+++ b/core/java/com/android/internal/content/PackageMonitor.java
@@ -50,9 +50,6 @@
sPackageFilt.addAction(Intent.ACTION_QUERY_PACKAGE_RESTART);
sPackageFilt.addAction(Intent.ACTION_PACKAGE_RESTARTED);
sPackageFilt.addAction(Intent.ACTION_PACKAGE_DATA_CLEARED);
- sPackageFilt.addAction(Intent.ACTION_PACKAGE_STARTABLE);
- sPackageFilt.addAction(Intent.ACTION_PACKAGE_UNSTARTABLE);
- sPackageFilt.addAction(Intent.ACTION_PACKAGE_FULLY_LOADED);
sPackageFilt.addDataScheme("package");
sNonDataFilt.addAction(Intent.ACTION_UID_REMOVED);
sNonDataFilt.addAction(Intent.ACTION_USER_STOPPED);
@@ -464,15 +461,6 @@
String[] pkgList = intent.getStringArrayExtra(Intent.EXTRA_CHANGED_PACKAGE_LIST);
mSomePackagesChanged = true;
onPackagesUnsuspended(pkgList);
- } else if (Intent.ACTION_PACKAGE_STARTABLE.equals(action)
- || Intent.ACTION_PACKAGE_UNSTARTABLE.equals(action)
- || Intent.ACTION_PACKAGE_FULLY_LOADED.equals(action)) {
- String pkg = intent.getStringExtra(Intent.EXTRA_PACKAGE_NAME);
- int uid = intent.getIntExtra(Intent.EXTRA_UID, 0);
- mSomePackagesChanged = false;
- if (pkg != null) {
- onPackageStateChanged(pkg, uid);
- }
}
if (mSomePackagesChanged) {
diff --git a/core/java/com/android/internal/infra/AbstractRemoteService.java b/core/java/com/android/internal/infra/AbstractRemoteService.java
index f63ac2e..8b24f64 100644
--- a/core/java/com/android/internal/infra/AbstractRemoteService.java
+++ b/core/java/com/android/internal/infra/AbstractRemoteService.java
@@ -88,7 +88,7 @@
private final int mBindingFlags;
protected I mService;
- private boolean mBinding;
+ private boolean mConnecting;
private boolean mDestroyed;
private boolean mServiceDied;
private boolean mCompleted;
@@ -228,7 +228,7 @@
if (mService != null) {
mService.asBinder().unlinkToDeath(this, 0);
}
- mBinding = false;
+ mConnecting = true;
mService = null;
mServiceDied = true;
cancelScheduledUnbind();
@@ -435,10 +435,10 @@
}
private void handleEnsureBound() {
- if (handleIsBound() || mBinding) return;
+ if (handleIsBound() || mConnecting) return;
if (mVerbose) Slog.v(mTag, "ensureBound()");
- mBinding = true;
+ mConnecting = true;
final int flags = Context.BIND_AUTO_CREATE | Context.BIND_FOREGROUND_SERVICE
| Context.BIND_INCLUDE_CAPABILITIES | mBindingFlags;
@@ -448,7 +448,7 @@
if (!willBind) {
Slog.w(mTag, "could not bind to " + mIntent + " using flags " + flags);
- mBinding = false;
+ mConnecting = false;
if (!mServiceDied) {
handleBinderDied();
@@ -457,10 +457,10 @@
}
private void handleEnsureUnbound() {
- if (!handleIsBound() && !mBinding) return;
+ if (!handleIsBound() && !mConnecting) return;
if (mVerbose) Slog.v(mTag, "ensureUnbound()");
- mBinding = false;
+ mConnecting = false;
if (handleIsBound()) {
handleOnConnectedStateChangedInternal(false);
if (mService != null) {
@@ -476,12 +476,12 @@
@Override
public void onServiceConnected(ComponentName name, IBinder service) {
if (mVerbose) Slog.v(mTag, "onServiceConnected()");
- if (mDestroyed || !mBinding) {
+ if (mDestroyed || !mConnecting) {
// This is abnormal. Unbinding the connection has been requested already.
Slog.wtf(mTag, "onServiceConnected() was dispatched after unbindService.");
return;
}
- mBinding = false;
+ mConnecting = false;
try {
service.linkToDeath(AbstractRemoteService.this, 0);
} catch (RemoteException re) {
@@ -496,7 +496,7 @@
@Override
public void onServiceDisconnected(ComponentName name) {
if (mVerbose) Slog.v(mTag, "onServiceDisconnected()");
- mBinding = true;
+ mConnecting = true;
mService = null;
}
diff --git a/core/java/com/android/internal/os/BatteryStatsImpl.java b/core/java/com/android/internal/os/BatteryStatsImpl.java
index b05a9f8..82ec737 100644
--- a/core/java/com/android/internal/os/BatteryStatsImpl.java
+++ b/core/java/com/android/internal/os/BatteryStatsImpl.java
@@ -12088,7 +12088,7 @@
/**
* Distribute Bluetooth energy info and network traffic to apps.
*
- * @param info The energy information from the bluetooth controller.
+ * @param info The accumulated energy information from the bluetooth controller.
*/
public void updateBluetoothStateLocked(@Nullable final BluetoothActivityEnergyInfo info,
final long consumedChargeUC, long elapsedRealtimeMs, long uptimeMs) {
@@ -12100,9 +12100,6 @@
return;
}
if (!mOnBatteryInternal || mIgnoreNextExternalStats) {
- // TODO(174818545): mLastBluetoothActivityInfo is actually extremely suspicious.
- // Firstly, the following line was originally missing. But even more so, BESW says that
- // info is a delta, not a total, so this entire algorithm requires review.
mLastBluetoothActivityInfo.set(info);
return;
}
diff --git a/core/java/com/android/internal/os/ZygoteConnection.java b/core/java/com/android/internal/os/ZygoteConnection.java
index 1673362..993e4e7 100644
--- a/core/java/com/android/internal/os/ZygoteConnection.java
+++ b/core/java/com/android/internal/os/ZygoteConnection.java
@@ -149,8 +149,11 @@
return null;
}
- if (parsedArgs.mUsapPoolStatusSpecified) {
- // Handle this once we've released the argBuffer, to avoid opening a second one.
+ if (parsedArgs.mUsapPoolStatusSpecified
+ || parsedArgs.mApiDenylistExemptions != null
+ || parsedArgs.mHiddenApiAccessLogSampleRate != -1
+ || parsedArgs.mHiddenApiAccessStatslogSampleRate != -1) {
+ // Handle these once we've released argBuffer, to avoid opening a second one.
break;
}
@@ -183,18 +186,6 @@
return null;
}
- if (parsedArgs.mApiDenylistExemptions != null) {
- return handleApiDenylistExemptions(zygoteServer,
- parsedArgs.mApiDenylistExemptions);
- }
-
- if (parsedArgs.mHiddenApiAccessLogSampleRate != -1
- || parsedArgs.mHiddenApiAccessStatslogSampleRate != -1) {
- return handleHiddenApiAccessLogSampleRate(zygoteServer,
- parsedArgs.mHiddenApiAccessLogSampleRate,
- parsedArgs.mHiddenApiAccessStatslogSampleRate);
- }
-
if (parsedArgs.mPermittedCapabilities != 0
|| parsedArgs.mEffectiveCapabilities != 0) {
throw new ZygoteSecurityException("Client may not specify capabilities: "
@@ -311,10 +302,20 @@
}
}
}
+ // Handle anything that may need a ZygoteCommandBuffer after we've released ours.
if (parsedArgs.mUsapPoolStatusSpecified) {
- // Now that we've released argBuffer:
return handleUsapPoolStatusChange(zygoteServer, parsedArgs.mUsapPoolEnabled);
}
+ if (parsedArgs.mApiDenylistExemptions != null) {
+ return handleApiDenylistExemptions(zygoteServer,
+ parsedArgs.mApiDenylistExemptions);
+ }
+ if (parsedArgs.mHiddenApiAccessLogSampleRate != -1
+ || parsedArgs.mHiddenApiAccessStatslogSampleRate != -1) {
+ return handleHiddenApiAccessLogSampleRate(zygoteServer,
+ parsedArgs.mHiddenApiAccessLogSampleRate,
+ parsedArgs.mHiddenApiAccessStatslogSampleRate);
+ }
throw new AssertionError("Shouldn't get here");
}
diff --git a/core/jni/android_view_SurfaceControl.cpp b/core/jni/android_view_SurfaceControl.cpp
index 4194acb..27f82f1 100644
--- a/core/jni/android_view_SurfaceControl.cpp
+++ b/core/jni/android_view_SurfaceControl.cpp
@@ -394,6 +394,14 @@
}
}
+static void nativeSetDefaultBufferSize(JNIEnv* env, jclass clazz, jlong nativeObject,
+ jint width, jint height) {
+ SurfaceControl* const ctrl = reinterpret_cast<SurfaceControl *>(nativeObject);
+ if (ctrl != NULL) {
+ ctrl->updateDefaultBufferSize(width, height);
+ }
+}
+
static Rect rectFromObj(JNIEnv* env, jobject rectObj) {
int left = env->GetIntField(rectObj, gRectClassInfo.left);
int top = env->GetIntField(rectObj, gRectClassInfo.top);
@@ -1771,6 +1779,8 @@
(void*)nativeRelease },
{"nativeDisconnect", "(J)V",
(void*)nativeDisconnect },
+ {"nativeUpdateDefaultBufferSize", "(JII)V",
+ (void*)nativeSetDefaultBufferSize},
{"nativeCreateTransaction", "()J",
(void*)nativeCreateTransaction },
{"nativeApplyTransaction", "(JZ)V",
diff --git a/core/proto/android/server/biometrics.proto b/core/proto/android/server/biometrics.proto
index 4f3ae28..c918dbb 100644
--- a/core/proto/android/server/biometrics.proto
+++ b/core/proto/android/server/biometrics.proto
@@ -120,18 +120,23 @@
optional Modality modality = 2;
+ // The current strength (see {@link BiometricManager.Authenticators}) of this sensor, taking any
+ // downgraded strengths into effect. It may be different from the sensor's original strength but
+ // can never be stronger than that.
+ optional int32 current_strength = 3;
+
// State of the sensor's scheduler.
- optional BiometricSchedulerProto scheduler = 3;
+ optional BiometricSchedulerProto scheduler = 4;
// User states for this sensor.
- repeated UserStateProto user_states = 4;
+ repeated UserStateProto user_states = 5;
// True if resetLockout requires a HAT to be verified in the TEE or equivalent.
- optional bool reset_lockout_requires_hardware_auth_token = 5;
+ optional bool reset_lockout_requires_hardware_auth_token = 6;
// True if a HAT is required (field above) AND a challenge needs to be generated by the
// biometric TEE (or equivalent), and wrapped within the HAT.
- optional bool reset_lockout_requires_challenge = 6;
+ optional bool reset_lockout_requires_challenge = 7;
}
// State of a specific user for a specific sensor.
diff --git a/core/proto/android/service/package.proto b/core/proto/android/service/package.proto
index 5567109..48feb4d 100644
--- a/core/proto/android/service/package.proto
+++ b/core/proto/android/service/package.proto
@@ -125,7 +125,7 @@
}
message StatesProto {
- optional bool is_startable = 1;
+ reserved 1;
optional bool is_loading = 2;
}
@@ -160,7 +160,7 @@
repeated UserInfoProto users = 9;
// Where the request to install this package came from,
optional InstallSourceProto install_source = 10;
- // Whether the package is startable or is still loading
+ // Whether the package is still loading
optional StatesProto states = 11;
// Granted runtime permissions for users.
repeated UserPermissionsProto user_permissions = 12;
diff --git a/core/res/AndroidManifest.xml b/core/res/AndroidManifest.xml
index 9d65e71..93f2de6 100644
--- a/core/res/AndroidManifest.xml
+++ b/core/res/AndroidManifest.xml
@@ -42,8 +42,6 @@
<protected-broadcast android:name="android.intent.action.PACKAGE_REMOVED" />
<protected-broadcast android:name="android.intent.action.PACKAGE_FULLY_REMOVED" />
<protected-broadcast android:name="android.intent.action.PACKAGE_CHANGED" />
- <protected-broadcast android:name="android.intent.action.PACKAGE_STARTABLE" />
- <protected-broadcast android:name="android.intent.action.PACKAGE_UNSTARTABLE" />
<protected-broadcast android:name="android.intent.action.PACKAGE_FULLY_LOADED" />
<protected-broadcast android:name="android.intent.action.PACKAGE_ENABLE_ROLLBACK" />
<protected-broadcast android:name="android.intent.action.CANCEL_ENABLE_ROLLBACK" />
@@ -5578,12 +5576,12 @@
<!-- @SystemApi Allows sensor privacy to be modified.
@hide -->
<permission android:name="android.permission.MANAGE_SENSOR_PRIVACY"
- android:protectionLevel="signature" />
+ android:protectionLevel="internal|role" />
<!-- @SystemApi Allows sensor privacy changes to be observed.
@hide -->
<permission android:name="android.permission.OBSERVE_SENSOR_PRIVACY"
- android:protectionLevel="signature|installer" />
+ android:protectionLevel="internal|role|installer" />
<!-- @SystemApi Permission that protects the {@link Intent#ACTION_REVIEW_ACCESSIBILITY_SERVICES}
intent.
@@ -5734,6 +5732,12 @@
<permission android:name="android.permission.SET_CLIP_SOURCE"
android:protectionLevel="signature|recents" />
+ <!-- @SystemApi Allows an application to access TV tuned info
+ <p>Not for use by third-party applications.
+ @hide -->
+ <permission android:name="android.permission.ACCESS_TUNED_INFO"
+ android:protectionLevel="signature|privileged|vendorPrivileged" />
+
<!-- Allows an application to indicate via
{@link android.content.pm.PackageInstaller.SessionParams#setRequireUserAction(boolean)}
that user action should not be required for an app update.
diff --git a/core/res/res/drawable/btn_borderless_material.xml b/core/res/res/drawable/btn_borderless_material.xml
index 1a0912e..08e1060 100644
--- a/core/res/res/drawable/btn_borderless_material.xml
+++ b/core/res/res/drawable/btn_borderless_material.xml
@@ -15,8 +15,7 @@
-->
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
- android:color="?attr/colorControlHighlight"
- android:rippleStyle="?attr/rippleStyle">
+ android:color="?attr/colorControlHighlight">
<item android:id="@id/mask"
android:drawable="@drawable/btn_default_mtrl_shape" />
</ripple>
diff --git a/core/res/res/drawable/btn_colored_material.xml b/core/res/res/drawable/btn_colored_material.xml
index 5274ef2..7ba21e8 100644
--- a/core/res/res/drawable/btn_colored_material.xml
+++ b/core/res/res/drawable/btn_colored_material.xml
@@ -19,8 +19,7 @@
android:insetTop="@dimen/button_inset_vertical_material"
android:insetRight="@dimen/button_inset_horizontal_material"
android:insetBottom="@dimen/button_inset_vertical_material">
- <ripple android:color="?attr/colorControlHighlight"
- android:rippleStyle="?attr/rippleStyle">
+ <ripple android:color="?attr/colorControlHighlight">
<item>
<shape android:shape="rectangle"
android:tint="@color/btn_colored_background_material">
diff --git a/core/res/res/drawable/btn_default_material.xml b/core/res/res/drawable/btn_default_material.xml
index 6a9e621..ed2b5aa 100644
--- a/core/res/res/drawable/btn_default_material.xml
+++ b/core/res/res/drawable/btn_default_material.xml
@@ -15,7 +15,6 @@
-->
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
- android:color="?attr/colorControlHighlight"
- android:rippleStyle="?attr/rippleStyle">
+ android:color="?attr/colorControlHighlight">
<item android:drawable="@drawable/btn_default_mtrl_shape" />
</ripple>
diff --git a/core/res/res/drawable/btn_toggle_material.xml b/core/res/res/drawable/btn_toggle_material.xml
index 7cee382..8b19e4a 100644
--- a/core/res/res/drawable/btn_toggle_material.xml
+++ b/core/res/res/drawable/btn_toggle_material.xml
@@ -21,8 +21,7 @@
android:insetBottom="@dimen/button_inset_vertical_material">
<layer-list android:paddingMode="stack">
<item>
- <ripple android:color="?attr/colorControlHighlight"
- android:rippleStyle="?attr/rippleStyle">
+ <ripple android:color="?attr/colorControlHighlight">
<item>
<shape android:shape="rectangle"
android:tint="?attr/colorButtonNormal">
diff --git a/core/res/res/drawable/ic_accessibility_reduce_bright_colors.xml b/core/res/res/drawable/ic_accessibility_reduce_bright_colors.xml
deleted file mode 100644
index 1e840d2..0000000
--- a/core/res/res/drawable/ic_accessibility_reduce_bright_colors.xml
+++ /dev/null
@@ -1,63 +0,0 @@
-<!--
- Copyright (C) 2021 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.
--->
-
-<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
- <item>
- <shape android:shape="oval">
- <solid
- android:color="@color/GM2_grey_700"/>
- <size
- android:height="@dimen/accessibility_icon_size"
- android:width="@dimen/accessibility_icon_size"/>
- </shape>
- </item>
- <item
- android:gravity="center">
- <vector
- android:width="@dimen/accessibility_icon_foreground_size"
- android:height="@dimen/accessibility_icon_foreground_size"
- android:viewportWidth="24"
- android:viewportHeight="24">
- <path
- android:pathData="M17,12.1L15.59,10.69L13.05,13.22V7.05H11.05V13.22L8.51,10.69L7.1,12.1L12.05,17.05L17,12.1Z"
- android:fillColor="#ffffff"/>
- <path
- android:pathData="M2.05,13.05H4.05C4.6,13.05 5.05,12.6 5.05,12.05C5.05,11.5 4.6,11.05 4.05,11.05H2.05C1.5,11.05 1.05,11.5 1.05,12.05C1.05,12.6 1.5,13.05 2.05,13.05Z"
- android:fillColor="#ffffff"/>
- <path
- android:pathData="M20.05,13.05H22.05C22.6,13.05 23.05,12.6 23.05,12.05C23.05,11.5 22.6,11.05 22.05,11.05H20.05C19.5,11.05 19.05,11.5 19.05,12.05C19.05,12.6 19.5,13.05 20.05,13.05Z"
- android:fillColor="#ffffff"/>
- <path
- android:pathData="M11.05,2.05V4.05C11.05,4.6 11.5,5.05 12.05,5.05C12.6,5.05 13.05,4.6 13.05,4.05V2.05C13.05,1.5 12.6,1.05 12.05,1.05C11.5,1.05 11.05,1.5 11.05,2.05Z"
- android:fillColor="#ffffff"/>
- <path
- android:pathData="M11.05,20.05V22.05C11.05,22.6 11.5,23.05 12.05,23.05C12.6,23.05 13.05,22.6 13.05,22.05V20.05C13.05,19.5 12.6,19.05 12.05,19.05C11.5,19.05 11.05,19.5 11.05,20.05Z"
- android:fillColor="#ffffff"/>
- <path
- android:pathData="M6.04,4.63C5.65,4.24 5.01,4.24 4.63,4.63C4.24,5.02 4.24,5.66 4.63,6.04L5.69,7.1C6.08,7.49 6.72,7.49 7.1,7.1C7.49,6.71 7.49,6.07 7.1,5.69L6.04,4.63Z"
- android:fillColor="#ffffff"/>
- <path
- android:pathData="M18.41,17C18.02,16.61 17.38,16.61 17,17C16.61,17.39 16.61,18.03 17,18.41L18.06,19.47C18.45,19.86 19.09,19.86 19.47,19.47C19.86,19.08 19.86,18.44 19.47,18.06L18.41,17Z"
- android:fillColor="#ffffff"/>
- <path
- android:pathData="M19.47,6.04C19.86,5.65 19.86,5.01 19.47,4.63C19.08,4.24 18.44,4.24 18.06,4.63L17,5.69C16.61,6.08 16.61,6.72 17,7.1C17.39,7.49 18.03,7.49 18.41,7.1L19.47,6.04Z"
- android:fillColor="#ffffff"/>
- <path
- android:pathData="M7.1,18.41C7.49,18.02 7.49,17.38 7.1,17C6.71,16.61 6.07,16.61 5.69,17L4.63,18.06C4.24,18.45 4.24,19.09 4.63,19.47C5.02,19.86 5.66,19.86 6.04,19.47L7.1,18.41Z"
- android:fillColor="#ffffff"/>
- </vector>
- </item>
-</layer-list>
diff --git a/core/res/res/values-am/strings.xml b/core/res/res/values-am/strings.xml
index 52f0540..ee286bd 100644
--- a/core/res/res/values-am/strings.xml
+++ b/core/res/res/values-am/strings.xml
@@ -1929,8 +1929,7 @@
<string name="close_button_text" msgid="10603510034455258">"ዝጋ"</string>
<string name="notification_messaging_title_template" msgid="772857526770251989">"<xliff:g id="CONVERSATION_TITLE">%1$s</xliff:g>፦ <xliff:g id="SENDER_NAME">%2$s</xliff:g>"</string>
<string name="call_notification_answer_action" msgid="5999246836247132937">"መልስ"</string>
- <!-- no translation found for call_notification_answer_video_action (2086030940195382249) -->
- <skip />
+ <string name="call_notification_answer_video_action" msgid="2086030940195382249">"ቪዲዮ"</string>
<string name="call_notification_decline_action" msgid="3700345945214000726">"አትቀበል"</string>
<string name="call_notification_hang_up_action" msgid="9130720590159188131">"ስልኩን ዝጋ"</string>
<string name="call_notification_incoming_text" msgid="6143109825406638201">"ገቢ ጥሪ"</string>
diff --git a/core/res/res/values-ar/strings.xml b/core/res/res/values-ar/strings.xml
index a78c0e3..ad295cb 100644
--- a/core/res/res/values-ar/strings.xml
+++ b/core/res/res/values-ar/strings.xml
@@ -2053,8 +2053,7 @@
<string name="close_button_text" msgid="10603510034455258">"إغلاق"</string>
<string name="notification_messaging_title_template" msgid="772857526770251989">"<xliff:g id="CONVERSATION_TITLE">%1$s</xliff:g>: <xliff:g id="SENDER_NAME">%2$s</xliff:g>"</string>
<string name="call_notification_answer_action" msgid="5999246836247132937">"ردّ"</string>
- <!-- no translation found for call_notification_answer_video_action (2086030940195382249) -->
- <skip />
+ <string name="call_notification_answer_video_action" msgid="2086030940195382249">"فيديو"</string>
<string name="call_notification_decline_action" msgid="3700345945214000726">"رفض"</string>
<string name="call_notification_hang_up_action" msgid="9130720590159188131">"قطع الاتصال"</string>
<string name="call_notification_incoming_text" msgid="6143109825406638201">"مكالمة واردة"</string>
diff --git a/core/res/res/values-az/strings.xml b/core/res/res/values-az/strings.xml
index 69e0400..0a1c880 100644
--- a/core/res/res/values-az/strings.xml
+++ b/core/res/res/values-az/strings.xml
@@ -733,11 +733,11 @@
<string name="policylab_resetPassword" msgid="214556238645096520">"Ekran kilidini dəyişmək"</string>
<string name="policydesc_resetPassword" msgid="4626419138439341851">"Ekran kilidini dəyişmək"</string>
<string name="policylab_forceLock" msgid="7360335502968476434">"Ekranı kilidləmək"</string>
- <string name="policydesc_forceLock" msgid="1008844760853899693">"Ekranın nə vaxt və necə kilidlənməsinə nəzarət edir."</string>
+ <string name="policydesc_forceLock" msgid="1008844760853899693">"Ekranın kilidlənmə vaxtına və üsuluna nəzarət."</string>
<string name="policylab_wipeData" msgid="1359485247727537311">"Bütün məlumatları silmək"</string>
<string name="policydesc_wipeData" product="tablet" msgid="7245372676261947507">"Planşetin datasını xəbərdarlıq olmadan, zavod data sıfırlaması ilə silin."</string>
<string name="policydesc_wipeData" product="tv" msgid="513862488950801261">"Android TV cihazının datasını fabrik sıfırlaması haqqında xəbərdarlıq olmadan silin."</string>
- <string name="policydesc_wipeData" product="default" msgid="8036084184768379022">"Telefonun datasını xəbərdarlıq olmadan, zavod data sıfırlaması ilə silin"</string>
+ <string name="policydesc_wipeData" product="default" msgid="8036084184768379022">"Telefondakı bütün məlumatları xəbərdarlıqsız sıfırlayaraq məhv etmək"</string>
<string name="policylab_wipeData_secondaryUser" msgid="413813645323433166">"İstifadəçi verilənlərini sil"</string>
<string name="policydesc_wipeData_secondaryUser" product="tablet" msgid="2336676480090926470">"Xəbərdarlıq etmədən bu istifadəçinin verilənlərini bu planşetdə silin."</string>
<string name="policydesc_wipeData_secondaryUser" product="tv" msgid="2293713284515865200">"Bu istifadəçinin datasını xəbərdarlıq olmadan Android TV cihazında silin."</string>
@@ -751,7 +751,7 @@
<string name="policylab_disableCamera" msgid="5749486347810162018">"Kameraları dekativ edin"</string>
<string name="policydesc_disableCamera" msgid="3204405908799676104">"Bütün cihaz kameralarının istifadəsini əngəllə."</string>
<string name="policylab_disableKeyguardFeatures" msgid="5071855750149949741">"Ekran kilidini deaktiv etmək"</string>
- <string name="policydesc_disableKeyguardFeatures" msgid="6641673177041195957">"Bəzi ekran funksiyaları istifadəsinin qarşısını alın."</string>
+ <string name="policydesc_disableKeyguardFeatures" msgid="6641673177041195957">"Bəzi ekran funksiyaları istifadəsinin qarşısını almaq."</string>
<string-array name="phoneTypes">
<item msgid="8996339953292723951">"Ev"</item>
<item msgid="7740243458912727194">"Mobil"</item>
@@ -1846,7 +1846,7 @@
<string name="managed_profile_label_badge_2" msgid="5673187309555352550">"2-ci İş <xliff:g id="LABEL">%1$s</xliff:g>"</string>
<string name="managed_profile_label_badge_3" msgid="6882151970556391957">"3-cü İş <xliff:g id="LABEL">%1$s</xliff:g>"</string>
<string name="lock_to_app_unlock_pin" msgid="3890940811866290782">"Ayırmadan öncə PIN istənilsin"</string>
- <string name="lock_to_app_unlock_pattern" msgid="2694204070499712503">"Ayırmadan öncə kilid modeli istənilsin"</string>
+ <string name="lock_to_app_unlock_pattern" msgid="2694204070499712503">"Qrafik açar istənilsin"</string>
<string name="lock_to_app_unlock_password" msgid="9126722403506560473">"Ayırmadan öncə parol istənilsin"</string>
<string name="package_installed_device_owner" msgid="7035926868974878525">"Admin tərəfindən quraşdırıldı"</string>
<string name="package_updated_device_owner" msgid="7560272363805506941">"Admin tərəfindən yeniləndi"</string>
diff --git a/core/res/res/values-be/strings.xml b/core/res/res/values-be/strings.xml
index bdfab40..c0915d2c 100644
--- a/core/res/res/values-be/strings.xml
+++ b/core/res/res/values-be/strings.xml
@@ -1991,8 +1991,7 @@
<string name="close_button_text" msgid="10603510034455258">"Закрыць"</string>
<string name="notification_messaging_title_template" msgid="772857526770251989">"<xliff:g id="CONVERSATION_TITLE">%1$s</xliff:g>: <xliff:g id="SENDER_NAME">%2$s</xliff:g>"</string>
<string name="call_notification_answer_action" msgid="5999246836247132937">"Адказаць"</string>
- <!-- no translation found for call_notification_answer_video_action (2086030940195382249) -->
- <skip />
+ <string name="call_notification_answer_video_action" msgid="2086030940195382249">"Відэа"</string>
<string name="call_notification_decline_action" msgid="3700345945214000726">"Адхіліць"</string>
<string name="call_notification_hang_up_action" msgid="9130720590159188131">"Завяршыць"</string>
<string name="call_notification_incoming_text" msgid="6143109825406638201">"Уваходны выклік"</string>
diff --git a/core/res/res/values-bn/strings.xml b/core/res/res/values-bn/strings.xml
index 57f2157..9c37c3b 100644
--- a/core/res/res/values-bn/strings.xml
+++ b/core/res/res/values-bn/strings.xml
@@ -307,7 +307,7 @@
<string name="permgroupdesc_contacts" msgid="9163927941244182567">"আপনার পরিচিতিগুলিতে অ্যাক্সেস"</string>
<string name="permgrouplab_location" msgid="1858277002233964394">"লোকেশন"</string>
<string name="permgroupdesc_location" msgid="1995955142118450685">"এই ডিভাইসের লোকেশন অ্যাক্সেস"</string>
- <string name="permgrouplab_calendar" msgid="6426860926123033230">"Calendar"</string>
+ <string name="permgrouplab_calendar" msgid="6426860926123033230">"ক্যালেন্ডার"</string>
<string name="permgroupdesc_calendar" msgid="6762751063361489379">"আপনার ক্যালেন্ডারে অ্যাক্সেস"</string>
<string name="permgrouplab_sms" msgid="795737735126084874">"SMS"</string>
<string name="permgroupdesc_sms" msgid="5726462398070064542">"এসএমএসগুলি পাঠাতে এবং দেখতে"</string>
@@ -1929,8 +1929,7 @@
<string name="close_button_text" msgid="10603510034455258">"বন্ধ করুন"</string>
<string name="notification_messaging_title_template" msgid="772857526770251989">"<xliff:g id="CONVERSATION_TITLE">%1$s</xliff:g>: <xliff:g id="SENDER_NAME">%2$s</xliff:g>"</string>
<string name="call_notification_answer_action" msgid="5999246836247132937">"উত্তর"</string>
- <!-- no translation found for call_notification_answer_video_action (2086030940195382249) -->
- <skip />
+ <string name="call_notification_answer_video_action" msgid="2086030940195382249">"ভিডিও"</string>
<string name="call_notification_decline_action" msgid="3700345945214000726">"বাতিল করুন"</string>
<string name="call_notification_hang_up_action" msgid="9130720590159188131">"কল কেটে দেওয়া"</string>
<string name="call_notification_incoming_text" msgid="6143109825406638201">"ইনকামিং কল"</string>
diff --git a/core/res/res/values-bs/strings.xml b/core/res/res/values-bs/strings.xml
index 195b8f7..b0a9726 100644
--- a/core/res/res/values-bs/strings.xml
+++ b/core/res/res/values-bs/strings.xml
@@ -1960,7 +1960,7 @@
<string name="close_button_text" msgid="10603510034455258">"Zatvori"</string>
<string name="notification_messaging_title_template" msgid="772857526770251989">"<xliff:g id="CONVERSATION_TITLE">%1$s</xliff:g>: <xliff:g id="SENDER_NAME">%2$s</xliff:g>"</string>
<string name="call_notification_answer_action" msgid="5999246836247132937">"Odgovori"</string>
- <string name="call_notification_answer_video_action" msgid="2086030940195382249">"Videozapis"</string>
+ <string name="call_notification_answer_video_action" msgid="2086030940195382249">"Video"</string>
<string name="call_notification_decline_action" msgid="3700345945214000726">"Odbaci"</string>
<string name="call_notification_hang_up_action" msgid="9130720590159188131">"Prekini vezu"</string>
<string name="call_notification_incoming_text" msgid="6143109825406638201">"Dolazni poziv"</string>
diff --git a/core/res/res/values-ca/strings.xml b/core/res/res/values-ca/strings.xml
index 7fd2ede..9db0869 100644
--- a/core/res/res/values-ca/strings.xml
+++ b/core/res/res/values-ca/strings.xml
@@ -1695,7 +1695,7 @@
<string name="accessibility_service_warning_description" msgid="291674995220940133">"El control total és adequat per a les aplicacions que t\'ajuden amb l\'accessibilitat, però no per a la majoria de les aplicacions."</string>
<string name="accessibility_service_screen_control_title" msgid="190017412626919776">"Veure i controlar la pantalla"</string>
<string name="accessibility_service_screen_control_description" msgid="6946315917771791525">"Pot llegir tot el contingut de la pantalla i mostrar contingut sobre altres aplicacions."</string>
- <string name="accessibility_service_action_perform_title" msgid="779670378951658160">"Mostra i duu a terme accions"</string>
+ <string name="accessibility_service_action_perform_title" msgid="779670378951658160">"Mostrar i dur a terme accions"</string>
<string name="accessibility_service_action_perform_description" msgid="2718852014003170558">"Pot fer un seguiment de les teves interaccions amb una aplicació o un sensor de maquinari, i interaccionar amb aplicacions en nom teu."</string>
<string name="accessibility_dialog_button_allow" msgid="2092558122987144530">"Permet"</string>
<string name="accessibility_dialog_button_deny" msgid="4129575637812472671">"Denega"</string>
diff --git a/core/res/res/values-cs/strings.xml b/core/res/res/values-cs/strings.xml
index 0448954..de6debb 100644
--- a/core/res/res/values-cs/strings.xml
+++ b/core/res/res/values-cs/strings.xml
@@ -1991,8 +1991,7 @@
<string name="close_button_text" msgid="10603510034455258">"Zavřít"</string>
<string name="notification_messaging_title_template" msgid="772857526770251989">"<xliff:g id="CONVERSATION_TITLE">%1$s</xliff:g>: <xliff:g id="SENDER_NAME">%2$s</xliff:g>"</string>
<string name="call_notification_answer_action" msgid="5999246836247132937">"Přijmout"</string>
- <!-- no translation found for call_notification_answer_video_action (2086030940195382249) -->
- <skip />
+ <string name="call_notification_answer_video_action" msgid="2086030940195382249">"Video"</string>
<string name="call_notification_decline_action" msgid="3700345945214000726">"Odmítnout"</string>
<string name="call_notification_hang_up_action" msgid="9130720590159188131">"Zavěsit"</string>
<string name="call_notification_incoming_text" msgid="6143109825406638201">"Příchozí hovor"</string>
diff --git a/core/res/res/values-da/strings.xml b/core/res/res/values-da/strings.xml
index 55fcea3..557484d 100644
--- a/core/res/res/values-da/strings.xml
+++ b/core/res/res/values-da/strings.xml
@@ -321,8 +321,8 @@
<string name="permgroupdesc_camera" msgid="7585150538459320326">"tage billeder og optage video"</string>
<string name="permgrouplab_nearby_devices" msgid="5529147543651181991">"Enheder i nærheden"</string>
<string name="permgroupdesc_nearby_devices" msgid="3213561597116913508">"finde og oprette forbindelse til enheder i nærheder"</string>
- <string name="permgrouplab_calllog" msgid="7926834372073550288">"Opkaldslister"</string>
- <string name="permgroupdesc_calllog" msgid="2026996642917801803">"læse og redigere opkaldslisten"</string>
+ <string name="permgrouplab_calllog" msgid="7926834372073550288">"Opkaldshistorik"</string>
+ <string name="permgroupdesc_calllog" msgid="2026996642917801803">"læse og redigere opkaldshistorik"</string>
<string name="permgrouplab_phone" msgid="570318944091926620">"Telefon"</string>
<string name="permgroupdesc_phone" msgid="270048070781478204">"foretage og administrere telefonopkald"</string>
<string name="permgrouplab_sensors" msgid="9134046949784064495">"Kropssensorer"</string>
@@ -363,10 +363,8 @@
<string name="permdesc_receiveMms" msgid="958102423732219710">"Tillader, at appen kan modtage og behandle mms-beskeder. Det betyder, at appen kan overvåge eller slette de beskeder, der sendes til din enhed, uden at vise dem til dig."</string>
<string name="permlab_bindCellBroadcastService" msgid="586746677002040651">"Videresend Cell Broadcast-meddelelser"</string>
<string name="permdesc_bindCellBroadcastService" msgid="6540910200973641606">"Tillader, at appen bindes til Cell Broadcast-modulet, så Cell Broadcast-meddelelser kan videresendes, når de modtages. I nogle områder sendes der Cell Broadcast-underretninger for at advare dig om nødsituationer. Ondsindede apps kan forstyrre effektiviteten eller driften af din enhed, når den modtager en Cell Broadcast-meddelelse om en nødsituation."</string>
- <!-- no translation found for permlab_manageOngoingCalls (281244770664231782) -->
- <skip />
- <!-- no translation found for permdesc_manageOngoingCalls (7003138133829915265) -->
- <skip />
+ <string name="permlab_manageOngoingCalls" msgid="281244770664231782">"Administrere igangværende opkald"</string>
+ <string name="permdesc_manageOngoingCalls" msgid="7003138133829915265">"Giver appen tilladelse til at se oplysninger om igangværende opkald på din enhed og styre disse opkald."</string>
<string name="permlab_readCellBroadcasts" msgid="5869884450872137693">"læse Cell Broadcast-meddelelser"</string>
<string name="permdesc_readCellBroadcasts" msgid="672513437331980168">"Tillader, at appen læser Cell Broadcast-underretninger, der modtages af din enhed. I nogle områder sendes der Cell Broadcast-underretninger for at advare om nødsituationer. Ondsindede apps kan forstyrre ydelsen eller driften af din enhed, når der modtages en Cell Broadcast-meddelelse om en nødsituation."</string>
<string name="permlab_subscribedFeedsRead" msgid="217624769238425461">"læse feeds, jeg abonnerer på"</string>
@@ -421,12 +419,12 @@
<string name="permdesc_writeContacts" product="tablet" msgid="6422419281427826181">"Tillader, at appen kan ændre data om de kontakter, der er gemt på din tablet. Denne tilladelse giver apps mulighed for at slette kontaktdata."</string>
<string name="permdesc_writeContacts" product="tv" msgid="6488872735379978935">"Tillader, at appen kan ændre data om de kontakter, der er gemt på din Android TV-enhed. Denne tilladelse giver apps mulighed for at slette kontaktdata."</string>
<string name="permdesc_writeContacts" product="default" msgid="8304795696237065281">"Tillader, at appen kan ændre data om de kontakter, der er gemt på din telefon. Denne tilladelse giver apps mulighed for at slette kontaktdata."</string>
- <string name="permlab_readCallLog" msgid="1739990210293505948">"læse opkaldsliste"</string>
+ <string name="permlab_readCallLog" msgid="1739990210293505948">"læse opkaldshistorik"</string>
<string name="permdesc_readCallLog" msgid="8964770895425873433">"Denne app kan læse din opkaldshistorik."</string>
- <string name="permlab_writeCallLog" msgid="670292975137658895">"skriv opkaldsliste"</string>
- <string name="permdesc_writeCallLog" product="tablet" msgid="2657525794731690397">"Tillader, at appen ændrer din tablets opkaldsliste, f.eks. data om indgående og udgående opkald. Ondsindede apps kan bruge dette til at slette eller ændre din opkaldsliste."</string>
- <string name="permdesc_writeCallLog" product="tv" msgid="3934939195095317432">"Tillader, at appen ændrer din Android TV-enheds opkaldsliste, bl.a. data om indgående og udgående opkald. Skadelige apps kan bruge dette til at rydde eller ændre din opkaldsliste."</string>
- <string name="permdesc_writeCallLog" product="default" msgid="5903033505665134802">"Tillader, at appen ændrer telefonens opkaldsliste, f.eks. data om indgående og udgående opkald. Ondsindede apps kan bruge dette til at slette eller ændre din opkaldsliste."</string>
+ <string name="permlab_writeCallLog" msgid="670292975137658895">"skriv opkaldshistorik"</string>
+ <string name="permdesc_writeCallLog" product="tablet" msgid="2657525794731690397">"Tillader, at appen ændrer din tablets opkaldshistorik, f.eks. data om indgående og udgående opkald. Ondsindede apps kan bruge dette til at slette eller ændre din opkaldshistorik."</string>
+ <string name="permdesc_writeCallLog" product="tv" msgid="3934939195095317432">"Tillader, at appen ændrer din Android TV-enheds opkaldshistorik, bl.a. data om indgående og udgående opkald. Skadelige apps kan bruge dette til at rydde eller ændre din opkaldshistorik."</string>
+ <string name="permdesc_writeCallLog" product="default" msgid="5903033505665134802">"Tillader, at appen ændrer telefonens opkaldshistorik, f.eks. data om indgående og udgående opkald. Ondsindede apps kan bruge dette til at slette eller ændre din opkaldshistorik."</string>
<string name="permlab_bodySensors" msgid="3411035315357380862">"få adgang til kropssensorer (f.eks. pulsmålere)"</string>
<string name="permdesc_bodySensors" product="default" msgid="2365357960407973997">"Giver appen adgang til data fra sensorer, der overvåger din fysiske tilstand, f.eks. din puls."</string>
<string name="permlab_readCalendar" msgid="6408654259475396200">"Læs kalenderbegivenheder og -info"</string>
@@ -1697,7 +1695,7 @@
<string name="accessibility_service_warning_description" msgid="291674995220940133">"Fuld kontrol er velegnet til apps, der hjælper dig med hjælpefunktioner, men ikke de fleste apps."</string>
<string name="accessibility_service_screen_control_title" msgid="190017412626919776">"Se og styre skærm"</string>
<string name="accessibility_service_screen_control_description" msgid="6946315917771791525">"Den kan læse alt indhold på skærmen og vise indhold oven på andre apps."</string>
- <string name="accessibility_service_action_perform_title" msgid="779670378951658160">"Se og udfør handlinger"</string>
+ <string name="accessibility_service_action_perform_title" msgid="779670378951658160">"Se og udføre handlinger"</string>
<string name="accessibility_service_action_perform_description" msgid="2718852014003170558">"Den kan spore dine interaktioner med en app eller en hardwaresensor og interagere med apps på dine vegne."</string>
<string name="accessibility_dialog_button_allow" msgid="2092558122987144530">"Tillad"</string>
<string name="accessibility_dialog_button_deny" msgid="4129575637812472671">"Afvis"</string>
@@ -1931,8 +1929,7 @@
<string name="close_button_text" msgid="10603510034455258">"Luk"</string>
<string name="notification_messaging_title_template" msgid="772857526770251989">"<xliff:g id="CONVERSATION_TITLE">%1$s</xliff:g>: <xliff:g id="SENDER_NAME">%2$s</xliff:g>"</string>
<string name="call_notification_answer_action" msgid="5999246836247132937">"Besvar"</string>
- <!-- no translation found for call_notification_answer_video_action (2086030940195382249) -->
- <skip />
+ <string name="call_notification_answer_video_action" msgid="2086030940195382249">"Video"</string>
<string name="call_notification_decline_action" msgid="3700345945214000726">"Afvis"</string>
<string name="call_notification_hang_up_action" msgid="9130720590159188131">"Læg på"</string>
<string name="call_notification_incoming_text" msgid="6143109825406638201">"Indgående opkald"</string>
diff --git a/core/res/res/values-de/strings.xml b/core/res/res/values-de/strings.xml
index 7d42e1b..04b5747 100644
--- a/core/res/res/values-de/strings.xml
+++ b/core/res/res/values-de/strings.xml
@@ -1692,7 +1692,7 @@
<string name="accessibility_shortcut_menu_item_status_off" msgid="5531598275559472393">"AUS"</string>
<string name="accessibility_enable_service_title" msgid="3931558336268541484">"<xliff:g id="SERVICE">%1$s</xliff:g> die vollständige Kontrolle über dein Gerät geben?"</string>
<string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"Wenn du <xliff:g id="SERVICE">%1$s</xliff:g> aktivierst, verwendet dein Gerät nicht die Displaysperre, um die Datenverschlüsselung zu verbessern."</string>
- <string name="accessibility_service_warning_description" msgid="291674995220940133">"Die vollständige Kontrolle sollte nur für die Apps aktiviert werden, die dir den Zugang zu den App-Funktionen erleichtern. Das ist in der Regel nur ein kleiner Teil der Apps."</string>
+ <string name="accessibility_service_warning_description" msgid="291674995220940133">"Die vollständige Kontrolle sollte nur für Apps aktiviert werden, die dir Zugang zu App-Funktionen erleichtern. Das ist in der Regel nur ein kleiner Teil der Apps."</string>
<string name="accessibility_service_screen_control_title" msgid="190017412626919776">"Bildschirm aufrufen und steuern"</string>
<string name="accessibility_service_screen_control_description" msgid="6946315917771791525">"Die Funktion kann alle Inhalte auf dem Bildschirm lesen und diese Inhalte über andere Apps anzeigen."</string>
<string name="accessibility_service_action_perform_title" msgid="779670378951658160">"Aktionen aufrufen und durchführen"</string>
@@ -1852,10 +1852,8 @@
<string name="package_updated_device_owner" msgid="7560272363805506941">"Von deinem Administrator aktualisiert"</string>
<string name="package_deleted_device_owner" msgid="2292335928930293023">"Von deinem Administrator gelöscht"</string>
<string name="confirm_battery_saver" msgid="5247976246208245754">"OK"</string>
- <!-- no translation found for battery_saver_description_with_learn_more (7963058670863485450) -->
- <skip />
- <!-- no translation found for battery_saver_description (7695751399533397741) -->
- <skip />
+ <string name="battery_saver_description_with_learn_more" msgid="7963058670863485450">"Der Energiesparmodus aktiviert das dunkle Design und schränkt Hintergrundaktivitäten, einige optische Effekte und Funktionen wie „Hey Google“ ein oder schaltet diese ab\n\n"<annotation id="url">"Weitere Informationen"</annotation></string>
+ <string name="battery_saver_description" msgid="7695751399533397741">"Der Energiesparmodus aktiviert das dunkle Design und schränkt Hintergrundaktivitäten, einige optische Effekte und Funktionen wie „Hey Google“ ein oder schaltet diese ab."</string>
<string name="data_saver_description" msgid="4995164271550590517">"Der Datensparmodus verhindert zum einen, dass manche Apps im Hintergrund Daten senden oder empfangen, sodass weniger Daten verbraucht werden. Zum anderen werden die Datenzugriffe der gerade aktiven App eingeschränkt, was z. B. dazu führen kann, dass Bilder erst angetippt werden müssen, bevor sie sichtbar werden."</string>
<string name="data_saver_enable_title" msgid="7080620065745260137">"Datensparmodus aktivieren?"</string>
<string name="data_saver_enable_button" msgid="4399405762586419726">"Aktivieren"</string>
@@ -1931,8 +1929,7 @@
<string name="close_button_text" msgid="10603510034455258">"Schließen"</string>
<string name="notification_messaging_title_template" msgid="772857526770251989">"<xliff:g id="CONVERSATION_TITLE">%1$s</xliff:g>: <xliff:g id="SENDER_NAME">%2$s</xliff:g>"</string>
<string name="call_notification_answer_action" msgid="5999246836247132937">"Annehmen"</string>
- <!-- no translation found for call_notification_answer_video_action (2086030940195382249) -->
- <skip />
+ <string name="call_notification_answer_video_action" msgid="2086030940195382249">"Video"</string>
<string name="call_notification_decline_action" msgid="3700345945214000726">"Ablehnen"</string>
<string name="call_notification_hang_up_action" msgid="9130720590159188131">"Auflegen"</string>
<string name="call_notification_incoming_text" msgid="6143109825406638201">"Eingehender Anruf"</string>
@@ -2076,18 +2073,12 @@
<string name="notification_feedback_indicator_silenced" msgid="3799442124723177262">"Diese Benachrichtigung wurde auf „Lautlos“ herabgestuft. Tippe, um Feedback zu geben."</string>
<string name="notification_feedback_indicator_promoted" msgid="9030204303764698640">"Diese Benachrichtigung wurde hochgestuft. Tippe, um Feedback zu geben."</string>
<string name="notification_feedback_indicator_demoted" msgid="8880309924296450875">"Diese Benachrichtigung wurde herabgestuft. Tippe, um Feedback zu geben."</string>
- <!-- no translation found for nas_upgrade_notification_title (4224351129445073051) -->
- <skip />
- <!-- no translation found for nas_upgrade_notification_content (7036860187157134706) -->
- <skip />
- <!-- no translation found for nas_upgrade_notification_enable_action (4823652531622744798) -->
- <skip />
- <!-- no translation found for nas_upgrade_notification_disable_action (7561210256700811433) -->
- <skip />
- <!-- no translation found for nas_upgrade_notification_learn_more_action (7011130656195423947) -->
- <skip />
- <!-- no translation found for nas_upgrade_notification_learn_more_content (6276343083934111208) -->
- <skip />
+ <string name="nas_upgrade_notification_title" msgid="4224351129445073051">"„Erweiterte Benachrichtigungen“ ausprobieren"</string>
+ <string name="nas_upgrade_notification_content" msgid="7036860187157134706">"Wenn du weiterhin beispielsweise Vorschläge für Aktionen und Antworten erhalten möchtest, aktiviere die Funktion „Erweiterte Benachrichtigungen“. Adaptive Benachrichtigungen für Android werden nicht mehr unterstützt."</string>
+ <string name="nas_upgrade_notification_enable_action" msgid="4823652531622744798">"Aktivieren"</string>
+ <string name="nas_upgrade_notification_disable_action" msgid="7561210256700811433">"Nicht jetzt"</string>
+ <string name="nas_upgrade_notification_learn_more_action" msgid="7011130656195423947">"Weitere Informationen"</string>
+ <string name="nas_upgrade_notification_learn_more_content" msgid="6276343083934111208">"Die Funktion „Erweiterte Benachrichtigungen“ kann alle Benachrichtigungen lesen, darunter auch personenbezogene Daten wie Kontaktnamen und Nachrichten. Außerdem kann sie Benachrichtigungen schließen oder Schaltflächen in Benachrichtigungen verwenden und so beispielsweise Anrufe entgegennehmen.\n\nDiese Funktion kann auch den Prioritätsmodus aktivieren bzw. deaktivieren und zugehörige Einstellungen ändern."</string>
<string name="dynamic_mode_notification_channel_name" msgid="2986926422100223328">"Infomitteilung zum Ablaufmodus"</string>
<string name="dynamic_mode_notification_title" msgid="9205715501274608016">"Dein Akku könnte vor der gewöhnlichen Ladezeit leer sein"</string>
<string name="dynamic_mode_notification_summary" msgid="4141614604437372157">"Energiesparmodus aktiviert, um die Akkulaufzeit zu verlängern"</string>
diff --git a/core/res/res/values-el/strings.xml b/core/res/res/values-el/strings.xml
index 1612a7b..417b8f2 100644
--- a/core/res/res/values-el/strings.xml
+++ b/core/res/res/values-el/strings.xml
@@ -1929,8 +1929,7 @@
<string name="close_button_text" msgid="10603510034455258">"Κλείσιμο"</string>
<string name="notification_messaging_title_template" msgid="772857526770251989">"<xliff:g id="CONVERSATION_TITLE">%1$s</xliff:g>: <xliff:g id="SENDER_NAME">%2$s</xliff:g>"</string>
<string name="call_notification_answer_action" msgid="5999246836247132937">"Απάντηση"</string>
- <!-- no translation found for call_notification_answer_video_action (2086030940195382249) -->
- <skip />
+ <string name="call_notification_answer_video_action" msgid="2086030940195382249">"Βίντεο"</string>
<string name="call_notification_decline_action" msgid="3700345945214000726">"Απόρριψη"</string>
<string name="call_notification_hang_up_action" msgid="9130720590159188131">"Τερματισμός"</string>
<string name="call_notification_incoming_text" msgid="6143109825406638201">"Εισερχόμενη κλήση"</string>
diff --git a/core/res/res/values-en-rAU/strings.xml b/core/res/res/values-en-rAU/strings.xml
index 9692781..f8ca0b1 100644
--- a/core/res/res/values-en-rAU/strings.xml
+++ b/core/res/res/values-en-rAU/strings.xml
@@ -2264,7 +2264,7 @@
<string name="config_pdp_reject_multi_conn_to_same_pdn_not_allowed" msgid="6024904218067254186"></string>
<string name="window_magnification_prompt_title" msgid="2876703640772778215">"New magnification settings"</string>
<string name="window_magnification_prompt_content" msgid="8159173903032344891">"You can now magnify part of your screen"</string>
- <string name="turn_on_magnification_settings_action" msgid="8521433346684847700">"Turn on in settings"</string>
+ <string name="turn_on_magnification_settings_action" msgid="8521433346684847700">"Turn on in Settings"</string>
<string name="dismiss_action" msgid="1728820550388704784">"Dismiss"</string>
<string name="sensor_privacy_start_use_mic_notification_content_title" msgid="2420858361276370367">"Unblock device microphone"</string>
<string name="sensor_privacy_start_use_camera_notification_content_title" msgid="7287720213963466672">"Unblock device camera"</string>
diff --git a/core/res/res/values-en-rCA/strings.xml b/core/res/res/values-en-rCA/strings.xml
index f41ab42..dc993fe 100644
--- a/core/res/res/values-en-rCA/strings.xml
+++ b/core/res/res/values-en-rCA/strings.xml
@@ -2264,7 +2264,7 @@
<string name="config_pdp_reject_multi_conn_to_same_pdn_not_allowed" msgid="6024904218067254186"></string>
<string name="window_magnification_prompt_title" msgid="2876703640772778215">"New magnification settings"</string>
<string name="window_magnification_prompt_content" msgid="8159173903032344891">"You can now magnify part of your screen"</string>
- <string name="turn_on_magnification_settings_action" msgid="8521433346684847700">"Turn on in settings"</string>
+ <string name="turn_on_magnification_settings_action" msgid="8521433346684847700">"Turn on in Settings"</string>
<string name="dismiss_action" msgid="1728820550388704784">"Dismiss"</string>
<string name="sensor_privacy_start_use_mic_notification_content_title" msgid="2420858361276370367">"Unblock device microphone"</string>
<string name="sensor_privacy_start_use_camera_notification_content_title" msgid="7287720213963466672">"Unblock device camera"</string>
diff --git a/core/res/res/values-en-rGB/strings.xml b/core/res/res/values-en-rGB/strings.xml
index 098a936..5b80a90 100644
--- a/core/res/res/values-en-rGB/strings.xml
+++ b/core/res/res/values-en-rGB/strings.xml
@@ -2264,7 +2264,7 @@
<string name="config_pdp_reject_multi_conn_to_same_pdn_not_allowed" msgid="6024904218067254186"></string>
<string name="window_magnification_prompt_title" msgid="2876703640772778215">"New magnification settings"</string>
<string name="window_magnification_prompt_content" msgid="8159173903032344891">"You can now magnify part of your screen"</string>
- <string name="turn_on_magnification_settings_action" msgid="8521433346684847700">"Turn on in settings"</string>
+ <string name="turn_on_magnification_settings_action" msgid="8521433346684847700">"Turn on in Settings"</string>
<string name="dismiss_action" msgid="1728820550388704784">"Dismiss"</string>
<string name="sensor_privacy_start_use_mic_notification_content_title" msgid="2420858361276370367">"Unblock device microphone"</string>
<string name="sensor_privacy_start_use_camera_notification_content_title" msgid="7287720213963466672">"Unblock device camera"</string>
diff --git a/core/res/res/values-en-rIN/strings.xml b/core/res/res/values-en-rIN/strings.xml
index a7e1f5f..dad96b4 100644
--- a/core/res/res/values-en-rIN/strings.xml
+++ b/core/res/res/values-en-rIN/strings.xml
@@ -2264,7 +2264,7 @@
<string name="config_pdp_reject_multi_conn_to_same_pdn_not_allowed" msgid="6024904218067254186"></string>
<string name="window_magnification_prompt_title" msgid="2876703640772778215">"New magnification settings"</string>
<string name="window_magnification_prompt_content" msgid="8159173903032344891">"You can now magnify part of your screen"</string>
- <string name="turn_on_magnification_settings_action" msgid="8521433346684847700">"Turn on in settings"</string>
+ <string name="turn_on_magnification_settings_action" msgid="8521433346684847700">"Turn on in Settings"</string>
<string name="dismiss_action" msgid="1728820550388704784">"Dismiss"</string>
<string name="sensor_privacy_start_use_mic_notification_content_title" msgid="2420858361276370367">"Unblock device microphone"</string>
<string name="sensor_privacy_start_use_camera_notification_content_title" msgid="7287720213963466672">"Unblock device camera"</string>
diff --git a/core/res/res/values-es/strings.xml b/core/res/res/values-es/strings.xml
index 62ecf65..7519b5a 100644
--- a/core/res/res/values-es/strings.xml
+++ b/core/res/res/values-es/strings.xml
@@ -1694,7 +1694,7 @@
<string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"Si activas <xliff:g id="SERVICE">%1$s</xliff:g>, el dispositivo no utilizará el bloqueo de pantalla para mejorar el cifrado de datos."</string>
<string name="accessibility_service_warning_description" msgid="291674995220940133">"El control total es adecuado para las aplicaciones de accesibilidad, pero no para la mayoría de las aplicaciones."</string>
<string name="accessibility_service_screen_control_title" msgid="190017412626919776">"Ver y controlar la pantalla"</string>
- <string name="accessibility_service_screen_control_description" msgid="6946315917771791525">"Puede leer todo el contenido de la pantalla y mostrar contenido sobre otras aplicaciones."</string>
+ <string name="accessibility_service_screen_control_description" msgid="6946315917771791525">"Puede leer todo el contenido de la pantalla y mostrar contenido encima de otras aplicaciones."</string>
<string name="accessibility_service_action_perform_title" msgid="779670378951658160">"Ver y realizar acciones"</string>
<string name="accessibility_service_action_perform_description" msgid="2718852014003170558">"Puede registrar tus interacciones con una aplicación o un sensor de hardware, así como interactuar con las aplicaciones en tu nombre."</string>
<string name="accessibility_dialog_button_allow" msgid="2092558122987144530">"Permitir"</string>
@@ -1854,7 +1854,7 @@
<string name="confirm_battery_saver" msgid="5247976246208245754">"Aceptar"</string>
<string name="battery_saver_description_with_learn_more" msgid="7963058670863485450">"Ahorro de batería activa el tema oscuro y limita o desactiva la actividad en segundo plano, algunos efectos visuales y funciones como \"Hey Google\"\n\n"<annotation id="url">"Más información"</annotation></string>
<string name="battery_saver_description" msgid="7695751399533397741">"Ahorro de batería activa el tema oscuro y limita o desactiva la actividad en segundo plano, algunos efectos visuales y funciones como \"Hey Google\"."</string>
- <string name="data_saver_description" msgid="4995164271550590517">"El modo Ahorro de datos evita que algunas aplicaciones envíen o reciban datos en segundo plano, lo que puede reducir el uso de datos. Una aplicación activa puede acceder a los datos, aunque con menos frecuencia. Esto significa que es posible que, por ejemplo, algunas imágenes no se muestren hasta que las toques."</string>
+ <string name="data_saver_description" msgid="4995164271550590517">"Ahorro de datos evita que algunas aplicaciones envíen o reciban datos en segundo plano, lo que puede reducir el uso de datos. Una aplicación que estés usando de forma activa puede acceder a los datos, aunque con menos frecuencia. Esto significa que es posible que, por ejemplo, algunas imágenes no se muestren hasta que las toques."</string>
<string name="data_saver_enable_title" msgid="7080620065745260137">"¿Activar Ahorro de datos?"</string>
<string name="data_saver_enable_button" msgid="4399405762586419726">"Activar"</string>
<plurals name="zen_mode_duration_minutes_summary" formatted="false" msgid="2877101784123058273">
@@ -1929,8 +1929,7 @@
<string name="close_button_text" msgid="10603510034455258">"Cerrar"</string>
<string name="notification_messaging_title_template" msgid="772857526770251989">"<xliff:g id="CONVERSATION_TITLE">%1$s</xliff:g>: <xliff:g id="SENDER_NAME">%2$s</xliff:g>"</string>
<string name="call_notification_answer_action" msgid="5999246836247132937">"Responder"</string>
- <!-- no translation found for call_notification_answer_video_action (2086030940195382249) -->
- <skip />
+ <string name="call_notification_answer_video_action" msgid="2086030940195382249">"Vídeo"</string>
<string name="call_notification_decline_action" msgid="3700345945214000726">"Rechazar"</string>
<string name="call_notification_hang_up_action" msgid="9130720590159188131">"Colgar"</string>
<string name="call_notification_incoming_text" msgid="6143109825406638201">"Llamada entrante"</string>
diff --git a/core/res/res/values-eu/strings.xml b/core/res/res/values-eu/strings.xml
index 3d2eda9..ce10584 100644
--- a/core/res/res/values-eu/strings.xml
+++ b/core/res/res/values-eu/strings.xml
@@ -1723,7 +1723,7 @@
<string name="user_switched" msgid="7249833311585228097">"Erabiltzailea: <xliff:g id="NAME">%1$s</xliff:g>."</string>
<string name="user_switching_message" msgid="1912993630661332336">"\"<xliff:g id="NAME">%1$s</xliff:g>\" erabiltzailera aldatzen…"</string>
<string name="user_logging_out_message" msgid="7216437629179710359">"<xliff:g id="NAME">%1$s</xliff:g> erabiltzailearen saioa amaitzen…"</string>
- <string name="owner_name" msgid="8713560351570795743">"Jabea"</string>
+ <string name="owner_name" msgid="8713560351570795743">"Jabe"</string>
<string name="error_message_title" msgid="4082495589294631966">"Errorea"</string>
<string name="error_message_change_not_allowed" msgid="843159705042381454">"Administratzaileak ez du eman aldaketa egiteko baimena"</string>
<string name="app_not_found" msgid="3429506115332341800">"Ez da ekintza gauza dezakeen aplikaziorik aurkitu"</string>
@@ -1929,8 +1929,7 @@
<string name="close_button_text" msgid="10603510034455258">"Itxi"</string>
<string name="notification_messaging_title_template" msgid="772857526770251989">"<xliff:g id="CONVERSATION_TITLE">%1$s</xliff:g>: <xliff:g id="SENDER_NAME">%2$s</xliff:g>"</string>
<string name="call_notification_answer_action" msgid="5999246836247132937">"Erantzun"</string>
- <!-- no translation found for call_notification_answer_video_action (2086030940195382249) -->
- <skip />
+ <string name="call_notification_answer_video_action" msgid="2086030940195382249">"Bideoa"</string>
<string name="call_notification_decline_action" msgid="3700345945214000726">"Baztertu"</string>
<string name="call_notification_hang_up_action" msgid="9130720590159188131">"Amaitu deia"</string>
<string name="call_notification_incoming_text" msgid="6143109825406638201">"Jasotako deia"</string>
@@ -2274,6 +2273,6 @@
<string name="sensor_privacy_notification_channel_label" msgid="936036783155261349">"Sentsoreen pribatutasuna"</string>
<string name="splash_screen_view_icon_description" msgid="180638751260598187">"Aplikazioaren ikonoa"</string>
<string name="splash_screen_view_branding_description" msgid="7911129347402728216">"Aplikazioaren marka-irudia"</string>
- <string name="view_and_control_notification_title" msgid="4300765399209912240">"Begiratu sarbide-ezarpenak"</string>
+ <string name="view_and_control_notification_title" msgid="4300765399209912240">"Egiaztatu sarbide-ezarpenak"</string>
<string name="view_and_control_notification_content" msgid="8003766498562604034">"<xliff:g id="SERVICE_NAME">%s</xliff:g> zerbitzuak pantaila ikusi eta kontrola dezake. Sakatu berrikusteko."</string>
</resources>
diff --git a/core/res/res/values-fa/strings.xml b/core/res/res/values-fa/strings.xml
index ae3f79a..280c71f 100644
--- a/core/res/res/values-fa/strings.xml
+++ b/core/res/res/values-fa/strings.xml
@@ -1929,8 +1929,7 @@
<string name="close_button_text" msgid="10603510034455258">"بستن"</string>
<string name="notification_messaging_title_template" msgid="772857526770251989">"<xliff:g id="CONVERSATION_TITLE">%1$s</xliff:g>: <xliff:g id="SENDER_NAME">%2$s</xliff:g>"</string>
<string name="call_notification_answer_action" msgid="5999246836247132937">"پاسخ"</string>
- <!-- no translation found for call_notification_answer_video_action (2086030940195382249) -->
- <skip />
+ <string name="call_notification_answer_video_action" msgid="2086030940195382249">"ویدیو"</string>
<string name="call_notification_decline_action" msgid="3700345945214000726">"رد کردن"</string>
<string name="call_notification_hang_up_action" msgid="9130720590159188131">"قطع تماس"</string>
<string name="call_notification_incoming_text" msgid="6143109825406638201">"تماس ورودی"</string>
@@ -2263,7 +2262,7 @@
<string name="config_pdp_reject_user_authentication_failed" msgid="4531693033885744689"></string>
<string name="config_pdp_reject_service_not_subscribed" msgid="8190338397128671588"></string>
<string name="config_pdp_reject_multi_conn_to_same_pdn_not_allowed" msgid="6024904218067254186"></string>
- <string name="window_magnification_prompt_title" msgid="2876703640772778215">"تنظیمات درشتنمایی جدید"</string>
+ <string name="window_magnification_prompt_title" msgid="2876703640772778215">"تنظیمات جدید درشتنمایی"</string>
<string name="window_magnification_prompt_content" msgid="8159173903032344891">"اکنون میتوانید بخشی از صفحه را درشتنمایی کنید"</string>
<string name="turn_on_magnification_settings_action" msgid="8521433346684847700">"روشن کردن در «تنظیمات»"</string>
<string name="dismiss_action" msgid="1728820550388704784">"رد شدن"</string>
diff --git a/core/res/res/values-fi/strings.xml b/core/res/res/values-fi/strings.xml
index 7e6cb56..2538e86 100644
--- a/core/res/res/values-fi/strings.xml
+++ b/core/res/res/values-fi/strings.xml
@@ -1929,8 +1929,7 @@
<string name="close_button_text" msgid="10603510034455258">"Sulje"</string>
<string name="notification_messaging_title_template" msgid="772857526770251989">"<xliff:g id="CONVERSATION_TITLE">%1$s</xliff:g>: <xliff:g id="SENDER_NAME">%2$s</xliff:g>"</string>
<string name="call_notification_answer_action" msgid="5999246836247132937">"Vastaa"</string>
- <!-- no translation found for call_notification_answer_video_action (2086030940195382249) -->
- <skip />
+ <string name="call_notification_answer_video_action" msgid="2086030940195382249">"Video"</string>
<string name="call_notification_decline_action" msgid="3700345945214000726">"Hylkää"</string>
<string name="call_notification_hang_up_action" msgid="9130720590159188131">"Lopeta puhelu"</string>
<string name="call_notification_incoming_text" msgid="6143109825406638201">"Saapuva puhelu"</string>
diff --git a/core/res/res/values-fr-rCA/strings.xml b/core/res/res/values-fr-rCA/strings.xml
index 3d22748..a5b1250 100644
--- a/core/res/res/values-fr-rCA/strings.xml
+++ b/core/res/res/values-fr-rCA/strings.xml
@@ -2263,7 +2263,7 @@
<string name="config_pdp_reject_service_not_subscribed" msgid="8190338397128671588"></string>
<string name="config_pdp_reject_multi_conn_to_same_pdn_not_allowed" msgid="6024904218067254186"></string>
<string name="window_magnification_prompt_title" msgid="2876703640772778215">"Nouveaux paramètres d\'agrandissement"</string>
- <string name="window_magnification_prompt_content" msgid="8159173903032344891">"Vous pouvez agrandir une partie votre écran."</string>
+ <string name="window_magnification_prompt_content" msgid="8159173903032344891">"Vous pouvez désormais agrandir une partie de votre écran."</string>
<string name="turn_on_magnification_settings_action" msgid="8521433346684847700">"Activer dans les paramètres"</string>
<string name="dismiss_action" msgid="1728820550388704784">"Fermer"</string>
<string name="sensor_privacy_start_use_mic_notification_content_title" msgid="2420858361276370367">"Débloquer le microphone de l\'appareil"</string>
diff --git a/core/res/res/values-fr/strings.xml b/core/res/res/values-fr/strings.xml
index 5f762ff..86cc13a 100644
--- a/core/res/res/values-fr/strings.xml
+++ b/core/res/res/values-fr/strings.xml
@@ -1842,7 +1842,7 @@
<string name="select_day" msgid="2060371240117403147">"Sélectionner un mois et un jour"</string>
<string name="select_year" msgid="1868350712095595393">"Sélectionner une année"</string>
<string name="deleted_key" msgid="9130083334943364001">"\"<xliff:g id="KEY">%1$s</xliff:g>\" supprimé"</string>
- <string name="managed_profile_label_badge" msgid="6762559569999499495">"<xliff:g id="LABEL">%1$s</xliff:g> (travail)"</string>
+ <string name="managed_profile_label_badge" msgid="6762559569999499495">"<xliff:g id="LABEL">%1$s</xliff:g> (pro)"</string>
<string name="managed_profile_label_badge_2" msgid="5673187309555352550">"2e <xliff:g id="LABEL">%1$s</xliff:g> professionnelle"</string>
<string name="managed_profile_label_badge_3" msgid="6882151970556391957">"3e <xliff:g id="LABEL">%1$s</xliff:g> professionnelle"</string>
<string name="lock_to_app_unlock_pin" msgid="3890940811866290782">"Demander le code avant d\'annuler l\'épinglage"</string>
@@ -1854,7 +1854,7 @@
<string name="confirm_battery_saver" msgid="5247976246208245754">"OK"</string>
<string name="battery_saver_description_with_learn_more" msgid="7963058670863485450">"L\'économiseur de batterie active le thème sombre et limite ou désactive les activités en arrière-plan, certains effets visuels et d\'autres fonctionnalités comme \"Hey Google\"\n\n"<annotation id="url">"En savoir plus"</annotation></string>
<string name="battery_saver_description" msgid="7695751399533397741">"L\'économiseur de batterie active le thème sombre et limite ou désactive les activités en arrière-plan, certains effets visuels et d\'autres fonctionnalités comme \"Hey Google\"."</string>
- <string name="data_saver_description" msgid="4995164271550590517">"Pour réduire la consommation de données, l\'économiseur de données empêche certaines applications d\'envoyer ou de recevoir des données en arrière-plan. Ainsi, les applications que vous utilisez peuvent toujours accéder aux données, mais pas en permanence. Par exemple, il se peut que les images ne s\'affichent pas tant que vous n\'appuyez pas dessus."</string>
+ <string name="data_saver_description" msgid="4995164271550590517">"Pour réduire la consommation des données, l\'Économiseur de données empêche certaines applis d\'envoyer ou de recevoir des données en arrière-plan. Les applis que vous utiliserez pourront toujours accéder aux données, mais le feront moins fréquemment. Par exemple, les images pourront ne pas s\'afficher tant que vous n\'aurez pas appuyé pas dessus."</string>
<string name="data_saver_enable_title" msgid="7080620065745260137">"Activer l\'économiseur de données ?"</string>
<string name="data_saver_enable_button" msgid="4399405762586419726">"Activer"</string>
<plurals name="zen_mode_duration_minutes_summary" formatted="false" msgid="2877101784123058273">
@@ -1929,8 +1929,7 @@
<string name="close_button_text" msgid="10603510034455258">"Fermer"</string>
<string name="notification_messaging_title_template" msgid="772857526770251989">"<xliff:g id="CONVERSATION_TITLE">%1$s</xliff:g> : <xliff:g id="SENDER_NAME">%2$s</xliff:g>"</string>
<string name="call_notification_answer_action" msgid="5999246836247132937">"Répondre"</string>
- <!-- no translation found for call_notification_answer_video_action (2086030940195382249) -->
- <skip />
+ <string name="call_notification_answer_video_action" msgid="2086030940195382249">"Vidéo"</string>
<string name="call_notification_decline_action" msgid="3700345945214000726">"Refuser"</string>
<string name="call_notification_hang_up_action" msgid="9130720590159188131">"Raccrocher"</string>
<string name="call_notification_incoming_text" msgid="6143109825406638201">"Appel entrant"</string>
diff --git a/core/res/res/values-gl/strings.xml b/core/res/res/values-gl/strings.xml
index 12bb42d..cae9637 100644
--- a/core/res/res/values-gl/strings.xml
+++ b/core/res/res/values-gl/strings.xml
@@ -307,7 +307,7 @@
<string name="permgroupdesc_contacts" msgid="9163927941244182567">"acceder aos teus contactos"</string>
<string name="permgrouplab_location" msgid="1858277002233964394">"Localización"</string>
<string name="permgroupdesc_location" msgid="1995955142118450685">"acceder á localización deste dispositivo"</string>
- <string name="permgrouplab_calendar" msgid="6426860926123033230">"Calendar"</string>
+ <string name="permgrouplab_calendar" msgid="6426860926123033230">"Calendario"</string>
<string name="permgroupdesc_calendar" msgid="6762751063361489379">"acceder ao teu calendario"</string>
<string name="permgrouplab_sms" msgid="795737735126084874">"SMS"</string>
<string name="permgroupdesc_sms" msgid="5726462398070064542">"enviar e consultar mensaxes de SMS"</string>
@@ -1929,8 +1929,7 @@
<string name="close_button_text" msgid="10603510034455258">"Pechar"</string>
<string name="notification_messaging_title_template" msgid="772857526770251989">"<xliff:g id="CONVERSATION_TITLE">%1$s</xliff:g>: <xliff:g id="SENDER_NAME">%2$s</xliff:g>"</string>
<string name="call_notification_answer_action" msgid="5999246836247132937">"Resposta"</string>
- <!-- no translation found for call_notification_answer_video_action (2086030940195382249) -->
- <skip />
+ <string name="call_notification_answer_video_action" msgid="2086030940195382249">"Vídeo"</string>
<string name="call_notification_decline_action" msgid="3700345945214000726">"Rexeitar"</string>
<string name="call_notification_hang_up_action" msgid="9130720590159188131">"Colgar"</string>
<string name="call_notification_incoming_text" msgid="6143109825406638201">"Chamada entrante"</string>
diff --git a/core/res/res/values-gu/strings.xml b/core/res/res/values-gu/strings.xml
index 2f2df47..f8de931 100644
--- a/core/res/res/values-gu/strings.xml
+++ b/core/res/res/values-gu/strings.xml
@@ -1929,8 +1929,7 @@
<string name="close_button_text" msgid="10603510034455258">"બંધ કરો"</string>
<string name="notification_messaging_title_template" msgid="772857526770251989">"<xliff:g id="CONVERSATION_TITLE">%1$s</xliff:g>: <xliff:g id="SENDER_NAME">%2$s</xliff:g>"</string>
<string name="call_notification_answer_action" msgid="5999246836247132937">"જવાબ"</string>
- <!-- no translation found for call_notification_answer_video_action (2086030940195382249) -->
- <skip />
+ <string name="call_notification_answer_video_action" msgid="2086030940195382249">"વીડિયો"</string>
<string name="call_notification_decline_action" msgid="3700345945214000726">"નકારો"</string>
<string name="call_notification_hang_up_action" msgid="9130720590159188131">"સમાપ્ત કરો"</string>
<string name="call_notification_incoming_text" msgid="6143109825406638201">"ઇનકમિંગ કૉલ"</string>
diff --git a/core/res/res/values-hi/strings.xml b/core/res/res/values-hi/strings.xml
index 190d561..4ab4a7a 100644
--- a/core/res/res/values-hi/strings.xml
+++ b/core/res/res/values-hi/strings.xml
@@ -220,7 +220,7 @@
<string name="turn_on_radio" msgid="2961717788170634233">"वायरलेस चालू करें"</string>
<string name="turn_off_radio" msgid="7222573978109933360">"वायरलेस बंद करें"</string>
<string name="screen_lock" msgid="2072642720826409809">"स्क्रीन लॉक"</string>
- <string name="power_off" msgid="4111692782492232778">"पावर बंद"</string>
+ <string name="power_off" msgid="4111692782492232778">"पावर बंद करें"</string>
<string name="silent_mode_silent" msgid="5079789070221150912">"रिंगर बंद"</string>
<string name="silent_mode_vibrate" msgid="8821830448369552678">"रिंगर कंपन (वाइब्रेशन)"</string>
<string name="silent_mode_ring" msgid="6039011004781526678">"रिंगर चालू"</string>
@@ -244,10 +244,10 @@
<string name="global_actions" product="tv" msgid="3871763739487450369">"Android TV डिवाइस में फ़ोन से जुड़े विकल्प"</string>
<string name="global_actions" product="default" msgid="6410072189971495460">"फ़ोन विकल्प"</string>
<string name="global_action_lock" msgid="6949357274257655383">"स्क्रीन लॉक"</string>
- <string name="global_action_power_off" msgid="4404936470711393203">"पावर बंद"</string>
+ <string name="global_action_power_off" msgid="4404936470711393203">"पावर बंद करें"</string>
<string name="global_action_power_options" msgid="1185286119330160073">"पावर"</string>
<string name="global_action_restart" msgid="4678451019561687074">"रीस्टार्ट करें"</string>
- <string name="global_action_emergency" msgid="1387617624177105088">"आपातकाल"</string>
+ <string name="global_action_emergency" msgid="1387617624177105088">"आपातकालीन"</string>
<string name="global_action_bug_report" msgid="5127867163044170003">"गड़बड़ी की रिपोर्ट"</string>
<string name="global_action_logout" msgid="6093581310002476511">"सत्र खत्म करें"</string>
<string name="global_action_screenshot" msgid="2610053466156478564">"स्क्रीनशॉट"</string>
@@ -1692,9 +1692,9 @@
<string name="accessibility_shortcut_menu_item_status_off" msgid="5531598275559472393">"बंद है"</string>
<string name="accessibility_enable_service_title" msgid="3931558336268541484">"<xliff:g id="SERVICE">%1$s</xliff:g> को अपना डिवाइस पूरी तरह कंट्रोल करने की मंज़ूरी दें?"</string>
<string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"अगर आप <xliff:g id="SERVICE">%1$s</xliff:g> को चालू करते हैं, तो डेटा को एन्क्रिप्ट (सुरक्षित) करने के तरीके को बेहतर बनाने के लिए आपका डिवाइस सेट किए गए स्क्रीन लॉक का इस्तेमाल नहीं करेगा."</string>
- <string name="accessibility_service_warning_description" msgid="291674995220940133">"पूरी तरह नियंत्रित करने की अनुमति उन ऐप्लिकेशन के लिए ठीक है जो सुलभता से जुड़ी ज़रूरतों के लिए बने हैं, लेकिन ज़्यादातर ऐप्लिकेशन के लिए यह ठीक नहीं है."</string>
- <string name="accessibility_service_screen_control_title" msgid="190017412626919776">"स्क्रीन को देखें और नियंत्रित करें"</string>
- <string name="accessibility_service_screen_control_description" msgid="6946315917771791525">"यह स्क्रीन पर दिखने वाली हर तरह की सामग्री को पढ़ सकता है और उसे दूसरे ऐप्लिकेशन पर दिखा सकता है."</string>
+ <string name="accessibility_service_warning_description" msgid="291674995220940133">"पूरी तरह कंट्रोल करने की अनुमति उन ऐप्लिकेशन के लिए ठीक है जो सुलभता से जुड़ी ज़रूरतों के लिए बने हैं, लेकिन ज़्यादातर ऐप्लिकेशन के लिए यह ठीक नहीं है."</string>
+ <string name="accessibility_service_screen_control_title" msgid="190017412626919776">"स्क्रीन को देखें और कंट्रोल करें"</string>
+ <string name="accessibility_service_screen_control_description" msgid="6946315917771791525">"यह स्क्रीन पर दिखने वाली हर तरह के कॉन्टेंट को पढ़ सकता है और उसे दूसरे ऐप्लिकेशन पर दिखा सकता है."</string>
<string name="accessibility_service_action_perform_title" msgid="779670378951658160">"देखें और कार्रवाई करें"</string>
<string name="accessibility_service_action_perform_description" msgid="2718852014003170558">"यह आपके और किसी ऐप्लिकेशन या हार्डवेयर सेंसर के बीच होने वाले इंटरैक्शन को ट्रैक कर सकता है और आपकी तरफ़ से ऐप्लिकेशन के साथ इंटरैक्ट कर सकता है."</string>
<string name="accessibility_dialog_button_allow" msgid="2092558122987144530">"अनुमति दें"</string>
diff --git a/core/res/res/values-hu/strings.xml b/core/res/res/values-hu/strings.xml
index 4350d60..09e56d8 100644
--- a/core/res/res/values-hu/strings.xml
+++ b/core/res/res/values-hu/strings.xml
@@ -1929,8 +1929,7 @@
<string name="close_button_text" msgid="10603510034455258">"Bezárás"</string>
<string name="notification_messaging_title_template" msgid="772857526770251989">"<xliff:g id="CONVERSATION_TITLE">%1$s</xliff:g>: <xliff:g id="SENDER_NAME">%2$s</xliff:g>"</string>
<string name="call_notification_answer_action" msgid="5999246836247132937">"Fogadás"</string>
- <!-- no translation found for call_notification_answer_video_action (2086030940195382249) -->
- <skip />
+ <string name="call_notification_answer_video_action" msgid="2086030940195382249">"Videó"</string>
<string name="call_notification_decline_action" msgid="3700345945214000726">"Elutasítás"</string>
<string name="call_notification_hang_up_action" msgid="9130720590159188131">"Befejezés"</string>
<string name="call_notification_incoming_text" msgid="6143109825406638201">"Bejövő hívás"</string>
diff --git a/core/res/res/values-hy/strings.xml b/core/res/res/values-hy/strings.xml
index bbf50a7..d4d18c0 100644
--- a/core/res/res/values-hy/strings.xml
+++ b/core/res/res/values-hy/strings.xml
@@ -1694,7 +1694,7 @@
<string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"Եթե միացնեք <xliff:g id="SERVICE">%1$s</xliff:g> ծառայությունը, ձեր սարքը չի օգտագործի էկրանի կողպումը՝ տվյալների գաղտնագրումը բարելավելու համար:"</string>
<string name="accessibility_service_warning_description" msgid="291674995220940133">"Ամբողջական վերահսկումն անհրաժեշտ է միայն այն հավելվածներին, որոնք օգնում են ձեզ հատուկ գործառույթներից օգտվելիս։"</string>
<string name="accessibility_service_screen_control_title" msgid="190017412626919776">"Դիտել և կառավարել էկրանը"</string>
- <string name="accessibility_service_screen_control_description" msgid="6946315917771791525">"Կարող է կարդալ էկրանի բովանդակությունն ու ցուցադրել այլ հավելվածներում։"</string>
+ <string name="accessibility_service_screen_control_description" msgid="6946315917771791525">"Կարող է կարդալ էկրանի ողջ բովանդակությունը և ցուցադրել բովանդակություն այլ հավելվածների վրայից։"</string>
<string name="accessibility_service_action_perform_title" msgid="779670378951658160">"Դիտել և համակարգել գործողությունները"</string>
<string name="accessibility_service_action_perform_description" msgid="2718852014003170558">"Կարող է հետագծել ձեր գործողությունները հավելվածներում և սարքակազմի սենսորների վրա, ինչպես նաև հավելվածներում կատարել գործողություններ ձեր անունից։"</string>
<string name="accessibility_dialog_button_allow" msgid="2092558122987144530">"Թույլատրել"</string>
@@ -1929,8 +1929,7 @@
<string name="close_button_text" msgid="10603510034455258">"Փակել"</string>
<string name="notification_messaging_title_template" msgid="772857526770251989">"<xliff:g id="CONVERSATION_TITLE">%1$s</xliff:g>՝ <xliff:g id="SENDER_NAME">%2$s</xliff:g>"</string>
<string name="call_notification_answer_action" msgid="5999246836247132937">"Պատասխանել"</string>
- <!-- no translation found for call_notification_answer_video_action (2086030940195382249) -->
- <skip />
+ <string name="call_notification_answer_video_action" msgid="2086030940195382249">"Տեսազանգ"</string>
<string name="call_notification_decline_action" msgid="3700345945214000726">"Մերժել"</string>
<string name="call_notification_hang_up_action" msgid="9130720590159188131">"Ավարտել"</string>
<string name="call_notification_incoming_text" msgid="6143109825406638201">"Մուտքային զանգ"</string>
diff --git a/core/res/res/values-in/strings.xml b/core/res/res/values-in/strings.xml
index 222bbe8..5491214 100644
--- a/core/res/res/values-in/strings.xml
+++ b/core/res/res/values-in/strings.xml
@@ -1693,10 +1693,10 @@
<string name="accessibility_enable_service_title" msgid="3931558336268541484">"Izinkan <xliff:g id="SERVICE">%1$s</xliff:g> memiliki kontrol penuh atas perangkat Anda?"</string>
<string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"Jika Anda mengaktifkan <xliff:g id="SERVICE">%1$s</xliff:g>, perangkat tidak akan menggunakan kunci layar untuk meningkatkan enkripsi data."</string>
<string name="accessibility_service_warning_description" msgid="291674995220940133">"Kontrol penuh sesuai untuk aplikasi yang membantu Anda terkait kebutuhan aksesibilitas, tetapi tidak untuk sebagian besar aplikasi."</string>
- <string name="accessibility_service_screen_control_title" msgid="190017412626919776">"Tampilan dan layar kontrol"</string>
+ <string name="accessibility_service_screen_control_title" msgid="190017412626919776">"Melihat dan mengontrol layar"</string>
<string name="accessibility_service_screen_control_description" msgid="6946315917771791525">"Aplikasi dapat membaca semua konten di layar dan menampilkan konten di atas aplikasi lain."</string>
<string name="accessibility_service_action_perform_title" msgid="779670378951658160">"Menampilkan dan melakukan tindakan"</string>
- <string name="accessibility_service_action_perform_description" msgid="2718852014003170558">"Aplikasi dapat melacak interaksi Anda dengan aplikasi atau sensor hardware, dan berinteraksi dengan aplikasi atas nama Anda."</string>
+ <string name="accessibility_service_action_perform_description" msgid="2718852014003170558">"Aplikasi dapat melacak interaksi Anda dengan aplikasi atau sensor hardware, dan melakukan interaksi dengan aplikasi untuk Anda."</string>
<string name="accessibility_dialog_button_allow" msgid="2092558122987144530">"Izinkan"</string>
<string name="accessibility_dialog_button_deny" msgid="4129575637812472671">"Tolak"</string>
<string name="accessibility_select_shortcut_menu_title" msgid="6002726538854613272">"Ketuk fitur untuk mulai menggunakannya:"</string>
@@ -1929,8 +1929,7 @@
<string name="close_button_text" msgid="10603510034455258">"Tutup"</string>
<string name="notification_messaging_title_template" msgid="772857526770251989">"<xliff:g id="CONVERSATION_TITLE">%1$s</xliff:g>: <xliff:g id="SENDER_NAME">%2$s</xliff:g>"</string>
<string name="call_notification_answer_action" msgid="5999246836247132937">"Jawab"</string>
- <!-- no translation found for call_notification_answer_video_action (2086030940195382249) -->
- <skip />
+ <string name="call_notification_answer_video_action" msgid="2086030940195382249">"Video"</string>
<string name="call_notification_decline_action" msgid="3700345945214000726">"Tolak"</string>
<string name="call_notification_hang_up_action" msgid="9130720590159188131">"Tutup"</string>
<string name="call_notification_incoming_text" msgid="6143109825406638201">"Panggilan masuk"</string>
diff --git a/core/res/res/values-is/strings.xml b/core/res/res/values-is/strings.xml
index 47503ed..4ed6fcc 100644
--- a/core/res/res/values-is/strings.xml
+++ b/core/res/res/values-is/strings.xml
@@ -1929,8 +1929,7 @@
<string name="close_button_text" msgid="10603510034455258">"Loka"</string>
<string name="notification_messaging_title_template" msgid="772857526770251989">"<xliff:g id="CONVERSATION_TITLE">%1$s</xliff:g>: <xliff:g id="SENDER_NAME">%2$s</xliff:g>"</string>
<string name="call_notification_answer_action" msgid="5999246836247132937">"Svara"</string>
- <!-- no translation found for call_notification_answer_video_action (2086030940195382249) -->
- <skip />
+ <string name="call_notification_answer_video_action" msgid="2086030940195382249">"Myndsímtal"</string>
<string name="call_notification_decline_action" msgid="3700345945214000726">"Hafna"</string>
<string name="call_notification_hang_up_action" msgid="9130720590159188131">"Leggja á"</string>
<string name="call_notification_incoming_text" msgid="6143109825406638201">"Símtal berst"</string>
diff --git a/core/res/res/values-it/strings.xml b/core/res/res/values-it/strings.xml
index 31096c7..23acc8b 100644
--- a/core/res/res/values-it/strings.xml
+++ b/core/res/res/values-it/strings.xml
@@ -1692,10 +1692,10 @@
<string name="accessibility_shortcut_menu_item_status_off" msgid="5531598275559472393">"OFF"</string>
<string name="accessibility_enable_service_title" msgid="3931558336268541484">"Vuoi consentire a <xliff:g id="SERVICE">%1$s</xliff:g> di avere il controllo totale del tuo dispositivo?"</string>
<string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"Se attivi <xliff:g id="SERVICE">%1$s</xliff:g>, il dispositivo non utilizzerà il blocco schermo per migliorare la crittografia dei dati."</string>
- <string name="accessibility_service_warning_description" msgid="291674995220940133">"Il pieno controllo è appropriato per le app che rispondono alle tue esigenze di accessibilità, ma non per gran parte delle app."</string>
- <string name="accessibility_service_screen_control_title" msgid="190017412626919776">"Visualizza e controlla lo schermo"</string>
+ <string name="accessibility_service_warning_description" msgid="291674995220940133">"Il controllo totale è appropriato per le app che rispondono alle tue esigenze di accessibilità, ma non per gran parte delle app."</string>
+ <string name="accessibility_service_screen_control_title" msgid="190017412626919776">"Visualizzare e controllare lo schermo"</string>
<string name="accessibility_service_screen_control_description" msgid="6946315917771791525">"Può leggere i contenuti presenti sullo schermo e mostrare i contenuti su altre app."</string>
- <string name="accessibility_service_action_perform_title" msgid="779670378951658160">"Visualizza ed esegui azioni"</string>
+ <string name="accessibility_service_action_perform_title" msgid="779670378951658160">"Visualizzare ed eseguire azioni"</string>
<string name="accessibility_service_action_perform_description" msgid="2718852014003170558">"Può tenere traccia delle tue interazioni con un\'app o un sensore hardware e interagire con app per tuo conto."</string>
<string name="accessibility_dialog_button_allow" msgid="2092558122987144530">"Consenti"</string>
<string name="accessibility_dialog_button_deny" msgid="4129575637812472671">"Rifiuta"</string>
@@ -2274,5 +2274,5 @@
<string name="splash_screen_view_icon_description" msgid="180638751260598187">"Icona dell\'applicazione"</string>
<string name="splash_screen_view_branding_description" msgid="7911129347402728216">"Immagine del branding dell\'applicazione"</string>
<string name="view_and_control_notification_title" msgid="4300765399209912240">"Controlla le impostazioni di accesso"</string>
- <string name="view_and_control_notification_content" msgid="8003766498562604034">"<xliff:g id="SERVICE_NAME">%s</xliff:g> può visualizzare e controllare il tuo schermo. Tocca per esaminare."</string>
+ <string name="view_and_control_notification_content" msgid="8003766498562604034">"<xliff:g id="SERVICE_NAME">%s</xliff:g> può visualizzare e controllare il tuo schermo. Tocca per verificare."</string>
</resources>
diff --git a/core/res/res/values-iw/strings.xml b/core/res/res/values-iw/strings.xml
index b3134a7..99c1c25 100644
--- a/core/res/res/values-iw/strings.xml
+++ b/core/res/res/values-iw/strings.xml
@@ -1991,8 +1991,7 @@
<string name="close_button_text" msgid="10603510034455258">"סגירה"</string>
<string name="notification_messaging_title_template" msgid="772857526770251989">"<xliff:g id="CONVERSATION_TITLE">%1$s</xliff:g>: <xliff:g id="SENDER_NAME">%2$s</xliff:g>"</string>
<string name="call_notification_answer_action" msgid="5999246836247132937">"תשובה"</string>
- <!-- no translation found for call_notification_answer_video_action (2086030940195382249) -->
- <skip />
+ <string name="call_notification_answer_video_action" msgid="2086030940195382249">"וידאו"</string>
<string name="call_notification_decline_action" msgid="3700345945214000726">"דחייה"</string>
<string name="call_notification_hang_up_action" msgid="9130720590159188131">"ניתוק"</string>
<string name="call_notification_incoming_text" msgid="6143109825406638201">"שיחה נכנסת"</string>
diff --git a/core/res/res/values-ja/strings.xml b/core/res/res/values-ja/strings.xml
index a8d2f1a..da0e492 100644
--- a/core/res/res/values-ja/strings.xml
+++ b/core/res/res/values-ja/strings.xml
@@ -1692,7 +1692,7 @@
<string name="accessibility_shortcut_menu_item_status_off" msgid="5531598275559472393">"OFF"</string>
<string name="accessibility_enable_service_title" msgid="3931558336268541484">"<xliff:g id="SERVICE">%1$s</xliff:g> にデバイスのフル コントロールを許可しますか?"</string>
<string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"<xliff:g id="SERVICE">%1$s</xliff:g> をオンにすると、デバイスデータの暗号化の強化に画面ロックは使用されなくなります。"</string>
- <string name="accessibility_service_warning_description" msgid="291674995220940133">"フル コントロールは、ユーザー補助機能を必要とするユーザーをサポートするアプリには適していますが、ほとんどのアプリには適していません。"</string>
+ <string name="accessibility_service_warning_description" msgid="291674995220940133">"フル コントロールは、ユーザー補助機能が必要な場合には適していますが、その他の多くのアプリには不要です。"</string>
<string name="accessibility_service_screen_control_title" msgid="190017412626919776">"画面の表示と操作"</string>
<string name="accessibility_service_screen_control_description" msgid="6946315917771791525">"画面上のすべてのコンテンツを読み取り、他のアプリでコンテンツを表示することができます。"</string>
<string name="accessibility_service_action_perform_title" msgid="779670378951658160">"操作の表示と実行"</string>
diff --git a/core/res/res/values-kk/strings.xml b/core/res/res/values-kk/strings.xml
index 7d6bf12..6b73379 100644
--- a/core/res/res/values-kk/strings.xml
+++ b/core/res/res/values-kk/strings.xml
@@ -1929,8 +1929,7 @@
<string name="close_button_text" msgid="10603510034455258">"Жабу"</string>
<string name="notification_messaging_title_template" msgid="772857526770251989">"<xliff:g id="CONVERSATION_TITLE">%1$s</xliff:g>: <xliff:g id="SENDER_NAME">%2$s</xliff:g>"</string>
<string name="call_notification_answer_action" msgid="5999246836247132937">"Жауап"</string>
- <!-- no translation found for call_notification_answer_video_action (2086030940195382249) -->
- <skip />
+ <string name="call_notification_answer_video_action" msgid="2086030940195382249">"Бейне"</string>
<string name="call_notification_decline_action" msgid="3700345945214000726">"Қабылдамау"</string>
<string name="call_notification_hang_up_action" msgid="9130720590159188131">"Тұтқаны қою"</string>
<string name="call_notification_incoming_text" msgid="6143109825406638201">"Кіріс қоңырау"</string>
diff --git a/core/res/res/values-km/strings.xml b/core/res/res/values-km/strings.xml
index 370bb29..81dc891 100644
--- a/core/res/res/values-km/strings.xml
+++ b/core/res/res/values-km/strings.xml
@@ -1365,8 +1365,8 @@
<string name="usb_power_notification_message" msgid="7284765627437897702">"កំពុងសាកថ្មឧបករណ៍ដែលបានភ្ជាប់។ សូមចុចសម្រាប់ជម្រើសបន្ថែម។"</string>
<string name="usb_unsupported_audio_accessory_title" msgid="2335775548086533065">"បានរកឃើញគ្រឿងបរិក្ខារសំឡេងអាណាឡូក"</string>
<string name="usb_unsupported_audio_accessory_message" msgid="1300168007129796621">"ឧបករណ៍ដែលភ្ជាប់មកជាមួយមិនត្រូវគ្នាជាមួយទូរសព្ទនេះទេ។ ចុចដើម្បីស្វែងយល់បន្ថែម។"</string>
- <string name="adb_active_notification_title" msgid="408390247354560331">"បានភ្ជាប់ការកែកំហុសតាម USB"</string>
- <string name="adb_active_notification_message" msgid="5617264033476778211">"ចុចដើម្បីបិទការកែកំហុសតាម USB"</string>
+ <string name="adb_active_notification_title" msgid="408390247354560331">"បានភ្ជាប់ការជួសជុលតាម USB"</string>
+ <string name="adb_active_notification_message" msgid="5617264033476778211">"ចុចដើម្បីបិទការជួសជុលតាម USB"</string>
<string name="adb_active_notification_message" product="tv" msgid="6624498401272780855">"ជ្រើសរើស ដើម្បីបិទការកែកំហុសតាម USB ។"</string>
<string name="adbwifi_active_notification_title" msgid="6147343659168302473">"បានភ្ជាប់ការជួសជុលដោយឥតខ្សែ"</string>
<string name="adbwifi_active_notification_message" msgid="930987922852867972">"ចុច ដើម្បីបិទការជួសជុលដោយឥតខ្សែ"</string>
@@ -1566,7 +1566,7 @@
<string name="action_menu_overflow_description" msgid="4579536843510088170">"ជម្រើសច្រើនទៀត"</string>
<string name="action_bar_home_description_format" msgid="5087107531331621803">"%1$s, %2$s"</string>
<string name="action_bar_home_subtitle_description_format" msgid="4346835454749569826">"%1$s, %2$s, %3$s"</string>
- <string name="storage_internal" msgid="8490227947584914460">"ឧបករណ៍ផ្ទុកដែលចែករំលែកខាងក្នុង"</string>
+ <string name="storage_internal" msgid="8490227947584914460">"ទំហំផ្ទុករួមខាងក្នុង"</string>
<string name="storage_sd_card" msgid="3404740277075331881">"កាតអេសឌី"</string>
<string name="storage_sd_card_label" msgid="7526153141147470509">"កាត SD <xliff:g id="MANUFACTURER">%s</xliff:g>"</string>
<string name="storage_usb_drive" msgid="448030813201444573">"ឧបករណ៍ផ្ទុក USB"</string>
diff --git a/core/res/res/values-kn/strings.xml b/core/res/res/values-kn/strings.xml
index 0daa7fe..f4843444 100644
--- a/core/res/res/values-kn/strings.xml
+++ b/core/res/res/values-kn/strings.xml
@@ -1929,8 +1929,7 @@
<string name="close_button_text" msgid="10603510034455258">"ಮುಚ್ಚು"</string>
<string name="notification_messaging_title_template" msgid="772857526770251989">"<xliff:g id="CONVERSATION_TITLE">%1$s</xliff:g>: <xliff:g id="SENDER_NAME">%2$s</xliff:g>"</string>
<string name="call_notification_answer_action" msgid="5999246836247132937">"ಉತ್ತರಿಸಿ"</string>
- <!-- no translation found for call_notification_answer_video_action (2086030940195382249) -->
- <skip />
+ <string name="call_notification_answer_video_action" msgid="2086030940195382249">"ವೀಡಿಯೊ"</string>
<string name="call_notification_decline_action" msgid="3700345945214000726">"ನಿರಾಕರಿಸಿ"</string>
<string name="call_notification_hang_up_action" msgid="9130720590159188131">"ಹ್ಯಾಂಗ್ ಅಪ್"</string>
<string name="call_notification_incoming_text" msgid="6143109825406638201">"ಒಳಬರುವ ಕರೆ"</string>
diff --git a/core/res/res/values-ky/strings.xml b/core/res/res/values-ky/strings.xml
index de0acbe..8feb675 100644
--- a/core/res/res/values-ky/strings.xml
+++ b/core/res/res/values-ky/strings.xml
@@ -2130,8 +2130,8 @@
<string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> ЧЕКТЕЛГЕН чакага коюлган"</string>
<string name="conversation_single_line_name_display" msgid="8958948312915255999">"<xliff:g id="SENDER_NAME">%1$s</xliff:g>:"</string>
<string name="conversation_single_line_image_placeholder" msgid="6983271082911936900">"сүрөт жөнөттү"</string>
- <string name="conversation_title_fallback_one_to_one" msgid="1980753619726908614">"Жазышуу"</string>
- <string name="conversation_title_fallback_group_chat" msgid="456073374993104303">"Топтошуп жазышуу"</string>
+ <string name="conversation_title_fallback_one_to_one" msgid="1980753619726908614">"Сүйлөшүү"</string>
+ <string name="conversation_title_fallback_group_chat" msgid="456073374993104303">"Топтошуп сүйлөшүү"</string>
<string name="unread_convo_overflow" msgid="920517615597353833">"<xliff:g id="MAX_UNREAD_COUNT">%1$d</xliff:g>+"</string>
<string name="resolver_personal_tab" msgid="2051260504014442073">"Жеке"</string>
<string name="resolver_work_tab" msgid="2690019516263167035">"Жумуш"</string>
diff --git a/core/res/res/values-lt/strings.xml b/core/res/res/values-lt/strings.xml
index d06bc16..ed4f15e 100644
--- a/core/res/res/values-lt/strings.xml
+++ b/core/res/res/values-lt/strings.xml
@@ -1991,8 +1991,7 @@
<string name="close_button_text" msgid="10603510034455258">"Uždaryti"</string>
<string name="notification_messaging_title_template" msgid="772857526770251989">"<xliff:g id="CONVERSATION_TITLE">%1$s</xliff:g>: <xliff:g id="SENDER_NAME">%2$s</xliff:g>"</string>
<string name="call_notification_answer_action" msgid="5999246836247132937">"Atsakyti"</string>
- <!-- no translation found for call_notification_answer_video_action (2086030940195382249) -->
- <skip />
+ <string name="call_notification_answer_video_action" msgid="2086030940195382249">"Vaizdo įrašas"</string>
<string name="call_notification_decline_action" msgid="3700345945214000726">"Atmesti"</string>
<string name="call_notification_hang_up_action" msgid="9130720590159188131">"Baigti pok."</string>
<string name="call_notification_incoming_text" msgid="6143109825406638201">"Gaunamasis skambutis"</string>
diff --git a/core/res/res/values-lv/strings.xml b/core/res/res/values-lv/strings.xml
index 7e54fb9..94a50ea 100644
--- a/core/res/res/values-lv/strings.xml
+++ b/core/res/res/values-lv/strings.xml
@@ -1960,8 +1960,7 @@
<string name="close_button_text" msgid="10603510034455258">"Aizvērt"</string>
<string name="notification_messaging_title_template" msgid="772857526770251989">"<xliff:g id="CONVERSATION_TITLE">%1$s</xliff:g>: <xliff:g id="SENDER_NAME">%2$s</xliff:g>"</string>
<string name="call_notification_answer_action" msgid="5999246836247132937">"Atbildēt"</string>
- <!-- no translation found for call_notification_answer_video_action (2086030940195382249) -->
- <skip />
+ <string name="call_notification_answer_video_action" msgid="2086030940195382249">"Video"</string>
<string name="call_notification_decline_action" msgid="3700345945214000726">"Noraidīt"</string>
<string name="call_notification_hang_up_action" msgid="9130720590159188131">"Pārtraukt"</string>
<string name="call_notification_incoming_text" msgid="6143109825406638201">"Ienākošais zvans"</string>
diff --git a/core/res/res/values-mk/strings.xml b/core/res/res/values-mk/strings.xml
index 1e4ede2..5e90faa 100644
--- a/core/res/res/values-mk/strings.xml
+++ b/core/res/res/values-mk/strings.xml
@@ -1694,9 +1694,9 @@
<string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"Ако вклучите <xliff:g id="SERVICE">%1$s</xliff:g>, уредот нема да го користи заклучувањето на екранот за да го подобри шифрирањето на податоците."</string>
<string name="accessibility_service_warning_description" msgid="291674995220940133">"Целосната контрола е соодветна за апликации што ви помагаат со потребите за пристапност, но не и за повеќето апликации."</string>
<string name="accessibility_service_screen_control_title" msgid="190017412626919776">"Приказ и контрола на екранот"</string>
- <string name="accessibility_service_screen_control_description" msgid="6946315917771791525">"Може да ги чита сите содржини на екранот и да прикажува содржини на други апликации."</string>
- <string name="accessibility_service_action_perform_title" msgid="779670378951658160">"Приказ и изведување дејства"</string>
- <string name="accessibility_service_action_perform_description" msgid="2718852014003170558">"Може да ги следи вашите интеракции со апликациите или хардверскиот сензор и да комуницира со апликациите во ваше име."</string>
+ <string name="accessibility_service_screen_control_description" msgid="6946315917771791525">"Може да ги чита сите содржини на екранот и да прикажува содржини врз другите апликации."</string>
+ <string name="accessibility_service_action_perform_title" msgid="779670378951658160">"Преглед и вршење на дејствата"</string>
+ <string name="accessibility_service_action_perform_description" msgid="2718852014003170558">"Може да ја следи вашата интеракција со апликациите или хардверскиот сензор и да врши интеракција со апликациите во ваше име."</string>
<string name="accessibility_dialog_button_allow" msgid="2092558122987144530">"Дозволи"</string>
<string name="accessibility_dialog_button_deny" msgid="4129575637812472671">"Одбиј"</string>
<string name="accessibility_select_shortcut_menu_title" msgid="6002726538854613272">"Допрете на функција за да почнете да ја користите:"</string>
@@ -1929,8 +1929,7 @@
<string name="close_button_text" msgid="10603510034455258">"Затвори"</string>
<string name="notification_messaging_title_template" msgid="772857526770251989">"<xliff:g id="CONVERSATION_TITLE">%1$s</xliff:g>: <xliff:g id="SENDER_NAME">%2$s</xliff:g>"</string>
<string name="call_notification_answer_action" msgid="5999246836247132937">"Одговори"</string>
- <!-- no translation found for call_notification_answer_video_action (2086030940195382249) -->
- <skip />
+ <string name="call_notification_answer_video_action" msgid="2086030940195382249">"Видео"</string>
<string name="call_notification_decline_action" msgid="3700345945214000726">"Одбиј"</string>
<string name="call_notification_hang_up_action" msgid="9130720590159188131">"Спушти"</string>
<string name="call_notification_incoming_text" msgid="6143109825406638201">"Дојдовен повик"</string>
@@ -2265,7 +2264,7 @@
<string name="config_pdp_reject_multi_conn_to_same_pdn_not_allowed" msgid="6024904218067254186"></string>
<string name="window_magnification_prompt_title" msgid="2876703640772778215">"Нови поставки за зголемување"</string>
<string name="window_magnification_prompt_content" msgid="8159173903032344891">"Сега може да зголемувате дел од екранот"</string>
- <string name="turn_on_magnification_settings_action" msgid="8521433346684847700">"Вклучи во „Поставки“"</string>
+ <string name="turn_on_magnification_settings_action" msgid="8521433346684847700">"Вклучете во „Поставки“"</string>
<string name="dismiss_action" msgid="1728820550388704784">"Отфрли"</string>
<string name="sensor_privacy_start_use_mic_notification_content_title" msgid="2420858361276370367">"Одблокирајте го пристапот до микрофонот на уредот"</string>
<string name="sensor_privacy_start_use_camera_notification_content_title" msgid="7287720213963466672">"Одблокирајте го пристапот до камерата на уредот"</string>
diff --git a/core/res/res/values-ml/strings.xml b/core/res/res/values-ml/strings.xml
index 1a27c20..02557ee 100644
--- a/core/res/res/values-ml/strings.xml
+++ b/core/res/res/values-ml/strings.xml
@@ -1929,8 +1929,7 @@
<string name="close_button_text" msgid="10603510034455258">"അവസാനിപ്പിക്കുക"</string>
<string name="notification_messaging_title_template" msgid="772857526770251989">"<xliff:g id="CONVERSATION_TITLE">%1$s</xliff:g>: <xliff:g id="SENDER_NAME">%2$s</xliff:g>"</string>
<string name="call_notification_answer_action" msgid="5999246836247132937">"മറുപടി നൽകുക"</string>
- <!-- no translation found for call_notification_answer_video_action (2086030940195382249) -->
- <skip />
+ <string name="call_notification_answer_video_action" msgid="2086030940195382249">"വീഡിയോ"</string>
<string name="call_notification_decline_action" msgid="3700345945214000726">"നിരസിക്കുക"</string>
<string name="call_notification_hang_up_action" msgid="9130720590159188131">"കോൾ നിർത്തുക"</string>
<string name="call_notification_incoming_text" msgid="6143109825406638201">"ഇൻകമിംഗ് കോൾ"</string>
diff --git a/core/res/res/values-mn/strings.xml b/core/res/res/values-mn/strings.xml
index a3a3cdb..30ab692 100644
--- a/core/res/res/values-mn/strings.xml
+++ b/core/res/res/values-mn/strings.xml
@@ -1929,8 +1929,7 @@
<string name="close_button_text" msgid="10603510034455258">"Хаах"</string>
<string name="notification_messaging_title_template" msgid="772857526770251989">"<xliff:g id="CONVERSATION_TITLE">%1$s</xliff:g>: <xliff:g id="SENDER_NAME">%2$s</xliff:g>"</string>
<string name="call_notification_answer_action" msgid="5999246836247132937">"Хариулах"</string>
- <!-- no translation found for call_notification_answer_video_action (2086030940195382249) -->
- <skip />
+ <string name="call_notification_answer_video_action" msgid="2086030940195382249">"Видео"</string>
<string name="call_notification_decline_action" msgid="3700345945214000726">"Татгалзах"</string>
<string name="call_notification_hang_up_action" msgid="9130720590159188131">"Таслах"</string>
<string name="call_notification_incoming_text" msgid="6143109825406638201">"Ирсэн дуудлага"</string>
diff --git a/core/res/res/values-mr/strings.xml b/core/res/res/values-mr/strings.xml
index 24ed1b6..9beb59f 100644
--- a/core/res/res/values-mr/strings.xml
+++ b/core/res/res/values-mr/strings.xml
@@ -1929,8 +1929,7 @@
<string name="close_button_text" msgid="10603510034455258">"बंद करा"</string>
<string name="notification_messaging_title_template" msgid="772857526770251989">"<xliff:g id="CONVERSATION_TITLE">%1$s</xliff:g>: <xliff:g id="SENDER_NAME">%2$s</xliff:g>"</string>
<string name="call_notification_answer_action" msgid="5999246836247132937">"उत्तर द्या"</string>
- <!-- no translation found for call_notification_answer_video_action (2086030940195382249) -->
- <skip />
+ <string name="call_notification_answer_video_action" msgid="2086030940195382249">"व्हिडिओ"</string>
<string name="call_notification_decline_action" msgid="3700345945214000726">"नकार द्या"</string>
<string name="call_notification_hang_up_action" msgid="9130720590159188131">"कॉल बंद करा"</string>
<string name="call_notification_incoming_text" msgid="6143109825406638201">"इनकमिंग कॉल"</string>
diff --git a/core/res/res/values-ms/strings.xml b/core/res/res/values-ms/strings.xml
index 0afa2f9..932b01b 100644
--- a/core/res/res/values-ms/strings.xml
+++ b/core/res/res/values-ms/strings.xml
@@ -1929,8 +1929,7 @@
<string name="close_button_text" msgid="10603510034455258">"Tutup"</string>
<string name="notification_messaging_title_template" msgid="772857526770251989">"<xliff:g id="CONVERSATION_TITLE">%1$s</xliff:g>: <xliff:g id="SENDER_NAME">%2$s</xliff:g>"</string>
<string name="call_notification_answer_action" msgid="5999246836247132937">"Jawapan"</string>
- <!-- no translation found for call_notification_answer_video_action (2086030940195382249) -->
- <skip />
+ <string name="call_notification_answer_video_action" msgid="2086030940195382249">"Video"</string>
<string name="call_notification_decline_action" msgid="3700345945214000726">"Tolak"</string>
<string name="call_notification_hang_up_action" msgid="9130720590159188131">"Tamatkan Panggilan"</string>
<string name="call_notification_incoming_text" msgid="6143109825406638201">"Panggilan masuk"</string>
@@ -2275,5 +2274,5 @@
<string name="splash_screen_view_icon_description" msgid="180638751260598187">"Ikon aplikasi"</string>
<string name="splash_screen_view_branding_description" msgid="7911129347402728216">"Imej jenama aplikasi"</string>
<string name="view_and_control_notification_title" msgid="4300765399209912240">"Semak tetapan akses"</string>
- <string name="view_and_control_notification_content" msgid="8003766498562604034">"<xliff:g id="SERVICE_NAME">%s</xliff:g> boleh melihat dan mengawal skrin anda. Ketik untuk menyemak."</string>
+ <string name="view_and_control_notification_content" msgid="8003766498562604034">"<xliff:g id="SERVICE_NAME">%s</xliff:g> boleh melihat dan mengawal skrin anda. Ketik untuk membuat semakan."</string>
</resources>
diff --git a/core/res/res/values-my/strings.xml b/core/res/res/values-my/strings.xml
index be4bf4fa..9c6593e 100644
--- a/core/res/res/values-my/strings.xml
+++ b/core/res/res/values-my/strings.xml
@@ -142,7 +142,7 @@
<string name="wfcSpnFormat_wifi" msgid="1376356951297043426">"Wi-Fi"</string>
<string name="wfcSpnFormat_wifi_calling_wo_hyphen" msgid="7178561009225028264">"WiFi ခေါ်ဆိုမှု"</string>
<string name="wfcSpnFormat_vowifi" msgid="8371335230890725606">"VoWifi"</string>
- <string name="wifi_calling_off_summary" msgid="5626710010766902560">"ပိတ်ထားသည်"</string>
+ <string name="wifi_calling_off_summary" msgid="5626710010766902560">"ပိတ်"</string>
<string name="wfc_mode_wifi_preferred_summary" msgid="1035175836270943089">"Wi-Fi သုံး၍ ခေါ်ဆိုသည်"</string>
<string name="wfc_mode_cellular_preferred_summary" msgid="4958965609212575619">"မိုဘိုင်းကွန်ရက်သုံး၍ ခေါ်ဆိုသည်"</string>
<string name="wfc_mode_wifi_only_summary" msgid="104951993894678665">"ကြိုးမဲ့အင်တာနက် သာလျှင်"</string>
@@ -317,7 +317,7 @@
<string name="permgroupdesc_microphone" msgid="1047786732792487722">"အသံဖမ်းခြင်း"</string>
<string name="permgrouplab_activityRecognition" msgid="3324466667921775766">"ကိုယ်လက်လှုပ်ရှားမှု"</string>
<string name="permgroupdesc_activityRecognition" msgid="4725624819457670704">"သင့်ကိုယ်လက်လှုပ်ရှားမှုကို ဝင်ကြည့်ရန်"</string>
- <string name="permgrouplab_camera" msgid="9090413408963547706">"ကင်မရာ"</string>
+ <string name="permgrouplab_camera" msgid="9090413408963547706">"Camera"</string>
<string name="permgroupdesc_camera" msgid="7585150538459320326">"ဓာတ်ပုံ ရိုက်ပြီးနောက် ဗွီဒီယို မှတ်တမ်းတင်ရန်"</string>
<string name="permgrouplab_nearby_devices" msgid="5529147543651181991">"အနီးတစ်ဝိုက်ရှိ စက်များ"</string>
<string name="permgroupdesc_nearby_devices" msgid="3213561597116913508">"အနီးတစ်ဝိုက်ရှိ စက်များကို ရှာဖွေပြီးချိတ်ဆက်မည်"</string>
@@ -1175,7 +1175,7 @@
<string name="no" msgid="5122037903299899715">"မလုပ်တော့"</string>
<string name="dialog_alert_title" msgid="651856561974090712">"သတိပြုရန်"</string>
<string name="loading" msgid="3138021523725055037">"တင်နေ…"</string>
- <string name="capital_on" msgid="2770685323900821829">"ဖွင့်ရန်"</string>
+ <string name="capital_on" msgid="2770685323900821829">"ဖွင့်"</string>
<string name="capital_off" msgid="7443704171014626777">"ပိတ်"</string>
<string name="checked" msgid="9179896827054513119">"အမှန်ခြစ်ပြီး"</string>
<string name="not_checked" msgid="7972320087569023342">"ခြစ် မထား"</string>
@@ -1688,8 +1688,8 @@
<string name="accessibility_shortcut_single_service_warning" msgid="6363127705112844257">"အသံခလုတ်နှစ်ခုလုံးကို စက္ကန့်အနည်းငယ် ဖိထားခြင်းက အများသုံးစွဲနိုင်မှုဆိုင်ရာ ဝန်ဆောင်မှုဖြစ်သော <xliff:g id="SERVICE">%1$s</xliff:g> ကို ဖွင့်ပေးသည်။ ဤလုပ်ဆောင်ချက်က သင့်စက်အလုပ်လုပ်ပုံကို ပြောင်းလဲနိုင်သည်။\n\nဤဖြတ်လမ်းလင့်ခ်ကို \'ဆက်တင်များ > အများသုံးစွဲနိုင်မှု\' တွင် နောက်ဝန်ဆောင်မှုတစ်ခုသို့ ပြောင်းနိုင်သည်။"</string>
<string name="accessibility_shortcut_on" msgid="5463618449556111344">"ဖွင့်ရန်"</string>
<string name="accessibility_shortcut_off" msgid="3651336255403648739">"မဖွင့်ပါနှင့်"</string>
- <string name="accessibility_shortcut_menu_item_status_on" msgid="6608392117189732543">"ဖွင့်ထားသည်"</string>
- <string name="accessibility_shortcut_menu_item_status_off" msgid="5531598275559472393">"ပိတ်ထားသည်"</string>
+ <string name="accessibility_shortcut_menu_item_status_on" msgid="6608392117189732543">"ဖွင့်"</string>
+ <string name="accessibility_shortcut_menu_item_status_off" msgid="5531598275559472393">"ပိတ်"</string>
<string name="accessibility_enable_service_title" msgid="3931558336268541484">"<xliff:g id="SERVICE">%1$s</xliff:g> ကို သင့်စက်အား အပြည့်အဝထိန်းချုပ်ခွင့် ပေးလိုပါသလား။"</string>
<string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"<xliff:g id="SERVICE">%1$s</xliff:g> ဖွင့်လိုက်ပါက သင်၏စက်သည် ဒေတာအသွင်ဝှက်ခြင်း ပိုကောင်းမွန်စေရန် သင့်ဖန်သားပြင်လော့ခ်ကို သုံးမည်မဟုတ်ပါ။"</string>
<string name="accessibility_service_warning_description" msgid="291674995220940133">"အများသုံးစွဲနိုင်မှု လိုအပ်ချက်များအတွက် အထောက်အကူပြုသည့် အက်ပ်များအား အပြည့်အဝ ထိန်းချုပ်ခွင့်ပေးခြင်းသည် သင့်လျော်သော်လည်း အက်ပ်အများစုအတွက် မသင့်လျော်ပါ။"</string>
@@ -1929,8 +1929,7 @@
<string name="close_button_text" msgid="10603510034455258">"ပိတ်ရန်"</string>
<string name="notification_messaging_title_template" msgid="772857526770251989">"<xliff:g id="CONVERSATION_TITLE">%1$s</xliff:g>− <xliff:g id="SENDER_NAME">%2$s</xliff:g>"</string>
<string name="call_notification_answer_action" msgid="5999246836247132937">"ဖုန်းကိုင်ရန်"</string>
- <!-- no translation found for call_notification_answer_video_action (2086030940195382249) -->
- <skip />
+ <string name="call_notification_answer_video_action" msgid="2086030940195382249">"ဗီဒီယို"</string>
<string name="call_notification_decline_action" msgid="3700345945214000726">"ငြင်းပယ်ရန်"</string>
<string name="call_notification_hang_up_action" msgid="9130720590159188131">"ဖုန်းချရန်"</string>
<string name="call_notification_incoming_text" msgid="6143109825406638201">"အဝင်ခေါ်ဆိုမှု"</string>
@@ -2066,7 +2065,7 @@
<string name="zen_upgrade_notification_content" msgid="5228458567180124005">"ပိတ်ထားသည့်အရာများကို ကြည့်ရန် တို့ပါ။"</string>
<string name="notification_app_name_system" msgid="3045196791746735601">"စနစ်"</string>
<string name="notification_app_name_settings" msgid="9088548800899952531">"ဆက်တင်များ"</string>
- <string name="notification_appops_camera_active" msgid="8177643089272352083">"ကင်မရာ"</string>
+ <string name="notification_appops_camera_active" msgid="8177643089272352083">"Camera"</string>
<string name="notification_appops_microphone_active" msgid="581333393214739332">"မိုက်ခရိုဖုန်း"</string>
<string name="notification_appops_overlay_active" msgid="5571732753262836481">"သင့်မျက်နှာပြင်ပေါ်ရှိ အခြားအက်ပ်များပေါ်တွင် ပြသခြင်း"</string>
<string name="notification_feedback_indicator" msgid="663476517711323016">"အကြံပြုချက် ပေးရန်"</string>
diff --git a/core/res/res/values-nb/strings.xml b/core/res/res/values-nb/strings.xml
index 9c70fdf..4720e29 100644
--- a/core/res/res/values-nb/strings.xml
+++ b/core/res/res/values-nb/strings.xml
@@ -1709,7 +1709,7 @@
<string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Bruk snarveien"</string>
<string name="color_inversion_feature_name" msgid="326050048927789012">"Fargeinvertering"</string>
<string name="color_correction_feature_name" msgid="3655077237805422597">"Fargekorrigering"</string>
- <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Ekstra dempet belysning"</string>
+ <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Ekstra dimmet"</string>
<string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Volumtastene holdes inne. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> er slått på."</string>
<string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Volumtastene holdes inne. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> er slått av."</string>
<string name="accessibility_shortcut_spoken_feedback" msgid="4228997042855695090">"Trykk og hold inne begge volumtastene i tre sekunder for å bruke <xliff:g id="SERVICE_NAME">%1$s</xliff:g>"</string>
@@ -1929,8 +1929,7 @@
<string name="close_button_text" msgid="10603510034455258">"Lukk"</string>
<string name="notification_messaging_title_template" msgid="772857526770251989">"<xliff:g id="CONVERSATION_TITLE">%1$s</xliff:g><xliff:g id="SENDER_NAME">%2$s</xliff:g>"</string>
<string name="call_notification_answer_action" msgid="5999246836247132937">"Svar"</string>
- <!-- no translation found for call_notification_answer_video_action (2086030940195382249) -->
- <skip />
+ <string name="call_notification_answer_video_action" msgid="2086030940195382249">"Video"</string>
<string name="call_notification_decline_action" msgid="3700345945214000726">"Avvis"</string>
<string name="call_notification_hang_up_action" msgid="9130720590159188131">"Legg på"</string>
<string name="call_notification_incoming_text" msgid="6143109825406638201">"Innkommende anrop"</string>
diff --git a/core/res/res/values-nl/strings.xml b/core/res/res/values-nl/strings.xml
index 0222f6f..fcc5264 100644
--- a/core/res/res/values-nl/strings.xml
+++ b/core/res/res/values-nl/strings.xml
@@ -2274,5 +2274,5 @@
<string name="splash_screen_view_icon_description" msgid="180638751260598187">"App-icoon"</string>
<string name="splash_screen_view_branding_description" msgid="7911129347402728216">"Merkafbeelding voor app"</string>
<string name="view_and_control_notification_title" msgid="4300765399209912240">"Toegangsinstellingen checken"</string>
- <string name="view_and_control_notification_content" msgid="8003766498562604034">"<xliff:g id="SERVICE_NAME">%s</xliff:g> kan je scherm bekijken en beheren. Tik om te bekijken."</string>
+ <string name="view_and_control_notification_content" msgid="8003766498562604034">"<xliff:g id="SERVICE_NAME">%s</xliff:g> kan je scherm bekijken en bedienen. Tik om te checken."</string>
</resources>
diff --git a/core/res/res/values-or/strings.xml b/core/res/res/values-or/strings.xml
index 7948f64..55bb315 100644
--- a/core/res/res/values-or/strings.xml
+++ b/core/res/res/values-or/strings.xml
@@ -1929,8 +1929,7 @@
<string name="close_button_text" msgid="10603510034455258">"ବନ୍ଦ କରନ୍ତୁ"</string>
<string name="notification_messaging_title_template" msgid="772857526770251989">"<xliff:g id="CONVERSATION_TITLE">%1$s</xliff:g>: <xliff:g id="SENDER_NAME">%2$s</xliff:g>"</string>
<string name="call_notification_answer_action" msgid="5999246836247132937">"ଉତ୍ତର ଦିଅନ୍ତୁ"</string>
- <!-- no translation found for call_notification_answer_video_action (2086030940195382249) -->
- <skip />
+ <string name="call_notification_answer_video_action" msgid="2086030940195382249">"ଭିଡିଓ"</string>
<string name="call_notification_decline_action" msgid="3700345945214000726">"ଅଗ୍ରାହ୍ୟ କର"</string>
<string name="call_notification_hang_up_action" msgid="9130720590159188131">"ସମାପ୍ତ କରନ୍ତୁ"</string>
<string name="call_notification_incoming_text" msgid="6143109825406638201">"ଇନକମିଂ କଲ୍"</string>
diff --git a/core/res/res/values-pa/strings.xml b/core/res/res/values-pa/strings.xml
index ac5af41..bfa5760 100644
--- a/core/res/res/values-pa/strings.xml
+++ b/core/res/res/values-pa/strings.xml
@@ -307,7 +307,7 @@
<string name="permgroupdesc_contacts" msgid="9163927941244182567">"ਆਪਣੇ ਸੰਪਰਕਾਂ ਤੱਕ ਪਹੁੰਚ ਕਰਨ"</string>
<string name="permgrouplab_location" msgid="1858277002233964394">"ਟਿਕਾਣਾ"</string>
<string name="permgroupdesc_location" msgid="1995955142118450685">"ਇਸ ਡੀਵਾਈਸ ਦੇ ਨਿਰਧਾਰਤ ਟਿਕਾਣੇ ਤੱਕ ਪਹੁੰਚੋ"</string>
- <string name="permgrouplab_calendar" msgid="6426860926123033230">"Calendar"</string>
+ <string name="permgrouplab_calendar" msgid="6426860926123033230">"ਕੈਲੰਡਰ"</string>
<string name="permgroupdesc_calendar" msgid="6762751063361489379">"ਤੁਹਾਡੇ ਕੈਲੰਡਰ ਤੱਕ ਪਹੁੰਚ ਕਰਨ"</string>
<string name="permgrouplab_sms" msgid="795737735126084874">"SMS"</string>
<string name="permgroupdesc_sms" msgid="5726462398070064542">"SMS ਸੁਨੇਹੇ ਭੇਜੋ ਅਤੇ ਦੇਖੋ"</string>
@@ -1929,8 +1929,7 @@
<string name="close_button_text" msgid="10603510034455258">"ਬੰਦ ਕਰੋ"</string>
<string name="notification_messaging_title_template" msgid="772857526770251989">"<xliff:g id="CONVERSATION_TITLE">%1$s</xliff:g>: <xliff:g id="SENDER_NAME">%2$s</xliff:g>"</string>
<string name="call_notification_answer_action" msgid="5999246836247132937">"ਜਵਾਬ ਦਿਓ"</string>
- <!-- no translation found for call_notification_answer_video_action (2086030940195382249) -->
- <skip />
+ <string name="call_notification_answer_video_action" msgid="2086030940195382249">"ਵੀਡੀਓ"</string>
<string name="call_notification_decline_action" msgid="3700345945214000726">"ਅਸਵੀਕਾਰ ਕਰੋ"</string>
<string name="call_notification_hang_up_action" msgid="9130720590159188131">"ਸਮਾਪਤ ਕਰੋ"</string>
<string name="call_notification_incoming_text" msgid="6143109825406638201">"ਇਨਕਮਿੰਗ ਕਾਲ"</string>
diff --git a/core/res/res/values-pl/strings.xml b/core/res/res/values-pl/strings.xml
index 89279d4..57037ad 100644
--- a/core/res/res/values-pl/strings.xml
+++ b/core/res/res/values-pl/strings.xml
@@ -1737,7 +1737,7 @@
<string name="accessibility_enable_service_title" msgid="3931558336268541484">"Pozwolić usłudze <xliff:g id="SERVICE">%1$s</xliff:g> na pełną kontrolę nad urządzeniem?"</string>
<string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"Jeśli włączysz usługę <xliff:g id="SERVICE">%1$s</xliff:g>, Twoje urządzenie nie będzie korzystać z blokady ekranu, by usprawnić szyfrowanie danych."</string>
<string name="accessibility_service_warning_description" msgid="291674995220940133">"Pełna kontrola jest odpowiednia dla aplikacji, które pomagają Ci radzić sobie z niepełnosprawnością, ale nie należy jej przyznawać wszystkim aplikacjom."</string>
- <string name="accessibility_service_screen_control_title" msgid="190017412626919776">"Wyświetlaj i steruj ekranem"</string>
+ <string name="accessibility_service_screen_control_title" msgid="190017412626919776">"Wyświetlaj i kontroluj ekran"</string>
<string name="accessibility_service_screen_control_description" msgid="6946315917771791525">"Może odczytywać całą zawartość ekranu i wyświetlać treść nad innymi aplikacjami."</string>
<string name="accessibility_service_action_perform_title" msgid="779670378951658160">"Wyświetlaj i wykonuj działania"</string>
<string name="accessibility_service_action_perform_description" msgid="2718852014003170558">"Może śledzić Twoje interakcje z aplikacjami lub czujnikiem sprzętowym, a także obsługiwać aplikacje za Ciebie."</string>
@@ -1991,8 +1991,7 @@
<string name="close_button_text" msgid="10603510034455258">"Zamknij"</string>
<string name="notification_messaging_title_template" msgid="772857526770251989">"<xliff:g id="CONVERSATION_TITLE">%1$s</xliff:g>: <xliff:g id="SENDER_NAME">%2$s</xliff:g>"</string>
<string name="call_notification_answer_action" msgid="5999246836247132937">"Odbierz"</string>
- <!-- no translation found for call_notification_answer_video_action (2086030940195382249) -->
- <skip />
+ <string name="call_notification_answer_video_action" msgid="2086030940195382249">"Film"</string>
<string name="call_notification_decline_action" msgid="3700345945214000726">"Odrzuć"</string>
<string name="call_notification_hang_up_action" msgid="9130720590159188131">"Rozłącz"</string>
<string name="call_notification_incoming_text" msgid="6143109825406638201">"Połączenie przychodzące"</string>
diff --git a/core/res/res/values-pt-rPT/strings.xml b/core/res/res/values-pt-rPT/strings.xml
index 019107a..d0c2beb 100644
--- a/core/res/res/values-pt-rPT/strings.xml
+++ b/core/res/res/values-pt-rPT/strings.xml
@@ -1621,7 +1621,7 @@
<string name="wireless_display_route_description" msgid="8297563323032966831">"Visualização sem fios"</string>
<string name="media_route_button_content_description" msgid="2299223698196869956">"Transmitir"</string>
<string name="media_route_chooser_title" msgid="6646594924991269208">"Ligar ao dispositivo"</string>
- <string name="media_route_chooser_title_for_remote_display" msgid="3105906508794326446">"Transmitir ecrã para o dispositivo"</string>
+ <string name="media_route_chooser_title_for_remote_display" msgid="3105906508794326446">"Transmitir ecrã para dispositivo"</string>
<string name="media_route_chooser_searching" msgid="6119673534251329535">"A pesquisar dispositivos…"</string>
<string name="media_route_chooser_extended_settings" msgid="2506352159381327741">"Definições"</string>
<string name="media_route_controller_disconnect" msgid="7362617572732576959">"Desligar"</string>
@@ -1692,11 +1692,11 @@
<string name="accessibility_shortcut_menu_item_status_off" msgid="5531598275559472393">"DESATIVADO"</string>
<string name="accessibility_enable_service_title" msgid="3931558336268541484">"Permitir que o serviço <xliff:g id="SERVICE">%1$s</xliff:g> tenha controlo total sobre o seu dispositivo?"</string>
<string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"Se ativar o serviço <xliff:g id="SERVICE">%1$s</xliff:g>, o dispositivo não utilizará o bloqueio de ecrã para otimizar a encriptação de dados."</string>
- <string name="accessibility_service_warning_description" msgid="291674995220940133">"O controlo total é adequado para aplicações que ajudam nas necessidades de acessibilidade, mas não para a maioria das aplicações."</string>
+ <string name="accessibility_service_warning_description" msgid="291674995220940133">"O controlo total é adequado para aplicações que ajudam nas necessidades de acessibilidade, mas não para a maioria das apps."</string>
<string name="accessibility_service_screen_control_title" msgid="190017412626919776">"Ver e controlar o ecrã"</string>
<string name="accessibility_service_screen_control_description" msgid="6946315917771791525">"Pode ler todo o conteúdo do ecrã e sobrepor conteúdo a outras aplicações."</string>
<string name="accessibility_service_action_perform_title" msgid="779670378951658160">"Veja e execute ações"</string>
- <string name="accessibility_service_action_perform_description" msgid="2718852014003170558">"Pode monitorizar as suas interações com uma app ou um sensor de hardware e interagir com aplicações em seu nome."</string>
+ <string name="accessibility_service_action_perform_description" msgid="2718852014003170558">"Pode monitorizar as suas interações com uma app ou um sensor de hardware e interagir com apps em seu nome."</string>
<string name="accessibility_dialog_button_allow" msgid="2092558122987144530">"Permitir"</string>
<string name="accessibility_dialog_button_deny" msgid="4129575637812472671">"Recusar"</string>
<string name="accessibility_select_shortcut_menu_title" msgid="6002726538854613272">"Toque numa funcionalidade para começar a utilizá-la:"</string>
@@ -1709,7 +1709,7 @@
<string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Utilizar atalho"</string>
<string name="color_inversion_feature_name" msgid="326050048927789012">"Inversão de cores"</string>
<string name="color_correction_feature_name" msgid="3655077237805422597">"Correção da cor"</string>
- <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Escurecimento extra"</string>
+ <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Mais escuro"</string>
<string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Teclas do volume premidas. Serviço <xliff:g id="SERVICE_NAME">%1$s</xliff:g> ativado."</string>
<string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Teclas de volume premidas. Serviço <xliff:g id="SERVICE_NAME">%1$s</xliff:g> desativado."</string>
<string name="accessibility_shortcut_spoken_feedback" msgid="4228997042855695090">"Prima sem soltar as teclas de volume durante três segundos para utilizar o serviço <xliff:g id="SERVICE_NAME">%1$s</xliff:g>."</string>
diff --git a/core/res/res/values-ro/strings.xml b/core/res/res/values-ro/strings.xml
index d54829a..e6b7ff6 100644
--- a/core/res/res/values-ro/strings.xml
+++ b/core/res/res/values-ro/strings.xml
@@ -1960,8 +1960,7 @@
<string name="close_button_text" msgid="10603510034455258">"Închideți"</string>
<string name="notification_messaging_title_template" msgid="772857526770251989">"<xliff:g id="CONVERSATION_TITLE">%1$s</xliff:g>: <xliff:g id="SENDER_NAME">%2$s</xliff:g>"</string>
<string name="call_notification_answer_action" msgid="5999246836247132937">"Răspundeți"</string>
- <!-- no translation found for call_notification_answer_video_action (2086030940195382249) -->
- <skip />
+ <string name="call_notification_answer_video_action" msgid="2086030940195382249">"Video"</string>
<string name="call_notification_decline_action" msgid="3700345945214000726">"Respingeți"</string>
<string name="call_notification_hang_up_action" msgid="9130720590159188131">"Încheiați"</string>
<string name="call_notification_incoming_text" msgid="6143109825406638201">"Apel primit"</string>
@@ -2309,5 +2308,5 @@
<string name="splash_screen_view_icon_description" msgid="180638751260598187">"Pictograma aplicației"</string>
<string name="splash_screen_view_branding_description" msgid="7911129347402728216">"Imaginea de branding a aplicației"</string>
<string name="view_and_control_notification_title" msgid="4300765399209912240">"Verificați setările pentru acces"</string>
- <string name="view_and_control_notification_content" msgid="8003766498562604034">"<xliff:g id="SERVICE_NAME">%s</xliff:g> poată să vadă și să vă controleze ecranul. Atingeți pentru a examina."</string>
+ <string name="view_and_control_notification_content" msgid="8003766498562604034">"<xliff:g id="SERVICE_NAME">%s</xliff:g> poate să vadă și să vă controleze ecranul. Atingeți pentru a examina."</string>
</resources>
diff --git a/core/res/res/values-ru/strings.xml b/core/res/res/values-ru/strings.xml
index 76b3991..09f839d 100644
--- a/core/res/res/values-ru/strings.xml
+++ b/core/res/res/values-ru/strings.xml
@@ -1738,9 +1738,9 @@
<string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"Если включить сервис \"<xliff:g id="SERVICE">%1$s</xliff:g>\", устройство не будет использовать блокировку экрана для защиты данных."</string>
<string name="accessibility_service_warning_description" msgid="291674995220940133">"Полный контроль нужен приложениям для реализации специальных возможностей и не нужен большинству остальных."</string>
<string name="accessibility_service_screen_control_title" msgid="190017412626919776">"Просмотр и контроль экрана"</string>
- <string name="accessibility_service_screen_control_description" msgid="6946315917771791525">"Сервис может читать весь контент на экране и отображать контент поверх других приложений."</string>
+ <string name="accessibility_service_screen_control_description" msgid="6946315917771791525">"Сервис может просматривать весь контент на экране и отображать контент поверх других приложений"</string>
<string name="accessibility_service_action_perform_title" msgid="779670378951658160">"Просмотр и выполнение действий"</string>
- <string name="accessibility_service_action_perform_description" msgid="2718852014003170558">"Сервис может отслеживать ваше взаимодействие с приложением или датчиками устройства и давать приложениям команды от вашего имени."</string>
+ <string name="accessibility_service_action_perform_description" msgid="2718852014003170558">"Сервис может отслеживать ваше взаимодействие с приложениями и датчиками устройства и давать приложениям команды от вашего имени"</string>
<string name="accessibility_dialog_button_allow" msgid="2092558122987144530">"Разрешить"</string>
<string name="accessibility_dialog_button_deny" msgid="4129575637812472671">"Отклонить"</string>
<string name="accessibility_select_shortcut_menu_title" msgid="6002726538854613272">"Выберите, какую функцию использовать:"</string>
@@ -2342,5 +2342,5 @@
<string name="splash_screen_view_icon_description" msgid="180638751260598187">"Значок приложения"</string>
<string name="splash_screen_view_branding_description" msgid="7911129347402728216">"Образ бренда приложения"</string>
<string name="view_and_control_notification_title" msgid="4300765399209912240">"Проверьте настройки доступа"</string>
- <string name="view_and_control_notification_content" msgid="8003766498562604034">"<xliff:g id="SERVICE_NAME">%s</xliff:g> может просматривать информацию на вашем экране и управлять им. Нажмите, чтобы узнать подробности."</string>
+ <string name="view_and_control_notification_content" msgid="8003766498562604034">"<xliff:g id="SERVICE_NAME">%s</xliff:g> просматривать и контролировать то, что отображается на вашем экране. Нажмите здесь, чтобы узнать больше."</string>
</resources>
diff --git a/core/res/res/values-sk/strings.xml b/core/res/res/values-sk/strings.xml
index 806e5a0..5c9ddf7 100644
--- a/core/res/res/values-sk/strings.xml
+++ b/core/res/res/values-sk/strings.xml
@@ -2341,6 +2341,6 @@
<string name="sensor_privacy_notification_channel_label" msgid="936036783155261349">"Ochrana súkromia senzorov"</string>
<string name="splash_screen_view_icon_description" msgid="180638751260598187">"Ikona aplikácie"</string>
<string name="splash_screen_view_branding_description" msgid="7911129347402728216">"Imidž značky aplikácie"</string>
- <string name="view_and_control_notification_title" msgid="4300765399209912240">"Skontrolujte nastavenia prístupu"</string>
+ <string name="view_and_control_notification_title" msgid="4300765399209912240">"Kontrola nastavení prístupu"</string>
<string name="view_and_control_notification_content" msgid="8003766498562604034">"<xliff:g id="SERVICE_NAME">%s</xliff:g> môže zobraziť a ovládať vašu obrazovku. Skontrolujte to klepnutím."</string>
</resources>
diff --git a/core/res/res/values-sl/strings.xml b/core/res/res/values-sl/strings.xml
index b5a73ee..e98d0ae 100644
--- a/core/res/res/values-sl/strings.xml
+++ b/core/res/res/values-sl/strings.xml
@@ -1991,8 +1991,7 @@
<string name="close_button_text" msgid="10603510034455258">"Zapri"</string>
<string name="notification_messaging_title_template" msgid="772857526770251989">"<xliff:g id="CONVERSATION_TITLE">%1$s</xliff:g>: <xliff:g id="SENDER_NAME">%2$s</xliff:g>"</string>
<string name="call_notification_answer_action" msgid="5999246836247132937">"Sprejmi"</string>
- <!-- no translation found for call_notification_answer_video_action (2086030940195382249) -->
- <skip />
+ <string name="call_notification_answer_video_action" msgid="2086030940195382249">"Video"</string>
<string name="call_notification_decline_action" msgid="3700345945214000726">"Zavrni"</string>
<string name="call_notification_hang_up_action" msgid="9130720590159188131">"Prekini klic"</string>
<string name="call_notification_incoming_text" msgid="6143109825406638201">"Dohodni klic"</string>
diff --git a/core/res/res/values-sq/strings.xml b/core/res/res/values-sq/strings.xml
index 30bcbaf..30e13a4 100644
--- a/core/res/res/values-sq/strings.xml
+++ b/core/res/res/values-sq/strings.xml
@@ -1929,8 +1929,7 @@
<string name="close_button_text" msgid="10603510034455258">"Mbyll"</string>
<string name="notification_messaging_title_template" msgid="772857526770251989">"<xliff:g id="CONVERSATION_TITLE">%1$s</xliff:g>: <xliff:g id="SENDER_NAME">%2$s</xliff:g>"</string>
<string name="call_notification_answer_action" msgid="5999246836247132937">"Përgjigju"</string>
- <!-- no translation found for call_notification_answer_video_action (2086030940195382249) -->
- <skip />
+ <string name="call_notification_answer_video_action" msgid="2086030940195382249">"Video"</string>
<string name="call_notification_decline_action" msgid="3700345945214000726">"Refuzo"</string>
<string name="call_notification_hang_up_action" msgid="9130720590159188131">"Mbyll"</string>
<string name="call_notification_incoming_text" msgid="6143109825406638201">"Telefonatë hyrëse"</string>
diff --git a/core/res/res/values-sv/strings.xml b/core/res/res/values-sv/strings.xml
index b9efba0..0ddf34d 100644
--- a/core/res/res/values-sv/strings.xml
+++ b/core/res/res/values-sv/strings.xml
@@ -1854,7 +1854,7 @@
<string name="confirm_battery_saver" msgid="5247976246208245754">"OK"</string>
<string name="battery_saver_description_with_learn_more" msgid="7963058670863485450">"I batterisparläget aktiveras mörkt tema och bakgrundsaktivitet som vissa visuella effekter och funktioner som ”Hey Google” begränsas eller inaktiveras\n\n"<annotation id="url">"Läs mer"</annotation></string>
<string name="battery_saver_description" msgid="7695751399533397741">"I batterisparläget aktiveras mörkt tema och bakgrundsaktivitet som vissa visuella effekter och funktioner som ”Hey Google” begränsas eller inaktiveras."</string>
- <string name="data_saver_description" msgid="4995164271550590517">"Med databesparing kan du minska dataanvändningen genom att hindra en del appar från att skicka eller ta emot data i bakgrunden. Appar som du använder kan komma åt data, men det sker kanske inte lika ofta. Detta innebär t.ex. att bilder inte visas förrän du trycker på dem."</string>
+ <string name="data_saver_description" msgid="4995164271550590517">"Med Databesparing kan du minska dataanvändningen genom att hindra en del appar från att skicka eller ta emot data i bakgrunden. Appar som du använder kan komma åt data, men det sker kanske inte lika ofta. Detta innebär t.ex. att bilder inte visas förrän du trycker på dem."</string>
<string name="data_saver_enable_title" msgid="7080620065745260137">"Vill du aktivera Databesparing?"</string>
<string name="data_saver_enable_button" msgid="4399405762586419726">"Aktivera"</string>
<plurals name="zen_mode_duration_minutes_summary" formatted="false" msgid="2877101784123058273">
@@ -1929,8 +1929,7 @@
<string name="close_button_text" msgid="10603510034455258">"Stäng"</string>
<string name="notification_messaging_title_template" msgid="772857526770251989">"<xliff:g id="CONVERSATION_TITLE">%1$s</xliff:g>: <xliff:g id="SENDER_NAME">%2$s</xliff:g>"</string>
<string name="call_notification_answer_action" msgid="5999246836247132937">"Svara"</string>
- <!-- no translation found for call_notification_answer_video_action (2086030940195382249) -->
- <skip />
+ <string name="call_notification_answer_video_action" msgid="2086030940195382249">"Video"</string>
<string name="call_notification_decline_action" msgid="3700345945214000726">"Avvisa"</string>
<string name="call_notification_hang_up_action" msgid="9130720590159188131">"Lägg på"</string>
<string name="call_notification_incoming_text" msgid="6143109825406638201">"Inkommande samtal"</string>
diff --git a/core/res/res/values-ta/strings.xml b/core/res/res/values-ta/strings.xml
index 0b989c5..962b9a3 100644
--- a/core/res/res/values-ta/strings.xml
+++ b/core/res/res/values-ta/strings.xml
@@ -307,7 +307,7 @@
<string name="permgroupdesc_contacts" msgid="9163927941244182567">"தொடர்புகளை அணுக வேண்டும்"</string>
<string name="permgrouplab_location" msgid="1858277002233964394">"இருப்பிடம்"</string>
<string name="permgroupdesc_location" msgid="1995955142118450685">"இந்தச் சாதனத்தின் இருப்பிடத்தை அறிந்து கொள்ள"</string>
- <string name="permgrouplab_calendar" msgid="6426860926123033230">"Calendar"</string>
+ <string name="permgrouplab_calendar" msgid="6426860926123033230">"கேலெண்டர்"</string>
<string name="permgroupdesc_calendar" msgid="6762751063361489379">"கேலெண்டரை அணுகலாம்"</string>
<string name="permgrouplab_sms" msgid="795737735126084874">"SMS"</string>
<string name="permgroupdesc_sms" msgid="5726462398070064542">"SMS அனுப்பலாம், வந்த SMSகளைப் பார்க்கலாம்"</string>
@@ -1929,8 +1929,7 @@
<string name="close_button_text" msgid="10603510034455258">"மூடு"</string>
<string name="notification_messaging_title_template" msgid="772857526770251989">"<xliff:g id="CONVERSATION_TITLE">%1$s</xliff:g>: <xliff:g id="SENDER_NAME">%2$s</xliff:g>"</string>
<string name="call_notification_answer_action" msgid="5999246836247132937">"பதிலளி"</string>
- <!-- no translation found for call_notification_answer_video_action (2086030940195382249) -->
- <skip />
+ <string name="call_notification_answer_video_action" msgid="2086030940195382249">"வீடியோ"</string>
<string name="call_notification_decline_action" msgid="3700345945214000726">"நிராகரி"</string>
<string name="call_notification_hang_up_action" msgid="9130720590159188131">"துண்டி"</string>
<string name="call_notification_incoming_text" msgid="6143109825406638201">"உள்வரும் அழைப்பு"</string>
diff --git a/core/res/res/values-te/strings.xml b/core/res/res/values-te/strings.xml
index 882af55..f6d7133 100644
--- a/core/res/res/values-te/strings.xml
+++ b/core/res/res/values-te/strings.xml
@@ -1366,7 +1366,7 @@
<string name="usb_unsupported_audio_accessory_title" msgid="2335775548086533065">"అనలాగ్ ఆడియో ఉపకరణం కనుగొనబడింది"</string>
<string name="usb_unsupported_audio_accessory_message" msgid="1300168007129796621">"జోడించిన పరికరం ఈ ఫోన్కు అనుకూలంగా లేదు. మరింత తెలుసుకోవడానికి నొక్కండి."</string>
<string name="adb_active_notification_title" msgid="408390247354560331">"USB డీబగ్గింగ్ కనెక్ట్ చేయబడింది"</string>
- <string name="adb_active_notification_message" msgid="5617264033476778211">"USB డీబగ్గింగ్ను ఆఫ్ చేయడానికి నొక్కండి"</string>
+ <string name="adb_active_notification_message" msgid="5617264033476778211">"USB డీబగ్గింగ్ను ఆఫ్ చేయడానికి ట్యాప్ చేయండి"</string>
<string name="adb_active_notification_message" product="tv" msgid="6624498401272780855">"డీబగ్గింగ్ని నిలిపివేయడానికి ఎంచుకోండి."</string>
<string name="adbwifi_active_notification_title" msgid="6147343659168302473">"వైర్లెస్ డీబగ్గింగ్ కనెక్ట్ చేయబడింది"</string>
<string name="adbwifi_active_notification_message" msgid="930987922852867972">"వైర్లెస్ డీబగ్గింగ్ని ఆఫ్ చేయడానికి ట్యాప్ చేయండి"</string>
@@ -1929,8 +1929,7 @@
<string name="close_button_text" msgid="10603510034455258">"మూసివేయి"</string>
<string name="notification_messaging_title_template" msgid="772857526770251989">"<xliff:g id="CONVERSATION_TITLE">%1$s</xliff:g>: <xliff:g id="SENDER_NAME">%2$s</xliff:g>"</string>
<string name="call_notification_answer_action" msgid="5999246836247132937">"సమాధానం ఇవ్వు"</string>
- <!-- no translation found for call_notification_answer_video_action (2086030940195382249) -->
- <skip />
+ <string name="call_notification_answer_video_action" msgid="2086030940195382249">"వీడియో కాల్"</string>
<string name="call_notification_decline_action" msgid="3700345945214000726">"తిరస్కరించండి"</string>
<string name="call_notification_hang_up_action" msgid="9130720590159188131">"కాల్ ముగించు"</string>
<string name="call_notification_incoming_text" msgid="6143109825406638201">"ఇన్కమింగ్ కాల్"</string>
diff --git a/core/res/res/values-th/strings.xml b/core/res/res/values-th/strings.xml
index e0001c2..db38765 100644
--- a/core/res/res/values-th/strings.xml
+++ b/core/res/res/values-th/strings.xml
@@ -1929,8 +1929,7 @@
<string name="close_button_text" msgid="10603510034455258">"ปิด"</string>
<string name="notification_messaging_title_template" msgid="772857526770251989">"<xliff:g id="CONVERSATION_TITLE">%1$s</xliff:g>: <xliff:g id="SENDER_NAME">%2$s</xliff:g>"</string>
<string name="call_notification_answer_action" msgid="5999246836247132937">"รับสาย"</string>
- <!-- no translation found for call_notification_answer_video_action (2086030940195382249) -->
- <skip />
+ <string name="call_notification_answer_video_action" msgid="2086030940195382249">"วิดีโอ"</string>
<string name="call_notification_decline_action" msgid="3700345945214000726">"ปฏิเสธ"</string>
<string name="call_notification_hang_up_action" msgid="9130720590159188131">"วางสาย"</string>
<string name="call_notification_incoming_text" msgid="6143109825406638201">"สายเรียกเข้า"</string>
diff --git a/core/res/res/values-uk/strings.xml b/core/res/res/values-uk/strings.xml
index 9401d50..b95aa88 100644
--- a/core/res/res/values-uk/strings.xml
+++ b/core/res/res/values-uk/strings.xml
@@ -1991,8 +1991,7 @@
<string name="close_button_text" msgid="10603510034455258">"Закрити"</string>
<string name="notification_messaging_title_template" msgid="772857526770251989">"<xliff:g id="CONVERSATION_TITLE">%1$s</xliff:g>: <xliff:g id="SENDER_NAME">%2$s</xliff:g>"</string>
<string name="call_notification_answer_action" msgid="5999246836247132937">"Відповісти"</string>
- <!-- no translation found for call_notification_answer_video_action (2086030940195382249) -->
- <skip />
+ <string name="call_notification_answer_video_action" msgid="2086030940195382249">"Відео"</string>
<string name="call_notification_decline_action" msgid="3700345945214000726">"Відхилити"</string>
<string name="call_notification_hang_up_action" msgid="9130720590159188131">"Завершити"</string>
<string name="call_notification_incoming_text" msgid="6143109825406638201">"Вхідний виклик"</string>
diff --git a/core/res/res/values-uz/strings.xml b/core/res/res/values-uz/strings.xml
index 3b135ec..012f31e 100644
--- a/core/res/res/values-uz/strings.xml
+++ b/core/res/res/values-uz/strings.xml
@@ -1929,8 +1929,7 @@
<string name="close_button_text" msgid="10603510034455258">"Yopish"</string>
<string name="notification_messaging_title_template" msgid="772857526770251989">"<xliff:g id="CONVERSATION_TITLE">%1$s</xliff:g>: <xliff:g id="SENDER_NAME">%2$s</xliff:g>"</string>
<string name="call_notification_answer_action" msgid="5999246836247132937">"Javob berish"</string>
- <!-- no translation found for call_notification_answer_video_action (2086030940195382249) -->
- <skip />
+ <string name="call_notification_answer_video_action" msgid="2086030940195382249">"Video"</string>
<string name="call_notification_decline_action" msgid="3700345945214000726">"Rad etish"</string>
<string name="call_notification_hang_up_action" msgid="9130720590159188131">"Tugatish"</string>
<string name="call_notification_incoming_text" msgid="6143109825406638201">"Kiruvchi chaqiruv"</string>
@@ -2274,6 +2273,6 @@
<string name="sensor_privacy_notification_channel_label" msgid="936036783155261349">"Sensorlar maxfiyligi"</string>
<string name="splash_screen_view_icon_description" msgid="180638751260598187">"Ilova belgisi"</string>
<string name="splash_screen_view_branding_description" msgid="7911129347402728216">"Ilova brendining rasmi"</string>
- <string name="view_and_control_notification_title" msgid="4300765399209912240">"Kirish sozlamalarini tekshiring"</string>
+ <string name="view_and_control_notification_title" msgid="4300765399209912240">"Ruxsat sozlamalarini tekshiring"</string>
<string name="view_and_control_notification_content" msgid="8003766498562604034">"<xliff:g id="SERVICE_NAME">%s</xliff:g> ekraningizni koʻrishi va boshqarishi mumkin. Tekshirish uchun bosing."</string>
</resources>
diff --git a/core/res/res/values-vi/strings.xml b/core/res/res/values-vi/strings.xml
index 77d81d8..7a949b7 100644
--- a/core/res/res/values-vi/strings.xml
+++ b/core/res/res/values-vi/strings.xml
@@ -2262,7 +2262,7 @@
<string name="config_pdp_reject_user_authentication_failed" msgid="4531693033885744689"></string>
<string name="config_pdp_reject_service_not_subscribed" msgid="8190338397128671588"></string>
<string name="config_pdp_reject_multi_conn_to_same_pdn_not_allowed" msgid="6024904218067254186"></string>
- <string name="window_magnification_prompt_title" msgid="2876703640772778215">"Chế độ cài đặt phóng to mới"</string>
+ <string name="window_magnification_prompt_title" msgid="2876703640772778215">"Chế độ phóng to mới"</string>
<string name="window_magnification_prompt_content" msgid="8159173903032344891">"Giờ đây, bạn có thể phóng to một phần màn hình"</string>
<string name="turn_on_magnification_settings_action" msgid="8521433346684847700">"Bật trong phần Cài đặt"</string>
<string name="dismiss_action" msgid="1728820550388704784">"Đóng"</string>
@@ -2273,6 +2273,6 @@
<string name="sensor_privacy_notification_channel_label" msgid="936036783155261349">"Quyền riêng tư khi sử dụng cảm biến"</string>
<string name="splash_screen_view_icon_description" msgid="180638751260598187">"Biểu tượng ứng dụng"</string>
<string name="splash_screen_view_branding_description" msgid="7911129347402728216">"Hình ảnh thương hiệu của ứng dụng"</string>
- <string name="view_and_control_notification_title" msgid="4300765399209912240">"Kiểm tra chế độ cài đặt quyền truy cập"</string>
+ <string name="view_and_control_notification_title" msgid="4300765399209912240">"Hãy kiểm tra chế độ cài đặt quyền truy cập"</string>
<string name="view_and_control_notification_content" msgid="8003766498562604034">"<xliff:g id="SERVICE_NAME">%s</xliff:g> có thể xem và điều khiển màn hình của bạn. Nhấn để xem lại."</string>
</resources>
diff --git a/core/res/res/values-zh-rCN/strings.xml b/core/res/res/values-zh-rCN/strings.xml
index 1d4ee44..d7f3165 100644
--- a/core/res/res/values-zh-rCN/strings.xml
+++ b/core/res/res/values-zh-rCN/strings.xml
@@ -1929,8 +1929,7 @@
<string name="close_button_text" msgid="10603510034455258">"关闭"</string>
<string name="notification_messaging_title_template" msgid="772857526770251989">"<xliff:g id="CONVERSATION_TITLE">%1$s</xliff:g>:<xliff:g id="SENDER_NAME">%2$s</xliff:g>"</string>
<string name="call_notification_answer_action" msgid="5999246836247132937">"接听"</string>
- <!-- no translation found for call_notification_answer_video_action (2086030940195382249) -->
- <skip />
+ <string name="call_notification_answer_video_action" msgid="2086030940195382249">"视频通话"</string>
<string name="call_notification_decline_action" msgid="3700345945214000726">"拒接"</string>
<string name="call_notification_hang_up_action" msgid="9130720590159188131">"挂断"</string>
<string name="call_notification_incoming_text" msgid="6143109825406638201">"来电"</string>
diff --git a/core/res/res/values-zh-rHK/strings.xml b/core/res/res/values-zh-rHK/strings.xml
index 9c6b851..858c179 100644
--- a/core/res/res/values-zh-rHK/strings.xml
+++ b/core/res/res/values-zh-rHK/strings.xml
@@ -311,7 +311,7 @@
<string name="permgroupdesc_calendar" msgid="6762751063361489379">"存取您的日曆"</string>
<string name="permgrouplab_sms" msgid="795737735126084874">"短訊"</string>
<string name="permgroupdesc_sms" msgid="5726462398070064542">"傳送和查看短訊"</string>
- <string name="permgrouplab_storage" msgid="1938416135375282333">"檔案及媒體"</string>
+ <string name="permgrouplab_storage" msgid="1938416135375282333">"檔案和媒體"</string>
<string name="permgroupdesc_storage" msgid="6351503740613026600">"存取裝置上的相片、媒體和檔案"</string>
<string name="permgrouplab_microphone" msgid="2480597427667420076">"麥克風"</string>
<string name="permgroupdesc_microphone" msgid="1047786732792487722">"錄音"</string>
diff --git a/core/res/res/values-zh-rTW/strings.xml b/core/res/res/values-zh-rTW/strings.xml
index 60cfa7e..8770db7 100644
--- a/core/res/res/values-zh-rTW/strings.xml
+++ b/core/res/res/values-zh-rTW/strings.xml
@@ -315,7 +315,7 @@
<string name="permgroupdesc_storage" msgid="6351503740613026600">"存取裝置中的相片、媒體和檔案"</string>
<string name="permgrouplab_microphone" msgid="2480597427667420076">"麥克風"</string>
<string name="permgroupdesc_microphone" msgid="1047786732792487722">"錄音"</string>
- <string name="permgrouplab_activityRecognition" msgid="3324466667921775766">"體能活動記錄"</string>
+ <string name="permgrouplab_activityRecognition" msgid="3324466667921775766">"體能活動"</string>
<string name="permgroupdesc_activityRecognition" msgid="4725624819457670704">"存取你的體能活動記錄"</string>
<string name="permgrouplab_camera" msgid="9090413408963547706">"相機"</string>
<string name="permgroupdesc_camera" msgid="7585150538459320326">"拍照及錄製影片"</string>
@@ -1929,8 +1929,7 @@
<string name="close_button_text" msgid="10603510034455258">"關閉"</string>
<string name="notification_messaging_title_template" msgid="772857526770251989">"<xliff:g id="CONVERSATION_TITLE">%1$s</xliff:g>:<xliff:g id="SENDER_NAME">%2$s</xliff:g>"</string>
<string name="call_notification_answer_action" msgid="5999246836247132937">"接聽"</string>
- <!-- no translation found for call_notification_answer_video_action (2086030940195382249) -->
- <skip />
+ <string name="call_notification_answer_video_action" msgid="2086030940195382249">"視訊"</string>
<string name="call_notification_decline_action" msgid="3700345945214000726">"拒接"</string>
<string name="call_notification_hang_up_action" msgid="9130720590159188131">"掛斷"</string>
<string name="call_notification_incoming_text" msgid="6143109825406638201">"來電"</string>
diff --git a/core/res/res/values/attrs.xml b/core/res/res/values/attrs.xml
index 1d532fc..f097009 100644
--- a/core/res/res/values/attrs.xml
+++ b/core/res/res/values/attrs.xml
@@ -1176,6 +1176,9 @@
<!-- Alternative color applied to surfaces on top of colorBackground. @hide -->
<attr name="colorSurfaceHeader" format="color" />
+ <!-- Color applied to effects. -->
+ <attr name="effectColor" format="color" />
+
<!-- The type of the edge effect. The default is glow. -->
<attr name="edgeEffectType">
<!-- Use a colored glow at the edge. -->
@@ -6540,13 +6543,8 @@
<!-- The radius of the ripple when fully expanded. By default, the
radius is computed based on the size of the ripple's container. -->
<attr name="radius" />
- <!-- The style of the ripple drawable is solid by default -->
- <attr name="rippleStyle">
- <!-- Solid is the default style -->
- <enum name="solid" value="0" />
- <!-- Patterned style-->
- <enum name="patterned" value="1" />
- </attr>
+ <!-- Secondary color of the ripple effect. -->
+ <attr name="effectColor" />
</declare-styleable>
<declare-styleable name="ScaleDrawable">
diff --git a/core/res/res/values/colors.xml b/core/res/res/values/colors.xml
index 3ad20c6..0213c60 100644
--- a/core/res/res/values/colors.xml
+++ b/core/res/res/values/colors.xml
@@ -231,8 +231,7 @@
<color name="chooser_gradient_background">@color/loading_gradient_background_color_light</color>
<color name="chooser_gradient_highlight">@color/loading_gradient_highlight_color_light</color>
- <color name="GM2_grey_700">#5F6368</color>
- <color name="GM2_grey_800">#3C4043</color>
+ <color name="GM2_grey_800">#ff3C4043</color>
<!-- Resolver/Chooser -->
<color name="resolver_text_color_secondary_dark">#ffC4C6C6</color>
diff --git a/core/res/res/values/config.xml b/core/res/res/values/config.xml
index f24d663..c2a7e07 100644
--- a/core/res/res/values/config.xml
+++ b/core/res/res/values/config.xml
@@ -59,6 +59,7 @@
<item><xliff:g id="id">@string/status_bar_mobile</xliff:g></item>
<item><xliff:g id="id">@string/status_bar_airplane</xliff:g></item>
<item><xliff:g id="id">@string/status_bar_no_calling</xliff:g></item>
+ <item><xliff:g id="id">@string/status_bar_call_strength</xliff:g></item>
<item><xliff:g id="id">@string/status_bar_battery</xliff:g></item>
<item><xliff:g id="id">@string/status_bar_sensors_off</xliff:g></item>
</string-array>
@@ -96,6 +97,7 @@
<string translatable="false" name="status_bar_camera">camera</string>
<string translatable="false" name="status_bar_airplane">airplane</string>
<string translatable="false" name="status_bar_no_calling">no_calling</string>
+ <string translatable="false" name="status_bar_call_strength">call_strength</string>
<string translatable="false" name="status_bar_sensors_off">sensors_off</string>
<string translatable="false" name="status_bar_screen_record">screen_record</string>
@@ -1949,6 +1951,8 @@
<string name="config_systemTelevisionNotificationHandler" translatable="false"></string>
<!-- The name of the package that will hold the system activity recognizer role. -->
<string name="config_systemActivityRecognizer" translatable="false"></string>
+ <!-- The name of the package that will hold the system ui role -->
+ <string name="config_systemUi" translatable="false">com.android.systemui</string>
<!-- The name of the package that will be allowed to change its components' label/icon. -->
<string name="config_overrideComponentUiPackage" translatable="false">com.android.stk</string>
diff --git a/core/res/res/values/dimens.xml b/core/res/res/values/dimens.xml
index 062b080..43c0ec9 100644
--- a/core/res/res/values/dimens.xml
+++ b/core/res/res/values/dimens.xml
@@ -242,6 +242,9 @@
this = conversation_content_start (80dp) - button inset (4dp) - action padding (12dp) -->
<dimen name="call_notification_collapsible_indent">64dp</dimen>
+ <!-- The minimum width of the system actions added to the CallStyle notifications. -->
+ <dimen name="call_notification_system_action_min_width">100dp</dimen>
+
<!-- The size of icons for visual actions in the notification_material_action_list -->
<dimen name="notification_actions_icon_size">56dp</dimen>
@@ -570,12 +573,6 @@
<!-- Width of the outline stroke used by the accessibility focus rectangle -->
<dimen name="accessibility_focus_highlight_stroke_width">4dp</dimen>
- <!-- The size of the Accessibility icon -->
- <dimen name="accessibility_icon_size">32dp</dimen>
-
- <!-- The size of the Accessibility icon foreground part -->
- <dimen name="accessibility_icon_foreground_size">18dp</dimen>
-
<!-- Margin around the various security views -->
<dimen name="keyguard_muliuser_selector_margin">8dp</dimen>
diff --git a/core/res/res/values/public.xml b/core/res/res/values/public.xml
index f6a67d2..c716000 100644
--- a/core/res/res/values/public.xml
+++ b/core/res/res/values/public.xml
@@ -3099,6 +3099,7 @@
<!-- @hide @SystemApi -->
<public name="throttleDurationMillis" />
<public name="showInInputMethodPicker" />
+ <public name="effectColor" />
</staging-public-group>
<staging-public-group type="drawable" first-id="0x010800b5">
@@ -3227,6 +3228,8 @@
<public name="config_systemActivityRecognizer" />
<!-- @hide @SystemApi -->
<public name="config_systemCompanionDeviceProvider"/>
+ <!-- @hide @SystemApi -->
+ <public name="config_systemUi" />
</staging-public-group>
<staging-public-group type="id" first-id="0x01020055">
diff --git a/core/res/res/values/symbols.xml b/core/res/res/values/symbols.xml
index 60383be..cfde7a1 100644
--- a/core/res/res/values/symbols.xml
+++ b/core/res/res/values/symbols.xml
@@ -2979,6 +2979,7 @@
<java-symbol type="string" name="status_bar_clock" />
<java-symbol type="string" name="status_bar_airplane" />
<java-symbol type="string" name="status_bar_no_calling" />
+ <java-symbol type="string" name="status_bar_call_strength" />
<java-symbol type="string" name="status_bar_mobile" />
<java-symbol type="string" name="status_bar_ethernet" />
<java-symbol type="string" name="status_bar_vpn" />
@@ -3126,6 +3127,7 @@
<java-symbol type="color" name="call_notification_decline_color"/>
<java-symbol type="color" name="call_notification_answer_color"/>
<java-symbol type="dimen" name="call_notification_collapsible_indent"/>
+ <java-symbol type="dimen" name="call_notification_system_action_min_width"/>
<java-symbol type="drawable" name="ic_call_answer" />
<java-symbol type="drawable" name="ic_call_answer_video" />
<java-symbol type="drawable" name="ic_call_decline" />
@@ -3389,7 +3391,6 @@
<java-symbol type="drawable" name="ic_accessibility_color_inversion" />
<java-symbol type="drawable" name="ic_accessibility_color_correction" />
<java-symbol type="drawable" name="ic_accessibility_magnification" />
- <java-symbol type="drawable" name="ic_accessibility_reduce_bright_colors" />
<java-symbol type="string" name="reduce_bright_colors_feature_name" />
diff --git a/core/res/res/values/themes_device_defaults.xml b/core/res/res/values/themes_device_defaults.xml
index 1d4beae..41bedb2 100644
--- a/core/res/res/values/themes_device_defaults.xml
+++ b/core/res/res/values/themes_device_defaults.xml
@@ -234,9 +234,6 @@
<item name="textColorTertiary">@color/text_color_tertiary_device_default_dark</item>
<item name="colorForeground">@color/foreground_device_default_dark</item>
<item name="colorForegroundInverse">@color/foreground_device_default_light</item>
-
- <!-- Ripple style-->
- <item name="rippleStyle">solid</item>
</style>
<style name="Theme.DeviceDefault" parent="Theme.DeviceDefaultBase" />
diff --git a/core/tests/coretests/src/android/app/servertransaction/TransactionParcelTests.java b/core/tests/coretests/src/android/app/servertransaction/TransactionParcelTests.java
index 4dbdc60..281ce2b 100644
--- a/core/tests/coretests/src/android/app/servertransaction/TransactionParcelTests.java
+++ b/core/tests/coretests/src/android/app/servertransaction/TransactionParcelTests.java
@@ -693,7 +693,7 @@
@Override
public void updateUiTranslationState(IBinder activityToken, int state,
- TranslationSpec sourceSpec, TranslationSpec destSpec, List<AutofillId> viewIds) {
+ TranslationSpec sourceSpec, TranslationSpec targetSpec, List<AutofillId> viewIds) {
}
}
diff --git a/core/tests/coretests/src/android/view/ViewGroupScrollCaptureTest.java b/core/tests/coretests/src/android/view/ViewGroupScrollCaptureTest.java
index 2833ea3..25608c3 100644
--- a/core/tests/coretests/src/android/view/ViewGroupScrollCaptureTest.java
+++ b/core/tests/coretests/src/android/view/ViewGroupScrollCaptureTest.java
@@ -33,7 +33,6 @@
import android.platform.test.annotations.Presubmit;
import androidx.annotation.NonNull;
-import androidx.test.filters.FlakyTest;
import androidx.test.filters.MediumTest;
import androidx.test.filters.SmallTest;
@@ -92,6 +91,18 @@
viewGroup.getScrollCaptureHint());
}
+ /** Make sure the hint flags are saved and loaded correctly. */
+ @Test
+ public void testSetScrollCaptureHint_mutuallyExclusiveFlags() throws Exception {
+ final Context context = getInstrumentation().getContext();
+ final MockViewGroup viewGroup = new MockViewGroup(context);
+
+ viewGroup.setScrollCaptureHint(
+ View.SCROLL_CAPTURE_HINT_INCLUDE | View.SCROLL_CAPTURE_HINT_EXCLUDE);
+ assertEquals("Mutually exclusive flags were not resolved correctly",
+ ViewGroup.SCROLL_CAPTURE_HINT_EXCLUDE, viewGroup.getScrollCaptureHint());
+ }
+
/**
* Ensure a ViewGroup with 'scrollCaptureHint=auto', but no ScrollCaptureCallback set dispatches
* correctly. Verifies that the framework helper is called. Verifies a that non-null callback
@@ -343,6 +354,54 @@
target.getContainingView().getScrollCaptureHint());
}
+ /**
+ * Tests the effect of padding on scroll capture search dispatch.
+ * <p>
+ * Verifies computation of child visible bounds with padding.
+ */
+ @MediumTest
+ @Test
+ public void testOnScrollCaptureSearch_withPadding() {
+ final Context context = getInstrumentation().getContext();
+
+ Rect windowBounds = new Rect(0, 0, 200, 200);
+ Point windowOffset = new Point(0, 0);
+
+ final MockViewGroup parent = new MockViewGroup(context, 0, 0, 200, 200);
+ parent.setPadding(25, 50, 25, 50);
+ parent.setClipToPadding(true); // (default)
+
+ final MockView view1 = new MockView(context, 0, -100, 200, 100);
+ parent.addView(view1);
+
+ final MockView view2 = new MockView(context, 0, 0, 200, 200);
+ parent.addView(view2);
+
+ final MockViewGroup view3 = new MockViewGroup(context, 0, 100, 200, 300);
+ parent.addView(view3);
+ view3.setPadding(25, 25, 25, 25);
+ view3.setClipToPadding(true);
+
+ // Where targets are added
+ final ScrollCaptureSearchResults results = new ScrollCaptureSearchResults(DIRECT_EXECUTOR);
+
+ // Dispatch to the ViewGroup
+ parent.dispatchScrollCaptureSearch(windowBounds, windowOffset, results::addTarget);
+
+ // Verify padding (with clipToPadding) is subtracted from visibleBounds
+ parent.assertOnScrollCaptureSearchLastArgs(new Rect(25, 50, 175, 150), new Point(0, 0));
+
+ view1.assertOnScrollCaptureSearchLastArgs(
+ new Rect(25, 150, 175, 200), new Point(0, -100));
+
+ view2.assertOnScrollCaptureSearchLastArgs(
+ new Rect(25, 50, 175, 150), new Point(0, 0));
+
+ // Account for padding on view3 as well (top == 25px)
+ view3.assertOnScrollCaptureSearchLastArgs(
+ new Rect(25, 25, 175, 50), new Point(0, 100));
+ }
+
public static final class MockView extends View {
private ScrollCaptureCallback mInternalCallback;
@@ -350,6 +409,8 @@
private Rect mDispatchScrollCaptureSearchLastLocalVisibleRect;
private Point mDispatchScrollCaptureSearchLastWindowOffset;
private int mCreateScrollCaptureCallbackInternalCount;
+ private Rect mOnScrollCaptureSearchLastLocalVisibleRect;
+ private Point mOnScrollCaptureSearchLastWindowOffset;
MockView(Context context) {
this(context, /* left */ 0, /* top */0, /* right */ 0, /* bottom */0);
@@ -395,6 +456,21 @@
}
@Override
+ public void onScrollCaptureSearch(Rect localVisibleRect, Point windowOffset,
+ Consumer<ScrollCaptureTarget> targets) {
+ super.onScrollCaptureSearch(localVisibleRect, windowOffset, targets);
+ mOnScrollCaptureSearchLastLocalVisibleRect = new Rect(localVisibleRect);
+ mOnScrollCaptureSearchLastWindowOffset = new Point(windowOffset);
+ }
+
+ void assertOnScrollCaptureSearchLastArgs(Rect localVisibleRect, Point windowOffset) {
+ assertEquals("arg localVisibleRect was incorrect.",
+ localVisibleRect, mOnScrollCaptureSearchLastLocalVisibleRect);
+ assertEquals("arg windowOffset was incorrect.",
+ windowOffset, mOnScrollCaptureSearchLastWindowOffset);
+ }
+
+ @Override
public void dispatchScrollCaptureSearch(Rect localVisibleRect, Point windowOffset,
Consumer<ScrollCaptureTarget> results) {
mDispatchScrollCaptureSearchNumCalls++;
@@ -437,6 +513,8 @@
public static final class MockViewGroup extends ViewGroup {
private ScrollCaptureCallback mInternalCallback;
+ private Rect mOnScrollCaptureSearchLastLocalVisibleRect;
+ private Point mOnScrollCaptureSearchLastWindowOffset;
MockViewGroup(Context context) {
this(context, /* left */ 0, /* top */0, /* right */ 0, /* bottom */0);
@@ -465,6 +543,21 @@
}
@Override
+ public void onScrollCaptureSearch(Rect localVisibleRect, Point windowOffset,
+ Consumer<ScrollCaptureTarget> targets) {
+ super.onScrollCaptureSearch(localVisibleRect, windowOffset, targets);
+ mOnScrollCaptureSearchLastLocalVisibleRect = new Rect(localVisibleRect);
+ mOnScrollCaptureSearchLastWindowOffset = new Point(windowOffset);
+ }
+
+ void assertOnScrollCaptureSearchLastArgs(Rect localVisibleRect, Point windowOffset) {
+ assertEquals("arg localVisibleRect was incorrect.",
+ localVisibleRect, mOnScrollCaptureSearchLastLocalVisibleRect);
+ assertEquals("arg windowOffset was incorrect.",
+ windowOffset, mOnScrollCaptureSearchLastWindowOffset);
+ }
+
+ @Override
protected void onLayout(boolean changed, int l, int t, int r, int b) {
// We don't layout this view.
}
diff --git a/core/tests/uwbtests/src/android/uwb/RangingManagerTest.java b/core/tests/uwbtests/src/android/uwb/RangingManagerTest.java
index 5de6d42..24267e4 100644
--- a/core/tests/uwbtests/src/android/uwb/RangingManagerTest.java
+++ b/core/tests/uwbtests/src/android/uwb/RangingManagerTest.java
@@ -57,7 +57,8 @@
RangingManager rangingManager = new RangingManager(adapter);
RangingSession.Callback callback = mock(RangingSession.Callback.class);
rangingManager.openSession(ATTRIBUTION_SOURCE, PARAMS, EXECUTOR, callback);
- verify(adapter, times(1)).openRanging(any(), eq(rangingManager), eq(PARAMS));
+ verify(adapter, times(1)).openRanging(
+ eq(ATTRIBUTION_SOURCE), any(), any(), any());
}
@Test
@@ -80,11 +81,13 @@
RangingManager rangingManager = new RangingManager(adapter);
rangingManager.openSession(ATTRIBUTION_SOURCE, PARAMS, EXECUTOR, callback1);
- verify(adapter, times(1)).openRanging(sessionHandleCaptor.capture(), any(), any());
+ verify(adapter, times(1)).openRanging(
+ eq(ATTRIBUTION_SOURCE), sessionHandleCaptor.capture(), any(), any());
SessionHandle sessionHandle1 = sessionHandleCaptor.getValue();
rangingManager.openSession(ATTRIBUTION_SOURCE, PARAMS, EXECUTOR, callback2);
- verify(adapter, times(2)).openRanging(sessionHandleCaptor.capture(), any(), any());
+ verify(adapter, times(2)).openRanging(
+ eq(ATTRIBUTION_SOURCE), sessionHandleCaptor.capture(), any(), any());
SessionHandle sessionHandle2 = sessionHandleCaptor.getValue();
rangingManager.onRangingOpened(sessionHandle1);
@@ -106,7 +109,8 @@
ArgumentCaptor.forClass(SessionHandle.class);
rangingManager.openSession(ATTRIBUTION_SOURCE, PARAMS, EXECUTOR, callback);
- verify(adapter, times(1)).openRanging(sessionHandleCaptor.capture(), any(), any());
+ verify(adapter, times(1)).openRanging(
+ eq(ATTRIBUTION_SOURCE), sessionHandleCaptor.capture(), any(), any());
SessionHandle handle = sessionHandleCaptor.getValue();
rangingManager.onRangingOpened(handle);
@@ -151,11 +155,13 @@
ArgumentCaptor.forClass(SessionHandle.class);
rangingManager.openSession(ATTRIBUTION_SOURCE, PARAMS, EXECUTOR, callback1);
- verify(adapter, times(1)).openRanging(sessionHandleCaptor.capture(), any(), any());
+ verify(adapter, times(1)).openRanging(
+ eq(ATTRIBUTION_SOURCE), sessionHandleCaptor.capture(), any(), any());
SessionHandle sessionHandle1 = sessionHandleCaptor.getValue();
rangingManager.openSession(ATTRIBUTION_SOURCE, PARAMS, EXECUTOR, callback2);
- verify(adapter, times(2)).openRanging(sessionHandleCaptor.capture(), any(), any());
+ verify(adapter, times(2)).openRanging(
+ eq(ATTRIBUTION_SOURCE), sessionHandleCaptor.capture(), any(), any());
SessionHandle sessionHandle2 = sessionHandleCaptor.getValue();
rangingManager.onRangingClosed(sessionHandle1, REASON, PARAMS);
@@ -178,12 +184,14 @@
RangingManager rangingManager = new RangingManager(adapter);
rangingManager.openSession(ATTRIBUTION_SOURCE, PARAMS, EXECUTOR, callback1);
- verify(adapter, times(1)).openRanging(sessionHandleCaptor.capture(), any(), any());
+ verify(adapter, times(1)).openRanging(
+ eq(ATTRIBUTION_SOURCE), sessionHandleCaptor.capture(), any(), any());
SessionHandle sessionHandle1 = sessionHandleCaptor.getValue();
rangingManager.onRangingStarted(sessionHandle1, PARAMS);
rangingManager.openSession(ATTRIBUTION_SOURCE, PARAMS, EXECUTOR, callback2);
- verify(adapter, times(2)).openRanging(sessionHandleCaptor.capture(), any(), any());
+ verify(adapter, times(2)).openRanging(
+ eq(ATTRIBUTION_SOURCE), sessionHandleCaptor.capture(), any(), any());
SessionHandle sessionHandle2 = sessionHandleCaptor.getValue();
rangingManager.onRangingStarted(sessionHandle2, PARAMS);
@@ -230,7 +238,8 @@
ArgumentCaptor.forClass(SessionHandle.class);
rangingManager.openSession(ATTRIBUTION_SOURCE, PARAMS, EXECUTOR, callback);
- verify(adapter, times(1)).openRanging(sessionHandleCaptor.capture(), any(), any());
+ verify(adapter, times(1)).openRanging(
+ eq(ATTRIBUTION_SOURCE), sessionHandleCaptor.capture(), any(), any());
SessionHandle handle = sessionHandleCaptor.getValue();
rangingManager.onRangingOpenFailed(handle, reasonIn, PARAMS);
@@ -238,7 +247,8 @@
// Open a new session
rangingManager.openSession(ATTRIBUTION_SOURCE, PARAMS, EXECUTOR, callback);
- verify(adapter, times(2)).openRanging(sessionHandleCaptor.capture(), any(), any());
+ verify(adapter, times(2)).openRanging(
+ eq(ATTRIBUTION_SOURCE), sessionHandleCaptor.capture(), any(), any());
handle = sessionHandleCaptor.getValue();
rangingManager.onRangingOpened(handle);
diff --git a/data/etc/privapp-permissions-platform.xml b/data/etc/privapp-permissions-platform.xml
index 9f1d943..2d5279f 100644
--- a/data/etc/privapp-permissions-platform.xml
+++ b/data/etc/privapp-permissions-platform.xml
@@ -458,6 +458,7 @@
<permission name="android.permission.ACCESS_TV_TUNER" />
<permission name="android.permission.TUNER_RESOURCE_ACCESS" />
<!-- Permissions required for CTS test - TVInputManagerTest -->
+ <permission name="android.permission.ACCESS_TUNED_INFO" />
<permission name="android.permission.TV_INPUT_HARDWARE" />
<!-- Permission required for CTS test - PrivilegedLocationPermissionTest -->
<permission name="android.permission.LOCATION_HARDWARE" />
@@ -508,7 +509,7 @@
<!-- Permission required for CTS test - CtsAlarmManagerTestCases -->
<permission name="android.permission.SCHEDULE_PRIORITIZED_ALARM" />
<!-- Permission required for CTS test - SystemMediaRouter2Test -->
- <permission name="android.permission.MODIFY_AUDIO_ROUTING"/>
+ <permission name="android.permission.MEDIA_CONTENT_CONTROL"/>
<!-- Permission required for CTS test - CtsPermission5TestCases -->
<permission name="android.permission.RENOUNCE_PERMISSIONS" />
<permission name="android.permission.WRITE_EMBEDDED_SUBSCRIPTIONS" />
@@ -519,7 +520,9 @@
<permission name="android.permission.CONFIGURE_DISPLAY_BRIGHTNESS" />
<permission name="android.permission.SET_VOLUME_KEY_LONG_PRESS_LISTENER" />
<permission name="android.permission.SET_MEDIA_KEY_LISTENER" />
- <permission name="android.permission.SET_VOLUME_KEY_LONG_PRESS_LISTENER" />
+ <permission name="android.permission.CONNECTIVITY_USE_RESTRICTED_NETWORKS" />
+ <!-- Permission required for CTS test - CtsAlarmManagerTestCases -->
+ <permission name="android.permission.UPDATE_DEVICE_STATS" />
</privapp-permissions>
<privapp-permissions package="com.android.statementservice">
diff --git a/data/etc/services.core.protolog.json b/data/etc/services.core.protolog.json
index 81f1021..7ed791d 100644
--- a/data/etc/services.core.protolog.json
+++ b/data/etc/services.core.protolog.json
@@ -1735,6 +1735,12 @@
"group": "WM_DEBUG_IME",
"at": "com\/android\/server\/wm\/InsetsSourceProvider.java"
},
+ "-108977760": {
+ "message": "Sandbox max bounds for uid %s to bounds %s. config to never sandbox = %s, config to always sandbox = %s, letterboxing from mismatch with parent bounds = %s, has mCompatDisplayInsets = %s, should create compatDisplayInsets = %s",
+ "level": "DEBUG",
+ "group": "WM_DEBUG_CONFIGURATION",
+ "at": "com\/android\/server\/wm\/ActivityRecord.java"
+ },
"-106400104": {
"message": "Preload recents with %s",
"level": "DEBUG",
@@ -2887,12 +2893,6 @@
"group": "WM_DEBUG_BOOT",
"at": "com\/android\/server\/wm\/WindowManagerService.java"
},
- "1237719089": {
- "message": "Sandbox max bounds for uid %s to bounds %s. letterboxing from mismatch with parent bounds = %s, has mCompatDisplayInsets = %s, should create compatDisplayInsets = %s",
- "level": "DEBUG",
- "group": "WM_DEBUG_CONFIGURATION",
- "at": "com\/android\/server\/wm\/ActivityRecord.java"
- },
"1246035185": {
"message": "stopFreezingDisplayLocked: Returning waitingForConfig=%b, waitingForRemoteRotation=%b, mAppsFreezingScreen=%d, mWindowsFreezingScreen=%d, mClientFreezingScreen=%b, mOpeningApps.size()=%d",
"level": "DEBUG",
diff --git a/graphics/java/android/graphics/drawable/RippleAnimationSession.java b/graphics/java/android/graphics/drawable/RippleAnimationSession.java
index 1cd4cf1..60f73b5 100644
--- a/graphics/java/android/graphics/drawable/RippleAnimationSession.java
+++ b/graphics/java/android/graphics/drawable/RippleAnimationSession.java
@@ -39,7 +39,7 @@
public final class RippleAnimationSession {
private static final String TAG = "RippleAnimationSession";
private static final int ENTER_ANIM_DURATION = 450;
- private static final int EXIT_ANIM_DURATION = 300;
+ private static final int EXIT_ANIM_DURATION = 225;
private static final long NOISE_ANIMATION_DURATION = 7000;
private static final long MAX_NOISE_PHASE = NOISE_ANIMATION_DURATION / 120;
private static final TimeInterpolator LINEAR_INTERPOLATOR = new LinearInterpolator();
diff --git a/graphics/java/android/graphics/drawable/RippleDrawable.java b/graphics/java/android/graphics/drawable/RippleDrawable.java
index c972a24..29fa09d 100644
--- a/graphics/java/android/graphics/drawable/RippleDrawable.java
+++ b/graphics/java/android/graphics/drawable/RippleDrawable.java
@@ -150,6 +150,7 @@
/** The maximum number of ripples supported. */
private static final int MAX_RIPPLES = 10;
private static final LinearInterpolator LINEAR_INTERPOLATOR = new LinearInterpolator();
+ private static final int DEFAULT_EFFECT_COLOR = 0x80ffffff;
/** Temporary flag for teamfood. **/
private static final boolean FORCE_PATTERNED_STYLE = true;
@@ -465,12 +466,37 @@
*
* @attr ref android.R.styleable#RippleDrawable_color
*/
- public void setColor(ColorStateList color) {
+ public void setColor(@NonNull ColorStateList color) {
+ if (color == null) {
+ throw new IllegalArgumentException("color cannot be null");
+ }
mState.mColor = color;
invalidateSelf(false);
}
/**
+ * Sets the ripple effect color.
+ *
+ * @param color Ripple color as a color state list.
+ *
+ * @attr ref android.R.styleable#RippleDrawable_effectColor
+ */
+ public void setEffectColor(@NonNull ColorStateList color) {
+ if (color == null) {
+ throw new IllegalArgumentException("color cannot be null");
+ }
+ mState.mEffectColor = color;
+ invalidateSelf(false);
+ }
+
+ /**
+ * @return The ripple effect color as a color state list.
+ */
+ public @NonNull ColorStateList getEffectColor() {
+ return mState.mEffectColor;
+ }
+
+ /**
* Sets the radius in pixels of the fully expanded ripple.
*
* @param radius ripple radius in pixels, or {@link #RADIUS_AUTO} to
@@ -561,13 +587,14 @@
mState.mColor = color;
}
+ final ColorStateList effectColor =
+ a.getColorStateList(R.styleable.RippleDrawable_effectColor);
+ if (effectColor != null) {
+ mState.mEffectColor = effectColor;
+ }
+
mState.mMaxRadius = a.getDimensionPixelSize(
R.styleable.RippleDrawable_radius, mState.mMaxRadius);
-
- if (!FORCE_PATTERNED_STYLE) {
- mState.mRippleStyle = a.getInteger(R.styleable.RippleDrawable_rippleStyle,
- mState.mRippleStyle);
- }
}
private void verifyRequiredAttributes(@NonNull TypedArray a) throws XmlPullParserException {
@@ -933,10 +960,11 @@
float radius = getComputedRadius();
RippleAnimationSession.AnimationProperties<Float, Paint> properties;
RippleShader shader = new RippleShader();
- int color = mMaskColorFilter == null
+ final int color = mMaskColorFilter == null
? mState.mColor.getColorForState(getState(), Color.BLACK)
: mMaskColorFilter.getColor();
- shader.setColor(color);
+ final int effectColor = mState.mEffectColor.getColorForState(getState(), Color.MAGENTA);
+ shader.setColor(color, effectColor);
shader.setOrigin(cx, cy);
shader.setTouch(x, y);
shader.setResolution(w, h, mState.mDensity);
@@ -1257,33 +1285,6 @@
return this;
}
- /**
- * Sets the visual style of the ripple.
- *
- * @see #STYLE_SOLID
- * @see #STYLE_PATTERNED
- *
- * @param style The style of the ripple
- * @hide
- */
- public void setRippleStyle(@RippleStyle int style) throws IllegalArgumentException {
- if (style == STYLE_SOLID || style == STYLE_PATTERNED) {
- mState.mRippleStyle = style;
- } else {
- throw new IllegalArgumentException("Invalid style value " + style);
- }
- }
-
- /**
- * Get the current ripple style
- * @return Ripple style
- * @hide
- */
- public @RippleStyle int getRippleStyle() {
- return mState.mRippleStyle;
- }
-
-
@Override
RippleState createConstantState(LayerState state, Resources res) {
return new RippleState(state, this, res);
@@ -1293,6 +1294,7 @@
int[] mTouchThemeAttrs;
@UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
ColorStateList mColor = ColorStateList.valueOf(Color.MAGENTA);
+ ColorStateList mEffectColor = ColorStateList.valueOf(DEFAULT_EFFECT_COLOR);
int mMaxRadius = RADIUS_AUTO;
int mRippleStyle = FORCE_PATTERNED_STYLE ? STYLE_PATTERNED : STYLE_SOLID;
@@ -1305,6 +1307,7 @@
mColor = origs.mColor;
mMaxRadius = origs.mMaxRadius;
mRippleStyle = origs.mRippleStyle;
+ mEffectColor = origs.mEffectColor;
if (origs.mDensity != mDensity) {
applyDensityScaling(orig.mDensity, mDensity);
diff --git a/graphics/java/android/graphics/drawable/RippleShader.java b/graphics/java/android/graphics/drawable/RippleShader.java
index c1c6afc..e7c1081 100644
--- a/graphics/java/android/graphics/drawable/RippleShader.java
+++ b/graphics/java/android/graphics/drawable/RippleShader.java
@@ -39,6 +39,7 @@
+ "uniform vec2 in_tRotation2;\n"
+ "uniform vec2 in_tRotation3;\n"
+ "uniform vec4 in_color;\n"
+ + "uniform vec4 in_sparkleColor;\n"
+ "uniform shader in_shader;\n";
private static final String SHADER_LIB =
"float triangleNoise(vec2 n) {\n"
@@ -48,7 +49,6 @@
+ " return fract(xy * 95.4307) + fract(xy * 75.04961) - 1.0;\n"
+ "}"
+ "const float PI = 3.1415926535897932384626;\n"
- + "const float SPARKLE_OPACITY = 0.75;\n"
+ "\n"
+ "float sparkles(vec2 uv, float t) {\n"
+ " float n = triangleNoise(uv);\n"
@@ -60,7 +60,7 @@
+ " o *= abs(sin(PI * o * (t + 0.55 * i)));\n"
+ " s += o;\n"
+ " }\n"
- + " return saturate(s) * SPARKLE_OPACITY;\n"
+ + " return saturate(s) * in_sparkleColor.a;\n"
+ "}\n"
+ "float softCircle(vec2 uv, vec2 xy, float radius, float blur) {\n"
+ " float blurHalf = blur * 0.5;\n"
@@ -102,8 +102,8 @@
private static final String SHADER_MAIN = "vec4 main(vec2 p) {\n"
+ " float fadeIn = subProgress(0., 0.1, in_progress);\n"
+ " float scaleIn = subProgress(0., 0.45, in_progress);\n"
- + " float fadeOutNoise = subProgress(0.5, 1., in_progress);\n"
- + " float fadeOutRipple = subProgress(0.5, 0.75, in_progress);\n"
+ + " float fadeOutNoise = subProgress(0.5, 0.95, in_progress);\n"
+ + " float fadeOutRipple = subProgress(0.5, 1., in_progress);\n"
+ " vec2 center = mix(in_touch, in_origin, scaleIn);\n"
+ " float ring = softRing(p, center, in_maxRadius, scaleIn, 0.45);\n"
+ " float alpha = min(fadeIn, 1. - fadeOutNoise);\n"
@@ -116,7 +116,7 @@
+ " vec4 circle = in_color * (softCircle(p, center, in_maxRadius "
+ " * scaleIn, 0.2) * fade);\n"
+ " float mask = in_hasMask == 1. ? sample(in_shader).a > 0. ? 1. : 0. : 1.;\n"
- + " return mix(circle, vec4(sparkle), sparkle) * mask;\n"
+ + " return mix(circle, in_sparkleColor, sparkle) * mask;\n"
+ "}";
private static final String SHADER = SHADER_UNIFORMS + SHADER_LIB + SHADER_MAIN;
private static final double PI_ROTATE_RIGHT = Math.PI * 0.0078125;
@@ -200,14 +200,17 @@
/**
* Color of the circle that's under the sparkles. Sparkles will always be white.
*/
- public void setColor(@ColorInt int colorIn) {
- Color color = Color.valueOf(colorIn);
- this.setUniform("in_color", new float[] {color.red(),
+ public void setColor(@ColorInt int colorInt, @ColorInt int sparkleColorInt) {
+ Color color = Color.valueOf(colorInt);
+ Color sparkleColor = Color.valueOf(sparkleColorInt);
+ setUniform("in_color", new float[] {color.red(),
color.green(), color.blue(), color.alpha()});
+ setUniform("in_sparkleColor", new float[] {sparkleColor.red(),
+ sparkleColor.green(), sparkleColor.blue(), sparkleColor.alpha()});
}
public void setResolution(float w, float h, int density) {
- final float densityScale = density * DisplayMetrics.DENSITY_DEFAULT_SCALE * 1.25f;
+ final float densityScale = density * DisplayMetrics.DENSITY_DEFAULT_SCALE;
setUniform("in_resolutionScale", new float[] {1f / w, 1f / h});
setUniform("in_noiseScale", new float[] {densityScale / w, densityScale / h});
}
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/Bubble.java b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/Bubble.java
index 0a15d84..f6e92ef 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/Bubble.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/Bubble.java
@@ -165,7 +165,8 @@
* Create a bubble with limited information based on given {@link ShortcutInfo}.
* Note: Currently this is only being used when the bubble is persisted to disk.
*/
- Bubble(@NonNull final String key, @NonNull final ShortcutInfo shortcutInfo,
+ @VisibleForTesting(visibility = PRIVATE)
+ public Bubble(@NonNull final String key, @NonNull final ShortcutInfo shortcutInfo,
final int desiredHeight, final int desiredHeightResId, @Nullable final String title,
int taskId, @Nullable final String locus, Executor mainExecutor) {
Objects.requireNonNull(key);
@@ -188,7 +189,7 @@
}
@VisibleForTesting(visibility = PRIVATE)
- Bubble(@NonNull final BubbleEntry entry,
+ public Bubble(@NonNull final BubbleEntry entry,
@Nullable final Bubbles.SuppressionChangedListener listener,
final Bubbles.PendingIntentCanceledListener intentCancelListener,
Executor mainExecutor) {
@@ -718,7 +719,8 @@
private int getUid(final Context context) {
if (mAppUid != -1) return mAppUid;
- final PackageManager pm = context.getPackageManager();
+ final PackageManager pm = BubbleController.getPackageManagerForUser(context,
+ mUser.getIdentifier());
if (pm == null) return -1;
try {
final ApplicationInfo info = pm.getApplicationInfo(mShortcutInfo.getPackage(), 0);
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleController.java b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleController.java
index dca5985..4b03721 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleController.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleController.java
@@ -48,6 +48,7 @@
import android.content.pm.LauncherApps;
import android.content.pm.PackageManager;
import android.content.pm.ShortcutInfo;
+import android.content.pm.UserInfo;
import android.content.res.Configuration;
import android.graphics.PixelFormat;
import android.graphics.PointF;
@@ -64,6 +65,7 @@
import android.util.Log;
import android.util.Pair;
import android.util.Slog;
+import android.util.SparseArray;
import android.util.SparseSetArray;
import android.view.View;
import android.view.ViewGroup;
@@ -144,6 +146,8 @@
// Tracks the id of the current (foreground) user.
private int mCurrentUserId;
+ // Current profiles of the user (e.g. user with a workprofile)
+ private SparseArray<UserInfo> mCurrentProfiles;
// Saves notification keys of active bubbles when users are switched.
private final SparseSetArray<String> mSavedBubbleKeysPerUser;
@@ -153,8 +157,8 @@
// Callback that updates BubbleOverflowActivity on data change.
@Nullable private BubbleData.Listener mOverflowListener = null;
- // Only load overflow data from disk once
- private boolean mOverflowDataLoaded = false;
+ // Typically only load once & after user switches
+ private boolean mOverflowDataLoadNeeded = true;
/**
* When the shade status changes to SHADE (from anything but SHADE, like LOCKED) we'll select
@@ -468,14 +472,31 @@
updateStack();
}
- private void onUserChanged(int newUserId) {
+ /** Called when the current user changes. */
+ @VisibleForTesting
+ public void onUserChanged(int newUserId) {
saveBubbles(mCurrentUserId);
- mBubbleData.dismissAll(DISMISS_USER_CHANGED);
- restoreBubbles(newUserId);
mCurrentUserId = newUserId;
+
+ mBubbleData.dismissAll(DISMISS_USER_CHANGED);
+ mBubbleData.clearOverflow();
+ mOverflowDataLoadNeeded = true;
+
+ restoreBubbles(newUserId);
mBubbleData.setCurrentUserId(newUserId);
}
+ /** Called when the profiles for the current user change. **/
+ public void onCurrentProfilesChanged(SparseArray<UserInfo> currentProfiles) {
+ mCurrentProfiles = currentProfiles;
+ }
+
+ /** Whether this userId belongs to the current user. */
+ private boolean isCurrentProfile(int userId) {
+ return userId == UserHandle.USER_ALL
+ || (mCurrentProfiles != null && mCurrentProfiles.get(userId) != null);
+ }
+
/**
* Sets whether to perform inflation on the same thread as the caller. This method should only
* be used in tests, not in production.
@@ -556,6 +577,7 @@
mWmLayoutParams.setTitle("Bubbles!");
mWmLayoutParams.packageName = mContext.getPackageName();
mWmLayoutParams.layoutInDisplayCutoutMode = LAYOUT_IN_DISPLAY_CUTOUT_MODE_ALWAYS;
+ mWmLayoutParams.privateFlags |= WindowManager.LayoutParams.SYSTEM_FLAG_SHOW_FOR_ALL_USERS;
try {
mAddedToWindowManager = true;
@@ -639,7 +661,7 @@
});
});
// Finally, remove the entries for this user now that bubbles are restored.
- mSavedBubbleKeysPerUser.remove(mCurrentUserId);
+ mSavedBubbleKeysPerUser.remove(userId);
}
private void updateForThemeChanges() {
@@ -804,12 +826,12 @@
* Fills the overflow bubbles by loading them from disk.
*/
void loadOverflowBubblesFromDisk() {
- if (!mBubbleData.getOverflowBubbles().isEmpty() || mOverflowDataLoaded) {
+ if (!mBubbleData.getOverflowBubbles().isEmpty() && !mOverflowDataLoadNeeded) {
// we don't need to load overflow bubbles from disk if it is already in memory
return;
}
- mOverflowDataLoaded = true;
- mDataRepository.loadBubbles((bubbles) -> {
+ mOverflowDataLoadNeeded = false;
+ mDataRepository.loadBubbles(mCurrentUserId, (bubbles) -> {
bubbles.forEach(bubble -> {
if (mBubbleData.hasAnyBubbleWithKey(bubble.getKey())) {
// if the bubble is already active, there's no need to push it to overflow
@@ -911,6 +933,12 @@
Pair<BubbleEntry, Boolean> entryData = entryDataByKey.get(key);
BubbleEntry entry = entryData.first;
boolean shouldBubbleUp = entryData.second;
+
+ if (entry != null && !isCurrentProfile(
+ entry.getStatusBarNotification().getUser().getIdentifier())) {
+ return;
+ }
+
rankingMap.getRanking(key, mTmpRanking);
boolean isActiveBubble = mBubbleData.hasAnyBubbleWithKey(key);
if (isActiveBubble && !mTmpRanking.canBubble()) {
@@ -1428,6 +1456,13 @@
}
@Override
+ public void onCurrentProfilesChanged(SparseArray<UserInfo> currentProfiles) {
+ mMainExecutor.execute(() -> {
+ BubbleController.this.onCurrentProfilesChanged(currentProfiles);
+ });
+ }
+
+ @Override
public void onConfigChanged(Configuration newConfig) {
mMainExecutor.execute(() -> {
BubbleController.this.onConfigChanged(newConfig);
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleData.java b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleData.java
index f6e6b8f3..8434d66 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleData.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleData.java
@@ -510,7 +510,8 @@
|| reason == Bubbles.DISMISS_NO_LONGER_BUBBLE
|| reason == Bubbles.DISMISS_BLOCKED
|| reason == Bubbles.DISMISS_SHORTCUT_REMOVED
- || reason == Bubbles.DISMISS_PACKAGE_REMOVED)) {
+ || reason == Bubbles.DISMISS_PACKAGE_REMOVED
+ || reason == Bubbles.DISMISS_USER_CHANGED)) {
Bubble b = getOverflowBubbleWithKey(key);
if (DEBUG_BUBBLE_DATA) {
@@ -642,6 +643,16 @@
}
}
+ /**
+ * Removes all bubbles from the overflow, called when the user changes.
+ */
+ public void clearOverflow() {
+ while (!mOverflowBubbles.isEmpty()) {
+ doRemove(mOverflowBubbles.get(0).getKey(), Bubbles.DISMISS_USER_CHANGED);
+ }
+ dispatchPendingChanges();
+ }
+
private void dispatchPendingChanges() {
if (mListener != null && mStateChange.anythingChanged()) {
mListener.applyUpdate(mStateChange);
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleDataRepository.kt b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleDataRepository.kt
index bfacd1c..9d9e442 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleDataRepository.kt
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleDataRepository.kt
@@ -58,7 +58,8 @@
*/
fun addBubbles(@UserIdInt userId: Int, bubbles: List<Bubble>) {
if (DEBUG) Log.d(TAG, "adding ${bubbles.size} bubbles")
- val entities = transform(userId, bubbles).also(volatileRepository::addBubbles)
+ val entities = transform(bubbles).also {
+ b -> volatileRepository.addBubbles(userId, b) }
if (entities.isNotEmpty()) persistToDisk()
}
@@ -67,14 +68,15 @@
*/
fun removeBubbles(@UserIdInt userId: Int, bubbles: List<Bubble>) {
if (DEBUG) Log.d(TAG, "removing ${bubbles.size} bubbles")
- val entities = transform(userId, bubbles).also(volatileRepository::removeBubbles)
+ val entities = transform(bubbles).also {
+ b -> volatileRepository.removeBubbles(userId, b) }
if (entities.isNotEmpty()) persistToDisk()
}
- private fun transform(userId: Int, bubbles: List<Bubble>): List<BubbleEntity> {
+ private fun transform(bubbles: List<Bubble>): List<BubbleEntity> {
return bubbles.mapNotNull { b ->
BubbleEntity(
- userId,
+ b.user.identifier,
b.packageName,
b.metadataShortcutId ?: return@mapNotNull null,
b.key,
@@ -116,10 +118,11 @@
/**
* Load bubbles from disk.
* @param cb The callback to be run after the bubbles are loaded. This callback is always made
- * on the main thread of the hosting process.
+ * on the main thread of the hosting process. The callback is only run if there are
+ * bubbles.
*/
@SuppressLint("WrongConstant")
- fun loadBubbles(cb: (List<Bubble>) -> Unit) = ioScope.launch {
+ fun loadBubbles(userId: Int, cb: (List<Bubble>) -> Unit) = ioScope.launch {
/**
* Load BubbleEntity from disk.
* e.g.
@@ -129,8 +132,9 @@
* BubbleEntity(0, "com.example.messenger", "id-1")
* ]
*/
- val entities = persistentRepository.readFromDisk()
- volatileRepository.addBubbles(entities)
+ val entitiesByUser = persistentRepository.readFromDisk()
+ val entities = entitiesByUser.get(userId) ?: return@launch
+ volatileRepository.addBubbles(userId, entities)
/**
* Extract userId/packageName from these entities.
* e.g.
@@ -139,9 +143,10 @@
* ]
*/
val shortcutKeys = entities.map { ShortcutKey(it.userId, it.packageName) }.toSet()
+
/**
- * Retrieve shortcuts with given userId/packageName combination, then construct a mapping
- * from the userId/packageName pair to a list of associated ShortcutInfo.
+ * Retrieve shortcuts with given userId/packageName combination, then construct a
+ * mapping from the userId/packageName pair to a list of associated ShortcutInfo.
* e.g.
* {
* ShortcutKey(0, "com.example.messenger") -> [
@@ -161,21 +166,23 @@
.setQueryFlags(SHORTCUT_QUERY_FLAG), UserHandle.of(key.userId))
?: emptyList()
}.groupBy { ShortcutKey(it.userId, it.`package`) }
- // For each entity loaded from xml, find the corresponding ShortcutInfo then convert them
- // into Bubble.
+ // For each entity loaded from xml, find the corresponding ShortcutInfo then convert
+ // them into Bubble.
val bubbles = entities.mapNotNull { entity ->
shortcutMap[ShortcutKey(entity.userId, entity.packageName)]
?.firstOrNull { shortcutInfo -> entity.shortcutId == shortcutInfo.id }
- ?.let { shortcutInfo -> Bubble(
- entity.key,
- shortcutInfo,
- entity.desiredHeight,
- entity.desiredHeightResId,
- entity.title,
- entity.taskId,
- entity.locus,
- mainExecutor
- ) }
+ ?.let { shortcutInfo ->
+ Bubble(
+ entity.key,
+ shortcutInfo,
+ entity.desiredHeight,
+ entity.desiredHeightResId,
+ entity.title,
+ entity.taskId,
+ entity.locus,
+ mainExecutor
+ )
+ }
}
mainExecutor.execute { cb(bubbles) }
}
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleIconFactory.java b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleIconFactory.java
index fe3f9ef..e64ed6a 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleIconFactory.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleIconFactory.java
@@ -29,6 +29,8 @@
import android.graphics.drawable.Drawable;
import android.graphics.drawable.Icon;
+import androidx.annotation.VisibleForTesting;
+
import com.android.launcher3.icons.BaseIconFactory;
import com.android.launcher3.icons.BitmapInfo;
import com.android.launcher3.icons.ShadowGenerator;
@@ -39,11 +41,12 @@
* We are not using Launcher's IconFactory because bubbles only runs on the UI thread,
* so there is no need to manage a pool across multiple threads.
*/
+@VisibleForTesting
public class BubbleIconFactory extends BaseIconFactory {
private int mBadgeSize;
- protected BubbleIconFactory(Context context) {
+ public BubbleIconFactory(Context context) {
super(context, context.getResources().getConfiguration().densityDpi,
context.getResources().getDimensionPixelSize(R.dimen.individual_bubble_size));
mBadgeSize = mContext.getResources().getDimensionPixelSize(
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleViewInfoTask.java b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleViewInfoTask.java
index c5a712e..fc53ef26 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleViewInfoTask.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleViewInfoTask.java
@@ -39,6 +39,7 @@
import android.view.LayoutInflater;
import androidx.annotation.Nullable;
+import androidx.annotation.VisibleForTesting;
import com.android.internal.graphics.ColorUtils;
import com.android.launcher3.icons.BitmapInfo;
@@ -118,7 +119,8 @@
/**
* Info necessary to render a bubble.
*/
- static class BubbleViewInfo {
+ @VisibleForTesting
+ public static class BubbleViewInfo {
BadgedImageView imageView;
BubbleExpandedView expandedView;
ShortcutInfo shortcutInfo;
@@ -129,8 +131,9 @@
Path dotPath;
Bubble.FlyoutMessage flyoutMessage;
+ @VisibleForTesting
@Nullable
- static BubbleViewInfo populate(Context c, BubbleController controller,
+ public static BubbleViewInfo populate(Context c, BubbleController controller,
BubbleStackView stackView, BubbleIconFactory iconFactory, Bubble b,
boolean skipInflation) {
BubbleViewInfo info = new BubbleViewInfo();
@@ -152,7 +155,8 @@
}
// App name & app icon
- PackageManager pm = c.getPackageManager();
+ PackageManager pm = BubbleController.getPackageManagerForUser(c,
+ b.getUser().getIdentifier());
ApplicationInfo appInfo;
Drawable badgedIcon;
Drawable appIcon;
@@ -217,10 +221,16 @@
static Drawable loadSenderAvatar(@NonNull final Context context, @Nullable final Icon icon) {
Objects.requireNonNull(context);
if (icon == null) return null;
- if (icon.getType() == Icon.TYPE_URI || icon.getType() == Icon.TYPE_URI_ADAPTIVE_BITMAP) {
- context.grantUriPermission(context.getPackageName(),
- icon.getUri(), Intent.FLAG_GRANT_READ_URI_PERMISSION);
+ try {
+ if (icon.getType() == Icon.TYPE_URI
+ || icon.getType() == Icon.TYPE_URI_ADAPTIVE_BITMAP) {
+ context.grantUriPermission(context.getPackageName(),
+ icon.getUri(), Intent.FLAG_GRANT_READ_URI_PERMISSION);
+ }
+ return icon.loadDrawable(context);
+ } catch (Exception e) {
+ Log.w(TAG, "loadSenderAvatar failed: " + e.getMessage());
+ return null;
}
- return icon.loadDrawable(context);
}
}
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/Bubbles.java b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/Bubbles.java
index 1bfb619..a93ce01 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/Bubbles.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/Bubbles.java
@@ -21,12 +21,14 @@
import static java.lang.annotation.ElementType.PARAMETER;
import static java.lang.annotation.RetentionPolicy.SOURCE;
+import android.content.pm.UserInfo;
import android.content.res.Configuration;
import android.os.Bundle;
import android.os.Looper;
import android.service.notification.NotificationListenerService.RankingMap;
import android.util.ArraySet;
import android.util.Pair;
+import android.util.SparseArray;
import android.view.View;
import androidx.annotation.IntDef;
@@ -214,6 +216,13 @@
void onUserChanged(int newUserId);
/**
+ * Called when the current user profiles change.
+ *
+ * @param currentProfiles the user infos for the current profile.
+ */
+ void onCurrentProfilesChanged(SparseArray<UserInfo> currentProfiles);
+
+ /**
* Called when config changed.
*
* @param newConfig the new config.
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/storage/BubblePersistentRepository.kt b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/storage/BubblePersistentRepository.kt
index 66a75af..130790a 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/storage/BubblePersistentRepository.kt
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/storage/BubblePersistentRepository.kt
@@ -18,6 +18,7 @@
import android.content.Context
import android.util.AtomicFile
import android.util.Log
+import android.util.SparseArray
import java.io.File
import java.io.FileOutputStream
import java.io.IOException
@@ -27,8 +28,8 @@
private val bubbleFile: AtomicFile = AtomicFile(File(context.filesDir,
"overflow_bubbles.xml"), "overflow-bubbles")
- fun persistsToDisk(bubbles: List<BubbleEntity>): Boolean {
- if (DEBUG) Log.d(TAG, "persisting ${bubbles.size} bubbles")
+ fun persistsToDisk(bubbles: SparseArray<List<BubbleEntity>>): Boolean {
+ if (DEBUG) Log.d(TAG, "persisting ${bubbles.size()} bubbles")
synchronized(bubbleFile) {
val stream: FileOutputStream = try { bubbleFile.startWrite() } catch (e: IOException) {
Log.e(TAG, "Failed to save bubble file", e)
@@ -37,7 +38,7 @@
try {
writeXml(stream, bubbles)
bubbleFile.finishWrite(stream)
- if (DEBUG) Log.d(TAG, "persisted ${bubbles.size} bubbles")
+ if (DEBUG) Log.d(TAG, "persisted ${bubbles.size()} bubbles")
return true
} catch (e: Exception) {
Log.e(TAG, "Failed to save bubble file, restoring backup", e)
@@ -47,13 +48,13 @@
return false
}
- fun readFromDisk(): List<BubbleEntity> {
+ fun readFromDisk(): SparseArray<List<BubbleEntity>> {
synchronized(bubbleFile) {
- if (!bubbleFile.exists()) return emptyList()
+ if (!bubbleFile.exists()) return SparseArray()
try { return bubbleFile.openRead().use(::readXml) } catch (e: Throwable) {
Log.e(TAG, "Failed to open bubble file", e)
}
- return emptyList()
+ return SparseArray()
}
}
}
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/storage/BubbleVolatileRepository.kt b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/storage/BubbleVolatileRepository.kt
index 7f0b165..a5267d8 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/storage/BubbleVolatileRepository.kt
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/storage/BubbleVolatileRepository.kt
@@ -17,6 +17,7 @@
import android.content.pm.LauncherApps
import android.os.UserHandle
+import android.util.SparseArray
import com.android.internal.annotations.VisibleForTesting
import com.android.wm.shell.bubbles.ShortcutKey
@@ -27,10 +28,11 @@
* manipulation.
*/
class BubbleVolatileRepository(private val launcherApps: LauncherApps) {
+
/**
- * An ordered set of bubbles based on their natural ordering.
+ * Set of bubbles per user. Each set of bubbles is ordered by recency.
*/
- private var entities = mutableSetOf<BubbleEntity>()
+ private var entitiesByUser = SparseArray<MutableList<BubbleEntity>>()
/**
* The capacity of the cache.
@@ -39,19 +41,43 @@
var capacity = CAPACITY
/**
- * Returns a snapshot of all the bubbles.
+ * Returns a snapshot of all the bubbles, a map of the userId to bubble list.
*/
- val bubbles: List<BubbleEntity>
+ val bubbles: SparseArray<List<BubbleEntity>>
@Synchronized
- get() = entities.toList()
+ get() {
+ val map = SparseArray<List<BubbleEntity>>()
+ for (i in 0 until entitiesByUser.size()) {
+ val k = entitiesByUser.keyAt(i)
+ val v = entitiesByUser.valueAt(i)
+ map.put(k, v.toList())
+ }
+ return map
+ }
+
+ /**
+ * Returns the entity list of the provided user's bubbles or creates one if it doesn't exist.
+ */
+ @Synchronized
+ fun getEntities(userId: Int): MutableList<BubbleEntity> {
+ val entities = entitiesByUser.get(userId)
+ return when (entities) {
+ null -> mutableListOf<BubbleEntity>().also {
+ entitiesByUser.put(userId, it)
+ }
+ else -> entities
+ }
+ }
/**
* Add the bubbles to memory and perform a de-duplication. In case a bubble already exists,
* it will be moved to the last.
*/
@Synchronized
- fun addBubbles(bubbles: List<BubbleEntity>) {
+ fun addBubbles(userId: Int, bubbles: List<BubbleEntity>) {
if (bubbles.isEmpty()) return
+ // Get the list for this user
+ var entities = getEntities(userId)
// Verify the size of given bubbles is within capacity, otherwise trim down to capacity
val bubblesInRange = bubbles.takeLast(capacity)
// To ensure natural ordering of the bubbles, removes bubbles which already exist
@@ -61,16 +87,17 @@
if (overflowCount > 0) {
// Uncache ShortcutInfo of bubbles that will be removed due to capacity
uncache(entities.take(overflowCount))
- entities = entities.drop(overflowCount).toMutableSet()
+ entities = entities.drop(overflowCount).toMutableList()
}
entities.addAll(bubblesInRange)
+ entitiesByUser.put(userId, entities)
cache(uniqueBubbles)
}
@Synchronized
- fun removeBubbles(bubbles: List<BubbleEntity>) =
+ fun removeBubbles(userId: Int, bubbles: List<BubbleEntity>) =
uncache(bubbles.filter { b: BubbleEntity ->
- entities.removeIf { e: BubbleEntity -> b.key == e.key } })
+ getEntities(userId).removeIf { e: BubbleEntity -> b.key == e.key } })
private fun cache(bubbles: List<BubbleEntity>) {
bubbles.groupBy { ShortcutKey(it.userId, it.packageName) }.forEach { (key, bubbles) ->
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/storage/BubbleXmlHelper.kt b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/storage/BubbleXmlHelper.kt
index a74445b..f4fa183 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/storage/BubbleXmlHelper.kt
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/storage/BubbleXmlHelper.kt
@@ -16,6 +16,8 @@
package com.android.wm.shell.bubbles.storage
import android.app.ActivityTaskManager.INVALID_TASK_ID
+import android.os.UserHandle
+import android.util.SparseArray
import android.util.Xml
import com.android.internal.util.FastXmlSerializer
import com.android.internal.util.XmlUtils
@@ -26,8 +28,8 @@
import java.io.OutputStream
import java.nio.charset.StandardCharsets
-// TODO: handle version changes gracefully
-private const val CURRENT_VERSION = 1
+// If this number increases, consider bubbles might be restored even with differences in XML.
+private const val CURRENT_VERSION = 2
private const val TAG_BUBBLES = "bs"
private const val ATTR_VERSION = "v"
@@ -46,13 +48,20 @@
* Writes the bubbles in xml format into given output stream.
*/
@Throws(IOException::class)
-fun writeXml(stream: OutputStream, bubbles: List<BubbleEntity>) {
+fun writeXml(stream: OutputStream, bubbles: SparseArray<List<BubbleEntity>>) {
val serializer: XmlSerializer = FastXmlSerializer()
serializer.setOutput(stream, StandardCharsets.UTF_8.name())
serializer.startDocument(null, true)
serializer.startTag(null, TAG_BUBBLES)
serializer.attribute(null, ATTR_VERSION, CURRENT_VERSION.toString())
- bubbles.forEach { b -> writeXmlEntry(serializer, b) }
+ for (i in 0 until bubbles.size()) {
+ val k = bubbles.keyAt(i)
+ val v = bubbles.valueAt(i)
+ serializer.startTag(null, TAG_BUBBLES)
+ serializer.attribute(null, ATTR_USER_ID, k.toString())
+ v.forEach { b -> writeXmlEntry(serializer, b) }
+ serializer.endTag(null, TAG_BUBBLES)
+ }
serializer.endTag(null, TAG_BUBBLES)
serializer.endDocument()
}
@@ -84,16 +93,39 @@
/**
* Reads the bubbles from xml file.
*/
-fun readXml(stream: InputStream): List<BubbleEntity> {
- val bubbles = mutableListOf<BubbleEntity>()
+fun readXml(stream: InputStream): SparseArray<List<BubbleEntity>> {
+ val bubbles = SparseArray<List<BubbleEntity>>()
val parser: XmlPullParser = Xml.newPullParser()
parser.setInput(stream, StandardCharsets.UTF_8.name())
XmlUtils.beginDocument(parser, TAG_BUBBLES)
- val version = parser.getAttributeWithName(ATTR_VERSION)?.toInt()
- if (version != null && version == CURRENT_VERSION) {
+ val veryOuterDepth = parser.depth
+ val version = parser.getAttributeWithName(ATTR_VERSION)?.toInt() ?: return bubbles
+ if (version == CURRENT_VERSION) {
+ while (XmlUtils.nextElementWithin(parser, veryOuterDepth)) {
+ val uid = parser.getAttributeWithName(ATTR_USER_ID) ?: continue
+ val outerDepth = parser.depth
+ val userBubbles = mutableListOf<BubbleEntity>()
+ while (XmlUtils.nextElementWithin(parser, outerDepth)) {
+ userBubbles.add(readXmlEntry(parser) ?: continue)
+ }
+ if (!userBubbles.isEmpty()) {
+ bubbles.put(uid.toInt(), userBubbles.toList())
+ }
+ }
+ } else if (version == 1) {
+ // upgrade v1 to v2 format
val outerDepth = parser.depth
+ val userBubbles = mutableListOf<BubbleEntity>()
while (XmlUtils.nextElementWithin(parser, outerDepth)) {
- bubbles.add(readXmlEntry(parser) ?: continue)
+ // We can't tell which profile the bubble was for, so we'll only copy the main users'
+ // bubbles on upgrade.
+ val b = readXmlEntry(parser)
+ if (b != null && b.userId == UserHandle.USER_SYSTEM) {
+ userBubbles.add(b)
+ }
+ }
+ if (!userBubbles.isEmpty()) {
+ bubbles.put(UserHandle.USER_SYSTEM, userBubbles.toList())
}
}
return bubbles
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/PipBoundsState.java b/libs/WindowManager/Shell/src/com/android/wm/shell/pip/PipBoundsState.java
index e3594d0..561dff0 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/PipBoundsState.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/pip/PipBoundsState.java
@@ -19,10 +19,14 @@
import android.annotation.IntDef;
import android.annotation.NonNull;
import android.annotation.Nullable;
+import android.app.ActivityTaskManager;
+import android.app.PictureInPictureUiState;
import android.content.ComponentName;
import android.content.Context;
import android.graphics.Point;
import android.graphics.Rect;
+import android.os.RemoteException;
+import android.util.Log;
import android.util.Size;
import android.view.Display;
@@ -185,7 +189,18 @@
/** Dictate where PiP currently should be stashed, if at all. */
public void setStashed(@StashType int stashedState) {
+ if (mStashedState == stashedState) {
+ return;
+ }
+
mStashedState = stashedState;
+ try {
+ ActivityTaskManager.getService().onPictureInPictureStateChanged(
+ new PictureInPictureUiState(stashedState != STASH_TYPE_NONE /* isStashed */)
+ );
+ } catch (RemoteException e) {
+ Log.e(TAG, "Unable to set alert PiP state change.");
+ }
}
/**
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/PipMediaController.java b/libs/WindowManager/Shell/src/com/android/wm/shell/pip/PipMediaController.java
index 3af0ff0..9713962 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/PipMediaController.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/pip/PipMediaController.java
@@ -21,6 +21,7 @@
import android.annotation.DrawableRes;
import android.annotation.StringRes;
+import android.annotation.SuppressLint;
import android.app.PendingIntent;
import android.app.RemoteAction;
import android.content.BroadcastReceiver;
@@ -210,13 +211,16 @@
/**
* Gets the set of media actions currently available.
*/
+ // This is due to using PlaybackState#isActive, which is added in API 31.
+ // It can be removed when min_sdk of the app is set to 31 or greater.
+ @SuppressLint("NewApi")
private List<RemoteAction> getMediaActions() {
if (mMediaController == null || mMediaController.getPlaybackState() == null) {
return Collections.emptyList();
}
ArrayList<RemoteAction> mediaActions = new ArrayList<>();
- boolean isPlaying = mMediaController.getPlaybackState().isActiveState();
+ boolean isPlaying = mMediaController.getPlaybackState().isActive();
long actions = mMediaController.getPlaybackState().getActions();
// Prev action
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/PipSurfaceTransactionHelper.java b/libs/WindowManager/Shell/src/com/android/wm/shell/pip/PipSurfaceTransactionHelper.java
index 582ff21..3dd97f5 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/PipSurfaceTransactionHelper.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/pip/PipSurfaceTransactionHelper.java
@@ -21,6 +21,7 @@
import android.graphics.Matrix;
import android.graphics.Rect;
import android.graphics.RectF;
+import android.os.SystemProperties;
import android.view.SurfaceControl;
import com.android.wm.shell.R;
@@ -42,7 +43,8 @@
public PipSurfaceTransactionHelper(Context context) {
final Resources res = context.getResources();
- mEnableCornerRadius = res.getBoolean(R.bool.config_pipEnableRoundCorner);
+ mEnableCornerRadius = res.getBoolean(R.bool.config_pipEnableRoundCorner)
+ || SystemProperties.getBoolean("debug.sf.enable_hole_punch_pip", false);
}
/**
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/phone/PipMenuView.java b/libs/WindowManager/Shell/src/com/android/wm/shell/pip/phone/PipMenuView.java
index 3c25a13..a57e8cd 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/phone/PipMenuView.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/pip/phone/PipMenuView.java
@@ -44,6 +44,7 @@
import android.net.Uri;
import android.os.Bundle;
import android.os.Handler;
+import android.os.SystemProperties;
import android.os.UserHandle;
import android.util.Log;
import android.util.Pair;
@@ -131,7 +132,8 @@
inflate(context, R.layout.pip_menu, this);
final boolean enableCornerRadius = mContext.getResources()
- .getBoolean(R.bool.config_pipEnableRoundCorner);
+ .getBoolean(R.bool.config_pipEnableRoundCorner)
+ || SystemProperties.getBoolean("debug.sf.enable_hole_punch_pip", false);
mBackgroundDrawable = enableCornerRadius
? mContext.getDrawable(R.drawable.pip_menu_background)
: new ColorDrawable(Color.BLACK);
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/phone/PipTouchHandler.java b/libs/WindowManager/Shell/src/com/android/wm/shell/pip/phone/PipTouchHandler.java
index f29d4f5..2a1fe60 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/phone/PipTouchHandler.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/pip/phone/PipTouchHandler.java
@@ -625,6 +625,7 @@
}
mMenuController.handlePointerEvent(cloneEvent);
+ cloneEvent.recycle();
}
return true;
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/startingsurface/SplashscreenContentDrawer.java b/libs/WindowManager/Shell/src/com/android/wm/shell/startingsurface/SplashscreenContentDrawer.java
index 147f2e2..f3ae0a1 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/startingsurface/SplashscreenContentDrawer.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/startingsurface/SplashscreenContentDrawer.java
@@ -109,11 +109,12 @@
* view on background thread so the view and the drawable can be create and pre-draw in
* parallel.
*
+ * @param emptyView Create a splash screen view without icon on it.
* @param consumer Receiving the SplashScreenView object, which will also be executed
* on splash screen thread. Note that the view can be null if failed.
*/
- void createContentView(Context context, int splashScreenResId, ActivityInfo info,
- int taskId, Consumer<SplashScreenView> consumer) {
+ void createContentView(Context context, boolean emptyView, int splashScreenResId,
+ ActivityInfo info, int taskId, Consumer<SplashScreenView> consumer) {
mSplashscreenWorkerHandler.post(() -> {
SplashScreenView contentView;
try {
@@ -121,7 +122,11 @@
context, splashScreenResId);
if (contentView == null) {
Trace.traceBegin(TRACE_TAG_WINDOW_MANAGER, "makeSplashScreenContentView");
- contentView = makeSplashScreenContentView(context, info);
+ if (emptyView) {
+ contentView = makeEmptySplashScreenContentView(context);
+ } else {
+ contentView = makeSplashScreenContentView(context, info);
+ }
Trace.traceEnd(TRACE_TAG_WINDOW_MANAGER);
}
} catch (RuntimeException e) {
@@ -190,6 +195,18 @@
}
}
+ private SplashScreenView makeEmptySplashScreenContentView(Context context) {
+ getWindowAttrs(context, mTmpAttrs);
+ final StartingWindowViewBuilder builder = new StartingWindowViewBuilder();
+ final int themeBGColor = peekWindowBGColor(context);
+ final SplashScreenView view = builder
+ .setContext(context)
+ .setWindowBGColor(themeBGColor)
+ .build();
+ view.setNotCopyable();
+ return view;
+ }
+
private SplashScreenView makeSplashScreenContentView(Context context, ActivityInfo ai) {
updateDensity();
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/startingsurface/StartingSurfaceDrawer.java b/libs/WindowManager/Shell/src/com/android/wm/shell/startingsurface/StartingSurfaceDrawer.java
index 7037d18..e4b2869 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/startingsurface/StartingSurfaceDrawer.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/startingsurface/StartingSurfaceDrawer.java
@@ -317,46 +317,38 @@
// 3. Pre-draw the BitmapShader if the icon is immobile on splash screen worker thread, at
// the same time the splash screen thread should be executing Session#relayout. Blocking the
// traversal -> draw on splash screen thread until the BitmapShader of the icon is ready.
- final Runnable setViewSynchronized;
- if (!emptyView) {
- // Record whether create splash screen view success, notify to current thread after
- // create splash screen view finished.
- final SplashScreenViewSupplier viewSupplier = new SplashScreenViewSupplier();
- setViewSynchronized = () -> {
- // waiting for setContentView before relayoutWindow
- SplashScreenView contentView = viewSupplier.get();
- final StartingWindowRecord record = mStartingWindowRecords.get(taskId);
- // if record == null, either the starting window added fail or removed already.
- if (record != null) {
- // if view == null then creation of content view was failed.
- if (contentView != null) {
- try {
- win.setContentView(contentView);
- contentView.cacheRootWindow(win);
- } catch (RuntimeException e) {
- Slog.w(TAG, "failed set content view to starting window "
- + "at taskId: " + taskId, e);
- contentView = null;
- }
+
+ // Record whether create splash screen view success, notify to current thread after
+ // create splash screen view finished.
+ final SplashScreenViewSupplier viewSupplier = new SplashScreenViewSupplier();
+ final Runnable setViewSynchronized = () -> {
+ // waiting for setContentView before relayoutWindow
+ SplashScreenView contentView = viewSupplier.get();
+ final StartingWindowRecord record = mStartingWindowRecords.get(taskId);
+ // if record == null, either the starting window added fail or removed already.
+ if (record != null) {
+ // if view == null then creation of content view was failed.
+ if (contentView != null) {
+ try {
+ win.setContentView(contentView);
+ contentView.cacheRootWindow(win);
+ } catch (RuntimeException e) {
+ Slog.w(TAG, "failed set content view to starting window "
+ + "at taskId: " + taskId, e);
+ contentView = null;
}
- record.setSplashScreenView(contentView);
}
- };
- mSplashscreenContentDrawer.createContentView(context,
- splashscreenContentResId[0], activityInfo, taskId, viewSupplier::setView);
- } else {
- setViewSynchronized = null;
- }
+ record.setSplashScreenView(contentView);
+ }
+ };
+ mSplashscreenContentDrawer.createContentView(context, emptyView,
+ splashscreenContentResId[0], activityInfo, taskId, viewSupplier::setView);
try {
final View view = win.getDecorView();
final WindowManager wm = mContext.getSystemService(WindowManager.class);
postAddWindow(taskId, appToken, view, wm, params);
- // all done
- if (emptyView) {
- return;
- }
// We use the splash screen worker thread to create SplashScreenView while adding the
// window, as otherwise Choreographer#doFrame might be delayed on this thread.
// And since Choreographer#doFrame won't happen immediately after adding the window, if
diff --git a/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/legacysplitscreen/EnterSplitScreenDockActivity.kt b/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/legacysplitscreen/EnterSplitScreenDockActivity.kt
index 6494f89..91d51de 100644
--- a/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/legacysplitscreen/EnterSplitScreenDockActivity.kt
+++ b/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/legacysplitscreen/EnterSplitScreenDockActivity.kt
@@ -74,12 +74,6 @@
@Test
fun dockedStackDividerBecomesVisible() = testSpec.dockedStackDividerBecomesVisible()
- @FlakyTest(bugId = 178531736)
- @Test
- // b/178531736
- override fun visibleLayersShownMoreThanOneConsecutiveEntry() =
- super.visibleLayersShownMoreThanOneConsecutiveEntry()
-
@Presubmit
@Test
fun navBarWindowIsAlwaysVisible() = testSpec.navBarWindowIsAlwaysVisible()
@@ -88,12 +82,6 @@
@Test
fun statusBarWindowIsAlwaysVisible() = testSpec.statusBarWindowIsAlwaysVisible()
- @FlakyTest(bugId = 178531736)
- @Test
- // b/178531736
- override fun visibleWindowsShownMoreThanOneConsecutiveEntry() =
- super.visibleWindowsShownMoreThanOneConsecutiveEntry()
-
@Presubmit
@Test
fun appWindowIsVisible() {
diff --git a/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/legacysplitscreen/EnterSplitScreenLaunchToSide.kt b/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/legacysplitscreen/EnterSplitScreenLaunchToSide.kt
index 9000f22..f975ed9 100644
--- a/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/legacysplitscreen/EnterSplitScreenLaunchToSide.kt
+++ b/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/legacysplitscreen/EnterSplitScreenLaunchToSide.kt
@@ -83,13 +83,6 @@
// b/169271943
fun dockedStackDividerBecomesVisible() = testSpec.dockedStackDividerBecomesVisible()
- @FlakyTest(bugId = 178447631)
- @Test
- // TODO(b/178447631) Remove Splash Screen from white list when flicker lib
- // add a wait for splash screen be gone
- override fun visibleLayersShownMoreThanOneConsecutiveEntry() =
- super.visibleLayersShownMoreThanOneConsecutiveEntry()
-
@Presubmit
@Test
fun appWindowBecomesVisible() = testSpec.appWindowBecomesVisible(secondaryApp.defaultWindowName)
@@ -102,11 +95,6 @@
@Test
fun statusBarWindowIsAlwaysVisible() = testSpec.statusBarWindowIsAlwaysVisible()
- @Presubmit
- @Test
- override fun visibleWindowsShownMoreThanOneConsecutiveEntry() =
- super.visibleWindowsShownMoreThanOneConsecutiveEntry()
-
companion object {
@Parameterized.Parameters(name = "{0}")
@JvmStatic
diff --git a/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/legacysplitscreen/EnterSplitScreenNotSupportNonResizable.kt b/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/legacysplitscreen/EnterSplitScreenNotSupportNonResizable.kt
index 7d22d4d..6bc9a5c 100644
--- a/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/legacysplitscreen/EnterSplitScreenNotSupportNonResizable.kt
+++ b/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/legacysplitscreen/EnterSplitScreenNotSupportNonResizable.kt
@@ -19,7 +19,6 @@
import android.platform.test.annotations.Postsubmit
import android.provider.Settings
import android.view.Surface
-import androidx.test.filters.FlakyTest
import androidx.test.filters.RequiresDevice
import com.android.server.wm.flicker.FlickerParametersRunnerFactory
import com.android.server.wm.flicker.FlickerTestParameter
@@ -97,25 +96,9 @@
prevSupportNonResizableInMultiWindow)
}
- @FlakyTest(bugId = 178447631)
- @Test
- override fun visibleLayersShownMoreThanOneConsecutiveEntry() =
- super.visibleLayersShownMoreThanOneConsecutiveEntry()
-
- @Test
- override fun visibleWindowsShownMoreThanOneConsecutiveEntry() =
- super.visibleWindowsShownMoreThanOneConsecutiveEntry()
-
@Test
fun dockedStackDividerIsInvisible() = testSpec.dockedStackDividerIsInvisible()
- @Test
- fun appWindowIsVisible() {
- testSpec.assertWmEnd {
- isInvisible(nonResizeableApp.defaultWindowName)
- }
- }
-
companion object {
@Parameterized.Parameters(name = "{0}")
@JvmStatic
diff --git a/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/legacysplitscreen/EnterSplitScreenSupportNonResizable.kt b/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/legacysplitscreen/EnterSplitScreenSupportNonResizable.kt
index 9b4a103..91ca7c1 100644
--- a/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/legacysplitscreen/EnterSplitScreenSupportNonResizable.kt
+++ b/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/legacysplitscreen/EnterSplitScreenSupportNonResizable.kt
@@ -19,7 +19,6 @@
import android.platform.test.annotations.Postsubmit
import android.provider.Settings
import android.view.Surface
-import androidx.test.filters.FlakyTest
import androidx.test.filters.RequiresDevice
import com.android.server.wm.flicker.FlickerParametersRunnerFactory
import com.android.server.wm.flicker.FlickerTestParameter
@@ -92,15 +91,6 @@
prevSupportNonResizableInMultiWindow)
}
- @FlakyTest(bugId = 178447631)
- @Test
- override fun visibleLayersShownMoreThanOneConsecutiveEntry() =
- super.visibleLayersShownMoreThanOneConsecutiveEntry()
-
- @Test
- override fun visibleWindowsShownMoreThanOneConsecutiveEntry() =
- super.visibleWindowsShownMoreThanOneConsecutiveEntry()
-
@Test
fun dockedStackDividerIsVisible() = testSpec.dockedStackDividerIsVisible()
diff --git a/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/legacysplitscreen/ExitLegacySplitScreenFromBottom.kt b/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/legacysplitscreen/ExitLegacySplitScreenFromBottom.kt
index 64cc853..faf7aa7 100644
--- a/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/legacysplitscreen/ExitLegacySplitScreenFromBottom.kt
+++ b/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/legacysplitscreen/ExitLegacySplitScreenFromBottom.kt
@@ -78,12 +78,6 @@
@Test
fun layerBecomesInvisible() = testSpec.layerBecomesInvisible(DOCKED_STACK_DIVIDER)
- @FlakyTest(bugId = 178447631)
- @Test
- override fun visibleLayersShownMoreThanOneConsecutiveEntry() {
- super.visibleLayersShownMoreThanOneConsecutiveEntry()
- }
-
@FlakyTest
@Test
fun appWindowBecomesInVisible() =
@@ -97,11 +91,6 @@
@Test
fun statusBarWindowIsAlwaysVisible() = testSpec.statusBarWindowIsAlwaysVisible()
- @FlakyTest(bugId = 178447631)
- @Test
- override fun visibleWindowsShownMoreThanOneConsecutiveEntry() =
- super.visibleWindowsShownMoreThanOneConsecutiveEntry()
-
companion object {
@Parameterized.Parameters(name = "{0}")
@JvmStatic
diff --git a/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/legacysplitscreen/ExitPrimarySplitScreenShowSecondaryFullscreen.kt b/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/legacysplitscreen/ExitPrimarySplitScreenShowSecondaryFullscreen.kt
index 2e11551..8845777 100644
--- a/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/legacysplitscreen/ExitPrimarySplitScreenShowSecondaryFullscreen.kt
+++ b/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/legacysplitscreen/ExitPrimarySplitScreenShowSecondaryFullscreen.kt
@@ -82,11 +82,6 @@
@Test
fun layerBecomesInvisible() = testSpec.layerBecomesInvisible(splitScreenApp.defaultWindowName)
- @FlakyTest(bugId = 178447631)
- @Test
- override fun visibleLayersShownMoreThanOneConsecutiveEntry() =
- super.visibleLayersShownMoreThanOneConsecutiveEntry()
-
@FlakyTest
@Test
fun appWindowBecomesInVisible() =
@@ -100,11 +95,6 @@
@Test
fun statusBarWindowIsAlwaysVisible() = testSpec.statusBarWindowIsAlwaysVisible()
- @FlakyTest(bugId = 178447631)
- @Test
- override fun visibleWindowsShownMoreThanOneConsecutiveEntry() =
- super.visibleWindowsShownMoreThanOneConsecutiveEntry()
-
companion object {
@Parameterized.Parameters(name = "{0}")
@JvmStatic
diff --git a/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/legacysplitscreen/LegacySplitScreenFromIntentNotSupportNonResizable.kt b/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/legacysplitscreen/LegacySplitScreenFromIntentNotSupportNonResizable.kt
index 8923845..968aff1 100644
--- a/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/legacysplitscreen/LegacySplitScreenFromIntentNotSupportNonResizable.kt
+++ b/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/legacysplitscreen/LegacySplitScreenFromIntentNotSupportNonResizable.kt
@@ -19,7 +19,6 @@
import android.platform.test.annotations.Postsubmit
import android.provider.Settings
import android.view.Surface
-import androidx.test.filters.FlakyTest
import androidx.test.filters.RequiresDevice
import com.android.server.wm.flicker.FlickerParametersRunnerFactory
import com.android.server.wm.flicker.FlickerTestParameter
@@ -96,16 +95,6 @@
prevSupportNonResizableInMultiWindow)
}
- @FlakyTest(bugId = 178447631)
- @Test
- override fun visibleLayersShownMoreThanOneConsecutiveEntry() =
- super.visibleLayersShownMoreThanOneConsecutiveEntry()
-
- @FlakyTest(bugId = 178447631)
- @Test
- override fun visibleWindowsShownMoreThanOneConsecutiveEntry() =
- super.visibleWindowsShownMoreThanOneConsecutiveEntry()
-
@Test
fun resizableAppLayerBecomesInvisible() =
testSpec.layerBecomesInvisible(splitScreenApp.defaultWindowName)
diff --git a/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/legacysplitscreen/LegacySplitScreenFromIntentSupportNonResizable.kt b/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/legacysplitscreen/LegacySplitScreenFromIntentSupportNonResizable.kt
index 2f5e0bd..8d20673 100644
--- a/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/legacysplitscreen/LegacySplitScreenFromIntentSupportNonResizable.kt
+++ b/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/legacysplitscreen/LegacySplitScreenFromIntentSupportNonResizable.kt
@@ -19,7 +19,6 @@
import android.platform.test.annotations.Postsubmit
import android.provider.Settings
import android.view.Surface
-import androidx.test.filters.FlakyTest
import androidx.test.filters.RequiresDevice
import com.android.server.wm.flicker.FlickerParametersRunnerFactory
import com.android.server.wm.flicker.FlickerTestParameter
@@ -94,16 +93,6 @@
prevSupportNonResizableInMultiWindow)
}
- @FlakyTest(bugId = 178447631)
- @Test
- override fun visibleLayersShownMoreThanOneConsecutiveEntry() =
- super.visibleLayersShownMoreThanOneConsecutiveEntry()
-
- @FlakyTest(bugId = 178447631)
- @Test
- override fun visibleWindowsShownMoreThanOneConsecutiveEntry() =
- super.visibleWindowsShownMoreThanOneConsecutiveEntry()
-
@Test
fun nonResizableAppLayerBecomesVisible() =
testSpec.layerBecomesVisible(nonResizeableApp.defaultWindowName)
diff --git a/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/legacysplitscreen/LegacySplitScreenFromRecentNotSupportNonResizable.kt b/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/legacysplitscreen/LegacySplitScreenFromRecentNotSupportNonResizable.kt
index a42774d..4e291d9 100644
--- a/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/legacysplitscreen/LegacySplitScreenFromRecentNotSupportNonResizable.kt
+++ b/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/legacysplitscreen/LegacySplitScreenFromRecentNotSupportNonResizable.kt
@@ -19,7 +19,6 @@
import android.platform.test.annotations.Postsubmit
import android.provider.Settings
import android.view.Surface
-import androidx.test.filters.FlakyTest
import androidx.test.filters.RequiresDevice
import com.android.server.wm.flicker.FlickerParametersRunnerFactory
import com.android.server.wm.flicker.FlickerTestParameter
@@ -97,16 +96,6 @@
prevSupportNonResizableInMultiWindow)
}
- @FlakyTest(bugId = 178447631)
- @Test
- override fun visibleLayersShownMoreThanOneConsecutiveEntry() =
- super.visibleLayersShownMoreThanOneConsecutiveEntry()
-
- @FlakyTest(bugId = 178447631)
- @Test
- override fun visibleWindowsShownMoreThanOneConsecutiveEntry() =
- super.visibleWindowsShownMoreThanOneConsecutiveEntry()
-
@Test
fun resizableAppLayerBecomesInvisible() =
testSpec.layerBecomesInvisible(splitScreenApp.defaultWindowName)
diff --git a/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/legacysplitscreen/LegacySplitScreenFromRecentSupportNonResizable.kt b/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/legacysplitscreen/LegacySplitScreenFromRecentSupportNonResizable.kt
index 14f6dee..880dc55 100644
--- a/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/legacysplitscreen/LegacySplitScreenFromRecentSupportNonResizable.kt
+++ b/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/legacysplitscreen/LegacySplitScreenFromRecentSupportNonResizable.kt
@@ -19,7 +19,6 @@
import android.platform.test.annotations.Postsubmit
import android.provider.Settings
import android.view.Surface
-import androidx.test.filters.FlakyTest
import androidx.test.filters.RequiresDevice
import com.android.server.wm.flicker.FlickerParametersRunnerFactory
import com.android.server.wm.flicker.FlickerTestParameter
@@ -95,16 +94,6 @@
prevSupportNonResizableInMultiWindow)
}
- @FlakyTest(bugId = 178447631)
- @Test
- override fun visibleLayersShownMoreThanOneConsecutiveEntry() =
- super.visibleLayersShownMoreThanOneConsecutiveEntry()
-
- @FlakyTest(bugId = 178447631)
- @Test
- override fun visibleWindowsShownMoreThanOneConsecutiveEntry() =
- super.visibleWindowsShownMoreThanOneConsecutiveEntry()
-
@Test
fun nonResizableAppLayerBecomesVisible() =
testSpec.layerBecomesVisible(nonResizeableApp.defaultWindowName)
diff --git a/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/legacysplitscreen/LegacySplitScreenRotateTransition.kt b/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/legacysplitscreen/LegacySplitScreenRotateTransition.kt
index 08d5db0..1e89a25 100644
--- a/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/legacysplitscreen/LegacySplitScreenRotateTransition.kt
+++ b/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/legacysplitscreen/LegacySplitScreenRotateTransition.kt
@@ -17,13 +17,11 @@
package com.android.wm.shell.flicker.legacysplitscreen
import android.view.Surface
-import androidx.test.filters.FlakyTest
import com.android.server.wm.flicker.FlickerTestParameter
import com.android.server.wm.flicker.dsl.FlickerBuilder
import com.android.server.wm.flicker.helpers.openQuickStepAndClearRecentAppsFromOverview
import com.android.server.wm.flicker.helpers.setRotation
import com.android.server.wm.flicker.helpers.wakeUpAndGoToHomeScreen
-import org.junit.Test
abstract class LegacySplitScreenRotateTransition(
testSpec: FlickerTestParameter
@@ -46,16 +44,4 @@
}
}
}
-
- @FlakyTest
- @Test
- override fun visibleLayersShownMoreThanOneConsecutiveEntry() {
- super.visibleLayersShownMoreThanOneConsecutiveEntry()
- }
-
- @FlakyTest
- @Test
- override fun visibleWindowsShownMoreThanOneConsecutiveEntry() {
- super.visibleWindowsShownMoreThanOneConsecutiveEntry()
- }
}
diff --git a/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/legacysplitscreen/LegacySplitScreenToLauncher.kt b/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/legacysplitscreen/LegacySplitScreenToLauncher.kt
index 39f4ce2..976668e 100644
--- a/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/legacysplitscreen/LegacySplitScreenToLauncher.kt
+++ b/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/legacysplitscreen/LegacySplitScreenToLauncher.kt
@@ -118,11 +118,6 @@
fun statusBarLayerRotatesScales() =
testSpec.statusBarLayerRotatesScales(testSpec.config.endRotation)
- @FlakyTest
- @Test
- override fun visibleLayersShownMoreThanOneConsecutiveEntry() =
- super.visibleLayersShownMoreThanOneConsecutiveEntry()
-
@Presubmit
@Test
fun statusBarLayerIsAlwaysVisible() = testSpec.statusBarLayerIsAlwaysVisible()
diff --git a/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/legacysplitscreen/LegacySplitScreenTransition.kt b/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/legacysplitscreen/LegacySplitScreenTransition.kt
index e13056c..8684ba5 100644
--- a/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/legacysplitscreen/LegacySplitScreenTransition.kt
+++ b/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/legacysplitscreen/LegacySplitScreenTransition.kt
@@ -18,9 +18,9 @@
import android.app.Instrumentation
import android.content.Context
-import android.platform.test.annotations.Presubmit
import android.support.test.launcherhelper.LauncherStrategyFactory
import android.view.Surface
+import androidx.test.filters.FlakyTest
import androidx.test.platform.app.InstrumentationRegistry
import com.android.server.wm.flicker.FlickerBuilderProvider
import com.android.server.wm.flicker.FlickerTestParameter
@@ -102,7 +102,7 @@
}
}
- @Presubmit
+ @FlakyTest(bugId = 178447631)
@Test
open fun visibleWindowsShownMoreThanOneConsecutiveEntry() {
testSpec.assertWm {
@@ -110,7 +110,7 @@
}
}
- @Presubmit
+ @FlakyTest(bugId = 178447631)
@Test
open fun visibleLayersShownMoreThanOneConsecutiveEntry() {
testSpec.assertLayers {
diff --git a/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/legacysplitscreen/OpenAppToLegacySplitScreen.kt b/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/legacysplitscreen/OpenAppToLegacySplitScreen.kt
index 7cf30ec..69520c2 100644
--- a/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/legacysplitscreen/OpenAppToLegacySplitScreen.kt
+++ b/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/legacysplitscreen/OpenAppToLegacySplitScreen.kt
@@ -65,11 +65,6 @@
WindowManagerStateHelper.SPLASH_SCREEN_NAME,
WindowManagerStateHelper.SNAPSHOT_WINDOW_NAME)
- @FlakyTest(bugId = 178447631)
- @Test
- override fun visibleWindowsShownMoreThanOneConsecutiveEntry() =
- super.visibleWindowsShownMoreThanOneConsecutiveEntry()
-
@FlakyTest
@Test
fun appWindowBecomesVisible() = testSpec.appWindowBecomesVisible(splitScreenApp.getPackage())
@@ -90,11 +85,6 @@
@Test
fun layerBecomesVisible() = testSpec.layerBecomesVisible(splitScreenApp.getPackage())
- @FlakyTest(bugId = 178447631)
- @Test
- override fun visibleLayersShownMoreThanOneConsecutiveEntry() =
- super.visibleLayersShownMoreThanOneConsecutiveEntry()
-
@FlakyTest(bugId = 151179149)
@Test
fun focusChanges() = testSpec.focusChanges(splitScreenApp.`package`,
diff --git a/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/legacysplitscreen/ResizeLegacySplitScreen.kt b/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/legacysplitscreen/ResizeLegacySplitScreen.kt
index 33ade38..ecbb887 100644
--- a/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/legacysplitscreen/ResizeLegacySplitScreen.kt
+++ b/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/legacysplitscreen/ResizeLegacySplitScreen.kt
@@ -104,13 +104,6 @@
@Test
fun statusBarWindowIsAlwaysVisible() = testSpec.statusBarWindowIsAlwaysVisible()
- @Test
- override fun visibleWindowsShownMoreThanOneConsecutiveEntry() {
- testSpec.assertWm {
- this.visibleWindowsShownMoreThanOneConsecutiveEntry()
- }
- }
-
@FlakyTest(bugId = 156223549)
@Test
fun topAppWindowIsAlwaysVisible() {
@@ -145,10 +138,6 @@
testSpec.statusBarLayerRotatesScales(testSpec.config.endRotation)
@Test
- override fun visibleLayersShownMoreThanOneConsecutiveEntry() =
- super.visibleLayersShownMoreThanOneConsecutiveEntry()
-
- @Test
fun topAppLayerIsAlwaysVisible() {
testSpec.assertLayers {
this.isVisible(sSimpleActivity)
diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/bubbles/storage/BubblePersistentRepositoryTest.kt b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/bubbles/storage/BubblePersistentRepositoryTest.kt
index 2f064ac..0972cf2 100644
--- a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/bubbles/storage/BubblePersistentRepositoryTest.kt
+++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/bubbles/storage/BubblePersistentRepositoryTest.kt
@@ -18,8 +18,10 @@
import android.app.ActivityTaskManager.INVALID_TASK_ID
import android.testing.AndroidTestingRunner
+import android.util.SparseArray
import androidx.test.filters.SmallTest
import com.android.wm.shell.ShellTestCase
+import com.android.wm.shell.bubbles.storage.BubbleXmlHelperTest.Companion.sparseArraysEqual
import junit.framework.Assert.assertEquals
import junit.framework.Assert.assertNotNull
import junit.framework.Assert.assertTrue
@@ -31,19 +33,32 @@
@RunWith(AndroidTestingRunner::class)
class BubblePersistentRepositoryTest : ShellTestCase() {
- private val bubbles = listOf(
- // user, package, shortcut, notification key, height, res-height, title, taskId, locusId
- BubbleEntity(0, "com.example.messenger", "shortcut-1", "key-1", 120, 0, null, 1, null),
- BubbleEntity(10, "com.example.chat", "alice and bob", "key-2", 0, 16537428, "title",
- 2, null),
- BubbleEntity(0, "com.example.messenger", "shortcut-2", "key-3", 120, 0, null,
- INVALID_TASK_ID, "key-3")
+ // user, package, shortcut, notification key, height, res-height, title, taskId, locusId
+ private val user0Bubbles = listOf(
+ BubbleEntity(0, "com.example.messenger", "shortcut-1", "0k1", 120, 0, null, 1, null),
+ BubbleEntity(10, "com.example.chat", "alice and bob", "0k2", 0, 16537428, "title", 2,
+ null),
+ BubbleEntity(0, "com.example.messenger", "shortcut-2", "0k3", 120, 0, null,
+ INVALID_TASK_ID, null)
)
+
+ private val user1Bubbles = listOf(
+ BubbleEntity(1, "com.example.messenger", "shortcut-1", "1k1", 120, 0, null, 3, null),
+ BubbleEntity(12, "com.example.chat", "alice and bob", "1k2", 0, 16537428, "title", 4,
+ null),
+ BubbleEntity(1, "com.example.messenger", "shortcut-2", "1k3", 120, 0, null,
+ INVALID_TASK_ID, null)
+ )
+
+ private val bubbles = SparseArray<List<BubbleEntity>>()
+
private lateinit var repository: BubblePersistentRepository
@Before
fun setup() {
repository = BubblePersistentRepository(mContext)
+ bubbles.put(0, user0Bubbles)
+ bubbles.put(1, user1Bubbles)
}
@Test
@@ -51,9 +66,9 @@
// Verify read before write doesn't cause FileNotFoundException
val actual = repository.readFromDisk()
assertNotNull(actual)
- assertTrue(actual.isEmpty())
+ assertEquals(actual.size(), 0)
repository.persistsToDisk(bubbles)
- assertEquals(bubbles, repository.readFromDisk())
+ assertTrue(sparseArraysEqual(bubbles, repository.readFromDisk()))
}
}
\ No newline at end of file
diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/bubbles/storage/BubbleVolatileRepositoryTest.kt b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/bubbles/storage/BubbleVolatileRepositoryTest.kt
index 03aa6c2..bfdf520 100644
--- a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/bubbles/storage/BubbleVolatileRepositoryTest.kt
+++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/bubbles/storage/BubbleVolatileRepositoryTest.kt
@@ -21,32 +21,40 @@
import android.os.UserHandle
import android.testing.AndroidTestingRunner
import androidx.test.filters.SmallTest
+import org.junit.Test
import com.android.wm.shell.ShellTestCase
import junit.framework.Assert.assertEquals
import org.junit.Before
-import org.junit.Test
import org.junit.runner.RunWith
import org.mockito.ArgumentMatchers.eq
+import org.mockito.Mockito
import org.mockito.Mockito.mock
import org.mockito.Mockito.verify
-import org.mockito.Mockito.verifyNoMoreInteractions
+import org.mockito.Mockito.reset
@SmallTest
@RunWith(AndroidTestingRunner::class)
class BubbleVolatileRepositoryTest : ShellTestCase() {
private val user0 = UserHandle.of(0)
- private val user10 = UserHandle.of(10)
+ private val user10_managed = UserHandle.of(10) // In test, acts as workprofile of user0
+ private val user11 = UserHandle.of(11)
// user, package, shortcut, notification key, height, res-height, title, taskId, locusId
- private val bubble1 = BubbleEntity(0, "com.example.messenger", "shortcut-1", "key-1", 120, 0,
- null, 1, null)
+ private val bubble1 = BubbleEntity(0, "com.example.messenger", "shortcut-1",
+ "0key-1", 120, 0, null, 1, null)
private val bubble2 = BubbleEntity(10, "com.example.chat", "alice and bob",
- "key-2", 0, 16537428, "title", 2, null)
- private val bubble3 = BubbleEntity(0, "com.example.messenger", "shortcut-2", "key-3", 120, 0,
- null, INVALID_TASK_ID, "key-3")
+ "10key-2", 0, 16537428, "title", 2, null)
+ private val bubble3 = BubbleEntity(0, "com.example.messenger", "shortcut-2",
+ "0key-3", 120, 0, null, INVALID_TASK_ID, null)
- private val bubbles = listOf(bubble1, bubble2, bubble3)
+ private val bubble11 = BubbleEntity(11, "com.example.messenger",
+ "shortcut-1", "01key-1", 120, 0, null, 3)
+ private val bubble12 = BubbleEntity(11, "com.example.chat", "alice and bob",
+ "11key-2", 0, 16537428, "title", INVALID_TASK_ID)
+
+ private val user0bubbles = listOf(bubble1, bubble2, bubble3)
+ private val user11bubbles = listOf(bubble11, bubble12)
private lateinit var repository: BubbleVolatileRepository
private lateinit var launcherApps: LauncherApps
@@ -59,51 +67,74 @@
@Test
fun testAddBubbles() {
- repository.addBubbles(bubbles)
- assertEquals(bubbles, repository.bubbles)
+ repository.addBubbles(user0.identifier, user0bubbles)
+ repository.addBubbles(user11.identifier, user11bubbles)
+
+ assertEquals(user0bubbles, repository.getEntities(user0.identifier).toList())
+ assertEquals(user11bubbles, repository.getEntities(user11.identifier).toList())
+
verify(launcherApps).cacheShortcuts(eq(PKG_MESSENGER),
eq(listOf("shortcut-1", "shortcut-2")), eq(user0),
eq(LauncherApps.FLAG_CACHE_BUBBLE_SHORTCUTS))
verify(launcherApps).cacheShortcuts(eq(PKG_CHAT),
- eq(listOf("alice and bob")), eq(user10),
+ eq(listOf("alice and bob")), eq(user10_managed),
eq(LauncherApps.FLAG_CACHE_BUBBLE_SHORTCUTS))
- repository.addBubbles(listOf(bubble1))
- assertEquals(listOf(bubble2, bubble3, bubble1), repository.bubbles)
- verifyNoMoreInteractions(launcherApps)
+ verify(launcherApps).cacheShortcuts(eq(PKG_MESSENGER),
+ eq(listOf("shortcut-1")), eq(user11),
+ eq(LauncherApps.FLAG_CACHE_BUBBLE_SHORTCUTS))
+ verify(launcherApps).cacheShortcuts(eq(PKG_CHAT),
+ eq(listOf("alice and bob")), eq(user11),
+ eq(LauncherApps.FLAG_CACHE_BUBBLE_SHORTCUTS))
+
+ repository.addBubbles(user0.identifier, listOf(bubble1))
+ assertEquals(listOf(bubble2, bubble3, bubble1), repository.getEntities(user0.identifier))
+
+ repository.addBubbles(user11.identifier, listOf(bubble12))
+ assertEquals(listOf(bubble11, bubble12), repository.getEntities(user11.identifier))
+
+ Mockito.verifyNoMoreInteractions(launcherApps)
}
@Test
fun testRemoveBubbles() {
- repository.addBubbles(bubbles)
- assertEquals(bubbles, repository.bubbles)
+ repository.addBubbles(user0.identifier, user0bubbles)
+ repository.addBubbles(user11.identifier, user11bubbles)
- repository.removeBubbles(listOf(bubble3))
- assertEquals(listOf(bubble1, bubble2), repository.bubbles)
+ repository.removeBubbles(user0.identifier, listOf(bubble3))
+ assertEquals(listOf(bubble1, bubble2), repository.getEntities(user0.identifier).toList())
verify(launcherApps).uncacheShortcuts(eq(PKG_MESSENGER),
eq(listOf("shortcut-2")), eq(user0),
eq(LauncherApps.FLAG_CACHE_BUBBLE_SHORTCUTS))
+
+ reset(launcherApps)
+
+ repository.removeBubbles(user11.identifier, listOf(bubble12))
+ assertEquals(listOf(bubble11), repository.getEntities(user11.identifier).toList())
+ verify(launcherApps).uncacheShortcuts(eq(PKG_CHAT),
+ eq(listOf("alice and bob")), eq(user11),
+ eq(LauncherApps.FLAG_CACHE_BUBBLE_SHORTCUTS))
}
@Test
fun testAddAndRemoveBubblesWhenExceedingCapacity() {
repository.capacity = 2
// push bubbles beyond capacity
- repository.addBubbles(bubbles)
+ repository.addBubbles(user0.identifier, user0bubbles)
// verify it is trim down to capacity
- assertEquals(listOf(bubble2, bubble3), repository.bubbles)
+ assertEquals(listOf(bubble2, bubble3), repository.getEntities(user0.identifier).toList())
verify(launcherApps).cacheShortcuts(eq(PKG_MESSENGER),
eq(listOf("shortcut-2")), eq(user0),
eq(LauncherApps.FLAG_CACHE_BUBBLE_SHORTCUTS))
verify(launcherApps).cacheShortcuts(eq(PKG_CHAT),
- eq(listOf("alice and bob")), eq(user10),
+ eq(listOf("alice and bob")), eq(user10_managed),
eq(LauncherApps.FLAG_CACHE_BUBBLE_SHORTCUTS))
- repository.addBubbles(listOf(bubble1))
- // verify the oldest bubble is popped
- assertEquals(listOf(bubble3, bubble1), repository.bubbles)
+ repository.addBubbles(user0.identifier, listOf(bubble1))
+ // verify the oldest bubble is popped 2, 3
+ assertEquals(listOf(bubble3, bubble1), repository.getEntities(user0.identifier).toList())
verify(launcherApps).uncacheShortcuts(eq(PKG_CHAT),
- eq(listOf("alice and bob")), eq(user10),
+ eq(listOf("alice and bob")), eq(user10_managed),
eq(LauncherApps.FLAG_CACHE_BUBBLE_SHORTCUTS))
}
@@ -111,14 +142,14 @@
fun testAddBubbleMatchesByKey() {
val bubble = BubbleEntity(0, "com.example.pkg", "shortcut-id", "key", 120, 0, "title",
1, null)
- repository.addBubbles(listOf(bubble))
- assertEquals(bubble, repository.bubbles.get(0))
+ repository.addBubbles(user0.identifier, listOf(bubble))
+ assertEquals(bubble, repository.getEntities(user0.identifier).get(0))
// Same key as first bubble but different entry
val bubbleModified = BubbleEntity(0, "com.example.pkg", "shortcut-id", "key", 120, 0,
- "different title", 2, null)
- repository.addBubbles(listOf(bubbleModified))
- assertEquals(bubbleModified, repository.bubbles.get(0))
+ "different title", 2)
+ repository.addBubbles(user0.identifier, listOf(bubbleModified))
+ assertEquals(bubbleModified, repository.getEntities(user0.identifier).get(0))
}
}
diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/bubbles/storage/BubbleXmlHelperTest.kt b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/bubbles/storage/BubbleXmlHelperTest.kt
index 8d719e7..4ab9f87 100644
--- a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/bubbles/storage/BubbleXmlHelperTest.kt
+++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/bubbles/storage/BubbleXmlHelperTest.kt
@@ -18,10 +18,12 @@
import android.app.ActivityTaskManager.INVALID_TASK_ID
import android.testing.AndroidTestingRunner
+import android.util.SparseArray
import androidx.test.filters.SmallTest
import com.android.wm.shell.ShellTestCase
import junit.framework.Assert.assertEquals
import junit.framework.Assert.assertTrue
+import org.junit.Before
import org.junit.Test
import org.junit.runner.RunWith
import java.io.ByteArrayInputStream
@@ -31,21 +33,65 @@
@RunWith(AndroidTestingRunner::class)
class BubbleXmlHelperTest : ShellTestCase() {
- private val bubbles = listOf(
- // user, package, shortcut, notification key, height, res-height, title, taskId, locusId
- BubbleEntity(0, "com.example.messenger", "shortcut-1", "k1", 120, 0, null, 1),
- BubbleEntity(10, "com.example.chat", "alice and bob", "k2", 0, 16537428, "title",
- 2, null),
- BubbleEntity(0, "com.example.messenger", "shortcut-2", "k3", 120, 0, null,
+ private val user0Bubbles = listOf(
+ BubbleEntity(0, "com.example.messenger", "shortcut-1", "0k1", 120, 0, null, 1),
+ BubbleEntity(10, "com.example.chat", "alice and bob", "0k2", 0, 16537428, "title", 2,
+ null),
+ BubbleEntity(0, "com.example.messenger", "shortcut-2", "0k3", 120, 0, null,
INVALID_TASK_ID, "l3")
)
+ private val user1Bubbles = listOf(
+ BubbleEntity(1, "com.example.messenger", "shortcut-1", "1k1", 120, 0, null, 3),
+ BubbleEntity(12, "com.example.chat", "alice and bob", "1k2", 0, 16537428, "title", 4,
+ null),
+ BubbleEntity(1, "com.example.messenger", "shortcut-2", "1k3", 120, 0, null,
+ INVALID_TASK_ID, "l4")
+ )
+
+ private val bubbles = SparseArray<List<BubbleEntity>>()
+
+ // Checks that the contents of the two sparse arrays are the same.
+ companion object {
+ fun sparseArraysEqual(
+ one: SparseArray<List<BubbleEntity>>?,
+ two: SparseArray<List<BubbleEntity>>?
+ ): Boolean {
+ if (one == null && two == null) return true
+ if ((one == null) != (two == null)) return false
+ if (one!!.size() != two!!.size()) return false
+ for (i in 0 until one.size()) {
+ val k1 = one.keyAt(i)
+ val v1 = one.valueAt(i)
+ val k2 = two.keyAt(i)
+ val v2 = two.valueAt(i)
+ if (k1 != k2 && v1 != v2) {
+ return false
+ }
+ }
+ return true
+ }
+ }
+
+ @Before
+ fun setup() {
+ bubbles.put(0, user0Bubbles)
+ bubbles.put(1, user1Bubbles)
+ }
+
@Test
fun testWriteXml() {
val expectedEntries = """
-<bb uid="0" pkg="com.example.messenger" sid="shortcut-1" key="k1" h="120" hid="0" tid="1" />
-<bb uid="10" pkg="com.example.chat" sid="alice and bob" key="k2" h="0" hid="16537428" t="title" tid="2" />
-<bb uid="0" pkg="com.example.messenger" sid="shortcut-2" key="k3" h="120" hid="0" tid="-1" l="l3" />
+<bs uid="0">
+<bb uid="0" pkg="com.example.messenger" sid="shortcut-1" key="0k1" h="120" hid="0" tid="1" />
+<bb uid="10" pkg="com.example.chat" sid="alice and bob" key="0k2" h="0" hid="16537428" t="title" tid="2" />
+<bb uid="0" pkg="com.example.messenger" sid="shortcut-2" key="0k3" h="120" hid="0" tid="-1" l="l3" />
+</bs>
+<bs uid="1">
+<bb uid="1" pkg="com.example.messenger" sid="shortcut-1" key="1k1" h="120" hid="0" tid="3" />
+<bb uid="12" pkg="com.example.chat" sid="alice and bob" key="1k2" h="0" hid="16537428" t="title" tid="4" />
+<bb uid="1" pkg="com.example.messenger" sid="shortcut-2" key="1k3" h="120" hid="0" tid="-1" l="l4" />
+</bs>
""".trimIndent()
ByteArrayOutputStream().use {
writeXml(it, bubbles)
@@ -59,19 +105,26 @@
fun testReadXml() {
val src = """
<?xml version='1.0' encoding='utf-8' standalone='yes' ?>
-<bs v="1">
-<bb uid="0" pkg="com.example.messenger" sid="shortcut-1" key="k1" h="120" hid="0" tid="1" />
-<bb uid="10" pkg="com.example.chat" sid="alice and bob" key="k2" h="0" hid="16537428" t="title" tid="2" />
-<bb uid="0" pkg="com.example.messenger" sid="shortcut-2" key="k3" h="120" hid="0" tid="-1" l="l3" />
+<bs v="2">
+<bs uid="0">
+<bb uid="0" pkg="com.example.messenger" sid="shortcut-1" key="0k1" h="120" hid="0" tid="1" />
+<bb uid="10" pkg="com.example.chat" sid="alice and bob" key="0k2" h="0" hid="16537428" t="title" tid="2" />
+<bb uid="0" pkg="com.example.messenger" sid="shortcut-2" key="0k3" h="120" hid="0" tid="-1" l="l3" />
+</bs>
+<bs uid="1">
+<bb uid="1" pkg="com.example.messenger" sid="shortcut-1" key="1k1" h="120" hid="0" tid="3" />
+<bb uid="12" pkg="com.example.chat" sid="alice and bob" key="1k2" h="0" hid="16537428" t="title" tid="4" />
+<bb uid="1" pkg="com.example.messenger" sid="shortcut-2" key="1k3" h="120" hid="0" tid="-1" l="l4" />
+</bs>
</bs>
""".trimIndent()
val actual = readXml(ByteArrayInputStream(src.toByteArray(Charsets.UTF_8)))
- assertEquals("failed parsing bubbles from xml\n$src", bubbles, actual)
+ assertTrue("failed parsing bubbles from xml\n$src", sparseArraysEqual(bubbles, actual))
}
- // TODO: We should handle upgrades gracefully but this is v1
+ // V0 -> V1 happened prior to release / during dogfood so nothing is saved
@Test
- fun testUpgradeDropsPreviousData() {
+ fun testUpgradeFromV0DropsPreviousData() {
val src = """
<?xml version='1.0' encoding='utf-8' standalone='yes' ?>
<bs>
@@ -81,7 +134,7 @@
</bs>
""".trimIndent()
val actual = readXml(ByteArrayInputStream(src.toByteArray(Charsets.UTF_8)))
- assertEquals("failed parsing bubbles from xml\n$src", emptyList<BubbleEntity>(), actual)
+ assertEquals("failed parsing bubbles from xml\n$src", 0, actual.size())
}
/**
@@ -91,24 +144,25 @@
*/
@Test
fun testReadXMLWithoutTaskId() {
- val expectedBubbles = listOf(
- BubbleEntity(0, "com.example.messenger", "shortcut-1", "k1", 120, 0, null,
- INVALID_TASK_ID),
- BubbleEntity(10, "com.example.chat", "alice and bob", "k2", 0, 16537428, "title",
- INVALID_TASK_ID),
- BubbleEntity(0, "com.example.messenger", "shortcut-2", "k3", 120, 0, null,
- INVALID_TASK_ID)
- )
+ val expectedBubbles = SparseArray<List<BubbleEntity>>()
+ expectedBubbles.put(0, listOf(
+ BubbleEntity(0, "com.example.messenger", "shortcut-1", "k1", 120, 0,
+ null, INVALID_TASK_ID),
+ BubbleEntity(0, "com.example.messenger", "shortcut-2", "k3", 120, 0,
+ null, INVALID_TASK_ID))
+ )
val src = """
<?xml version='1.0' encoding='utf-8' standalone='yes' ?>
-<bs v="1">
+<bs v="2">
+<bs uid="0">
<bb uid="0" pkg="com.example.messenger" sid="shortcut-1" key="k1" h="120" hid="0" />
-<bb uid="10" pkg="com.example.chat" sid="alice and bob" key="k2" h="0" hid="16537428" t="title" />
<bb uid="0" pkg="com.example.messenger" sid="shortcut-2" key="k3" h="120" hid="0" />
</bs>
+</bs>
""".trimIndent()
val actual = readXml(ByteArrayInputStream(src.toByteArray(Charsets.UTF_8)))
- assertEquals("failed parsing bubbles from xml\n$src", expectedBubbles, actual)
+ assertTrue("failed parsing bubbles from xml\n$src",
+ sparseArraysEqual(expectedBubbles, actual))
}
/**
@@ -117,23 +171,45 @@
*/
@Test
fun testXMLWithoutLocusToLocus() {
- val expectedBubbles = listOf(
- BubbleEntity(0, "com.example.messenger", "shortcut-1", "k1", 120, 0, null,
- INVALID_TASK_ID, null),
- BubbleEntity(10, "com.example.chat", "alice and bob", "k2", 0, 16537428, "title",
- INVALID_TASK_ID, null),
- BubbleEntity(0, "com.example.messenger", "shortcut-2", "k3", 120, 0, null,
- INVALID_TASK_ID, null)
+ val expectedBubbles = SparseArray<List<BubbleEntity>>()
+ expectedBubbles.put(0, listOf(
+ BubbleEntity(0, "com.example.messenger", "shortcut-1", "k1", 120, 0,
+ null, INVALID_TASK_ID),
+ BubbleEntity(0, "com.example.messenger", "shortcut-2", "k3", 120, 0,
+ null, INVALID_TASK_ID))
)
val src = """
<?xml version='1.0' encoding='utf-8' standalone='yes' ?>
<bs v="1">
<bb uid="0" pkg="com.example.messenger" sid="shortcut-1" key="k1" h="120" hid="0" />
-<bb uid="10" pkg="com.example.chat" sid="alice and bob" key="k2" h="0" hid="16537428" t="title" />
<bb uid="0" pkg="com.example.messenger" sid="shortcut-2" key="k3" h="120" hid="0" />
</bs>
""".trimIndent()
val actual = readXml(ByteArrayInputStream(src.toByteArray(Charsets.UTF_8)))
- assertEquals("failed parsing bubbles from xml\n$src", expectedBubbles, actual)
+ assertTrue("failed parsing bubbles from xml\n$src",
+ sparseArraysEqual(expectedBubbles, actual))
+ }
+
+ @Test
+ fun testUpgradeToV2SavesPreviousData() {
+ val src = """
+ <?xml version='1.0' encoding='utf-8' standalone='yes' ?>
+ <bs v="1">
+ <bb uid="0" pkg="com.example.messenger" sid="shortcut-1" key="k1" h="120" hid="0" />
+ <bb uid="10" pkg="com.example.chat" sid="alice and bob" key="k2" h="0" hid="16537428" t="title" />
+ <bb uid="2" pkg="com.example.messenger" sid="shortcut-2" key="k3" h="120" hid="0" />
+ <bb uid="0" pkg="com.example.messenger" sid="shortcut-4" key="k4" h="0" hid="16537428" />
+ </bs>
+ """.trimIndent()
+ val expectedBubbles = SparseArray<List<BubbleEntity>>()
+ expectedBubbles.put(0, listOf(
+ BubbleEntity(0, "com.example.messenger", "shortcut-1", "k1", 120, 0,
+ null, INVALID_TASK_ID, null),
+ BubbleEntity(0, "com.example.messenger", "shortcut-4", "k4", 0, 16537428,
+ null, INVALID_TASK_ID, null))
+ )
+ val actual = readXml(ByteArrayInputStream(src.toByteArray(Charsets.UTF_8)))
+ assertTrue("failed parsing bubbles from xml\n$src",
+ sparseArraysEqual(expectedBubbles, actual))
}
}
\ No newline at end of file
diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/pip/PipBoundsStateTest.java b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/pip/PipBoundsStateTest.java
index dea24d3..a6215d3 100644
--- a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/pip/PipBoundsStateTest.java
+++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/pip/PipBoundsStateTest.java
@@ -38,6 +38,8 @@
import org.junit.Test;
import org.junit.runner.RunWith;
+import java.util.function.Consumer;
+
/**
* Tests for {@link PipBoundsState}.
*/
@@ -178,4 +180,20 @@
mPipBoundsState.setOverrideMinSize(new Size(15, 10));
assertEquals(10, mPipBoundsState.getOverrideMinEdgeSize());
}
+
+ @Test
+ public void testSetBounds_updatesPipExclusionBounds() {
+ final Consumer<Rect> callback = mock(Consumer.class);
+ final Rect currentBounds = new Rect(10, 10, 20, 15);
+ final Rect newBounds = new Rect(50, 50, 100, 75);
+ mPipBoundsState.setBounds(currentBounds);
+
+ mPipBoundsState.setPipExclusionBoundsChangeCallback(callback);
+ // Setting the listener immediately calls back with the current bounds.
+ verify(callback).accept(currentBounds);
+
+ mPipBoundsState.setBounds(newBounds);
+ // Updating the bounds makes the listener call back back with the new rect.
+ verify(callback).accept(newBounds);
+ }
}
diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/pip/PipTaskOrganizerTest.java b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/pip/PipTaskOrganizerTest.java
index 5df391f..9d7c82b 100644
--- a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/pip/PipTaskOrganizerTest.java
+++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/pip/PipTaskOrganizerTest.java
@@ -19,6 +19,7 @@
import static com.android.wm.shell.pip.PipAnimationController.TRANSITION_DIRECTION_TO_PIP;
import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.anyInt;
import static org.mockito.ArgumentMatchers.anyLong;
@@ -31,6 +32,7 @@
import android.app.PictureInPictureParams;
import android.content.ComponentName;
import android.content.pm.ActivityInfo;
+import android.graphics.Rect;
import android.os.RemoteException;
import android.test.suitebuilder.annotation.SmallTest;
import android.testing.AndroidTestingRunner;
@@ -222,6 +224,16 @@
assertEquals(minSize, mPipBoundsState.getOverrideMinSize());
}
+ @Test
+ public void onTaskVanished_clearsPipBounds() {
+ mSpiedPipTaskOrganizer.onTaskAppeared(createTaskInfo(mComponent1,
+ createPipParams(null)), null /* leash */);
+ mPipBoundsState.setBounds(new Rect(100, 100, 200, 150));
+
+ mSpiedPipTaskOrganizer.onTaskVanished(createTaskInfo(mComponent1, createPipParams(null)));
+ assertTrue(mPipBoundsState.getBounds().isEmpty());
+ }
+
private void preparePipTaskOrg() {
final DisplayInfo info = new DisplayInfo();
mPipBoundsState.setDisplayLayout(new DisplayLayout(info,
diff --git a/location/java/android/location/Location.java b/location/java/android/location/Location.java
index 5f8d795..1e8b952 100644
--- a/location/java/android/location/Location.java
+++ b/location/java/android/location/Location.java
@@ -508,15 +508,23 @@
/**
* Return the UTC time of this location fix, in milliseconds since epoch (January 1, 1970).
*
- * <p>Note that the UTC time on a device is not monotonic; it can jump forwards or backwards
- * unpredictably, so this time should not be used to calculate time deltas between locations.
- * Instead prefer {@link #getElapsedRealtimeNanos} for that purpose.
+ * <p>There is no guarantee that different locations have times set from the same clock.
+ * Locations derived from the {@link LocationManager#GPS_PROVIDER} are guaranteed to have their
+ * time set from the clock in use by the satellite constellation that provided the fix.
+ * Locations derived from other providers may use any clock to set their time, though it is most
+ * common to use the device clock (which may be incorrect).
*
- * <p>On the other hand, this method is useful for presenting a human readable time to the user,
- * or for carefully comparing location fixes across reboot or across devices.
+ * <p>Note that the device clock UTC time is not monotonic; it can jump forwards or backwards
+ * unpredictably and may be changed at any time by the user, so this time should not be used to
+ * order or compare locations. Prefer {@link #getElapsedRealtimeNanos} for that purpose, as this
+ * clock is guaranteed to be monotonic.
*
- * <p>All locations generated by the {@link LocationManager} are guaranteed to have a UTC time,
- * however remember that the system time may have changed since the location was generated.
+ * <p>On the other hand, this method may be useful for presenting a human readable time to the
+ * user, or as a heuristic for comparing location fixes across reboot or across devices.
+ *
+ * <p>All locations generated by the {@link LocationManager} are guaranteed to have a UTC time
+ * set, however remember that the device clock may have changed since the location was
+ * generated.
*
* @return UTC time of fix, in milliseconds since January 1, 1970.
*/
@@ -534,53 +542,60 @@
}
/**
- * Return the time of this fix, in elapsed real-time since system boot.
+ * Return the time of this fix in nanoseconds of elapsed realtime since system boot.
*
- * <p>This value can be reliably compared to
- * {@link android.os.SystemClock#elapsedRealtimeNanos},
- * to calculate the age of a fix and to compare Location fixes. This
- * is reliable because elapsed real-time is guaranteed monotonic for
- * each system boot and continues to increment even when the system
- * is in deep sleep (unlike {@link #getTime}.
+ * <p>This value can be compared with {@link android.os.SystemClock#elapsedRealtimeNanos}, to
+ * reliably order or compare locations. This is reliable because elapsed realtime is guaranteed
+ * to be monotonic and continues to increment even when the system is in deep sleep (unlike
+ * {@link #getTime}). However, since elapsed realtime is with reference to system boot, it does
+ * not make sense to use this value to order or compare locations across boot cycles.
*
- * <p>All locations generated by the {@link LocationManager}
- * are guaranteed to have a valid elapsed real-time.
+ * <p>All locations generated by the {@link LocationManager} are guaranteed to have a valid
+ * elapsed realtime set.
*
- * @return elapsed real-time of fix, in nanoseconds since system boot.
+ * @return elapsed realtime of fix, in nanoseconds since system boot.
*/
public long getElapsedRealtimeNanos() {
return mElapsedRealtimeNanos;
}
- /** @hide */
+ /**
+ * Return the time of this fix in milliseconds of elapsed realtime since system boot.
+ *
+ * @see #getElapsedRealtimeNanos()
+ *
+ * @hide
+ */
public long getElapsedRealtimeMillis() {
return NANOSECONDS.toMillis(getElapsedRealtimeNanos());
}
- /** @hide */
- public long getElapsedRealtimeAgeNanos(long referenceRealtimeNs) {
- return referenceRealtimeNs - mElapsedRealtimeNanos;
- }
-
- /** @hide */
- public long getElapsedRealtimeAgeNanos() {
- return getElapsedRealtimeAgeNanos(SystemClock.elapsedRealtimeNanos());
- }
-
- /** @hide */
+ /**
+ * Returns the age of this fix with respect to the current elapsed realtime.
+ *
+ * @see #getElapsedRealtimeNanos()
+ *
+ * @hide
+ */
public long getElapsedRealtimeAgeMillis() {
return getElapsedRealtimeAgeMillis(SystemClock.elapsedRealtime());
}
- /** @hide */
+ /**
+ * Returns the age of this fix with respect to the given elapsed realtime.
+ *
+ * @see #getElapsedRealtimeNanos()
+ *
+ * @hide
+ */
public long getElapsedRealtimeAgeMillis(long referenceRealtimeMs) {
return referenceRealtimeMs - NANOSECONDS.toMillis(mElapsedRealtimeNanos);
}
/**
- * Set the time of this fix, in elapsed real-time since system boot.
+ * Set the time of this fix, in elapsed realtime since system boot.
*
- * @param time elapsed real-time of fix, in nanoseconds since system boot.
+ * @param time elapsed realtime of fix, in nanoseconds since system boot.
*/
public void setElapsedRealtimeNanos(long time) {
mElapsedRealtimeNanos = time;
@@ -1143,7 +1158,7 @@
s.append(" bAcc=").append(mBearingAccuracyDegrees);
}
}
- if (isFromMockProvider()) {
+ if (isMock()) {
s.append(" mock");
}
@@ -1293,12 +1308,12 @@
* and {@link #bearingTo} don't duplicate work.
*/
private static class BearingDistanceCache {
- private double mLat1 = 0.0;
- private double mLon1 = 0.0;
- private double mLat2 = 0.0;
- private double mLon2 = 0.0;
- private float mDistance = 0.0f;
- private float mInitialBearing = 0.0f;
- private float mFinalBearing = 0.0f;
+ double mLat1 = 0.0;
+ double mLon1 = 0.0;
+ double mLat2 = 0.0;
+ double mLon2 = 0.0;
+ float mDistance = 0.0f;
+ float mInitialBearing = 0.0f;
+ float mFinalBearing = 0.0f;
}
}
diff --git a/location/java/android/location/LocationManager.java b/location/java/android/location/LocationManager.java
index f1879fc..c1d6725 100644
--- a/location/java/android/location/LocationManager.java
+++ b/location/java/android/location/LocationManager.java
@@ -1953,7 +1953,7 @@
/**
* Sets a new location for the given test provider. This location will be identiable as a mock
- * location to all clients via {@link Location#isFromMockProvider()}.
+ * location to all clients via {@link Location#isMock()}.
*
* <p>The location object must have a minimum number of fields set to be considered valid, as
* per documentation on {@link Location} class.
diff --git a/media/java/android/media/AudioFormat.java b/media/java/android/media/AudioFormat.java
index 3a86786..0943595 100644
--- a/media/java/android/media/AudioFormat.java
+++ b/media/java/android/media/AudioFormat.java
@@ -434,6 +434,18 @@
public static final int CHANNEL_OUT_TOP_BACK_CENTER = 0x40000;
/** @hide */
public static final int CHANNEL_OUT_TOP_BACK_RIGHT = 0x80000;
+ /** @hide */
+ public static final int CHANNEL_OUT_TOP_SIDE_LEFT = 0x100000;
+ /** @hide */
+ public static final int CHANNEL_OUT_TOP_SIDE_RIGHT = 0x200000;
+ /** @hide */
+ public static final int CHANNEL_OUT_BOTTOM_FRONT_LEFT = 0x400000;
+ /** @hide */
+ public static final int CHANNEL_OUT_BOTTOM_FRONT_CENTER = 0x800000;
+ /** @hide */
+ public static final int CHANNEL_OUT_BOTTOM_FRONT_RIGHT = 0x1000000;
+ /** @hide */
+ public static final int CHANNEL_OUT_LOW_FREQUENCY_2 = 0x2000000;
public static final int CHANNEL_OUT_MONO = CHANNEL_OUT_FRONT_LEFT;
public static final int CHANNEL_OUT_STEREO = (CHANNEL_OUT_FRONT_LEFT | CHANNEL_OUT_FRONT_RIGHT);
@@ -463,6 +475,38 @@
CHANNEL_OUT_SIDE_LEFT | CHANNEL_OUT_SIDE_RIGHT |
CHANNEL_OUT_BACK_LEFT | CHANNEL_OUT_BACK_RIGHT |
CHANNEL_OUT_LOW_FREQUENCY);
+ /** @hide */
+ public static final int CHANNEL_OUT_5POINT1POINT2 = (CHANNEL_OUT_5POINT1 |
+ CHANNEL_OUT_TOP_SIDE_LEFT | CHANNEL_OUT_TOP_SIDE_RIGHT);
+ /** @hide */
+ public static final int CHANNEL_OUT_5POINT1POINT4 = (CHANNEL_OUT_5POINT1 |
+ CHANNEL_OUT_TOP_FRONT_LEFT | CHANNEL_OUT_TOP_FRONT_RIGHT |
+ CHANNEL_OUT_TOP_BACK_LEFT | CHANNEL_OUT_TOP_BACK_RIGHT);
+ /** @hide */
+ public static final int CHANNEL_OUT_7POINT1POINT2 = (CHANNEL_OUT_7POINT1_SURROUND |
+ CHANNEL_OUT_TOP_SIDE_LEFT | CHANNEL_OUT_TOP_SIDE_RIGHT);
+ /** @hide */
+ public static final int CHANNEL_OUT_7POINT1POINT4 = (CHANNEL_OUT_7POINT1_SURROUND |
+ CHANNEL_OUT_TOP_FRONT_LEFT | CHANNEL_OUT_TOP_FRONT_RIGHT |
+ CHANNEL_OUT_TOP_BACK_LEFT | CHANNEL_OUT_TOP_BACK_RIGHT);
+ /** @hide */
+ public static final int CHANNEL_OUT_13POINT_360RA = (
+ CHANNEL_OUT_FRONT_LEFT | CHANNEL_OUT_FRONT_CENTER | CHANNEL_OUT_FRONT_RIGHT |
+ CHANNEL_OUT_SIDE_LEFT | CHANNEL_OUT_SIDE_RIGHT |
+ CHANNEL_OUT_TOP_FRONT_LEFT | CHANNEL_OUT_TOP_FRONT_CENTER |
+ CHANNEL_OUT_TOP_FRONT_RIGHT |
+ CHANNEL_OUT_TOP_BACK_LEFT | CHANNEL_OUT_TOP_BACK_RIGHT |
+ CHANNEL_OUT_BOTTOM_FRONT_LEFT | CHANNEL_OUT_BOTTOM_FRONT_CENTER |
+ CHANNEL_OUT_BOTTOM_FRONT_RIGHT);
+ /** @hide */
+ public static final int CHANNEL_OUT_22POINT2 = (CHANNEL_OUT_7POINT1POINT4 |
+ CHANNEL_OUT_FRONT_LEFT_OF_CENTER | CHANNEL_OUT_FRONT_RIGHT_OF_CENTER |
+ CHANNEL_OUT_BACK_CENTER | CHANNEL_OUT_TOP_CENTER |
+ CHANNEL_OUT_TOP_FRONT_CENTER | CHANNEL_OUT_TOP_BACK_CENTER |
+ CHANNEL_OUT_TOP_SIDE_LEFT | CHANNEL_OUT_TOP_SIDE_RIGHT |
+ CHANNEL_OUT_BOTTOM_FRONT_LEFT | CHANNEL_OUT_BOTTOM_FRONT_RIGHT |
+ CHANNEL_OUT_BOTTOM_FRONT_CENTER |
+ CHANNEL_OUT_LOW_FREQUENCY_2);
// CHANNEL_OUT_ALL is not yet defined; if added then it should match AUDIO_CHANNEL_OUT_ALL
/** Minimum value for sample rate,
diff --git a/media/java/android/media/AudioTrack.java b/media/java/android/media/AudioTrack.java
index 2ea0984..b2b2f8e 100644
--- a/media/java/android/media/AudioTrack.java
+++ b/media/java/android/media/AudioTrack.java
@@ -45,6 +45,7 @@
import java.nio.ByteBuffer;
import java.nio.ByteOrder;
import java.nio.NioUtils;
+import java.util.HashMap;
import java.util.LinkedList;
import java.util.Objects;
import java.util.concurrent.Executor;
@@ -1595,9 +1596,24 @@
AudioFormat.CHANNEL_OUT_LOW_FREQUENCY |
AudioFormat.CHANNEL_OUT_BACK_LEFT |
AudioFormat.CHANNEL_OUT_BACK_RIGHT |
+ AudioFormat.CHANNEL_OUT_FRONT_LEFT_OF_CENTER |
+ AudioFormat.CHANNEL_OUT_FRONT_RIGHT_OF_CENTER |
AudioFormat.CHANNEL_OUT_BACK_CENTER |
AudioFormat.CHANNEL_OUT_SIDE_LEFT |
- AudioFormat.CHANNEL_OUT_SIDE_RIGHT;
+ AudioFormat.CHANNEL_OUT_SIDE_RIGHT |
+ AudioFormat.CHANNEL_OUT_TOP_CENTER |
+ AudioFormat.CHANNEL_OUT_TOP_FRONT_LEFT |
+ AudioFormat.CHANNEL_OUT_TOP_FRONT_CENTER |
+ AudioFormat.CHANNEL_OUT_TOP_FRONT_RIGHT |
+ AudioFormat.CHANNEL_OUT_TOP_BACK_LEFT |
+ AudioFormat.CHANNEL_OUT_TOP_BACK_CENTER |
+ AudioFormat.CHANNEL_OUT_TOP_BACK_RIGHT |
+ AudioFormat.CHANNEL_OUT_TOP_SIDE_LEFT |
+ AudioFormat.CHANNEL_OUT_TOP_SIDE_RIGHT |
+ AudioFormat.CHANNEL_OUT_BOTTOM_FRONT_LEFT |
+ AudioFormat.CHANNEL_OUT_BOTTOM_FRONT_CENTER |
+ AudioFormat.CHANNEL_OUT_BOTTOM_FRONT_RIGHT |
+ AudioFormat.CHANNEL_OUT_LOW_FREQUENCY_2;
// Returns a boolean whether the attributes, format, bufferSizeInBytes, mode allow
// power saving to be automatically enabled for an AudioTrack. Returns false if
@@ -1748,6 +1764,26 @@
mDataLoadMode = mode;
}
+ // General pair map
+ private static final HashMap<String, Integer> CHANNEL_PAIR_MAP = new HashMap<>() {{
+ put("front", AudioFormat.CHANNEL_OUT_FRONT_LEFT
+ | AudioFormat.CHANNEL_OUT_FRONT_RIGHT);
+ put("back", AudioFormat.CHANNEL_OUT_BACK_LEFT
+ | AudioFormat.CHANNEL_OUT_BACK_RIGHT);
+ put("front of center", AudioFormat.CHANNEL_OUT_FRONT_LEFT_OF_CENTER
+ | AudioFormat.CHANNEL_OUT_FRONT_RIGHT_OF_CENTER);
+ put("side", AudioFormat.CHANNEL_OUT_SIDE_LEFT
+ | AudioFormat.CHANNEL_OUT_SIDE_RIGHT);
+ put("top front", AudioFormat.CHANNEL_OUT_TOP_FRONT_LEFT
+ | AudioFormat.CHANNEL_OUT_TOP_FRONT_RIGHT);
+ put("top back", AudioFormat.CHANNEL_OUT_TOP_BACK_LEFT
+ | AudioFormat.CHANNEL_OUT_TOP_BACK_RIGHT);
+ put("top side", AudioFormat.CHANNEL_OUT_TOP_SIDE_LEFT
+ | AudioFormat.CHANNEL_OUT_TOP_SIDE_RIGHT);
+ put("bottom front", AudioFormat.CHANNEL_OUT_BOTTOM_FRONT_LEFT
+ | AudioFormat.CHANNEL_OUT_BOTTOM_FRONT_RIGHT);
+ }};
+
/**
* Convenience method to check that the channel configuration (a.k.a channel mask) is supported
* @param channelConfig the mask to validate
@@ -1774,21 +1810,15 @@
loge("Front channels must be present in multichannel configurations");
return false;
}
- final int backPair =
- AudioFormat.CHANNEL_OUT_BACK_LEFT | AudioFormat.CHANNEL_OUT_BACK_RIGHT;
- if ((channelConfig & backPair) != 0) {
- if ((channelConfig & backPair) != backPair) {
- loge("Rear channels can't be used independently");
+ // Check all pairs to see that they are matched (front duplicated here).
+ for (HashMap.Entry<String, Integer> e : CHANNEL_PAIR_MAP.entrySet()) {
+ final int positionPair = e.getValue();
+ if ((channelConfig & positionPair) != 0
+ && (channelConfig & positionPair) != positionPair) {
+ loge("Channel pair (" + e.getKey() + ") cannot be used independently");
return false;
}
}
- final int sidePair =
- AudioFormat.CHANNEL_OUT_SIDE_LEFT | AudioFormat.CHANNEL_OUT_SIDE_RIGHT;
- if ((channelConfig & sidePair) != 0
- && (channelConfig & sidePair) != sidePair) {
- loge("Side channels can't be used independently");
- return false;
- }
return true;
}
diff --git a/media/java/android/media/IMediaRouterService.aidl b/media/java/android/media/IMediaRouterService.aidl
index f817a3c..48289ec 100644
--- a/media/java/android/media/IMediaRouterService.aidl
+++ b/media/java/android/media/IMediaRouterService.aidl
@@ -48,7 +48,7 @@
// MediaRouterService.java for readability.
// Methods for MediaRouter2
- void checkModifyAudioRoutingPermission();
+ void enforceMediaContentControlPermission();
List<MediaRoute2Info> getSystemRoutes();
RoutingSessionInfo getSystemSessionInfo();
diff --git a/media/java/android/media/MediaRouter2.java b/media/java/android/media/MediaRouter2.java
index 90fa9a5..232de0b 100644
--- a/media/java/android/media/MediaRouter2.java
+++ b/media/java/android/media/MediaRouter2.java
@@ -18,6 +18,7 @@
import static com.android.internal.util.function.pooled.PooledLambda.obtainMessage;
+import android.Manifest;
import android.annotation.CallbackExecutor;
import android.annotation.NonNull;
import android.annotation.Nullable;
@@ -93,7 +94,7 @@
// TODO: Specify the fields that are only used (or not used) by system media router.
private final String mClientPackageName;
- private final ManagerCallback mManagerCallback;
+ final ManagerCallback mManagerCallback;
private final String mPackageName;
@@ -164,13 +165,24 @@
* @hide
*/
@SystemApi
- @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING)
+ @RequiresPermission(Manifest.permission.MEDIA_CONTENT_CONTROL)
@Nullable
public static MediaRouter2 getInstance(@NonNull Context context,
@NonNull String clientPackageName) {
Objects.requireNonNull(context, "context must not be null");
Objects.requireNonNull(clientPackageName, "clientPackageName must not be null");
+ // Note: Even though this check could be somehow bypassed, the other permission checks
+ // in system server will not allow MediaRouter2Manager to be registered.
+ IMediaRouterService serviceBinder = IMediaRouterService.Stub.asInterface(
+ ServiceManager.getService(Context.MEDIA_ROUTER_SERVICE));
+ try {
+ // SecurityException will be thrown if there's no permission.
+ serviceBinder.enforceMediaContentControlPermission();
+ } catch (RemoteException e) {
+ Log.e(TAG, "Unable to check MEDIA_CONTENT_CONTROL permission.");
+ }
+
PackageManager pm = context.getPackageManager();
try {
pm.getPackageInfo(clientPackageName, 0);
@@ -183,20 +195,13 @@
MediaRouter2 instance = sSystemMediaRouter2Map.get(clientPackageName);
if (instance == null) {
if (sManager == null) {
- IMediaRouterService serviceBinder = IMediaRouterService.Stub.asInterface(
- ServiceManager.getService(Context.MEDIA_ROUTER_SERVICE));
- try {
- // MediaRouterService will throw a SecurityException if the caller
- // doesn't have MODIFY_AUDIO_ROUTING permission.
- serviceBinder.checkModifyAudioRoutingPermission();
- } catch (RemoteException e) {
- e.rethrowAsRuntimeException();
- }
sManager = MediaRouter2Manager.getInstance(context.getApplicationContext());
}
instance = new MediaRouter2(context, clientPackageName);
sSystemMediaRouter2Map.put(clientPackageName, instance);
- instance.registerManagerCallbackForSystemRouter();
+ // Using direct executor here, since MediaRouter2Manager also posts
+ // to the main handler.
+ sManager.registerCallback(Runnable::run, instance.mManagerCallback);
}
return instance;
}
@@ -213,11 +218,15 @@
* Use {@link RouteCallback} to get the route related events.
* <p>
* Note that calling start/stopScan is applied to all system routers in the same process.
+ * <p>
+ * This will be no-op for non-system media routers.
*
* @see #stopScan()
+ * @see #getInstance(Context, String)
* @hide
*/
@SystemApi
+ @RequiresPermission(Manifest.permission.MEDIA_CONTENT_CONTROL)
public void startScan() {
if (isSystemRouter()) {
sManager.startScan();
@@ -236,11 +245,15 @@
* Use {@link RouteCallback} to get the route related events.
* <p>
* Note that calling start/stopScan is applied to all system routers in the same process.
+ * <p>
+ * This will be no-op for non-system media routers.
*
* @see #startScan()
+ * @see #getInstance(Context, String)
* @hide
*/
@SystemApi
+ @RequiresPermission(Manifest.permission.MEDIA_CONTENT_CONTROL)
public void stopScan() {
if (isSystemRouter()) {
sManager.stopScan();
@@ -314,7 +327,8 @@
/**
* Gets the client package name of the app which this media router controls.
- * This is only non-null when the router instance is created with the client package name.
+ * <p>
+ * This will return null for non-system media routers.
*
* @see #getInstance(Context, String)
* @hide
@@ -573,9 +587,25 @@
return;
}
- Objects.requireNonNull(route, "route must not be null");
Log.v(TAG, "Transferring to route: " + route);
- transfer(getCurrentController(), route);
+
+ boolean routeFound;
+ synchronized (mLock) {
+ // TODO: Check thread-safety
+ routeFound = mRoutes.containsKey(route.getId());
+ }
+ if (!routeFound) {
+ notifyTransferFailure(route);
+ return;
+ }
+
+ RoutingController controller = getCurrentController();
+ if (controller.getRoutingSessionInfo().getTransferableRoutes().contains(route.getId())) {
+ controller.transferToRoute(route);
+ return;
+ }
+
+ requestCreateController(controller, route, MANAGER_REQUEST_ID_NONE);
}
/**
@@ -594,36 +624,20 @@
/**
* Transfers the media of a routing controller to the given route.
+ * <p>
+ * This will be no-op for non-system media routers.
+ *
* @param controller a routing controller controlling media routing.
* @param route the route you want to transfer the media to.
* @hide
*/
@SystemApi
+ @RequiresPermission(Manifest.permission.MEDIA_CONTENT_CONTROL)
public void transfer(@NonNull RoutingController controller, @NonNull MediaRoute2Info route) {
if (isSystemRouter()) {
sManager.transfer(controller.getRoutingSessionInfo(), route);
return;
}
-
- Objects.requireNonNull(controller, "controller must not be null");
- Objects.requireNonNull(route, "route must not be null");
-
- boolean routeFound;
- synchronized (mLock) {
- // TODO: Check thread-safety
- routeFound = mRoutes.containsKey(route.getId());
- }
- if (!routeFound) {
- notifyTransferFailure(route);
- return;
- }
-
- if (controller.getRoutingSessionInfo().getTransferableRoutes().contains(route.getId())) {
- controller.transferToRoute(route);
- return;
- }
-
- requestCreateController(controller, route, MANAGER_REQUEST_ID_NONE);
}
void requestCreateController(@NonNull RoutingController controller,
@@ -687,9 +701,7 @@
/**
* Gets a {@link RoutingController} whose ID is equal to the given ID.
* Returns {@code null} if there is no matching controller.
- * @hide
*/
- @SystemApi
@Nullable
public RoutingController getController(@NonNull String id) {
Objects.requireNonNull(id, "id must not be null");
@@ -739,14 +751,16 @@
/**
* Requests a volume change for the route asynchronously.
- * <p>
* It may have no effect if the route is currently not selected.
- * </p>
+ * <p>
+ * This will be no-op for non-system media routers.
*
* @param volume The new volume value between 0 and {@link MediaRoute2Info#getVolumeMax}.
+ * @see #getInstance(Context, String)
* @hide
*/
@SystemApi
+ @RequiresPermission(Manifest.permission.MEDIA_CONTENT_CONTROL)
public void setRouteVolume(@NonNull MediaRoute2Info route, int volume) {
Objects.requireNonNull(route, "route must not be null");
@@ -754,18 +768,7 @@
sManager.setRouteVolume(route, volume);
return;
}
-
- MediaRouter2Stub stub;
- synchronized (mLock) {
- stub = mStub;
- }
- if (stub != null) {
- try {
- mMediaRouterService.setRouteVolumeWithRouter2(stub, route, volume);
- } catch (RemoteException ex) {
- Log.e(TAG, "Unable to set route volume.", ex);
- }
- }
+ // If this API needs to be public, use IMediaRouterService#setRouteVolumeWithRouter2()
}
void syncRoutesOnHandler(List<MediaRoute2Info> currentRoutes,
@@ -1040,15 +1043,6 @@
}
/**
- * Registers {@link MediaRouter2Manager.Callback} for getting events.
- * Should only used for system media routers.
- */
- private void registerManagerCallbackForSystemRouter() {
- // Using direct executor here, since MediaRouter2Manager also posts to the main handler.
- sManager.registerCallback(Runnable::run, mManagerCallback);
- }
-
- /**
* Returns a {@link RoutingSessionInfo} which has the client package name.
* The client package name is set only when the given sessionInfo doesn't have it.
* Should only used for system media routers.
@@ -1073,6 +1067,9 @@
}
private void updateAllRoutesFromManager() {
+ if (!isSystemRouter()) {
+ return;
+ }
synchronized (mLock) {
mRoutes.clear();
for (MediaRoute2Info route : sManager.getAllRoutes()) {
diff --git a/media/java/android/media/MediaRouter2Manager.java b/media/java/android/media/MediaRouter2Manager.java
index 758a813..915cb12 100644
--- a/media/java/android/media/MediaRouter2Manager.java
+++ b/media/java/android/media/MediaRouter2Manager.java
@@ -49,6 +49,8 @@
/**
* A class that monitors and controls media routing of other apps.
+ * {@link android.Manifest.permission#MEDIA_CONTENT_CONTROL} is required to use this class,
+ * or {@link SecurityException} will be thrown.
* @hide
*/
public final class MediaRouter2Manager {
diff --git a/media/java/android/media/metrics/Event.java b/media/java/android/media/metrics/Event.java
index 17218f0..4a69ac5 100644
--- a/media/java/android/media/metrics/Event.java
+++ b/media/java/android/media/metrics/Event.java
@@ -32,19 +32,17 @@
mTimeSinceCreatedMillis = MediaMetricsManager.INVALID_TIMESTAMP;
}
- // TODO: remove
- protected Event(long timeSinceCreatedMillis) {
- mTimeSinceCreatedMillis = timeSinceCreatedMillis;
- }
-
/* package */ Event(long timeSinceCreatedMillis, Bundle extras) {
mTimeSinceCreatedMillis = timeSinceCreatedMillis;
mMetricsBundle = extras;
}
/**
- * Gets time since the corresponding instance is created in millisecond.
+ * Gets time since the corresponding log session is created in millisecond.
* @return the timestamp since the instance is created, or -1 if unknown.
+ * @see LogSessionId
+ * @see PlaybackSession
+ * @see RecordingSession
*/
@IntRange(from = -1)
public long getTimeSinceCreatedMillis() {
diff --git a/media/java/android/media/metrics/MediaMetricsManager.java b/media/java/android/media/metrics/MediaMetricsManager.java
index b4a74a3..23b697f 100644
--- a/media/java/android/media/metrics/MediaMetricsManager.java
+++ b/media/java/android/media/metrics/MediaMetricsManager.java
@@ -25,7 +25,7 @@
* This class gives information about, and interacts with media metrics.
*/
@SystemService(Context.MEDIA_METRICS_SERVICE)
-public class MediaMetricsManager {
+public final class MediaMetricsManager {
public static final long INVALID_TIMESTAMP = -1;
private static final String TAG = "MediaMetricsManager";
diff --git a/media/java/android/media/metrics/NetworkEvent.java b/media/java/android/media/metrics/NetworkEvent.java
index 0e80543..7471d1d 100644
--- a/media/java/android/media/metrics/NetworkEvent.java
+++ b/media/java/android/media/metrics/NetworkEvent.java
@@ -105,10 +105,8 @@
/**
* Creates a new NetworkEvent.
- *
- * @hide
*/
- public NetworkEvent(@NetworkType int type, long timeSinceCreatedMillis,
+ private NetworkEvent(@NetworkType int type, long timeSinceCreatedMillis,
@NonNull Bundle extras) {
this.mNetworkType = type;
this.mTimeSinceCreatedMillis = timeSinceCreatedMillis;
@@ -124,8 +122,11 @@
}
/**
- * Gets timestamp since the creation in milliseconds.
+ * Gets timestamp since the creation of the log session in milliseconds.
* @return the timestamp since the creation in milliseconds, or -1 if unknown.
+ * @see LogSessionId
+ * @see PlaybackSession
+ * @see RecordingSession
*/
@Override
@IntRange(from = -1)
@@ -177,8 +178,7 @@
return 0;
}
- /** @hide */
- /* package-private */ NetworkEvent(@NonNull android.os.Parcel in) {
+ private NetworkEvent(@NonNull android.os.Parcel in) {
int type = in.readInt();
long timeSinceCreatedMillis = in.readLong();
Bundle extras = in.readBundle();
@@ -230,6 +230,7 @@
* Sets timestamp since the creation in milliseconds.
* @param value the timestamp since the creation in milliseconds.
* -1 indicates the value is unknown.
+ * @see #getTimeSinceCreatedMillis()
*/
public @NonNull Builder setTimeSinceCreatedMillis(@IntRange(from = -1) long value) {
mTimeSinceCreatedMillis = value;
diff --git a/media/java/android/media/metrics/PlaybackErrorEvent.java b/media/java/android/media/metrics/PlaybackErrorEvent.java
index f36c04e..d155576 100644
--- a/media/java/android/media/metrics/PlaybackErrorEvent.java
+++ b/media/java/android/media/metrics/PlaybackErrorEvent.java
@@ -150,10 +150,8 @@
/**
* Creates a new PlaybackErrorEvent.
- *
- * @hide
*/
- public PlaybackErrorEvent(
+ private PlaybackErrorEvent(
@Nullable String exceptionStack,
int errorCode,
int subErrorCode,
@@ -191,8 +189,10 @@
}
/**
- * Gets the timestamp since creation in milliseconds.
+ * Gets the timestamp since creation of the playback session in milliseconds.
* @return the timestamp since the playback is created, or -1 if unknown.
+ * @see LogSessionId
+ * @see PlaybackSession
*/
@Override
@IntRange(from = -1)
@@ -254,8 +254,7 @@
return 0;
}
- /** @hide */
- /* package-private */ PlaybackErrorEvent(@NonNull Parcel in) {
+ private PlaybackErrorEvent(@NonNull Parcel in) {
byte flg = in.readByte();
String exceptionStack = (flg & 0x1) == 0 ? null : in.readString();
int errorCode = in.readInt();
@@ -330,6 +329,7 @@
* Set the timestamp since creation in milliseconds.
* @param value the timestamp since the creation in milliseconds.
* -1 indicates the value is unknown.
+ * @see #getTimeSinceCreatedMillis()
*/
public @NonNull Builder setTimeSinceCreatedMillis(@IntRange(from = -1) long value) {
mTimeSinceCreatedMillis = value;
diff --git a/media/java/android/media/metrics/PlaybackMetrics.java b/media/java/android/media/metrics/PlaybackMetrics.java
index 5f606a0..bbcc484 100644
--- a/media/java/android/media/metrics/PlaybackMetrics.java
+++ b/media/java/android/media/metrics/PlaybackMetrics.java
@@ -213,6 +213,7 @@
/**
* Gets the media duration in milliseconds.
+ * <p>Media duration is the length of the media.
* @return the media duration in milliseconds, or -1 if unknown.
*/
@IntRange(from = -1)
@@ -328,6 +329,8 @@
/**
* Gets network transfer duration in milliseconds.
+ * <p>Total transfer time spent reading from the network in ms. For parallel requests, the
+ * overlapping time intervals are counted only once.
*/
@IntRange(from = -1)
public long getNetworkTransferDurationMillis() {
@@ -523,6 +526,7 @@
/**
* Sets the media duration in milliseconds.
* @param value the media duration in milliseconds. -1 indicates the value is unknown.
+ * @see #getMediaDurationMillis()
*/
public @NonNull Builder setMediaDurationMillis(@IntRange(from = -1) long value) {
mMediaDurationMillis = value;
@@ -645,6 +649,7 @@
* Sets the network transfer duration in milliseconds.
* @param value the network transfer duration in milliseconds.
* -1 indicates the value is unknown.
+ * @see #getNetworkTransferDurationMillis()
*/
public @NonNull Builder setNetworkTransferDurationMillis(@IntRange(from = -1) long value) {
mNetworkTransferDurationMillis = value;
diff --git a/media/java/android/media/metrics/PlaybackStateEvent.java b/media/java/android/media/metrics/PlaybackStateEvent.java
index 449abe9..8e74825 100644
--- a/media/java/android/media/metrics/PlaybackStateEvent.java
+++ b/media/java/android/media/metrics/PlaybackStateEvent.java
@@ -132,10 +132,8 @@
/**
* Creates a new PlaybackStateEvent.
- *
- * @hide
*/
- public PlaybackStateEvent(
+ private PlaybackStateEvent(
int state,
long timeSinceCreatedMillis,
@NonNull Bundle extras) {
@@ -147,13 +145,16 @@
/**
* Gets playback state.
*/
+ @State
public int getState() {
return mState;
}
/**
- * Gets time since the corresponding playback is created in millisecond.
+ * Gets time since the corresponding playback session is created in millisecond.
* @return the timestamp since the playback is created, or -1 if unknown.
+ * @see LogSessionId
+ * @see PlaybackSession
*/
@Override
@IntRange(from = -1)
@@ -197,8 +198,7 @@
return 0;
}
- /** @hide */
- /* package-private */ PlaybackStateEvent(@NonNull Parcel in) {
+ private PlaybackStateEvent(@NonNull Parcel in) {
int state = in.readInt();
long timeSinceCreatedMillis = in.readLong();
Bundle extras = in.readBundle();
@@ -247,6 +247,7 @@
* Sets timestamp since the creation in milliseconds.
* @param value the timestamp since the creation in milliseconds.
* -1 indicates the value is unknown.
+ * @see #getTimeSinceCreatedMillis()
*/
public @NonNull Builder setTimeSinceCreatedMillis(@IntRange(from = -1) long value) {
mTimeSinceCreatedMillis = value;
diff --git a/media/java/android/media/metrics/TrackChangeEvent.java b/media/java/android/media/metrics/TrackChangeEvent.java
index c3670269..65d011c 100644
--- a/media/java/android/media/metrics/TrackChangeEvent.java
+++ b/media/java/android/media/metrics/TrackChangeEvent.java
@@ -184,8 +184,11 @@
}
/**
- * Gets timestamp since the creation in milliseconds.
+ * Gets timestamp since the creation of the log session in milliseconds.
* @return the timestamp since the creation in milliseconds, or -1 if unknown.
+ * @see LogSessionId
+ * @see PlaybackSession
+ * @see RecordingSession
*/
@Override
@IntRange(from = -1)
@@ -193,6 +196,11 @@
return mTimeSinceCreatedMillis;
}
+ /**
+ * Gets the track type.
+ * <p>The track type must be one of {@link #TRACK_TYPE_AUDIO}, {@link #TRACK_TYPE_VIDEO},
+ * {@link #TRACK_TYPE_TEXT}.
+ */
@TrackType
public int getTrackType() {
return mType;
@@ -302,8 +310,7 @@
return 0;
}
- /** @hide */
- /* package-private */ TrackChangeEvent(@NonNull Parcel in) {
+ private TrackChangeEvent(@NonNull Parcel in) {
int flg = in.readInt();
int state = in.readInt();
int reason = in.readInt();
@@ -429,8 +436,14 @@
/**
* Creates a new Builder.
+ * @param type the track type. It must be one of {@link #TRACK_TYPE_AUDIO},
+ * {@link #TRACK_TYPE_VIDEO}, {@link #TRACK_TYPE_TEXT}.
*/
- public Builder(int type) {
+ public Builder(@TrackType int type) {
+ if (type != TRACK_TYPE_AUDIO && type != TRACK_TYPE_VIDEO && type != TRACK_TYPE_TEXT) {
+ throw new IllegalArgumentException("track type must be one of TRACK_TYPE_AUDIO, "
+ + "TRACK_TYPE_VIDEO, TRACK_TYPE_TEXT.");
+ }
mType = type;
}
@@ -499,6 +512,7 @@
* Sets timestamp since the creation in milliseconds.
* @param value the timestamp since the creation in milliseconds.
* -1 indicates the value is unknown.
+ * @see #getTimeSinceCreatedMillis()
*/
public @NonNull Builder setTimeSinceCreatedMillis(@IntRange(from = -1) long value) {
checkNotUsed();
diff --git a/media/java/android/media/session/ParcelableListBinder.java b/media/java/android/media/session/ParcelableListBinder.java
index a7aacf2..bbf1e08 100644
--- a/media/java/android/media/session/ParcelableListBinder.java
+++ b/media/java/android/media/session/ParcelableListBinder.java
@@ -109,7 +109,7 @@
throws RemoteException {
int count = list.size();
int i = 0;
- while (i < count) {
+ do {
Parcel data = Parcel.obtain();
Parcel reply = Parcel.obtain();
if (i == 0) {
@@ -126,6 +126,6 @@
binder.transact(FIRST_CALL_TRANSACTION, data, reply, 0);
reply.recycle();
data.recycle();
- }
+ } while (i < count);
}
}
diff --git a/media/java/android/media/session/PlaybackState.java b/media/java/android/media/session/PlaybackState.java
index e7d30ebb..9eacc74 100644
--- a/media/java/android/media/session/PlaybackState.java
+++ b/media/java/android/media/session/PlaybackState.java
@@ -19,7 +19,6 @@
import android.annotation.IntDef;
import android.annotation.LongDef;
import android.annotation.Nullable;
-import android.annotation.SystemApi;
import android.os.Bundle;
import android.os.Parcel;
import android.os.Parcelable;
@@ -493,15 +492,26 @@
/**
* Returns whether this is considered as an active playback state.
- * @hide
+ * <p>
+ * The playback state is considered as an active if the state is one of the following:
+ * <ul>
+ * <li>{@link #STATE_BUFFERING}</li>
+ * <li>{@link #STATE_CONNECTING}</li>
+ * <li>{@link #STATE_FAST_FORWARDING}</li>
+ * <li>{@link #STATE_PLAYING}</li>
+ * <li>{@link #STATE_REWINDING}</li>
+ * <li>{@link #STATE_SKIPPING_TO_NEXT}</li>
+ * <li>{@link #STATE_SKIPPING_TO_PREVIOUS}</li>
+ * <li>{@link #STATE_SKIPPING_TO_QUEUE_ITEM}</li>
+ * </ul>
*/
- @SystemApi(client = SystemApi.Client.MODULE_LIBRARIES)
- public boolean isActiveState() {
+ public boolean isActive() {
switch (mState) {
case PlaybackState.STATE_FAST_FORWARDING:
case PlaybackState.STATE_REWINDING:
case PlaybackState.STATE_SKIPPING_TO_PREVIOUS:
case PlaybackState.STATE_SKIPPING_TO_NEXT:
+ case PlaybackState.STATE_SKIPPING_TO_QUEUE_ITEM:
case PlaybackState.STATE_BUFFERING:
case PlaybackState.STATE_CONNECTING:
case PlaybackState.STATE_PLAYING:
diff --git a/media/java/android/media/tv/TunedInfo.java b/media/java/android/media/tv/TunedInfo.java
index 6199c89..20acefa 100644
--- a/media/java/android/media/tv/TunedInfo.java
+++ b/media/java/android/media/tv/TunedInfo.java
@@ -25,6 +25,7 @@
import android.os.Parcelable;
import android.text.TextUtils;
import android.util.Log;
+import android.view.Surface;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
@@ -92,18 +93,20 @@
private final String mInputId;
@Nullable private final Uri mChannelUri;
private final boolean mIsRecordingSession;
- private final boolean mIsForeground;
+ private final boolean mIsVisible;
+ private final boolean mIsMainSession;
@AppType private final int mAppType;
private final int mAppTag;
/** @hide */
public TunedInfo(
String inputId, @Nullable Uri channelUri, boolean isRecordingSession,
- boolean isForeground, @AppType int appType, int appTag) {
+ boolean isVisible, boolean isMainSession, @AppType int appType, int appTag) {
mInputId = inputId;
mChannelUri = channelUri;
mIsRecordingSession = isRecordingSession;
- mIsForeground = isForeground;
+ mIsVisible = isVisible;
+ mIsMainSession = isMainSession;
mAppType = appType;
mAppTag = appTag;
}
@@ -114,7 +117,8 @@
String uriString = source.readString();
mChannelUri = uriString == null ? null : Uri.parse(uriString);
mIsRecordingSession = (source.readInt() == 1);
- mIsForeground = (source.readInt() == 1);
+ mIsVisible = (source.readInt() == 1);
+ mIsMainSession = (source.readInt() == 1);
mAppType = source.readInt();
mAppTag = source.readInt();
}
@@ -145,11 +149,23 @@
}
/**
- * Returns {@code true} if the application is a foreground application.
- * @see android.app.ActivityManager.RunningAppProcessInfo.IMPORTANCE_FOREGROUND
+ * Returns {@code true} if the corresponding session is visible.
+ * <p>The system checks whether the {@link Surface} of the session is {@code null} or not. When
+ * it becomes invisible, the surface is destroyed and set to null.
+ * @see TvInputService.Session#onSetSurface(Surface)
+ * @see android.view.SurfaceView#notifySurfaceDestroyed
*/
- public boolean isForeground() {
- return mIsForeground;
+ public boolean isVisible() {
+ return mIsVisible;
+ }
+
+ /**
+ * Returns {@code true} if the corresponding session is set as main session.
+ * @see TvView#setMain
+ * @see TvInputService.Session#onSetMain
+ */
+ public boolean isMainSession() {
+ return mIsMainSession;
}
/**
@@ -180,7 +196,8 @@
String uriString = mChannelUri == null ? null : mChannelUri.toString();
dest.writeString(uriString);
dest.writeInt(mIsRecordingSession ? 1 : 0);
- dest.writeInt(mIsForeground ? 1 : 0);
+ dest.writeInt(mIsVisible ? 1 : 0);
+ dest.writeInt(mIsMainSession ? 1 : 0);
dest.writeInt(mAppType);
dest.writeInt(mAppTag);
}
@@ -190,7 +207,8 @@
return "inputID=" + mInputId
+ ";channelUri=" + mChannelUri
+ ";isRecording=" + mIsRecordingSession
- + ";isForeground=" + mIsForeground
+ + ";isVisible=" + mIsVisible
+ + ";isMainSession=" + mIsMainSession
+ ";appType=" + mAppType
+ ";appTag=" + mAppTag;
}
@@ -206,7 +224,8 @@
return TextUtils.equals(mInputId, other.getInputId())
&& Objects.equals(mChannelUri, other.mChannelUri)
&& mIsRecordingSession == other.mIsRecordingSession
- && mIsForeground == other.mIsForeground
+ && mIsVisible == other.mIsVisible
+ && mIsMainSession == other.mIsMainSession
&& mAppType == other.mAppType
&& mAppTag == other.mAppTag;
}
@@ -214,6 +233,7 @@
@Override
public int hashCode() {
return Objects.hash(
- mInputId, mChannelUri, mIsRecordingSession, mIsForeground, mAppType, mAppTag);
+ mInputId, mChannelUri, mIsRecordingSession, mIsVisible, mIsMainSession, mAppType,
+ mAppTag);
}
}
diff --git a/media/java/android/media/tv/TvInputManager.java b/media/java/android/media/tv/TvInputManager.java
index c0185dc..34e4609 100644
--- a/media/java/android/media/tv/TvInputManager.java
+++ b/media/java/android/media/tv/TvInputManager.java
@@ -907,6 +907,7 @@
* @hide
*/
@SystemApi
+ @RequiresPermission(android.Manifest.permission.ACCESS_TUNED_INFO)
public void onCurrentTunedInfosUpdated(@NonNull List<TunedInfo> tunedInfos) {
}
}
@@ -1989,7 +1990,7 @@
* @hide
*/
@SystemApi
- @RequiresPermission("com.android.providers.tv.permission.ACCESS_WATCHED_PROGRAMS")
+ @RequiresPermission(android.Manifest.permission.ACCESS_TUNED_INFO)
@NonNull
public List<TunedInfo> getCurrentTunedInfos() {
try {
diff --git a/media/jni/android_media_tv_Tuner.cpp b/media/jni/android_media_tv_Tuner.cpp
index 0aae940..4bdbe36 100644
--- a/media/jni/android_media_tv_Tuner.cpp
+++ b/media/jni/android_media_tv_Tuner.cpp
@@ -3029,7 +3029,8 @@
}
}
-static FrontendSettingsExt1_1 getFrontendSettingsExt1_1(JNIEnv *env, int type, jobject settings) {
+static FrontendSettingsExt1_1 getFrontendSettingsExt1_1(
+ JNIEnv *env, int type, jobject settings, int tunerVersion) {
ALOGD("getFrontendSettingsExt1_1 %d", type);
FrontendSettingsExt1_1 settingsExt1_1 {
@@ -3038,6 +3039,10 @@
};
settingsExt1_1.settingExt.noinit();
+ if (tunerVersion < TUNER_VERSION_1_1) {
+ return settingsExt1_1;
+ }
+
if (type == static_cast<int>(::android::hardware::tv::tuner::V1_1::FrontendType::DTMB)) {
getDtmbFrontendSettings(env, settings, settingsExt1_1);
} else {
@@ -3220,7 +3225,8 @@
static int android_media_tv_Tuner_tune(JNIEnv *env, jobject thiz, jint type, jobject settings) {
sp<JTuner> tuner = getTuner(env, thiz);
FrontendSettings setting = getFrontendSettings(env, type, settings);
- FrontendSettingsExt1_1 settingExt = getFrontendSettingsExt1_1(env, type, settings);
+ FrontendSettingsExt1_1 settingExt = getFrontendSettingsExt1_1(
+ env, type, settings, tuner->getTunerVersion());
return tuner->tune(setting, settingExt);
}
@@ -3233,7 +3239,8 @@
JNIEnv *env, jobject thiz, jint settingsType, jobject settings, jint scanType) {
sp<JTuner> tuner = getTuner(env, thiz);
FrontendSettings setting = getFrontendSettings(env, settingsType, settings);
- FrontendSettingsExt1_1 settingExt = getFrontendSettingsExt1_1(env, settingsType, settings);
+ FrontendSettingsExt1_1 settingExt = getFrontendSettingsExt1_1(
+ env, settingsType, settings, tuner->getTunerVersion());
return tuner->scan(setting, static_cast<FrontendScanType>(scanType), settingExt);
}
diff --git a/media/jni/android_media_tv_Tuner.h b/media/jni/android_media_tv_Tuner.h
index fafef42..2a933b2 100644
--- a/media/jni/android_media_tv_Tuner.h
+++ b/media/jni/android_media_tv_Tuner.h
@@ -73,6 +73,8 @@
using MQ = MessageQueue<uint8_t, kSynchronizedReadWrite>;
+const static int TUNER_VERSION_1_1 = ((1 << 16) | 1);
+
namespace android {
struct LnbClientCallbackImpl : public LnbClientCallback {
diff --git a/media/jni/tuner/FilterClient.cpp b/media/jni/tuner/FilterClient.cpp
index c080701..dc1d8b7 100644
--- a/media/jni/tuner/FilterClient.cpp
+++ b/media/jni/tuner/FilterClient.cpp
@@ -596,11 +596,11 @@
sectionBits.mask.resize(hidlSectionBits.mask.size());
sectionBits.mode.resize(hidlSectionBits.mode.size());
copy(hidlSectionBits.filter.begin(), hidlSectionBits.filter.end(),
- hidlSectionBits.filter.begin());
+ sectionBits.filter.begin());
copy(hidlSectionBits.mask.begin(), hidlSectionBits.mask.end(),
- hidlSectionBits.mask.begin());
+ sectionBits.mask.begin());
copy(hidlSectionBits.mode.begin(), hidlSectionBits.mode.end(),
- hidlSectionBits.mode.begin());
+ sectionBits.mode.begin());
aidlSection.condition.set<TunerFilterSectionCondition::sectionBits>(sectionBits);
break;
}
diff --git a/media/jni/tuner/FrontendClient.cpp b/media/jni/tuner/FrontendClient.cpp
index f54e266..5d9b12d 100644
--- a/media/jni/tuner/FrontendClient.cpp
+++ b/media/jni/tuner/FrontendClient.cpp
@@ -982,7 +982,7 @@
TunerFrontendIsdbsSettings FrontendClient::getAidlIsdbsSettings(const FrontendSettings& settings) {
TunerFrontendIsdbsSettings isdbsSettings{
.frequency = (int)settings.isdbs().frequency,
- .streamId = (int)settings.isdbs().streamId,
+ .streamId = (char16_t)settings.isdbs().streamId,
.streamIdType = (int)settings.isdbs().streamIdType,
.modulation = (int)settings.isdbs().modulation,
.codeRate = (int)settings.isdbs().coderate,
@@ -996,7 +996,7 @@
const FrontendSettings& settings) {
TunerFrontendIsdbs3Settings isdbs3Settings{
.frequency = (int)settings.isdbs3().frequency,
- .streamId = (int)settings.isdbs3().streamId,
+ .streamId = (char16_t)settings.isdbs3().streamId,
.streamIdType = (int)settings.isdbs3().streamIdType,
.modulation = (int)settings.isdbs3().modulation,
.codeRate = (int)settings.isdbs3().coderate,
diff --git a/media/tests/MediaRouter/src/com/android/mediaroutertest/MediaRouter2ManagerTest.java b/media/tests/MediaRouter/src/com/android/mediaroutertest/MediaRouter2ManagerTest.java
index 4b0062b..eaa4f03 100644
--- a/media/tests/MediaRouter/src/com/android/mediaroutertest/MediaRouter2ManagerTest.java
+++ b/media/tests/MediaRouter/src/com/android/mediaroutertest/MediaRouter2ManagerTest.java
@@ -42,6 +42,8 @@
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue;
+import android.Manifest;
+import android.app.UiAutomation;
import android.content.Context;
import android.media.MediaRoute2Info;
import android.media.MediaRouter2;
@@ -87,6 +89,7 @@
private static final String TEST_NAME_UNKNOWN = "unknown";
private Context mContext;
+ private UiAutomation mUiAutomation;
private MediaRouter2Manager mManager;
private MediaRouter2 mRouter2;
private Executor mExecutor;
@@ -110,6 +113,8 @@
@Before
public void setUp() throws Exception {
mContext = InstrumentationRegistry.getTargetContext();
+ mUiAutomation = InstrumentationRegistry.getInstrumentation().getUiAutomation();
+ mUiAutomation.adoptShellPermissionIdentity(Manifest.permission.MEDIA_CONTENT_CONTROL);
mManager = MediaRouter2Manager.getInstance(mContext);
mRouter2 = MediaRouter2.getInstance(mContext);
// If we need to support thread pool executors, change this to thread pool executor.
@@ -129,6 +134,8 @@
instance.setProxy(null);
instance.setSpy(null);
}
+
+ mUiAutomation.dropShellPermissionIdentity();
}
@Test
diff --git a/native/android/libandroid.map.txt b/native/android/libandroid.map.txt
index 4d137e0..9729524 100644
--- a/native/android/libandroid.map.txt
+++ b/native/android/libandroid.map.txt
@@ -260,8 +260,9 @@
ASurfaceTransaction_setHdrMetadata_smpte2086; # introduced=29
ASurfaceTransaction_setOnComplete; # introduced=29
ASurfaceTransaction_setPosition; # introduced=31
- ASurfaceTransaction_setSourceRect; # introduced=31
- ASurfaceTransaction_setTransform; # introduced=31
+ ASurfaceTransaction_setCrop; # introduced=31
+ ASurfaceTransaction_setBufferTransform; # introduced=31
+ ASurfaceTransaction_setScale; # introduced=31
ASurfaceTransaction_setVisibility; # introduced=29
ASurfaceTransaction_setZOrder; # introduced=29
ASystemFontIterator_open; # introduced=29
diff --git a/native/android/surface_control.cpp b/native/android/surface_control.cpp
index 7433cf9..3d14c42 100644
--- a/native/android/surface_control.cpp
+++ b/native/android/surface_control.cpp
@@ -459,34 +459,31 @@
transaction->setTransformToDisplayInverse(surfaceControl, transformToInverseDisplay);
}
-void ASurfaceTransaction_setSourceRect(ASurfaceTransaction* aSurfaceTransaction,
- ASurfaceControl* aSurfaceControl, const ARect& source) {
+void ASurfaceTransaction_setCrop(ASurfaceTransaction* aSurfaceTransaction,
+ ASurfaceControl* aSurfaceControl, const ARect& crop) {
CHECK_NOT_NULL(aSurfaceTransaction);
CHECK_NOT_NULL(aSurfaceControl);
- CHECK_VALID_RECT(source);
+ CHECK_VALID_RECT(crop);
sp<SurfaceControl> surfaceControl = ASurfaceControl_to_SurfaceControl(aSurfaceControl);
Transaction* transaction = ASurfaceTransaction_to_Transaction(aSurfaceTransaction);
- transaction->setCrop(surfaceControl, static_cast<const Rect&>(source));
+ transaction->setCrop(surfaceControl, static_cast<const Rect&>(crop));
}
-void ASurfaceTransaction_setPosition(ASurfaceTransaction* /* aSurfaceTransaction */,
- ASurfaceControl* /* aSurfaceControl */,
- const ARect& /* destination */) {
- // TODO: Fix this function
- /* CHECK_NOT_NULL(aSurfaceTransaction);
+void ASurfaceTransaction_setPosition(ASurfaceTransaction* aSurfaceTransaction,
+ ASurfaceControl* aSurfaceControl, int32_t x, int32_t y) {
+ CHECK_NOT_NULL(aSurfaceTransaction);
CHECK_NOT_NULL(aSurfaceControl);
- CHECK_VALID_RECT(destination);
sp<SurfaceControl> surfaceControl = ASurfaceControl_to_SurfaceControl(aSurfaceControl);
Transaction* transaction = ASurfaceTransaction_to_Transaction(aSurfaceTransaction);
- transaction->setFrame(surfaceControl, static_cast<const Rect&>(destination));*/
+ transaction->setPosition(surfaceControl, x, y);
}
-void ASurfaceTransaction_setTransform(ASurfaceTransaction* aSurfaceTransaction,
- ASurfaceControl* aSurfaceControl, int32_t transform) {
+void ASurfaceTransaction_setBufferTransform(ASurfaceTransaction* aSurfaceTransaction,
+ ASurfaceControl* aSurfaceControl, int32_t transform) {
CHECK_NOT_NULL(aSurfaceTransaction);
CHECK_NOT_NULL(aSurfaceControl);
@@ -499,6 +496,19 @@
transaction->setTransformToDisplayInverse(surfaceControl, transformToInverseDisplay);
}
+void ASurfaceTransaction_setScale(ASurfaceTransaction* aSurfaceTransaction,
+ ASurfaceControl* aSurfaceControl, float xScale, float yScale) {
+ CHECK_NOT_NULL(aSurfaceTransaction);
+ CHECK_NOT_NULL(aSurfaceControl);
+ LOG_ALWAYS_FATAL_IF(xScale < 0, "negative value passed in for xScale");
+ LOG_ALWAYS_FATAL_IF(yScale < 0, "negative value passed in for yScale");
+
+ sp<SurfaceControl> surfaceControl = ASurfaceControl_to_SurfaceControl(aSurfaceControl);
+ Transaction* transaction = ASurfaceTransaction_to_Transaction(aSurfaceTransaction);
+
+ transaction->setMatrix(surfaceControl, xScale, 0, 0, yScale);
+}
+
void ASurfaceTransaction_setBufferTransparency(ASurfaceTransaction* aSurfaceTransaction,
ASurfaceControl* aSurfaceControl,
int8_t transparency) {
diff --git a/packages/Connectivity/service/ServiceConnectivityResources/Android.bp b/packages/Connectivity/service/ServiceConnectivityResources/Android.bp
index d783738..515498e 100644
--- a/packages/Connectivity/service/ServiceConnectivityResources/Android.bp
+++ b/packages/Connectivity/service/ServiceConnectivityResources/Android.bp
@@ -21,7 +21,7 @@
android_app {
name: "ServiceConnectivityResources",
- sdk_version: "module_current",
+ sdk_version: "module_30",
min_sdk_version: "30",
resource_dirs: [
"res",
diff --git a/packages/SettingsLib/RadioButtonPreference/res/layout/preference_radio.xml b/packages/SettingsLib/RadioButtonPreference/res/layout/preference_radio.xml
index 5ff0dc7..403e417 100644
--- a/packages/SettingsLib/RadioButtonPreference/res/layout/preference_radio.xml
+++ b/packages/SettingsLib/RadioButtonPreference/res/layout/preference_radio.xml
@@ -65,9 +65,7 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:singleLine="true"
- android:textAppearance="?android:attr/textAppearanceListItem"
- android:ellipsize="marquee"
- android:fadingEdge="horizontal"/>
+ android:textAppearance="?android:attr/textAppearanceListItem"/>
<LinearLayout
android:id="@+id/summary_container"
diff --git a/packages/SettingsLib/UsageProgressBarPreference/src/com/android/settingslib/widget/UsageProgressBarPreference.java b/packages/SettingsLib/UsageProgressBarPreference/src/com/android/settingslib/widget/UsageProgressBarPreference.java
index fbf325c..0a8570b 100644
--- a/packages/SettingsLib/UsageProgressBarPreference/src/com/android/settingslib/widget/UsageProgressBarPreference.java
+++ b/packages/SettingsLib/UsageProgressBarPreference/src/com/android/settingslib/widget/UsageProgressBarPreference.java
@@ -113,7 +113,14 @@
/** Set percentage of the progress bar. */
public void setPercent(long usage, long total) {
- if (total == 0L || usage > total) {
+ if (usage > total) {
+ return;
+ }
+ if (total == 0L) {
+ if (mPercent != 0) {
+ mPercent = 0;
+ notifyChanged();
+ }
return;
}
final int percent = (int) (usage / (double) total * 100);
diff --git a/packages/SettingsLib/src/com/android/settingslib/wifi/WifiStatusTracker.java b/packages/SettingsLib/src/com/android/settingslib/wifi/WifiStatusTracker.java
index 8f7006e..2c2ca3b 100644
--- a/packages/SettingsLib/src/com/android/settingslib/wifi/WifiStatusTracker.java
+++ b/packages/SettingsLib/src/com/android/settingslib/wifi/WifiStatusTracker.java
@@ -80,9 +80,6 @@
@Override
public void onCapabilitiesChanged(
Network network, NetworkCapabilities networkCapabilities) {
- if (mDefaultNetwork != null && mDefaultNetwork.getNetId() != network.getNetId()) {
- return;
- }
if (!mNetworks.contains(network.getNetId())) {
// New network
boolean isVcnOverWifi =
@@ -117,9 +114,6 @@
@Override
public void onLost(Network network) {
- if (mDefaultNetwork != null && mDefaultNetwork.getNetId() != network.getNetId()) {
- return;
- }
String log = new StringBuilder()
.append(SSDF.format(System.currentTimeMillis())).append(",")
.append("onLost: ")
diff --git a/packages/SettingsLib/tests/integ/src/com/android/settingslib/widget/UsageProgressBarPreferenceTest.java b/packages/SettingsLib/tests/integ/src/com/android/settingslib/widget/UsageProgressBarPreferenceTest.java
index cd78add..42fb5d0 100644
--- a/packages/SettingsLib/tests/integ/src/com/android/settingslib/widget/UsageProgressBarPreferenceTest.java
+++ b/packages/SettingsLib/tests/integ/src/com/android/settingslib/widget/UsageProgressBarPreferenceTest.java
@@ -22,7 +22,7 @@
import android.content.Context;
import android.text.SpannedString;
-import android.text.style.RelativeSizeSpan;
+import android.text.style.AbsoluteSizeSpan;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.FrameLayout;
@@ -56,38 +56,38 @@
}
@Test
- public void setUsageSummary_noNumber_noRelativeSizeSpan() {
+ public void setUsageSummary_noNumber_noAbsoluteSizeSpan() {
mUsageProgressBarPreference.setUsageSummary("test");
mUsageProgressBarPreference.onBindViewHolder(mViewHolder);
final TextView usageSummary = (TextView) mViewHolder.findViewById(R.id.usage_summary);
final SpannedString summary = new SpannedString(usageSummary.getText());
- assertThat(summary.getSpans(0, summary.length(), RelativeSizeSpan.class).length)
+ assertThat(summary.getSpans(0, summary.length(), AbsoluteSizeSpan.class).length)
.isEqualTo(0);
}
@Test
- public void setUsageSummary_integerNumber_findRelativeSizeSpan() {
+ public void setUsageSummary_integerNumber_findAbsoluteSizeSpan() {
mUsageProgressBarPreference.setUsageSummary("10Test");
mUsageProgressBarPreference.onBindViewHolder(mViewHolder);
final TextView usageSummary = (TextView) mViewHolder.findViewById(R.id.usage_summary);
final SpannedString summary = new SpannedString(usageSummary.getText());
- assertThat(summary.getSpans(0, summary.length(), RelativeSizeSpan.class).length)
+ assertThat(summary.getSpans(0, summary.length(), AbsoluteSizeSpan.class).length)
.isEqualTo(1);
}
@Test
- public void setUsageSummary_floatNumber_findRelativeSizeSpan() {
+ public void setUsageSummary_floatNumber_findAbsoluteSizeSpan() {
mUsageProgressBarPreference.setUsageSummary("3.14Test");
mUsageProgressBarPreference.onBindViewHolder(mViewHolder);
final TextView usageSummary = (TextView) mViewHolder.findViewById(R.id.usage_summary);
final SpannedString summary = new SpannedString(usageSummary.getText());
- assertThat(summary.getSpans(0, summary.length(), RelativeSizeSpan.class).length)
+ assertThat(summary.getSpans(0, summary.length(), AbsoluteSizeSpan.class).length)
.isEqualTo(1);
}
@@ -125,6 +125,17 @@
}
@Test
+ public void setPercent_totalSizeZero_getProgressZero() {
+ mUsageProgressBarPreference.setPercent(0 /* usage */, 0 /* total */);
+
+ mUsageProgressBarPreference.onBindViewHolder(mViewHolder);
+
+ final ProgressBar progressBar = (ProgressBar) mViewHolder
+ .findViewById(android.R.id.progress);
+ assertThat(progressBar.getProgress()).isEqualTo(0);
+ }
+
+ @Test
public void setCustomContent_setNullImageView_noChild() {
mUsageProgressBarPreference.setCustomContent(null /* imageView */);
diff --git a/packages/SettingsProvider/src/android/provider/settings/backup/GlobalSettings.java b/packages/SettingsProvider/src/android/provider/settings/backup/GlobalSettings.java
index 77032ba..b7560d2 100644
--- a/packages/SettingsProvider/src/android/provider/settings/backup/GlobalSettings.java
+++ b/packages/SettingsProvider/src/android/provider/settings/backup/GlobalSettings.java
@@ -69,7 +69,6 @@
Settings.Global.ZEN_DURATION,
Settings.Global.CHARGING_VIBRATION_ENABLED,
Settings.Global.AWARE_ALLOWED,
- Settings.Global.NOTIFICATION_BUBBLES,
Settings.Global.CUSTOM_BUGREPORT_HANDLER_APP,
Settings.Global.CUSTOM_BUGREPORT_HANDLER_USER,
Settings.Global.DEVELOPMENT_SETTINGS_ENABLED,
diff --git a/packages/SettingsProvider/src/android/provider/settings/backup/SecureSettings.java b/packages/SettingsProvider/src/android/provider/settings/backup/SecureSettings.java
index e92591d..f6c54f041 100644
--- a/packages/SettingsProvider/src/android/provider/settings/backup/SecureSettings.java
+++ b/packages/SettingsProvider/src/android/provider/settings/backup/SecureSettings.java
@@ -187,5 +187,6 @@
Settings.Secure.ACCESSIBILITY_FLOATING_MENU_ICON_TYPE,
Settings.Secure.ACCESSIBILITY_FLOATING_MENU_OPACITY,
Settings.Secure.ACCESSIBILITY_FLOATING_MENU_FADE_ENABLED,
+ Settings.Secure.NOTIFICATION_BUBBLES,
};
}
diff --git a/packages/SettingsProvider/src/android/provider/settings/validators/GlobalSettingsValidators.java b/packages/SettingsProvider/src/android/provider/settings/validators/GlobalSettingsValidators.java
index 97032dd..c0e4df5 100644
--- a/packages/SettingsProvider/src/android/provider/settings/validators/GlobalSettingsValidators.java
+++ b/packages/SettingsProvider/src/android/provider/settings/validators/GlobalSettingsValidators.java
@@ -128,7 +128,6 @@
VALIDATORS.put(
Global.POWER_BUTTON_VERY_LONG_PRESS, new InclusiveIntegerRangeValidator(0, 1));
VALIDATORS.put(Global.KEY_CHORD_POWER_VOLUME_UP, new InclusiveIntegerRangeValidator(0, 2));
- VALIDATORS.put(Global.NOTIFICATION_BUBBLES, BOOLEAN_VALIDATOR);
VALIDATORS.put(Global.CUSTOM_BUGREPORT_HANDLER_APP, ANY_STRING_VALIDATOR);
VALIDATORS.put(Global.CUSTOM_BUGREPORT_HANDLER_USER, ANY_INTEGER_VALIDATOR);
VALIDATORS.put(Global.DEVELOPMENT_SETTINGS_ENABLED, BOOLEAN_VALIDATOR);
diff --git a/packages/SettingsProvider/src/android/provider/settings/validators/SecureSettingsValidators.java b/packages/SettingsProvider/src/android/provider/settings/validators/SecureSettingsValidators.java
index 53920f0..8036e49c 100644
--- a/packages/SettingsProvider/src/android/provider/settings/validators/SecureSettingsValidators.java
+++ b/packages/SettingsProvider/src/android/provider/settings/validators/SecureSettingsValidators.java
@@ -284,5 +284,6 @@
new InclusiveFloatRangeValidator(0.0f, 1.0f));
VALIDATORS.put(Secure.ACCESSIBILITY_FLOATING_MENU_FADE_ENABLED, BOOLEAN_VALIDATOR);
VALIDATORS.put(Secure.CLIPBOARD_SHOW_ACCESS_NOTIFICATIONS, BOOLEAN_VALIDATOR);
+ VALIDATORS.put(Secure.NOTIFICATION_BUBBLES, BOOLEAN_VALIDATOR);
}
}
diff --git a/packages/SettingsProvider/src/com/android/providers/settings/SettingsProtoDumpUtil.java b/packages/SettingsProvider/src/com/android/providers/settings/SettingsProtoDumpUtil.java
index 4119dc9f..2a50be7 100644
--- a/packages/SettingsProvider/src/com/android/providers/settings/SettingsProtoDumpUtil.java
+++ b/packages/SettingsProvider/src/com/android/providers/settings/SettingsProtoDumpUtil.java
@@ -1107,9 +1107,6 @@
Settings.Global.NOTIFICATION_SNOOZE_OPTIONS,
GlobalSettingsProto.Notification.SNOOZE_OPTIONS);
dumpSetting(s, p,
- Settings.Global.NOTIFICATION_BUBBLES,
- GlobalSettingsProto.Notification.BUBBLES);
- dumpSetting(s, p,
Settings.Global.SMART_REPLIES_IN_NOTIFICATIONS_FLAGS,
GlobalSettingsProto.Notification.SMART_REPLIES_IN_NOTIFICATIONS_FLAGS);
dumpSetting(s, p,
@@ -2312,7 +2309,7 @@
Settings.Secure.NOTIFICATION_BADGING,
SecureSettingsProto.Notification.BADGING);
dumpSetting(s, p,
- Settings.Global.NOTIFICATION_BUBBLES,
+ Settings.Secure.NOTIFICATION_BUBBLES,
SecureSettingsProto.Notification.BUBBLES);
dumpSetting(s, p,
Settings.Secure.SHOW_NOTE_ABOUT_NOTIFICATION_HIDING,
diff --git a/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java b/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java
index 6440d2a..2e90d36 100644
--- a/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java
+++ b/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java
@@ -20,6 +20,7 @@
import static android.os.Process.SHELL_UID;
import static android.os.Process.SYSTEM_UID;
import static android.provider.Settings.Secure.ACCESSIBILITY_SHORTCUT_TARGET_MAGNIFICATION_CONTROLLER;
+import static android.provider.Settings.Secure.NOTIFICATION_BUBBLES;
import static android.view.WindowManagerPolicyConstants.NAV_BAR_MODE_2BUTTON_OVERLAY;
import static android.view.WindowManagerPolicyConstants.NAV_BAR_MODE_GESTURAL;
import static android.view.WindowManagerPolicyConstants.NAV_BAR_MODE_GESTURAL_OVERLAY;
@@ -3400,7 +3401,7 @@
}
private final class UpgradeController {
- private static final int SETTINGS_VERSION = 199;
+ private static final int SETTINGS_VERSION = 201;
private final int mUserId;
@@ -4645,11 +4646,8 @@
// Version 184: Reset the default for Global Settings: NOTIFICATION_BUBBLES
// This is originally set in version 182, however, the default value changed
// so this step is to ensure the value is updated to the correct default.
- getGlobalSettingsLocked().insertSettingOverrideableByRestoreLocked(
- Global.NOTIFICATION_BUBBLES, getContext().getResources().getBoolean(
- R.bool.def_notification_bubbles) ? "1" : "0", null /* tag */,
- true /* makeDefault */, SettingsState.SYSTEM_PACKAGE_NAME);
+ // Removed. Bubbles moved to secure settings. See version 197.
currentVersion = 185;
}
@@ -4894,7 +4892,6 @@
defEnableNonResizableMultiWindow ? "1" : "0", null, true,
SettingsState.SYSTEM_PACKAGE_NAME);
}
-
currentVersion = 198;
}
@@ -4928,6 +4925,40 @@
currentVersion = 199;
}
+ if (currentVersion == 199) {
+ // Version 199: Bubbles moved to secure settings. Use the global value for
+ // the newly inserted secure setting; we'll delete the global value in the
+ // next version step.
+ // If this is a new profile, check if a secure setting exists for the
+ // owner of the profile and use that value for the work profile.
+ int owningId = resolveOwningUserIdForSecureSettingLocked(userId,
+ NOTIFICATION_BUBBLES);
+ Setting previous = getGlobalSettingsLocked()
+ .getSettingLocked("notification_bubbles");
+ Setting secureBubbles = getSecureSettingsLocked(owningId)
+ .getSettingLocked(NOTIFICATION_BUBBLES);
+ String oldValue = "1";
+ if (!previous.isNull()) {
+ oldValue = previous.getValue();
+ } else if (!secureBubbles.isNull()) {
+ oldValue = secureBubbles.getValue();
+ }
+ if (secureBubbles.isNull()) {
+ boolean isDefault = oldValue.equals("1");
+ getSecureSettingsLocked(userId).insertSettingLocked(
+ Secure.NOTIFICATION_BUBBLES, oldValue, null /* tag */,
+ isDefault, SettingsState.SYSTEM_PACKAGE_NAME);
+ }
+ currentVersion = 200;
+ }
+
+ if (currentVersion == 200) {
+ // Version 200: delete the global bubble setting which was moved to secure in
+ // version 199.
+ getGlobalSettingsLocked().deleteSettingLocked("notification_bubbles");
+ currentVersion = 201;
+ }
+
// vXXX: Add new settings above this point.
if (currentVersion != newVersion) {
diff --git a/packages/Shell/AndroidManifest.xml b/packages/Shell/AndroidManifest.xml
index a8d1534..0f14858 100644
--- a/packages/Shell/AndroidManifest.xml
+++ b/packages/Shell/AndroidManifest.xml
@@ -414,6 +414,9 @@
<!-- Permission required for testing system audio effect APIs. -->
<uses-permission android:name="android.permission.MODIFY_DEFAULT_AUDIO_EFFECTS"/>
+ <!-- Permission required for running networking unit tests -->
+ <uses-permission android:name="android.permission.CONNECTIVITY_USE_RESTRICTED_NETWORKS" />
+
<!-- Permissions required for CTS test - TunerTest -->
<uses-permission android:name="android.permission.ACCESS_TV_DESCRAMBLER" />
<uses-permission android:name="android.permission.ACCESS_TV_TUNER" />
@@ -426,6 +429,7 @@
<uses-permission android:name="android.permission.ACCESS_SHARED_LIBRARIES" />
<!-- Permissions required for CTS test - TVInputManagerTest -->
+ <uses-permission android:name="android.permission.ACCESS_TUNED_INFO" />
<uses-permission android:name="android.permission.TV_INPUT_HARDWARE" />
<!-- Permission needed for CTS test - PrivilegedLocationPermissionTest -->
@@ -537,7 +541,7 @@
<uses-permission android:name="android.permission.SCHEDULE_PRIORITIZED_ALARM" />
<!-- Permission required for CTS test - SystemMediaRouter2Test -->
- <uses-permission android:name="android.permission.MODIFY_AUDIO_ROUTING" />
+ <uses-permission android:name="android.permission.MEDIA_CONTENT_CONTROL" />
<!-- Permission required for CTS test - CtsRotationResolverServiceDeviceTestCases -->
<uses-permission android:name="android.permission.MANAGE_ROTATION_RESOLVER" />
@@ -545,6 +549,9 @@
<!-- Permission required for CTS test - CtsUwbTestCases -->
<uses-permission android:name="android.permission.UWB_PRIVILEGED" />
+ <!-- Permission required for CTS test - CtsAlarmManagerTestCases -->
+ <uses-permission android:name="android.permission.UPDATE_DEVICE_STATS" />
+
<application android:label="@string/app_label"
android:theme="@android:style/Theme.DeviceDefault.DayNight"
android:defaultToDeviceProtectedStorage="true"
diff --git a/packages/SystemUI/plugin/bcsmartspace/src/com/android/systemui/plugins/BcSmartspaceDataPlugin.java b/packages/SystemUI/plugin/bcsmartspace/src/com/android/systemui/plugins/BcSmartspaceDataPlugin.java
index 53ff9f0..4fe48c9 100644
--- a/packages/SystemUI/plugin/bcsmartspace/src/com/android/systemui/plugins/BcSmartspaceDataPlugin.java
+++ b/packages/SystemUI/plugin/bcsmartspace/src/com/android/systemui/plugins/BcSmartspaceDataPlugin.java
@@ -59,6 +59,14 @@
interface SmartspaceView {
void registerDataProvider(BcSmartspaceDataPlugin plugin);
+ /**
+ * Primary color for unprotected text
+ */
void setPrimaryTextColor(int color);
+
+ /**
+ * Range [0.0 - 1.0] when transitioning from Lockscreen to/from AOD
+ */
+ void setDozeAmount(float amount);
}
}
diff --git a/packages/SystemUI/res-keyguard/values/styles.xml b/packages/SystemUI/res-keyguard/values/styles.xml
index 0fef9f1..72b027a 100644
--- a/packages/SystemUI/res-keyguard/values/styles.xml
+++ b/packages/SystemUI/res-keyguard/values/styles.xml
@@ -17,7 +17,7 @@
*/
-->
-<resources xmlns:androidprv="http://schemas.android.com/apk/prv/res/android">
+<resources>
<!-- Keyguard PIN pad styles -->
<style name="Keyguard.TextView" parent="@android:style/Widget.DeviceDefault.TextView">
<item name="android:textSize">@dimen/kg_status_line_font_size</item>
@@ -32,7 +32,9 @@
<item name="android:stateListAnimator">@null</item>
</style>
<style name="NumPadKey" parent="Theme.SystemUI">
- <item name="android:colorControlNormal">?androidprv:attr/colorSurface</item>
+ <!-- Studio can't directly reference ?androidprv:attr/colorSurface here, so this value
+ is resolved in {@link NumPadAnimator}. -->
+ <item name="android:colorControlNormal">@null</item>
<item name="android:colorControlHighlight">?android:attr/colorAccent</item>
<item name="android:background">@drawable/num_pad_key_background</item>
</style>
diff --git a/packages/SystemUI/res/drawable/brightness_mirror_background.xml b/packages/SystemUI/res/drawable/brightness_mirror_background.xml
index ae3d312..2095103 100644
--- a/packages/SystemUI/res/drawable/brightness_mirror_background.xml
+++ b/packages/SystemUI/res/drawable/brightness_mirror_background.xml
@@ -16,5 +16,5 @@
-->
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="?attr/underSurfaceColor" />
- <corners android:radius="8dp" />
+ <corners android:radius="@dimen/rounded_slider_background_rounded_corner" />
</shape>
diff --git a/packages/SystemUI/res/drawable/rounded_rect_background.xml b/packages/SystemUI/res/drawable/rounded_rect_background.xml
new file mode 100644
index 0000000..83b0f71
--- /dev/null
+++ b/packages/SystemUI/res/drawable/rounded_rect_background.xml
@@ -0,0 +1,22 @@
+<!--
+ ~ Copyright (C) 2021 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.
+ -->
+<shape xmlns:android="http://schemas.android.com/apk/res/android"
+ android:shape="rectangle">
+ <size android:height="48dp"
+ android:width="48dp" />
+ <solid android:color="@android:color/transparent" />
+ <corners android:radius="4dp"></corners>
+</shape>
diff --git a/packages/SystemUI/res/drawable/thumbnail_delete_btn_bg.xml b/packages/SystemUI/res/drawable/thumbnail_delete_btn_bg.xml
new file mode 100644
index 0000000..ea7d45d
--- /dev/null
+++ b/packages/SystemUI/res/drawable/thumbnail_delete_btn_bg.xml
@@ -0,0 +1,23 @@
+<!--
+ ~ Copyright (C) 2021 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.
+ -->
+
+<shape xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:androidprv="http://schemas.android.com/apk/prv/res/android"
+ android:shape="oval">
+ <size android:height="24dp"
+ android:width="24dp" />
+ <solid android:color="#FFFFFF" />
+</shape>
diff --git a/packages/SystemUI/res/layout/brightness_mirror.xml b/packages/SystemUI/res/layout/brightness_mirror_container.xml
similarity index 70%
rename from packages/SystemUI/res/layout/brightness_mirror.xml
rename to packages/SystemUI/res/layout/brightness_mirror_container.xml
index b714767..ac90db3 100644
--- a/packages/SystemUI/res/layout/brightness_mirror.xml
+++ b/packages/SystemUI/res/layout/brightness_mirror_container.xml
@@ -17,10 +17,14 @@
<FrameLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:theme="@style/Theme.SystemUI.QuickSettings"
- android:id="@+id/brightness_mirror"
- android:layout_width="@dimen/qs_panel_width"
- android:layout_height="@dimen/brightness_mirror_height"
- android:layout_gravity="@integer/notification_panel_layout_gravity"
+ android:id="@+id/brightness_mirror_container"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:background="@drawable/brightness_mirror_background"
+ android:layout_gravity="center_vertical"
+ android:layout_margin="8dp"
+ android:padding="@dimen/rounded_slider_background_padding"
+ android:gravity="center"
android:visibility="invisible">
</FrameLayout>
diff --git a/packages/SystemUI/res/layout/privacy_dialog_item.xml b/packages/SystemUI/res/layout/privacy_dialog_item.xml
index 0c8ed9f..b91fb29c 100644
--- a/packages/SystemUI/res/layout/privacy_dialog_item.xml
+++ b/packages/SystemUI/res/layout/privacy_dialog_item.xml
@@ -31,7 +31,6 @@
android:layout_width="@dimen/ongoing_appops_dialog_circle_size"
android:layout_height="@dimen/ongoing_appops_dialog_circle_size"
android:layout_gravity="center_vertical"
- android:importantForAccessibility="no"
/>
<TextView
diff --git a/packages/SystemUI/res/layout/qs_customize_tile_divider.xml b/packages/SystemUI/res/layout/qs_customize_tile_divider.xml
index 0d932ac..19c2fc8 100644
--- a/packages/SystemUI/res/layout/qs_customize_tile_divider.xml
+++ b/packages/SystemUI/res/layout/qs_customize_tile_divider.xml
@@ -18,8 +18,5 @@
<View
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:layout_marginStart="16dp"
- android:layout_marginEnd="16dp"
- android:background="?android:attr/listDivider"
+ android:layout_height="32dp"
android:importantForAccessibility="no" />
diff --git a/packages/SystemUI/res/layout/qs_detail.xml b/packages/SystemUI/res/layout/qs_detail.xml
index 59e1a75..f056402 100644
--- a/packages/SystemUI/res/layout/qs_detail.xml
+++ b/packages/SystemUI/res/layout/qs_detail.xml
@@ -23,6 +23,7 @@
android:clickable="true"
android:orientation="vertical"
android:layout_marginTop="@*android:dimen/quick_qs_offset_height"
+ android:layout_marginBottom="@dimen/qs_container_bottom_padding"
android:paddingBottom="8dp"
android:visibility="invisible"
android:elevation="4dp"
diff --git a/packages/SystemUI/res/layout/qs_panel.xml b/packages/SystemUI/res/layout/qs_panel.xml
index 3d2a621..30e52e9 100644
--- a/packages/SystemUI/res/layout/qs_panel.xml
+++ b/packages/SystemUI/res/layout/qs_panel.xml
@@ -32,6 +32,7 @@
android:id="@+id/expanded_qs_scroll_view"
android:layout_width="match_parent"
android:layout_height="wrap_content"
+ android:paddingBottom="@dimen/qs_container_bottom_padding"
android:elevation="4dp"
android:importantForAccessibility="no"
android:scrollbars="none"
diff --git a/packages/SystemUI/res/layout/quick_settings_brightness_dialog.xml b/packages/SystemUI/res/layout/quick_settings_brightness_dialog.xml
index f4d5304..e95c6a7 100644
--- a/packages/SystemUI/res/layout/quick_settings_brightness_dialog.xml
+++ b/packages/SystemUI/res/layout/quick_settings_brightness_dialog.xml
@@ -13,16 +13,12 @@
See the License for the specific language governing permissions and
limitations under the License.
-->
-<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_height="wrap_content"
- android:layout_width="match_parent"
- android:layout_gravity="center">
-
<com.android.systemui.settings.brightness.BrightnessSliderView
+ xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/brightness_slider"
android:layout_width="match_parent"
android:layout_height="@dimen/brightness_mirror_height"
- android:layout_gravity="center_vertical"
+ android:layout_gravity="center"
android:contentDescription="@string/accessibility_brightness"
android:importantForAccessibility="no" >
@@ -40,4 +36,3 @@
android:splitTrack="false"
/>
</com.android.systemui.settings.brightness.BrightnessSliderView>
-</FrameLayout>
diff --git a/packages/SystemUI/res/layout/remote_input.xml b/packages/SystemUI/res/layout/remote_input.xml
index 4fcce24..a909d0d 100644
--- a/packages/SystemUI/res/layout/remote_input.xml
+++ b/packages/SystemUI/res/layout/remote_input.xml
@@ -22,28 +22,75 @@
android:id="@+id/remote_input"
android:layout_height="match_parent"
android:layout_width="match_parent">
+ <LinearLayout
+ android:layout_height="wrap_content"
+ android:layout_width="wrap_content"
+ android:id="@+id/remote_input_content"
+ android:orientation="vertical"
+ android:clipToPadding="false"
+ android:layout_marginEnd="20dp"
+ android:layout_marginStart="20dp"
+ android:layout_marginTop="5dp"
+ android:layout_marginBottom="16dp"
+ android:layout_weight="1">
+ <FrameLayout
+ android:id="@+id/remote_input_content_container"
+ android:layout_marginTop="-6dp"
+ android:layout_height="60dp"
+ android:layout_width="60dp"
+ android:layout_marginStart="4dp"
+ android:layout_marginBottom="12dp"
+ android:visibility="gone"
+ android:layout_gravity="center_vertical">
+ <ImageView
+ android:id="@+id/remote_input_attachment_image"
+ android:layout_width="48dp"
+ android:layout_height="48dp"
+ android:layout_gravity="start|bottom"
+ android:clipToOutline="true"
+ android:background="@drawable/rounded_rect_background"
+ android:scaleType="centerCrop" />
+ <ImageView
+ android:id="@+id/remote_input_delete_bg"
+ android:paddingStart="24dp"
+ android:paddingBottom="24dp"
+ android:layout_width="48dp"
+ android:layout_height="48dp"
+ android:layout_gravity="end|top"
+ android:src="@drawable/thumbnail_delete_btn_bg"/>
+ <ImageView
+ android:id="@+id/remote_input_delete"
+ android:paddingTop="3dp"
+ android:paddingEnd="3dp"
+ android:paddingStart="27dp"
+ android:paddingBottom="27dp"
+ android:layout_width="48dp"
+ android:layout_height="48dp"
+ android:layout_gravity="end|top"
+ android:src="@drawable/ic_close"
+ android:contentDescription="@string/notif_inline_reply_remove_attachment_description"/>
+ </FrameLayout>
- <view class="com.android.systemui.statusbar.policy.RemoteInputView$RemoteEditText"
- android:id="@+id/remote_input_text"
- android:layout_height="wrap_content"
- android:layout_width="0dp"
- android:layout_weight="1"
- android:paddingTop="2dp"
- android:paddingStart="16dp"
- android:paddingEnd="12dp"
- android:layout_marginLeft="16dp"
- android:layout_marginTop="5dp"
- android:layout_marginBottom="16dp"
- android:layout_gravity="start|center_vertical"
- android:textAppearance="?android:attr/textAppearance"
- android:textColor="@color/remote_input_text"
- android:textColorHint="@color/remote_input_hint"
- android:textSize="16sp"
- android:background="@null"
- android:maxLines="4"
- android:ellipsize="start"
- android:inputType="textShortMessage|textMultiLine|textAutoCorrect|textCapSentences"
- android:imeOptions="actionSend|flagNoExtractUi|flagNoFullscreen" />
+ <view class="com.android.systemui.statusbar.policy.RemoteInputView$RemoteEditText"
+ android:id="@+id/remote_input_text"
+ android:layout_height="wrap_content"
+ android:layout_width="match_parent"
+ android:layout_weight="1"
+ android:paddingTop="2dp"
+ android:paddingStart="4dp"
+ android:paddingBottom="4dp"
+ android:paddingEnd="12dp"
+ android:layout_gravity="start|center_vertical"
+ android:textAppearance="?android:attr/textAppearance"
+ android:textColor="@color/remote_input_text"
+ android:textColorHint="@color/remote_input_hint"
+ android:textSize="16sp"
+ android:background="@null"
+ android:maxLines="4"
+ android:ellipsize="start"
+ android:inputType="textShortMessage|textMultiLine|textAutoCorrect|textCapSentences"
+ android:imeOptions="actionSend|flagNoExtractUi|flagNoFullscreen" />
+ </LinearLayout>
<FrameLayout
android:layout_width="wrap_content"
diff --git a/packages/SystemUI/res/layout/super_notification_shade.xml b/packages/SystemUI/res/layout/super_notification_shade.xml
index 941081e..12c864c 100644
--- a/packages/SystemUI/res/layout/super_notification_shade.xml
+++ b/packages/SystemUI/res/layout/super_notification_shade.xml
@@ -70,7 +70,7 @@
android:layout_height="match_parent"
android:visibility="invisible" />
- <include layout="@layout/brightness_mirror" />
+ <include layout="@layout/brightness_mirror_container" />
<com.android.systemui.statusbar.ScrimView
android:id="@+id/scrim_in_front"
diff --git a/packages/SystemUI/res/raw/image_wallpaper_fragment_shader.glsl b/packages/SystemUI/res/raw/image_wallpaper_fragment_shader.glsl
index 7aca9f8..e4b6e07 100644
--- a/packages/SystemUI/res/raw/image_wallpaper_fragment_shader.glsl
+++ b/packages/SystemUI/res/raw/image_wallpaper_fragment_shader.glsl
@@ -1,54 +1,11 @@
precision mediump float;
-#define GAMMA 2.2
-#define INV_GAMMA 1.0 / GAMMA
// The actual wallpaper texture.
uniform sampler2D uTexture;
-uniform float uExposure;
varying vec2 vTextureCoordinates;
-// Following the Rec. ITU-R BT.709.
-float relativeLuminance(vec3 color) {
- return 0.2126 * color.r + 0.7152 * color.g + 0.0722 * color.b;
-}
-
-// Adjusts the exposure of some luminance value.
-float relativeExposureCompensation(in float lum, in float ev) {
- return lum * pow(2.0, ev);
-}
-
-vec4 srgbToLinear(in vec4 color) {
- vec4 linearColor = vec4(color);
- linearColor.rgb = pow(linearColor.rgb, vec3(GAMMA));
- return linearColor;
-}
-
-vec4 linearToSrgb(in vec4 color) {
- vec4 srgbColor = vec4(color);
- srgbColor.rgb = pow(srgbColor.rgb, vec3(INV_GAMMA));
- return srgbColor;
-}
-
-/*
- * Normalizes a value inside a range to a normalized range [0,1].
- */
-float normalizedRange(in float value, in float inMin, in float inMax) {
- float valueClamped = clamp(value, inMin, inMax);
- return (value - inMin) / (inMax - inMin);
-}
-
void main() {
- // Gets the pixel value of the wallpaper for this uv coordinates on screen.
- vec4 color = srgbToLinear(texture2D(uTexture, vTextureCoordinates));
- float lum = relativeLuminance(color.rgb);
-
- // Transform it using the S curve created by the smoothstep. This will increase the contrast.
- lum = smoothstep(0., 1., lum) + 0.001;
-
- lum = relativeExposureCompensation(lum, mix(-5., 10., uExposure));
- lum = mix(clamp(lum, 0.0, 1.0), 1.0, normalizedRange(uExposure, 0.55, 1.0));
- color.rgb *= lum;
-
- gl_FragColor = linearToSrgb(color);
+ // gets the pixel value of the wallpaper for this uv coordinates on screen.
+ gl_FragColor = texture2D(uTexture, vTextureCoordinates);
}
\ No newline at end of file
diff --git a/packages/SystemUI/res/values-land/dimens.xml b/packages/SystemUI/res/values-land/dimens.xml
index 007f81b..5f50fd4 100644
--- a/packages/SystemUI/res/values-land/dimens.xml
+++ b/packages/SystemUI/res/values-land/dimens.xml
@@ -33,7 +33,7 @@
<dimen name="battery_detail_graph_space_top">9dp</dimen>
<dimen name="battery_detail_graph_space_bottom">9dp</dimen>
- <dimen name="qs_detail_margin_top">0dp</dimen>
+ <dimen name="qs_detail_margin_top">14dp</dimen>
<dimen name="volume_tool_tip_right_margin">136dp</dimen>
<dimen name="volume_tool_tip_top_margin">12dp</dimen>
diff --git a/packages/SystemUI/res/values/dimens.xml b/packages/SystemUI/res/values/dimens.xml
index 210efd8..238b9e6 100644
--- a/packages/SystemUI/res/values/dimens.xml
+++ b/packages/SystemUI/res/values/dimens.xml
@@ -528,7 +528,7 @@
<!-- The size of the gesture span needed to activate the "pull" notification expansion -->
<dimen name="pull_span_min">25dp</dimen>
- <dimen name="qs_corner_radius">14dp</dimen>
+ <dimen name="qs_corner_radius">28dp</dimen>
<dimen name="qs_tile_height">88dp</dimen>
<!--notification_side_paddings + notification_content_margin_start - (qs_quick_tile_size - qs_tile_background_size) / 2 -->
<dimen name="qs_tile_layout_margin_side">18dp</dimen>
@@ -610,6 +610,8 @@
<dimen name="qs_notif_collapsed_space">64dp</dimen>
+ <dimen name="qs_container_bottom_padding">24dp</dimen>
+
<!-- Desired qs icon overlay size. -->
<dimen name="qs_detail_icon_overlay_size">24dp</dimen>
@@ -1428,6 +1430,9 @@
<dimen name="rounded_slider_track_width">4dp</dimen>
<!-- rounded_slider_track_width / 2 -->
<dimen name="rounded_slider_track_corner_radius">2dp</dimen>
+ <dimen name="rounded_slider_background_padding">8dp</dimen>
+ <!-- rounded_slider_corner_radius + rounded_slider_background_padding -->
+ <dimen name="rounded_slider_background_rounded_corner">32dp</dimen>
<!-- inset for ic_lock_open within a DisabledUdfpsView -->
<dimen name="udfps_unlock_icon_inset">16dp</dimen>
diff --git a/packages/SystemUI/res/values/strings.xml b/packages/SystemUI/res/values/strings.xml
index e55142b..8a3ba4b 100644
--- a/packages/SystemUI/res/values/strings.xml
+++ b/packages/SystemUI/res/values/strings.xml
@@ -2096,7 +2096,8 @@
<string name="keyboard_key_num_lock">Num Lock</string>
<!-- Name used to refer to keys on the numeric pad of the keyboard, e.g. "Numpad 9". -->
<string name="keyboard_key_numpad_template">Numpad <xliff:g id="name">%1$s</xliff:g></string>
-
+ <!-- Content description for the delete button on an image attachment when using inline reply via notification [CHAR LIMIT=NONE] -->
+ <string name="notif_inline_reply_remove_attachment_description">Remove attachment</string>
<!-- User visible title for the system-wide keyboard shortcuts list. -->
<string name="keyboard_shortcut_group_system">System</string>
<!-- User visible title for the keyboard shortcut that takes the user to the home screen. -->
@@ -2620,19 +2621,19 @@
<string name="ongoing_privacy_dialog_last_separator">\u0020and\u0020</string>
<!-- Text for privacy dialog, using sensitive app op (one of camera, location, microphone) right now [CHAR LIMIT=NONE] -->
- <string name="ongoing_privacy_dialog_using_op"><xliff:g id="application_name" example="Photos">%1$s</xliff:g> is using the <xliff:g id="app_opp_name" example="camera">%2$s</xliff:g></string>
+ <string name="ongoing_privacy_dialog_using_op">Being used by <xliff:g id="application_name" example="Photos">%1$s</xliff:g></string>
<!-- Text for privacy dialog, recently used sensitive app op (one of camera, location, microphone) [CHAR LIMIT=NONE] -->
- <string name="ongoing_privacy_dialog_recent_op"><xliff:g id="application_name" example="Photos">%1$s</xliff:g> used the <xliff:g id="app_opp_name" example="camera">%2$s</xliff:g> recently</string>
+ <string name="ongoing_privacy_dialog_recent_op">Recently used by <xliff:g id="application_name" example="Photos">%1$s</xliff:g></string>
<!-- Text for privacy dialog, indicating that the application is the enterprise version [CHAR LIMIT=NONE] -->
- <string name="ongoing_privacy_dialog_enterprise">(enterprise)</string>
+ <string name="ongoing_privacy_dialog_enterprise">(work)</string>
<!-- Text for privacy dialog, identifying the phone call app [CHAR LIMIT=NONE]-->
<string name="ongoing_privacy_dialog_phonecall">Phone call</string>
- <!-- Text for privacy dialog, indicating that an app is using an op on behalf of another [CHAR LIMIT=NONE] -->
- <string name="ongoing_privacy_dialog_attribution_text">(through <xliff:g id="attribution" example="Special app">%s</xliff:g>)</string>
+ <!-- Text for privacy dialog, indicating that an app (or multiple) is using an op on behalf of another [CHAR LIMIT=NONE] -->
+ <string name="ongoing_privacy_dialog_attribution_text">(through <xliff:g id="application name(s)" example="Maps, and Assistant">%s</xliff:g>)</string>
<!-- Text for camera app op [CHAR LIMIT=20]-->
<string name="privacy_type_camera">camera</string>
diff --git a/packages/SystemUI/res/values/styles.xml b/packages/SystemUI/res/values/styles.xml
index ce8c0c2..43c4465 100644
--- a/packages/SystemUI/res/values/styles.xml
+++ b/packages/SystemUI/res/values/styles.xml
@@ -388,7 +388,7 @@
</style>
<style name="Theme.SystemUI.QuickSettings.BrightnessDialog" parent="@android:style/Theme.DeviceDefault.Dialog">
- <item name="android:dialogCornerRadius">8dp</item>
+ <item name="android:windowBackground">@android:color/transparent</item>
</style>
<style name="Theme.SystemUI.QuickSettings.Dialog" parent="@android:style/Theme.DeviceDefault.Dialog">
diff --git a/packages/SystemUI/shared/src/com/android/systemui/shared/system/SyncRtSurfaceTransactionApplierCompat.java b/packages/SystemUI/shared/src/com/android/systemui/shared/system/SyncRtSurfaceTransactionApplierCompat.java
index fbabaa4..e281914 100644
--- a/packages/SystemUI/shared/src/com/android/systemui/shared/system/SyncRtSurfaceTransactionApplierCompat.java
+++ b/packages/SystemUI/shared/src/com/android/systemui/shared/system/SyncRtSurfaceTransactionApplierCompat.java
@@ -231,7 +231,7 @@
* @return this Builder
*/
public Builder withMatrix(Matrix matrix) {
- this.matrix = matrix;
+ this.matrix = new Matrix(matrix);
flags |= FLAG_MATRIX;
return this;
}
@@ -241,7 +241,7 @@
* @return this Builder
*/
public Builder withWindowCrop(Rect windowCrop) {
- this.windowCrop = windowCrop;
+ this.windowCrop = new Rect(windowCrop);
flags |= FLAG_WINDOW_CROP;
return this;
}
@@ -324,8 +324,8 @@
this.flags = flags;
this.surface = surface;
this.alpha = alpha;
- this.matrix = new Matrix(matrix);
- this.windowCrop = windowCrop != null ? new Rect(windowCrop) : null;
+ this.matrix = matrix;
+ this.windowCrop = windowCrop;
this.layer = layer;
this.relativeTo = relativeTo;
this.relativeLayer = relativeLayer;
diff --git a/packages/SystemUI/src/com/android/keyguard/KeyguardClockSwitchController.java b/packages/SystemUI/src/com/android/keyguard/KeyguardClockSwitchController.java
index e7418e6..f2bebce 100644
--- a/packages/SystemUI/src/com/android/keyguard/KeyguardClockSwitchController.java
+++ b/packages/SystemUI/src/com/android/keyguard/KeyguardClockSwitchController.java
@@ -24,7 +24,6 @@
import android.app.smartspace.SmartspaceManager;
import android.app.smartspace.SmartspaceSession;
import android.content.res.Resources;
-import android.graphics.Color;
import android.text.TextUtils;
import android.text.format.DateFormat;
import android.view.View;
@@ -33,7 +32,6 @@
import com.android.internal.annotations.VisibleForTesting;
import com.android.internal.colorextraction.ColorExtractor;
-import com.android.internal.graphics.ColorUtils;
import com.android.keyguard.clock.ClockManager;
import com.android.settingslib.Utils;
import com.android.systemui.R;
@@ -86,10 +84,8 @@
private FrameLayout mLargeClockFrame;
private SmartspaceSession mSmartspaceSession;
- private SmartspaceSession.Callback mSmartspaceCallback;
- private float mDozeAmount;
+ private SmartspaceSession.OnTargetsAvailableListener mSmartspaceCallback;
private int mWallpaperTextColor;
- private int mDozeColor = Color.WHITE;
private ConfigurationController mConfigurationController;
/**
@@ -121,8 +117,9 @@
new StatusBarStateController.StateListener() {
@Override
public void onDozeAmountChanged(float linear, float eased) {
- mDozeAmount = eased;
- updateSmartspaceColor();
+ if (mSmartspaceView != null) {
+ mSmartspaceView.setDozeAmount(eased);
+ }
}
};
@@ -192,9 +189,6 @@
mBatteryController);
mLargeClockViewController.init();
- mDozeAmount = mStatusBarStateController.getDozeAmount();
- updateWallpaperColor();
-
mStatusBarStateController.addCallback(mStatusBarStateListener);
mConfigurationController.addCallback(mConfigurationListener);
@@ -206,7 +200,7 @@
mSmartspaceView = smartspaceDataPlugin.getView(mView);
mSmartspaceView.registerDataProvider(smartspaceDataPlugin);
- updateSmartspaceColor();
+ updateWallpaperColor();
View asView = (View) mSmartspaceView;
// Place smartspace view below normal clock...
@@ -234,20 +228,17 @@
.createSmartspaceSession(
new SmartspaceConfig.Builder(getContext(), "lockscreen").build());
mSmartspaceCallback = targets -> smartspaceDataPlugin.onTargetsAvailable(targets);
- mSmartspaceSession.registerSmartspaceUpdates(mUiExecutor, mSmartspaceCallback);
+ mSmartspaceSession.addOnTargetsAvailableListener(mUiExecutor, mSmartspaceCallback);
mSmartspaceSession.requestSmartspaceUpdate();
}
+
+ float dozeAmount = mStatusBarStateController.getDozeAmount();
+ mStatusBarStateListener.onDozeAmountChanged(dozeAmount, dozeAmount);
}
private void updateWallpaperColor() {
- mWallpaperTextColor = Utils.getColorAttrDefaultColor(getContext(),
- R.attr.wallpaperTextColor);
- updateSmartspaceColor();
- }
-
- private void updateSmartspaceColor() {
if (mSmartspaceView != null) {
- int color = ColorUtils.blendARGB(mWallpaperTextColor, mDozeColor, mDozeAmount);
+ int color = Utils.getColorAttrDefaultColor(getContext(), R.attr.wallpaperTextColor);
mSmartspaceView.setPrimaryTextColor(color);
}
}
@@ -261,8 +252,8 @@
mView.setClockPlugin(null, mStatusBarStateController.getState());
if (mSmartspaceSession != null) {
- mSmartspaceSession.unregisterSmartspaceUpdates(mSmartspaceCallback);
- mSmartspaceSession.destroy();
+ mSmartspaceSession.removeOnTargetsAvailableListener(mSmartspaceCallback);
+ mSmartspaceSession.close();
mSmartspaceSession = null;
}
mStatusBarStateController.removeCallback(mStatusBarStateListener);
diff --git a/packages/SystemUI/src/com/android/keyguard/NumPadAnimator.java b/packages/SystemUI/src/com/android/keyguard/NumPadAnimator.java
index 570854e..abdd770 100644
--- a/packages/SystemUI/src/com/android/keyguard/NumPadAnimator.java
+++ b/packages/SystemUI/src/com/android/keyguard/NumPadAnimator.java
@@ -29,6 +29,7 @@
import com.android.systemui.R;
import com.android.systemui.animation.Interpolators;
+import com.android.systemui.util.Utils;
/**
* Provides background color and radius animations for key pad buttons.
@@ -100,7 +101,8 @@
ContextThemeWrapper ctw = new ContextThemeWrapper(context, mStyle);
TypedArray a = ctw.obtainStyledAttributes(customAttrs);
- mNormalColor = a.getColor(0, 0);
+ mNormalColor = Utils.getPrivateAttrColorIfUnset(ctw, a, 0, 0,
+ com.android.internal.R.attr.colorSurface);
mHighlightColor = a.getColor(1, 0);
a.recycle();
diff --git a/packages/SystemUI/src/com/android/systemui/ImageWallpaper.java b/packages/SystemUI/src/com/android/systemui/ImageWallpaper.java
index c8e6741..76cec0b 100644
--- a/packages/SystemUI/src/com/android/systemui/ImageWallpaper.java
+++ b/packages/SystemUI/src/com/android/systemui/ImageWallpaper.java
@@ -29,7 +29,7 @@
import android.util.Log;
import android.util.MathUtils;
import android.util.Size;
-import android.view.Choreographer;
+import android.view.DisplayInfo;
import android.view.SurfaceHolder;
import android.view.WindowManager;
@@ -38,7 +38,6 @@
import com.android.internal.annotations.VisibleForTesting;
import com.android.systemui.glwallpaper.EglHelper;
import com.android.systemui.glwallpaper.ImageWallpaperRenderer;
-import com.android.systemui.plugins.statusbar.StatusBarStateController;
import java.io.FileDescriptor;
import java.io.PrintWriter;
@@ -59,19 +58,16 @@
private static final @android.annotation.NonNull RectF LOCAL_COLOR_BOUNDS =
new RectF(0, 0, 1, 1);
private static final boolean DEBUG = false;
- private final StatusBarStateController mStatusBarStateController;
private final ArrayList<RectF> mLocalColorsToAdd = new ArrayList<>();
private final ArraySet<RectF> mColorAreas = new ArraySet<>();
- private float mShift;
- private volatile int mPages;
+ private volatile int mPages = 1;
private HandlerThread mWorker;
// scaled down version
private Bitmap mMiniBitmap;
@Inject
- public ImageWallpaper(StatusBarStateController statusBarStateController) {
+ public ImageWallpaper() {
super();
- mStatusBarStateController = statusBarStateController;
}
@Override
@@ -94,27 +90,24 @@
mMiniBitmap = null;
}
-
- class GLEngine extends Engine implements StatusBarStateController.StateListener,
- Choreographer.FrameCallback {
+ class GLEngine extends Engine {
// Surface is rejected if size below a threshold on some devices (ie. 8px on elfin)
// set min to 64 px (CTS covers this), please refer to ag/4867989 for detail.
@VisibleForTesting
- static final int MIN_SURFACE_WIDTH = 64;
+ static final int MIN_SURFACE_WIDTH = 128;
@VisibleForTesting
- static final int MIN_SURFACE_HEIGHT = 64;
+ static final int MIN_SURFACE_HEIGHT = 128;
private ImageWallpaperRenderer mRenderer;
private EglHelper mEglHelper;
private final Runnable mFinishRenderingTask = this::finishRendering;
- private final Runnable mInitChoreographerTask = this::initChoreographerInternal;
+ private boolean mNeedRedraw;
private int mWidth = 1;
private int mHeight = 1;
private int mImgWidth = 1;
private int mImgHeight = 1;
- private volatile float mDozeAmount;
- private volatile boolean mNewDozeValue = false;
- private volatile boolean mShouldScheduleFrame = false;
+ private float mPageWidth = 1.f;
+ private float mPageOffset = 1.f;
GLEngine() {
}
@@ -141,9 +134,6 @@
if (mWorker != null && mWorker.getThreadHandler() != null) {
mWorker.getThreadHandler().post(this::updateMiniBitmap);
}
-
- mDozeAmount = mStatusBarStateController.getDozeAmount();
- mStatusBarStateController.addCallback(this);
}
EglHelper getEglHelperInstance() {
@@ -158,15 +148,15 @@
public void onOffsetsChanged(float xOffset, float yOffset,
float xOffsetStep, float yOffsetStep,
int xPixelOffset, int yPixelOffset) {
- if (mMiniBitmap == null || mMiniBitmap.isRecycled()) return;
final int pages;
if (xOffsetStep > 0 && xOffsetStep <= 1) {
- pages = (int) (1 / xOffsetStep + 1);
+ pages = (int) Math.round(1 / xOffsetStep) + 1;
} else {
pages = 1;
}
if (pages == mPages) return;
mPages = pages;
+ if (mMiniBitmap == null || mMiniBitmap.isRecycled()) return;
updateShift();
mWorker.getThreadHandler().post(() ->
computeAndNotifyLocalColors(new ArrayList<>(mColorAreas), mMiniBitmap));
@@ -174,19 +164,17 @@
private void updateShift() {
if (mImgHeight == 0) {
- mShift = 0;
+ mPageOffset = 0;
+ mPageWidth = 1;
return;
}
// calculate shift
- float imgWidth = (float) mImgWidth / (float) mImgHeight;
- float displayWidth =
- (float) mWidth / (float) mHeight;
- // if need to shift
- if (imgWidth > displayWidth) {
- mShift = imgWidth / imgWidth - displayWidth / imgWidth;
- } else {
- mShift = 0;
- }
+ DisplayInfo displayInfo = new DisplayInfo();
+ getDisplayContext().getDisplay().getDisplayInfo(displayInfo);
+ int screenWidth = displayInfo.getNaturalWidth();
+ float imgWidth = Math.min(mImgWidth > 0 ? screenWidth / (float) mImgWidth : 1.f, 1.f);
+ mPageWidth = imgWidth;
+ mPageOffset = (1 - imgWidth) / (float) (mPages - 1);
}
private void updateMiniBitmap() {
@@ -198,8 +186,8 @@
}
mImgHeight = b.getHeight();
mImgWidth = b.getWidth();
- mMiniBitmap = Bitmap.createScaledBitmap(b, (int) Math.ceil(scale * b.getWidth()),
- (int) Math.ceil(scale * b.getHeight()), false);
+ mMiniBitmap = Bitmap.createScaledBitmap(b, (int) Math.max(scale * b.getWidth(), 1),
+ (int) Math.max(scale * b.getHeight(), 1), false);
computeAndNotifyLocalColors(mLocalColorsToAdd, mMiniBitmap);
mLocalColorsToAdd.clear();
});
@@ -221,11 +209,7 @@
@Override
public void onDestroy() {
mMiniBitmap = null;
-
- mStatusBarStateController.removeCallback(this);
-
mWorker.getThreadHandler().post(() -> {
- finishChoreographerInternal();
mRenderer.finish();
mRenderer = null;
mEglHelper.finish();
@@ -274,27 +258,39 @@
});
}
+ /**
+ * Transform the logical coordinates into wallpaper coordinates.
+ *
+ * Logical coordinates are organised such that the various pages are non-overlapping. So,
+ * if there are n pages, the first page will have its X coordinate on the range [0-1/n].
+ *
+ * The real pages are overlapping. If the Wallpaper are a width Ww and the screen a width
+ * Ws, the relative width of a page Wr is Ws/Ww. This does not change if the number of
+ * pages increase.
+ * If there are n pages, the page k starts at the offset k * (1 - Wr) / (n - 1), as the
+ * last page is at position (1-Wr) and the others are regularly spread on the range [0-
+ * (1-Wr)].
+ */
private RectF pageToImgRect(RectF area) {
- float pageWidth = 1f / (float) mPages;
- if (pageWidth < 1 && pageWidth >= 0) pageWidth = 1;
- float imgWidth = (float) mImgWidth / (float) mImgHeight;
- float displayWidth =
- (float) mWidth / (float) mHeight;
- float expansion = imgWidth > displayWidth ? displayWidth / imgWidth : 1;
- int page = (int) Math.floor(area.centerX() / pageWidth);
- float shiftWidth = mShift * page * pageWidth;
+ // Width of a page for the caller of this API.
+ float virtualPageWidth = 1f / (float) mPages;
+ float leftPosOnPage = (area.left % virtualPageWidth) / virtualPageWidth;
+ float rightPosOnPage = (area.right % virtualPageWidth) / virtualPageWidth;
+ int currentPage = (int) Math.floor(area.centerX() / virtualPageWidth);
+
RectF imgArea = new RectF();
imgArea.bottom = area.bottom;
imgArea.top = area.top;
- imgArea.left = MathUtils.constrain(area.left % pageWidth, 0, 1)
- * expansion + shiftWidth;
- imgArea.right = MathUtils.constrain(area.right % pageWidth, 0, 1)
- * expansion + shiftWidth;
+ imgArea.left = MathUtils.constrain(
+ leftPosOnPage * mPageWidth + currentPage * mPageOffset, 0, 1);
+ imgArea.right = MathUtils.constrain(
+ rightPosOnPage * mPageWidth + currentPage * mPageOffset, 0, 1);
if (imgArea.left > imgArea.right) {
// take full page
- imgArea.left = shiftWidth;
- imgArea.right = 1 - (mShift - shiftWidth);
+ imgArea.left = 0;
+ imgArea.right = 1;
}
+
return imgArea;
}
@@ -339,28 +335,17 @@
@Override
public void onSurfaceRedrawNeeded(SurfaceHolder holder) {
if (mWorker == null) return;
- mDozeAmount = mStatusBarStateController.getDozeAmount();
mWorker.getThreadHandler().post(this::drawFrame);
}
- @Override
- public void onDozeAmountChanged(float linear, float eased) {
- initChoreographer();
-
- mDozeAmount = linear;
- mNewDozeValue = true;
- }
-
private void drawFrame() {
preRender();
requestRender();
postRender();
}
- /**
- * Important: this method should only be invoked from the ImageWallpaper (worker) Thread.
- */
public void preRender() {
+ // This method should only be invoked from worker thread.
Trace.beginSection("ImageWallpaper#preRender");
preRenderInternal();
Trace.endSection();
@@ -395,10 +380,8 @@
}
}
- /**
- * Important: this method should only be invoked from the ImageWallpaper (worker) Thread.
- */
public void requestRender() {
+ // This method should only be invoked from worker thread.
Trace.beginSection("ImageWallpaper#requestRender");
requestRenderInternal();
Trace.endSection();
@@ -410,7 +393,6 @@
&& frame.width() > 0 && frame.height() > 0;
if (readyToRender) {
- mRenderer.setExposureValue(1 - mDozeAmount);
mRenderer.onDrawFrame();
if (!mEglHelper.swapBuffer()) {
Log.e(TAG, "drawFrame failed!");
@@ -422,10 +404,8 @@
}
}
- /**
- * Important: this method should only be invoked from the ImageWallpaper (worker) Thread.
- */
public void postRender() {
+ // This method should only be invoked from worker thread.
Trace.beginSection("ImageWallpaper#postRender");
scheduleFinishRendering();
Trace.endSection();
@@ -444,7 +424,6 @@
private void finishRendering() {
Trace.beginSection("ImageWallpaper#finishRendering");
- finishChoreographerInternal();
if (mEglHelper != null) {
mEglHelper.destroyEglSurface();
mEglHelper.destroyEglContext();
@@ -452,35 +431,6 @@
Trace.endSection();
}
- private void initChoreographer() {
- if (!mWorker.getThreadHandler().hasCallbacks(mInitChoreographerTask)
- && !mShouldScheduleFrame) {
- mWorker.getThreadHandler().post(mInitChoreographerTask);
- }
- }
-
- /**
- * Subscribes the engine to listen to Choreographer frame events.
- * Important: this method should only be invoked from the ImageWallpaper (worker) Thread.
- */
- private void initChoreographerInternal() {
- if (!mShouldScheduleFrame) {
- // Prepare EGL Context and Surface
- preRender();
- mShouldScheduleFrame = true;
- Choreographer.getInstance().postFrameCallback(GLEngine.this);
- }
- }
-
- /**
- * Unsubscribe the engine from listening to Choreographer frame events.
- * Important: this method should only be invoked from the ImageWallpaper (worker) Thread.
- */
- private void finishChoreographerInternal() {
- mShouldScheduleFrame = false;
- Choreographer.getInstance().removeFrameCallback(GLEngine.this);
- }
-
private boolean needSupportWideColorGamut() {
return mRenderer.isWcgContent();
}
@@ -500,17 +450,5 @@
mEglHelper.dump(prefix, fd, out, args);
mRenderer.dump(prefix, fd, out, args);
}
-
- @Override
- public void doFrame(long frameTimeNanos) {
- if (mNewDozeValue) {
- drawFrame();
- mNewDozeValue = false;
- }
-
- if (mShouldScheduleFrame) {
- Choreographer.getInstance().postFrameCallback(this);
- }
- }
}
}
diff --git a/packages/SystemUI/src/com/android/systemui/glwallpaper/ImageGLWallpaper.java b/packages/SystemUI/src/com/android/systemui/glwallpaper/ImageGLWallpaper.java
index 58c41d5..1a53c28 100644
--- a/packages/SystemUI/src/com/android/systemui/glwallpaper/ImageGLWallpaper.java
+++ b/packages/SystemUI/src/com/android/systemui/glwallpaper/ImageGLWallpaper.java
@@ -29,7 +29,6 @@
import static android.opengl.GLES20.glEnableVertexAttribArray;
import static android.opengl.GLES20.glGenTextures;
import static android.opengl.GLES20.glTexParameteri;
-import static android.opengl.GLES20.glUniform1f;
import static android.opengl.GLES20.glUniform1i;
import static android.opengl.GLES20.glVertexAttribPointer;
@@ -53,7 +52,6 @@
private static final String A_POSITION = "aPosition";
private static final String A_TEXTURE_COORDINATES = "aTextureCoordinates";
private static final String U_TEXTURE = "uTexture";
- private static final String U_EXPOSURE = "uExposure";
private static final int POSITION_COMPONENT_COUNT = 2;
private static final int TEXTURE_COMPONENT_COUNT = 2;
private static final int BYTES_PER_FLOAT = 4;
@@ -85,7 +83,6 @@
private int mAttrPosition;
private int mAttrTextureCoordinates;
private int mUniTexture;
- private int mUniExposure;
private int mTextureId;
ImageGLWallpaper(ImageGLProgram program) {
@@ -128,7 +125,6 @@
private void setupUniforms() {
mUniTexture = mProgram.getUniformHandle(U_TEXTURE);
- mUniExposure = mProgram.getUniformHandle(U_EXPOSURE);
}
void draw() {
@@ -175,10 +171,6 @@
glUniform1i(mUniTexture, 0);
}
- void setExposureValue(float exposureValue) {
- glUniform1f(mUniExposure, exposureValue);
- }
-
/**
* Called to dump current state.
* @param prefix prefix.
diff --git a/packages/SystemUI/src/com/android/systemui/glwallpaper/ImageWallpaperRenderer.java b/packages/SystemUI/src/com/android/systemui/glwallpaper/ImageWallpaperRenderer.java
index cdf88f3..01a353c 100644
--- a/packages/SystemUI/src/com/android/systemui/glwallpaper/ImageWallpaperRenderer.java
+++ b/packages/SystemUI/src/com/android/systemui/glwallpaper/ImageWallpaperRenderer.java
@@ -46,7 +46,6 @@
private final ImageGLWallpaper mWallpaper;
private final Rect mSurfaceSize = new Rect();
private final WallpaperTexture mTexture;
- private float mExposureValue;
public ImageWallpaperRenderer(Context context) {
final WallpaperManager wpm = context.getSystemService(WallpaperManager.class);
@@ -67,13 +66,6 @@
mTexture.use(c);
}
- /**
- * @hide
- */
- public void setExposureValue(float exposureValue) {
- mExposureValue = exposureValue;
- }
-
@Override
public boolean isWcgContent() {
return mTexture.isWcgContent();
@@ -102,7 +94,6 @@
public void onDrawFrame() {
glClear(GL_COLOR_BUFFER_BIT);
glViewport(0, 0, mSurfaceSize.width(), mSurfaceSize.height());
- mWallpaper.setExposureValue(mExposureValue);
mWallpaper.useTexture();
mWallpaper.draw();
}
diff --git a/packages/SystemUI/src/com/android/systemui/media/MediaDataManager.kt b/packages/SystemUI/src/com/android/systemui/media/MediaDataManager.kt
index 574ce0d..5ba04a0 100644
--- a/packages/SystemUI/src/com/android/systemui/media/MediaDataManager.kt
+++ b/packages/SystemUI/src/com/android/systemui/media/MediaDataManager.kt
@@ -227,7 +227,7 @@
smartspaceSession = smartspaceManager.createSmartspaceSession(
SmartspaceConfig.Builder(context, SMARTSPACE_UI_SURFACE_LABEL).build())
smartspaceSession?.let {
- it.registerSmartspaceUpdates(
+ it.addOnTargetsAvailableListener(
// Use a new thread listening to Smartspace updates instead of using the existing
// backgroundExecutor. SmartspaceSession has scheduled routine updates which can be
// unpredictable on test simulators, using the backgroundExecutor makes it's hard to
@@ -235,7 +235,7 @@
// Switch to use backgroundExecutor when SmartspaceSession has a good way to be
// mocked.
Executors.newCachedThreadPool(),
- SmartspaceSession.Callback { targets ->
+ SmartspaceSession.OnTargetsAvailableListener { targets ->
smartspaceMediaDataProvider.onTargetsAvailable(targets)
})
}
diff --git a/packages/SystemUI/src/com/android/systemui/people/NotificationHelper.java b/packages/SystemUI/src/com/android/systemui/people/NotificationHelper.java
new file mode 100644
index 0000000..68a829c
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/people/NotificationHelper.java
@@ -0,0 +1,213 @@
+/*
+ * Copyright (C) 2021 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 com.android.systemui.people;
+
+import static android.Manifest.permission.READ_CONTACTS;
+import static android.app.Notification.CATEGORY_MISSED_CALL;
+import static android.app.Notification.EXTRA_MESSAGES;
+import static android.app.Notification.EXTRA_PEOPLE_LIST;
+
+import android.annotation.Nullable;
+import android.app.Notification;
+import android.app.Person;
+import android.content.pm.PackageManager;
+import android.os.Parcelable;
+import android.service.notification.StatusBarNotification;
+import android.util.Log;
+
+import com.android.internal.annotations.VisibleForTesting;
+import com.android.internal.util.ArrayUtils;
+import com.android.systemui.statusbar.notification.collection.NotificationEntry;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.List;
+import java.util.Objects;
+import java.util.Set;
+
+/** Helper functions to handle notifications in People Tiles. */
+public class NotificationHelper {
+ private static final boolean DEBUG = PeopleSpaceUtils.DEBUG;
+ private static final String TAG = "PeopleNotificationHelper";
+
+ /** Returns the notification with highest priority to be shown in People Tiles. */
+ public static NotificationEntry getHighestPriorityNotification(
+ Set<NotificationEntry> notificationEntries) {
+ if (notificationEntries == null || notificationEntries.isEmpty()) {
+ return null;
+ }
+
+ return notificationEntries
+ .stream()
+ .filter(NotificationHelper::isMissedCallOrHasContent)
+ .sorted(notificationEntryComparator)
+ .findFirst().orElse(null);
+ }
+
+
+ /** Notification comparator, checking category and timestamps, in reverse order of priority. */
+ public static Comparator<NotificationEntry> notificationEntryComparator =
+ new Comparator<NotificationEntry>() {
+ @Override
+ public int compare(NotificationEntry e1, NotificationEntry e2) {
+ Notification n1 = e1.getSbn().getNotification();
+ Notification n2 = e2.getSbn().getNotification();
+
+ boolean missedCall1 = isMissedCall(n1);
+ boolean missedCall2 = isMissedCall(n2);
+ if (missedCall1 && !missedCall2) {
+ return -1;
+ }
+ if (!missedCall1 && missedCall2) {
+ return 1;
+ }
+
+ // Get messages in reverse chronological order.
+ List<Notification.MessagingStyle.Message> messages1 =
+ getMessagingStyleMessages(n1);
+ List<Notification.MessagingStyle.Message> messages2 =
+ getMessagingStyleMessages(n2);
+
+ if (messages1 != null && messages2 != null) {
+ Notification.MessagingStyle.Message message1 = messages1.get(0);
+ Notification.MessagingStyle.Message message2 = messages2.get(0);
+ return (int) (message2.getTimestamp() - message1.getTimestamp());
+ }
+
+ if (messages1 == null) {
+ return 1;
+ }
+ if (messages2 == null) {
+ return -1;
+ }
+ return (int) (n2.when - n1.when);
+ }
+ };
+
+ /** Returns whether {@code e} is a missed call notification. */
+ public static boolean isMissedCall(NotificationEntry e) {
+ return e != null && e.getSbn().getNotification() != null
+ && isMissedCall(e.getSbn().getNotification());
+ }
+
+ /** Returns whether {@code notification} is a missed call notification. */
+ public static boolean isMissedCall(Notification notification) {
+ return notification != null && Objects.equals(notification.category, CATEGORY_MISSED_CALL);
+ }
+
+ private static boolean hasContent(NotificationEntry e) {
+ if (e == null) {
+ return false;
+ }
+ List<Notification.MessagingStyle.Message> messages =
+ getMessagingStyleMessages(e.getSbn().getNotification());
+ return messages != null && !messages.isEmpty();
+ }
+
+ /** Returns whether {@code e} is a valid conversation notification. */
+ public static boolean isValid(NotificationEntry e) {
+ return e != null && e.getRanking() != null
+ && e.getRanking().getConversationShortcutInfo() != null
+ && e.getSbn().getNotification() != null;
+ }
+
+ /** Returns whether conversation notification should be shown in People Tile. */
+ public static boolean isMissedCallOrHasContent(NotificationEntry e) {
+ return isMissedCall(e) || hasContent(e);
+ }
+
+ /** Returns whether {@code sbn}'s package has permission to read contacts. */
+ public static boolean hasReadContactsPermission(
+ PackageManager packageManager, StatusBarNotification sbn) {
+ return packageManager.checkPermission(READ_CONTACTS,
+ sbn.getPackageName()) == PackageManager.PERMISSION_GRANTED;
+ }
+
+ /**
+ * Returns whether a notification should be matched to other Tiles by Uri.
+ *
+ * <p>Currently only matches missed calls.
+ */
+ public static boolean shouldMatchNotificationByUri(StatusBarNotification sbn) {
+ Notification notification = sbn.getNotification();
+ if (notification == null) {
+ if (DEBUG) Log.d(TAG, "Notification is null");
+ return false;
+ }
+ boolean isMissedCall = isMissedCall(notification);
+ if (!isMissedCall) {
+ if (DEBUG) Log.d(TAG, "Not missed call");
+ }
+ return isMissedCall;
+ }
+
+ /**
+ * Try to retrieve a valid Uri via {@code sbn}, falling back to the {@code
+ * contactUriFromShortcut} if valid.
+ */
+ @Nullable
+ public static String getContactUri(StatusBarNotification sbn) {
+ // First, try to get a Uri from the Person directly set on the Notification.
+ ArrayList<Person> people = sbn.getNotification().extras.getParcelableArrayList(
+ EXTRA_PEOPLE_LIST);
+ if (people != null && people.get(0) != null) {
+ String contactUri = people.get(0).getUri();
+ if (contactUri != null && !contactUri.isEmpty()) {
+ return contactUri;
+ }
+ }
+
+ // Then, try to get a Uri from the Person set on the Notification message.
+ List<Notification.MessagingStyle.Message> messages =
+ getMessagingStyleMessages(sbn.getNotification());
+ if (messages != null && !messages.isEmpty()) {
+ Notification.MessagingStyle.Message message = messages.get(0);
+ Person sender = message.getSenderPerson();
+ if (sender != null && sender.getUri() != null && !sender.getUri().isEmpty()) {
+ return sender.getUri();
+ }
+ }
+
+ return null;
+ }
+
+ /**
+ * Returns {@link Notification.MessagingStyle.Message}s from the Notification in chronological
+ * order from most recent to least.
+ */
+ @VisibleForTesting
+ @Nullable
+ public static List<Notification.MessagingStyle.Message> getMessagingStyleMessages(
+ Notification notification) {
+ if (notification == null) {
+ return null;
+ }
+ if (Notification.MessagingStyle.class.equals(notification.getNotificationStyle())
+ && notification.extras != null) {
+ final Parcelable[] messages = notification.extras.getParcelableArray(EXTRA_MESSAGES);
+ if (!ArrayUtils.isEmpty(messages)) {
+ List<Notification.MessagingStyle.Message> sortedMessages =
+ Notification.MessagingStyle.Message.getMessagesFromBundleArray(messages);
+ sortedMessages.sort(Collections.reverseOrder(
+ Comparator.comparing(Notification.MessagingStyle.Message::getTimestamp)));
+ return sortedMessages;
+ }
+ }
+ return null;
+ }
+}
+
diff --git a/packages/SystemUI/src/com/android/systemui/people/PeopleProvider.java b/packages/SystemUI/src/com/android/systemui/people/PeopleProvider.java
index 41957bc..a964056 100644
--- a/packages/SystemUI/src/com/android/systemui/people/PeopleProvider.java
+++ b/packages/SystemUI/src/com/android/systemui/people/PeopleProvider.java
@@ -16,36 +16,28 @@
package com.android.systemui.people;
-import android.app.people.IPeopleManager;
import android.content.ContentProvider;
import android.content.ContentValues;
-import android.content.Context;
-import android.content.pm.LauncherApps;
import android.content.pm.PackageManager;
import android.database.Cursor;
import android.net.Uri;
import android.os.Binder;
import android.os.Bundle;
-import android.os.ServiceManager;
import android.os.UserHandle;
import android.util.Log;
import android.widget.RemoteViews;
-import com.android.systemui.Dependency;
+import com.android.systemui.people.widget.PeopleSpaceWidgetManager;
import com.android.systemui.shared.system.PeopleProviderUtils;
-import com.android.systemui.statusbar.notification.NotificationEntryManager;
/** API that returns a People Tile preview. */
public class PeopleProvider extends ContentProvider {
-
- LauncherApps mLauncherApps;
- IPeopleManager mPeopleManager;
- NotificationEntryManager mNotificationEntryManager;
-
private static final String TAG = "PeopleProvider";
private static final boolean DEBUG = PeopleSpaceUtils.DEBUG;
private static final String EMPTY_STRING = "";
+ PeopleSpaceWidgetManager mPeopleSpaceWidgetManager;
+
@Override
public Bundle call(String method, String arg, Bundle extras) {
if (!doesCallerHavePermission()) {
@@ -83,17 +75,11 @@
throw new IllegalArgumentException("Null user handle");
}
- // If services are not set as mocks in tests, fetch them now.
- mPeopleManager = mPeopleManager != null ? mPeopleManager
- : IPeopleManager.Stub.asInterface(
- ServiceManager.getService(Context.PEOPLE_SERVICE));
- mLauncherApps = mLauncherApps != null ? mLauncherApps
- : getContext().getSystemService(LauncherApps.class);
- mNotificationEntryManager = mNotificationEntryManager != null ? mNotificationEntryManager
- : Dependency.get(NotificationEntryManager.class);
-
- RemoteViews view = PeopleSpaceUtils.getPreview(getContext(), mPeopleManager, mLauncherApps,
- mNotificationEntryManager, shortcutId, userHandle, packageName, extras);
+ if (mPeopleSpaceWidgetManager == null) {
+ mPeopleSpaceWidgetManager = new PeopleSpaceWidgetManager(getContext());
+ }
+ RemoteViews view =
+ mPeopleSpaceWidgetManager.getPreview(shortcutId, userHandle, packageName, extras);
if (view == null) {
if (DEBUG) Log.d(TAG, "No preview available for shortcutId: " + shortcutId);
return null;
diff --git a/packages/SystemUI/src/com/android/systemui/people/PeopleSpaceActivity.java b/packages/SystemUI/src/com/android/systemui/people/PeopleSpaceActivity.java
index 38a6186..ff14abe 100644
--- a/packages/SystemUI/src/com/android/systemui/people/PeopleSpaceActivity.java
+++ b/packages/SystemUI/src/com/android/systemui/people/PeopleSpaceActivity.java
@@ -39,6 +39,7 @@
import com.android.systemui.R;
import com.android.systemui.people.widget.PeopleSpaceWidgetManager;
+import com.android.systemui.people.widget.PeopleTileKey;
import java.util.ArrayList;
import java.util.List;
@@ -136,14 +137,15 @@
getSizeInDp(mContext, R.dimen.avatar_size_for_medium,
mContext.getResources().getDisplayMetrics().density)));
- tileView.setOnClickListener(v -> storeWidgetConfiguration(tile));
+ PeopleTileKey key = new PeopleTileKey(tile);
+ tileView.setOnClickListener(v -> storeWidgetConfiguration(tile, key));
} catch (Exception e) {
Log.e(TAG, "Couldn't retrieve shortcut information", e);
}
}
/** Stores the user selected configuration for {@code mAppWidgetId}. */
- private void storeWidgetConfiguration(PeopleSpaceTile tile) {
+ private void storeWidgetConfiguration(PeopleSpaceTile tile, PeopleTileKey key) {
if (PeopleSpaceUtils.DEBUG) {
if (DEBUG) {
Log.d(TAG, "Put " + tile.getUserName() + "'s shortcut ID: "
@@ -151,7 +153,7 @@
+ mAppWidgetId);
}
}
- mPeopleSpaceWidgetManager.addNewWidget(mAppWidgetId, tile);
+ mPeopleSpaceWidgetManager.addNewWidget(mAppWidgetId, key);
finishActivity();
}
diff --git a/packages/SystemUI/src/com/android/systemui/people/PeopleSpaceUtils.java b/packages/SystemUI/src/com/android/systemui/people/PeopleSpaceUtils.java
index c0a16e1..eefe5ca 100644
--- a/packages/SystemUI/src/com/android/systemui/people/PeopleSpaceUtils.java
+++ b/packages/SystemUI/src/com/android/systemui/people/PeopleSpaceUtils.java
@@ -16,8 +16,11 @@
package com.android.systemui.people;
-import static android.app.Notification.CATEGORY_MISSED_CALL;
-import static android.app.Notification.EXTRA_MESSAGES;
+import static com.android.systemui.people.NotificationHelper.getContactUri;
+import static com.android.systemui.people.NotificationHelper.getMessagingStyleMessages;
+import static com.android.systemui.people.NotificationHelper.hasReadContactsPermission;
+import static com.android.systemui.people.NotificationHelper.isMissedCall;
+import static com.android.systemui.people.NotificationHelper.shouldMatchNotificationByUri;
import android.app.Notification;
import android.app.people.ConversationChannel;
@@ -27,6 +30,7 @@
import android.content.Context;
import android.content.SharedPreferences;
import android.content.pm.LauncherApps;
+import android.content.pm.PackageManager;
import android.content.pm.ShortcutInfo;
import android.database.Cursor;
import android.database.SQLException;
@@ -36,9 +40,6 @@
import android.graphics.drawable.Drawable;
import android.net.Uri;
import android.os.Bundle;
-import android.os.Parcelable;
-import android.os.ServiceManager;
-import android.os.UserHandle;
import android.os.UserManager;
import android.provider.ContactsContract;
import android.service.notification.StatusBarNotification;
@@ -56,19 +57,16 @@
import com.android.systemui.R;
import com.android.systemui.people.widget.AppWidgetOptionsHelper;
import com.android.systemui.people.widget.PeopleTileKey;
-import com.android.systemui.statusbar.notification.NotificationEntryManager;
import com.android.systemui.statusbar.notification.collection.NotificationEntry;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.Comparator;
import java.util.Date;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Objects;
+import java.util.Optional;
import java.util.Set;
import java.util.stream.Collectors;
import java.util.stream.Stream;
@@ -185,73 +183,85 @@
editor.putStringSet(storageKey, storedWidgetIds);
}
- /** Augments a single {@link PeopleSpaceTile} with notification content, if one is present. */
- public static PeopleSpaceTile augmentSingleTileFromVisibleNotifications(Context context,
- PeopleSpaceTile tile, NotificationEntryManager notificationEntryManager) {
- List<PeopleSpaceTile> augmentedTile = augmentTilesFromVisibleNotifications(
- context, Arrays.asList(tile), notificationEntryManager);
- return augmentedTile.get(0);
- }
-
- /** Adds to {@code tiles} any visible notifications. */
- public static List<PeopleSpaceTile> augmentTilesFromVisibleNotifications(Context context,
- List<PeopleSpaceTile> tiles, NotificationEntryManager notificationEntryManager) {
- if (notificationEntryManager == null) {
- Log.w(TAG, "NotificationEntryManager is null");
- return tiles;
+ /** Returns notifications that match provided {@code contactUri}. */
+ public static List<NotificationEntry> getNotificationsByUri(
+ PackageManager packageManager, String contactUri,
+ Map<PeopleTileKey, Set<NotificationEntry>> notifications) {
+ if (DEBUG) Log.d(TAG, "Getting notifications by contact URI.");
+ if (TextUtils.isEmpty(contactUri)) {
+ return new ArrayList<>();
}
- Map<PeopleTileKey, NotificationEntry> visibleNotifications = notificationEntryManager
- .getVisibleNotifications()
- .stream()
- .filter(entry -> entry.getRanking() != null
- && entry.getRanking().getConversationShortcutInfo() != null)
- .collect(Collectors.toMap(PeopleTileKey::new, e -> e,
- // Handle duplicate keys to avoid crashes.
- (e1, e2) -> e1.getSbn().getNotification().when
- > e2.getSbn().getNotification().when ? e1 : e2));
- if (DEBUG) {
- Log.d(TAG, "Number of visible notifications:" + visibleNotifications.size());
- }
- return tiles
- .stream()
- .map(entry -> augmentTileFromVisibleNotifications(
- context, entry, visibleNotifications))
+ return notifications.entrySet().stream().flatMap(e -> e.getValue().stream())
+ .filter(e ->
+ hasReadContactsPermission(packageManager, e.getSbn())
+ && shouldMatchNotificationByUri(e.getSbn())
+ && Objects.equals(contactUri, getContactUri(e.getSbn()))
+ )
.collect(Collectors.toList());
}
- static PeopleSpaceTile augmentTileFromVisibleNotifications(Context context,
- PeopleSpaceTile tile, Map<PeopleTileKey, NotificationEntry> visibleNotifications) {
- PeopleTileKey key = new PeopleTileKey(
- tile.getId(), getUserId(tile), tile.getPackageName());
- // TODO: Match missed calls with matching Uris in addition to keys.
- if (!visibleNotifications.containsKey(key)) {
- if (DEBUG) Log.d(TAG, "No existing notifications for key:" + key.toString());
- return tile;
+ /** Returns the total messages in {@code notificationEntries}.*/
+ public static int getMessagesCount(Set<NotificationEntry> notificationEntries) {
+ if (DEBUG) {
+ Log.d(TAG, "Calculating messages count from " + notificationEntries.size()
+ + " notifications.");
}
- if (DEBUG) Log.d(TAG, "Augmenting tile from visible notifications, key:" + key.toString());
- return augmentTileFromNotification(context, tile, visibleNotifications.get(key).getSbn());
+ int messagesCount = 0;
+ for (NotificationEntry entry : notificationEntries) {
+ Notification notification = entry.getSbn().getNotification();
+ // Should not count messages from missed call notifications.
+ if (isMissedCall(notification)) {
+ continue;
+ }
+
+ List<Notification.MessagingStyle.Message> messages =
+ getMessagingStyleMessages(notification);
+ if (messages != null) {
+ messagesCount += messages.size();
+ }
+ }
+ return messagesCount;
}
- /** Augments {@code tile} with the notification content from {@code sbn}. */
- public static PeopleSpaceTile augmentTileFromNotification(Context context, PeopleSpaceTile tile,
- StatusBarNotification sbn) {
- Notification notification = sbn.getNotification();
- if (notification == null) {
- if (DEBUG) Log.d(TAG, "Notification is null");
- return tile;
+ /** Removes all notification related fields from {@code tile}. */
+ public static PeopleSpaceTile removeNotificationFields(PeopleSpaceTile tile) {
+ if (DEBUG) {
+ Log.i(TAG, "Removing any notification stored for tile Id: " + tile.getId());
}
- boolean isMissedCall = Objects.equals(notification.category, CATEGORY_MISSED_CALL);
+ return tile
+ .toBuilder()
+ // Reset notification content.
+ .setNotificationKey(null)
+ .setNotificationContent(null)
+ .setNotificationDataUri(null)
+ .setMessagesCount(0)
+ // Reset missed calls category.
+ .setNotificationCategory(null)
+ .build();
+ }
+
+ /**
+ * Augments {@code tile} with the notification content from {@code notificationEntry} and
+ * {@code messagesCount}.
+ */
+ public static PeopleSpaceTile augmentTileFromNotification(Context context, PeopleSpaceTile tile,
+ NotificationEntry notificationEntry, int messagesCount) {
+ if (notificationEntry == null || notificationEntry.getSbn().getNotification() == null) {
+ if (DEBUG) Log.d(TAG, "Notification is null");
+ return removeNotificationFields(tile);
+ }
+ Notification notification = notificationEntry.getSbn().getNotification();
+ boolean isMissedCall = isMissedCall(notification);
List<Notification.MessagingStyle.Message> messages =
getMessagingStyleMessages(notification);
if (!isMissedCall && ArrayUtils.isEmpty(messages)) {
if (DEBUG) Log.d(TAG, "Notification has no content");
- return tile;
+ return removeNotificationFields(tile);
}
// messages are in chronological order from most recent to least.
Notification.MessagingStyle.Message message = messages != null ? messages.get(0) : null;
- int messagesCount = messages != null ? messages.size() : 0;
// If it's a missed call notification and it doesn't include content, use fallback value,
// otherwise, use notification content.
boolean hasMessageText = message != null && !TextUtils.isEmpty(message.getText());
@@ -262,7 +272,7 @@
return tile
.toBuilder()
- .setNotificationKey(sbn.getKey())
+ .setNotificationKey(notificationEntry.getSbn().getKey())
.setNotificationCategory(notification.category)
.setNotificationContent(content)
.setNotificationDataUri(dataUri)
@@ -270,30 +280,6 @@
.build();
}
- /**
- * Returns {@link Notification.MessagingStyle.Message}s from the Notification in chronological
- * order from most recent to least.
- */
- @VisibleForTesting
- public static List<Notification.MessagingStyle.Message> getMessagingStyleMessages(
- Notification notification) {
- if (notification == null) {
- return null;
- }
- if (Notification.MessagingStyle.class.equals(notification.getNotificationStyle())
- && notification.extras != null) {
- final Parcelable[] messages = notification.extras.getParcelableArray(EXTRA_MESSAGES);
- if (!ArrayUtils.isEmpty(messages)) {
- List<Notification.MessagingStyle.Message> sortedMessages =
- Notification.MessagingStyle.Message.getMessagesFromBundleArray(messages);
- sortedMessages.sort(Collections.reverseOrder(
- Comparator.comparing(Notification.MessagingStyle.Message::getTimestamp)));
- return sortedMessages;
- }
- }
- return null;
- }
-
/** Returns a list sorted by ascending last interaction time from {@code stream}. */
public static List<PeopleSpaceTile> getSortedTiles(IPeopleManager peopleManager,
LauncherApps launcherApps, UserManager userManager,
@@ -467,7 +453,14 @@
/** Updates the current widget view with provided {@link PeopleSpaceTile}. */
public static void updateAppWidgetViews(AppWidgetManager appWidgetManager,
Context context, int appWidgetId, PeopleSpaceTile tile, Bundle options) {
- if (DEBUG) Log.d(TAG, "Widget: " + appWidgetId + ", " + tile.getUserName());
+ if (tile == null) {
+ if (DEBUG) Log.d(TAG, "Widget: " + appWidgetId + ". Tile is null, skipping update");
+ return;
+ }
+ if (DEBUG) {
+ Log.d(TAG, "Widget: " + appWidgetId + ", " + tile.getUserName() + ", "
+ + tile.getPackageName());
+ }
RemoteViews views = new PeopleTileViewHelper(context, tile, appWidgetId,
options).getViews();
@@ -478,10 +471,24 @@
/** Updates tile in app widget options and the current view. */
public static void updateAppWidgetOptionsAndView(AppWidgetManager appWidgetManager,
Context context, int appWidgetId, PeopleSpaceTile tile) {
+ if (tile == null) {
+ Log.d(TAG, "Tile is null, skipping storage and update.");
+ return;
+ }
Bundle options = AppWidgetOptionsHelper.setPeopleTile(appWidgetManager, appWidgetId, tile);
updateAppWidgetViews(appWidgetManager, context, appWidgetId, tile, options);
}
+ /** Wrapper around {@link #updateAppWidgetOptionsAndView} with optional tile as a parameter. */
+ public static void updateAppWidgetOptionsAndView(AppWidgetManager appWidgetManager,
+ Context context, int appWidgetId, Optional<PeopleSpaceTile> optionalTile) {
+ if (!optionalTile.isPresent()) {
+ Log.d(TAG, "Tile is null, skipping storage and update.");
+ return;
+ }
+ updateAppWidgetOptionsAndView(appWidgetManager, context, appWidgetId, optionalTile.get());
+ }
+
/**
* Returns lookup keys for all contacts with a birthday today.
*
@@ -523,42 +530,6 @@
return lookupKeysWithBirthdaysToday;
}
- /**
- * Returns a {@link RemoteViews} preview of a Conversation's People Tile. Returns null if one
- * is not available.
- */
- public static RemoteViews getPreview(Context context, IPeopleManager peopleManager,
- LauncherApps launcherApps, NotificationEntryManager notificationEntryManager,
- String shortcutId, UserHandle userHandle, String packageName, Bundle options) {
- peopleManager = (peopleManager != null) ? peopleManager : IPeopleManager.Stub.asInterface(
- ServiceManager.getService(Context.PEOPLE_SERVICE));
- launcherApps = (launcherApps != null) ? launcherApps
- : context.getSystemService(LauncherApps.class);
- if (peopleManager == null || launcherApps == null) {
- return null;
- }
-
- ConversationChannel channel;
- try {
- channel = peopleManager.getConversation(
- packageName, userHandle.getIdentifier(), shortcutId);
- } catch (Exception e) {
- Log.w(TAG, "Exception getting tiles: " + e);
- return null;
- }
- PeopleSpaceTile tile = PeopleSpaceUtils.getTile(channel, launcherApps);
-
- if (tile == null) {
- if (DEBUG) Log.i(TAG, "No tile was returned");
- return null;
- }
- PeopleSpaceTile augmentedTile = augmentSingleTileFromVisibleNotifications(
- context, tile, notificationEntryManager);
-
- if (DEBUG) Log.i(TAG, "Returning tile preview for shortcutId: " + shortcutId);
- return new PeopleTileViewHelper(context, augmentedTile, 0, options).getViews();
- }
-
/** Returns the userId associated with a {@link PeopleSpaceTile} */
public static int getUserId(PeopleSpaceTile tile) {
return tile.getUserHandle().getIdentifier();
diff --git a/packages/SystemUI/src/com/android/systemui/people/PeopleTileViewHelper.java b/packages/SystemUI/src/com/android/systemui/people/PeopleTileViewHelper.java
index 6b917c5..dd89f74 100644
--- a/packages/SystemUI/src/com/android/systemui/people/PeopleTileViewHelper.java
+++ b/packages/SystemUI/src/com/android/systemui/people/PeopleTileViewHelper.java
@@ -71,7 +71,8 @@
import java.util.regex.Pattern;
import java.util.stream.Collectors;
-class PeopleTileViewHelper {
+/** Functions that help creating the People tile layouts. */
+public class PeopleTileViewHelper {
/** Turns on debugging information about People Space. */
public static final boolean DEBUG = true;
private static final String TAG = "PeopleTileView";
@@ -115,7 +116,7 @@
private Locale mLocale;
private NumberFormat mIntegerFormat;
- PeopleTileViewHelper(Context context, PeopleSpaceTile tile,
+ public PeopleTileViewHelper(Context context, PeopleSpaceTile tile,
int appWidgetId, Bundle options) {
mContext = context;
mTile = tile;
@@ -346,6 +347,7 @@
private RemoteViews createMissedCallRemoteViews() {
RemoteViews views = getViewForContentLayout();
views.setViewVisibility(R.id.predefined_icon, View.VISIBLE);
+ views.setViewVisibility(R.id.messages_count, View.GONE);
setMaxLines(views);
views.setTextViewText(R.id.text_content, mTile.getNotificationContent());
views.setImageViewResource(R.id.predefined_icon, R.drawable.ic_phone_missed);
@@ -546,7 +548,6 @@
if (mLayoutSize == LAYOUT_SMALL) {
views.setViewVisibility(R.id.predefined_icon, View.VISIBLE);
views.setViewVisibility(R.id.name, View.GONE);
- views.setViewVisibility(R.id.messages_count, View.GONE);
} else {
views.setViewVisibility(R.id.predefined_icon, View.GONE);
views.setViewVisibility(R.id.name, View.VISIBLE);
@@ -561,6 +562,7 @@
views.setViewPadding(R.id.item, horizontalPadding, verticalPadding, horizontalPadding,
verticalPadding);
}
+ views.setViewVisibility(R.id.messages_count, View.GONE);
return views;
}
diff --git a/packages/SystemUI/src/com/android/systemui/people/widget/PeopleSpaceWidgetManager.java b/packages/SystemUI/src/com/android/systemui/people/widget/PeopleSpaceWidgetManager.java
index fb0dcc2..f11c1bd 100644
--- a/packages/SystemUI/src/com/android/systemui/people/widget/PeopleSpaceWidgetManager.java
+++ b/packages/SystemUI/src/com/android/systemui/people/widget/PeopleSpaceWidgetManager.java
@@ -17,24 +17,25 @@
package com.android.systemui.people.widget;
import static android.Manifest.permission.READ_CONTACTS;
-import static android.app.Notification.CATEGORY_MISSED_CALL;
-import static android.app.Notification.EXTRA_PEOPLE_LIST;
+import static com.android.systemui.people.NotificationHelper.getContactUri;
+import static com.android.systemui.people.NotificationHelper.getHighestPriorityNotification;
+import static com.android.systemui.people.NotificationHelper.shouldMatchNotificationByUri;
import static com.android.systemui.people.PeopleSpaceUtils.EMPTY_STRING;
import static com.android.systemui.people.PeopleSpaceUtils.INVALID_USER_ID;
import static com.android.systemui.people.PeopleSpaceUtils.PACKAGE_NAME;
import static com.android.systemui.people.PeopleSpaceUtils.SHORTCUT_ID;
import static com.android.systemui.people.PeopleSpaceUtils.USER_ID;
import static com.android.systemui.people.PeopleSpaceUtils.augmentTileFromNotification;
-import static com.android.systemui.people.PeopleSpaceUtils.getMessagingStyleMessages;
-import static com.android.systemui.people.PeopleSpaceUtils.getStoredWidgetIds;
+import static com.android.systemui.people.PeopleSpaceUtils.getMessagesCount;
+import static com.android.systemui.people.PeopleSpaceUtils.getNotificationsByUri;
+import static com.android.systemui.people.PeopleSpaceUtils.removeNotificationFields;
import static com.android.systemui.people.PeopleSpaceUtils.updateAppWidgetOptionsAndView;
import static com.android.systemui.people.PeopleSpaceUtils.updateAppWidgetViews;
import android.annotation.NonNull;
import android.annotation.Nullable;
import android.app.INotificationManager;
-import android.app.Notification;
import android.app.NotificationChannel;
import android.app.PendingIntent;
import android.app.Person;
@@ -49,6 +50,7 @@
import android.content.pm.LauncherApps;
import android.content.pm.PackageManager;
import android.content.pm.ShortcutInfo;
+import android.graphics.drawable.Icon;
import android.net.Uri;
import android.os.Bundle;
import android.os.ServiceManager;
@@ -67,10 +69,13 @@
import com.android.internal.logging.UiEventLoggerImpl;
import com.android.settingslib.utils.ThreadUtils;
import com.android.systemui.Dependency;
+import com.android.systemui.people.NotificationHelper;
import com.android.systemui.people.PeopleSpaceUtils;
+import com.android.systemui.people.PeopleTileViewHelper;
import com.android.systemui.statusbar.NotificationListener;
import com.android.systemui.statusbar.NotificationListener.NotificationHandler;
import com.android.systemui.statusbar.notification.NotificationEntryManager;
+import com.android.systemui.statusbar.notification.collection.NotificationEntry;
import java.util.ArrayList;
import java.util.Collections;
@@ -78,8 +83,10 @@
import java.util.HashSet;
import java.util.List;
import java.util.Map;
-import java.util.Objects;
+import java.util.Optional;
import java.util.Set;
+import java.util.function.Function;
+import java.util.stream.Collectors;
import java.util.stream.Stream;
import javax.inject.Inject;
@@ -272,9 +279,10 @@
private void updateWidgetsWithNotificationChangedInBackground(StatusBarNotification sbn,
PeopleSpaceUtils.NotificationAction action) {
try {
- String sbnShortcutId = sbn.getShortcutId();
- if (sbnShortcutId == null) {
- if (DEBUG) Log.d(TAG, "Sbn shortcut id is null");
+ PeopleTileKey key = new PeopleTileKey(
+ sbn.getShortcutId(), sbn.getUser().getIdentifier(), sbn.getPackageName());
+ if (!key.isValid()) {
+ Log.d(TAG, "Invalid key from sbn");
return;
}
int[] widgetIds = mAppWidgetManager.getAppWidgetIds(
@@ -284,21 +292,15 @@
Log.d(TAG, "No app widget ids returned");
return;
}
- PeopleTileKey key = new PeopleTileKey(
- sbnShortcutId,
- sbn.getUser().getIdentifier(),
- sbn.getPackageName());
- if (!key.isValid()) {
- Log.d(TAG, "Invalid key");
- return;
- }
synchronized (mLock) {
- // First, update People Tiles associated with the Notification's package/shortcut.
- Set<String> tilesUpdatedByKey = getStoredWidgetIds(mSharedPrefs, key);
- updateWidgetIdsForNotificationAction(tilesUpdatedByKey, sbn, action);
-
- // Then, update People Tiles across other packages that use the same Uri.
- updateTilesByUri(key, sbn, action);
+ Set<String> tilesUpdated = getMatchingKeyWidgetIds(key);
+ Set<String> tilesUpdatedByUri = getMatchingUriWidgetIds(sbn, action);
+ if (DEBUG) {
+ Log.d(TAG, "Widgets by key to be updated:" + tilesUpdated.toString());
+ Log.d(TAG, "Widgets by URI to be updated:" + tilesUpdatedByUri.toString());
+ }
+ tilesUpdated.addAll(tilesUpdatedByUri);
+ updateWidgetIdsBasedOnNotifications(tilesUpdated);
}
} catch (Exception e) {
Log.e(TAG, "Throwing exception: " + e);
@@ -306,36 +308,142 @@
}
/** Updates {@code widgetIdsToUpdate} with {@code action}. */
- private void updateWidgetIdsForNotificationAction(Set<String> widgetIdsToUpdate,
- StatusBarNotification sbn, PeopleSpaceUtils.NotificationAction action) {
- for (String widgetIdString : widgetIdsToUpdate) {
- int widgetId = Integer.parseInt(widgetIdString);
- PeopleSpaceTile storedTile = getTileForExistingWidget(widgetId);
- if (storedTile == null) {
- if (DEBUG) Log.d(TAG, "Could not find stored tile for notification");
- continue;
- }
- if (DEBUG) Log.d(TAG, "Storing notification change, key:" + sbn.getKey());
- updateStorageAndViewWithNotificationData(sbn, action, widgetId,
- storedTile);
+ private void updateWidgetIdsBasedOnNotifications(Set<String> widgetIdsToUpdate) {
+ Log.d(TAG, "Fetching grouped notifications");
+ try {
+ Map<PeopleTileKey, Set<NotificationEntry>> groupedNotifications =
+ getGroupedConversationNotifications();
+
+ widgetIdsToUpdate
+ .stream()
+ .map(Integer::parseInt)
+ .collect(Collectors.toMap(
+ Function.identity(),
+ id -> getAugmentedTileForExistingWidget(id, groupedNotifications)))
+ .forEach((id, tile) ->
+ updateAppWidgetOptionsAndView(mAppWidgetManager, mContext, id, tile));
+ } catch (Exception e) {
+ Log.e(TAG, "Exception updating widgets: " + e);
}
}
/**
- * Updates tiles with matched Uris, dependent on the {@code action}.
+ * Augments {@code tile} based on notifications returned from {@code notificationEntryManager}.
+ */
+ public PeopleSpaceTile augmentTileFromNotificationEntryManager(PeopleSpaceTile tile) {
+ Log.d(TAG, "Augmenting tile from NotificationEntryManager widget: " + tile.getId());
+ Map<PeopleTileKey, Set<NotificationEntry>> notifications =
+ getGroupedConversationNotifications();
+ String contactUri = null;
+ if (tile.getContactUri() != null) {
+ contactUri = tile.getContactUri().toString();
+ }
+ return augmentTileFromNotifications(tile, contactUri, notifications);
+ }
+
+ /** Returns active and pending notifications grouped by {@link PeopleTileKey}. */
+ public Map<PeopleTileKey, Set<NotificationEntry>> getGroupedConversationNotifications() {
+ List<NotificationEntry> notifications =
+ new ArrayList<>(mNotificationEntryManager.getVisibleNotifications());
+ Iterable<NotificationEntry> pendingNotifications =
+ mNotificationEntryManager.getPendingNotificationsIterator();
+ for (NotificationEntry entry : pendingNotifications) {
+ notifications.add(entry);
+ }
+ if (DEBUG) Log.d(TAG, "Number of total notifications: " + notifications.size());
+ Map<PeopleTileKey, Set<NotificationEntry>> groupedNotifications =
+ notifications
+ .stream()
+ .filter(entry -> NotificationHelper.isValid(entry)
+ && NotificationHelper.isMissedCallOrHasContent(entry))
+ .collect(Collectors.groupingBy(
+ PeopleTileKey::new,
+ Collectors.mapping(Function.identity(), Collectors.toSet())));
+ if (DEBUG) {
+ Log.d(TAG, "Number of grouped conversation notifications keys: "
+ + groupedNotifications.keySet().size());
+ }
+ return groupedNotifications;
+ }
+
+ /** Augments {@code tile} based on {@code notifications}, matching {@code contactUri}. */
+ public PeopleSpaceTile augmentTileFromNotifications(PeopleSpaceTile tile, String contactUri,
+ Map<PeopleTileKey, Set<NotificationEntry>> notifications) {
+ if (DEBUG) Log.d(TAG, "Augmenting tile from notifications. Tile id: " + tile.getId());
+ boolean hasReadContactsPermission = mPackageManager.checkPermission(READ_CONTACTS,
+ tile.getPackageName()) == PackageManager.PERMISSION_GRANTED;
+
+ List<NotificationEntry> notificationsByUri = new ArrayList<>();
+ if (hasReadContactsPermission) {
+ notificationsByUri = getNotificationsByUri(mPackageManager, contactUri, notifications);
+ if (!notificationsByUri.isEmpty()) {
+ if (DEBUG) {
+ Log.d(TAG, "Number of notifications matched by contact URI: "
+ + notificationsByUri.size());
+ }
+ }
+ }
+
+ PeopleTileKey key = new PeopleTileKey(tile);
+ Set<NotificationEntry> allNotifications = notifications.get(key);
+ if (allNotifications == null) {
+ allNotifications = new HashSet<>();
+ }
+ if (allNotifications.isEmpty() && notificationsByUri.isEmpty()) {
+ if (DEBUG) Log.d(TAG, "No existing notifications for tile: " + key);
+ return removeNotificationFields(tile);
+ }
+
+ // Merge notifications matched by key and by contact URI.
+ allNotifications.addAll(notificationsByUri);
+ if (DEBUG) Log.d(TAG, "Total notifications matching tile: " + allNotifications.size());
+
+ int messagesCount = getMessagesCount(allNotifications);
+ NotificationEntry highestPriority = getHighestPriorityNotification(allNotifications);
+
+ if (DEBUG) Log.d(TAG, "Augmenting tile from notification, key: " + key.toString());
+ return augmentTileFromNotification(mContext, tile, highestPriority, messagesCount);
+ }
+
+ /** Returns an augmented tile for an existing widget. */
+ @Nullable
+ public Optional<PeopleSpaceTile> getAugmentedTileForExistingWidget(int widgetId,
+ Map<PeopleTileKey, Set<NotificationEntry>> notifications) {
+ Log.d(TAG, "Augmenting tile for widget: " + widgetId);
+ PeopleSpaceTile tile = getTileForExistingWidget(widgetId);
+ if (tile == null) {
+ return Optional.empty();
+ }
+ String contactUriString = mSharedPrefs.getString(String.valueOf(widgetId), null);
+ // Should never be null, but using ofNullable for extra safety.
+ return Optional.ofNullable(
+ augmentTileFromNotifications(tile, contactUriString, notifications));
+ }
+
+ /** Returns stored widgets for the conversation specified. */
+ public Set<String> getMatchingKeyWidgetIds(PeopleTileKey key) {
+ if (!key.isValid()) {
+ return new HashSet<>();
+ }
+ return new HashSet<>(mSharedPrefs.getStringSet(key.toString(), new HashSet<>()));
+ }
+
+ /**
+ * Updates in-memory map of tiles with matched Uris, dependent on the {@code action}.
*
* <p>If the notification was added, adds the notification based on the contact Uri within
* {@code sbn}.
* <p>If the notification was removed, removes the notification based on the in-memory map of
* widgets previously updated by Uri (since the contact Uri is stripped from the {@code sbn}).
*/
- private void updateTilesByUri(PeopleTileKey key, StatusBarNotification sbn,
+ @Nullable
+ private Set<String> getMatchingUriWidgetIds(StatusBarNotification sbn,
PeopleSpaceUtils.NotificationAction action) {
if (action.equals(PeopleSpaceUtils.NotificationAction.POSTED)) {
- Set<String> widgetIdsUpdatedByUri = supplementTilesByUri(sbn, action, key);
+ Set<String> widgetIdsUpdatedByUri = fetchMatchingUriWidgetIds(sbn);
if (widgetIdsUpdatedByUri != null && !widgetIdsUpdatedByUri.isEmpty()) {
- if (DEBUG) Log.d(TAG, "Added due to uri: " + widgetIdsUpdatedByUri);
mNotificationKeyToWidgetIdsMatchedByUri.put(sbn.getKey(), widgetIdsUpdatedByUri);
+ return widgetIdsUpdatedByUri;
}
} else {
// Remove the notification on any widgets where the notification was added
@@ -343,21 +451,16 @@
Set<String> widgetsPreviouslyUpdatedByUri =
mNotificationKeyToWidgetIdsMatchedByUri.remove(sbn.getKey());
if (widgetsPreviouslyUpdatedByUri != null && !widgetsPreviouslyUpdatedByUri.isEmpty()) {
- if (DEBUG) Log.d(TAG, "Remove due to uri: " + widgetsPreviouslyUpdatedByUri);
- updateWidgetIdsForNotificationAction(widgetsPreviouslyUpdatedByUri, sbn,
- action);
+ return widgetsPreviouslyUpdatedByUri;
}
}
+ return new HashSet<>();
}
- /**
- * Retrieves from storage any tiles with the same contact Uri as linked via the {@code sbn}.
- * Supplements the tiles with the notification content only if they still have {@link
- * android.Manifest.permission.READ_CONTACTS} permission.
- */
+ /** Fetches widget Ids that match the contact URI in {@code sbn}. */
@Nullable
- private Set<String> supplementTilesByUri(StatusBarNotification sbn,
- PeopleSpaceUtils.NotificationAction notificationAction, PeopleTileKey key) {
+ private Set<String> fetchMatchingUriWidgetIds(StatusBarNotification sbn) {
+ // Check if it's a missed call notification
if (!shouldMatchNotificationByUri(sbn)) {
if (DEBUG) Log.d(TAG, "Should not supplement conversation");
return null;
@@ -377,80 +480,7 @@
if (DEBUG) Log.d(TAG, "No tiles for contact");
return null;
}
-
- if (mPackageManager.checkPermission(READ_CONTACTS,
- sbn.getPackageName()) != PackageManager.PERMISSION_GRANTED) {
- if (DEBUG) Log.d(TAG, "Notifying app missing permissions");
- return null;
- }
-
- Set<String> widgetIdsUpdatedByUri = new HashSet<>();
- for (String widgetIdString : storedWidgetIdsByUri) {
- int widgetId = Integer.parseInt(widgetIdString);
- PeopleSpaceTile storedTile = getTileForExistingWidget(widgetId);
- // Don't update a widget already updated.
- if (key.equals(new PeopleTileKey(storedTile))) {
- continue;
- }
- if (storedTile == null || mPackageManager.checkPermission(READ_CONTACTS,
- storedTile.getPackageName()) != PackageManager.PERMISSION_GRANTED) {
- if (DEBUG) Log.d(TAG, "Cannot supplement tile: " + storedTile.getUserName());
- continue;
- }
- if (DEBUG) Log.d(TAG, "Adding notification by uri: " + sbn.getKey());
- updateStorageAndViewWithNotificationData(sbn, notificationAction,
- widgetId, storedTile);
- widgetIdsUpdatedByUri.add(String.valueOf(widgetId));
- }
- return widgetIdsUpdatedByUri;
- }
-
- /**
- * Try to retrieve a valid Uri via {@code sbn}, falling back to the {@code
- * contactUriFromShortcut} if valid.
- */
- @Nullable
- private String getContactUri(StatusBarNotification sbn) {
- // First, try to get a Uri from the Person directly set on the Notification.
- ArrayList<Person> people = sbn.getNotification().extras.getParcelableArrayList(
- EXTRA_PEOPLE_LIST);
- if (people != null && people.get(0) != null) {
- String contactUri = people.get(0).getUri();
- if (contactUri != null && !contactUri.isEmpty()) {
- return contactUri;
- }
- }
-
- // Then, try to get a Uri from the Person set on the Notification message.
- List<Notification.MessagingStyle.Message> messages =
- getMessagingStyleMessages(sbn.getNotification());
- if (messages != null && !messages.isEmpty()) {
- Notification.MessagingStyle.Message message = messages.get(0);
- Person sender = message.getSenderPerson();
- if (sender != null && sender.getUri() != null && !sender.getUri().isEmpty()) {
- return sender.getUri();
- }
- }
-
- return null;
- }
-
- /**
- * Returns whether a notification should be matched to other Tiles by Uri.
- *
- * <p>Currently only matches missed calls.
- */
- private boolean shouldMatchNotificationByUri(StatusBarNotification sbn) {
- Notification notification = sbn.getNotification();
- if (notification == null) {
- if (DEBUG) Log.d(TAG, "Notification is null");
- return false;
- }
- if (!Objects.equals(notification.category, CATEGORY_MISSED_CALL)) {
- if (DEBUG) Log.d(TAG, "Not missed call");
- return false;
- }
- return true;
+ return storedWidgetIdsByUri;
}
/**
@@ -461,7 +491,7 @@
synchronized (mLock) {
PeopleTileKey key = new PeopleTileKey(
info.getId(), info.getUserId(), info.getPackage());
- Set<String> storedWidgetIds = getStoredWidgetIds(mSharedPrefs, key);
+ Set<String> storedWidgetIds = getMatchingKeyWidgetIds(key);
for (String widgetIdString : storedWidgetIds) {
if (DEBUG) {
Log.d(TAG,
@@ -469,7 +499,7 @@
+ info.getLabel());
}
updateStorageAndViewWithConversationData(conversation,
- Integer.valueOf(widgetIdString));
+ Integer.parseInt(widgetIdString));
}
}
}
@@ -484,52 +514,31 @@
if (DEBUG) Log.d(TAG, "Could not find stored tile to add conversation to");
return;
}
+ PeopleSpaceTile.Builder updatedTile = storedTile.toBuilder();
ShortcutInfo info = conversation.getShortcutInfo();
Uri uri = null;
if (info.getPersons() != null && info.getPersons().length > 0) {
Person person = info.getPersons()[0];
uri = person.getUri() == null ? null : Uri.parse(person.getUri());
}
- storedTile = storedTile.toBuilder()
- .setUserName(info.getLabel())
- .setUserIcon(
- PeopleSpaceTile.convertDrawableToIcon(mLauncherApps.getShortcutIconDrawable(
- info, 0)))
+ CharSequence label = info.getLabel();
+ if (label != null) {
+ updatedTile.setUserName(label);
+ }
+ Icon icon = PeopleSpaceTile.convertDrawableToIcon(mLauncherApps.getShortcutIconDrawable(
+ info, 0));
+ if (icon != null) {
+ updatedTile.setUserIcon(icon);
+ }
+ updatedTile
.setContactUri(uri)
.setStatuses(conversation.getStatuses())
.setLastInteractionTimestamp(conversation.getLastEventTimestamp())
.setIsImportantConversation(conversation.getParentNotificationChannel() != null
&& conversation.getParentNotificationChannel().isImportantConversation())
.build();
- updateAppWidgetOptionsAndView(mAppWidgetManager, mContext, appWidgetId, storedTile);
- }
-
- /**
- * Update {@code appWidgetId} with the new data provided by {@code sbn}.
- */
- private void updateStorageAndViewWithNotificationData(
- StatusBarNotification sbn,
- PeopleSpaceUtils.NotificationAction notificationAction,
- int appWidgetId, PeopleSpaceTile storedTile) {
- if (notificationAction == PeopleSpaceUtils.NotificationAction.POSTED) {
- if (DEBUG) Log.i(TAG, "Adding notification to storage, appWidgetId: " + appWidgetId);
- storedTile = augmentTileFromNotification(mContext, storedTile, sbn);
- } else if (Objects.equals(storedTile.getNotificationKey(), sbn.getKey())) {
- if (DEBUG) {
- Log.i(TAG, "Removing notification from storage, appWidgetId: " + appWidgetId);
- }
- storedTile = storedTile
- .toBuilder()
- // Reset notification content.
- .setNotificationKey(null)
- .setNotificationContent(null)
- .setNotificationDataUri(null)
- .setMessagesCount(0)
- // Reset missed calls category.
- .setNotificationCategory(null)
- .build();
- }
- updateAppWidgetOptionsAndView(mAppWidgetManager, mContext, appWidgetId, storedTile);
+ updateAppWidgetOptionsAndView(mAppWidgetManager, mContext, appWidgetId,
+ updatedTile.build());
}
/**
@@ -615,22 +624,10 @@
public void addNewWidget(int appWidgetId, PeopleTileKey key) {
if (DEBUG) Log.d(TAG, "addNewWidget called with key for appWidgetId: " + appWidgetId);
PeopleSpaceTile tile = getTileFromPersistentStorage(key);
- tile = PeopleSpaceUtils.augmentSingleTileFromVisibleNotifications(
- mContext, tile, mNotificationEntryManager);
- if (tile != null) {
- addNewWidget(appWidgetId, tile);
- }
- }
-
- /**
- * Adds a widget based on {@code tile} mapped to {@code appWidgetId}.
- * The tile provided should already be augmented.
- */
- public void addNewWidget(int appWidgetId, PeopleSpaceTile tile) {
- if (DEBUG) Log.d(TAG, "addNewWidget called for appWidgetId: " + appWidgetId);
if (tile == null) {
return;
}
+ tile = augmentTileFromNotificationEntryManager(tile);
PeopleTileKey existingKeyIfStored;
synchronized (mLock) {
@@ -648,7 +645,6 @@
synchronized (mLock) {
if (DEBUG) Log.d(TAG, "Add storage for : " + tile.getId());
- PeopleTileKey key = new PeopleTileKey(tile);
PeopleSpaceUtils.setSharedPreferencesStorageForTile(mContext, key, appWidgetId,
tile.getContactUri());
}
@@ -780,8 +776,7 @@
public boolean requestPinAppWidget(ShortcutInfo shortcutInfo, Bundle options) {
if (DEBUG) Log.d(TAG, "Requesting pin widget, shortcutId: " + shortcutInfo.getId());
- RemoteViews widgetPreview = PeopleSpaceUtils.getPreview(mContext, mIPeopleManager,
- mLauncherApps, mNotificationEntryManager, shortcutInfo.getId(),
+ RemoteViews widgetPreview = getPreview(shortcutInfo.getId(),
shortcutInfo.getUserHandle(), shortcutInfo.getPackage(), options);
if (widgetPreview == null) {
Log.w(TAG, "Skipping pinning widget: no tile for shortcutId: " + shortcutInfo.getId());
@@ -811,8 +806,6 @@
List<PeopleSpaceTile> priorityTiles = PeopleSpaceUtils.getSortedTiles(mIPeopleManager,
mLauncherApps, mUserManager,
priorityConversations);
- priorityTiles = PeopleSpaceUtils.augmentTilesFromVisibleNotifications(
- mContext, priorityTiles, mNotificationEntryManager);
return priorityTiles;
}
@@ -839,9 +832,33 @@
List<PeopleSpaceTile> recentTiles =
PeopleSpaceUtils.getSortedTiles(mIPeopleManager, mLauncherApps, mUserManager,
mergedStream);
-
- recentTiles = PeopleSpaceUtils.augmentTilesFromVisibleNotifications(
- mContext, recentTiles, mNotificationEntryManager);
return recentTiles;
}
+
+ /**
+ * Returns a {@link RemoteViews} preview of a Conversation's People Tile. Returns null if one
+ * is not available.
+ */
+ public RemoteViews getPreview(String shortcutId, UserHandle userHandle, String packageName,
+ Bundle options) {
+ PeopleSpaceTile tile;
+ ConversationChannel channel;
+ try {
+ channel = mIPeopleManager.getConversation(
+ packageName, userHandle.getIdentifier(), shortcutId);
+ tile = PeopleSpaceUtils.getTile(channel, mLauncherApps);
+ } catch (Exception e) {
+ Log.w(TAG, "Exception getting tiles: " + e);
+ return null;
+ }
+ if (tile == null) {
+ if (DEBUG) Log.i(TAG, "No tile was returned");
+ return null;
+ }
+
+ PeopleSpaceTile augmentedTile = augmentTileFromNotificationEntryManager(tile);
+
+ if (DEBUG) Log.i(TAG, "Returning tile preview for shortcutId: " + shortcutId);
+ return new PeopleTileViewHelper(mContext, augmentedTile, 0, options).getViews();
+ }
}
diff --git a/packages/SystemUI/src/com/android/systemui/privacy/PrivacyDialog.kt b/packages/SystemUI/src/com/android/systemui/privacy/PrivacyDialog.kt
index dc22dc1..9e8f6b8 100644
--- a/packages/SystemUI/src/com/android/systemui/privacy/PrivacyDialog.kt
+++ b/packages/SystemUI/src/com/android/systemui/privacy/PrivacyDialog.kt
@@ -119,7 +119,7 @@
} else {
app
}
- val firstLine = context.getString(stringId, appName, element.type.getName(context))
+ val firstLine = context.getString(stringId, appName)
val finalText = element.attribution?.let {
TextUtils.concat(
firstLine,
diff --git a/packages/SystemUI/src/com/android/systemui/qs/QSContainerImpl.java b/packages/SystemUI/src/com/android/systemui/qs/QSContainerImpl.java
index bf9acc2..6b09e2e 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/QSContainerImpl.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/QSContainerImpl.java
@@ -206,6 +206,12 @@
layoutParams.topMargin = mContext.getResources().getDimensionPixelSize(
com.android.internal.R.dimen.quick_qs_offset_height);
mQSPanelContainer.setLayoutParams(layoutParams);
+ mQSPanelContainer.setPaddingRelative(
+ mQSPanelContainer.getPaddingStart(),
+ mQSPanelContainer.getPaddingTop(),
+ mQSPanelContainer.getPaddingEnd(),
+ mContext.getResources().getDimensionPixelSize(R.dimen.qs_container_bottom_padding)
+ );
mSideMargins = getResources().getDimensionPixelSize(R.dimen.notification_side_paddings);
int padding = getResources().getDimensionPixelSize(
@@ -237,6 +243,8 @@
int scrollBottom = calculateContainerBottom();
setBottom(getTop() + height);
mQSDetail.setBottom(getTop() + scrollBottom);
+ int qsDetailBottomMargin = ((MarginLayoutParams) mQSDetail.getLayoutParams()).bottomMargin;
+ mQSDetail.setBottom(getTop() + scrollBottom - qsDetailBottomMargin);
mBackground.setTop(mQSPanelContainer.getTop());
updateBackgroundBottom(scrollBottom, animate);
}
diff --git a/packages/SystemUI/src/com/android/systemui/qs/QSDetail.java b/packages/SystemUI/src/com/android/systemui/qs/QSDetail.java
index 980024e..05197e4 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/QSDetail.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/QSDetail.java
@@ -150,6 +150,12 @@
public void updateResources() {
updateDetailText();
+ MarginLayoutParams lp = (MarginLayoutParams) getLayoutParams();
+ lp.topMargin = mContext.getResources().getDimensionPixelSize(
+ com.android.internal.R.dimen.quick_qs_offset_height);
+ lp.bottomMargin = mContext.getResources().getDimensionPixelSize(
+ R.dimen.qs_container_bottom_padding);
+ setLayoutParams(lp);
}
public boolean isClosingDetail() {
diff --git a/packages/SystemUI/src/com/android/systemui/qs/QuickStatusBarHeader.java b/packages/SystemUI/src/com/android/systemui/qs/QuickStatusBarHeader.java
index 7123e49..e3f00f4 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/QuickStatusBarHeader.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/QuickStatusBarHeader.java
@@ -85,10 +85,13 @@
private int mTopViewMeasureHeight;
private final String mMobileSlotName;
+ private final String mCallStrengthSlotName;
public QuickStatusBarHeader(Context context, AttributeSet attrs) {
super(context, attrs);
mMobileSlotName = context.getString(com.android.internal.R.string.status_bar_no_calling);
+ mCallStrengthSlotName =
+ context.getString(com.android.internal.R.string.status_bar_call_strength);
}
/**
@@ -218,28 +221,38 @@
}
private void updateAlphaAnimator() {
- StatusBarIconView icon =
+ StatusBarIconView noCallingIcon =
((StatusBarIconView) mIconContainer.getViewForSlot(mMobileSlotName));
+ StatusBarIconView callStrengthIcon =
+ ((StatusBarIconView) mIconContainer.getViewForSlot(mCallStrengthSlotName));
TouchAnimator.Builder builder = new TouchAnimator.Builder()
.addFloat(mQSCarriers, "alpha", 0, 1)
.addFloat(mDatePrivacyView, "alpha", 0, mDatePrivacyAlpha);
- if (icon != null) {
- builder.addFloat(icon, "alpha", 1, 0);
+ if (noCallingIcon != null || callStrengthIcon != null) {
+ if (noCallingIcon != null) {
+ builder.addFloat(noCallingIcon, "alpha", 1, 0);
+ }
+ if (callStrengthIcon != null) {
+ builder.addFloat(callStrengthIcon, "alpha", 1, 0);
+ }
builder.setListener(new TouchAnimator.ListenerAdapter() {
@Override
public void onAnimationAtEnd() {
mIconContainer.addIgnoredSlot(mMobileSlotName);
+ mIconContainer.addIgnoredSlot(mCallStrengthSlotName);
}
@Override
public void onAnimationStarted() {
mIconContainer.removeIgnoredSlot(mMobileSlotName);
+ mIconContainer.removeIgnoredSlot(mCallStrengthSlotName);
}
@Override
public void onAnimationAtStart() {
super.onAnimationAtStart();
mIconContainer.removeIgnoredSlot(mMobileSlotName);
+ mIconContainer.removeIgnoredSlot(mCallStrengthSlotName);
}
});
}
diff --git a/packages/SystemUI/src/com/android/systemui/settings/brightness/BrightnessDialog.java b/packages/SystemUI/src/com/android/systemui/settings/brightness/BrightnessDialog.java
index 3ba4646..0f97e43 100644
--- a/packages/SystemUI/src/com/android/systemui/settings/brightness/BrightnessDialog.java
+++ b/packages/SystemUI/src/com/android/systemui/settings/brightness/BrightnessDialog.java
@@ -16,12 +16,17 @@
package com.android.systemui.settings.brightness;
+import static android.view.ViewGroup.LayoutParams.MATCH_PARENT;
+import static android.view.ViewGroup.LayoutParams.WRAP_CONTENT;
+
import android.app.Activity;
import android.os.Bundle;
import android.view.Gravity;
import android.view.KeyEvent;
+import android.view.View;
import android.view.Window;
import android.view.WindowManager;
+import android.widget.FrameLayout;
import com.android.internal.logging.MetricsLogger;
import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
@@ -62,10 +67,15 @@
window.setLayout(
WindowManager.LayoutParams.MATCH_PARENT, WindowManager.LayoutParams.WRAP_CONTENT);
- BrightnessSlider controller = mToggleSliderFactory.create(this, null);
+ setContentView(R.layout.brightness_mirror_container);
+ FrameLayout frame = findViewById(R.id.brightness_mirror_container);
+ // The brightness mirror container is INVISIBLE by default.
+ frame.setVisibility(View.VISIBLE);
+
+ BrightnessSlider controller = mToggleSliderFactory.create(this, frame);
controller.init();
- setContentView(controller.getRootView());
- controller.getRootView().setBackgroundResource(R.drawable.brightness_mirror_background);
+ frame.addView(controller.getRootView(), MATCH_PARENT, WRAP_CONTENT);
+
mBrightnessController = new BrightnessController(this, controller, mBroadcastDispatcher);
}
diff --git a/packages/SystemUI/src/com/android/systemui/settings/brightness/BrightnessSlider.java b/packages/SystemUI/src/com/android/systemui/settings/brightness/BrightnessSlider.java
index db82057..0ff6216 100644
--- a/packages/SystemUI/src/com/android/systemui/settings/brightness/BrightnessSlider.java
+++ b/packages/SystemUI/src/com/android/systemui/settings/brightness/BrightnessSlider.java
@@ -44,11 +44,10 @@
*
* @see BrightnessMirrorController
*/
-public class BrightnessSlider extends ViewController<View> implements ToggleSlider {
+public class BrightnessSlider extends ViewController<BrightnessSliderView> implements ToggleSlider {
private Listener mListener;
private ToggleSlider mMirror;
- private final BrightnessSliderView mBrightnessSliderView;
private BrightnessMirrorController mMirrorController;
private boolean mTracking;
private final FalsingManager mFalsingManager;
@@ -71,11 +70,9 @@
};
BrightnessSlider(
- View rootView,
BrightnessSliderView brightnessSliderView,
FalsingManager falsingManager) {
- super(rootView);
- mBrightnessSliderView = brightnessSliderView;
+ super(brightnessSliderView);
mFalsingManager = falsingManager;
}
@@ -86,21 +83,18 @@
return mView;
}
- private void enableSlider(boolean enable) {
- mBrightnessSliderView.enableSlider(enable);
- }
@Override
protected void onViewAttached() {
- mBrightnessSliderView.setOnSeekBarChangeListener(mSeekListener);
- mBrightnessSliderView.setOnInterceptListener(mOnInterceptListener);
+ mView.setOnSeekBarChangeListener(mSeekListener);
+ mView.setOnInterceptListener(mOnInterceptListener);
}
@Override
protected void onViewDetached() {
- mBrightnessSliderView.setOnSeekBarChangeListener(null);
- mBrightnessSliderView.setOnDispatchTouchEventListener(null);
- mBrightnessSliderView.setOnInterceptListener(null);
+ mView.setOnSeekBarChangeListener(null);
+ mView.setOnDispatchTouchEventListener(null);
+ mView.setOnInterceptListener(null);
}
@Override
@@ -109,7 +103,7 @@
return copyEventToMirror(ev);
} else {
// We are the mirror, so we have to dispatch the event
- return mBrightnessSliderView.dispatchTouchEvent(ev);
+ return mView.dispatchTouchEvent(ev);
}
}
@@ -122,19 +116,19 @@
@Override
public void setEnforcedAdmin(RestrictedLockUtils.EnforcedAdmin admin) {
- mBrightnessSliderView.setEnforcedAdmin(admin);
+ mView.setEnforcedAdmin(admin);
}
private void setMirror(ToggleSlider toggleSlider) {
mMirror = toggleSlider;
if (mMirror != null) {
- mMirror.setMax(mBrightnessSliderView.getMax());
- mMirror.setValue(mBrightnessSliderView.getValue());
- mBrightnessSliderView.setOnDispatchTouchEventListener(this::mirrorTouchEvent);
+ mMirror.setMax(mView.getMax());
+ mMirror.setValue(mView.getValue());
+ mView.setOnDispatchTouchEventListener(this::mirrorTouchEvent);
} else {
// If there's no mirror, we may be the ones dispatching, events but we should not mirror
// them
- mBrightnessSliderView.setOnDispatchTouchEventListener(null);
+ mView.setOnDispatchTouchEventListener(null);
}
}
@@ -151,7 +145,7 @@
} else {
// If there's no mirror, we may be the ones dispatching, events but we should not mirror
// them
- mBrightnessSliderView.setOnDispatchTouchEventListener(null);
+ mView.setOnDispatchTouchEventListener(null);
}
}
@@ -162,7 +156,7 @@
@Override
public void setMax(int max) {
- mBrightnessSliderView.setMax(max);
+ mView.setMax(max);
if (mMirror != null) {
mMirror.setMax(max);
}
@@ -170,12 +164,12 @@
@Override
public int getMax() {
- return mBrightnessSliderView.getMax();
+ return mView.getMax();
}
@Override
public void setValue(int value) {
- mBrightnessSliderView.setValue(value);
+ mView.setValue(value);
if (mMirror != null) {
mMirror.setValue(value);
}
@@ -183,7 +177,7 @@
@Override
public int getValue() {
- return mBrightnessSliderView.getValue();
+ return mView.getValue();
}
private final SeekBar.OnSeekBarChangeListener mSeekListener =
@@ -205,7 +199,7 @@
if (mMirrorController != null) {
mMirrorController.showMirror();
- mMirrorController.setLocation((View) mBrightnessSliderView.getParent());
+ mMirrorController.setLocationAndSize(mView);
}
}
@@ -244,15 +238,9 @@
*/
public BrightnessSlider create(Context context, @Nullable ViewGroup viewRoot) {
int layout = getLayout();
- ViewGroup root = (ViewGroup) LayoutInflater.from(context)
+ BrightnessSliderView root = (BrightnessSliderView) LayoutInflater.from(context)
.inflate(layout, viewRoot, false);
- return fromTree(root);
- }
-
- private BrightnessSlider fromTree(ViewGroup root) {
- BrightnessSliderView v = root.requireViewById(R.id.brightness_slider);
-
- return new BrightnessSlider(root, v, mFalsingManager);
+ return new BrightnessSlider(root, mFalsingManager);
}
/** Get the layout to inflate based on what slider to use */
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/events/SystemStatusAnimationScheduler.kt b/packages/SystemUI/src/com/android/systemui/statusbar/events/SystemStatusAnimationScheduler.kt
index b85d031..46a971b 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/events/SystemStatusAnimationScheduler.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/events/SystemStatusAnimationScheduler.kt
@@ -23,6 +23,7 @@
import android.annotation.IntDef
import android.content.Context
import android.os.Process
+import android.provider.DeviceConfig
import android.util.Log
import android.view.View
@@ -62,6 +63,14 @@
@Main private val executor: DelayableExecutor
) : CallbackController<SystemStatusAnimationCallback> {
+ companion object {
+ private const val PROPERTY_ENABLE_IMMERSIVE_INDICATOR = "enable_immersive_indicator"
+ }
+ private fun isImmersiveIndicatorEnabled(): Boolean {
+ return DeviceConfig.getBoolean(DeviceConfig.NAMESPACE_PRIVACY,
+ PROPERTY_ENABLE_IMMERSIVE_INDICATOR, false)
+ }
+
/** True from the time a scheduled event starts until it's animation finishes */
var isActive = false
private set
@@ -83,7 +92,7 @@
fun onStatusEvent(event: StatusEvent) {
// Ignore any updates until the system is up and running
- if (isTooEarly()) {
+ if (isTooEarly() || !isImmersiveIndicatorEnabled()) {
return
}
@@ -106,7 +115,7 @@
}
fun setShouldShowPersistentPrivacyIndicator(should: Boolean) {
- if (hasPersistentDot == should) {
+ if (hasPersistentDot == should || !isImmersiveIndicatorEnabled()) {
return
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/FooterView.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/FooterView.java
index 3bf0ddb..298d4f0 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/FooterView.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/FooterView.java
@@ -19,6 +19,7 @@
import android.annotation.ColorInt;
import android.content.Context;
import android.content.res.Configuration;
+import android.content.res.Resources;
import android.util.AttributeSet;
import android.view.View;
@@ -93,14 +94,16 @@
@Override
protected void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
+ int textColor = getResources().getColor(R.color.notif_pill_text);
+ Resources.Theme theme = getContext().getTheme();
mDismissButton.setBackground(
- getResources().getDrawable(R.drawable.notif_footer_btn_background));
- mDismissButton.setTextColor(getResources().getColor(R.color.notif_pill_text));
+ getResources().getDrawable(R.drawable.notif_footer_btn_background, theme));
+ mDismissButton.setTextColor(textColor);
mManageButton.setBackground(
- getResources().getDrawable(R.drawable.notif_footer_btn_background));
- mManageButton.setTextColor(getResources().getColor(R.color.notif_pill_text));
+ getResources().getDrawable(R.drawable.notif_footer_btn_background, theme));
mManageButton = findViewById(R.id.manage_text);
mDismissButton.setText(R.string.clear_all_notifications_text);
+ mManageButton.setTextColor(textColor);
mDismissButton.setContentDescription(
mContext.getString(R.string.accessibility_clear_all));
showHistory(mShowHistory);
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationContentView.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationContentView.java
index a0b0b3d..a90e76b 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationContentView.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationContentView.java
@@ -16,7 +16,6 @@
package com.android.systemui.statusbar.notification.row;
-
import android.annotation.NonNull;
import android.annotation.Nullable;
import android.app.Notification;
@@ -59,6 +58,7 @@
import com.android.systemui.statusbar.policy.SmartReplyConstants;
import com.android.systemui.statusbar.policy.SmartReplyStateInflaterKt;
import com.android.systemui.statusbar.policy.SmartReplyView;
+import com.android.systemui.wmshell.BubblesManager;
import java.io.FileDescriptor;
import java.io.PrintWriter;
@@ -1315,11 +1315,6 @@
applyBubbleAction(mExpandedChild, entry);
}
- private boolean isBubblesEnabled() {
- return Settings.Global.getInt(mContext.getContentResolver(),
- Settings.Global.NOTIFICATION_BUBBLES, 0) == 1;
- }
-
/**
* Setup icon buttons provided by System UI.
*/
@@ -1340,7 +1335,7 @@
boolean isPersonWithShortcut =
mPeopleIdentifier.getPeopleNotificationType(entry)
>= PeopleNotificationIdentifier.TYPE_FULL_PERSON;
- boolean showButton = isBubblesEnabled()
+ boolean showButton = BubblesManager.areBubblesEnabled(mContext, entry.getSbn().getUser())
&& isPersonWithShortcut
&& entry.getBubbleMetadata() != null;
if (showButton) {
@@ -1481,18 +1476,26 @@
return null;
}
- SmartReplyView smartReplyView = null;
- if (smartReplyContainer.getChildCount() == 1
- && smartReplyContainer.getChildAt(0) instanceof SmartReplyView) {
+ // Search for an existing SmartReplyView
+ int index = 0;
+ final int childCount = smartReplyContainer.getChildCount();
+ for (; index < childCount; index++) {
+ View child = smartReplyContainer.getChildAt(index);
+ if (child.getId() == R.id.smart_reply_view && child instanceof SmartReplyView) {
+ break;
+ }
+ }
+
+ if (index < childCount) {
// If we already have a SmartReplyView - replace it with the newly inflated one. The
// newly inflated one is connected to the new inflated smart reply/action buttons.
- smartReplyContainer.removeAllViews();
+ smartReplyContainer.removeViewAt(index);
}
- if (smartReplyContainer.getChildCount() == 0
- && inflatedSmartReplyViewHolder != null
+ SmartReplyView smartReplyView = null;
+ if (inflatedSmartReplyViewHolder != null
&& inflatedSmartReplyViewHolder.getSmartReplyView() != null) {
smartReplyView = inflatedSmartReplyViewHolder.getSmartReplyView();
- smartReplyContainer.addView(smartReplyView);
+ smartReplyContainer.addView(smartReplyView, index);
}
if (smartReplyView != null) {
smartReplyView.resetSmartSuggestions(smartReplyContainer);
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationConversationInfo.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationConversationInfo.java
index 3434f67..40be4bf 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationConversationInfo.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationConversationInfo.java
@@ -22,7 +22,6 @@
import static android.app.NotificationManager.IMPORTANCE_DEFAULT;
import static android.app.NotificationManager.IMPORTANCE_LOW;
import static android.app.NotificationManager.IMPORTANCE_UNSPECIFIED;
-import static android.provider.Settings.Global.NOTIFICATION_BUBBLES;
import static com.android.systemui.animation.Interpolators.FAST_OUT_SLOW_IN;
@@ -48,7 +47,6 @@
import android.os.Handler;
import android.os.RemoteException;
import android.os.UserHandle;
-import android.provider.Settings;
import android.service.notification.StatusBarNotification;
import android.text.TextUtils;
import android.transition.ChangeBounds;
@@ -573,8 +571,7 @@
boolean showAsBubble = mBubbleMetadata != null
&& mBubbleMetadata.getAutoExpandBubble()
- && Settings.Global.getInt(mContext.getContentResolver(),
- NOTIFICATION_BUBBLES, 0) == 1;
+ && BubblesManager.areBubblesEnabled(mContext, mSbn.getUser());
Drawable person = mIconFactory.getBaseIconDrawable(mShortcutInfo);
if (person == null) {
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/StackScrollAlgorithm.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/StackScrollAlgorithm.java
index 3e1a781..6cacec7 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/StackScrollAlgorithm.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/StackScrollAlgorithm.java
@@ -272,13 +272,15 @@
currentY += mGapHeight;
}
- // Save index of first view in the shelf
- final float shelfStart = ambientState.getStackEndHeight()
- - ambientState.getShelf().getIntrinsicHeight();
- if (currentY >= shelfStart
- && !(view instanceof FooterView)
- && state.firstViewInShelf == null) {
- state.firstViewInShelf = view;
+ if (ambientState.getShelf() != null) {
+ // Save index of first view in the shelf
+ final float shelfStart = ambientState.getStackEndHeight()
+ - ambientState.getShelf().getIntrinsicHeight();
+ if (currentY >= shelfStart
+ && !(view instanceof FooterView)
+ && state.firstViewInShelf == null) {
+ state.firstViewInShelf = view;
+ }
}
// Record y position when fully expanded
@@ -298,10 +300,14 @@
float sectionEnd = state.expansionData.get(sectionEndView).fullyExpandedY
+ sectionEndView.getIntrinsicHeight();
- // If we show the shelf, trim section end to shelf start
- // This means section end > start for views in the shelf
- if (state.firstViewInShelf != null && sectionEnd > shelfStart) {
- sectionEnd = shelfStart;
+ if (ambientState.getShelf() != null) {
+ // If we show the shelf, trim section end to shelf start
+ // This means section end > start for views in the shelf
+ final float shelfStart = ambientState.getStackEndHeight()
+ - ambientState.getShelf().getIntrinsicHeight();
+ if (state.firstViewInShelf != null && sectionEnd > shelfStart) {
+ sectionEnd = shelfStart;
+ }
}
// Update section bounds of every view in the previous section
@@ -460,7 +466,7 @@
&& i >= algorithmState.visibleChildren.indexOf(
algorithmState.firstViewInShelf)
&& !(view instanceof FooterView);
- } else {
+ } else if (ambientState.getShelf() != null) {
// When pulsing (incoming notification on AOD), innerHeight is 0; clamp all
// to shelf start, thereby hiding all notifications (except the first one, which we
// later unhide in updatePulsingState)
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/CollapsedStatusBarFragment.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/CollapsedStatusBarFragment.java
index 1eccfd8..48c7b89 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/CollapsedStatusBarFragment.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/CollapsedStatusBarFragment.java
@@ -158,6 +158,7 @@
mDarkIconManager.setShouldLog(true);
mBlockedIcons.add(getString(com.android.internal.R.string.status_bar_volume));
mBlockedIcons.add(getString(com.android.internal.R.string.status_bar_alarm_clock));
+ mBlockedIcons.add(getString(com.android.internal.R.string.status_bar_call_strength));
mDarkIconManager.setBlockList(mBlockedIcons);
Dependency.get(StatusBarIconController.class).addIconGroup(mDarkIconManager);
mSystemIconArea = mStatusBar.findViewById(R.id.system_icon_area);
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardStatusBarView.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardStatusBarView.java
index c22fec9..0c4bec2c 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardStatusBarView.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardStatusBarView.java
@@ -200,6 +200,7 @@
Resources r = getResources();
mBlockedIcons.add(r.getString(com.android.internal.R.string.status_bar_volume));
mBlockedIcons.add(r.getString(com.android.internal.R.string.status_bar_alarm_clock));
+ mBlockedIcons.add(r.getString(com.android.internal.R.string.status_bar_call_strength));
}
private void updateVisibilities() {
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationShadeWindowViewController.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationShadeWindowViewController.java
index 72f7ff8..5b09c72 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationShadeWindowViewController.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationShadeWindowViewController.java
@@ -161,7 +161,7 @@
mNotificationStackScrollLayoutController = notificationStackScrollLayoutController;
// This view is not part of the newly inflated expanded status bar.
- mBrightnessMirror = mView.findViewById(R.id.brightness_mirror);
+ mBrightnessMirror = mView.findViewById(R.id.brightness_mirror_container);
}
/** Inflates the {@link R.layout#status_bar_expanded} layout and sets it up. */
@@ -392,7 +392,7 @@
mView.setOnHierarchyChangeListener(new ViewGroup.OnHierarchyChangeListener() {
@Override
public void onChildViewAdded(View parent, View child) {
- if (child.getId() == R.id.brightness_mirror) {
+ if (child.getId() == R.id.brightness_mirror_container) {
mBrightnessMirror = child;
}
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarIconController.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarIconController.java
index 89e7016..93b83d3 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarIconController.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarIconController.java
@@ -74,6 +74,10 @@
/**
* Display the no calling & SMS icons.
*/
+ void setCallStrengthIcons(String slot, List<CallIndicatorIconState> states);
+ /**
+ * Display the no calling & SMS icons.
+ */
void setNoCallingIcons(String slot, List<CallIndicatorIconState> states);
public void setIconVisibility(String slot, boolean b);
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarIconControllerImpl.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarIconControllerImpl.java
index 068ded3..75900a2 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarIconControllerImpl.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarIconControllerImpl.java
@@ -224,6 +224,33 @@
}
/**
+ * Accept a list of CallIndicatorIconStates, and show the call strength icons.
+ * @param slot StatusBar slot for the call strength icons
+ * @param states All of the no Calling & SMS icon states
+ */
+ @Override
+ public void setCallStrengthIcons(String slot, List<CallIndicatorIconState> states) {
+ Slot callStrengthSlot = getSlot(slot);
+ int callStrengthSlotIndex = getSlotIndex(slot);
+ Collections.reverse(states);
+ for (CallIndicatorIconState state : states) {
+ if (!state.isNoCalling) {
+ StatusBarIconHolder holder = callStrengthSlot.getHolderForTag(state.subId);
+ if (holder == null) {
+ holder = StatusBarIconHolder.fromCallIndicatorState(mContext, state);
+ setIcon(callStrengthSlotIndex, holder);
+ } else {
+ holder.setIcon(new StatusBarIcon(UserHandle.SYSTEM, mContext.getPackageName(),
+ Icon.createWithResource(mContext, state.callStrengthResId), 0, 0,
+ state.callStrengthDescription));
+ setIcon(callStrengthSlotIndex, holder);
+ }
+ }
+ setIconVisibility(slot, !state.isNoCalling, state.subId);
+ }
+ }
+
+ /**
* Accept a list of CallIndicatorIconStates, and show the no calling icons.
* @param slot StatusBar slot for the no calling icons
* @param states All of the no Calling & SMS icon states
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarIconHolder.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarIconHolder.java
index 4ca71f0..af342dd 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarIconHolder.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarIconHolder.java
@@ -86,9 +86,11 @@
Context context,
CallIndicatorIconState state) {
StatusBarIconHolder holder = new StatusBarIconHolder();
+ int resId = state.isNoCalling ? state.noCallingResId : state.callStrengthResId;
+ String contentDescription = state.isNoCalling
+ ? state.noCallingDescription : state.callStrengthDescription;
holder.mIcon = new StatusBarIcon(UserHandle.SYSTEM, context.getPackageName(),
- Icon.createWithResource(context, state.noCallingResId),
- 0, 0, state.noCallingDescription);
+ Icon.createWithResource(context, resId), 0, 0, contentDescription);
holder.mTag = state.subId;
return holder;
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarSignalPolicy.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarSignalPolicy.java
index b57d876..3445826 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarSignalPolicy.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarSignalPolicy.java
@@ -22,6 +22,7 @@
import android.util.ArraySet;
import android.util.Log;
+import com.android.settingslib.mobile.TelephonyIcons;
import com.android.systemui.Dependency;
import com.android.systemui.R;
import com.android.systemui.statusbar.policy.NetworkController;
@@ -49,6 +50,7 @@
private final String mSlotEthernet;
private final String mSlotVpn;
private final String mSlotNoCalling;
+ private final String mSlotCallStrength;
private final Context mContext;
private final StatusBarIconController mIconController;
@@ -82,6 +84,8 @@
mSlotEthernet = mContext.getString(com.android.internal.R.string.status_bar_ethernet);
mSlotVpn = mContext.getString(com.android.internal.R.string.status_bar_vpn);
mSlotNoCalling = mContext.getString(com.android.internal.R.string.status_bar_no_calling);
+ mSlotCallStrength =
+ mContext.getString(com.android.internal.R.string.status_bar_call_strength);
mActivityEnabled = mContext.getResources().getBoolean(R.bool.config_showActivity);
mIconController = iconController;
@@ -207,9 +211,14 @@
if (statusIcon.icon == R.drawable.ic_qs_no_calling_sms) {
state.isNoCalling = statusIcon.visible;
state.noCallingDescription = statusIcon.contentDescription;
- mIconController.setNoCallingIcons(mSlotNoCalling,
- CallIndicatorIconState.copyStates(mCallIndicatorStates));
+ } else {
+ state.callStrengthResId = statusIcon.icon;
+ state.callStrengthDescription = statusIcon.contentDescription;
}
+ mIconController.setCallStrengthIcons(mSlotCallStrength,
+ CallIndicatorIconState.copyStates(mCallIndicatorStates));
+ mIconController.setNoCallingIcons(mSlotNoCalling,
+ CallIndicatorIconState.copyStates(mCallIndicatorStates));
}
@Override
@@ -296,6 +305,7 @@
mIconController.removeAllIconsForSlot(mSlotMobile);
mIconController.removeAllIconsForSlot(mSlotNoCalling);
+ mIconController.removeAllIconsForSlot(mSlotCallStrength);
mMobileStates.clear();
List<CallIndicatorIconState> noCallingStates = new ArrayList<CallIndicatorIconState>();
noCallingStates.addAll(mCallIndicatorStates);
@@ -410,12 +420,15 @@
public static class CallIndicatorIconState {
public boolean isNoCalling;
public int noCallingResId;
+ public int callStrengthResId;
public int subId;
public String noCallingDescription;
+ public String callStrengthDescription;
private CallIndicatorIconState(int subId) {
this.subId = subId;
this.noCallingResId = R.drawable.ic_qs_no_calling_sms;
+ this.callStrengthResId = TelephonyIcons.MOBILE_CALL_STRENGTH_ICONS[0];
}
@Override
@@ -427,21 +440,26 @@
CallIndicatorIconState that = (CallIndicatorIconState) o;
return isNoCalling == that.isNoCalling
&& noCallingResId == that.noCallingResId
+ && callStrengthResId == that.callStrengthResId
&& subId == that.subId
- && noCallingDescription == that.noCallingDescription;
+ && noCallingDescription == that.noCallingDescription
+ && callStrengthDescription == that.callStrengthDescription;
}
@Override
public int hashCode() {
- return Objects.hash(isNoCalling, noCallingResId, subId, noCallingDescription);
+ return Objects.hash(isNoCalling, noCallingResId,
+ callStrengthResId, subId, noCallingDescription, callStrengthDescription);
}
private void copyTo(CallIndicatorIconState other) {
other.isNoCalling = isNoCalling;
other.noCallingResId = noCallingResId;
+ other.callStrengthResId = callStrengthResId;
other.subId = subId;
other.noCallingDescription = noCallingDescription;
+ other.callStrengthDescription = callStrengthDescription;
}
private static List<CallIndicatorIconState> copyStates(
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/BrightnessMirrorController.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/BrightnessMirrorController.java
index 07d3f01..a0edc7c 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/BrightnessMirrorController.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/BrightnessMirrorController.java
@@ -19,7 +19,6 @@
import android.annotation.NonNull;
import android.content.Context;
import android.content.res.Resources;
-import android.graphics.drawable.Drawable;
import android.util.ArraySet;
import android.view.LayoutInflater;
import android.view.View;
@@ -51,6 +50,8 @@
private BrightnessSlider mToggleSliderController;
private final int[] mInt2Cache = new int[2];
private FrameLayout mBrightnessMirror;
+ private int mBrightnessMirrorBackgroundPadding;
+ private int mLastBrightnessSliderWidth = -1;
public BrightnessMirrorController(NotificationShadeWindowView statusBarWindow,
NotificationPanelViewController notificationPanelViewController,
@@ -59,7 +60,7 @@
@NonNull Consumer<Boolean> visibilityCallback) {
mStatusBarWindow = statusBarWindow;
mToggleSliderFactory = factory;
- mBrightnessMirror = statusBarWindow.findViewById(R.id.brightness_mirror);
+ mBrightnessMirror = statusBarWindow.findViewById(R.id.brightness_mirror_container);
mToggleSliderController = setMirrorLayout();
mNotificationPanel = notificationPanelViewController;
mDepthController = notificationShadeDepthController;
@@ -82,20 +83,32 @@
mDepthController.setBrightnessMirrorVisible(false);
}
- public void setLocation(View original) {
+ /**
+ * Set the location and size of the mirror container to match that of the slider in QS
+ * @param original the original view in QS
+ */
+ public void setLocationAndSize(View original) {
original.getLocationInWindow(mInt2Cache);
// Original is slightly larger than the mirror, so make sure to use the center for the
// positioning.
- int originalX = mInt2Cache[0] + original.getWidth() / 2;
- int originalY = mInt2Cache[1] + original.getHeight() / 2;
+ int originalX = mInt2Cache[0] - mBrightnessMirrorBackgroundPadding;
+ int originalY = mInt2Cache[1] - mBrightnessMirrorBackgroundPadding;
mBrightnessMirror.setTranslationX(0);
mBrightnessMirror.setTranslationY(0);
mBrightnessMirror.getLocationInWindow(mInt2Cache);
- int mirrorX = mInt2Cache[0] + mBrightnessMirror.getWidth() / 2;
- int mirrorY = mInt2Cache[1] + mBrightnessMirror.getHeight() / 2;
+ int mirrorX = mInt2Cache[0];
+ int mirrorY = mInt2Cache[1];
mBrightnessMirror.setTranslationX(originalX - mirrorX);
mBrightnessMirror.setTranslationY(originalY - mirrorY);
+
+ // Set the brightness mirror container to be the width of the mirror + 2 times the padding
+ int newWidth = original.getMeasuredWidth() + 2 * mBrightnessMirrorBackgroundPadding;
+ if (newWidth != mLastBrightnessSliderWidth) {
+ ViewGroup.LayoutParams lp = mBrightnessMirror.getLayoutParams();
+ lp.width = newWidth;
+ mBrightnessMirror.setLayoutParams(lp);
+ }
}
public ToggleSlider getToggleSlider() {
@@ -103,13 +116,15 @@
}
public void updateResources() {
- FrameLayout.LayoutParams lp =
- (FrameLayout.LayoutParams) mBrightnessMirror.getLayoutParams();
Resources r = mBrightnessMirror.getResources();
- lp.width = r.getDimensionPixelSize(R.dimen.qs_panel_width);
- lp.height = r.getDimensionPixelSize(R.dimen.brightness_mirror_height);
- lp.gravity = r.getInteger(R.integer.notification_panel_layout_gravity);
- mBrightnessMirror.setLayoutParams(lp);
+ mBrightnessMirrorBackgroundPadding = r
+ .getDimensionPixelSize(R.dimen.rounded_slider_background_padding);
+ mBrightnessMirror.setPadding(
+ mBrightnessMirrorBackgroundPadding,
+ mBrightnessMirrorBackgroundPadding,
+ mBrightnessMirrorBackgroundPadding,
+ mBrightnessMirrorBackgroundPadding
+ );
}
public void onOverlayChanged() {
@@ -124,19 +139,9 @@
Context context = mBrightnessMirror.getContext();
BrightnessSlider controller = mToggleSliderFactory.create(context, mBrightnessMirror);
controller.init();
- Drawable mirrorBackground = context.getDrawable(R.drawable.brightness_mirror_background);
- View rootView = controller.getRootView();
- rootView.setBackground(mirrorBackground);
-
- ViewGroup.MarginLayoutParams lp = (ViewGroup.MarginLayoutParams) rootView.getLayoutParams();
- lp.height = ViewGroup.LayoutParams.MATCH_PARENT;
- lp.width = ViewGroup.LayoutParams.MATCH_PARENT;
- int margin = context.getResources()
- .getDimensionPixelSize(R.dimen.notification_side_paddings);
- lp.leftMargin = margin;
- lp.rightMargin = margin;
- mBrightnessMirror.addView(rootView, lp);
+ mBrightnessMirror.addView(controller.getRootView(), ViewGroup.LayoutParams.MATCH_PARENT,
+ ViewGroup.LayoutParams.WRAP_CONTENT);
return controller;
}
@@ -145,7 +150,7 @@
int index = mStatusBarWindow.indexOfChild(mBrightnessMirror);
mStatusBarWindow.removeView(mBrightnessMirror);
mBrightnessMirror = (FrameLayout) LayoutInflater.from(mBrightnessMirror.getContext())
- .inflate(R.layout.brightness_mirror, mStatusBarWindow, false);
+ .inflate(R.layout.brightness_mirror_container, mStatusBarWindow, false);
mToggleSliderController = setMirrorLayout();
mStatusBarWindow.addView(mBrightnessMirror, index);
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/RemoteInputView.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/RemoteInputView.java
index f2a0e37..a3fd92f 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/RemoteInputView.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/RemoteInputView.java
@@ -25,21 +25,18 @@
import android.app.Notification;
import android.app.PendingIntent;
import android.app.RemoteInput;
-import android.content.ClipData;
-import android.content.ClipDescription;
import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.content.pm.ShortcutManager;
import android.content.res.ColorStateList;
import android.content.res.TypedArray;
+import android.graphics.BlendMode;
import android.graphics.Color;
import android.graphics.PorterDuff;
import android.graphics.Rect;
import android.graphics.drawable.ColorDrawable;
-import android.graphics.drawable.Drawable;
import android.graphics.drawable.GradientDrawable;
-import android.graphics.drawable.LayerDrawable;
import android.net.Uri;
import android.os.Bundle;
import android.os.ServiceManager;
@@ -47,7 +44,9 @@
import android.os.UserHandle;
import android.text.Editable;
import android.text.SpannedString;
+import android.text.TextUtils;
import android.text.TextWatcher;
+import android.util.ArraySet;
import android.util.AttributeSet;
import android.util.Log;
import android.util.Pair;
@@ -68,6 +67,7 @@
import android.view.inputmethod.InputMethodManager;
import android.widget.EditText;
import android.widget.ImageButton;
+import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.ProgressBar;
import android.widget.TextView;
@@ -81,7 +81,6 @@
import com.android.internal.util.ContrastColorUtil;
import com.android.systemui.Dependency;
import com.android.systemui.R;
-import com.android.systemui.animation.Interpolators;
import com.android.systemui.statusbar.NotificationRemoteInputManager;
import com.android.systemui.statusbar.RemoteInputController;
import com.android.systemui.statusbar.notification.collection.NotificationEntry;
@@ -89,6 +88,7 @@
import com.android.systemui.statusbar.notification.row.wrapper.NotificationViewWrapper;
import com.android.systemui.statusbar.notification.stack.StackStateAnimator;
import com.android.systemui.statusbar.phone.LightBarController;
+import com.android.wm.shell.animation.Interpolators;
import java.util.ArrayList;
import java.util.Collection;
@@ -114,6 +114,7 @@
private final List<OnFocusChangeListener> mEditTextFocusChangeListeners = new ArrayList<>();
private RemoteEditText mEditText;
private ImageButton mSendButton;
+ private GradientDrawable mContentBackground;
private ProgressBar mProgressBar;
private PendingIntent mPendingIntent;
private RemoteInput[] mRemoteInputs;
@@ -130,6 +131,7 @@
private int mRevealCx;
private int mRevealCy;
private int mRevealR;
+ private ContentInfo mAttachment;
private boolean mColorized;
private int mTint;
@@ -138,6 +140,9 @@
private NotificationViewWrapper mWrapper;
private Consumer<Boolean> mOnVisibilityChangedListener;
private NotificationRemoteInputManager.BouncerChecker mBouncerChecker;
+ private LinearLayout mContentView;
+ private ImageView mDelete;
+ private ImageView mDeleteBg;
public RemoteInputView(Context context, AttributeSet attrs) {
super(context, attrs);
@@ -149,7 +154,7 @@
ServiceManager.getService(Context.STATUS_BAR_SERVICE));
TypedArray ta = getContext().getTheme().obtainStyledAttributes(new int[]{
com.android.internal.R.attr.colorAccent,
- com.android.internal.R.attr.colorBackgroundFloating,
+ com.android.internal.R.attr.colorSurface,
});
mTint = ta.getColor(0, 0);
ta.recycle();
@@ -165,14 +170,20 @@
mColorized = colorized;
mTint = backgroundColor;
final int editBgColor;
+ final int alternateBgColor;
+ final int alternateTextColor;
final int accentColor;
final int textColor;
final int hintTextColor;
+ final int stroke = mContext.getResources().getDimensionPixelSize(
+ R.dimen.remote_input_view_text_stroke);
if (colorized) {
final boolean dark = !ContrastColorUtil.isColorLight(backgroundColor);
final int foregroundColor = dark ? Color.WHITE : Color.BLACK;
editBgColor = backgroundColor;
accentColor = foregroundColor;
+ alternateBgColor = foregroundColor;
+ alternateTextColor = backgroundColor;
textColor = foregroundColor;
hintTextColor = ColorUtils.setAlphaComponent(foregroundColor, 0x99);
} else {
@@ -180,10 +191,14 @@
hintTextColor = mContext.getColor(R.color.remote_input_hint);
try (TypedArray ta = getContext().getTheme().obtainStyledAttributes(new int[]{
com.android.internal.R.attr.colorAccent,
- com.android.internal.R.attr.colorBackgroundFloating,
+ com.android.internal.R.attr.colorSurface,
+ com.android.internal.R.attr.colorSurfaceVariant,
+ com.android.internal.R.attr.textColorPrimary
})) {
accentColor = ta.getColor(0, textColor);
editBgColor = ta.getColor(1, backgroundColor);
+ alternateBgColor = ta.getColor(2, textColor);
+ alternateTextColor = ta.getColor(3, backgroundColor);
}
}
mEditText.setAllColors(backgroundColor, editBgColor,
@@ -195,11 +210,15 @@
accentColor,
accentColor & 0x4DFFFFFF // %30 opacity
});
+ mContentBackground.setColor(editBgColor);
+ mContentBackground.setStroke(stroke, accentTint);
+ mDelete.setImageTintList(ColorStateList.valueOf(alternateTextColor));
+ mDeleteBg.setImageTintList(ColorStateList.valueOf(alternateBgColor));
mSendButton.setImageTintList(accentTint);
mProgressBar.setProgressTintList(accentTint);
mProgressBar.setIndeterminateTintList(accentTint);
mProgressBar.setSecondaryProgressTintList(accentTint);
- setBackgroundColor(backgroundColor);
+ setBackgroundColor(editBgColor);
}
@Override
@@ -209,8 +228,16 @@
mProgressBar = findViewById(R.id.remote_input_progress);
mSendButton = findViewById(R.id.remote_input_send);
mSendButton.setOnClickListener(this);
-
- mEditText = (RemoteEditText) getChildAt(0);
+ mContentBackground = (GradientDrawable)
+ mContext.getDrawable(R.drawable.remote_input_view_text_bg).mutate();
+ mDelete = findViewById(R.id.remote_input_delete);
+ mDeleteBg = findViewById(R.id.remote_input_delete_bg);
+ mDeleteBg.setImageTintBlendMode(BlendMode.SRC_IN);
+ mDelete.setImageTintBlendMode(BlendMode.SRC_IN);
+ mDelete.setOnClickListener(v -> setAttachment(null));
+ mContentView = findViewById(R.id.remote_input_content);
+ mContentView.setBackground(mContentBackground);
+ mEditText = findViewById(R.id.remote_input_text);
mEditText.setInnerFocusable(false);
mEditText.setWindowInsetsAnimationCallback(
new WindowInsetsAnimation.Callback(DISPATCH_MODE_STOP) {
@@ -220,7 +247,6 @@
@NonNull List<WindowInsetsAnimation> runningAnimations) {
return insets;
}
-
@Override
public void onEnd(@NonNull WindowInsetsAnimation animation) {
super.onEnd(animation);
@@ -235,7 +261,43 @@
});
}
- protected Intent prepareRemoteInputFromText() {
+ private void setAttachment(ContentInfo item) {
+ if (mAttachment != null) {
+ // We need to release permissions when sending the attachment to the target
+ // app or if it is deleted by the user. When sending to the target app, we
+ // can safely release permissions as soon as the call to
+ // `mController.grantInlineReplyUriPermission` is made (ie, after the grant
+ // to the target app has been created).
+ mAttachment.releasePermissions();
+ }
+ mAttachment = item;
+ View attachment = findViewById(R.id.remote_input_content_container);
+ ImageView iconView = findViewById(R.id.remote_input_attachment_image);
+ iconView.setImageDrawable(null);
+ if (item == null) {
+ attachment.setVisibility(GONE);
+ return;
+ }
+ iconView.setImageURI(item.getClip().getItemAt(0).getUri());
+ if (iconView.getDrawable() == null) {
+ attachment.setVisibility(GONE);
+ } else {
+ attachment.setVisibility(VISIBLE);
+ }
+ }
+
+ /**
+ * Reply intent
+ * @return returns intent with granted URI permissions that should be used immediately
+ */
+ private Intent prepareRemoteInput() {
+ if (mAttachment == null) return prepareRemoteInputFromText();
+ return prepareRemoteInputFromData(
+ mAttachment.getClip().getDescription().getMimeType(0),
+ mAttachment.getClip().getItemAt(0).getUri());
+ }
+
+ private Intent prepareRemoteInputFromText() {
Bundle results = new Bundle();
results.putString(mRemoteInput.getResultKey(), mEditText.getText().toString());
Intent fillInIntent = new Intent().addFlags(Intent.FLAG_RECEIVER_FOREGROUND);
@@ -255,17 +317,40 @@
return fillInIntent;
}
- protected Intent prepareRemoteInputFromData(String contentType, Uri data) {
+ private Intent prepareRemoteInputFromData(String contentType, Uri data) {
HashMap<String, Uri> results = new HashMap<>();
results.put(contentType, data);
+ // grant for the target app.
mController.grantInlineReplyUriPermission(mEntry.getSbn(), data);
Intent fillInIntent = new Intent().addFlags(Intent.FLAG_RECEIVER_FOREGROUND);
RemoteInput.addDataResultToIntent(mRemoteInput, fillInIntent, results);
- mEntry.remoteInputText = mContext.getString(R.string.remote_input_image_insertion_text);
+ Bundle bundle = new Bundle();
+ bundle.putString(mRemoteInput.getResultKey(), mEditText.getText().toString());
+ RemoteInput.addResultsToIntent(mRemoteInputs, fillInIntent,
+ bundle);
+
+ CharSequence attachmentText = mAttachment.getClip().getDescription().getLabel();
+
+ CharSequence attachmentLabel = TextUtils.isEmpty(attachmentText)
+ ? mContext.getString(R.string.remote_input_image_insertion_text)
+ : attachmentText;
+ // add content description to reply text for context
+ CharSequence fullText = TextUtils.isEmpty(mEditText.getText())
+ ? attachmentLabel
+ : "\"" + attachmentLabel + "\" " + mEditText.getText();
+
+ mEntry.remoteInputText = fullText;
mEntry.remoteInputMimeType = contentType;
mEntry.remoteInputUri = data;
+ // mirror prepareRemoteInputFromText for text input
+ if (mEntry.editedSuggestionInfo == null) {
+ RemoteInput.setResultsSource(fillInIntent, RemoteInput.SOURCE_FREE_FORM_INPUT);
+ } else if (mAttachment == null) {
+ RemoteInput.setResultsSource(fillInIntent, RemoteInput.SOURCE_CHOICE);
+ }
+
return fillInIntent;
}
@@ -303,6 +388,7 @@
MetricsLogger.action(mContext, MetricsProto.MetricsEvent.ACTION_REMOTE_INPUT_FAIL,
mEntry.getSbn().getPackageName());
}
+ setAttachment(null);
}
public CharSequence getText() {
@@ -327,7 +413,7 @@
@Override
public void onClick(View v) {
if (v == mSendButton) {
- sendRemoteInput(prepareRemoteInputFromText());
+ sendRemoteInput(prepareRemoteInput());
}
}
@@ -682,8 +768,8 @@
&& event.getAction() == KeyEvent.ACTION_DOWN;
if (isSoftImeEvent || isKeyboardEnterKey) {
- if (mEditText.length() > 0) {
- sendRemoteInput(prepareRemoteInputFromText());
+ if (mEditText.length() > 0 || mAttachment != null) {
+ sendRemoteInput(prepareRemoteInput());
}
// Consume action to prevent IME from closing.
return true;
@@ -716,21 +802,18 @@
private final OnReceiveContentListener mOnReceiveContentListener = this::onReceiveContent;
private RemoteInputView mRemoteInputView;
- private GradientDrawable mTextBackground;
- private ColorDrawable mBackgroundColor;
- private LayerDrawable mBackground;
+ private ColorDrawable mBackground;
boolean mShowImeOnInputConnection;
private LightBarController mLightBarController;
private InputMethodManager mInputMethodManager;
+ private ArraySet<String> mSupportedMimes = new ArraySet<>();
UserHandle mUser;
public RemoteEditText(Context context, AttributeSet attrs) {
super(context, attrs);
mLightBarController = Dependency.get(LightBarController.class);
- mTextBackground = (GradientDrawable)
- context.getDrawable(R.drawable.remote_input_view_text_bg).mutate();
- mBackgroundColor = new ColorDrawable();
- mBackground = new LayerDrawable(new Drawable[] {mBackgroundColor, mTextBackground});
+
+ mBackground = new ColorDrawable();
}
void setSupportedMimeTypes(@Nullable Collection<String> mimeTypes) {
@@ -741,6 +824,8 @@
listener = mOnReceiveContentListener;
}
setOnReceiveContentListener(types, listener);
+ mSupportedMimes.clear();
+ mSupportedMimes.addAll(mimeTypes);
}
private void hideIme() {
@@ -899,36 +984,15 @@
ContentInfo uriItems = split.first;
ContentInfo remainingItems = split.second;
if (uriItems != null) {
- ClipData clip = uriItems.getClip();
- ClipDescription description = clip.getDescription();
- if (clip.getItemCount() > 1
- || description.getMimeTypeCount() < 1
- || remainingItems != null) {
- // Direct-reply in notifications currently only supports only one uri item
- // at a time and requires the MIME type to be set.
- Log.w(TAG, "Invalid payload: " + payload);
- return payload;
- }
- Uri contentUri = clip.getItemAt(0).getUri();
- String mimeType = description.getMimeType(0);
- Intent dataIntent =
- mRemoteInputView.prepareRemoteInputFromData(mimeType, contentUri);
- // We can release the uri permissions granted to us as soon as we've created the
- // grant for the target app in the call above.
- payload.releasePermissions();
- mRemoteInputView.sendRemoteInput(dataIntent);
+ mRemoteInputView.setAttachment(uriItems);
}
return remainingItems;
}
protected void setAllColors(int backgroundColor, int editBackgroundColor,
int accentColor, int textColor, int hintTextColor) {
- setBackgroundColor(backgroundColor);
- mBackgroundColor.setColor(backgroundColor);
- mTextBackground.setColor(editBackgroundColor);
- int stroke = getContext().getResources()
- .getDimensionPixelSize(R.dimen.remote_input_view_text_stroke);
- mTextBackground.setStroke(stroke, accentColor);
+ setBackgroundColor(editBackgroundColor);
+ mBackground.setColor(editBackgroundColor);
setTextColor(textColor);
setHintTextColor(hintTextColor);
getTextCursorDrawable().setColorFilter(accentColor, PorterDuff.Mode.SRC_IN);
diff --git a/packages/SystemUI/src/com/android/systemui/util/Utils.java b/packages/SystemUI/src/com/android/systemui/util/Utils.java
index fd3641c..f3a95f7 100644
--- a/packages/SystemUI/src/com/android/systemui/util/Utils.java
+++ b/packages/SystemUI/src/com/android/systemui/util/Utils.java
@@ -21,8 +21,10 @@
import android.content.Intent;
import android.content.pm.PackageManager;
import android.content.res.Resources;
+import android.content.res.TypedArray;
import android.provider.Settings;
import android.text.TextUtils;
+import android.view.ContextThemeWrapper;
import android.view.View;
import com.android.systemui.R;
@@ -177,4 +179,23 @@
&& resources.getBoolean(R.bool.config_use_split_notification_shade);
}
+ /**
+ * Returns the color provided at the specified {@param attrIndex} in {@param a} if it exists,
+ * otherwise, returns the color from the private attribute {@param privAttrId}.
+ */
+ public static int getPrivateAttrColorIfUnset(ContextThemeWrapper ctw, TypedArray a,
+ int attrIndex, int defColor, int privAttrId) {
+ // If the index is specified, use that value
+ if (a.hasValue(attrIndex)) {
+ return a.getColor(attrIndex, defColor);
+ }
+
+ // Otherwise fallback to the value of the private attribute
+ int[] customAttrs = { privAttrId };
+ a = ctw.obtainStyledAttributes(customAttrs);
+ int color = a.getColor(0, defColor);
+ a.recycle();
+ return color;
+ }
+
}
diff --git a/packages/SystemUI/src/com/android/systemui/wmshell/BubblesManager.java b/packages/SystemUI/src/com/android/systemui/wmshell/BubblesManager.java
index db77366..b823534 100644
--- a/packages/SystemUI/src/com/android/systemui/wmshell/BubblesManager.java
+++ b/packages/SystemUI/src/com/android/systemui/wmshell/BubblesManager.java
@@ -18,6 +18,7 @@
import static android.app.NotificationManager.BUBBLE_PREFERENCE_NONE;
import static android.app.NotificationManager.BUBBLE_PREFERENCE_SELECTED;
+import static android.provider.Settings.Secure.NOTIFICATION_BUBBLES;
import static android.service.notification.NotificationListenerService.REASON_APP_CANCEL;
import static android.service.notification.NotificationListenerService.REASON_APP_CANCEL_ALL;
import static android.service.notification.NotificationListenerService.REASON_CANCEL;
@@ -37,14 +38,18 @@
import android.app.NotificationChannel;
import android.app.NotificationManager;
import android.content.Context;
+import android.content.pm.UserInfo;
import android.content.res.Configuration;
import android.os.RemoteException;
import android.os.ServiceManager;
+import android.os.UserHandle;
+import android.provider.Settings;
import android.service.notification.NotificationListenerService.RankingMap;
import android.service.notification.ZenModeConfig;
import android.util.ArraySet;
import android.util.Log;
import android.util.Pair;
+import android.util.SparseArray;
import android.view.View;
import androidx.annotation.NonNull;
@@ -244,6 +249,12 @@
public void onUserChanged(int userId) {
mBubbles.onUserChanged(userId);
}
+
+ @Override
+ public void onCurrentProfilesChanged(SparseArray<UserInfo> currentProfiles) {
+ mBubbles.onCurrentProfilesChanged(currentProfiles);
+ }
+
});
mSysuiProxy = new Bubbles.SysuiProxy() {
@@ -727,6 +738,17 @@
mBubbles.dump(fd, pw, args);
}
+ /** Checks whether bubbles are enabled for this user, handles negative userIds. */
+ public static boolean areBubblesEnabled(@NonNull Context context, @NonNull UserHandle user) {
+ if (user.getIdentifier() < 0) {
+ return Settings.Secure.getInt(context.getContentResolver(),
+ NOTIFICATION_BUBBLES, 0) == 1;
+ } else {
+ return Settings.Secure.getIntForUser(context.getContentResolver(),
+ NOTIFICATION_BUBBLES, 0, user.getIdentifier()) == 1;
+ }
+ }
+
static BubbleEntry notifToBubbleEntry(NotificationEntry e) {
return new BubbleEntry(e.getSbn(), e.getRanking(), e.isClearable(),
e.shouldSuppressNotificationDot(), e.shouldSuppressNotificationList(),
diff --git a/packages/SystemUI/tests/src/com/android/keyguard/KeyguardClockSwitchControllerTest.java b/packages/SystemUI/tests/src/com/android/keyguard/KeyguardClockSwitchControllerTest.java
index 4d4acd9..263a75c 100644
--- a/packages/SystemUI/tests/src/com/android/keyguard/KeyguardClockSwitchControllerTest.java
+++ b/packages/SystemUI/tests/src/com/android/keyguard/KeyguardClockSwitchControllerTest.java
@@ -262,5 +262,7 @@
public void registerDataProvider(BcSmartspaceDataPlugin plugin) { }
public void setPrimaryTextColor(int color) { }
+
+ public void setDozeAmount(float amount) { }
}
}
diff --git a/packages/SystemUI/tests/src/com/android/systemui/ImageWallpaperTest.java b/packages/SystemUI/tests/src/com/android/systemui/ImageWallpaperTest.java
index daa896c..e1ddaad 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/ImageWallpaperTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/ImageWallpaperTest.java
@@ -41,7 +41,6 @@
import android.view.SurfaceHolder;
import com.android.systemui.glwallpaper.ImageWallpaperRenderer;
-import com.android.systemui.plugins.statusbar.StatusBarStateController;
import org.junit.Before;
import org.junit.Ignore;
@@ -100,7 +99,7 @@
}
private ImageWallpaper createImageWallpaper() {
- return new ImageWallpaper(mock(StatusBarStateController.class)) {
+ return new ImageWallpaper() {
@Override
public Engine onCreateEngine() {
return new GLEngine(mHandler) {
diff --git a/packages/SystemUI/tests/src/com/android/systemui/people/NotificationHelperTest.java b/packages/SystemUI/tests/src/com/android/systemui/people/NotificationHelperTest.java
new file mode 100644
index 0000000..7cddc3f
--- /dev/null
+++ b/packages/SystemUI/tests/src/com/android/systemui/people/NotificationHelperTest.java
@@ -0,0 +1,205 @@
+/*
+ * Copyright (C) 2021 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 com.android.systemui.people;
+
+import static android.app.Notification.CATEGORY_MISSED_CALL;
+
+import static com.android.systemui.people.NotificationHelper.getHighestPriorityNotification;
+import static com.android.systemui.people.NotificationHelper.getMessagingStyleMessages;
+import static com.android.systemui.people.NotificationHelper.isMissedCall;
+import static com.android.systemui.people.NotificationHelper.isMissedCallOrHasContent;
+import static com.android.systemui.people.PeopleSpaceUtils.PACKAGE_NAME;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+
+import android.app.Notification;
+import android.app.Person;
+import android.content.pm.ShortcutInfo;
+import android.net.Uri;
+import android.os.UserHandle;
+import android.service.notification.StatusBarNotification;
+import android.testing.AndroidTestingRunner;
+
+import androidx.test.filters.SmallTest;
+
+import com.android.internal.util.ArrayUtils;
+import com.android.systemui.SysuiTestCase;
+import com.android.systemui.statusbar.SbnBuilder;
+import com.android.systemui.statusbar.notification.collection.NotificationEntry;
+import com.android.systemui.statusbar.notification.collection.NotificationEntryBuilder;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import java.util.List;
+import java.util.Set;
+
+@RunWith(AndroidTestingRunner.class)
+@SmallTest
+public class NotificationHelperTest extends SysuiTestCase {
+ private static final String SHORTCUT_ID_1 = "101";
+ private static final String SHORTCUT_ID_2 = "102";
+
+ private static final String NOTIFICATION_TEXT_1 = "notification_text_1";
+ private static final String NOTIFICATION_TEXT_2 = "notification_text_2";
+ private static final String NOTIFICATION_TEXT_3 = "notification_text_3";
+ private static final Uri URI = Uri.parse("fake_uri");
+ private static final Person PERSON = new Person.Builder()
+ .setName("name")
+ .setKey("abc")
+ .setUri(URI.toString())
+ .setBot(false)
+ .build();
+
+ private final Notification mNotification1 = new Notification.Builder(mContext, "test")
+ .setContentTitle("TEST_TITLE")
+ .setContentText("TEST_TEXT")
+ .setShortcutId(SHORTCUT_ID_1)
+ .setStyle(new Notification.MessagingStyle(PERSON)
+ .addMessage(new Notification.MessagingStyle.Message(
+ NOTIFICATION_TEXT_1, 0, PERSON))
+ .addMessage(new Notification.MessagingStyle.Message(
+ NOTIFICATION_TEXT_2, 20, PERSON))
+ .addMessage(new Notification.MessagingStyle.Message(
+ NOTIFICATION_TEXT_3, 10, PERSON))
+ )
+ .build();
+
+ private final Notification mNotification2 = new Notification.Builder(mContext, "test")
+ .setContentTitle("TEST_TITLE")
+ .setContentText("TEST_TEXT")
+ .setShortcutId(SHORTCUT_ID_1)
+ .setStyle(new Notification.MessagingStyle(PERSON)
+ .addMessage(new Notification.MessagingStyle.Message(
+ NOTIFICATION_TEXT_1, 0, PERSON))
+ )
+ .build();
+
+ private final Notification mNoContentNotification = new Notification.Builder(mContext, "test")
+ .setContentTitle("TEST_TITLE")
+ .setContentText("TEST_TEXT")
+ .setShortcutId(SHORTCUT_ID_1)
+ .setStyle(new Notification.MessagingStyle(PERSON))
+ .build();
+
+ private final Notification mMissedCallNotification = new Notification.Builder(mContext, "test")
+ .setContentTitle("TEST_TITLE")
+ .setContentText("TEST_TEXT")
+ .setShortcutId(SHORTCUT_ID_2)
+ .setCategory(CATEGORY_MISSED_CALL)
+ .setStyle(new Notification.MessagingStyle(PERSON))
+ .build();
+
+ private final NotificationEntry mNotificationEntry1 = new NotificationEntryBuilder()
+ .setNotification(mNotification1)
+ .setShortcutInfo(new ShortcutInfo.Builder(mContext, SHORTCUT_ID_1).build())
+ .setUser(UserHandle.of(0))
+ .setPkg(PACKAGE_NAME)
+ .build();
+
+ private final NotificationEntry mNotificationEntry2 = new NotificationEntryBuilder()
+ .setNotification(mNotification2)
+ .setShortcutInfo(new ShortcutInfo.Builder(mContext, SHORTCUT_ID_1).build())
+ .setUser(UserHandle.of(0))
+ .setPkg(PACKAGE_NAME)
+ .build();
+
+
+ private final NotificationEntry mMissedCallNotificationEntry = new NotificationEntryBuilder()
+ .setNotification(mMissedCallNotification)
+ .setShortcutInfo(new ShortcutInfo.Builder(mContext, SHORTCUT_ID_1).build())
+ .setUser(UserHandle.of(0))
+ .setPkg(PACKAGE_NAME)
+ .build();
+
+ private final NotificationEntry mNoContentNotificationEntry = new NotificationEntryBuilder()
+ .setNotification(mNoContentNotification)
+ .setShortcutInfo(new ShortcutInfo.Builder(mContext, SHORTCUT_ID_1).build())
+ .setUser(UserHandle.of(0))
+ .setPkg(PACKAGE_NAME)
+ .build();
+
+ @Test
+ public void testGetMessagingStyleMessagesNoMessage() {
+ Notification notification = new Notification.Builder(mContext, "test")
+ .setContentTitle("TEST_TITLE")
+ .setContentText("TEST_TEXT")
+ .setShortcutId(SHORTCUT_ID_1)
+ .build();
+ StatusBarNotification sbn = new SbnBuilder()
+ .setNotification(notification)
+ .build();
+
+ List<Notification.MessagingStyle.Message> messages =
+ getMessagingStyleMessages(sbn.getNotification());
+
+ assertThat(ArrayUtils.isEmpty(messages)).isTrue();
+ }
+
+ @Test
+ public void testGetMessagingStyleMessages() {
+ StatusBarNotification sbn = new SbnBuilder()
+ .setNotification(mNotification1)
+ .build();
+
+ List<Notification.MessagingStyle.Message> messages =
+ getMessagingStyleMessages(sbn.getNotification());
+
+ assertThat(messages.size()).isEqualTo(3);
+ assertThat(messages.get(0).getText().toString()).isEqualTo(NOTIFICATION_TEXT_2);
+ }
+
+ @Test
+ public void testIsMissedCall_notMissedCall() {
+ assertFalse(isMissedCall(mNotificationEntry1));
+ }
+
+ @Test
+ public void testIsMissedCall_missedCall() {
+ assertTrue(isMissedCall(mMissedCallNotificationEntry));
+ }
+
+ @Test
+ public void testisMissedCallOrHasContent_NoContent() {
+ assertFalse(isMissedCallOrHasContent(mNoContentNotificationEntry));
+ }
+
+ @Test
+ public void testisMissedCallOrHasContent_Hasontent() {
+ assertTrue(isMissedCallOrHasContent(mNotificationEntry1));
+ }
+
+ @Test
+ public void testGetHighestPriorityNotification_missedCallHigherPriority() {
+ Set<NotificationEntry> notifications = Set.of(
+ mNotificationEntry1, mMissedCallNotificationEntry);
+
+ assertThat(getHighestPriorityNotification(notifications))
+ .isEqualTo(mMissedCallNotificationEntry);
+ }
+
+ @Test
+ public void testGetHighestPriorityNotification_moreRecentLastMessage() {
+ Set<NotificationEntry> notifications = Set.of(
+ mNotificationEntry1, mNotificationEntry2);
+
+ assertThat(getHighestPriorityNotification(notifications))
+ .isEqualTo(mNotificationEntry1);
+ }
+}
diff --git a/packages/SystemUI/tests/src/com/android/systemui/people/PeopleProviderTest.java b/packages/SystemUI/tests/src/com/android/systemui/people/PeopleProviderTest.java
index 24a63e7..50ab1c7 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/people/PeopleProviderTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/people/PeopleProviderTest.java
@@ -18,12 +18,11 @@
import static com.google.common.truth.Truth.assertThat;
+import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.when;
import android.app.people.ConversationChannel;
-import android.app.people.IPeopleManager;
-import android.content.pm.LauncherApps;
import android.content.pm.PackageManager;
import android.content.pm.ShortcutInfo;
import android.net.Uri;
@@ -36,8 +35,8 @@
import androidx.test.filters.SmallTest;
import com.android.systemui.SysuiTestCase;
+import com.android.systemui.people.widget.PeopleSpaceWidgetManager;
import com.android.systemui.shared.system.PeopleProviderUtils;
-import com.android.systemui.statusbar.notification.NotificationEntryManager;
import junit.framework.Assert;
@@ -69,13 +68,11 @@
private Bundle mExtras = new Bundle();
@Mock
- private LauncherApps mLauncherApps;
- @Mock
private PackageManager mPackageManager;
@Mock
- private IPeopleManager mPeopleManager;
+ private PeopleSpaceWidgetManager mPeopleSpaceWidgetManager;
@Mock
- private NotificationEntryManager mNotificationEntryManager;
+ private RemoteViews mRemoteViews;
@Before
public void setUp() throws Exception {
@@ -85,9 +82,7 @@
PeopleProviderTestable provider = new PeopleProviderTestable();
provider.initializeForTesting(
mContext, PeopleProviderUtils.PEOPLE_PROVIDER_AUTHORITY);
- provider.setLauncherApps(mLauncherApps);
- provider.setPeopleManager(mPeopleManager);
- provider.setNotificationEntryManager(mNotificationEntryManager);
+ provider.setPeopleSpaceWidgetManager(mPeopleSpaceWidgetManager);
mContext.getContentResolver().addProvider(
PeopleProviderUtils.PEOPLE_PROVIDER_AUTHORITY, provider);
@@ -95,9 +90,9 @@
PeopleProviderUtils.GET_PEOPLE_TILE_PREVIEW_PERMISSION,
PackageManager.PERMISSION_GRANTED);
- when(mPeopleManager.getConversation(
- eq(PACKAGE_NAME_A), eq(USER_HANDLE_A.getIdentifier()), eq(SHORTCUT_ID_A)))
- .thenReturn(mConversationChannel);
+ when(mPeopleSpaceWidgetManager.getPreview(
+ eq(SHORTCUT_ID_A), eq(USER_HANDLE_A), eq(PACKAGE_NAME_A), any()))
+ .thenReturn(mRemoteViews);
mExtras.putString(PeopleProviderUtils.EXTRAS_KEY_SHORTCUT_ID, SHORTCUT_ID_A);
mExtras.putString(PeopleProviderUtils.EXTRAS_KEY_PACKAGE_NAME, PACKAGE_NAME_A);
@@ -146,8 +141,8 @@
@Test
public void testPermissionGrantedNoConversationForShortcutReturnsNull() throws RemoteException {
- when(mPeopleManager.getConversation(
- eq(PACKAGE_NAME_A), eq(USER_HANDLE_A.getIdentifier()), eq(SHORTCUT_ID_A)))
+ when(mPeopleSpaceWidgetManager.getPreview(
+ eq(SHORTCUT_ID_A), eq(USER_HANDLE_A), eq(PACKAGE_NAME_A), any()))
.thenReturn(null);
try {
Bundle result = mContext.getContentResolver().call(
diff --git a/packages/SystemUI/tests/src/com/android/systemui/people/PeopleProviderTestable.java b/packages/SystemUI/tests/src/com/android/systemui/people/PeopleProviderTestable.java
index 6834fa5..3e6d674 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/people/PeopleProviderTestable.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/people/PeopleProviderTestable.java
@@ -16,12 +16,10 @@
package com.android.systemui.people;
-import android.app.people.IPeopleManager;
import android.content.Context;
-import android.content.pm.LauncherApps;
import android.content.pm.ProviderInfo;
-import com.android.systemui.statusbar.notification.NotificationEntryManager;
+import com.android.systemui.people.widget.PeopleSpaceWidgetManager;
public class PeopleProviderTestable extends PeopleProvider {
@@ -32,15 +30,7 @@
attachInfoForTesting(context, info);
}
- void setLauncherApps(LauncherApps launcherApps) {
- mLauncherApps = launcherApps;
- }
-
- void setPeopleManager(IPeopleManager peopleManager) {
- mPeopleManager = peopleManager;
- }
-
- void setNotificationEntryManager(NotificationEntryManager notificationEntryManager) {
- mNotificationEntryManager = notificationEntryManager;
+ void setPeopleSpaceWidgetManager(PeopleSpaceWidgetManager peopleSpaceWidgetManager) {
+ mPeopleSpaceWidgetManager = peopleSpaceWidgetManager;
}
}
diff --git a/packages/SystemUI/tests/src/com/android/systemui/people/PeopleSpaceUtilsTest.java b/packages/SystemUI/tests/src/com/android/systemui/people/PeopleSpaceUtilsTest.java
index 81ca4c8..c929073 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/people/PeopleSpaceUtilsTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/people/PeopleSpaceUtilsTest.java
@@ -51,19 +51,15 @@
import android.os.Bundle;
import android.os.UserHandle;
import android.provider.ContactsContract;
-import android.service.notification.StatusBarNotification;
import android.testing.AndroidTestingRunner;
import android.util.DisplayMetrics;
import androidx.test.filters.SmallTest;
import com.android.internal.appwidget.IAppWidgetService;
-import com.android.internal.util.ArrayUtils;
import com.android.systemui.R;
import com.android.systemui.SysuiTestCase;
-import com.android.systemui.people.widget.PeopleTileKey;
import com.android.systemui.statusbar.NotificationListener;
-import com.android.systemui.statusbar.SbnBuilder;
import com.android.systemui.statusbar.notification.NotificationEntryManager;
import com.android.systemui.statusbar.notification.collection.NotificationEntry;
import com.android.systemui.statusbar.notification.collection.NotificationEntryBuilder;
@@ -228,41 +224,7 @@
}
@Test
- public void testGetMessagingStyleMessagesNoMessage() {
- Notification notification = new Notification.Builder(mContext, "test")
- .setContentTitle("TEST_TITLE")
- .setContentText("TEST_TEXT")
- .setShortcutId(SHORTCUT_ID_1)
- .build();
- StatusBarNotification sbn = new SbnBuilder()
- .setNotification(notification)
- .build();
-
- List<Notification.MessagingStyle.Message> messages =
- PeopleSpaceUtils.getMessagingStyleMessages(sbn.getNotification());
-
- assertThat(ArrayUtils.isEmpty(messages)).isTrue();
- }
-
- @Test
- public void testGetMessagingStyleMessages() {
- StatusBarNotification sbn = new SbnBuilder()
- .setNotification(mNotification1)
- .build();
-
- List<Notification.MessagingStyle.Message> messages =
- PeopleSpaceUtils.getMessagingStyleMessages(sbn.getNotification());
-
- assertThat(messages.size()).isEqualTo(3);
- assertThat(messages.get(0).getText().toString()).isEqualTo(NOTIFICATION_TEXT_2);
- }
-
- @Test
public void testAugmentTileFromNotification() {
- StatusBarNotification sbn = new SbnBuilder()
- .setNotification(mNotification1)
- .build();
-
PeopleSpaceTile tile =
new PeopleSpaceTile
.Builder(SHORTCUT_ID_1, "userName", ICON, new Intent())
@@ -270,17 +232,13 @@
.setUserHandle(new UserHandle(0))
.build();
PeopleSpaceTile actual = PeopleSpaceUtils
- .augmentTileFromNotification(mContext, tile, sbn);
+ .augmentTileFromNotification(mContext, tile, mNotificationEntry1, 0);
assertThat(actual.getNotificationContent().toString()).isEqualTo(NOTIFICATION_TEXT_2);
}
@Test
public void testAugmentTileFromNotificationNoContent() {
- StatusBarNotification sbn = new SbnBuilder()
- .setNotification(mNotification3)
- .build();
-
PeopleSpaceTile tile =
new PeopleSpaceTile
.Builder(SHORTCUT_ID_3, "userName", ICON, new Intent())
@@ -288,107 +246,12 @@
.setUserHandle(new UserHandle(0))
.build();
PeopleSpaceTile actual = PeopleSpaceUtils
- .augmentTileFromNotification(mContext, tile, sbn);
+ .augmentTileFromNotification(mContext, tile, mNotificationEntry3, 0);
assertThat(actual.getNotificationContent()).isEqualTo(null);
}
@Test
- public void testAugmentTileFromVisibleNotifications() {
- PeopleSpaceTile tile =
- new PeopleSpaceTile
- .Builder(SHORTCUT_ID_1, "userName", ICON, new Intent())
- .setPackageName(PACKAGE_NAME)
- .setUserHandle(new UserHandle(0))
- .build();
- PeopleSpaceTile actual = PeopleSpaceUtils
- .augmentTileFromVisibleNotifications(mContext, tile,
- Map.of(new PeopleTileKey(mNotificationEntry1), mNotificationEntry1));
-
- assertThat(actual.getNotificationContent().toString()).isEqualTo(NOTIFICATION_TEXT_2);
- }
-
- @Test
- public void testAugmentTileFromVisibleNotificationsDifferentShortcutId() {
- PeopleSpaceTile tile =
- new PeopleSpaceTile
- .Builder(SHORTCUT_ID_4, "userName", ICON, new Intent())
- .setPackageName(PACKAGE_NAME)
- .setUserHandle(new UserHandle(0))
- .build();
- PeopleSpaceTile actual = PeopleSpaceUtils
- .augmentTileFromVisibleNotifications(mContext, tile,
- Map.of(new PeopleTileKey(mNotificationEntry1), mNotificationEntry1));
-
- assertThat(actual.getNotificationContent()).isEqualTo(null);
- }
-
- @Test
- public void testAugmentTilesFromVisibleNotificationsSingleTile() {
- PeopleSpaceTile tile =
- new PeopleSpaceTile
- .Builder(SHORTCUT_ID_1, "userName", ICON, new Intent())
- .setPackageName(PACKAGE_NAME)
- .setUserHandle(new UserHandle(0))
- .build();
- List<PeopleSpaceTile> actualList = PeopleSpaceUtils
- .augmentTilesFromVisibleNotifications(
- mContext, List.of(tile), mNotificationEntryManager);
-
- assertThat(actualList.size()).isEqualTo(1);
- assertThat(actualList.get(0).getNotificationContent().toString())
- .isEqualTo(NOTIFICATION_TEXT_2);
-
- verify(mNotificationEntryManager, times(1)).getVisibleNotifications();
- }
-
- @Test
- public void testAugmentTilesFromVisibleNotificationsMultipleTiles() {
- PeopleSpaceTile tile1 =
- new PeopleSpaceTile
- .Builder(SHORTCUT_ID_1, "userName", ICON, new Intent())
- .setPackageName(PACKAGE_NAME)
- .setUserHandle(new UserHandle(0))
- .build();
- PeopleSpaceTile tile2 =
- new PeopleSpaceTile
- .Builder(SHORTCUT_ID_2, "userName2", ICON, new Intent())
- .setPackageName(PACKAGE_NAME)
- .setUserHandle(new UserHandle(0))
- .build();
- List<PeopleSpaceTile> actualList = PeopleSpaceUtils
- .augmentTilesFromVisibleNotifications(mContext, List.of(tile1, tile2),
- mNotificationEntryManager);
-
- assertThat(actualList.size()).isEqualTo(2);
- assertThat(actualList.get(0).getNotificationContent().toString())
- .isEqualTo(NOTIFICATION_TEXT_2);
- assertThat(actualList.get(1).getNotificationContent().toString())
- .isEqualTo(NOTIFICATION_TEXT_4);
-
- verify(mNotificationEntryManager, times(1)).getVisibleNotifications();
- }
-
- @Test
- public void testAugmentSingleTileFromVisibleNotificationsSingleTile() {
- PeopleSpaceTile tile =
- new PeopleSpaceTile
- .Builder(SHORTCUT_ID_1, "userName", ICON, new Intent())
- .setPackageName(PACKAGE_NAME)
- .setUserHandle(new UserHandle(0))
- .build();
- PeopleSpaceTile augmentedTile = PeopleSpaceUtils
- .augmentSingleTileFromVisibleNotifications(
- mContext, tile, mNotificationEntryManager);
-
- assertThat(augmentedTile).isNotNull();
- assertThat(augmentedTile.getNotificationContent().toString())
- .isEqualTo(NOTIFICATION_TEXT_2);
-
- verify(mNotificationEntryManager, times(1)).getVisibleNotifications();
- }
-
- @Test
public void testDoNotUpdateSingleConversationAppWidgetWhenNotBirthday() {
int[] widgetIdsArray = {WIDGET_ID_WITH_SHORTCUT};
when(mMockCursor.moveToNext()).thenReturn(true, false);
diff --git a/packages/SystemUI/tests/src/com/android/systemui/people/widget/PeopleSpaceWidgetManagerTest.java b/packages/SystemUI/tests/src/com/android/systemui/people/widget/PeopleSpaceWidgetManagerTest.java
index 1ab5d34..725e5d4 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/people/widget/PeopleSpaceWidgetManagerTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/people/widget/PeopleSpaceWidgetManagerTest.java
@@ -68,6 +68,7 @@
import android.graphics.drawable.Icon;
import android.net.Uri;
import android.os.Bundle;
+import android.os.RemoteException;
import android.os.UserHandle;
import android.os.UserManager;
import android.service.notification.ConversationChannelWrapper;
@@ -86,6 +87,7 @@
import com.android.systemui.statusbar.notification.NotificationEntryManager;
import com.android.systemui.statusbar.notification.collection.NoManSimulator;
import com.android.systemui.statusbar.notification.collection.NoManSimulator.NotifEvent;
+import com.android.systemui.statusbar.notification.collection.NotificationEntry;
import com.android.systemui.statusbar.notification.collection.NotificationEntryBuilder;
import com.android.systemui.util.time.FakeSystemClock;
@@ -99,8 +101,10 @@
import java.util.ArrayList;
import java.util.Arrays;
+import java.util.Collections;
import java.util.HashSet;
import java.util.List;
+import java.util.Map;
import java.util.Set;
import java.util.stream.Collectors;
@@ -124,7 +128,7 @@
private static final String SHORTCUT_ID = "101";
private static final String OTHER_SHORTCUT_ID = "102";
private static final String NOTIFICATION_KEY = "0|com.android.systemui.tests|0|null|0";
- private static final String NOTIFICATION_CONTENT = "message text";
+ private static final String NOTIFICATION_CONTENT_1 = "message text 1";
private static final Uri URI = Uri.parse("fake_uri");
private static final Icon ICON = Icon.createWithResource("package", R.drawable.ic_android);
private static final PeopleTileKey KEY = new PeopleTileKey(SHORTCUT_ID, 0, TEST_PACKAGE_A);
@@ -140,7 +144,7 @@
.setPackageName(TEST_PACKAGE_A)
.setUserHandle(new UserHandle(0))
.setNotificationKey(NOTIFICATION_KEY + "1")
- .setNotificationContent(NOTIFICATION_CONTENT)
+ .setNotificationContent(NOTIFICATION_CONTENT_1)
.setNotificationDataUri(URI)
.setContactUri(URI)
.build();
@@ -154,8 +158,8 @@
// Same contact uri.
.setContactUri(URI)
.build();
- private final ShortcutInfo mShortcutInfo = new ShortcutInfo.Builder(mContext,
- SHORTCUT_ID).setLongLabel("name").build();
+ private ShortcutInfo mShortcutInfo;
+ private NotificationEntry mNotificationEntry;
private PeopleSpaceWidgetManager mManager;
@@ -215,6 +219,17 @@
when(mAppWidgetManager.getAppWidgetOptions(eq(WIDGET_ID_WITHOUT_SHORTCUT)))
.thenReturn(new Bundle());
when(mUserManager.isQuietModeEnabled(any())).thenReturn(false);
+
+ when(mMockContext.getPackageName()).thenReturn(TEST_PACKAGE_A);
+ when(mMockContext.getUserId()).thenReturn(0);
+ mShortcutInfo = new ShortcutInfo.Builder(mMockContext,
+ SHORTCUT_ID).setLongLabel("name").build();
+ mNotificationEntry = new NotificationEntryBuilder()
+ .setSbn(createNotification(
+ SHORTCUT_ID, /* isMessagingStyle = */ true, /* isMissedCall = */ false))
+ .setId(1)
+ .setShortcutInfo(mShortcutInfo)
+ .build();
}
@Test
@@ -490,7 +505,8 @@
ACTIVITY_GAME).setDescription("Playing a game!").build();
ConversationStatus status2 = new ConversationStatus.Builder(OTHER_SHORTCUT_ID,
ACTIVITY_BIRTHDAY).build();
- ConversationChannel conversationChannel = getConversationWithShortcutId(OTHER_SHORTCUT_ID,
+ ConversationChannel conversationChannel = getConversationWithShortcutId(
+ new PeopleTileKey(OTHER_SHORTCUT_ID, 0, TEST_PACKAGE_A),
Arrays.asList(status1, status2));
mManager.updateWidgetsWithConversationChanged(conversationChannel);
mClock.advanceTime(MIN_LINGER_DURATION);
@@ -508,7 +524,8 @@
ConversationStatus status = new ConversationStatus.Builder(SHORTCUT_ID,
ACTIVITY_GAME).setDescription("Playing a game!").build();
- ConversationChannel conversationChannel = getConversationWithShortcutId(SHORTCUT_ID,
+ ConversationChannel conversationChannel = getConversationWithShortcutId(
+ new PeopleTileKey(SHORTCUT_ID, 0, TEST_PACKAGE_A),
Arrays.asList(status));
mManager.updateWidgetsWithConversationChanged(conversationChannel);
mClock.advanceTime(MIN_LINGER_DURATION);
@@ -529,8 +546,8 @@
ConversationStatus status = new ConversationStatus.Builder(SHORTCUT_ID,
ACTIVITY_ANNIVERSARY).build();
- ConversationChannel conversationChannel = getConversationWithShortcutId(SHORTCUT_ID,
- Arrays.asList(status));
+ ConversationChannel conversationChannel = getConversationWithShortcutId(
+ new PeopleTileKey(SHORTCUT_ID, 0, TEST_PACKAGE_A), Arrays.asList(status));
mManager.updateWidgetsWithConversationChanged(conversationChannel);
mClock.advanceTime(MIN_LINGER_DURATION);
@@ -550,11 +567,15 @@
public void testUpdateNotificationPostedIfExistingTile() throws Exception {
int[] widgetIdsArray = {WIDGET_ID_WITH_SHORTCUT, WIDGET_ID_WITHOUT_SHORTCUT};
when(mAppWidgetManager.getAppWidgetIds(any())).thenReturn(widgetIdsArray);
-
- NotifEvent notif1 = mNoMan.postNotif(new NotificationEntryBuilder()
+ NotificationEntryBuilder builder = new NotificationEntryBuilder()
.setSbn(createNotification(
SHORTCUT_ID, /* isMessagingStyle = */ true, /* isMissedCall = */ false))
- .setId(1));
+ .setShortcutInfo(mShortcutInfo)
+ .setId(1);
+ NotificationEntry entry = builder.build();
+ when(mNotificationEntryManager.getVisibleNotifications()).thenReturn(List.of(entry));
+
+ NotifEvent notif1 = mNoMan.postNotif(builder);
mClock.advanceTime(MIN_LINGER_DURATION);
verify(mAppWidgetManager, times(1))
@@ -563,7 +584,7 @@
Bundle bundle = mBundleArgumentCaptor.getValue();
PeopleSpaceTile tile = bundle.getParcelable(OPTIONS_PEOPLE_TILE);
assertThat(tile.getNotificationKey()).isEqualTo(NOTIFICATION_KEY);
- assertThat(tile.getNotificationContent()).isEqualTo(NOTIFICATION_CONTENT);
+ assertThat(tile.getNotificationContent()).isEqualTo(NOTIFICATION_CONTENT_1);
verify(mAppWidgetManager, times(1)).updateAppWidget(eq(WIDGET_ID_WITH_SHORTCUT),
any());
}
@@ -620,11 +641,15 @@
throws Exception {
int[] widgetIdsArray = {WIDGET_ID_WITH_SHORTCUT, WIDGET_ID_WITHOUT_SHORTCUT};
when(mAppWidgetManager.getAppWidgetIds(any())).thenReturn(widgetIdsArray);
-
- NotifEvent notif1 = mNoMan.postNotif(new NotificationEntryBuilder()
+ NotificationEntryBuilder builder = new NotificationEntryBuilder()
.setSbn(createNotification(
SHORTCUT_ID, /* isMessagingStyle = */ false, /* isMissedCall = */ true))
- .setId(1));
+ .setShortcutInfo(mShortcutInfo)
+ .setId(1);
+ NotificationEntry entry = builder.build();
+ when(mNotificationEntryManager.getVisibleNotifications()).thenReturn(List.of(entry));
+
+ NotifEvent notif1 = mNoMan.postNotif(builder);
mClock.advanceTime(MIN_LINGER_DURATION);
verify(mAppWidgetManager, times(1))
@@ -645,11 +670,15 @@
throws Exception {
int[] widgetIdsArray = {WIDGET_ID_WITH_SHORTCUT, WIDGET_ID_WITHOUT_SHORTCUT};
when(mAppWidgetManager.getAppWidgetIds(any())).thenReturn(widgetIdsArray);
-
- NotifEvent notif1 = mNoMan.postNotif(new NotificationEntryBuilder()
+ NotificationEntryBuilder builder = new NotificationEntryBuilder()
.setSbn(createNotification(
SHORTCUT_ID, /* isMessagingStyle = */ true, /* isMissedCall = */ true))
- .setId(1));
+ .setShortcutInfo(mShortcutInfo)
+ .setId(1);
+ NotificationEntry entry = builder.build();
+ when(mNotificationEntryManager.getVisibleNotifications()).thenReturn(List.of(entry));
+
+ NotifEvent notif1 = mNoMan.postNotif(builder);
mClock.advanceTime(MIN_LINGER_DURATION);
verify(mAppWidgetManager, times(1))
@@ -659,7 +688,7 @@
PeopleSpaceTile tile = bundle.getParcelable(OPTIONS_PEOPLE_TILE);
assertThat(tile.getNotificationKey()).isEqualTo(NOTIFICATION_KEY);
- assertThat(tile.getNotificationContent()).isEqualTo(NOTIFICATION_CONTENT);
+ assertThat(tile.getNotificationContent()).isEqualTo(NOTIFICATION_CONTENT_1);
verify(mAppWidgetManager, times(1)).updateAppWidget(eq(WIDGET_ID_WITH_SHORTCUT),
any());
}
@@ -670,11 +699,15 @@
int[] widgetIdsArray =
{WIDGET_ID_WITH_SHORTCUT, WIDGET_ID_WITHOUT_SHORTCUT, WIDGET_ID_WITH_SAME_URI};
when(mAppWidgetManager.getAppWidgetIds(any())).thenReturn(widgetIdsArray);
-
- NotifEvent notif1 = mNoMan.postNotif(new NotificationEntryBuilder()
+ NotificationEntryBuilder builder = new NotificationEntryBuilder()
.setSbn(createNotification(
SHORTCUT_ID, /* isMessagingStyle = */ true, /* isMissedCall = */ true))
- .setId(1));
+ .setShortcutInfo(mShortcutInfo)
+ .setId(1);
+ NotificationEntry entry = builder.build();
+ when(mNotificationEntryManager.getVisibleNotifications()).thenReturn(List.of(entry));
+
+ NotifEvent notif1 = mNoMan.postNotif(builder);
mClock.advanceTime(MIN_LINGER_DURATION);
verify(mAppWidgetManager, times(1))
@@ -684,7 +717,7 @@
PeopleSpaceTile tileWithMissedCallOrigin = bundle.getParcelable(OPTIONS_PEOPLE_TILE);
assertThat(tileWithMissedCallOrigin.getNotificationKey()).isEqualTo(NOTIFICATION_KEY);
assertThat(tileWithMissedCallOrigin.getNotificationContent()).isEqualTo(
- NOTIFICATION_CONTENT);
+ NOTIFICATION_CONTENT_1);
verify(mAppWidgetManager, times(1)).updateAppWidget(eq(WIDGET_ID_WITH_SHORTCUT),
any());
verify(mAppWidgetManager, times(1))
@@ -693,7 +726,7 @@
Bundle bundleForSameUriTile = requireNonNull(mBundleArgumentCaptor.getValue());
PeopleSpaceTile tileWithSameUri = bundleForSameUriTile.getParcelable(OPTIONS_PEOPLE_TILE);
assertThat(tileWithSameUri.getNotificationKey()).isEqualTo(NOTIFICATION_KEY);
- assertThat(tileWithSameUri.getNotificationContent()).isEqualTo(NOTIFICATION_CONTENT);
+ assertThat(tileWithSameUri.getNotificationContent()).isEqualTo(NOTIFICATION_CONTENT_1);
verify(mAppWidgetManager, times(1)).updateAppWidget(eq(WIDGET_ID_WITH_SAME_URI),
any());
}
@@ -704,12 +737,19 @@
int[] widgetIdsArray =
{WIDGET_ID_WITH_SHORTCUT, WIDGET_ID_WITHOUT_SHORTCUT, WIDGET_ID_WITH_SAME_URI};
when(mAppWidgetManager.getAppWidgetIds(any())).thenReturn(widgetIdsArray);
-
- NotifEvent notif1 = mNoMan.postNotif(new NotificationEntryBuilder()
+ NotificationEntryBuilder builder = new NotificationEntryBuilder()
.setSbn(createNotification(
SHORTCUT_ID, /* isMessagingStyle = */ true, /* isMissedCall = */ true))
- .setId(1));
+ .setShortcutInfo(mShortcutInfo)
+ .setId(1);
+
+ NotificationEntry entry = builder.build();
+ when(mNotificationEntryManager.getVisibleNotifications()).thenReturn(List.of(entry));
+
+ NotifEvent notif1 = mNoMan.postNotif(builder);
mClock.advanceTime(MIN_LINGER_DURATION);
+
+ when(mNotificationEntryManager.getVisibleNotifications()).thenReturn(List.of());
NotifEvent notif1b = mNoMan.retractNotif(notif1.sbn.cloneLight(), 0);
mClock.advanceTime(MIN_LINGER_DURATION);
@@ -733,45 +773,11 @@
}
@Test
- public void testDoNotRemoveMissedCallIfMatchingUriTileMissingReadContactsPermissionWhenPosted()
- throws Exception {
- when(mPackageManager.checkPermission(any(),
- eq(PERSON_TILE_WITH_SAME_URI.getPackageName()))).thenReturn(
- PERMISSION_HARD_DENIED);
- int[] widgetIdsArray =
- {WIDGET_ID_WITH_SHORTCUT, WIDGET_ID_WITHOUT_SHORTCUT, WIDGET_ID_WITH_SAME_URI};
- when(mAppWidgetManager.getAppWidgetIds(any())).thenReturn(widgetIdsArray);
-
- NotifEvent notif1 = mNoMan.postNotif(new NotificationEntryBuilder()
- .setSbn(createNotification(
- SHORTCUT_ID, /* isMessagingStyle = */ true, /* isMissedCall = */ true))
- .setId(1));
- mClock.advanceTime(MIN_LINGER_DURATION);
- // We should only try to remove the notification if the Missed Call was added when posted.
- NotifEvent notif1b = mNoMan.retractNotif(notif1.sbn.cloneLight(), 0);
- mClock.advanceTime(MIN_LINGER_DURATION);
-
- verify(mAppWidgetManager, times(2)).updateAppWidgetOptions(eq(WIDGET_ID_WITH_SHORTCUT),
- mBundleArgumentCaptor.capture());
- Bundle bundle = mBundleArgumentCaptor.getValue();
- PeopleSpaceTile tileWithMissedCallOrigin = bundle.getParcelable(OPTIONS_PEOPLE_TILE);
- assertThat(tileWithMissedCallOrigin.getNotificationKey()).isEqualTo(null);
- assertThat(tileWithMissedCallOrigin.getNotificationContent()).isEqualTo(null);
- verify(mAppWidgetManager, times(2)).updateAppWidget(eq(WIDGET_ID_WITH_SHORTCUT),
- any());
- verify(mAppWidgetManager, times(0))
- .updateAppWidgetOptions(eq(WIDGET_ID_WITH_SAME_URI), any());
- verify(mAppWidgetManager, times(0)).updateAppWidget(eq(WIDGET_ID_WITH_SAME_URI),
- any());
- }
-
- @Test
public void testUpdateMissedCallNotificationWithContentPostedIfMatchingUriTileFromSender()
throws Exception {
int[] widgetIdsArray =
{WIDGET_ID_WITH_SHORTCUT, WIDGET_ID_WITHOUT_SHORTCUT, WIDGET_ID_WITH_SAME_URI};
when(mAppWidgetManager.getAppWidgetIds(any())).thenReturn(widgetIdsArray);
-
Notification notificationWithPersonOnlyInSender =
createMessagingStyleNotificationWithoutExtras(
SHORTCUT_ID, /* isMessagingStyle = */ true, /* isMissedCall = */
@@ -782,9 +788,15 @@
.setUid(0)
.setUser(new UserHandle(0))
.build();
- NotifEvent notif1 = mNoMan.postNotif(new NotificationEntryBuilder()
+ NotificationEntryBuilder builder = new NotificationEntryBuilder()
+ .setRank(1)
+ .setShortcutInfo(mShortcutInfo)
.setSbn(sbn)
- .setId(1));
+ .setId(1);
+ NotificationEntry entry = builder.build();
+ when(mNotificationEntryManager.getVisibleNotifications()).thenReturn(List.of(entry));
+
+ NotifEvent notif1 = mNoMan.postNotif(builder);
mClock.advanceTime(MIN_LINGER_DURATION);
verify(mAppWidgetManager, times(1))
@@ -794,7 +806,7 @@
PeopleSpaceTile tileWithMissedCallOrigin = bundle.getParcelable(OPTIONS_PEOPLE_TILE);
assertThat(tileWithMissedCallOrigin.getNotificationKey()).isEqualTo(NOTIFICATION_KEY);
assertThat(tileWithMissedCallOrigin.getNotificationContent()).isEqualTo(
- NOTIFICATION_CONTENT);
+ NOTIFICATION_CONTENT_1);
verify(mAppWidgetManager, times(1)).updateAppWidget(eq(WIDGET_ID_WITH_SHORTCUT),
any());
verify(mAppWidgetManager, times(1))
@@ -803,7 +815,7 @@
Bundle bundleForSameUriTile = requireNonNull(mBundleArgumentCaptor.getValue());
PeopleSpaceTile tileWithSameUri = bundleForSameUriTile.getParcelable(OPTIONS_PEOPLE_TILE);
assertThat(tileWithSameUri.getNotificationKey()).isEqualTo(NOTIFICATION_KEY);
- assertThat(tileWithSameUri.getNotificationContent()).isEqualTo(NOTIFICATION_CONTENT);
+ assertThat(tileWithSameUri.getNotificationContent()).isEqualTo(NOTIFICATION_CONTENT_1);
verify(mAppWidgetManager, times(1)).updateAppWidget(eq(WIDGET_ID_WITH_SAME_URI),
any());
}
@@ -814,14 +826,13 @@
int[] widgetIdsArray =
{WIDGET_ID_WITH_SHORTCUT, WIDGET_ID_WITHOUT_SHORTCUT, WIDGET_ID_WITH_SAME_URI};
when(mAppWidgetManager.getAppWidgetIds(any())).thenReturn(widgetIdsArray);
-
// Notification posted without any Person attached.
Notification notificationWithoutPersonObject =
createMessagingStyleNotificationWithoutExtras(
SHORTCUT_ID, /* isMessagingStyle = */ true, /* isMissedCall = */
true).setStyle(new Notification.MessagingStyle("sender")
.addMessage(
- new Notification.MessagingStyle.Message(NOTIFICATION_CONTENT, 10,
+ new Notification.MessagingStyle.Message(NOTIFICATION_CONTENT_1, 10,
"sender"))
).build();
StatusBarNotification sbn = new SbnBuilder()
@@ -830,9 +841,15 @@
.setUid(0)
.setUser(new UserHandle(0))
.build();
- NotifEvent notif1 = mNoMan.postNotif(new NotificationEntryBuilder()
+ NotificationEntryBuilder builder = new NotificationEntryBuilder()
.setSbn(sbn)
- .setId(1));
+ .setShortcutInfo(mShortcutInfo)
+ .setId(1);
+ NotificationEntry entry = builder.build();
+ when(mNotificationEntryManager.getVisibleNotifications()).thenReturn(List.of(entry));
+
+ NotifEvent notif1 = mNoMan.postNotif(builder);
+
mClock.advanceTime(MIN_LINGER_DURATION);
verify(mAppWidgetManager, times(1))
@@ -842,7 +859,7 @@
PeopleSpaceTile tileWithMissedCallOrigin = bundle.getParcelable(OPTIONS_PEOPLE_TILE);
assertThat(tileWithMissedCallOrigin.getNotificationKey()).isEqualTo(NOTIFICATION_KEY);
assertThat(tileWithMissedCallOrigin.getNotificationContent()).isEqualTo(
- NOTIFICATION_CONTENT);
+ NOTIFICATION_CONTENT_1);
verify(mAppWidgetManager, times(1)).updateAppWidget(eq(WIDGET_ID_WITH_SHORTCUT),
any());
// Do not update since notification doesn't include a Person reference.
@@ -863,11 +880,15 @@
int[] widgetIdsArray =
{WIDGET_ID_WITH_SHORTCUT, WIDGET_ID_WITHOUT_SHORTCUT, WIDGET_ID_WITH_DIFFERENT_URI};
when(mAppWidgetManager.getAppWidgetIds(any())).thenReturn(widgetIdsArray);
-
- NotifEvent notif1 = mNoMan.postNotif(new NotificationEntryBuilder()
+ NotificationEntryBuilder builder = new NotificationEntryBuilder()
.setSbn(createNotification(
SHORTCUT_ID, /* isMessagingStyle = */ true, /* isMissedCall = */ true))
- .setId(1));
+ .setShortcutInfo(mShortcutInfo)
+ .setId(1);
+ NotificationEntry entry = builder.build();
+ when(mNotificationEntryManager.getVisibleNotifications()).thenReturn(List.of(entry));
+
+ NotifEvent notif1 = mNoMan.postNotif(builder);
mClock.advanceTime(MIN_LINGER_DURATION);
verify(mAppWidgetManager, times(1))
@@ -877,7 +898,7 @@
PeopleSpaceTile tileWithMissedCallOrigin = bundle.getParcelable(OPTIONS_PEOPLE_TILE);
assertThat(tileWithMissedCallOrigin.getNotificationKey()).isEqualTo(NOTIFICATION_KEY);
assertThat(tileWithMissedCallOrigin.getNotificationContent()).isEqualTo(
- NOTIFICATION_CONTENT);
+ NOTIFICATION_CONTENT_1);
verify(mAppWidgetManager, times(1)).updateAppWidget(eq(WIDGET_ID_WITH_SHORTCUT),
any());
// Do not update since missing permission to read contacts.
@@ -897,11 +918,15 @@
int[] widgetIdsArray =
{WIDGET_ID_WITH_SHORTCUT, WIDGET_ID_WITHOUT_SHORTCUT, WIDGET_ID_WITH_SAME_URI};
when(mAppWidgetManager.getAppWidgetIds(any())).thenReturn(widgetIdsArray);
-
- NotifEvent notif1 = mNoMan.postNotif(new NotificationEntryBuilder()
+ NotificationEntryBuilder builder = new NotificationEntryBuilder()
.setSbn(createNotification(
SHORTCUT_ID, /* isMessagingStyle = */ true, /* isMissedCall = */ true))
- .setId(1));
+ .setShortcutInfo(mShortcutInfo)
+ .setId(1);
+ NotificationEntry entry = builder.build();
+ when(mNotificationEntryManager.getVisibleNotifications()).thenReturn(List.of(entry));
+
+ NotifEvent notif1 = mNoMan.postNotif(builder);
mClock.advanceTime(MIN_LINGER_DURATION);
verify(mAppWidgetManager, times(1))
@@ -911,14 +936,18 @@
PeopleSpaceTile tileWithMissedCallOrigin = bundle.getParcelable(OPTIONS_PEOPLE_TILE);
assertThat(tileWithMissedCallOrigin.getNotificationKey()).isEqualTo(NOTIFICATION_KEY);
assertThat(tileWithMissedCallOrigin.getNotificationContent()).isEqualTo(
- NOTIFICATION_CONTENT);
+ NOTIFICATION_CONTENT_1);
verify(mAppWidgetManager, times(1)).updateAppWidget(eq(WIDGET_ID_WITH_SHORTCUT),
any());
// Do not update since missing permission to read contacts.
- verify(mAppWidgetManager, times(0))
+ verify(mAppWidgetManager, times(1))
.updateAppWidgetOptions(eq(WIDGET_ID_WITH_SAME_URI),
- any());
- verify(mAppWidgetManager, times(0)).updateAppWidget(eq(WIDGET_ID_WITH_SAME_URI),
+ mBundleArgumentCaptor.capture());
+ Bundle noNotificationBundle = requireNonNull(mBundleArgumentCaptor.getValue());
+ PeopleSpaceTile tileNoNotification =
+ noNotificationBundle.getParcelable(OPTIONS_PEOPLE_TILE);
+ assertThat(tileNoNotification.getNotificationKey()).isNull();
+ verify(mAppWidgetManager, times(1)).updateAppWidget(eq(WIDGET_ID_WITH_SAME_URI),
any());
}
@@ -952,7 +981,7 @@
public void testAddThenReconfigureWidgetsUpdatesStorageCacheAndListeners()
throws Exception {
clearStorage();
- mManager.addNewWidget(WIDGET_ID_WITH_SHORTCUT, PERSON_TILE);
+ mManager.addNewWidget(WIDGET_ID_WITH_SHORTCUT, new PeopleTileKey(PERSON_TILE));
// Check storage.
SharedPreferences widgetSp = mContext.getSharedPreferences(
String.valueOf(WIDGET_ID_WITH_SHORTCUT),
@@ -971,7 +1000,8 @@
eq(LauncherApps.FLAG_CACHE_PEOPLE_TILE_SHORTCUTS));
// Reconfigure WIDGET_ID_WITH_SHORTCUT from PERSON_TILE to PERSON_TILE_WITH_SAME_URI
- mManager.addNewWidget(WIDGET_ID_WITH_SHORTCUT, PERSON_TILE_WITH_SAME_URI);
+ mManager.addNewWidget(
+ WIDGET_ID_WITH_SHORTCUT, new PeopleTileKey(PERSON_TILE_WITH_SAME_URI));
// Check listener is removed and shortcut is uncached.
verify(mPeopleManager).unregisterConversationListener(any());
@@ -1120,26 +1150,28 @@
@Test
public void testGetPeopleTileFromPersistentStorageExistingConversation()
throws Exception {
- when(mIPeopleManager.getConversation(PACKAGE_NAME, 0, SHORTCUT_ID)).thenReturn(
- getConversationWithShortcutId(SHORTCUT_ID));
- PeopleTileKey key = new PeopleTileKey(SHORTCUT_ID, 0, PACKAGE_NAME);
+ ConversationChannel channel = getConversationWithShortcutId(
+ new PeopleTileKey(SHORTCUT_ID, 0, TEST_PACKAGE_A));
+ when(mIPeopleManager.getConversation(TEST_PACKAGE_A, 0, SHORTCUT_ID)).thenReturn(channel);
+ PeopleTileKey key = new PeopleTileKey(SHORTCUT_ID, 0, TEST_PACKAGE_A);
PeopleSpaceTile tile = mManager.getTileFromPersistentStorage(key);
assertThat(tile.getId()).isEqualTo(key.getShortcutId());
}
@Test
- public void testGetPeopleTileFromPersistentStorageNoConversation() {
- PeopleTileKey key = new PeopleTileKey(SHORTCUT_ID, 0, PACKAGE_NAME);
+ public void testGetPeopleTileFromPersistentStorageNoConversation() throws RemoteException {
+ when(mIPeopleManager.getConversation(TEST_PACKAGE_A, 0, SHORTCUT_ID)).thenReturn(null);
+ PeopleTileKey key = new PeopleTileKey(SHORTCUT_ID, 0, TEST_PACKAGE_A);
PeopleSpaceTile tile = mManager.getTileFromPersistentStorage(key);
assertThat(tile).isNull();
}
@Test
public void testRequestPinAppWidgetExistingConversation() throws Exception {
- when(mMockContext.getPackageName()).thenReturn(PACKAGE_NAME);
- when(mMockContext.getUserId()).thenReturn(0);
- when(mIPeopleManager.getConversation(PACKAGE_NAME, 0, SHORTCUT_ID))
- .thenReturn(getConversationWithShortcutId(SHORTCUT_ID));
+ ConversationChannel channel = getConversationWithShortcutId(
+ new PeopleTileKey(SHORTCUT_ID, 0, TEST_PACKAGE_A));
+ when(mIPeopleManager.getConversation(TEST_PACKAGE_A, 0, SHORTCUT_ID))
+ .thenReturn(channel);
when(mAppWidgetManager.requestPinAppWidget(any(), any(), any())).thenReturn(true);
ShortcutInfo info = new ShortcutInfo.Builder(mMockContext, SHORTCUT_ID).build();
@@ -1152,9 +1184,7 @@
@Test
public void testRequestPinAppWidgetNoConversation() throws Exception {
- when(mMockContext.getPackageName()).thenReturn(PACKAGE_NAME);
- when(mMockContext.getUserId()).thenReturn(0);
- when(mIPeopleManager.getConversation(PACKAGE_NAME, 0, SHORTCUT_ID)).thenReturn(null);
+ when(mIPeopleManager.getConversation(TEST_PACKAGE_A, 0, SHORTCUT_ID)).thenReturn(null);
ShortcutInfo info = new ShortcutInfo.Builder(mMockContext, SHORTCUT_ID).build();
boolean valid = mManager.requestPinAppWidget(info, new Bundle());
@@ -1163,6 +1193,57 @@
verify(mAppWidgetManager, never()).requestPinAppWidget(any(), any(), any());
}
+ @Test
+ public void testAugmentTileFromNotifications() {
+ PeopleSpaceTile tile =
+ new PeopleSpaceTile
+ .Builder(SHORTCUT_ID, "userName", ICON, new Intent())
+ .setPackageName(TEST_PACKAGE_A)
+ .setUserHandle(new UserHandle(0))
+ .build();
+ PeopleSpaceTile actual = mManager.augmentTileFromNotifications(tile, EMPTY_STRING,
+ Map.of(new PeopleTileKey(mNotificationEntry),
+ new HashSet<>(Collections.singleton(mNotificationEntry))));
+
+ assertThat(actual.getNotificationContent().toString()).isEqualTo(NOTIFICATION_CONTENT_1);
+ }
+
+ @Test
+ public void testAugmentTileFromNotificationsDifferentShortcutId() {
+ PeopleSpaceTile tile =
+ new PeopleSpaceTile
+ .Builder(OTHER_SHORTCUT_ID, "userName", ICON, new Intent())
+ .setPackageName(TEST_PACKAGE_A)
+ .setUserHandle(new UserHandle(0))
+ .build();
+ PeopleSpaceTile actual = mManager
+ .augmentTileFromNotifications(tile, EMPTY_STRING,
+ Map.of(new PeopleTileKey(mNotificationEntry),
+ new HashSet<>(Collections.singleton(mNotificationEntry))));
+
+ assertThat(actual.getNotificationContent()).isEqualTo(null);
+ }
+
+ @Test
+ public void testAugmentTileFromNotificationEntryManager() {
+ PeopleSpaceTile tile =
+ new PeopleSpaceTile
+ .Builder(SHORTCUT_ID, "userName", ICON, new Intent())
+ .setPackageName(TEST_PACKAGE_A)
+ .setUserHandle(new UserHandle(0))
+ .build();
+ when(mNotificationEntryManager.getVisibleNotifications())
+ .thenReturn(List.of(mNotificationEntry));
+
+ PeopleSpaceTile actual =
+ mManager.augmentTileFromNotificationEntryManager(tile);
+
+ assertThat(actual.getNotificationContent().toString()).isEqualTo(NOTIFICATION_CONTENT_1);
+
+ verify(mNotificationEntryManager, times(1))
+ .getVisibleNotifications();
+ }
+
/**
* Adds another widget for {@code PERSON_TILE} with widget ID: {@code
* SECOND_WIDGET_ID_WITH_SHORTCUT}.
@@ -1179,10 +1260,11 @@
setStorageForTile(tile.getId(), tile.getPackageName(), widgetId, tile.getContactUri());
Bundle options = new Bundle();
options.putParcelable(OPTIONS_PEOPLE_TILE, tile);
+ ConversationChannel channel = getConversationWithShortcutId(new PeopleTileKey(tile));
when(mAppWidgetManager.getAppWidgetOptions(eq(widgetId)))
.thenReturn(options);
- when(mIPeopleManager.getConversation(tile.getPackageName(), 0, tile.getId())).thenReturn(
- getConversationWithShortcutId(tile.getId()));
+ when(mIPeopleManager.getConversation(tile.getPackageName(), 0, tile.getId()))
+ .thenReturn(channel);
when(mPackageManager.checkPermission(any(), eq(tile.getPackageName()))).thenReturn(
PERMISSION_GRANTED);
}
@@ -1190,17 +1272,19 @@
/**
* Returns a single conversation associated with {@code shortcutId}.
*/
- private ConversationChannel getConversationWithShortcutId(String shortcutId) throws Exception {
- return getConversationWithShortcutId(shortcutId, Arrays.asList());
+ private ConversationChannel getConversationWithShortcutId(PeopleTileKey key) throws Exception {
+ return getConversationWithShortcutId(key, Arrays.asList());
}
/**
* Returns a single conversation associated with {@code shortcutId} and {@code statuses}.
*/
- private ConversationChannel getConversationWithShortcutId(String shortcutId,
+ private ConversationChannel getConversationWithShortcutId(PeopleTileKey key,
List<ConversationStatus> statuses) throws Exception {
- ShortcutInfo shortcutInfo = new ShortcutInfo.Builder(mContext, shortcutId).setLongLabel(
- "name").setPerson(PERSON).build();
+ when(mMockContext.getPackageName()).thenReturn(key.getPackageName());
+ when(mMockContext.getUserId()).thenReturn(key.getUserId());
+ ShortcutInfo shortcutInfo = new ShortcutInfo.Builder(mMockContext, key.getShortcutId())
+ .setLongLabel("name").setPerson(PERSON).build();
ConversationChannel convo = new ConversationChannel(shortcutInfo, 0, null, null,
0L, false, false, statuses);
return convo;
@@ -1220,7 +1304,7 @@
if (isMessagingStyle) {
builder.setStyle(new Notification.MessagingStyle(PERSON)
.addMessage(
- new Notification.MessagingStyle.Message(NOTIFICATION_CONTENT, 10,
+ new Notification.MessagingStyle.Message(NOTIFICATION_CONTENT_1, 10,
PERSON))
);
}
@@ -1239,7 +1323,7 @@
if (isMessagingStyle) {
builder.setStyle(new Notification.MessagingStyle(PERSON)
.addMessage(
- new Notification.MessagingStyle.Message(NOTIFICATION_CONTENT, 10,
+ new Notification.MessagingStyle.Message(NOTIFICATION_CONTENT_1, 10,
PERSON))
);
}
diff --git a/packages/SystemUI/tests/src/com/android/systemui/settings/brightness/BrightnessSliderTest.kt b/packages/SystemUI/tests/src/com/android/systemui/settings/brightness/BrightnessSliderTest.kt
index 3ed8ecf..e0187bd 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/settings/brightness/BrightnessSliderTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/settings/brightness/BrightnessSliderTest.kt
@@ -18,8 +18,6 @@
import android.testing.AndroidTestingRunner
import android.view.MotionEvent
-import android.view.View
-import android.view.ViewGroup
import android.widget.SeekBar
import androidx.test.filters.SmallTest
import com.android.settingslib.RestrictedLockUtils
@@ -39,7 +37,6 @@
import org.mockito.Captor
import org.mockito.Mock
import org.mockito.Mockito.isNull
-import org.mockito.Mockito.mock
import org.mockito.Mockito.never
import org.mockito.Mockito.notNull
import org.mockito.Mockito.verify
@@ -51,8 +48,6 @@
class BrightnessSliderTest : SysuiTestCase() {
@Mock
- private lateinit var rootView: View
- @Mock
private lateinit var brightnessSliderView: BrightnessSliderView
@Mock
private lateinit var enforcedAdmin: RestrictedLockUtils.EnforcedAdmin
@@ -80,7 +75,7 @@
whenever(mirrorController.toggleSlider).thenReturn(mirror)
whenever(motionEvent.copy()).thenReturn(motionEvent)
- mController = BrightnessSlider(rootView, brightnessSliderView, mFalsingManager)
+ mController = BrightnessSlider(brightnessSliderView, mFalsingManager)
mController.init()
mController.setOnChangedListener(listener)
}
@@ -203,9 +198,7 @@
@Test
fun testSeekBarTrackingStarted() {
- val parent = mock(ViewGroup::class.java)
whenever(brightnessSliderView.value).thenReturn(42)
- whenever(brightnessSliderView.parent).thenReturn(parent)
mController.onViewAttached()
mController.setMirrorControllerAndMirror(mirrorController)
@@ -215,7 +208,7 @@
verify(listener).onChanged(eq(true), eq(42), eq(false))
verify(mirrorController).showMirror()
- verify(mirrorController).setLocation(parent)
+ verify(mirrorController).setLocationAndSize(brightnessSliderView)
}
@Test
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/NotificationTestHelper.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/NotificationTestHelper.java
index b4a3393..0bb66fc 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/NotificationTestHelper.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/NotificationTestHelper.java
@@ -239,46 +239,12 @@
/**
* Returns an {@link ExpandableNotificationRow} that should be shown as a bubble.
*/
- public ExpandableNotificationRow createBubbleInGroup()
- throws Exception {
- return createBubble(makeBubbleMetadata(null), PKG, true);
- }
-
- /**
- * Returns an {@link ExpandableNotificationRow} that should be shown as a bubble.
- */
public ExpandableNotificationRow createBubble()
throws Exception {
- return createBubble(makeBubbleMetadata(null), PKG, false);
- }
-
- /**
- * Returns an {@link ExpandableNotificationRow} that should be shown as a bubble.
- *
- * @param deleteIntent the intent to assign to {@link BubbleMetadata#deleteIntent}
- */
- public ExpandableNotificationRow createBubble(@Nullable PendingIntent deleteIntent)
- throws Exception {
- return createBubble(makeBubbleMetadata(deleteIntent), PKG, false);
- }
-
- /**
- * Returns an {@link ExpandableNotificationRow} that should be shown as a bubble.
- *
- * @param bubbleMetadata the {@link BubbleMetadata} to use
- */
- public ExpandableNotificationRow createBubble(BubbleMetadata bubbleMetadata, String pkg)
- throws Exception {
- return createBubble(bubbleMetadata, pkg, false);
- }
-
- private ExpandableNotificationRow createBubble(BubbleMetadata bubbleMetadata, String pkg,
- boolean inGroup)
- throws Exception {
Notification n = createNotification(false /* isGroupSummary */,
- inGroup ? GROUP_KEY : null /* groupKey */, bubbleMetadata);
+ null /* groupKey */, makeBubbleMetadata(null));
n.flags |= FLAG_BUBBLE;
- ExpandableNotificationRow row = generateRow(n, pkg, UID, USER_HANDLE,
+ ExpandableNotificationRow row = generateRow(n, PKG, UID, USER_HANDLE,
0 /* extraInflationFlags */, IMPORTANCE_HIGH);
modifyRanking(row.getEntry())
.setCanBubble(true)
@@ -287,6 +253,76 @@
}
/**
+ * Returns an {@link ExpandableNotificationRow} that should be shown as a bubble and is part
+ * of a group of notifications.
+ */
+ public ExpandableNotificationRow createBubbleInGroup()
+ throws Exception {
+ Notification n = createNotification(false /* isGroupSummary */,
+ GROUP_KEY /* groupKey */, makeBubbleMetadata(null));
+ n.flags |= FLAG_BUBBLE;
+ ExpandableNotificationRow row = generateRow(n, PKG, UID, USER_HANDLE,
+ 0 /* extraInflationFlags */, IMPORTANCE_HIGH);
+ modifyRanking(row.getEntry())
+ .setCanBubble(true)
+ .build();
+ return row;
+ }
+
+ /**
+ * Returns an {@link NotificationEntry} that should be shown as a bubble.
+ *
+ * @param deleteIntent the intent to assign to {@link BubbleMetadata#deleteIntent}
+ */
+ public NotificationEntry createBubble(@Nullable PendingIntent deleteIntent) {
+ return createBubble(makeBubbleMetadata(deleteIntent), USER_HANDLE);
+ }
+
+ /**
+ * Returns an {@link NotificationEntry} that should be shown as a bubble.
+ *
+ * @param handle the user to associate with this bubble.
+ */
+ public NotificationEntry createBubble(UserHandle handle) {
+ return createBubble(makeBubbleMetadata(null), handle);
+ }
+
+ /**
+ * Returns an {@link NotificationEntry} that should be shown as a bubble.
+ *
+ * @param userHandle the user to associate with this notification.
+ */
+ private NotificationEntry createBubble(BubbleMetadata metadata, UserHandle userHandle) {
+ Notification n = createNotification(false /* isGroupSummary */, null /* groupKey */,
+ metadata);
+ n.flags |= FLAG_BUBBLE;
+
+ final NotificationChannel channel =
+ new NotificationChannel(
+ n.getChannelId(),
+ n.getChannelId(),
+ IMPORTANCE_HIGH);
+ channel.setBlockable(true);
+
+ NotificationEntry entry = new NotificationEntryBuilder()
+ .setPkg(PKG)
+ .setOpPkg(PKG)
+ .setId(mId++)
+ .setUid(UID)
+ .setInitialPid(2000)
+ .setNotification(n)
+ .setUser(userHandle)
+ .setPostTime(System.currentTimeMillis())
+ .setChannel(channel)
+ .build();
+
+ modifyRanking(entry)
+ .setCanBubble(true)
+ .build();
+ return entry;
+ }
+
+ /**
* Creates a notification row with the given details.
*
* @param pkg package used for creating a {@link StatusBarNotification}
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerBaseTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerBaseTest.java
index 40439a2..f33c9e8 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerBaseTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerBaseTest.java
@@ -129,7 +129,6 @@
protected int mSubId;
private NetworkCapabilities mNetCapabilities;
- private Network mNetwork;
private ConnectivityManager.NetworkCallback mDefaultCallbackInWifiTracker;
private ConnectivityManager.NetworkCallback mDefaultCallbackInNetworkController;
private ConnectivityManager.NetworkCallback mNetworkCallback;
@@ -174,10 +173,8 @@
mMockCm = mock(ConnectivityManager.class);
mMockBd = mock(BroadcastDispatcher.class);
mMockNsm = mock(NetworkScoreManager.class);
- mNetwork = mock(Network.class);
mMockSubDefaults = mock(SubscriptionDefaults.class);
mNetCapabilities = new NetworkCapabilities();
- when(mNetwork.getNetId()).thenReturn(0);
when(mMockTm.isDataCapable()).thenReturn(true);
when(mMockTm.createForSubscriptionId(anyInt())).thenReturn(mMockTm);
doAnswer(invocation -> {
@@ -326,7 +323,8 @@
new NetworkCapabilities.Builder(mNetCapabilities);
builder.setTransportInfo(info);
setConnectivityCommon(builder, networkType, validated, isConnected);
- mDefaultCallbackInNetworkController.onCapabilitiesChanged(mNetwork, builder.build());
+ mDefaultCallbackInNetworkController.onCapabilitiesChanged(
+ mock(Network.class), builder.build());
}
public void setConnectivityViaCallbackInNetworkController(
@@ -337,7 +335,8 @@
builder.setTransportInfo(wifiInfo);
}
setConnectivityCommon(builder, networkType, validated, isConnected);
- mDefaultCallbackInNetworkController.onCapabilitiesChanged(mNetwork, builder.build());
+ mDefaultCallbackInNetworkController.onCapabilitiesChanged(
+ mock(Network.class), builder.build());
}
public void setConnectivityViaCallbackInWifiTracker(
@@ -351,10 +350,10 @@
if (networkType == NetworkCapabilities.TRANSPORT_WIFI) {
if (isConnected) {
final NetworkCapabilities newCap = builder.build();
- mNetworkCallback.onAvailable(mNetwork);
- mNetworkCallback.onCapabilitiesChanged(mNetwork, newCap);
+ mNetworkCallback.onAvailable(mock(Network.class));
+ mNetworkCallback.onCapabilitiesChanged(mock(Network.class), newCap);
} else {
- mNetworkCallback.onLost(mNetwork);
+ mNetworkCallback.onLost(mock(Network.class));
}
}
}
@@ -368,11 +367,11 @@
if (networkType == NetworkCapabilities.TRANSPORT_CELLULAR) {
if (isConnected) {
final NetworkCapabilities newCap = builder.build();
- mNetworkCallback.onAvailable(mNetwork);
- mNetworkCallback.onCapabilitiesChanged(mNetwork, newCap);
- mDefaultCallbackInWifiTracker.onCapabilitiesChanged(mNetwork, newCap);
+ mNetworkCallback.onAvailable(mock(Network.class));
+ mNetworkCallback.onCapabilitiesChanged(mock(Network.class), newCap);
+ mDefaultCallbackInWifiTracker.onCapabilitiesChanged(mock(Network.class), newCap);
} else {
- mNetworkCallback.onLost(mNetwork);
+ mNetworkCallback.onLost(mock(Network.class));
}
}
}
@@ -386,7 +385,7 @@
}
setConnectivityCommon(builder, networkType, validated, isConnected);
mDefaultCallbackInWifiTracker.onCapabilitiesChanged(
- mNetwork, builder.build());
+ mock(Network.class), builder.build());
}
private static void setConnectivityCommon(NetworkCapabilities.Builder builder,
diff --git a/packages/SystemUI/tests/src/com/android/systemui/utils/leaks/FakeStatusBarIconController.java b/packages/SystemUI/tests/src/com/android/systemui/utils/leaks/FakeStatusBarIconController.java
index 64127b9..8ad6271 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/utils/leaks/FakeStatusBarIconController.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/utils/leaks/FakeStatusBarIconController.java
@@ -66,6 +66,10 @@
}
@Override
+ public void setCallStrengthIcons(String slot, List<CallIndicatorIconState> states) {
+ }
+
+ @Override
public void setNoCallingIcons(String slot, List<CallIndicatorIconState> states) {
}
diff --git a/packages/SystemUI/tests/src/com/android/systemui/wmshell/BubblesTest.java b/packages/SystemUI/tests/src/com/android/systemui/wmshell/BubblesTest.java
index abc8da2..9fc1df7 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/wmshell/BubblesTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/wmshell/BubblesTest.java
@@ -17,6 +17,7 @@
package com.android.systemui.wmshell;
import static android.app.Notification.FLAG_BUBBLE;
+import static android.app.PendingIntent.FLAG_MUTABLE;
import static android.service.notification.NotificationListenerService.REASON_APP_CANCEL;
import static android.service.notification.NotificationListenerService.REASON_CANCEL;
import static android.service.notification.NotificationListenerService.REASON_CANCEL_ALL;
@@ -44,11 +45,19 @@
import android.app.INotificationManager;
import android.app.Notification;
import android.app.PendingIntent;
+import android.content.Context;
+import android.content.Intent;
+import android.content.pm.ApplicationInfo;
import android.content.pm.LauncherApps;
+import android.content.pm.PackageManager;
+import android.graphics.Rect;
+import android.graphics.drawable.Drawable;
+import android.graphics.drawable.Icon;
import android.hardware.display.AmbientDisplayConfiguration;
import android.hardware.face.FaceManager;
import android.os.Handler;
import android.os.PowerManager;
+import android.os.UserHandle;
import android.service.dreams.IDreamManager;
import android.service.notification.NotificationListenerService;
import android.service.notification.ZenModeConfig;
@@ -77,6 +86,7 @@
import com.android.systemui.statusbar.notification.NotificationFilter;
import com.android.systemui.statusbar.notification.collection.NotifPipeline;
import com.android.systemui.statusbar.notification.collection.NotificationEntry;
+import com.android.systemui.statusbar.notification.collection.NotificationEntryBuilder;
import com.android.systemui.statusbar.notification.collection.legacy.NotificationGroupManagerLegacy;
import com.android.systemui.statusbar.notification.row.ExpandableNotificationRow;
import com.android.systemui.statusbar.notification.row.NotificationTestHelper;
@@ -89,15 +99,18 @@
import com.android.systemui.statusbar.policy.ConfigurationController;
import com.android.systemui.statusbar.policy.HeadsUpManager;
import com.android.systemui.statusbar.policy.ZenModeController;
+import com.android.wm.shell.R;
import com.android.wm.shell.ShellTaskOrganizer;
import com.android.wm.shell.WindowManagerShellWrapper;
import com.android.wm.shell.bubbles.Bubble;
import com.android.wm.shell.bubbles.BubbleData;
import com.android.wm.shell.bubbles.BubbleDataRepository;
import com.android.wm.shell.bubbles.BubbleEntry;
+import com.android.wm.shell.bubbles.BubbleIconFactory;
import com.android.wm.shell.bubbles.BubbleLogger;
import com.android.wm.shell.bubbles.BubbleOverflow;
import com.android.wm.shell.bubbles.BubbleStackView;
+import com.android.wm.shell.bubbles.BubbleViewInfoTask;
import com.android.wm.shell.bubbles.Bubbles;
import com.android.wm.shell.common.FloatingContentCoordinator;
import com.android.wm.shell.common.ShellExecutor;
@@ -172,14 +185,17 @@
private NotificationRemoveInterceptor mRemoveInterceptor;
private NotificationTestHelper mNotificationTestHelper;
- private ExpandableNotificationRow mRow;
- private ExpandableNotificationRow mRow2;
- private ExpandableNotificationRow mRow3;
+ private NotificationEntry mRow;
+ private NotificationEntry mRow2;
+ private NotificationEntry mRow3;
private ExpandableNotificationRow mNonBubbleNotifRow;
private BubbleEntry mBubbleEntry;
private BubbleEntry mBubbleEntry2;
private BubbleEntry mBubbleEntry3;
+ private BubbleEntry mBubbleEntryUser11;
+ private BubbleEntry mBubbleEntry2User11;
+
@Mock
private Bubbles.BubbleExpandListener mBubbleExpandListener;
@Mock
@@ -245,14 +261,20 @@
mRow2 = mNotificationTestHelper.createBubble(mDeleteIntent);
mRow3 = mNotificationTestHelper.createBubble(mDeleteIntent);
mNonBubbleNotifRow = mNotificationTestHelper.createRow();
- mBubbleEntry = BubblesManager.notifToBubbleEntry(mRow.getEntry());
- mBubbleEntry2 = BubblesManager.notifToBubbleEntry(mRow2.getEntry());
- mBubbleEntry3 = BubblesManager.notifToBubbleEntry(mRow3.getEntry());
+ mBubbleEntry = BubblesManager.notifToBubbleEntry(mRow);
+ mBubbleEntry2 = BubblesManager.notifToBubbleEntry(mRow2);
+ mBubbleEntry3 = BubblesManager.notifToBubbleEntry(mRow3);
+
+ UserHandle handle = mock(UserHandle.class);
+ when(handle.getIdentifier()).thenReturn(11);
+ mBubbleEntryUser11 = BubblesManager.notifToBubbleEntry(
+ mNotificationTestHelper.createBubble(handle));
+ mBubbleEntry2User11 = BubblesManager.notifToBubbleEntry(
+ mNotificationTestHelper.createBubble(handle));
// Return non-null notification data from the NEM
when(mNotificationEntryManager
- .getActiveNotificationUnfiltered(mRow.getEntry().getKey())).thenReturn(
- mRow.getEntry());
+ .getActiveNotificationUnfiltered(mRow.getKey())).thenReturn(mRow);
mZenModeConfig.suppressedVisualEffects = 0;
when(mZenModeController.getConfig()).thenReturn(mZenModeConfig);
@@ -351,8 +373,8 @@
verify(mNotificationEntryManager).updateNotifications(any());
mBubbleController.removeBubble(
- mRow.getEntry().getKey(), Bubbles.DISMISS_USER_GESTURE);
- assertNull(mBubbleData.getBubbleInStackWithKey(mRow.getEntry().getKey()));
+ mRow.getKey(), Bubbles.DISMISS_USER_GESTURE);
+ assertNull(mBubbleData.getBubbleInStackWithKey(mRow.getKey()));
verify(mNotificationEntryManager, times(2)).updateNotifications(anyString());
assertFalse(mSysUiStateBubblesExpanded);
@@ -362,20 +384,20 @@
public void testPromoteBubble_autoExpand() throws Exception {
mBubbleController.updateBubble(mBubbleEntry2);
mBubbleController.updateBubble(mBubbleEntry);
- when(mNotificationEntryManager.getPendingOrActiveNotif(mRow.getEntry().getKey()))
- .thenReturn(mRow.getEntry());
- when(mNotificationEntryManager.getPendingOrActiveNotif(mRow2.getEntry().getKey()))
- .thenReturn(mRow2.getEntry());
+ when(mNotificationEntryManager.getPendingOrActiveNotif(mRow.getKey()))
+ .thenReturn(mRow);
+ when(mNotificationEntryManager.getPendingOrActiveNotif(mRow2.getKey()))
+ .thenReturn(mRow2);
mBubbleController.removeBubble(
- mRow.getEntry().getKey(), Bubbles.DISMISS_USER_GESTURE);
+ mRow.getKey(), Bubbles.DISMISS_USER_GESTURE);
- Bubble b = mBubbleData.getOverflowBubbleWithKey(mRow.getEntry().getKey());
+ Bubble b = mBubbleData.getOverflowBubbleWithKey(mRow.getKey());
assertThat(mBubbleData.getOverflowBubbles()).isEqualTo(ImmutableList.of(b));
verify(mNotificationEntryManager, never()).performRemoveNotification(
- eq(mRow.getEntry().getSbn()), any(), anyInt());
- assertThat(mRow.getEntry().isBubble()).isFalse();
+ eq(mRow.getSbn()), any(), anyInt());
+ assertThat(mRow.isBubble()).isFalse();
- Bubble b2 = mBubbleData.getBubbleInStackWithKey(mRow2.getEntry().getKey());
+ Bubble b2 = mBubbleData.getBubbleInStackWithKey(mRow2.getKey());
assertThat(mBubbleData.getSelectedBubble()).isEqualTo(b2);
mBubbleController.promoteBubbleFromOverflow(b);
@@ -393,19 +415,19 @@
mBubbleController.updateBubble(mBubbleEntry2);
mBubbleController.updateBubble(mBubbleEntry, /* suppressFlyout */
false, /* showInShade */ true);
- when(mNotificationEntryManager.getPendingOrActiveNotif(mRow.getEntry().getKey()))
- .thenReturn(mRow.getEntry());
- when(mNotificationEntryManager.getPendingOrActiveNotif(mRow2.getEntry().getKey()))
- .thenReturn(mRow2.getEntry());
+ when(mNotificationEntryManager.getPendingOrActiveNotif(mRow.getKey()))
+ .thenReturn(mRow);
+ when(mNotificationEntryManager.getPendingOrActiveNotif(mRow2.getKey()))
+ .thenReturn(mRow2);
mBubbleController.removeBubble(
- mRow.getEntry().getKey(), Bubbles.DISMISS_USER_GESTURE);
+ mRow.getKey(), Bubbles.DISMISS_USER_GESTURE);
mBubbleController.removeBubble(
- mRow.getEntry().getKey(), Bubbles.DISMISS_NOTIF_CANCEL);
+ mRow.getKey(), Bubbles.DISMISS_NOTIF_CANCEL);
verify(mNotificationEntryManager, times(1)).performRemoveNotification(
- eq(mRow.getEntry().getSbn()), any(), anyInt());
+ eq(mRow.getSbn()), any(), anyInt());
assertThat(mBubbleData.getOverflowBubbles()).isEmpty();
- assertFalse(mRow.getEntry().isBubble());
+ assertFalse(mRow.isBubble());
}
@Test
@@ -414,28 +436,28 @@
assertTrue(mBubbleController.hasBubbles());
mBubbleController.removeBubble(
- mRow.getEntry().getKey(), Bubbles.DISMISS_USER_CHANGED);
+ mRow.getKey(), Bubbles.DISMISS_USER_CHANGED);
verify(mNotificationEntryManager, never()).performRemoveNotification(
- eq(mRow.getEntry().getSbn()), any(), anyInt());
+ eq(mRow.getSbn()), any(), anyInt());
assertFalse(mBubbleController.hasBubbles());
assertFalse(mSysUiStateBubblesExpanded);
- assertTrue(mRow.getEntry().isBubble());
+ assertTrue(mRow.isBubble());
}
@Test
public void testDismissStack() {
mBubbleController.updateBubble(mBubbleEntry);
verify(mNotificationEntryManager, times(1)).updateNotifications(any());
- assertNotNull(mBubbleData.getBubbleInStackWithKey(mRow.getEntry().getKey()));
+ assertNotNull(mBubbleData.getBubbleInStackWithKey(mRow.getKey()));
mBubbleController.updateBubble(mBubbleEntry2);
verify(mNotificationEntryManager, times(2)).updateNotifications(any());
- assertNotNull(mBubbleData.getBubbleInStackWithKey(mRow2.getEntry().getKey()));
+ assertNotNull(mBubbleData.getBubbleInStackWithKey(mRow2.getKey()));
assertTrue(mBubbleController.hasBubbles());
mBubbleData.dismissAll(Bubbles.DISMISS_USER_GESTURE);
verify(mNotificationEntryManager, times(3)).updateNotifications(any());
- assertNull(mBubbleData.getBubbleInStackWithKey(mRow.getEntry().getKey()));
- assertNull(mBubbleData.getBubbleInStackWithKey(mRow2.getEntry().getKey()));
+ assertNull(mBubbleData.getBubbleInStackWithKey(mRow.getKey()));
+ assertNull(mBubbleData.getBubbleInStackWithKey(mRow2.getKey()));
assertFalse(mSysUiStateBubblesExpanded);
}
@@ -445,7 +467,7 @@
assertFalse(mBubbleController.isStackExpanded());
// Mark it as a bubble and add it explicitly
- mEntryListener.onPendingEntryAdded(mRow.getEntry());
+ mEntryListener.onPendingEntryAdded(mRow);
mBubbleController.updateBubble(mBubbleEntry);
// We should have bubbles & their notifs should not be suppressed
@@ -457,7 +479,7 @@
BubbleStackView stackView = mBubbleController.getStackView();
mBubbleData.setExpanded(true);
assertTrue(mBubbleController.isStackExpanded());
- verify(mBubbleExpandListener).onBubbleExpandChanged(true, mRow.getEntry().getKey());
+ verify(mBubbleExpandListener).onBubbleExpandChanged(true, mRow.getKey());
assertTrue(mSysUiStateBubblesExpanded);
@@ -467,7 +489,7 @@
// Collapse
mBubbleController.collapseStack();
- verify(mBubbleExpandListener).onBubbleExpandChanged(false, mRow.getEntry().getKey());
+ verify(mBubbleExpandListener).onBubbleExpandChanged(false, mRow.getKey());
assertFalse(mBubbleController.isStackExpanded());
assertFalse(mSysUiStateBubblesExpanded);
@@ -477,8 +499,8 @@
@Ignore("Currently broken.")
public void testCollapseAfterChangingExpandedBubble() {
// Mark it as a bubble and add it explicitly
- mEntryListener.onPendingEntryAdded(mRow.getEntry());
- mEntryListener.onPendingEntryAdded(mRow2.getEntry());
+ mEntryListener.onPendingEntryAdded(mRow);
+ mEntryListener.onPendingEntryAdded(mRow2);
mBubbleController.updateBubble(mBubbleEntry);
mBubbleController.updateBubble(mBubbleEntry2);
@@ -494,30 +516,30 @@
mBubbleData.setExpanded(true);
assertTrue(mBubbleController.isStackExpanded());
verify(mBubbleExpandListener, atLeastOnce()).onBubbleExpandChanged(
- true, mRow2.getEntry().getKey());
+ true, mRow2.getKey());
assertTrue(mSysUiStateBubblesExpanded);
// Last added is the one that is expanded
- assertEquals(mRow2.getEntry().getKey(), mBubbleData.getSelectedBubble().getKey());
+ assertEquals(mRow2.getKey(), mBubbleData.getSelectedBubble().getKey());
assertTrue(mBubbleController.isBubbleNotificationSuppressedFromShade(
mBubbleEntry2.getKey(), mBubbleEntry2.getGroupKey()));
// Switch which bubble is expanded
mBubbleData.setSelectedBubble(mBubbleData.getBubbleInStackWithKey(
- mRow.getEntry().getKey()));
+ mRow.getKey()));
mBubbleData.setExpanded(true);
- assertEquals(mRow.getEntry().getKey(), mBubbleData.getBubbleInStackWithKey(
+ assertEquals(mRow.getKey(), mBubbleData.getBubbleInStackWithKey(
stackView.getExpandedBubble().getKey()).getKey());
assertTrue(mBubbleController.isBubbleNotificationSuppressedFromShade(
mBubbleEntry.getKey(), mBubbleEntry.getGroupKey()));
// collapse for previous bubble
verify(mBubbleExpandListener, atLeastOnce()).onBubbleExpandChanged(
- false, mRow2.getEntry().getKey());
+ false, mRow2.getKey());
// expand for selected bubble
verify(mBubbleExpandListener, atLeastOnce()).onBubbleExpandChanged(
- true, mRow.getEntry().getKey());
+ true, mRow.getKey());
// Collapse
mBubbleController.collapseStack();
@@ -529,7 +551,7 @@
@Test
public void testExpansionRemovesShowInShadeAndDot() {
// Mark it as a bubble and add it explicitly
- mEntryListener.onPendingEntryAdded(mRow.getEntry());
+ mEntryListener.onPendingEntryAdded(mRow);
mBubbleController.updateBubble(mBubbleEntry);
// We should have bubbles & their notifs should not be suppressed
@@ -538,12 +560,12 @@
mBubbleEntry.getKey(), mBubbleEntry.getGroupKey()));
mTestableLooper.processAllMessages();
- assertTrue(mBubbleData.getBubbleInStackWithKey(mRow.getEntry().getKey()).showDot());
+ assertTrue(mBubbleData.getBubbleInStackWithKey(mRow.getKey()).showDot());
// Expand
mBubbleData.setExpanded(true);
assertTrue(mBubbleController.isStackExpanded());
- verify(mBubbleExpandListener).onBubbleExpandChanged(true, mRow.getEntry().getKey());
+ verify(mBubbleExpandListener).onBubbleExpandChanged(true, mRow.getKey());
assertTrue(mSysUiStateBubblesExpanded);
@@ -551,13 +573,13 @@
assertTrue(mBubbleController.isBubbleNotificationSuppressedFromShade(
mBubbleEntry.getKey(), mBubbleEntry.getGroupKey()));
// Notif shouldn't show dot after expansion
- assertFalse(mBubbleData.getBubbleInStackWithKey(mRow.getEntry().getKey()).showDot());
+ assertFalse(mBubbleData.getBubbleInStackWithKey(mRow.getKey()).showDot());
}
@Test
public void testUpdateWhileExpanded_DoesntChangeShowInShadeAndDot() {
// Mark it as a bubble and add it explicitly
- mEntryListener.onPendingEntryAdded(mRow.getEntry());
+ mEntryListener.onPendingEntryAdded(mRow);
mBubbleController.updateBubble(mBubbleEntry);
// We should have bubbles & their notifs should not be suppressed
@@ -566,12 +588,12 @@
mBubbleEntry.getKey(), mBubbleEntry.getGroupKey()));
mTestableLooper.processAllMessages();
- assertTrue(mBubbleData.getBubbleInStackWithKey(mRow.getEntry().getKey()).showDot());
+ assertTrue(mBubbleData.getBubbleInStackWithKey(mRow.getKey()).showDot());
// Expand
mBubbleData.setExpanded(true);
assertTrue(mBubbleController.isStackExpanded());
- verify(mBubbleExpandListener).onBubbleExpandChanged(true, mRow.getEntry().getKey());
+ verify(mBubbleExpandListener).onBubbleExpandChanged(true, mRow.getKey());
assertTrue(mSysUiStateBubblesExpanded);
@@ -579,24 +601,24 @@
assertTrue(mBubbleController.isBubbleNotificationSuppressedFromShade(
mBubbleEntry.getKey(), mBubbleEntry.getGroupKey()));
// Notif shouldn't show dot after expansion
- assertFalse(mBubbleData.getBubbleInStackWithKey(mRow.getEntry().getKey()).showDot());
+ assertFalse(mBubbleData.getBubbleInStackWithKey(mRow.getKey()).showDot());
// Send update
- mEntryListener.onPreEntryUpdated(mRow.getEntry());
+ mEntryListener.onPreEntryUpdated(mRow);
// Nothing should have changed
// Notif is suppressed after expansion
assertTrue(mBubbleController.isBubbleNotificationSuppressedFromShade(
mBubbleEntry.getKey(), mBubbleEntry.getGroupKey()));
// Notif shouldn't show dot after expansion
- assertFalse(mBubbleData.getBubbleInStackWithKey(mRow.getEntry().getKey()).showDot());
+ assertFalse(mBubbleData.getBubbleInStackWithKey(mRow.getKey()).showDot());
}
@Test
public void testRemoveLastExpanded_selectsOverflow() {
// Mark it as a bubble and add it explicitly
- mEntryListener.onPendingEntryAdded(mRow.getEntry());
- mEntryListener.onPendingEntryAdded(mRow2.getEntry());
+ mEntryListener.onPendingEntryAdded(mRow);
+ mEntryListener.onPendingEntryAdded(mRow2);
mBubbleController.updateBubble(mBubbleEntry);
mBubbleController.updateBubble(mBubbleEntry2);
@@ -607,10 +629,10 @@
assertTrue(mSysUiStateBubblesExpanded);
assertTrue(mBubbleController.isStackExpanded());
- verify(mBubbleExpandListener).onBubbleExpandChanged(true, mRow2.getEntry().getKey());
+ verify(mBubbleExpandListener).onBubbleExpandChanged(true, mRow2.getKey());
// Last added is the one that is expanded
- assertEquals(mRow2.getEntry().getKey(), mBubbleData.getBubbleInStackWithKey(
+ assertEquals(mRow2.getKey(), mBubbleData.getBubbleInStackWithKey(
stackView.getExpandedBubble().getKey()).getKey());
assertTrue(mBubbleController.isBubbleNotificationSuppressedFromShade(
mBubbleEntry2.getKey(), mBubbleEntry2.getGroupKey()));
@@ -620,12 +642,12 @@
mBubbleData.getBubbleInStackWithKey(
stackView.getExpandedBubble().getKey()).getKey(),
Bubbles.DISMISS_USER_GESTURE);
- verify(mBubbleExpandListener).onBubbleExpandChanged(false, mRow2.getEntry().getKey());
+ verify(mBubbleExpandListener).onBubbleExpandChanged(false, mRow2.getKey());
// Make sure first bubble is selected
- assertEquals(mRow.getEntry().getKey(), mBubbleData.getBubbleInStackWithKey(
+ assertEquals(mRow.getKey(), mBubbleData.getBubbleInStackWithKey(
stackView.getExpandedBubble().getKey()).getKey());
- verify(mBubbleExpandListener).onBubbleExpandChanged(true, mRow.getEntry().getKey());
+ verify(mBubbleExpandListener).onBubbleExpandChanged(true, mRow.getKey());
// Dismiss that one
mBubbleController.removeBubble(
@@ -643,7 +665,7 @@
@Test
public void testRemoveLastExpandedEmptyOverflow_collapses() {
// Mark it as a bubble and add it explicitly
- mEntryListener.onPendingEntryAdded(mRow.getEntry());
+ mEntryListener.onPendingEntryAdded(mRow);
mBubbleController.updateBubble(mBubbleEntry);
// Expand
@@ -652,7 +674,7 @@
assertTrue(mSysUiStateBubblesExpanded);
assertTrue(mBubbleController.isStackExpanded());
- verify(mBubbleExpandListener).onBubbleExpandChanged(true, mRow.getEntry().getKey());
+ verify(mBubbleExpandListener).onBubbleExpandChanged(true, mRow.getKey());
// Block the bubble so it won't be in the overflow
mBubbleController.removeBubble(
@@ -660,10 +682,10 @@
stackView.getExpandedBubble().getKey()).getKey(),
Bubbles.DISMISS_BLOCKED);
- verify(mBubbleExpandListener).onBubbleExpandChanged(false, mRow.getEntry().getKey());
+ verify(mBubbleExpandListener).onBubbleExpandChanged(false, mRow.getKey());
// We should be collapsed
- verify(mBubbleExpandListener).onBubbleExpandChanged(false, mRow.getEntry().getKey());
+ verify(mBubbleExpandListener).onBubbleExpandChanged(false, mRow.getKey());
assertFalse(mBubbleController.hasBubbles());
assertFalse(mSysUiStateBubblesExpanded);
}
@@ -671,16 +693,16 @@
@Test
public void testAutoExpand_fails_noFlag() {
assertFalse(mBubbleController.isStackExpanded());
- setMetadataFlags(mRow.getEntry(),
+ setMetadataFlags(mRow,
Notification.BubbleMetadata.FLAG_AUTO_EXPAND_BUBBLE, false /* enableFlag */);
// Add the auto expand bubble
- mEntryListener.onPendingEntryAdded(mRow.getEntry());
+ mEntryListener.onPendingEntryAdded(mRow);
mBubbleController.updateBubble(mBubbleEntry);
// Expansion shouldn't change
verify(mBubbleExpandListener, never()).onBubbleExpandChanged(false /* expanded */,
- mRow.getEntry().getKey());
+ mRow.getKey());
assertFalse(mBubbleController.isStackExpanded());
assertFalse(mSysUiStateBubblesExpanded);
@@ -688,16 +710,16 @@
@Test
public void testAutoExpand_succeeds_withFlag() {
- setMetadataFlags(mRow.getEntry(),
+ setMetadataFlags(mRow,
Notification.BubbleMetadata.FLAG_AUTO_EXPAND_BUBBLE, true /* enableFlag */);
// Add the auto expand bubble
- mEntryListener.onPendingEntryAdded(mRow.getEntry());
+ mEntryListener.onPendingEntryAdded(mRow);
mBubbleController.updateBubble(mBubbleEntry);
// Expansion should change
verify(mBubbleExpandListener).onBubbleExpandChanged(true /* expanded */,
- mRow.getEntry().getKey());
+ mRow.getKey());
assertTrue(mBubbleController.isStackExpanded());
assertTrue(mSysUiStateBubblesExpanded);
@@ -705,19 +727,19 @@
@Test
public void testSuppressNotif_onInitialNotif() {
- setMetadataFlags(mRow.getEntry(),
+ setMetadataFlags(mRow,
Notification.BubbleMetadata.FLAG_SUPPRESS_NOTIFICATION, true /* enableFlag */);
// Add the suppress notif bubble
- mEntryListener.onPendingEntryAdded(mRow.getEntry());
+ mEntryListener.onPendingEntryAdded(mRow);
mBubbleController.updateBubble(mBubbleEntry);
// Notif should be suppressed because we were foreground
assertTrue(mBubbleController.isBubbleNotificationSuppressedFromShade(
mBubbleEntry.getKey(), mBubbleEntry.getGroupKey()));
// Dot + flyout is hidden because notif is suppressed
- assertFalse(mBubbleData.getBubbleInStackWithKey(mRow.getEntry().getKey()).showDot());
- assertFalse(mBubbleData.getBubbleInStackWithKey(mRow.getEntry().getKey()).showFlyout());
+ assertFalse(mBubbleData.getBubbleInStackWithKey(mRow.getKey()).showDot());
+ assertFalse(mBubbleData.getBubbleInStackWithKey(mRow.getKey()).showFlyout());
assertFalse(mSysUiStateBubblesExpanded);
}
@@ -730,10 +752,10 @@
assertFalse(mBubbleController.isBubbleNotificationSuppressedFromShade(
mBubbleEntry.getKey(), mBubbleEntry.getGroupKey()));
// Should show dot
- assertTrue(mBubbleData.getBubbleInStackWithKey(mRow.getEntry().getKey()).showDot());
+ assertTrue(mBubbleData.getBubbleInStackWithKey(mRow.getKey()).showDot());
// Update to suppress notif
- setMetadataFlags(mRow.getEntry(),
+ setMetadataFlags(mRow,
Notification.BubbleMetadata.FLAG_SUPPRESS_NOTIFICATION, true /* enableFlag */);
mBubbleController.updateBubble(mBubbleEntry);
@@ -741,22 +763,20 @@
assertTrue(mBubbleController.isBubbleNotificationSuppressedFromShade(
mBubbleEntry.getKey(), mBubbleEntry.getGroupKey()));
// Dot + flyout is hidden because notif is suppressed
- assertFalse(mBubbleData.getBubbleInStackWithKey(mRow.getEntry().getKey()).showDot());
- assertFalse(mBubbleData.getBubbleInStackWithKey(mRow.getEntry().getKey()).showFlyout());
+ assertFalse(mBubbleData.getBubbleInStackWithKey(mRow.getKey()).showDot());
+ assertFalse(mBubbleData.getBubbleInStackWithKey(mRow.getKey()).showFlyout());
assertFalse(mSysUiStateBubblesExpanded);
}
@Test
public void testExpandStackAndSelectBubble_removedFirst() {
- final String key = mRow.getEntry().getKey();
-
- mEntryListener.onPendingEntryAdded(mRow.getEntry());
+ mEntryListener.onPendingEntryAdded(mRow);
mBubbleController.updateBubble(mBubbleEntry);
// Simulate notification cancellation.
mRemoveInterceptor.onNotificationRemoveRequested(
- mRow.getEntry().getKey(), mRow.getEntry(), REASON_APP_CANCEL);
+ mRow.getKey(), mRow, REASON_APP_CANCEL);
mBubbleController.expandStackAndSelectBubble(mBubbleEntry);
@@ -765,12 +785,12 @@
@Test
public void testMarkNewNotificationAsShowInShade() {
- mEntryListener.onPendingEntryAdded(mRow.getEntry());
+ mEntryListener.onPendingEntryAdded(mRow);
assertFalse(mBubbleController.isBubbleNotificationSuppressedFromShade(
mBubbleEntry.getKey(), mBubbleEntry.getGroupKey()));
mTestableLooper.processAllMessages();
- assertTrue(mBubbleData.getBubbleInStackWithKey(mRow.getEntry().getKey()).showDot());
+ assertTrue(mBubbleData.getBubbleInStackWithKey(mRow.getKey()).showDot());
}
@Test
@@ -784,7 +804,7 @@
@Test
public void testDeleteIntent_removeBubble_aged() throws PendingIntent.CanceledException {
mBubbleController.updateBubble(mBubbleEntry);
- mBubbleController.removeBubble(mRow.getEntry().getKey(), Bubbles.DISMISS_AGED);
+ mBubbleController.removeBubble(mRow.getKey(), Bubbles.DISMISS_AGED);
verify(mDeleteIntent, never()).send();
}
@@ -792,7 +812,7 @@
public void testDeleteIntent_removeBubble_user() throws PendingIntent.CanceledException {
mBubbleController.updateBubble(mBubbleEntry);
mBubbleController.removeBubble(
- mRow.getEntry().getKey(), Bubbles.DISMISS_USER_GESTURE);
+ mRow.getKey(), Bubbles.DISMISS_USER_GESTURE);
verify(mDeleteIntent, times(1)).send();
}
@@ -810,11 +830,11 @@
mBubbleController.updateBubble(mBubbleEntry);
assertTrue(mBubbleController.hasBubbles());
- mRow.getEntry().getSbn().getNotification().flags &= ~FLAG_BUBBLE;
+ mRow.getSbn().getNotification().flags &= ~FLAG_BUBBLE;
NotificationListenerService.Ranking ranking = new RankingBuilder(
- mRow.getEntry().getRanking()).setCanBubble(false).build();
- mRow.getEntry().setRanking(ranking);
- mEntryListener.onPreEntryUpdated(mRow.getEntry());
+ mRow.getRanking()).setCanBubble(false).build();
+ mRow.setRanking(ranking);
+ mEntryListener.onPreEntryUpdated(mRow);
assertFalse(mBubbleController.hasBubbles());
verify(mDeleteIntent, never()).send();
@@ -822,13 +842,13 @@
@Test
public void testRemoveBubble_succeeds_appCancel() {
- mEntryListener.onPendingEntryAdded(mRow.getEntry());
+ mEntryListener.onPendingEntryAdded(mRow);
mBubbleController.updateBubble(mBubbleEntry);
assertTrue(mBubbleController.hasBubbles());
boolean intercepted = mRemoveInterceptor.onNotificationRemoveRequested(
- mRow.getEntry().getKey(), mRow.getEntry(), REASON_APP_CANCEL);
+ mRow.getKey(), mRow, REASON_APP_CANCEL);
// Cancels always remove so no need to intercept
assertFalse(intercepted);
@@ -836,19 +856,19 @@
@Test
public void testRemoveBubble_entryListenerRemove() {
- mEntryListener.onPendingEntryAdded(mRow.getEntry());
+ mEntryListener.onPendingEntryAdded(mRow);
mBubbleController.updateBubble(mBubbleEntry);
assertTrue(mBubbleController.hasBubbles());
// Removes the notification
- mEntryListener.onEntryRemoved(mRow.getEntry(), null, false, REASON_APP_CANCEL);
+ mEntryListener.onEntryRemoved(mRow, null, false, REASON_APP_CANCEL);
assertFalse(mBubbleController.hasBubbles());
}
@Test
public void removeBubble_clearAllIntercepted() {
- mEntryListener.onPendingEntryAdded(mRow.getEntry());
+ mEntryListener.onPendingEntryAdded(mRow);
mBubbleController.updateBubble(mBubbleEntry);
assertTrue(mBubbleController.hasBubbles());
@@ -856,7 +876,7 @@
mBubbleEntry.getKey(), mBubbleEntry.getGroupKey()));
boolean intercepted = mRemoveInterceptor.onNotificationRemoveRequested(
- mRow.getEntry().getKey(), mRow.getEntry(), REASON_CANCEL_ALL);
+ mRow.getKey(), mRow, REASON_CANCEL_ALL);
// Intercept!
assertTrue(intercepted);
@@ -867,7 +887,7 @@
@Test
public void removeBubble_userDismissNotifIntercepted() {
- mEntryListener.onPendingEntryAdded(mRow.getEntry());
+ mEntryListener.onPendingEntryAdded(mRow);
mBubbleController.updateBubble(mBubbleEntry);
assertTrue(mBubbleController.hasBubbles());
@@ -875,7 +895,7 @@
mBubbleEntry.getKey(), mBubbleEntry.getGroupKey()));
boolean intercepted = mRemoveInterceptor.onNotificationRemoveRequested(
- mRow.getEntry().getKey(), mRow.getEntry(), REASON_CANCEL);
+ mRow.getKey(), mRow, REASON_CANCEL);
// Intercept!
assertTrue(intercepted);
@@ -887,7 +907,7 @@
@Test
public void removeNotif_inOverflow_intercepted() {
// Get bubble with notif in shade.
- mEntryListener.onPendingEntryAdded(mRow.getEntry());
+ mEntryListener.onPendingEntryAdded(mRow);
mBubbleController.updateBubble(mBubbleEntry);
assertTrue(mBubbleController.hasBubbles());
assertFalse(mBubbleController.isBubbleNotificationSuppressedFromShade(
@@ -895,11 +915,11 @@
// Dismiss the bubble into overflow.
mBubbleController.removeBubble(
- mRow.getEntry().getKey(), Bubbles.DISMISS_USER_GESTURE);
+ mRow.getKey(), Bubbles.DISMISS_USER_GESTURE);
assertFalse(mBubbleController.hasBubbles());
boolean intercepted = mRemoveInterceptor.onNotificationRemoveRequested(
- mRow.getEntry().getKey(), mRow.getEntry(), REASON_CANCEL);
+ mRow.getKey(), mRow, REASON_CANCEL);
// Notif is no longer a bubble, but still in overflow, so we intercept removal.
assertTrue(intercepted);
@@ -908,7 +928,7 @@
@Test
public void removeNotif_notInOverflow_notIntercepted() {
// Get bubble with notif in shade.
- mEntryListener.onPendingEntryAdded(mRow.getEntry());
+ mEntryListener.onPendingEntryAdded(mRow);
mBubbleController.updateBubble(mBubbleEntry);
assertTrue(mBubbleController.hasBubbles());
@@ -916,11 +936,11 @@
mBubbleEntry.getKey(), mBubbleEntry.getGroupKey()));
mBubbleController.removeBubble(
- mRow.getEntry().getKey(), Bubbles.DISMISS_NO_LONGER_BUBBLE);
+ mRow.getKey(), Bubbles.DISMISS_NO_LONGER_BUBBLE);
assertFalse(mBubbleController.hasBubbles());
boolean intercepted = mRemoveInterceptor.onNotificationRemoveRequested(
- mRow.getEntry().getKey(), mRow.getEntry(), REASON_CANCEL);
+ mRow.getKey(), mRow, REASON_CANCEL);
// Notif is no longer a bubble, so we should not intercept removal.
assertFalse(intercepted);
@@ -934,25 +954,25 @@
mBubbleEntry2, /* suppressFlyout */ false, /* showInShade */ false);
mBubbleController.updateBubble(
mBubbleEntry3, /* suppressFlyout */ false, /* showInShade */ false);
- when(mNotificationEntryManager.getPendingOrActiveNotif(mRow.getEntry().getKey()))
- .thenReturn(mRow.getEntry());
- when(mNotificationEntryManager.getPendingOrActiveNotif(mRow2.getEntry().getKey()))
- .thenReturn(mRow2.getEntry());
- when(mNotificationEntryManager.getPendingOrActiveNotif(mRow3.getEntry().getKey()))
- .thenReturn(mRow3.getEntry());
+ when(mNotificationEntryManager.getPendingOrActiveNotif(mRow.getKey()))
+ .thenReturn(mRow);
+ when(mNotificationEntryManager.getPendingOrActiveNotif(mRow2.getKey()))
+ .thenReturn(mRow2);
+ when(mNotificationEntryManager.getPendingOrActiveNotif(mRow3.getKey()))
+ .thenReturn(mRow3);
assertEquals(mBubbleData.getBubbles().size(), 3);
mBubbleData.setMaxOverflowBubbles(1);
mBubbleController.removeBubble(
- mRow.getEntry().getKey(), Bubbles.DISMISS_USER_GESTURE);
+ mRow.getKey(), Bubbles.DISMISS_USER_GESTURE);
assertEquals(mBubbleData.getBubbles().size(), 2);
assertEquals(mBubbleData.getOverflowBubbles().size(), 1);
mBubbleController.removeBubble(
- mRow2.getEntry().getKey(), Bubbles.DISMISS_USER_GESTURE);
+ mRow2.getKey(), Bubbles.DISMISS_USER_GESTURE);
// Overflow max of 1 is reached; mRow is oldest, so it gets removed
verify(mNotificationEntryManager, times(1)).performRemoveNotification(
- eq(mRow.getEntry().getSbn()), any(), eq(REASON_CANCEL));
+ eq(mRow.getSbn()), any(), eq(REASON_CANCEL));
assertEquals(mBubbleData.getBubbles().size(), 1);
assertEquals(mBubbleData.getOverflowBubbles().size(), 1);
}
@@ -963,14 +983,14 @@
mock(Bubbles.SuppressionChangedListener.class);
mBubbleData.setSuppressionChangedListener(listener);
- mEntryListener.onPendingEntryAdded(mRow.getEntry());
+ mEntryListener.onPendingEntryAdded(mRow);
assertTrue(mBubbleController.hasBubbles());
assertFalse(mBubbleController.isBubbleNotificationSuppressedFromShade(
mBubbleEntry.getKey(), mBubbleEntry.getGroupKey()));
mRemoveInterceptor.onNotificationRemoveRequested(
- mRow.getEntry().getKey(), mRow.getEntry(), REASON_CANCEL);
+ mRow.getKey(), mRow, REASON_CANCEL);
// Should update show in shade state
assertTrue(mBubbleController.isBubbleNotificationSuppressedFromShade(
@@ -978,7 +998,7 @@
// Should notify delegate that shade state changed
verify(listener).onBubbleNotificationSuppressionChange(
- mBubbleData.getBubbleInStackWithKey(mRow.getEntry().getKey()));
+ mBubbleData.getBubbleInStackWithKey(mRow.getKey()));
}
@Test
@@ -987,7 +1007,7 @@
mock(Bubbles.SuppressionChangedListener.class);
mBubbleData.setSuppressionChangedListener(listener);
- mEntryListener.onPendingEntryAdded(mRow.getEntry());
+ mEntryListener.onPendingEntryAdded(mRow);
assertTrue(mBubbleController.hasBubbles());
assertFalse(mBubbleController.isBubbleNotificationSuppressedFromShade(
@@ -1001,7 +1021,7 @@
// Should notify delegate that shade state changed
verify(listener).onBubbleNotificationSuppressionChange(
- mBubbleData.getBubbleInStackWithKey(mRow.getEntry().getKey()));
+ mBubbleData.getBubbleInStackWithKey(mRow.getKey()));
}
@Test
@@ -1094,14 +1114,116 @@
assertTrue(mBubbleController.hasBubbles());
// Overflow it
- mBubbleData.dismissBubbleWithKey(mRow.getEntry().getKey(),
+ mBubbleData.dismissBubbleWithKey(mRow.getKey(),
Bubbles.DISMISS_USER_GESTURE);
- assertThat(mBubbleData.hasBubbleInStackWithKey(mRow.getEntry().getKey())).isFalse();
- assertThat(mBubbleData.hasOverflowBubbleWithKey(mRow.getEntry().getKey())).isTrue();
+ assertThat(mBubbleData.hasBubbleInStackWithKey(mRow.getKey())).isFalse();
+ assertThat(mBubbleData.hasOverflowBubbleWithKey(mRow.getKey())).isTrue();
// Test
mBubbleController.updateBubble(mBubbleEntry);
- assertThat(mBubbleData.hasBubbleInStackWithKey(mRow.getEntry().getKey())).isFalse();
+ assertThat(mBubbleData.hasBubbleInStackWithKey(mRow.getKey())).isFalse();
+ }
+
+ /**
+ * Verifies that when the user changes, the bubbles in the overflow list is cleared. Doesn't
+ * test the loading from the repository which would be a nice thing to add.
+ */
+ @Test
+ public void testOnUserChanged_overflowState() {
+ int firstUserId = mBubbleEntry.getStatusBarNotification().getUser().getIdentifier();
+ int secondUserId = mBubbleEntryUser11.getStatusBarNotification().getUser().getIdentifier();
+
+ mBubbleController.updateBubble(mBubbleEntry);
+ mBubbleController.updateBubble(mBubbleEntry2);
+ assertTrue(mBubbleController.hasBubbles());
+ mBubbleData.dismissAll(Bubbles.DISMISS_USER_GESTURE);
+
+ // Verify these are in the overflow
+ assertThat(mBubbleData.getOverflowBubbleWithKey(mBubbleEntry.getKey())).isNotNull();
+ assertThat(mBubbleData.getOverflowBubbleWithKey(mBubbleEntry2.getKey())).isNotNull();
+
+ // Switch users
+ mBubbleController.onUserChanged(secondUserId);
+ assertThat(mBubbleData.getOverflowBubbles()).isEmpty();
+
+ // Give this user some bubbles
+ mBubbleController.updateBubble(mBubbleEntryUser11);
+ mBubbleController.updateBubble(mBubbleEntry2User11);
+ assertTrue(mBubbleController.hasBubbles());
+ mBubbleData.dismissAll(Bubbles.DISMISS_USER_GESTURE);
+
+ // Verify these are in the overflow
+ assertThat(mBubbleData.getOverflowBubbleWithKey(mBubbleEntryUser11.getKey())).isNotNull();
+ assertThat(mBubbleData.getOverflowBubbleWithKey(mBubbleEntry2User11.getKey())).isNotNull();
+ }
+
+
+ /**
+ * Verifies that the package manager for the user is used when loading info for the bubble.
+ */
+ @Test
+ public void test_bubbleViewInfoGetPackageForUser() throws Exception {
+ final int workProfileUserId = 10;
+ final UserHandle workUser = new UserHandle(workProfileUserId);
+ final String workPkg = "work.pkg";
+
+ final Bubble bubble = createBubble(workProfileUserId, workPkg);
+ assertEquals(workProfileUserId, bubble.getUser().getIdentifier());
+
+ final Context context = setUpContextWithPackageManager(workPkg, null /* AppInfo */);
+ when(context.getResources()).thenReturn(mContext.getResources());
+ final Context userContext = setUpContextWithPackageManager(workPkg,
+ mock(ApplicationInfo.class));
+
+ // If things are working correctly, StatusBar.getPackageManagerForUser will call this
+ when(context.createPackageContextAsUser(eq(workPkg), anyInt(), eq(workUser)))
+ .thenReturn(userContext);
+
+ BubbleViewInfoTask.BubbleViewInfo info = BubbleViewInfoTask.BubbleViewInfo.populate(context,
+ mBubbleController,
+ mBubbleController.getStackView(),
+ new BubbleIconFactory(mContext),
+ bubble,
+ true /* skipInflation */);
+ verify(userContext, times(1)).getPackageManager();
+ verify(context, times(1)).createPackageContextAsUser(eq(workPkg),
+ eq(Context.CONTEXT_RESTRICTED),
+ eq(workUser));
+ assertNotNull(info);
+ }
+
+ /** Creates a bubble using the userId and package. */
+ private Bubble createBubble(int userId, String pkg) {
+ final UserHandle userHandle = new UserHandle(userId);
+ NotificationEntry workEntry = new NotificationEntryBuilder()
+ .setPkg(pkg)
+ .setUser(userHandle)
+ .build();
+ workEntry.setBubbleMetadata(getMetadata());
+ workEntry.setFlagBubble(true);
+
+ return new Bubble(BubblesManager.notifToBubbleEntry(workEntry),
+ null,
+ mock(Bubbles.PendingIntentCanceledListener.class), new SyncExecutor());
+ }
+
+ /** Creates a context that will return a PackageManager with specific AppInfo. */
+ private Context setUpContextWithPackageManager(String pkg, ApplicationInfo info)
+ throws Exception {
+ final PackageManager pm = mock(PackageManager.class);
+ when(pm.getApplicationInfo(eq(pkg), anyInt())).thenReturn(info);
+
+ if (info != null) {
+ Drawable d = mock(Drawable.class);
+ when(d.getBounds()).thenReturn(new Rect());
+ when(pm.getApplicationIcon(anyString())).thenReturn(d);
+ when(pm.getUserBadgedIcon(any(), any())).thenReturn(d);
+ }
+
+ final Context context = mock(Context.class);
+ when(context.getPackageName()).thenReturn(pkg);
+ when(context.getPackageManager()).thenReturn(pm);
+ return context;
}
/**
@@ -1120,4 +1242,13 @@
}
bubbleMetadata.setFlags(flags);
}
+
+ private Notification.BubbleMetadata getMetadata() {
+ Intent target = new Intent(mContext, BubblesTestActivity.class);
+ PendingIntent bubbleIntent = PendingIntent.getActivity(mContext, 0, target, FLAG_MUTABLE);
+
+ return new Notification.BubbleMetadata.Builder(bubbleIntent,
+ Icon.createWithResource(mContext, R.drawable.bubble_ic_create_bubble))
+ .build();
+ }
}
diff --git a/packages/SystemUI/tests/src/com/android/systemui/wmshell/NewNotifPipelineBubblesTest.java b/packages/SystemUI/tests/src/com/android/systemui/wmshell/NewNotifPipelineBubblesTest.java
index 1ba7f8a..89825d2 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/wmshell/NewNotifPipelineBubblesTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/wmshell/NewNotifPipelineBubblesTest.java
@@ -158,8 +158,8 @@
private NotificationShadeWindowControllerImpl mNotificationShadeWindowController;
private NotifCollectionListener mEntryListener;
private NotificationTestHelper mNotificationTestHelper;
- private ExpandableNotificationRow mRow;
- private ExpandableNotificationRow mRow2;
+ private NotificationEntry mRow;
+ private NotificationEntry mRow2;
private ExpandableNotificationRow mNonBubbleNotifRow;
private BubbleEntry mBubbleEntry;
private BubbleEntry mBubbleEntry2;
@@ -224,8 +224,8 @@
mRow = mNotificationTestHelper.createBubble(mDeleteIntent);
mRow2 = mNotificationTestHelper.createBubble(mDeleteIntent);
mNonBubbleNotifRow = mNotificationTestHelper.createRow();
- mBubbleEntry = BubblesManager.notifToBubbleEntry(mRow.getEntry());
- mBubbleEntry2 = BubblesManager.notifToBubbleEntry(mRow2.getEntry());
+ mBubbleEntry = BubblesManager.notifToBubbleEntry(mRow);
+ mBubbleEntry2 = BubblesManager.notifToBubbleEntry(mRow2);
mZenModeConfig.suppressedVisualEffects = 0;
when(mZenModeController.getConfig()).thenReturn(mZenModeConfig);
@@ -306,19 +306,19 @@
@Test
public void testRemoveBubble() {
mBubbleController.updateBubble(mBubbleEntry);
- assertNotNull(mBubbleData.getBubbleInStackWithKey(mRow.getEntry().getKey()));
+ assertNotNull(mBubbleData.getBubbleInStackWithKey(mRow.getKey()));
assertTrue(mBubbleController.hasBubbles());
verify(mNotifCallback, times(1)).invalidateNotifications(anyString());
mBubbleController.removeBubble(
- mRow.getEntry().getKey(), Bubbles.DISMISS_USER_GESTURE);
- assertNull(mBubbleData.getBubbleInStackWithKey(mRow.getEntry().getKey()));
+ mRow.getKey(), Bubbles.DISMISS_USER_GESTURE);
+ assertNull(mBubbleData.getBubbleInStackWithKey(mRow.getKey()));
verify(mNotifCallback, times(2)).invalidateNotifications(anyString());
}
@Test
public void testRemoveBubble_withDismissedNotif_inOverflow() {
- mEntryListener.onEntryAdded(mRow.getEntry());
+ mEntryListener.onEntryAdded(mRow);
mBubbleController.updateBubble(mBubbleEntry);
assertTrue(mBubbleController.hasBubbles());
@@ -326,40 +326,40 @@
mBubbleEntry.getKey(), mBubbleEntry.getGroupKey()));
// Make it look like dismissed notif
- mBubbleData.getBubbleInStackWithKey(mRow.getEntry().getKey()).setSuppressNotification(true);
+ mBubbleData.getBubbleInStackWithKey(mRow.getKey()).setSuppressNotification(true);
// Now remove the bubble
mBubbleController.removeBubble(
- mRow.getEntry().getKey(), Bubbles.DISMISS_USER_GESTURE);
- assertTrue(mBubbleData.hasOverflowBubbleWithKey(mRow.getEntry().getKey()));
+ mRow.getKey(), Bubbles.DISMISS_USER_GESTURE);
+ assertTrue(mBubbleData.hasOverflowBubbleWithKey(mRow.getKey()));
// We don't remove the notification since the bubble is still in overflow.
- verify(mNotifCallback, never()).removeNotification(eq(mRow.getEntry()), any(), anyInt());
+ verify(mNotifCallback, never()).removeNotification(eq(mRow), any(), anyInt());
assertFalse(mBubbleController.hasBubbles());
}
@Test
public void testRemoveBubble_withDismissedNotif_notInOverflow() {
- mEntryListener.onEntryAdded(mRow.getEntry());
+ mEntryListener.onEntryAdded(mRow);
mBubbleController.updateBubble(mBubbleEntry);
- when(mNotificationEntryManager.getPendingOrActiveNotif(mRow.getEntry().getKey()))
- .thenReturn(mRow.getEntry());
+ when(mNotificationEntryManager.getPendingOrActiveNotif(mRow.getKey()))
+ .thenReturn(mRow);
assertTrue(mBubbleController.hasBubbles());
assertFalse(mBubbleController.isBubbleNotificationSuppressedFromShade(
mBubbleEntry.getKey(), mBubbleEntry.getGroupKey()));
// Make it look like dismissed notif
- mBubbleData.getBubbleInStackWithKey(mRow.getEntry().getKey()).setSuppressNotification(true);
+ mBubbleData.getBubbleInStackWithKey(mRow.getKey()).setSuppressNotification(true);
// Now remove the bubble
mBubbleController.removeBubble(
- mRow.getEntry().getKey(), Bubbles.DISMISS_NOTIF_CANCEL);
- assertFalse(mBubbleData.hasOverflowBubbleWithKey(mRow.getEntry().getKey()));
+ mRow.getKey(), Bubbles.DISMISS_NOTIF_CANCEL);
+ assertFalse(mBubbleData.hasOverflowBubbleWithKey(mRow.getKey()));
// Since the notif is dismissed and not in overflow, once the bubble is removed,
// removeNotification gets called to really remove the notif
- verify(mNotifCallback, times(1)).removeNotification(eq(mRow.getEntry()),
+ verify(mNotifCallback, times(1)).removeNotification(eq(mRow),
any(), anyInt());
assertFalse(mBubbleController.hasBubbles());
}
@@ -368,16 +368,16 @@
public void testDismissStack() {
mBubbleController.updateBubble(mBubbleEntry);
verify(mNotifCallback, times(1)).invalidateNotifications(anyString());
- assertNotNull(mBubbleData.getBubbleInStackWithKey(mRow.getEntry().getKey()));
+ assertNotNull(mBubbleData.getBubbleInStackWithKey(mRow.getKey()));
mBubbleController.updateBubble(mBubbleEntry2);
verify(mNotifCallback, times(2)).invalidateNotifications(anyString());
- assertNotNull(mBubbleData.getBubbleInStackWithKey(mRow2.getEntry().getKey()));
+ assertNotNull(mBubbleData.getBubbleInStackWithKey(mRow2.getKey()));
assertTrue(mBubbleController.hasBubbles());
mBubbleData.dismissAll(Bubbles.DISMISS_USER_GESTURE);
verify(mNotifCallback, times(3)).invalidateNotifications(anyString());
- assertNull(mBubbleData.getBubbleInStackWithKey(mRow.getEntry().getKey()));
- assertNull(mBubbleData.getBubbleInStackWithKey(mRow2.getEntry().getKey()));
+ assertNull(mBubbleData.getBubbleInStackWithKey(mRow.getKey()));
+ assertNull(mBubbleData.getBubbleInStackWithKey(mRow2.getKey()));
}
@Test
@@ -385,7 +385,7 @@
assertFalse(mBubbleController.isStackExpanded());
// Mark it as a bubble and add it explicitly
- mEntryListener.onEntryAdded(mRow.getEntry());
+ mEntryListener.onEntryAdded(mRow);
mBubbleController.updateBubble(mBubbleEntry);
// We should have bubbles & their notifs should not be suppressed
@@ -397,7 +397,7 @@
BubbleStackView stackView = mBubbleController.getStackView();
mBubbleData.setExpanded(true);
assertTrue(mBubbleController.isStackExpanded());
- verify(mBubbleExpandListener).onBubbleExpandChanged(true, mRow.getEntry().getKey());
+ verify(mBubbleExpandListener).onBubbleExpandChanged(true, mRow.getKey());
// Make sure the notif is suppressed
assertTrue(mBubbleController.isBubbleNotificationSuppressedFromShade(
@@ -405,7 +405,7 @@
// Collapse
mBubbleController.collapseStack();
- verify(mBubbleExpandListener).onBubbleExpandChanged(false, mRow.getEntry().getKey());
+ verify(mBubbleExpandListener).onBubbleExpandChanged(false, mRow.getKey());
assertFalse(mBubbleController.isStackExpanded());
}
@@ -413,8 +413,8 @@
@Ignore("Currently broken.")
public void testCollapseAfterChangingExpandedBubble() {
// Mark it as a bubble and add it explicitly
- mEntryListener.onEntryAdded(mRow.getEntry());
- mEntryListener.onEntryAdded(mRow2.getEntry());
+ mEntryListener.onEntryAdded(mRow);
+ mEntryListener.onEntryAdded(mRow2);
mBubbleController.updateBubble(mBubbleEntry);
mBubbleController.updateBubble(mBubbleEntry2);
@@ -430,28 +430,28 @@
mBubbleData.setExpanded(true);
assertTrue(mBubbleController.isStackExpanded());
verify(mBubbleExpandListener, atLeastOnce()).onBubbleExpandChanged(
- true, mRow2.getEntry().getKey());
+ true, mRow2.getKey());
// Last added is the one that is expanded
- assertEquals(mRow2.getEntry().getKey(), mBubbleData.getSelectedBubble().getKey());
+ assertEquals(mRow2.getKey(), mBubbleData.getSelectedBubble().getKey());
assertTrue(mBubbleController.isBubbleNotificationSuppressedFromShade(
mBubbleEntry2.getKey(), mBubbleEntry2.getGroupKey()));
// Switch which bubble is expanded
mBubbleData.setSelectedBubble(mBubbleData.getBubbleInStackWithKey(
- mRow.getEntry().getKey()));
+ mRow.getKey()));
mBubbleData.setExpanded(true);
- assertEquals(mRow.getEntry().getKey(), mBubbleData.getBubbleInStackWithKey(
+ assertEquals(mRow.getKey(), mBubbleData.getBubbleInStackWithKey(
stackView.getExpandedBubble().getKey()).getKey());
assertTrue(mBubbleController.isBubbleNotificationSuppressedFromShade(
mBubbleEntry.getKey(), mBubbleEntry.getGroupKey()));
// collapse for previous bubble
verify(mBubbleExpandListener, atLeastOnce()).onBubbleExpandChanged(
- false, mRow2.getEntry().getKey());
+ false, mRow2.getKey());
// expand for selected bubble
verify(mBubbleExpandListener, atLeastOnce()).onBubbleExpandChanged(
- true, mRow.getEntry().getKey());
+ true, mRow.getKey());
// Collapse
@@ -462,7 +462,7 @@
@Test
public void testExpansionRemovesShowInShadeAndDot() {
// Mark it as a bubble and add it explicitly
- mEntryListener.onEntryAdded(mRow.getEntry());
+ mEntryListener.onEntryAdded(mRow);
mBubbleController.updateBubble(mBubbleEntry);
// We should have bubbles & their notifs should not be suppressed
@@ -471,24 +471,24 @@
mBubbleEntry.getKey(), mBubbleEntry.getGroupKey()));
mTestableLooper.processAllMessages();
- assertTrue(mBubbleData.getBubbleInStackWithKey(mRow.getEntry().getKey()).showDot());
+ assertTrue(mBubbleData.getBubbleInStackWithKey(mRow.getKey()).showDot());
// Expand
mBubbleData.setExpanded(true);
assertTrue(mBubbleController.isStackExpanded());
- verify(mBubbleExpandListener).onBubbleExpandChanged(true, mRow.getEntry().getKey());
+ verify(mBubbleExpandListener).onBubbleExpandChanged(true, mRow.getKey());
// Notif is suppressed after expansion
assertTrue(mBubbleController.isBubbleNotificationSuppressedFromShade(
mBubbleEntry.getKey(), mBubbleEntry.getGroupKey()));
// Notif shouldn't show dot after expansion
- assertFalse(mBubbleData.getBubbleInStackWithKey(mRow.getEntry().getKey()).showDot());
+ assertFalse(mBubbleData.getBubbleInStackWithKey(mRow.getKey()).showDot());
}
@Test
public void testUpdateWhileExpanded_DoesntChangeShowInShadeAndDot() {
// Mark it as a bubble and add it explicitly
- mEntryListener.onEntryAdded(mRow.getEntry());
+ mEntryListener.onEntryAdded(mRow);
mBubbleController.updateBubble(mBubbleEntry);
// We should have bubbles & their notifs should not be suppressed
@@ -497,35 +497,35 @@
mBubbleEntry.getKey(), mBubbleEntry.getGroupKey()));
mTestableLooper.processAllMessages();
- assertTrue(mBubbleData.getBubbleInStackWithKey(mRow.getEntry().getKey()).showDot());
+ assertTrue(mBubbleData.getBubbleInStackWithKey(mRow.getKey()).showDot());
// Expand
mBubbleData.setExpanded(true);
assertTrue(mBubbleController.isStackExpanded());
- verify(mBubbleExpandListener).onBubbleExpandChanged(true, mRow.getEntry().getKey());
+ verify(mBubbleExpandListener).onBubbleExpandChanged(true, mRow.getKey());
// Notif is suppressed after expansion
assertTrue(mBubbleController.isBubbleNotificationSuppressedFromShade(
mBubbleEntry.getKey(), mBubbleEntry.getGroupKey()));
// Notif shouldn't show dot after expansion
- assertFalse(mBubbleData.getBubbleInStackWithKey(mRow.getEntry().getKey()).showDot());
+ assertFalse(mBubbleData.getBubbleInStackWithKey(mRow.getKey()).showDot());
// Send update
- mEntryListener.onEntryUpdated(mRow.getEntry());
+ mEntryListener.onEntryUpdated(mRow);
// Nothing should have changed
// Notif is suppressed after expansion
assertTrue(mBubbleController.isBubbleNotificationSuppressedFromShade(
mBubbleEntry.getKey(), mBubbleEntry.getGroupKey()));
// Notif shouldn't show dot after expansion
- assertFalse(mBubbleData.getBubbleInStackWithKey(mRow.getEntry().getKey()).showDot());
+ assertFalse(mBubbleData.getBubbleInStackWithKey(mRow.getKey()).showDot());
}
@Test
public void testRemoveLastExpanded_selectsOverflow() {
// Mark it as a bubble and add it explicitly
- mEntryListener.onEntryAdded(mRow.getEntry());
- mEntryListener.onEntryAdded(mRow2.getEntry());
+ mEntryListener.onEntryAdded(mRow);
+ mEntryListener.onEntryAdded(mRow2);
mBubbleController.updateBubble(mBubbleEntry);
mBubbleController.updateBubble(mBubbleEntry2);
@@ -534,10 +534,10 @@
mBubbleData.setExpanded(true);
assertTrue(mBubbleController.isStackExpanded());
- verify(mBubbleExpandListener).onBubbleExpandChanged(true, mRow2.getEntry().getKey());
+ verify(mBubbleExpandListener).onBubbleExpandChanged(true, mRow2.getKey());
// Last added is the one that is expanded
- assertEquals(mRow2.getEntry().getKey(), mBubbleData.getBubbleInStackWithKey(
+ assertEquals(mRow2.getKey(), mBubbleData.getBubbleInStackWithKey(
stackView.getExpandedBubble().getKey()).getKey());
assertTrue(mBubbleController.isBubbleNotificationSuppressedFromShade(
mBubbleEntry2.getKey(), mBubbleEntry2.getGroupKey()));
@@ -547,12 +547,12 @@
mBubbleData.getBubbleInStackWithKey(
stackView.getExpandedBubble().getKey()).getKey(),
Bubbles.DISMISS_USER_GESTURE);
- verify(mBubbleExpandListener).onBubbleExpandChanged(false, mRow2.getEntry().getKey());
+ verify(mBubbleExpandListener).onBubbleExpandChanged(false, mRow2.getKey());
// Make sure first bubble is selected
- assertEquals(mRow.getEntry().getKey(), mBubbleData.getBubbleInStackWithKey(
+ assertEquals(mRow.getKey(), mBubbleData.getBubbleInStackWithKey(
stackView.getExpandedBubble().getKey()).getKey());
- verify(mBubbleExpandListener).onBubbleExpandChanged(true, mRow.getEntry().getKey());
+ verify(mBubbleExpandListener).onBubbleExpandChanged(true, mRow.getKey());
// Dismiss that one
mBubbleController.removeBubble(
@@ -569,7 +569,7 @@
@Test
public void testRemoveLastExpandedEmptyOverflow_collapses() {
// Mark it as a bubble and add it explicitly
- mEntryListener.onEntryAdded(mRow.getEntry());
+ mEntryListener.onEntryAdded(mRow);
mBubbleController.updateBubble(mBubbleEntry);
// Expand
@@ -577,7 +577,7 @@
mBubbleData.setExpanded(true);
assertTrue(mBubbleController.isStackExpanded());
- verify(mBubbleExpandListener).onBubbleExpandChanged(true, mRow.getEntry().getKey());
+ verify(mBubbleExpandListener).onBubbleExpandChanged(true, mRow.getKey());
// Block the bubble so it won't be in the overflow
mBubbleController.removeBubble(
@@ -585,10 +585,10 @@
stackView.getExpandedBubble().getKey()).getKey(),
Bubbles.DISMISS_BLOCKED);
- verify(mBubbleExpandListener).onBubbleExpandChanged(false, mRow.getEntry().getKey());
+ verify(mBubbleExpandListener).onBubbleExpandChanged(false, mRow.getKey());
// We should be collapsed
- verify(mBubbleExpandListener).onBubbleExpandChanged(false, mRow.getEntry().getKey());
+ verify(mBubbleExpandListener).onBubbleExpandChanged(false, mRow.getKey());
assertFalse(mBubbleController.hasBubbles());
}
@@ -596,49 +596,49 @@
@Test
public void testAutoExpand_fails_noFlag() {
assertFalse(mBubbleController.isStackExpanded());
- setMetadataFlags(mRow.getEntry(),
+ setMetadataFlags(mRow,
Notification.BubbleMetadata.FLAG_AUTO_EXPAND_BUBBLE, false /* enableFlag */);
// Add the auto expand bubble
- mEntryListener.onEntryAdded(mRow.getEntry());
+ mEntryListener.onEntryAdded(mRow);
mBubbleController.updateBubble(mBubbleEntry);
// Expansion shouldn't change
verify(mBubbleExpandListener, never()).onBubbleExpandChanged(false /* expanded */,
- mRow.getEntry().getKey());
+ mRow.getKey());
assertFalse(mBubbleController.isStackExpanded());
}
@Test
public void testAutoExpand_succeeds_withFlag() {
- setMetadataFlags(mRow.getEntry(),
+ setMetadataFlags(mRow,
Notification.BubbleMetadata.FLAG_AUTO_EXPAND_BUBBLE, true /* enableFlag */);
// Add the auto expand bubble
- mEntryListener.onEntryAdded(mRow.getEntry());
+ mEntryListener.onEntryAdded(mRow);
mBubbleController.updateBubble(mBubbleEntry);
// Expansion should change
verify(mBubbleExpandListener).onBubbleExpandChanged(true /* expanded */,
- mRow.getEntry().getKey());
+ mRow.getKey());
assertTrue(mBubbleController.isStackExpanded());
}
@Test
public void testSuppressNotif_onInitialNotif() {
- setMetadataFlags(mRow.getEntry(),
+ setMetadataFlags(mRow,
Notification.BubbleMetadata.FLAG_SUPPRESS_NOTIFICATION, true /* enableFlag */);
// Add the suppress notif bubble
- mEntryListener.onEntryAdded(mRow.getEntry());
+ mEntryListener.onEntryAdded(mRow);
mBubbleController.updateBubble(mBubbleEntry);
// Notif should be suppressed because we were foreground
assertTrue(mBubbleController.isBubbleNotificationSuppressedFromShade(
mBubbleEntry.getKey(), mBubbleEntry.getGroupKey()));
// Dot + flyout is hidden because notif is suppressed
- assertFalse(mBubbleData.getBubbleInStackWithKey(mRow.getEntry().getKey()).showDot());
- assertFalse(mBubbleData.getBubbleInStackWithKey(mRow.getEntry().getKey()).showFlyout());
+ assertFalse(mBubbleData.getBubbleInStackWithKey(mRow.getKey()).showDot());
+ assertFalse(mBubbleData.getBubbleInStackWithKey(mRow.getKey()).showFlyout());
}
@Test
@@ -649,10 +649,10 @@
assertFalse(mBubbleController.isBubbleNotificationSuppressedFromShade(
mBubbleEntry.getKey(), mBubbleEntry.getGroupKey()));
// Should show dot
- assertTrue(mBubbleData.getBubbleInStackWithKey(mRow.getEntry().getKey()).showDot());
+ assertTrue(mBubbleData.getBubbleInStackWithKey(mRow.getKey()).showDot());
// Update to suppress notif
- setMetadataFlags(mRow.getEntry(),
+ setMetadataFlags(mRow,
Notification.BubbleMetadata.FLAG_SUPPRESS_NOTIFICATION, true /* enableFlag */);
mBubbleController.updateBubble(mBubbleEntry);
@@ -660,18 +660,18 @@
assertTrue(mBubbleController.isBubbleNotificationSuppressedFromShade(
mBubbleEntry.getKey(), mBubbleEntry.getGroupKey()));
// Dot + flyout is hidden because notif is suppressed
- assertFalse(mBubbleData.getBubbleInStackWithKey(mRow.getEntry().getKey()).showDot());
- assertFalse(mBubbleData.getBubbleInStackWithKey(mRow.getEntry().getKey()).showFlyout());
+ assertFalse(mBubbleData.getBubbleInStackWithKey(mRow.getKey()).showDot());
+ assertFalse(mBubbleData.getBubbleInStackWithKey(mRow.getKey()).showFlyout());
}
@Test
public void testMarkNewNotificationAsShowInShade() {
- mEntryListener.onEntryAdded(mRow.getEntry());
+ mEntryListener.onEntryAdded(mRow);
assertFalse(mBubbleController.isBubbleNotificationSuppressedFromShade(
mBubbleEntry.getKey(), mBubbleEntry.getGroupKey()));
mTestableLooper.processAllMessages();
- assertTrue(mBubbleData.getBubbleInStackWithKey(mRow.getEntry().getKey()).showDot());
+ assertTrue(mBubbleData.getBubbleInStackWithKey(mRow.getKey()).showDot());
}
@Test
@@ -685,7 +685,7 @@
@Test
public void testDeleteIntent_removeBubble_aged() throws PendingIntent.CanceledException {
mBubbleController.updateBubble(mBubbleEntry);
- mBubbleController.removeBubble(mRow.getEntry().getKey(), Bubbles.DISMISS_AGED);
+ mBubbleController.removeBubble(mRow.getKey(), Bubbles.DISMISS_AGED);
verify(mDeleteIntent, never()).send();
}
@@ -693,7 +693,7 @@
public void testDeleteIntent_removeBubble_user() throws PendingIntent.CanceledException {
mBubbleController.updateBubble(mBubbleEntry);
mBubbleController.removeBubble(
- mRow.getEntry().getKey(), Bubbles.DISMISS_USER_GESTURE);
+ mRow.getKey(), Bubbles.DISMISS_USER_GESTURE);
verify(mDeleteIntent, times(1)).send();
}
@@ -711,11 +711,11 @@
mBubbleController.updateBubble(mBubbleEntry);
assertTrue(mBubbleController.hasBubbles());
- mRow.getEntry().getSbn().getNotification().flags &= ~FLAG_BUBBLE;
+ mRow.getSbn().getNotification().flags &= ~FLAG_BUBBLE;
NotificationListenerService.Ranking ranking = new RankingBuilder(
- mRow.getEntry().getRanking()).setCanBubble(false).build();
- mRow.getEntry().setRanking(ranking);
- mEntryListener.onEntryUpdated(mRow.getEntry());
+ mRow.getRanking()).setCanBubble(false).build();
+ mRow.setRanking(ranking);
+ mEntryListener.onEntryUpdated(mRow);
assertFalse(mBubbleController.hasBubbles());
verify(mDeleteIntent, never()).send();
@@ -723,26 +723,26 @@
@Test
public void testRemoveBubble_entryListenerRemove() {
- mEntryListener.onEntryAdded(mRow.getEntry());
+ mEntryListener.onEntryAdded(mRow);
mBubbleController.updateBubble(mBubbleEntry);
assertTrue(mBubbleController.hasBubbles());
// Removes the notification
- mEntryListener.onEntryRemoved(mRow.getEntry(), 0);
+ mEntryListener.onEntryRemoved(mRow, 0);
assertFalse(mBubbleController.hasBubbles());
}
@Test
public void removeBubble_intercepted() {
- mEntryListener.onEntryAdded(mRow.getEntry());
+ mEntryListener.onEntryAdded(mRow);
mBubbleController.updateBubble(mBubbleEntry);
assertTrue(mBubbleController.hasBubbles());
assertFalse(mBubbleController.isBubbleNotificationSuppressedFromShade(
mBubbleEntry.getKey(), mBubbleEntry.getGroupKey()));
- boolean intercepted = mBubblesManager.handleDismissalInterception(mRow.getEntry());
+ boolean intercepted = mBubblesManager.handleDismissalInterception(mRow);
// Intercept!
assertTrue(intercepted);
@@ -753,7 +753,7 @@
@Test
public void removeBubble_dismissIntoOverflow_intercepted() {
- mEntryListener.onEntryAdded(mRow.getEntry());
+ mEntryListener.onEntryAdded(mRow);
mBubbleController.updateBubble(mBubbleEntry);
assertTrue(mBubbleController.hasBubbles());
@@ -761,11 +761,11 @@
mBubbleEntry.getKey(), mBubbleEntry.getGroupKey()));
// Dismiss the bubble
- mBubbleController.removeBubble(mRow.getEntry().getKey(), Bubbles.DISMISS_USER_GESTURE);
+ mBubbleController.removeBubble(mRow.getKey(), Bubbles.DISMISS_USER_GESTURE);
assertFalse(mBubbleController.hasBubbles());
// Dismiss the notification
- boolean intercepted = mBubblesManager.handleDismissalInterception(mRow.getEntry());
+ boolean intercepted = mBubblesManager.handleDismissalInterception(mRow);
// Intercept dismissal since bubble is going into overflow
assertTrue(intercepted);
@@ -773,7 +773,7 @@
@Test
public void removeBubble_notIntercepted() {
- mEntryListener.onEntryAdded(mRow.getEntry());
+ mEntryListener.onEntryAdded(mRow);
mBubbleController.updateBubble(mBubbleEntry);
assertTrue(mBubbleController.hasBubbles());
@@ -781,11 +781,11 @@
mBubbleEntry.getKey(), mBubbleEntry.getGroupKey()));
// Dismiss the bubble
- mBubbleController.removeBubble(mRow.getEntry().getKey(), Bubbles.DISMISS_NOTIF_CANCEL);
+ mBubbleController.removeBubble(mRow.getKey(), Bubbles.DISMISS_NOTIF_CANCEL);
assertFalse(mBubbleController.hasBubbles());
// Dismiss the notification
- boolean intercepted = mBubblesManager.handleDismissalInterception(mRow.getEntry());
+ boolean intercepted = mBubblesManager.handleDismissalInterception(mRow);
// Not a bubble anymore so we don't intercept dismissal.
assertFalse(intercepted);
@@ -797,13 +797,13 @@
mock(Bubbles.SuppressionChangedListener.class);
mBubbleData.setSuppressionChangedListener(listener);
- mEntryListener.onEntryAdded(mRow.getEntry());
+ mEntryListener.onEntryAdded(mRow);
assertTrue(mBubbleController.hasBubbles());
assertFalse(mBubbleController.isBubbleNotificationSuppressedFromShade(
mBubbleEntry.getKey(), mBubbleEntry.getGroupKey()));
- mBubblesManager.handleDismissalInterception(mRow.getEntry());
+ mBubblesManager.handleDismissalInterception(mRow);
// Should update show in shade state
assertTrue(mBubbleController.isBubbleNotificationSuppressedFromShade(
@@ -811,7 +811,7 @@
// Should notify delegate that shade state changed
verify(listener).onBubbleNotificationSuppressionChange(
- mBubbleData.getBubbleInStackWithKey(mRow.getEntry().getKey()));
+ mBubbleData.getBubbleInStackWithKey(mRow.getKey()));
}
@Test
@@ -820,7 +820,7 @@
mock(Bubbles.SuppressionChangedListener.class);
mBubbleData.setSuppressionChangedListener(listener);
- mEntryListener.onEntryAdded(mRow.getEntry());
+ mEntryListener.onEntryAdded(mRow);
assertTrue(mBubbleController.hasBubbles());
assertFalse(mBubbleController.isBubbleNotificationSuppressedFromShade(
@@ -834,7 +834,7 @@
// Should notify delegate that shade state changed
verify(listener).onBubbleNotificationSuppressionChange(
- mBubbleData.getBubbleInStackWithKey(mRow.getEntry().getKey()));
+ mBubbleData.getBubbleInStackWithKey(mRow.getKey()));
}
@Test
diff --git a/services/appwidget/java/com/android/server/appwidget/AppWidgetServiceImpl.java b/services/appwidget/java/com/android/server/appwidget/AppWidgetServiceImpl.java
index e251700..d922d2b 100644
--- a/services/appwidget/java/com/android/server/appwidget/AppWidgetServiceImpl.java
+++ b/services/appwidget/java/com/android/server/appwidget/AppWidgetServiceImpl.java
@@ -1589,6 +1589,7 @@
public ParceledListSlice<AppWidgetProviderInfo> getInstalledProvidersForProfile(int categoryFilter,
int profileId, String packageName) {
final int userId = UserHandle.getCallingUserId();
+ final int callingUid = Binder.getCallingUid();
if (DEBUG) {
Slog.i(TAG, "getInstalledProvidersForProfiles() " + userId);
@@ -1601,7 +1602,7 @@
synchronized (mLock) {
if (mSecurityPolicy.isCallerInstantAppLocked()) {
- Slog.w(TAG, "Instant uid " + Binder.getCallingUid()
+ Slog.w(TAG, "Instant uid " + callingUid
+ " cannot access widget providers");
return ParceledListSlice.emptyList();
}
@@ -1614,11 +1615,12 @@
for (int i = 0; i < providerCount; i++) {
Provider provider = mProviders.get(i);
AppWidgetProviderInfo info = provider.getInfoLocked(mContext);
+ final String providerPackageName = provider.id.componentName.getPackageName();
// Ignore an invalid provider, one not matching the filter,
// or one that isn't in the given package, if any.
boolean inPackage = packageName == null
- || provider.id.componentName.getPackageName().equals(packageName);
+ || providerPackageName.equals(packageName);
if (provider.zombie || (info.widgetCategory & categoryFilter) == 0 || !inPackage) {
continue;
}
@@ -1627,7 +1629,9 @@
final int providerProfileId = info.getProfile().getIdentifier();
if (providerProfileId == profileId
&& mSecurityPolicy.isProviderInCallerOrInProfileAndWhitelListed(
- provider.id.componentName.getPackageName(), providerProfileId)) {
+ providerPackageName, providerProfileId)
+ && !mPackageManagerInternal.filterAppAccess(providerPackageName, callingUid,
+ userId)) {
result.add(cloneIfLocalBinder(info));
}
}
diff --git a/services/autofill/java/com/android/server/autofill/AutofillManagerServiceImpl.java b/services/autofill/java/com/android/server/autofill/AutofillManagerServiceImpl.java
index 27be331..a80efc4 100644
--- a/services/autofill/java/com/android/server/autofill/AutofillManagerServiceImpl.java
+++ b/services/autofill/java/com/android/server/autofill/AutofillManagerServiceImpl.java
@@ -431,7 +431,7 @@
final Session.SaveResult saveResult = session.showSaveLocked();
- session.logContextCommitted(saveResult.getNoSaveReason());
+ session.logContextCommitted(saveResult.getNoSaveUiReason());
if (saveResult.isLogSaveShown()) {
session.logSaveUiShown();
@@ -876,7 +876,7 @@
changedFieldIds, changedDatasetIds, manuallyFilledFieldIds,
manuallyFilledDatasetIds, /* detectedFieldIdsList= */ null,
/* detectedFieldClassificationsList= */ null, appComponentName, compatMode,
- Event.NO_SAVE_REASON_NONE);
+ Event.NO_SAVE_UI_REASON_NONE);
}
@GuardedBy("mLock")
diff --git a/services/autofill/java/com/android/server/autofill/Session.java b/services/autofill/java/com/android/server/autofill/Session.java
index 6bf4967..57e5bb2 100644
--- a/services/autofill/java/com/android/server/autofill/Session.java
+++ b/services/autofill/java/com/android/server/autofill/Session.java
@@ -1774,7 +1774,7 @@
*/
public void logContextCommitted() {
mHandler.sendMessage(obtainMessage(Session::handleLogContextCommitted, this,
- Event.NO_SAVE_REASON_NONE));
+ Event.NO_SAVE_UI_REASON_NONE));
}
/**
@@ -2163,7 +2163,7 @@
Slog.w(TAG, "Call to Session#showSaveLocked() rejected - session: "
+ id + " destroyed");
return new SaveResult(/* logSaveShown= */ false, /* removeSession= */ false,
- Event.NO_SAVE_REASON_NONE);
+ Event.NO_SAVE_UI_REASON_NONE);
}
mSessionState = STATE_FINISHED;
final FillResponse response = getLastResponseLocked("showSaveLocked(%s)");
@@ -2182,14 +2182,14 @@
if (saveInfo == null) {
if (sVerbose) Slog.v(TAG, "showSaveLocked(" + this.id + "): no saveInfo from service");
return new SaveResult(/* logSaveShown= */ false, /* removeSession= */ true,
- Event.NO_SAVE_REASON_NO_SAVE_INFO);
+ Event.NO_SAVE_UI_REASON_NO_SAVE_INFO);
}
if ((saveInfo.getFlags() & SaveInfo.FLAG_DELAY_SAVE) != 0) {
// TODO(b/113281366): log metrics
if (sDebug) Slog.v(TAG, "showSaveLocked(" + this.id + "): service asked to delay save");
return new SaveResult(/* logSaveShown= */ false, /* removeSession= */ false,
- Event.NO_SAVE_REASON_WITH_DELAY_SAVE_FLAG);
+ Event.NO_SAVE_UI_REASON_WITH_DELAY_SAVE_FLAG);
}
final ArrayMap<AutofillId, InternalSanitizer> sanitizers = createSanitizers(saveInfo);
@@ -2283,7 +2283,7 @@
}
int saveDialogNotShowReason;
if (!allRequiredAreNotEmpty) {
- saveDialogNotShowReason = Event.NO_SAVE_REASON_HAS_EMPTY_REQUIRED;
+ saveDialogNotShowReason = Event.NO_SAVE_UI_REASON_HAS_EMPTY_REQUIRED;
} else {
// Must look up all optional ids in 2 scenarios:
// - if no required id changed but an optional id did, it should trigger save / update
@@ -2336,7 +2336,7 @@
}
}
if (!atLeastOneChanged) {
- saveDialogNotShowReason = Event.NO_SAVE_REASON_NO_VALUE_CHANGED;
+ saveDialogNotShowReason = Event.NO_SAVE_UI_REASON_NO_VALUE_CHANGED;
} else {
if (sDebug) {
Slog.d(TAG, "at least one field changed, validate fields for save UI");
@@ -2356,14 +2356,14 @@
log.setType(MetricsEvent.TYPE_FAILURE);
mMetricsLogger.write(log);
return new SaveResult(/* logSaveShown= */ false, /* removeSession= */ true,
- Event.NO_SAVE_REASON_FIELD_VALIDATION_FAILED);
+ Event.NO_SAVE_UI_REASON_FIELD_VALIDATION_FAILED);
}
mMetricsLogger.write(log);
if (!isValid) {
Slog.i(TAG, "not showing save UI because fields failed validation");
return new SaveResult(/* logSaveShown= */ false, /* removeSession= */ true,
- Event.NO_SAVE_REASON_FIELD_VALIDATION_FAILED);
+ Event.NO_SAVE_UI_REASON_FIELD_VALIDATION_FAILED);
}
}
@@ -2403,7 +2403,7 @@
+ "dataset #" + i + ": " + dataset);
}
return new SaveResult(/* logSaveShown= */ false, /* removeSession= */ true,
- Event.NO_SAVE_REASON_DATASET_MATCH);
+ Event.NO_SAVE_UI_REASON_DATASET_MATCH);
}
}
@@ -2424,7 +2424,7 @@
if (serviceLabel == null || serviceIcon == null) {
wtf(null, "showSaveLocked(): no service label or icon");
return new SaveResult(/* logSaveShown= */ false, /* removeSession= */ true,
- Event.NO_SAVE_REASON_NONE);
+ Event.NO_SAVE_UI_REASON_NONE);
}
getUiForShowing().showSaveUi(serviceLabel, serviceIcon,
@@ -2439,7 +2439,7 @@
}
mSessionFlags.mShowingSaveUi = true;
return new SaveResult(/* logSaveShown= */ true, /* removeSession= */ false,
- Event.NO_SAVE_REASON_NONE);
+ Event.NO_SAVE_UI_REASON_NONE);
}
}
// Nothing changed...
@@ -3882,7 +3882,7 @@
* @return The reason why a save dialog was not shown.
*/
@NoSaveReason
- public int getNoSaveReason() {
+ public int getNoSaveUiReason() {
return mSaveDialogNotShowReason;
}
diff --git a/services/core/java/android/content/pm/PackageManagerInternal.java b/services/core/java/android/content/pm/PackageManagerInternal.java
index 5dd9b0e..b4fcb9c 100644
--- a/services/core/java/android/content/pm/PackageManagerInternal.java
+++ b/services/core/java/android/content/pm/PackageManagerInternal.java
@@ -1120,11 +1120,6 @@
int filterCallingUid, int userId);
/**
- * Notifies that a package has crashed or ANR'd.
- */
- public abstract void notifyPackageCrashOrAnr(String packageName);
-
- /**
* Requesting the checksums for APKs within a package.
* See {@link PackageManager#requestChecksums} for details.
*
diff --git a/services/core/java/com/android/server/ConnectivityService.java b/services/core/java/com/android/server/ConnectivityService.java
index 809ef41..4b96119 100644
--- a/services/core/java/com/android/server/ConnectivityService.java
+++ b/services/core/java/com/android/server/ConnectivityService.java
@@ -321,7 +321,8 @@
private static final int MAX_NETWORK_REQUESTS_PER_UID = 100;
// The maximum number of network request allowed for system UIDs before an exception is thrown.
- private static final int MAX_NETWORK_REQUESTS_PER_SYSTEM_UID = 250;
+ @VisibleForTesting
+ static final int MAX_NETWORK_REQUESTS_PER_SYSTEM_UID = 250;
@VisibleForTesting
protected int mLingerDelayMs; // Can't be final, or test subclass constructors can't change it.
@@ -338,7 +339,8 @@
protected final PermissionMonitor mPermissionMonitor;
private final PerUidCounter mNetworkRequestCounter;
- private final PerUidCounter mSystemNetworkRequestCounter;
+ @VisibleForTesting
+ final PerUidCounter mSystemNetworkRequestCounter;
private volatile boolean mLockdownEnabled;
@@ -1060,8 +1062,9 @@
private final int mMaxCountPerUid;
// Map from UID to number of NetworkRequests that UID has filed.
+ @VisibleForTesting
@GuardedBy("mUidToNetworkRequestCount")
- private final SparseIntArray mUidToNetworkRequestCount = new SparseIntArray();
+ final SparseIntArray mUidToNetworkRequestCount = new SparseIntArray();
/**
* Constructor
@@ -1085,15 +1088,20 @@
*/
public void incrementCountOrThrow(final int uid) {
synchronized (mUidToNetworkRequestCount) {
- final int networkRequests = mUidToNetworkRequestCount.get(uid, 0) + 1;
- if (networkRequests >= mMaxCountPerUid) {
- throw new ServiceSpecificException(
- ConnectivityManager.Errors.TOO_MANY_REQUESTS);
- }
- mUidToNetworkRequestCount.put(uid, networkRequests);
+ incrementCountOrThrow(uid, 1 /* numToIncrement */);
}
}
+ private void incrementCountOrThrow(final int uid, final int numToIncrement) {
+ final int newRequestCount =
+ mUidToNetworkRequestCount.get(uid, 0) + numToIncrement;
+ if (newRequestCount >= mMaxCountPerUid) {
+ throw new ServiceSpecificException(
+ ConnectivityManager.Errors.TOO_MANY_REQUESTS);
+ }
+ mUidToNetworkRequestCount.put(uid, newRequestCount);
+ }
+
/**
* Decrements the request count of the given uid.
*
@@ -1101,16 +1109,50 @@
*/
public void decrementCount(final int uid) {
synchronized (mUidToNetworkRequestCount) {
- final int requests = mUidToNetworkRequestCount.get(uid, 0);
- if (requests < 1) {
- logwtf("BUG: too small request count " + requests + " for UID " + uid);
- } else if (requests == 1) {
- mUidToNetworkRequestCount.delete(uid);
- } else {
- mUidToNetworkRequestCount.put(uid, requests - 1);
- }
+ decrementCount(uid, 1 /* numToDecrement */);
}
}
+
+ private void decrementCount(final int uid, final int numToDecrement) {
+ final int newRequestCount =
+ mUidToNetworkRequestCount.get(uid, 0) - numToDecrement;
+ if (newRequestCount < 0) {
+ logwtf("BUG: too small request count " + newRequestCount + " for UID " + uid);
+ } else if (newRequestCount == 0) {
+ mUidToNetworkRequestCount.delete(uid);
+ } else {
+ mUidToNetworkRequestCount.put(uid, newRequestCount);
+ }
+ }
+
+ /**
+ * Used to adjust the request counter for the per-app API flows. Directly adjusting the
+ * counter is not ideal however in the per-app flows, the nris can't be removed until they
+ * are used to create the new nris upon set. Therefore the request count limit can be
+ * artificially hit. This method is used as a workaround for this particular case so that
+ * the request counts are accounted for correctly.
+ * @param uid the uid to adjust counts for
+ * @param numOfNewRequests the new request count to account for
+ * @param r the runnable to execute
+ */
+ public void transact(final int uid, final int numOfNewRequests, @NonNull final Runnable r) {
+ // This should only be used on the handler thread as per all current and foreseen
+ // use-cases. ensureRunningOnConnectivityServiceThread() can't be used because there is
+ // no ref to the outer ConnectivityService.
+ synchronized (mUidToNetworkRequestCount) {
+ final int reqCountOverage = getCallingUidRequestCountOverage(uid, numOfNewRequests);
+ decrementCount(uid, reqCountOverage);
+ r.run();
+ incrementCountOrThrow(uid, reqCountOverage);
+ }
+ }
+
+ private int getCallingUidRequestCountOverage(final int uid, final int numOfNewRequests) {
+ final int newUidRequestCount = mUidToNetworkRequestCount.get(uid, 0)
+ + numOfNewRequests;
+ return newUidRequestCount >= MAX_NETWORK_REQUESTS_PER_SYSTEM_UID
+ ? newUidRequestCount - (MAX_NETWORK_REQUESTS_PER_SYSTEM_UID - 1) : 0;
+ }
}
/**
@@ -9680,9 +9722,13 @@
validateNetworkCapabilitiesOfProfileNetworkPreference(preference.capabilities);
mProfileNetworkPreferences = mProfileNetworkPreferences.plus(preference);
- final ArraySet<NetworkRequestInfo> nris =
- createNrisFromProfileNetworkPreferences(mProfileNetworkPreferences);
- replaceDefaultNetworkRequestsForPreference(nris);
+ mSystemNetworkRequestCounter.transact(
+ mDeps.getCallingUid(), mProfileNetworkPreferences.preferences.size(),
+ () -> {
+ final ArraySet<NetworkRequestInfo> nris =
+ createNrisFromProfileNetworkPreferences(mProfileNetworkPreferences);
+ replaceDefaultNetworkRequestsForPreference(nris);
+ });
// Finally, rematch.
rematchAllNetworksAndRequests();
@@ -9768,9 +9814,16 @@
}
mOemNetworkPreferencesLogs.log("UPDATE INITIATED: " + preference);
- final ArraySet<NetworkRequestInfo> nris =
- new OemNetworkRequestFactory().createNrisFromOemNetworkPreferences(preference);
- replaceDefaultNetworkRequestsForPreference(nris);
+ final int uniquePreferenceCount = new ArraySet<>(
+ preference.getNetworkPreferences().values()).size();
+ mSystemNetworkRequestCounter.transact(
+ mDeps.getCallingUid(), uniquePreferenceCount,
+ () -> {
+ final ArraySet<NetworkRequestInfo> nris =
+ new OemNetworkRequestFactory()
+ .createNrisFromOemNetworkPreferences(preference);
+ replaceDefaultNetworkRequestsForPreference(nris);
+ });
mOemNetworkPreferences = preference;
if (null != listener) {
@@ -9795,10 +9848,14 @@
final ArraySet<NetworkRequestInfo> perAppCallbackRequestsToUpdate =
getPerAppCallbackRequestsToUpdate();
final ArraySet<NetworkRequestInfo> nrisToRegister = new ArraySet<>(nris);
- nrisToRegister.addAll(
- createPerAppCallbackRequestsToRegister(perAppCallbackRequestsToUpdate));
- handleRemoveNetworkRequests(perAppCallbackRequestsToUpdate);
- handleRegisterNetworkRequests(nrisToRegister);
+ mSystemNetworkRequestCounter.transact(
+ mDeps.getCallingUid(), perAppCallbackRequestsToUpdate.size(),
+ () -> {
+ nrisToRegister.addAll(
+ createPerAppCallbackRequestsToRegister(perAppCallbackRequestsToUpdate));
+ handleRemoveNetworkRequests(perAppCallbackRequestsToUpdate);
+ handleRegisterNetworkRequests(nrisToRegister);
+ });
}
/**
diff --git a/services/core/java/com/android/server/SensorNotificationService.java b/services/core/java/com/android/server/SensorNotificationService.java
index db3db0c..94bc963 100644
--- a/services/core/java/com/android/server/SensorNotificationService.java
+++ b/services/core/java/com/android/server/SensorNotificationService.java
@@ -115,7 +115,7 @@
"Location is (%f, %f), h %f, acc %f, mocked %b",
location.getLatitude(), location.getLongitude(),
location.getAltitude(), location.getAccuracy(),
- location.isFromMockProvider()));
+ location.isMock()));
// lat long == 0 usually means invalid location
if (location.getLatitude() == 0 && location.getLongitude() == 0) {
@@ -130,7 +130,7 @@
long time = System.currentTimeMillis();
// Mocked location should not be used. Except in test, only use mocked location
// Wrong system clock also gives bad values so ignore as well.
- if (useMockedLocation() == location.isFromMockProvider() || time < MILLIS_2010_1_1) {
+ if (useMockedLocation() == location.isMock() || time < MILLIS_2010_1_1) {
return;
}
diff --git a/services/core/java/com/android/server/SensorPrivacyService.java b/services/core/java/com/android/server/SensorPrivacyService.java
index 3ba4c34..e8bc812 100644
--- a/services/core/java/com/android/server/SensorPrivacyService.java
+++ b/services/core/java/com/android/server/SensorPrivacyService.java
@@ -197,16 +197,16 @@
if (readPersistedSensorPrivacyStateLocked()) {
persistSensorPrivacyStateLocked();
}
- }
- for (int i = 0; i < mIndividualEnabled.size(); i++) {
- int userId = mIndividualEnabled.keyAt(i);
- SparseBooleanArray userIndividualEnabled =
- mIndividualEnabled.get(i);
- for (int j = 0; j < userIndividualEnabled.size(); j++) {
- int sensor = userIndividualEnabled.keyAt(i);
- boolean enabled = userIndividualEnabled.valueAt(j);
- setUserRestriction(userId, sensor, enabled);
+ for (int i = 0; i < mIndividualEnabled.size(); i++) {
+ int userId = mIndividualEnabled.keyAt(i);
+ SparseBooleanArray userIndividualEnabled =
+ mIndividualEnabled.valueAt(i);
+ for (int j = 0; j < userIndividualEnabled.size(); j++) {
+ int sensor = userIndividualEnabled.keyAt(i);
+ boolean enabled = userIndividualEnabled.valueAt(j);
+ setUserRestriction(userId, sensor, enabled);
+ }
}
}
diff --git a/services/core/java/com/android/server/VcnManagementService.java b/services/core/java/com/android/server/VcnManagementService.java
index 4b52057..bf257be 100644
--- a/services/core/java/com/android/server/VcnManagementService.java
+++ b/services/core/java/com/android/server/VcnManagementService.java
@@ -953,6 +953,14 @@
pw.decreaseIndent();
pw.println();
+ pw.println("mConfigs:");
+ pw.increaseIndent();
+ for (Entry<ParcelUuid, VcnConfig> entry : mConfigs.entrySet()) {
+ pw.println(entry.getKey() + ": " + entry.getValue().getProvisioningPackageName());
+ }
+ pw.decreaseIndent();
+ pw.println();
+
pw.println("mVcns:");
pw.increaseIndent();
for (Vcn vcn : mVcns.values()) {
diff --git a/services/core/java/com/android/server/am/ActiveServices.java b/services/core/java/com/android/server/am/ActiveServices.java
index 5a1a505..10cf184 100644
--- a/services/core/java/com/android/server/am/ActiveServices.java
+++ b/services/core/java/com/android/server/am/ActiveServices.java
@@ -26,6 +26,7 @@
import static android.os.PowerExemptionManager.REASON_ACTIVITY_VISIBILITY_GRACE_PERIOD;
import static android.os.PowerExemptionManager.REASON_OP_ACTIVATE_PLATFORM_VPN;
import static android.os.PowerExemptionManager.REASON_OP_ACTIVATE_VPN;
+import static android.os.PowerExemptionManager.REASON_TEMP_ALLOWED_WHILE_IN_USE;
import static android.os.PowerWhitelistManager.REASON_ACTIVITY_STARTER;
import static android.os.PowerWhitelistManager.REASON_ALLOWLISTED_PACKAGE;
import static android.os.PowerWhitelistManager.REASON_BACKGROUND_ACTIVITY_PERMISSION;
@@ -5644,6 +5645,12 @@
}
if (ret == REASON_DENIED) {
+ if (mAm.mInternal.isTempAllowlistedForFgsWhileInUse(callingUid)) {
+ return REASON_TEMP_ALLOWED_WHILE_IN_USE;
+ }
+ }
+
+ if (ret == REASON_DENIED) {
if (targetService != null && targetService.app != null) {
ActiveInstrumentation instr = targetService.app.getActiveInstrumentation();
if (instr != null && instr.mHasBackgroundActivityStartsPermission) {
@@ -5691,7 +5698,7 @@
private @ReasonCode int shouldAllowFgsStartForegroundLocked(
@ReasonCode int allowWhileInUse, String callingPackage, int callingPid,
int callingUid, Intent intent, ServiceRecord r, int userId) {
- FgsStartTempAllowList.TempFgsAllowListEntry tempAllowListReason =
+ ActivityManagerService.FgsTempAllowListItem tempAllowListReason =
r.mInfoTempFgsAllowListReason = mAm.isAllowlistedForFgsStartLOSP(callingUid);
int ret = shouldAllowFgsStartForegroundLocked(allowWhileInUse, callingPid, callingUid,
callingPackage, r);
@@ -5790,13 +5797,13 @@
}
if (ret == REASON_DENIED) {
- FgsStartTempAllowList.TempFgsAllowListEntry entry =
+ ActivityManagerService.FgsTempAllowListItem item =
mAm.isAllowlistedForFgsStartLOSP(callingUid);
- if (entry != null) {
- if (entry == ActivityManagerService.FAKE_TEMP_ALLOWLIST_ENTRY) {
+ if (item != null) {
+ if (item == ActivityManagerService.FAKE_TEMP_ALLOW_LIST_ITEM) {
ret = REASON_SYSTEM_ALLOW_LISTED;
} else {
- ret = entry.mReasonCode;
+ ret = item.mReasonCode;
}
}
}
@@ -5921,4 +5928,12 @@
durationMs,
r.mStartForegroundCount);
}
+
+ boolean canAllowWhileInUsePermissionInFgsLocked(int callingPid, int callingUid,
+ String callingPackage) {
+ return shouldAllowFgsWhileInUsePermissionLocked(callingPackage, callingPid, callingUid,
+ /* targetService */ null,
+ /* allowBackgroundActivityStarts */ false)
+ != REASON_DENIED;
+ }
}
diff --git a/services/core/java/com/android/server/am/ActivityManagerLocal.java b/services/core/java/com/android/server/am/ActivityManagerLocal.java
index cd4180e..9a1bfdd 100644
--- a/services/core/java/com/android/server/am/ActivityManagerLocal.java
+++ b/services/core/java/com/android/server/am/ActivityManagerLocal.java
@@ -36,4 +36,26 @@
* @return whether the app will be able to start a foreground service or not.
*/
boolean canStartForegroundService(int pid, int uid, @NonNull String packageName);
+
+ /**
+ * Returns {@code true} if a foreground service started by an uid is allowed to have
+ * while-in-use permissions.
+ *
+ * @param pid The process id belonging to the app to be checked.
+ * @param uid The UID of the app to be checked.
+ * @param packageName The package name of the app to be checked.
+ * @return whether the foreground service is allowed to have while-in-use permissions.
+ * @hide
+ */
+ boolean canAllowWhileInUsePermissionInFgs(int pid, int uid, @NonNull String packageName);
+
+ /**
+ * Temporarily allow foreground service started by an uid to have while-in-use permission
+ * for durationMs.
+ *
+ * @param uid The UID of the app that starts the foreground service.
+ * @param durationMs elapsedRealTime duration in milliseconds.
+ * @hide
+ */
+ void tempAllowWhileInUsePermissionInFgs(int uid, long durationMs);
}
diff --git a/services/core/java/com/android/server/am/ActivityManagerService.java b/services/core/java/com/android/server/am/ActivityManagerService.java
index e3b06d6..7919a78 100644
--- a/services/core/java/com/android/server/am/ActivityManagerService.java
+++ b/services/core/java/com/android/server/am/ActivityManagerService.java
@@ -49,7 +49,7 @@
import static android.os.IServiceManager.DUMP_FLAG_PRIORITY_NORMAL;
import static android.os.IServiceManager.DUMP_FLAG_PROTO;
import static android.os.InputConstants.DEFAULT_DISPATCHING_TIMEOUT_MILLIS;
-import static android.os.PowerWhitelistManager.REASON_SYSTEM_ALLOW_LISTED;
+import static android.os.PowerExemptionManager.REASON_SYSTEM_ALLOW_LISTED;
import static android.os.PowerWhitelistManager.TEMPORARY_ALLOWLIST_TYPE_FOREGROUND_SERVICE_ALLOWED;
import static android.os.Process.BLUETOOTH_UID;
import static android.os.Process.FIRST_APPLICATION_UID;
@@ -258,6 +258,7 @@
import android.os.Message;
import android.os.Parcel;
import android.os.ParcelFileDescriptor;
+import android.os.PowerExemptionManager;
import android.os.PowerExemptionManager.ReasonCode;
import android.os.PowerExemptionManager.TempAllowListType;
import android.os.PowerManager;
@@ -1201,15 +1202,45 @@
@CompositeRWLock({"this", "mProcLock"})
final PendingTempAllowlists mPendingTempAllowlist = new PendingTempAllowlists(this);
+ public static final class FgsTempAllowListItem {
+ final long mDuration;
+ final @PowerExemptionManager.ReasonCode int mReasonCode;
+ final String mReason;
+ final int mCallingUid;
+
+ FgsTempAllowListItem(long duration, @PowerExemptionManager.ReasonCode int reasonCode,
+ String reason, int callingUid) {
+ mDuration = duration;
+ mReasonCode = reasonCode;
+ mReason = reason;
+ mCallingUid = callingUid;
+ }
+
+ void dump(PrintWriter pw) {
+ pw.print(" duration=" + mDuration +
+ " callingUid=" + UserHandle.formatUid(mCallingUid) +
+ " reasonCode=" + PowerExemptionManager.reasonCodeToString(mReasonCode) +
+ " reason=" + mReason);
+ }
+ }
+
/**
* The temp-allowlist that is allowed to start FGS from background.
*/
@CompositeRWLock({"this", "mProcLock"})
- final FgsStartTempAllowList mFgsStartTempAllowList = new FgsStartTempAllowList();
+ final FgsTempAllowList<Integer, FgsTempAllowListItem> mFgsStartTempAllowList =
+ new FgsTempAllowList();
- static final FgsStartTempAllowList.TempFgsAllowListEntry FAKE_TEMP_ALLOWLIST_ENTRY = new
- FgsStartTempAllowList.TempFgsAllowListEntry(Long.MAX_VALUE, Long.MAX_VALUE,
- REASON_SYSTEM_ALLOW_LISTED, "", INVALID_UID);
+ static final FgsTempAllowListItem FAKE_TEMP_ALLOW_LIST_ITEM = new FgsTempAllowListItem(
+ Long.MAX_VALUE, REASON_SYSTEM_ALLOW_LISTED, "", INVALID_UID);
+
+ /*
+ * List of uids that are allowed to have while-in-use permission when FGS is started from
+ * background.
+ */
+ private final FgsTempAllowList<Integer, String> mFgsWhileInUseTempAllowList =
+ new FgsTempAllowList();
+
/**
* Information about and control over application operations
*/
@@ -5563,11 +5594,12 @@
*/
@Nullable
@GuardedBy(anyOf = {"this", "mProcLock"})
- FgsStartTempAllowList.TempFgsAllowListEntry isAllowlistedForFgsStartLOSP(int uid) {
+ FgsTempAllowListItem isAllowlistedForFgsStartLOSP(int uid) {
if (Arrays.binarySearch(mDeviceIdleExceptIdleAllowlist, UserHandle.getAppId(uid)) >= 0) {
- return FAKE_TEMP_ALLOWLIST_ENTRY;
+ return FAKE_TEMP_ALLOW_LIST_ITEM;
}
- return mFgsStartTempAllowList.getAllowedDurationAndReason(uid);
+ final Pair<Long, FgsTempAllowListItem> entry = mFgsStartTempAllowList.get(uid);
+ return entry == null ? null : entry.second;
}
/**
@@ -6487,7 +6519,7 @@
final long identity = Binder.clearCallingIdentity();
try {
// Send broadcast to shell to trigger bugreport using Bugreport API
- mContext.sendBroadcast(triggerShellBugreport);
+ mContext.sendBroadcastAsUser(triggerShellBugreport, UserHandle.SYSTEM);
} finally {
Binder.restoreCallingIdentity(identity);
}
@@ -7678,7 +7710,6 @@
// Notify package manager service to possibly update package state
if (r != null && r.info != null && r.info.packageName != null) {
final String codePath = r.info.getCodePath();
- mPackageManagerInt.notifyPackageCrashOrAnr(r.info.packageName);
IncrementalStatesInfo incrementalStatesInfo =
mPackageManagerInt.getIncrementalStatesInfo(r.info.packageName, r.uid,
r.userId);
@@ -9263,7 +9294,24 @@
}
}
pw.println(" mFgsStartTempAllowList:");
- mFgsStartTempAllowList.dump(pw);
+ final long currentTimeNow = System.currentTimeMillis();
+ final long elapsedRealtimeNow = SystemClock.elapsedRealtime();
+ final Set<Integer> uids = mFgsStartTempAllowList.keySet();
+ for (Integer uid : uids) {
+ final Pair<Long, FgsTempAllowListItem> entry = mFgsStartTempAllowList.get(uid);
+ if (entry == null) {
+ continue;
+ }
+ pw.print(" " + UserHandle.formatUid(uid) + ": ");
+ entry.second.dump(pw); pw.println();
+ pw.print("ms expiration=");
+ // Convert entry.mExpirationTime, which is an elapsed time since boot,
+ // to a time since epoch (i.e. System.currentTimeMillis()-based time.)
+ final long expirationInCurrentTime =
+ currentTimeNow - elapsedRealtimeNow + entry.first;
+ TimeUtils.dumpTimeWithDelta(pw, expirationInCurrentTime, currentTimeNow);
+ pw.println();
+ }
}
if (mDebugApp != null || mOrigDebugApp != null || mDebugTransient
|| mOrigWaitForDebugger) {
@@ -12977,11 +13025,6 @@
case Intent.ACTION_PRE_BOOT_COMPLETED:
timeoutExempt = true;
break;
- case Intent.ACTION_PACKAGE_UNSTARTABLE:
- final String packageName = intent.getStringExtra(Intent.EXTRA_PACKAGE_NAME);
- forceStopPackageLocked(packageName, -1, false, true, true,
- false, false, userId, "package unstartable");
- break;
case Intent.ACTION_CLOSE_SYSTEM_DIALOGS:
if (!mAtmInternal.checkCanCloseSystemDialogs(callingPid, callingUid,
callerPackage)) {
@@ -14541,7 +14584,8 @@
mUiHandler.obtainMessage(PUSH_TEMP_ALLOWLIST_UI_MSG).sendToTarget();
if (type == TEMPORARY_ALLOWLIST_TYPE_FOREGROUND_SERVICE_ALLOWED) {
- mFgsStartTempAllowList.add(targetUid, duration, reasonCode, reason, callingUid);
+ mFgsStartTempAllowList.add(targetUid, duration,
+ new FgsTempAllowListItem(duration, reasonCode, reason, callingUid));
}
}
}
@@ -15214,8 +15258,9 @@
mDeviceIdleTempAllowlist = appids;
if (adding) {
if (type == TEMPORARY_ALLOWLIST_TYPE_FOREGROUND_SERVICE_ALLOWED) {
- mFgsStartTempAllowList.add(changingUid, durationMs, reasonCode, reason,
- callingUid);
+ mFgsStartTempAllowList.add(changingUid, durationMs,
+ new FgsTempAllowListItem(durationMs, reasonCode, reason,
+ callingUid));
}
}
setAppIdTempAllowlistStateLSP(changingUid, adding);
@@ -16035,6 +16080,24 @@
return mServices.canStartForegroundServiceLocked(pid, uid, packageName);
}
}
+
+ @Override
+ public void tempAllowWhileInUsePermissionInFgs(int uid, long durationMs) {
+ mFgsWhileInUseTempAllowList.add(uid, durationMs, "");
+ }
+
+ @Override
+ public boolean isTempAllowlistedForFgsWhileInUse(int uid) {
+ return mFgsWhileInUseTempAllowList.isAllowed(uid);
+ }
+
+ @Override
+ public boolean canAllowWhileInUsePermissionInFgs(int pid, int uid,
+ @NonNull String packageName) {
+ synchronized (ActivityManagerService.this) {
+ return mServices.canAllowWhileInUsePermissionInFgsLocked(pid, uid, packageName);
+ }
+ }
}
long inputDispatchingTimedOut(int pid, final boolean aboveSystem, String reason) {
diff --git a/services/core/java/com/android/server/am/BatteryExternalStatsWorker.java b/services/core/java/com/android/server/am/BatteryExternalStatsWorker.java
index 4942b11..859cc44 100644
--- a/services/core/java/com/android/server/am/BatteryExternalStatsWorker.java
+++ b/services/core/java/com/android/server/am/BatteryExternalStatsWorker.java
@@ -137,8 +137,8 @@
@GuardedBy("mWorkerLock")
private PowerStatsInternal mPowerStatsInternal = null;
- // WiFi keeps an accumulated total of stats, unlike Bluetooth.
- // Keep the last WiFi stats so we can compute a delta.
+ // WiFi keeps an accumulated total of stats. Keep the last WiFi stats so we can compute a delta.
+ // (This is unlike Bluetooth, where BatteryStatsImpl is left responsible for taking the delta.)
@GuardedBy("mWorkerLock")
private WifiActivityEnergyInfo mLastWifiInfo =
new WifiActivityEnergyInfo(0, 0, 0, 0, 0, 0);
diff --git a/services/core/java/com/android/server/am/FgsStartTempAllowList.java b/services/core/java/com/android/server/am/FgsStartTempAllowList.java
deleted file mode 100644
index a844c2aa..0000000
--- a/services/core/java/com/android/server/am/FgsStartTempAllowList.java
+++ /dev/null
@@ -1,144 +0,0 @@
-/*
- * Copyright (C) 2020 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.server.am;
-
-import static com.android.server.am.ActivityManagerDebugConfig.TAG_AM;
-
-import android.annotation.Nullable;
-import android.os.PowerWhitelistManager;
-import android.os.PowerWhitelistManager.ReasonCode;
-import android.os.SystemClock;
-import android.os.UserHandle;
-import android.util.Slog;
-import android.util.SparseArray;
-import android.util.TimeUtils;
-
-import java.io.PrintWriter;
-
-/**
- * List of uids that are temporarily allowed to start FGS from background.
- */
-final class FgsStartTempAllowList {
- private static final int MAX_SIZE = 100;
-
- public static final class TempFgsAllowListEntry {
- final long mExpirationTime;
- final long mDuration;
- final @ReasonCode int mReasonCode;
- final String mReason;
- final int mCallingUid;
-
- TempFgsAllowListEntry(long expirationTime, long duration, @ReasonCode int reasonCode,
- String reason, int callingUid) {
- mExpirationTime = expirationTime;
- mDuration = duration;
- mReasonCode = reasonCode;
- mReason = reason;
- mCallingUid = callingUid;
- }
- }
-
- /**
- * The key is the uid, the value is a TempAllowListEntry.
- */
- private final SparseArray<TempFgsAllowListEntry> mTempAllowListFgs = new SparseArray<>();
-
- FgsStartTempAllowList() {
- }
-
- /**
- * Add a uid and its duration with reason into the FGS temp-allowlist.
- * @param uid
- * @param duration temp-allowlisted duration in milliseconds.
- * @param reason A human-readable reason for logging purposes.
- * @param callingUid the callingUid that setup this temp allowlist, only valid when param adding
- * is true.
- */
- void add(int uid, long duration, @ReasonCode int reasonCode, @Nullable String reason,
- int callingUid) {
- if (duration <= 0) {
- Slog.e(TAG_AM, "FgsStartTempAllowList bad duration:" + duration + " uid: "
- + uid);
- return;
- }
- // The temp allowlist should be a short list with only a few entries in it.
- final int size = mTempAllowListFgs.size();
- if (size > MAX_SIZE) {
- Slog.w(TAG_AM, "FgsStartTempAllowList length:" + size + " exceeds " + MAX_SIZE);
- }
- final long now = SystemClock.elapsedRealtime();
- for (int index = mTempAllowListFgs.size() - 1; index >= 0; index--) {
- if (mTempAllowListFgs.valueAt(index).mExpirationTime < now) {
- mTempAllowListFgs.removeAt(index);
- }
- }
- final TempFgsAllowListEntry existing = mTempAllowListFgs.get(uid);
- final long expirationTime = now + duration;
- if (existing == null || existing.mExpirationTime < expirationTime) {
- mTempAllowListFgs.put(uid,
- new TempFgsAllowListEntry(expirationTime, duration, reasonCode,
- reason == null ? "" : reason, callingUid));
- }
- }
-
- /**
- * Is this uid temp-allowlisted to start FGS.
- * @param uid
- * @return If uid is in the temp-allowlist, return the {@link TempFgsAllowListEntry}; If not in
- * temp-allowlist, return null.
- */
- @Nullable
- TempFgsAllowListEntry getAllowedDurationAndReason(int uid) {
- final int index = mTempAllowListFgs.indexOfKey(uid);
- if (index < 0) {
- return null;
- } else if (mTempAllowListFgs.valueAt(index).mExpirationTime
- < SystemClock.elapsedRealtime()) {
- mTempAllowListFgs.removeAt(index);
- return null;
- } else {
- return mTempAllowListFgs.valueAt(index);
- }
- }
-
- void remove(int uid) {
- mTempAllowListFgs.delete(uid);
- }
-
- void dump(PrintWriter pw) {
- final long currentTimeNow = System.currentTimeMillis();
- final long elapsedRealtimeNow = SystemClock.elapsedRealtime();
- for (int i = 0; i < mTempAllowListFgs.size(); i++) {
- final int uid = mTempAllowListFgs.keyAt(i);
- final TempFgsAllowListEntry entry = mTempAllowListFgs.valueAt(i);
- pw.println(
- " " + UserHandle.formatUid(uid) + ": " +
- " callingUid=" + UserHandle.formatUid(entry.mCallingUid) +
- " reasonCode=" + PowerWhitelistManager.reasonCodeToString(entry.mReasonCode) +
- " reason=" + entry.mReason);
- pw.print(" duration=" + entry.mDuration +
- "ms expiration=");
-
- // Convert entry.mExpirationTime, which is an elapsed time since boot,
- // to a time since epoch (i.e. System.currentTimeMillis()-based time.)
- final long expirationInCurrentTime =
- currentTimeNow - elapsedRealtimeNow + entry.mExpirationTime;
- TimeUtils.dumpTimeWithDelta(pw, expirationInCurrentTime, currentTimeNow);
- pw.println();
- }
- }
-}
diff --git a/services/core/java/com/android/server/am/FgsTempAllowList.java b/services/core/java/com/android/server/am/FgsTempAllowList.java
new file mode 100644
index 0000000..847e82f
--- /dev/null
+++ b/services/core/java/com/android/server/am/FgsTempAllowList.java
@@ -0,0 +1,148 @@
+/*
+ * Copyright (C) 2021 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 com.android.server.am;
+
+import static com.android.server.am.ActivityManagerDebugConfig.TAG_AM;
+
+import android.annotation.Nullable;
+import android.os.SystemClock;
+import android.util.ArrayMap;
+import android.util.Pair;
+import android.util.Slog;
+
+import java.util.Set;
+
+/**
+ * List of keys that have expiration time.
+ * If the expiration time is less than current elapsedRealtime, the key has expired.
+ * Otherwise it is valid (or allowed).
+ *
+ * <p>This is used for both FGS-BG-start restriction, and FGS-while-in-use permissions check.</p>
+ *
+ * <p>Note: the underlying data structure is an {@link ArrayMap}, for performance reason, it is only
+ * suitable to hold up to hundreds of entries.</p>
+ * @param <K> type of the key.
+ * @param <E> type of the additional optional info.
+ */
+public class FgsTempAllowList<K, E> {
+ private static final int DEFAULT_MAX_SIZE = 100;
+
+ /**
+ * The value is Pair type, Pair.first is the expirationTime(an elapsedRealtime),
+ * Pair.second is the optional information entry about this key.
+ */
+ private final ArrayMap<K, Pair<Long, E>> mTempAllowList = new ArrayMap<>();
+ private int mMaxSize = DEFAULT_MAX_SIZE;
+ private final Object mLock = new Object();
+
+ public FgsTempAllowList() {
+ }
+
+ /**
+ *
+ * @param maxSize The max size of the list. It is only a suggestion. If the list size is
+ * larger than max size, a warning message is printed in logcat, new entry can
+ * still be added to the list. The default max size is {@link #DEFAULT_MAX_SIZE}.
+ */
+ public FgsTempAllowList(int maxSize) {
+ if (maxSize <= 0) {
+ Slog.e(TAG_AM, "Invalid FgsTempAllowList maxSize:" + maxSize
+ + ", force default maxSize:" + DEFAULT_MAX_SIZE);
+ mMaxSize = DEFAULT_MAX_SIZE;
+ } else {
+ mMaxSize = maxSize;
+ }
+ }
+
+ /**
+ * Add a key and its duration with optional info into the temp allowlist.
+ * @param key
+ * @param durationMs temp-allowlisted duration in milliseconds.
+ * @param entry additional optional information of this key, could be null.
+ */
+ public void add(K key, long durationMs, @Nullable E entry) {
+ synchronized (mLock) {
+ if (durationMs <= 0) {
+ Slog.e(TAG_AM, "FgsTempAllowList bad duration:" + durationMs + " key: "
+ + key);
+ return;
+ }
+ // The temp allowlist should be a short list with only a few entries in it.
+ // for a very large list, HashMap structure should be used.
+ final long now = SystemClock.elapsedRealtime();
+ final int size = mTempAllowList.size();
+ if (size > mMaxSize) {
+ Slog.w(TAG_AM, "FgsTempAllowList length:" + size + " exceeds maxSize"
+ + mMaxSize);
+ for (int index = size - 1; index >= 0; index--) {
+ if (mTempAllowList.valueAt(index).first < now) {
+ mTempAllowList.removeAt(index);
+ }
+ }
+ }
+ final Pair<Long, E> existing = mTempAllowList.get(key);
+ final long expirationTime = now + durationMs;
+ if (existing == null || existing.first < expirationTime) {
+ mTempAllowList.put(key, new Pair(expirationTime, entry));
+ }
+ }
+ }
+
+ /**
+ * If the key has not expired (AKA allowed), return its non-null value.
+ * If the key has expired, return null.
+ * @param key
+ * @return
+ */
+ @Nullable
+ public Pair<Long, E> get(K key) {
+ synchronized (mLock) {
+ final int index = mTempAllowList.indexOfKey(key);
+ if (index < 0) {
+ return null;
+ } else if (mTempAllowList.valueAt(index).first < SystemClock.elapsedRealtime()) {
+ mTempAllowList.removeAt(index);
+ return null;
+ } else {
+ return mTempAllowList.valueAt(index);
+ }
+ }
+ }
+
+ /**
+ * If the key has not expired (AKA allowed), return true.
+ * If the key has expired, return false.
+ * @param key
+ * @return
+ */
+ public boolean isAllowed(K key) {
+ Pair<Long, E> entry = get(key);
+ return entry != null;
+ }
+
+ public void remove(K key) {
+ synchronized (mLock) {
+ mTempAllowList.remove(key);
+ }
+ }
+
+ public Set<K> keySet() {
+ synchronized (mLock) {
+ return mTempAllowList.keySet();
+ }
+ }
+}
diff --git a/services/core/java/com/android/server/am/ProcessErrorStateRecord.java b/services/core/java/com/android/server/am/ProcessErrorStateRecord.java
index 00184f9..6ff3bf6 100644
--- a/services/core/java/com/android/server/am/ProcessErrorStateRecord.java
+++ b/services/core/java/com/android/server/am/ProcessErrorStateRecord.java
@@ -472,11 +472,6 @@
mDialogController.setAnrController(anrController);
}
- // Notify package manager service to possibly update package state
- if (aInfo != null && aInfo.packageName != null) {
- packageManagerInternal.notifyPackageCrashOrAnr(aInfo.packageName);
- }
-
// mUiHandler can be null if the AMS is constructed with injector only. This will only
// happen in tests.
if (mService.mUiHandler != null) {
diff --git a/services/core/java/com/android/server/am/ProcessStateRecord.java b/services/core/java/com/android/server/am/ProcessStateRecord.java
index d97d343..94e7f34 100644
--- a/services/core/java/com/android/server/am/ProcessStateRecord.java
+++ b/services/core/java/com/android/server/am/ProcessStateRecord.java
@@ -1253,13 +1253,13 @@
if (mAllowStartFgs == REASON_DENIED) {
// uid is on DeviceIdleController's user/system allowlist
// or AMS's FgsStartTempAllowList.
- FgsStartTempAllowList.TempFgsAllowListEntry entry =
+ ActivityManagerService.FgsTempAllowListItem item =
mService.isAllowlistedForFgsStartLOSP(mApp.info.uid);
- if (entry != null) {
- if (entry == ActivityManagerService.FAKE_TEMP_ALLOWLIST_ENTRY) {
+ if (item != null) {
+ if (item == ActivityManagerService.FAKE_TEMP_ALLOW_LIST_ITEM) {
mAllowStartFgs = REASON_SYSTEM_ALLOW_LISTED;
} else {
- mAllowStartFgs = entry.mReasonCode;
+ mAllowStartFgs = item.mReasonCode;
}
}
}
diff --git a/services/core/java/com/android/server/am/ServiceRecord.java b/services/core/java/com/android/server/am/ServiceRecord.java
index 21a02ed8..fd59e85 100644
--- a/services/core/java/com/android/server/am/ServiceRecord.java
+++ b/services/core/java/com/android/server/am/ServiceRecord.java
@@ -179,7 +179,7 @@
// Debug info why mAllowStartForeground is allowed or denied.
String mInfoAllowStartForeground;
// Debug info if mAllowStartForeground is allowed because of a temp-allowlist.
- FgsStartTempAllowList.TempFgsAllowListEntry mInfoTempFgsAllowListReason;
+ ActivityManagerService.FgsTempAllowListItem mInfoTempFgsAllowListReason;
// Is the same mInfoAllowStartForeground string has been logged before? Used for dedup.
boolean mLoggedInfoAllowStartForeground;
// The number of times Service.startForeground() is called;
diff --git a/services/core/java/com/android/server/apphibernation/AppHibernationService.java b/services/core/java/com/android/server/apphibernation/AppHibernationService.java
index fd829fa..aa51800 100644
--- a/services/core/java/com/android/server/apphibernation/AppHibernationService.java
+++ b/services/core/java/com/android/server/apphibernation/AppHibernationService.java
@@ -109,7 +109,7 @@
private final boolean mOatArtifactDeletionEnabled;
@VisibleForTesting
- static boolean sIsServiceEnabled;
+ public static boolean sIsServiceEnabled;
/**
* Initializes the system service.
diff --git a/services/core/java/com/android/server/appop/AppOpsService.java b/services/core/java/com/android/server/appop/AppOpsService.java
index 3f07572..2a0beb8 100644
--- a/services/core/java/com/android/server/appop/AppOpsService.java
+++ b/services/core/java/com/android/server/appop/AppOpsService.java
@@ -565,6 +565,9 @@
} else if (mActivityManagerInternal != null
&& mActivityManagerInternal.isPendingTopUid(uid)) {
return MODE_ALLOWED;
+ } else if (mActivityManagerInternal != null
+ && mActivityManagerInternal.isTempAllowlistedForFgsWhileInUse(uid)) {
+ return MODE_ALLOWED;
} else if (state <= UID_STATE_TOP) {
// process is in TOP.
return MODE_ALLOWED;
diff --git a/services/core/java/com/android/server/biometrics/BiometricStrengthController.java b/services/core/java/com/android/server/biometrics/BiometricStrengthController.java
index c96a182..270621c 100644
--- a/services/core/java/com/android/server/biometrics/BiometricStrengthController.java
+++ b/services/core/java/com/android/server/biometrics/BiometricStrengthController.java
@@ -84,6 +84,8 @@
final int id = sensor.id;
if (idToStrength.containsKey(id)) {
final int newStrength = idToStrength.get(id);
+ Slog.d(TAG, "updateStrengths: update sensorId=" + id + " to newStrength="
+ + newStrength);
sensor.updateStrength(newStrength);
}
}
diff --git a/services/core/java/com/android/server/biometrics/Utils.java b/services/core/java/com/android/server/biometrics/Utils.java
index f4cb387..996f0fd 100644
--- a/services/core/java/com/android/server/biometrics/Utils.java
+++ b/services/core/java/com/android/server/biometrics/Utils.java
@@ -411,6 +411,23 @@
}
/**
+ * Returns the sensor's current strength, taking any updated strengths into effect.
+ *
+ * @param sensorId The sensor Id
+ * @return see {@link BiometricManager.Authenticators}
+ */
+ public static @Authenticators.Types int getCurrentStrength(int sensorId) {
+ IBiometricService service = IBiometricService.Stub.asInterface(
+ ServiceManager.getService(Context.BIOMETRIC_SERVICE));
+ try {
+ return service.getCurrentStrength(sensorId);
+ } catch (RemoteException e) {
+ Slog.e(TAG, "RemoteException", e);
+ return Authenticators.EMPTY_SET;
+ }
+ }
+
+ /**
* Checks if a client package matches Keyguard and can perform internal biometric operations.
*
* @param context The system context.
diff --git a/services/core/java/com/android/server/biometrics/sensors/face/aidl/Sensor.java b/services/core/java/com/android/server/biometrics/sensors/face/aidl/Sensor.java
index b795b54..82b1271d 100644
--- a/services/core/java/com/android/server/biometrics/sensors/face/aidl/Sensor.java
+++ b/services/core/java/com/android/server/biometrics/sensors/face/aidl/Sensor.java
@@ -557,6 +557,8 @@
proto.write(SensorStateProto.SENSOR_ID, mSensorProperties.sensorId);
proto.write(SensorStateProto.MODALITY, SensorStateProto.FACE);
+ proto.write(SensorStateProto.CURRENT_STRENGTH,
+ Utils.getCurrentStrength(mSensorProperties.sensorId));
proto.write(SensorStateProto.SCHEDULER, mScheduler.dumpProtoState(clearSchedulerBuffer));
for (UserInfo user : UserManager.get(mContext).getUsers()) {
diff --git a/services/core/java/com/android/server/biometrics/sensors/face/hidl/Face10.java b/services/core/java/com/android/server/biometrics/sensors/face/hidl/Face10.java
index 2cb2939..a40155b 100644
--- a/services/core/java/com/android/server/biometrics/sensors/face/hidl/Face10.java
+++ b/services/core/java/com/android/server/biometrics/sensors/face/hidl/Face10.java
@@ -807,6 +807,8 @@
proto.write(SensorStateProto.SENSOR_ID, mSensorProperties.sensorId);
proto.write(SensorStateProto.MODALITY, SensorStateProto.FACE);
+ proto.write(SensorStateProto.CURRENT_STRENGTH,
+ Utils.getCurrentStrength(mSensorProperties.sensorId));
proto.write(SensorStateProto.SCHEDULER, mScheduler.dumpProtoState(clearSchedulerBuffer));
for (UserInfo user : UserManager.get(mContext).getUsers()) {
diff --git a/services/core/java/com/android/server/biometrics/sensors/fingerprint/aidl/Sensor.java b/services/core/java/com/android/server/biometrics/sensors/fingerprint/aidl/Sensor.java
index 6a9b125..8be664e 100644
--- a/services/core/java/com/android/server/biometrics/sensors/fingerprint/aidl/Sensor.java
+++ b/services/core/java/com/android/server/biometrics/sensors/fingerprint/aidl/Sensor.java
@@ -527,6 +527,8 @@
proto.write(SensorStateProto.SENSOR_ID, mSensorProperties.sensorId);
proto.write(SensorStateProto.MODALITY, SensorStateProto.FINGERPRINT);
+ proto.write(SensorStateProto.CURRENT_STRENGTH,
+ Utils.getCurrentStrength(mSensorProperties.sensorId));
proto.write(SensorStateProto.SCHEDULER, mScheduler.dumpProtoState(clearSchedulerBuffer));
for (UserInfo user : UserManager.get(mContext).getUsers()) {
diff --git a/services/core/java/com/android/server/biometrics/sensors/fingerprint/hidl/Fingerprint21.java b/services/core/java/com/android/server/biometrics/sensors/fingerprint/hidl/Fingerprint21.java
index eb78245..fd7ef09 100644
--- a/services/core/java/com/android/server/biometrics/sensors/fingerprint/hidl/Fingerprint21.java
+++ b/services/core/java/com/android/server/biometrics/sensors/fingerprint/hidl/Fingerprint21.java
@@ -764,6 +764,8 @@
proto.write(SensorStateProto.SENSOR_ID, mSensorProperties.sensorId);
proto.write(SensorStateProto.MODALITY, SensorStateProto.FINGERPRINT);
+ proto.write(SensorStateProto.CURRENT_STRENGTH,
+ Utils.getCurrentStrength(mSensorProperties.sensorId));
proto.write(SensorStateProto.SCHEDULER, mScheduler.dumpProtoState(clearSchedulerBuffer));
for (UserInfo user : UserManager.get(mContext).getUsers()) {
diff --git a/services/core/java/com/android/server/clipboard/ClipboardService.java b/services/core/java/com/android/server/clipboard/ClipboardService.java
index 47c7e39..e2aa071 100644
--- a/services/core/java/com/android/server/clipboard/ClipboardService.java
+++ b/services/core/java/com/android/server/clipboard/ClipboardService.java
@@ -952,14 +952,8 @@
try {
CharSequence callingAppLabel = mPm.getApplicationLabel(
mPm.getApplicationInfoAsUser(callingPackage, 0, userId));
- String message;
- if (isText(clipboard.primaryClip)) {
- message = getContext().getString(
- R.string.pasted_text, callingAppLabel);
- } else {
- message = getContext().getString(
- R.string.pasted_content, callingAppLabel);
- }
+ String message =
+ getContext().getString(R.string.pasted_from_clipboard, callingAppLabel);
Slog.i(TAG, message);
Toast.makeText(
getContext(), UiThread.get().getLooper(), message, Toast.LENGTH_SHORT)
diff --git a/services/core/java/com/android/server/location/geofence/GeofenceManager.java b/services/core/java/com/android/server/location/geofence/GeofenceManager.java
index 7f47805..a52c9ce 100644
--- a/services/core/java/com/android/server/location/geofence/GeofenceManager.java
+++ b/services/core/java/com/android/server/location/geofence/GeofenceManager.java
@@ -70,7 +70,7 @@
private static final long WAKELOCK_TIMEOUT_MS = 30000;
private static final int MAX_SPEED_M_S = 100; // 360 km/hr (high speed train)
- private static final long MAX_LOCATION_AGE_NANOS = 5 * 60 * 1000000000L; // five minutes
+ private static final long MAX_LOCATION_AGE_MS = 5 * 60 * 1000L; // five minutes
private static final long MAX_LOCATION_INTERVAL_MS = 2 * 60 * 60 * 1000; // two hours
protected final class GeofenceRegistration extends
@@ -472,7 +472,7 @@
}
if (location != null) {
- if (location.getElapsedRealtimeAgeNanos() > MAX_LOCATION_AGE_NANOS) {
+ if (location.getElapsedRealtimeAgeMillis() > MAX_LOCATION_AGE_MS) {
location = null;
}
}
@@ -480,25 +480,25 @@
return location;
}
- private void onUserChanged(int userId, int change) {
+ void onUserChanged(int userId, int change) {
if (change == UserListener.CURRENT_USER_CHANGED) {
updateRegistrations(registration -> registration.getIdentity().getUserId() == userId);
}
}
- private void onLocationEnabledChanged(int userId) {
+ void onLocationEnabledChanged(int userId) {
updateRegistrations(registration -> registration.getIdentity().getUserId() == userId);
}
- private void onLocationPackageBlacklistChanged(int userId) {
+ void onLocationPackageBlacklistChanged(int userId) {
updateRegistrations(registration -> registration.getIdentity().getUserId() == userId);
}
- private void onLocationPermissionsChanged(String packageName) {
+ void onLocationPermissionsChanged(String packageName) {
updateRegistrations(registration -> registration.onLocationPermissionsChanged(packageName));
}
- private void onLocationPermissionsChanged(int uid) {
+ void onLocationPermissionsChanged(int uid) {
updateRegistrations(registration -> registration.onLocationPermissionsChanged(uid));
}
}
diff --git a/services/core/java/com/android/server/location/gnss/GnssLocationProvider.java b/services/core/java/com/android/server/location/gnss/GnssLocationProvider.java
index 1e5a15e..1cccf08 100644
--- a/services/core/java/com/android/server/location/gnss/GnssLocationProvider.java
+++ b/services/core/java/com/android/server/location/gnss/GnssLocationProvider.java
@@ -603,7 +603,7 @@
Log.d(TAG, "injectBestLocation: " + location);
}
- if (location.isFromMockProvider()) {
+ if (location.isMock()) {
return;
}
@@ -676,7 +676,7 @@
}
private void injectLocation(Location location) {
- if (!location.isFromMockProvider()) {
+ if (!location.isMock()) {
mGnssNative.injectLocation(location);
}
}
diff --git a/services/core/java/com/android/server/location/provider/LocationProviderManager.java b/services/core/java/com/android/server/location/provider/LocationProviderManager.java
index 102263b..0be325f 100644
--- a/services/core/java/com/android/server/location/provider/LocationProviderManager.java
+++ b/services/core/java/com/android/server/location/provider/LocationProviderManager.java
@@ -25,12 +25,12 @@
import static android.location.LocationManager.KEY_PROVIDER_ENABLED;
import static android.location.LocationManager.PASSIVE_PROVIDER;
import static android.os.IPowerManager.LOCATION_MODE_NO_CHANGE;
+import static android.os.PowerExemptionManager.REASON_LOCATION_PROVIDER;
+import static android.os.PowerExemptionManager.TEMPORARY_ALLOW_LIST_TYPE_FOREGROUND_SERVICE_ALLOWED;
import static android.os.PowerManager.LOCATION_MODE_ALL_DISABLED_WHEN_SCREEN_OFF;
import static android.os.PowerManager.LOCATION_MODE_FOREGROUND_ONLY;
import static android.os.PowerManager.LOCATION_MODE_GPS_DISABLED_WHEN_SCREEN_OFF;
import static android.os.PowerManager.LOCATION_MODE_THROTTLE_REQUESTS_WHEN_SCREEN_OFF;
-import static android.os.PowerWhitelistManager.REASON_LOCATION_PROVIDER;
-import static android.os.PowerWhitelistManager.TEMPORARY_ALLOWLIST_TYPE_FOREGROUND_SERVICE_ALLOWED;
import static com.android.server.location.LocationManagerService.D;
import static com.android.server.location.LocationManagerService.TAG;
@@ -148,10 +148,10 @@
private static final long MAX_HIGH_POWER_INTERVAL_MS = 5 * 60 * 1000;
// max age of a location before it is no longer considered "current"
- private static final long MAX_CURRENT_LOCATION_AGE_MS = 10 * 1000;
+ private static final long MAX_CURRENT_LOCATION_AGE_MS = 30 * 1000;
// max timeout allowed for getting the current location
- private static final long GET_CURRENT_LOCATION_MAX_TIMEOUT_MS = 30 * 1000;
+ private static final long MAX_GET_CURRENT_LOCATION_TIMEOUT_MS = 30 * 1000;
// max jitter allowed for min update interval as a percentage of the interval
private static final float FASTEST_INTERVAL_JITTER_PERCENTAGE = .10f;
@@ -230,7 +230,7 @@
options.setDontSendToRestrictedApps(true);
// allows apps to start a fg service in response to a location PI
options.setTemporaryAppAllowlist(TEMPORARY_APP_ALLOWLIST_DURATION_MS,
- TEMPORARY_ALLOWLIST_TYPE_FOREGROUND_SERVICE_ALLOWED,
+ TEMPORARY_ALLOW_LIST_TYPE_FOREGROUND_SERVICE_ALLOWED,
REASON_LOCATION_PROVIDER,
"");
@@ -851,7 +851,7 @@
mUseWakeLock = false;
final int size = locationResult.size();
for (int i = 0; i < size; ++i) {
- if (!locationResult.get(i).isFromMockProvider()) {
+ if (!locationResult.get(i).isMock()) {
mUseWakeLock = true;
break;
}
@@ -1655,9 +1655,9 @@
public @Nullable ICancellationSignal getCurrentLocation(LocationRequest request,
CallerIdentity identity, int permissionLevel, ILocationCallback callback) {
- if (request.getDurationMillis() > GET_CURRENT_LOCATION_MAX_TIMEOUT_MS) {
+ if (request.getDurationMillis() > MAX_GET_CURRENT_LOCATION_TIMEOUT_MS) {
request = new LocationRequest.Builder(request)
- .setDurationMillis(GET_CURRENT_LOCATION_MAX_TIMEOUT_MS)
+ .setDurationMillis(MAX_GET_CURRENT_LOCATION_TIMEOUT_MS)
.build();
}
@@ -2302,7 +2302,7 @@
LocationResult filtered;
if (mPassiveManager != null) {
filtered = locationResult.filter(location -> {
- if (!location.isFromMockProvider()) {
+ if (!location.isMock()) {
if (location.getLatitude() == 0 && location.getLongitude() == 0) {
Log.w(TAG, "blocking 0,0 location from " + mName + " provider");
return false;
@@ -2539,16 +2539,16 @@
LastLocation() {}
public void clearMock() {
- if (mFineLocation != null && mFineLocation.isFromMockProvider()) {
+ if (mFineLocation != null && mFineLocation.isMock()) {
mFineLocation = null;
}
- if (mCoarseLocation != null && mCoarseLocation.isFromMockProvider()) {
+ if (mCoarseLocation != null && mCoarseLocation.isMock()) {
mCoarseLocation = null;
}
- if (mFineBypassLocation != null && mFineBypassLocation.isFromMockProvider()) {
+ if (mFineBypassLocation != null && mFineBypassLocation.isMock()) {
mFineBypassLocation = null;
}
- if (mCoarseBypassLocation != null && mCoarseBypassLocation.isFromMockProvider()) {
+ if (mCoarseBypassLocation != null && mCoarseBypassLocation.isMock()) {
mCoarseBypassLocation = null;
}
}
diff --git a/services/core/java/com/android/server/locksettings/RebootEscrowManager.java b/services/core/java/com/android/server/locksettings/RebootEscrowManager.java
index c01523a..90694d0 100644
--- a/services/core/java/com/android/server/locksettings/RebootEscrowManager.java
+++ b/services/core/java/com/android/server/locksettings/RebootEscrowManager.java
@@ -205,6 +205,7 @@
Slog.i(TAG, "Using server based resume on reboot");
rebootEscrowProvider = new RebootEscrowProviderServerBasedImpl(mContext, mStorage);
} else {
+ Slog.i(TAG, "Using HAL based resume on reboot");
rebootEscrowProvider = new RebootEscrowProviderHalImpl();
}
@@ -239,7 +240,7 @@
return mKeyStoreManager;
}
- public RebootEscrowProviderInterface getRebootEscrowProvider() {
+ public RebootEscrowProviderInterface createRebootEscrowProviderIfNeeded() {
// Initialize for the provider lazily. Because the device_config and service
// implementation apps may change when system server is running.
if (mRebootEscrowProvider == null) {
@@ -249,6 +250,14 @@
return mRebootEscrowProvider;
}
+ public RebootEscrowProviderInterface getRebootEscrowProvider() {
+ return mRebootEscrowProvider;
+ }
+
+ public void clearRebootEscrowProvider() {
+ mRebootEscrowProvider = null;
+ }
+
public int getBootCount() {
return Settings.Global.getInt(mContext.getContentResolver(), Settings.Global.BOOT_COUNT,
0);
@@ -308,8 +317,6 @@
mStorage.removeRebootEscrow(user.id);
}
- // Clear the old key in keystore.
- mKeyStoreManager.clearKeyStoreEncryptionKey();
onEscrowRestoreComplete(false, attemptCount);
}
@@ -395,9 +402,6 @@
allUsersUnlocked &= restoreRebootEscrowForUser(user.id, escrowKey, kk);
}
- // Clear the old key in keystore. A new key will be generated by new RoR requests.
- mKeyStoreManager.clearKeyStoreEncryptionKey();
-
if (!allUsersUnlocked && mLoadEscrowDataErrorCode == ERROR_NONE) {
mLoadEscrowDataErrorCode = ERROR_UNLOCK_ALL_USERS;
}
@@ -473,11 +477,17 @@
if (success || (previousBootCount != -1 && bootCountDelta <= BOOT_COUNT_TOLERANCE)) {
reportMetricOnRestoreComplete(success, attemptCount);
}
+
+ // Clear the old key in keystore. A new key will be generated by new RoR requests.
+ mKeyStoreManager.clearKeyStoreEncryptionKey();
+ // Clear the saved reboot escrow provider
+ mInjector.clearRebootEscrowProvider();
clearMetricsStorage();
}
private RebootEscrowKey getAndClearRebootEscrowKey(SecretKey kk) throws IOException {
- RebootEscrowProviderInterface rebootEscrowProvider = mInjector.getRebootEscrowProvider();
+ RebootEscrowProviderInterface rebootEscrowProvider =
+ mInjector.createRebootEscrowProviderIfNeeded();
if (rebootEscrowProvider == null) {
Slog.w(TAG,
"Had reboot escrow data for users, but RebootEscrowProvider is unavailable");
@@ -529,9 +539,8 @@
return;
}
- if (mInjector.getRebootEscrowProvider() == null) {
- Slog.w(TAG,
- "Had reboot escrow data for users, but RebootEscrowProvider is unavailable");
+ if (mInjector.createRebootEscrowProviderIfNeeded() == null) {
+ Slog.w(TAG, "Not storing escrow data, RebootEscrowProvider is unavailable");
return;
}
@@ -586,13 +595,17 @@
mRebootEscrowWanted = false;
setRebootEscrowReady(false);
- RebootEscrowProviderInterface rebootEscrowProvider = mInjector.getRebootEscrowProvider();
+ // We want to clear the internal data inside the provider, so always try to create the
+ // provider.
+ RebootEscrowProviderInterface rebootEscrowProvider =
+ mInjector.createRebootEscrowProviderIfNeeded();
if (rebootEscrowProvider == null) {
Slog.w(TAG, "RebootEscrowProvider is unavailable for clear request");
} else {
rebootEscrowProvider.clearRebootEscrowKey();
}
+ mInjector.clearRebootEscrowProvider();
clearMetricsStorage();
List<UserInfo> users = mUserManager.getUsers();
@@ -610,8 +623,7 @@
RebootEscrowProviderInterface rebootEscrowProvider = mInjector.getRebootEscrowProvider();
if (rebootEscrowProvider == null) {
- Slog.w(TAG,
- "Had reboot escrow data for users, but RebootEscrowProvider is unavailable");
+ Slog.w(TAG, "Not storing escrow key, RebootEscrowProvider is unavailable");
clearRebootEscrowIfNeeded();
return ARM_REBOOT_ERROR_NO_PROVIDER;
}
@@ -677,11 +689,12 @@
}
boolean prepareRebootEscrow() {
- if (mInjector.getRebootEscrowProvider() == null) {
+ clearRebootEscrowIfNeeded();
+ if (mInjector.createRebootEscrowProviderIfNeeded() == null) {
+ Slog.w(TAG, "No reboot escrow provider, skipping resume on reboot preparation.");
return false;
}
- clearRebootEscrowIfNeeded();
mRebootEscrowWanted = true;
mEventLog.addEntry(RebootEscrowEvent.REQUESTED_LSKF);
return true;
@@ -807,6 +820,10 @@
pw.print("mPendingRebootEscrowKey is ");
pw.println(keySet ? "set" : "not set");
+ RebootEscrowProviderInterface provider = mInjector.getRebootEscrowProvider();
+ String providerType = provider == null ? "null" : String.valueOf(provider.getType());
+ pw.print("RebootEscrowProvider type is " + providerType);
+
pw.println();
pw.println("Event log:");
pw.increaseIndent();
diff --git a/services/core/java/com/android/server/media/MediaButtonReceiverHolder.java b/services/core/java/com/android/server/media/MediaButtonReceiverHolder.java
index bb996a0..9a19031 100644
--- a/services/core/java/com/android/server/media/MediaButtonReceiverHolder.java
+++ b/services/core/java/com/android/server/media/MediaButtonReceiverHolder.java
@@ -195,6 +195,7 @@
options.setTemporaryAppAllowlist(fgsAllowlistDurationMs,
PowerWhitelistManager.TEMPORARY_ALLOWLIST_TYPE_FOREGROUND_SERVICE_ALLOWED,
PowerWhitelistManager.REASON_MEDIA_BUTTON, "");
+ options.setBackgroundActivityStartsAllowed(true);
if (mPendingIntent != null) {
if (DEBUG_KEY_EVENT) {
Log.d(TAG, "Sending " + keyEvent + " to the last known PendingIntent "
diff --git a/services/core/java/com/android/server/media/MediaRouter2ServiceImpl.java b/services/core/java/com/android/server/media/MediaRouter2ServiceImpl.java
index ba1e23c..1dbc8a9 100644
--- a/services/core/java/com/android/server/media/MediaRouter2ServiceImpl.java
+++ b/services/core/java/com/android/server/media/MediaRouter2ServiceImpl.java
@@ -25,6 +25,7 @@
import static com.android.internal.util.function.pooled.PooledLambda.obtainMessage;
+import android.Manifest;
import android.annotation.NonNull;
import android.annotation.Nullable;
import android.app.ActivityManager;
@@ -142,16 +143,14 @@
////////////////////////////////////////////////////////////////
@NonNull
- public void checkModifyAudioRoutingPermission() {
+ public void enforceMediaContentControlPermission() {
final int pid = Binder.getCallingPid();
final int uid = Binder.getCallingUid();
final long token = Binder.clearCallingIdentity();
try {
- if (mContext.checkPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING, pid, uid)
- != PackageManager.PERMISSION_GRANTED) {
- throw new SecurityException("Must hold the MODIFY_AUDIO_ROUTING permission.");
- }
+ mContext.enforcePermission(Manifest.permission.MEDIA_CONTENT_CONTROL, pid, uid,
+ "Must hold MEDIA_CONTENT_CONTROL permission.");
} finally {
Binder.restoreCallingIdentity(token);
}
@@ -890,6 +889,9 @@
return;
}
+ mContext.enforcePermission(Manifest.permission.MEDIA_CONTENT_CONTROL, pid, uid,
+ "Must hold MEDIA_CONTENT_CONTROL permission.");
+
UserRecord userRecord = getOrCreateUserRecordLocked(userId);
managerRecord = new ManagerRecord(userRecord, manager, uid, pid, packageName);
try {
diff --git a/services/core/java/com/android/server/media/MediaRouterService.java b/services/core/java/com/android/server/media/MediaRouterService.java
index 3d19b70..384bc99 100644
--- a/services/core/java/com/android/server/media/MediaRouterService.java
+++ b/services/core/java/com/android/server/media/MediaRouterService.java
@@ -438,8 +438,8 @@
// Binder call
@Override
- public void checkModifyAudioRoutingPermission() {
- mService2.checkModifyAudioRoutingPermission();
+ public void enforceMediaContentControlPermission() {
+ mService2.enforceMediaContentControlPermission();
}
// Binder call
diff --git a/services/core/java/com/android/server/media/MediaSessionDeviceConfig.java b/services/core/java/com/android/server/media/MediaSessionDeviceConfig.java
index 9bb8e2e..7e747ce 100644
--- a/services/core/java/com/android/server/media/MediaSessionDeviceConfig.java
+++ b/services/core/java/com/android/server/media/MediaSessionDeviceConfig.java
@@ -46,6 +46,18 @@
private static volatile long sMediaSessionCallbackFgsAllowlistDurationMs =
DEFAULT_MEDIA_SESSION_CALLBACK_FGS_ALLOWLIST_DURATION_MS;
+ /**
+ * Denotes the duration for which an app receiving a media session callback and the FGS started
+ * there can be temporarily allowed to have while-in-use permissions such as
+ * location/camera/microphone for a duration of time.
+ */
+ private static final String KEY_MEDIA_SESSION_CALLBACK_FGS_WHILE_IN_USE_TEMP_ALLOW_DURATION_MS =
+ "media_session_callback_fgs_while_in_use_temp_allow_duration_ms";
+ private static final long DEFAULT_MEDIA_SESSION_CALLBACK_FGS_WHILE_IN_USE_TEMP_ALLOW_DURATION_MS
+ = 10_000;
+ private static volatile long sMediaSessionCallbackFgsWhileInUseTempAllowDurationMs =
+ DEFAULT_MEDIA_SESSION_CALLBACK_FGS_WHILE_IN_USE_TEMP_ALLOW_DURATION_MS;
+
private static void refresh(DeviceConfig.Properties properties) {
final Set<String> keys = properties.getKeyset();
properties.getKeyset().forEach(key -> {
@@ -58,6 +70,9 @@
sMediaSessionCallbackFgsAllowlistDurationMs = properties.getLong(key,
DEFAULT_MEDIA_SESSION_CALLBACK_FGS_ALLOWLIST_DURATION_MS);
break;
+ case KEY_MEDIA_SESSION_CALLBACK_FGS_WHILE_IN_USE_TEMP_ALLOW_DURATION_MS:
+ sMediaSessionCallbackFgsWhileInUseTempAllowDurationMs = properties.getLong(key,
+ DEFAULT_MEDIA_SESSION_CALLBACK_FGS_WHILE_IN_USE_TEMP_ALLOW_DURATION_MS);
}
});
}
@@ -86,6 +101,15 @@
return sMediaSessionCallbackFgsAllowlistDurationMs;
}
+ /**
+ * Return the duration for which an app receiving a media session callback and the FGS started
+ * there can be temporarily allowed to have while-in-use permissions such as
+ * location/camera/micrphone.
+ */
+ public static long getMediaSessionCallbackFgsWhileInUseTempAllowDurationMs() {
+ return sMediaSessionCallbackFgsWhileInUseTempAllowDurationMs;
+ }
+
public static void dump(PrintWriter pw, String prefix) {
pw.println("Media session config:");
final String dumpFormat = prefix + " %s: [cur: %s, def: %s]";
@@ -97,5 +121,9 @@
KEY_MEDIA_SESSION_CALLBACK_FGS_ALLOWLIST_DURATION_MS,
sMediaSessionCallbackFgsAllowlistDurationMs,
DEFAULT_MEDIA_SESSION_CALLBACK_FGS_ALLOWLIST_DURATION_MS));
+ pw.println(TextUtils.formatSimple(dumpFormat,
+ KEY_MEDIA_SESSION_CALLBACK_FGS_WHILE_IN_USE_TEMP_ALLOW_DURATION_MS,
+ sMediaSessionCallbackFgsWhileInUseTempAllowDurationMs,
+ DEFAULT_MEDIA_SESSION_CALLBACK_FGS_WHILE_IN_USE_TEMP_ALLOW_DURATION_MS));
}
}
diff --git a/services/core/java/com/android/server/media/MediaSessionRecord.java b/services/core/java/com/android/server/media/MediaSessionRecord.java
index b10d56b..abcf4fb 100644
--- a/services/core/java/com/android/server/media/MediaSessionRecord.java
+++ b/services/core/java/com/android/server/media/MediaSessionRecord.java
@@ -384,7 +384,7 @@
if (mPlaybackState == null) {
return false;
}
- return mPlaybackState.isActiveState() == expected;
+ return mPlaybackState.isActive() == expected;
}
/**
diff --git a/services/core/java/com/android/server/media/MediaSessionService.java b/services/core/java/com/android/server/media/MediaSessionService.java
index 50cfe1f..491cd18 100644
--- a/services/core/java/com/android/server/media/MediaSessionService.java
+++ b/services/core/java/com/android/server/media/MediaSessionService.java
@@ -552,15 +552,30 @@
final long token = Binder.clearCallingIdentity();
try {
enforcePackageName(callingPackage, callingUid);
- if (targetUid != callingUid && mActivityManagerLocal.canStartForegroundService(
- callingPid, callingUid, callingPackage)) {
- final Context userContext = mContext.createContextAsUser(
- UserHandle.of(UserHandle.getUserId(targetUid)), /* flags= */ 0);
- final PowerExemptionManager powerExemptionManager = userContext.getSystemService(
- PowerExemptionManager.class);
- powerExemptionManager.addToTemporaryAllowList(targetPackage,
- PowerExemptionManager.REASON_MEDIA_SESSION_CALLBACK, reason,
- MediaSessionDeviceConfig.getMediaSessionCallbackFgsAllowlistDurationMs());
+ if (targetUid != callingUid) {
+ Log.d(TAG, "tempAllowlistTargetPkgIfPossible callingPackage:"
+ + callingPackage + " targetPackage:" + targetPackage
+ + " reason:" + reason);
+ boolean canAllowWhileInUse = mActivityManagerLocal
+ .canAllowWhileInUsePermissionInFgs(callingPid, callingUid, callingPackage);
+ boolean canStartFgs = canAllowWhileInUse
+ || mActivityManagerLocal.canStartForegroundService(callingPid, callingUid,
+ callingPackage);
+ if (canAllowWhileInUse) {
+ mActivityManagerLocal.tempAllowWhileInUsePermissionInFgs(targetUid,
+ MediaSessionDeviceConfig
+ .getMediaSessionCallbackFgsWhileInUseTempAllowDurationMs());
+ }
+ if (canStartFgs) {
+ final Context userContext = mContext.createContextAsUser(
+ UserHandle.of(UserHandle.getUserId(targetUid)), /* flags= */ 0);
+ final PowerExemptionManager powerExemptionManager =
+ userContext.getSystemService(
+ PowerExemptionManager.class);
+ powerExemptionManager.addToTemporaryAllowList(targetPackage,
+ PowerExemptionManager.REASON_MEDIA_SESSION_CALLBACK, reason,
+ MediaSessionDeviceConfig.getMediaSessionCallbackFgsAllowlistDurationMs());
+ }
}
} finally {
Binder.restoreCallingIdentity(token);
diff --git a/services/core/java/com/android/server/notification/BubbleExtractor.java b/services/core/java/com/android/server/notification/BubbleExtractor.java
index fd92c4c..2caad50 100644
--- a/services/core/java/com/android/server/notification/BubbleExtractor.java
+++ b/services/core/java/com/android/server/notification/BubbleExtractor.java
@@ -71,37 +71,38 @@
return null;
}
- int bubblePreference =
- mConfig.getBubblePreference(
- record.getSbn().getPackageName(), record.getSbn().getUid());
- NotificationChannel recordChannel = record.getChannel();
- boolean canPresentAsBubble = canPresentAsBubble(record)
+ boolean notifCanPresentAsBubble = canPresentAsBubble(record)
&& !mActivityManager.isLowRamDevice()
&& record.isConversation()
&& record.getShortcutInfo() != null
&& (record.getNotification().flags & FLAG_FOREGROUND_SERVICE) == 0;
- if (!mConfig.bubblesEnabled()
- || bubblePreference == BUBBLE_PREFERENCE_NONE
- || !canPresentAsBubble) {
+ boolean userEnabledBubbles = mConfig.bubblesEnabled(record.getUser());
+ int appPreference =
+ mConfig.getBubblePreference(
+ record.getSbn().getPackageName(), record.getSbn().getUid());
+ NotificationChannel recordChannel = record.getChannel();
+ if (!userEnabledBubbles
+ || appPreference == BUBBLE_PREFERENCE_NONE
+ || !notifCanPresentAsBubble) {
record.setAllowBubble(false);
- if (!canPresentAsBubble) {
+ if (!notifCanPresentAsBubble) {
// clear out bubble metadata since it can't be used
record.getNotification().setBubbleMetadata(null);
}
} else if (recordChannel == null) {
// the app is allowed but there's no channel to check
record.setAllowBubble(true);
- } else if (bubblePreference == BUBBLE_PREFERENCE_ALL) {
+ } else if (appPreference == BUBBLE_PREFERENCE_ALL) {
record.setAllowBubble(recordChannel.getAllowBubbles() != ALLOW_BUBBLE_OFF);
- } else if (bubblePreference == BUBBLE_PREFERENCE_SELECTED) {
+ } else if (appPreference == BUBBLE_PREFERENCE_SELECTED) {
record.setAllowBubble(recordChannel.canBubble());
}
if (DBG) {
Slog.d(TAG, "record: " + record.getKey()
- + " appPref: " + bubblePreference
+ + " appPref: " + appPreference
+ " canBubble: " + record.canBubble()
- + " canPresentAsBubble: " + canPresentAsBubble
+ + " canPresentAsBubble: " + notifCanPresentAsBubble
+ " flagRemoved: " + record.isFlagBubbleRemoved());
}
diff --git a/services/core/java/com/android/server/notification/ManagedServices.java b/services/core/java/com/android/server/notification/ManagedServices.java
index 5d61fef..202b315 100644
--- a/services/core/java/com/android/server/notification/ManagedServices.java
+++ b/services/core/java/com/android/server/notification/ManagedServices.java
@@ -1769,17 +1769,10 @@
UserManager userManager = (UserManager) context.getSystemService(Context.USER_SERVICE);
if (userManager != null) {
int currentUserId = ActivityManager.getCurrentUser();
- List<UserInfo> unlockedProfiles = new ArrayList<>();
- for (UserInfo user : userManager.getProfiles(currentUserId)) {
- // Dependencies throw if we call APIs on a locked user. Only include
- // unlocked users.
- if (userManager.isUserUnlocked(user.id)) {
- unlockedProfiles.add(user);
- }
- }
+ List<UserInfo> profiles = userManager.getProfiles(currentUserId);
synchronized (mCurrentProfiles) {
mCurrentProfiles.clear();
- for (UserInfo user : unlockedProfiles) {
+ for (UserInfo user : profiles) {
mCurrentProfiles.put(user.id, user);
}
}
diff --git a/services/core/java/com/android/server/notification/NotificationManagerService.java b/services/core/java/com/android/server/notification/NotificationManagerService.java
index 1e6e5cb..9ea8c37 100755
--- a/services/core/java/com/android/server/notification/NotificationManagerService.java
+++ b/services/core/java/com/android/server/notification/NotificationManagerService.java
@@ -735,19 +735,22 @@
final List<UserInfo> activeUsers = mUm.getUsers();
for (UserInfo userInfo : activeUsers) {
int userId = userInfo.getUserHandle().getIdentifier();
- if (isNASMigrationDone(userId)) {
+ if (isNASMigrationDone(userId) || mUm.isManagedProfile(userId)) {
continue;
}
if (mAssistants.hasUserSet(userId)) {
- mAssistants.loadDefaultsFromConfig(false);
ComponentName defaultFromConfig = mAssistants.getDefaultFromConfig();
List<ComponentName> allowedComponents = mAssistants.getAllowedComponents(userId);
- if (allowedComponents.contains(defaultFromConfig)) {
+ if (allowedComponents.size() == 0) {
+ setNASMigrationDone(userId);
+ mAssistants.clearDefaults();
+ continue;
+ } else if (allowedComponents.contains(defaultFromConfig)) {
setNASMigrationDone(userId);
mAssistants.resetDefaultFromConfig();
continue;
}
- //User selected different NAS or none, need onboarding
+ //User selected different NAS, need onboarding
enqueueNotificationInternal(getContext().getPackageName(),
getContext().getOpPackageName(), Binder.getCallingUid(),
Binder.getCallingPid(), TAG,
@@ -819,9 +822,11 @@
}
@VisibleForTesting
- void setNASMigrationDone(int userId) {
- Settings.Secure.putIntForUser(getContext().getContentResolver(),
- Settings.Secure.NAS_SETTINGS_UPDATED, 1, userId);
+ void setNASMigrationDone(int baseUserId) {
+ for (int profileId : mUm.getProfileIds(baseUserId, false)) {
+ Settings.Secure.putIntForUser(getContext().getContentResolver(),
+ Settings.Secure.NAS_SETTINGS_UPDATED, 1, profileId);
+ }
}
@VisibleForTesting
@@ -1778,8 +1783,6 @@
}
} else if (action.equals(Intent.ACTION_MANAGED_PROFILE_UNAVAILABLE)) {
int userHandle = intent.getIntExtra(Intent.EXTRA_USER_HANDLE, -1);
- // Work profile user may now be locked. Refresh cache.
- mUserProfiles.updateCache(context);
if (userHandle >= 0) {
cancelAllNotificationsInt(MY_UID, MY_PID, null, null, 0, 0, true, userHandle,
REASON_PROFILE_TURNED_OFF, null);
@@ -1874,7 +1877,7 @@
private final Uri NOTIFICATION_BADGING_URI
= Settings.Secure.getUriFor(Settings.Secure.NOTIFICATION_BADGING);
private final Uri NOTIFICATION_BUBBLES_URI
- = Settings.Global.getUriFor(Settings.Global.NOTIFICATION_BUBBLES);
+ = Settings.Secure.getUriFor(Settings.Secure.NOTIFICATION_BUBBLES);
private final Uri NOTIFICATION_LIGHT_PULSE_URI
= Settings.System.getUriFor(Settings.System.NOTIFICATION_LIGHT_PULSE);
private final Uri NOTIFICATION_RATE_LIMIT_URI
@@ -3467,8 +3470,7 @@
android.Manifest.permission.INTERACT_ACROSS_USERS,
"areBubblesEnabled for user " + user.getIdentifier());
}
- // TODO: incorporate uid / per-user prefs once settings moves off global table.
- return mPreferencesHelper.bubblesEnabled();
+ return mPreferencesHelper.bubblesEnabled(user);
}
@Override
@@ -5171,12 +5173,7 @@
@Override
public ComponentName getDefaultNotificationAssistant() {
checkCallerIsSystem();
- ArraySet<ComponentName> defaultComponents = mAssistants.getDefaultComponents();
- if (defaultComponents.size() > 1) {
- Slog.w(TAG, "More than one default NotificationAssistant: "
- + defaultComponents.size());
- }
- return CollectionUtils.firstOrNull(defaultComponents);
+ return mAssistants.getDefaultFromConfig();
}
@Override
@@ -9403,6 +9400,9 @@
}
ComponentName getDefaultFromConfig() {
+ if (mDefaultFromConfig == null) {
+ loadDefaultsFromConfig(false);
+ }
return mDefaultFromConfig;
}
diff --git a/services/core/java/com/android/server/notification/PreferencesHelper.java b/services/core/java/com/android/server/notification/PreferencesHelper.java
index dc3b78a..55a0949 100644
--- a/services/core/java/com/android/server/notification/PreferencesHelper.java
+++ b/services/core/java/com/android/server/notification/PreferencesHelper.java
@@ -139,7 +139,7 @@
private static final boolean DEFAULT_OEM_LOCKED_IMPORTANCE = false;
private static final boolean DEFAULT_APP_LOCKED_IMPORTANCE = false;
- static final boolean DEFAULT_GLOBAL_ALLOW_BUBBLE = true;
+ static final boolean DEFAULT_BUBBLES_ENABLED = true;
@VisibleForTesting
static final int DEFAULT_BUBBLE_PREFERENCE = BUBBLE_PREFERENCE_NONE;
static final boolean DEFAULT_MEDIA_NOTIFICATION_FILTERING = true;
@@ -173,9 +173,9 @@
private final AppOpsManager mAppOps;
private SparseBooleanArray mBadgingEnabled;
+ private SparseBooleanArray mBubblesEnabled;
private SparseBooleanArray mLockScreenShowNotifications;
private SparseBooleanArray mLockScreenPrivateNotifications;
- private boolean mBubblesEnabledGlobally = DEFAULT_GLOBAL_ALLOW_BUBBLE;
private boolean mIsMediaNotificationFilteringEnabled = DEFAULT_MEDIA_NOTIFICATION_FILTERING;
private boolean mAreChannelsBypassingDnd;
private boolean mHideSilentStatusBarIcons = DEFAULT_HIDE_SILENT_STATUS_BAR_ICONS;
@@ -2372,20 +2372,6 @@
.setPackageName(pkg);
}
- public void updateBubblesEnabled() {
- final boolean newValue = Settings.Global.getInt(mContext.getContentResolver(),
- Settings.Global.NOTIFICATION_BUBBLES,
- DEFAULT_GLOBAL_ALLOW_BUBBLE ? 1 : 0) == 1;
- if (newValue != mBubblesEnabledGlobally) {
- mBubblesEnabledGlobally = newValue;
- updateConfig();
- }
- }
-
- public boolean bubblesEnabled() {
- return mBubblesEnabledGlobally;
- }
-
/** Requests check of the feature setting for showing media notifications in quick settings. */
public void updateMediaNotificationFilteringEnabled() {
final boolean newValue = Settings.Global.getInt(mContext.getContentResolver(),
@@ -2435,6 +2421,42 @@
return mBadgingEnabled.get(userId, DEFAULT_SHOW_BADGE);
}
+ /** Updates whether bubbles are enabled for this user. */
+ public void updateBubblesEnabled() {
+ if (mBubblesEnabled == null) {
+ mBubblesEnabled = new SparseBooleanArray();
+ }
+ boolean changed = false;
+ // update the cached values
+ for (int index = 0; index < mBubblesEnabled.size(); index++) {
+ int userId = mBubblesEnabled.keyAt(index);
+ final boolean oldValue = mBubblesEnabled.get(userId);
+ final boolean newValue = Settings.Secure.getIntForUser(mContext.getContentResolver(),
+ Settings.Secure.NOTIFICATION_BUBBLES,
+ DEFAULT_BUBBLES_ENABLED ? 1 : 0, userId) != 0;
+ mBubblesEnabled.put(userId, newValue);
+ changed |= oldValue != newValue;
+ }
+ if (changed) {
+ updateConfig();
+ }
+ }
+
+ /** Returns true if bubbles are enabled for this user. */
+ public boolean bubblesEnabled(UserHandle userHandle) {
+ int userId = userHandle.getIdentifier();
+ if (userId == UserHandle.USER_ALL) {
+ return false;
+ }
+ if (mBubblesEnabled.indexOfKey(userId) < 0) {
+ mBubblesEnabled.put(userId,
+ Settings.Secure.getIntForUser(mContext.getContentResolver(),
+ Settings.Secure.NOTIFICATION_BUBBLES,
+ DEFAULT_BUBBLES_ENABLED ? 1 : 0, userId) != 0);
+ }
+ return mBubblesEnabled.get(userId, DEFAULT_BUBBLES_ENABLED);
+ }
+
public void updateLockScreenPrivateNotifications() {
if (mLockScreenPrivateNotifications == null) {
mLockScreenPrivateNotifications = new SparseBooleanArray();
diff --git a/services/core/java/com/android/server/notification/RankingConfig.java b/services/core/java/com/android/server/notification/RankingConfig.java
index 8991ced..b1d6546 100644
--- a/services/core/java/com/android/server/notification/RankingConfig.java
+++ b/services/core/java/com/android/server/notification/RankingConfig.java
@@ -30,7 +30,8 @@
boolean canShowBadge(String packageName, int uid);
boolean badgingEnabled(UserHandle userHandle);
int getBubblePreference(String packageName, int uid);
- boolean bubblesEnabled();
+ /** Returns true when the bubbles feature is enabled for this user. */
+ boolean bubblesEnabled(UserHandle userHandle);
/** Returns true when feature is enabled that shows media notifications in quick settings. */
boolean isMediaNotificationFilteringEnabled();
boolean isGroupBlocked(String packageName, int uid, String groupId);
diff --git a/services/core/java/com/android/server/pm/IncrementalStates.java b/services/core/java/com/android/server/pm/IncrementalStates.java
index 4fd360b..7627281 100644
--- a/services/core/java/com/android/server/pm/IncrementalStates.java
+++ b/services/core/java/com/android/server/pm/IncrementalStates.java
@@ -16,13 +16,7 @@
package com.android.server.pm;
-import static android.os.incremental.IStorageHealthListener.HEALTH_STATUS_OK;
-import static android.os.incremental.IStorageHealthListener.HEALTH_STATUS_UNHEALTHY;
-import static android.os.incremental.IStorageHealthListener.HEALTH_STATUS_UNHEALTHY_STORAGE;
-import static android.os.incremental.IStorageHealthListener.HEALTH_STATUS_UNHEALTHY_TRANSPORT;
-
import android.content.pm.IncrementalStatesInfo;
-import android.content.pm.PackageManager;
import android.os.Handler;
import android.util.Slog;
@@ -30,17 +24,13 @@
import com.android.internal.os.BackgroundThread;
import com.android.internal.util.function.pooled.PooledLambda;
-import java.util.function.Consumer;
-
/**
* Manages state transitions of a package installed on Incremental File System. Currently manages:
- * 1. startable state (whether a package is allowed to be launched), and
- * 2. loading state (whether a package is still loading or has been fully loaded).
+ * 1. loading state (whether a package is still loading or has been fully loaded).
*
* The following events might change the states of a package:
* 1. Installation commit
- * 2. Incremental storage health changes
- * 4. Loading progress changes
+ * 2. Loading progress changes
*
* @hide
*/
@@ -50,41 +40,24 @@
private final Handler mHandler = BackgroundThread.getHandler();
private final Object mLock = new Object();
@GuardedBy("mLock")
- private int mStorageHealthStatus = HEALTH_STATUS_OK;
- @GuardedBy("mLock")
private final LoadingState mLoadingState;
@GuardedBy("mLock")
- private StartableState mStartableState;
- @GuardedBy("mLock")
private Callback mCallback = null;
- private final Consumer<Integer> mStatusConsumer;
public IncrementalStates() {
- // By default the package is not startable and not fully loaded (i.e., is loading)
- this(false, true, 0);
+ // By default the package is not fully loaded (i.e., is loading)
+ this(true, 0);
}
- public IncrementalStates(boolean isStartable, boolean isLoading, float loadingProgress) {
- mStartableState = new StartableState(isStartable);
+ public IncrementalStates(boolean isLoading, float loadingProgress) {
mLoadingState = new LoadingState(isLoading, loadingProgress);
- mStatusConsumer = new StatusConsumer();
}
/**
- * Callback interface to report that the startable state of this package has changed.
+ * Callback interface to report that the loading state of this package has changed.
*/
public interface Callback {
/**
- * Reports that the package is now unstartable and the unstartable reason.
- */
- void onPackageUnstartable(int reason);
-
- /**
- * Reports that the package is now startable.
- */
- void onPackageStartable();
-
- /**
* Reports that package is fully loaded.
*/
void onPackageFullyLoaded();
@@ -92,7 +65,7 @@
/**
* By calling this method, the caller indicates that package installation has just been
- * committed. The package becomes startable. Set the initial loading state after the package
+ * committed. Set the initial loading state after the package
* is committed. Incremental packages are by-default loading; non-Incremental packages are not.
*
* @param isIncremental whether a package is installed on Incremental or not.
@@ -101,66 +74,11 @@
if (DEBUG) {
Slog.i(TAG, "received package commit event");
}
- final boolean startableStateChanged;
- synchronized (mLock) {
- startableStateChanged = mStartableState.adoptNewStartableStateLocked(true);
- if (!isIncremental) {
- updateProgressLocked(1);
- }
- }
- if (startableStateChanged) {
- onStartableStateChanged();
- }
if (!isIncremental) {
- onLoadingStateChanged();
- }
- }
-
- /**
- * Change the startable state if the app has crashed or ANR'd during loading.
- * If the app is not loading (i.e., fully loaded), this event doesn't change startable state.
- */
- public void onCrashOrAnr() {
- if (DEBUG) {
- Slog.i(TAG, "received package crash or ANR event");
- }
- final boolean startableStateChanged;
- synchronized (mLock) {
- if (mStartableState.isStartable() && mLoadingState.isLoading()) {
- // Changing from startable -> unstartable only if app is still loading.
- startableStateChanged = mStartableState.adoptNewStartableStateLocked(false);
- } else {
- // If the app is fully loaded, the crash or ANR is caused by the app itself, so
- // we do not change the startable state.
- startableStateChanged = false;
+ synchronized (mLock) {
+ updateProgressLocked(1.0f);
}
- }
- if (startableStateChanged) {
- onStartableStateChanged();
- }
- }
-
- private void onStartableStateChanged() {
- // Disable startable state broadcasts
- // TODO(b/171920377): completely remove unstartable state.
- }
-
- private void reportStartableState() {
- final Callback callback;
- final boolean startable;
- final int reason;
- synchronized (mLock) {
- callback = mCallback;
- startable = mStartableState.isStartable();
- reason = mStartableState.getUnstartableReason();
- }
- if (callback == null) {
- return;
- }
- if (startable) {
- callback.onPackageStartable();
- } else {
- callback.onPackageUnstartable(reason);
+ onLoadingStateChanged();
}
}
@@ -180,38 +98,6 @@
}
}
- private class StatusConsumer implements Consumer<Integer> {
- @Override
- public void accept(Integer storageStatus) {
- final boolean startableStateChanged;
- synchronized (mLock) {
- if (!mLoadingState.isLoading()) {
- // Do nothing if the package is already fully loaded
- return;
- }
- mStorageHealthStatus = storageStatus;
- startableStateChanged = updateStartableStateLocked();
- }
- if (startableStateChanged) {
- onStartableStateChanged();
- }
- }
- }
-
- /**
- * By calling this method, the caller indicates that there issues with the Incremental
- * Storage,
- * on which the package is installed. The state will change according to the status
- * code defined in {@code IStorageHealthListener}.
- */
- public void onStorageHealthStatusChanged(int storageHealthStatus) {
- if (DEBUG) {
- Slog.i(TAG, "received storage health status changed event : storageHealthStatus="
- + storageHealthStatus);
- }
- mStatusConsumer.accept(storageHealthStatus);
- }
-
/**
* Use the specified callback to report state changing events.
*
@@ -227,25 +113,19 @@
}
/**
- * Update the package loading progress to specified value. This might change startable state.
+ * Update the package loading progress to specified value.
*
* @param progress Value between [0, 1].
*/
public void setProgress(float progress) {
final boolean newLoadingState;
- final boolean oldStartableState, newStartableState;
synchronized (mLock) {
- oldStartableState = mStartableState.isStartable();
updateProgressLocked(progress);
newLoadingState = mLoadingState.isLoading();
- newStartableState = mStartableState.isStartable();
}
if (!newLoadingState) {
onLoadingStateChanged();
}
- if (newStartableState != oldStartableState) {
- onStartableStateChanged();
- }
}
/**
@@ -253,41 +133,12 @@
*/
public IncrementalStatesInfo getIncrementalStatesInfo() {
synchronized (mLock) {
- return new IncrementalStatesInfo(mStartableState.isStartable(),
+ return new IncrementalStatesInfo(
mLoadingState.isLoading(),
mLoadingState.getProgress());
}
}
- /**
- * Determine the next state based on the current state, current stream status and storage
- * health
- * status. If the next state is different from the current state, proceed with state
- * change.
- * @return True if the new startable state is different from the old one.
- */
- private boolean updateStartableStateLocked() {
- final boolean currentState = mStartableState.isStartable();
- boolean nextState = currentState;
- if (!currentState) {
- if (mStorageHealthStatus == HEALTH_STATUS_OK) {
- // change from unstartable -> startable
- nextState = true;
- }
- } else {
- if (mStorageHealthStatus == HEALTH_STATUS_UNHEALTHY
- || mStorageHealthStatus == HEALTH_STATUS_UNHEALTHY_STORAGE
- || mStorageHealthStatus == HEALTH_STATUS_UNHEALTHY_TRANSPORT) {
- // change from startable -> unstartable
- nextState = false;
- }
- }
- if (nextState == currentState) {
- return false;
- }
- return mStartableState.adoptNewStartableStateLocked(nextState);
- }
-
private void updateProgressLocked(float progress) {
if (DEBUG) {
Slog.i(TAG, "received progress update: " + progress);
@@ -301,85 +152,6 @@
if (mLoadingState.isLoading()) {
mLoadingState.adoptNewLoadingStateLocked(false);
}
- // Also updates startable state if necessary
- if (!mStartableState.isStartable()) {
- mStartableState.adoptNewStartableStateLocked(true);
- }
- }
- }
-
- private class StartableState {
- private boolean mIsStartable;
- private int mUnstartableReason = PackageManager.UNSTARTABLE_REASON_UNKNOWN;
-
- StartableState(boolean isStartable) {
- mIsStartable = isStartable;
- }
-
- public boolean isStartable() {
- return mIsStartable;
- }
-
- public int getUnstartableReason() {
- return mUnstartableReason;
- }
-
- /**
- * Adopt new startable state if it is different from the current state.
- * @param nextState True if startable, false if unstartable.
- * @return True if the state has changed, false otherwise.
- */
- public boolean adoptNewStartableStateLocked(boolean nextState) {
- if (mIsStartable == nextState) {
- return false;
- }
- if (!nextState) {
- // Do nothing if the next state is "unstartable"; keep package always startable.
- // TODO(b/171920377): completely remove unstartable state.
- if (DEBUG) {
- Slog.i(TAG, "Attempting to set startable state to false. Abort.");
- }
- return false;
- }
- if (DEBUG) {
- Slog.i(TAG,
- "startable state changed from " + mIsStartable + " to " + nextState);
- }
- mIsStartable = nextState;
- mUnstartableReason = getUnstartableReasonLocked();
- return true;
- }
-
- private int getUnstartableReasonLocked() {
- if (mIsStartable) {
- return PackageManager.UNSTARTABLE_REASON_UNKNOWN;
- }
- // Translate stream status to reason for unstartable state
- switch (mStorageHealthStatus) {
- case HEALTH_STATUS_UNHEALTHY_STORAGE:
- return PackageManager.UNSTARTABLE_REASON_INSUFFICIENT_STORAGE;
- case HEALTH_STATUS_UNHEALTHY_TRANSPORT:
- return PackageManager.UNSTARTABLE_REASON_CONNECTION_ERROR;
- default:
- return PackageManager.UNSTARTABLE_REASON_UNKNOWN;
- }
- }
-
- @Override
- public boolean equals(Object o) {
- if (o == this) {
- return true;
- }
- if (!(o instanceof StartableState)) {
- return false;
- }
- StartableState l = (StartableState) o;
- return l.mIsStartable == mIsStartable;
- }
-
- @Override
- public int hashCode() {
- return Boolean.hashCode(mIsStartable);
}
}
@@ -443,16 +215,11 @@
return false;
}
IncrementalStates l = (IncrementalStates) o;
- return l.mStorageHealthStatus == mStorageHealthStatus
- && l.mStartableState.equals(mStartableState)
- && l.mLoadingState.equals(mLoadingState);
+ return l.mLoadingState.equals(mLoadingState);
}
@Override
public int hashCode() {
- int hashCode = mStartableState.hashCode();
- hashCode = 31 * hashCode + mLoadingState.hashCode();
- hashCode = 31 * hashCode + mStorageHealthStatus;
- return hashCode;
+ return mLoadingState.hashCode();
}
}
diff --git a/services/core/java/com/android/server/pm/PackageInstallerSession.java b/services/core/java/com/android/server/pm/PackageInstallerSession.java
index b6a65dd..adfa65d 100644
--- a/services/core/java/com/android/server/pm/PackageInstallerSession.java
+++ b/services/core/java/com/android/server/pm/PackageInstallerSession.java
@@ -3838,13 +3838,6 @@
sendPendingStreaming(mContext, statusReceiver, sessionId, e.getMessage());
}
}
- @Override
- public void reportStreamHealth(int dataLoaderId, int streamStatus) {
- // Currently the stream status is not used during package installation. It is
- // technically possible for the data loader to report stream status via this
- // callback, but if something is wrong with the streaming, it is more likely that
- // prepareDataLoaderLocked will return false and the installation will be aborted.
- }
};
if (!manualStartAndDestroy) {
diff --git a/services/core/java/com/android/server/pm/PackageManagerService.java b/services/core/java/com/android/server/pm/PackageManagerService.java
index 6b364bd..ba6165c 100644
--- a/services/core/java/com/android/server/pm/PackageManagerService.java
+++ b/services/core/java/com/android/server/pm/PackageManagerService.java
@@ -287,11 +287,9 @@
import android.os.Trace;
import android.os.UserHandle;
import android.os.UserManager;
-import android.os.incremental.IStorageHealthListener;
import android.os.incremental.IncrementalManager;
import android.os.incremental.IncrementalStorage;
import android.os.incremental.PerUidReadTimeouts;
-import android.os.incremental.StorageHealthCheckParams;
import android.os.storage.DiskInfo;
import android.os.storage.IStorageManager;
import android.os.storage.StorageEventListener;
@@ -818,14 +816,6 @@
private static final String RANDOM_DIR_PREFIX = "~~";
- /**
- * Timeout configurations for incremental storage health monitor.
- * See {@link IStorageHealthListener}
- */
- private static final int INCREMENTAL_STORAGE_BLOCKED_TIMEOUT_MS = 2000;
- private static final int INCREMENTAL_STORAGE_UNHEALTHY_TIMEOUT_MS = 7000;
- private static final int INCREMENTAL_STORAGE_UNHEALTHY_MONITORING_MS = 60000;
-
final Handler mHandler;
private final ProcessLoggingHandler mProcessLoggingHandler;
@@ -1495,6 +1485,9 @@
// List of packages names to keep cached, even if they are uninstalled for all users
private List<String> mKeepUninstalledPackages;
+ // Cached reference to IDevicePolicyManager.
+ private IDevicePolicyManager mDevicePolicyManager = null;
+
private File mCacheDir;
private Future<?> mPrepareAppDataFuture;
@@ -11644,15 +11637,7 @@
}
if (mIncrementalManager != null && isIncrementalPath(parsedPackage.getPath())) {
if (pkgSetting != null && pkgSetting.isPackageLoading()) {
- final StorageHealthCheckParams healthCheckParams = new StorageHealthCheckParams();
- healthCheckParams.blockedTimeoutMs = INCREMENTAL_STORAGE_BLOCKED_TIMEOUT_MS;
- healthCheckParams.unhealthyTimeoutMs = INCREMENTAL_STORAGE_UNHEALTHY_TIMEOUT_MS;
- healthCheckParams.unhealthyMonitoringMs =
- INCREMENTAL_STORAGE_UNHEALTHY_MONITORING_MS;
- // Continue monitoring health and loading progress of active incremental packages
- mIncrementalManager.registerHealthListener(parsedPackage.getPath(),
- healthCheckParams,
- new IncrementalHealthListener(parsedPackage.getPackageName()));
+ // Continue monitoring loading progress of active incremental packages
final IncrementalStatesCallback incrementalStatesCallback =
new IncrementalStatesCallback(parsedPackage.getPackageName(),
UserHandle.getUid(UserHandle.USER_ALL, pkgSetting.appId),
@@ -18477,16 +18462,6 @@
ps.setIncrementalStatesCallback(incrementalStatesCallback);
mIncrementalManager.registerLoadingProgressCallback(codePath,
new IncrementalProgressListener(ps.name));
- final IncrementalHealthListener incrementalHealthListener =
- new IncrementalHealthListener(ps.name);
- final StorageHealthCheckParams healthCheckParams =
- new StorageHealthCheckParams();
- healthCheckParams.blockedTimeoutMs = INCREMENTAL_STORAGE_BLOCKED_TIMEOUT_MS;
- healthCheckParams.unhealthyTimeoutMs = INCREMENTAL_STORAGE_UNHEALTHY_TIMEOUT_MS;
- healthCheckParams.unhealthyMonitoringMs =
- INCREMENTAL_STORAGE_UNHEALTHY_MONITORING_MS;
- mIncrementalManager.registerHealthListener(codePath, healthCheckParams,
- incrementalHealthListener);
}
// Ensure that the uninstall reason is UNKNOWN for users with the package installed.
@@ -19478,65 +19453,11 @@
ps, mInstalledUserIds, mSettings.getPackagesLocked());
codePath = ps.getPathString();
}
- Bundle extras = new Bundle();
- extras.putInt(Intent.EXTRA_UID, mUid);
- extras.putString(Intent.EXTRA_PACKAGE_NAME, mPackageName);
- sendPackageBroadcast(Intent.ACTION_PACKAGE_FULLY_LOADED, mPackageName,
- extras, 0 /*flags*/,
- null /*targetPackage*/, null /*finishedReceiver*/,
- mInstalledUserIds, null /* instantUserIds */, newBroadcastAllowList, null);
// Unregister progress listener
mIncrementalManager.unregisterLoadingProgressCallbacks(codePath);
- // Unregister health listener as it will always be healthy from now
- mIncrementalManager.unregisterHealthListener(codePath);
// Make sure the information is preserved
scheduleWriteSettingsLocked();
}
-
- @Override
- public void onPackageUnstartable(int reason) {
- final SparseArray<int[]> newBroadcastAllowList;
- synchronized (mLock) {
- final PackageSetting ps = mSettings.getPackageLPr(mPackageName);
- if (ps == null) {
- return;
- }
- newBroadcastAllowList = mAppsFilter.getVisibilityAllowList(
- ps, mInstalledUserIds, mSettings.getPackagesLocked());
- }
- Bundle extras = new Bundle();
- extras.putInt(Intent.EXTRA_UID, mUid);
- extras.putString(Intent.EXTRA_PACKAGE_NAME, mPackageName);
- extras.putInt(Intent.EXTRA_UNSTARTABLE_REASON, reason);
- // send broadcast to users with this app installed
- sendPackageBroadcast(Intent.ACTION_PACKAGE_UNSTARTABLE, mPackageName,
- extras, 0 /*flags*/,
- null /*targetPackage*/, null /*finishedReceiver*/,
- mInstalledUserIds, null /* instantUserIds */,
- newBroadcastAllowList, null);
- }
-
- @Override
- public void onPackageStartable() {
- final SparseArray<int[]> newBroadcastAllowList;
- synchronized (mLock) {
- final PackageSetting ps = mSettings.getPackageLPr(mPackageName);
- if (ps == null) {
- return;
- }
- newBroadcastAllowList = mAppsFilter.getVisibilityAllowList(
- ps, mInstalledUserIds, mSettings.getPackagesLocked());
- }
- Bundle extras = new Bundle();
- extras.putInt(Intent.EXTRA_UID, mUid);
- extras.putString(Intent.EXTRA_PACKAGE_NAME, mPackageName);
- // send broadcast to users with this app installed
- sendPackageBroadcast(Intent.ACTION_PACKAGE_STARTABLE, mPackageName,
- extras, 0 /*flags*/,
- null /*targetPackage*/, null /*finishedReceiver*/,
- mInstalledUserIds, null /* instantUserIds */,
- newBroadcastAllowList, null);
- }
}
/**
@@ -19561,29 +19482,6 @@
}
}
- /**
- * Incremental storage health status callback, used to listen for monitoring changes and update
- * package setting.
- */
- private class IncrementalHealthListener extends IStorageHealthListener.Stub {
- private final String mPackageName;
- IncrementalHealthListener(String packageName) {
- mPackageName = packageName;
- }
-
- @Override
- public void onHealthStatus(int storageId, int status) throws RemoteException {
- final PackageSetting ps;
- synchronized (mLock) {
- ps = mSettings.getPackageLPr(mPackageName);
- }
- if (ps == null) {
- return;
- }
- ps.setStorageHealthStatus(status);
- }
- }
-
@Nullable PackageSetting getPackageSettingForUser(String packageName, int callingUid,
int userId) {
final PackageSetting ps;
@@ -20807,8 +20705,7 @@
}
private boolean isPackageDeviceAdmin(String packageName, int userId) {
- IDevicePolicyManager dpm = IDevicePolicyManager.Stub.asInterface(
- ServiceManager.getService(Context.DEVICE_POLICY_SERVICE));
+ final IDevicePolicyManager dpm = getDevicePolicyManager();
try {
if (dpm != null) {
final ComponentName deviceOwnerComponentName = dpm.getDeviceOwnerComponent(
@@ -20840,6 +20737,16 @@
return false;
}
+ /** Returns the device policy manager interface. */
+ private IDevicePolicyManager getDevicePolicyManager() {
+ if (mDevicePolicyManager == null) {
+ // No need to synchronize; worst-case scenario it will be fetched twice.
+ mDevicePolicyManager = IDevicePolicyManager.Stub.asInterface(
+ ServiceManager.getService(Context.DEVICE_POLICY_SERVICE));
+ }
+ return mDevicePolicyManager;
+ }
+
private boolean shouldKeepUninstalledPackageLPr(String packageName) {
return mKeepUninstalledPackages != null && mKeepUninstalledPackages.contains(packageName);
}
@@ -27305,20 +27212,6 @@
}
@Override
- public void notifyPackageCrashOrAnr(@NonNull String packageName) {
- final PackageSetting ps;
- synchronized (mLock) {
- ps = mSettings.getPackageLPr(packageName);
- if (ps == null) {
- Slog.w(TAG, "Failed notifyPackageCrash. Package " + packageName
- + " is not installed");
- return;
- }
- }
- ps.setStatesOnCrashOrAnr();
- }
-
- @Override
public void requestChecksums(@NonNull String packageName, boolean includeSplits,
@Checksum.Type int optional, @Checksum.Type int required,
@Nullable List trustedInstallers,
diff --git a/services/core/java/com/android/server/pm/PackageSetting.java b/services/core/java/com/android/server/pm/PackageSetting.java
index ca5d2b4..81ea465 100644
--- a/services/core/java/com/android/server/pm/PackageSetting.java
+++ b/services/core/java/com/android/server/pm/PackageSetting.java
@@ -344,7 +344,6 @@
installSource.originatingPackageName);
proto.end(sourceToken);
}
- proto.write(PackageProto.StatesProto.IS_STARTABLE, isPackageStartable());
proto.write(PackageProto.StatesProto.IS_LOADING, isPackageLoading());
writeUsersInfoToProto(proto, PackageProto.USERS);
writePackageUserPermissionsProto(proto, PackageProto.USER_PERMISSIONS, users, dataProvider);
diff --git a/services/core/java/com/android/server/pm/PackageSettingBase.java b/services/core/java/com/android/server/pm/PackageSettingBase.java
index 38e100e..19b56b7 100644
--- a/services/core/java/com/android/server/pm/PackageSettingBase.java
+++ b/services/core/java/com/android/server/pm/PackageSettingBase.java
@@ -723,13 +723,6 @@
}
/**
- * @return True if package is startable, false otherwise.
- */
- public boolean isPackageStartable() {
- return getIncrementalStates().isStartable();
- }
-
- /**
* @return True if package is still being loaded, false if the package is fully loaded.
*/
public boolean isPackageLoading() {
@@ -745,8 +738,8 @@
/**
* Called to indicate that the package installation has been committed. This will create a
- * new startable state and a new loading state with default values. By default, the package is
- * startable after commit. For a package installed on Incremental, the loading state is true.
+ * new loading state with default values.
+ * For a package installed on Incremental, the loading state is true.
* For non-Incremental packages, the loading state is false.
*/
public void setStatesOnCommit() {
@@ -754,15 +747,7 @@
}
/**
- * Called to indicate that the running app has crashed or ANR'd. This might change the startable
- * state of the package, depending on whether the package is fully loaded.
- */
- public void setStatesOnCrashOrAnr() {
- incrementalStates.onCrashOrAnr();
- }
-
- /**
- * Called to set the callback to listen for startable state changes.
+ * Called to set the callback to listen for loading state changes.
*/
public void setIncrementalStatesCallback(IncrementalStates.Callback callback) {
incrementalStates.setCallback(callback);
@@ -776,13 +761,6 @@
incrementalStates.setProgress(progress);
}
- /**
- * @see IncrementalStates#onStorageHealthStatusChanged(int)
- */
- public void setStorageHealthStatus(int status) {
- incrementalStates.onStorageHealthStatusChanged(status);
- }
-
public long getFirstInstallTime() {
return firstInstallTime;
}
diff --git a/services/core/java/com/android/server/pm/Settings.java b/services/core/java/com/android/server/pm/Settings.java
index 24f3930..e409019 100644
--- a/services/core/java/com/android/server/pm/Settings.java
+++ b/services/core/java/com/android/server/pm/Settings.java
@@ -2698,9 +2698,6 @@
if (pkg.forceQueryableOverride) {
serializer.attributeBoolean(null, "forceQueryable", true);
}
- if (pkg.isPackageStartable()) {
- serializer.attributeBoolean(null, "isStartable", true);
- }
if (pkg.isPackageLoading()) {
serializer.attributeBoolean(null, "isLoading", true);
}
@@ -3459,7 +3456,6 @@
PackageSetting packageSetting = null;
long versionCode = 0;
boolean installedForceQueryable = false;
- boolean isStartable = false;
boolean isLoading = false;
float loadingProgress = 0;
UUID domainSetId;
@@ -3479,7 +3475,6 @@
cpuAbiOverrideString = parser.getAttributeValue(null, "cpuAbiOverride");
updateAvailable = parser.getAttributeBoolean(null, "updateAvailable", false);
installedForceQueryable = parser.getAttributeBoolean(null, "forceQueryable", false);
- isStartable = parser.getAttributeBoolean(null, "isStartable", false);
isLoading = parser.getAttributeBoolean(null, "isLoading", false);
loadingProgress = parser.getAttributeFloat(null, "loadingProgress", 0);
@@ -3638,8 +3633,7 @@
packageSetting.secondaryCpuAbiString = secondaryCpuAbiString;
packageSetting.updateAvailable = updateAvailable;
packageSetting.forceQueryableOverride = installedForceQueryable;
- packageSetting.incrementalStates = new IncrementalStates(isStartable, isLoading,
- loadingProgress);
+ packageSetting.incrementalStates = new IncrementalStates(isLoading, loadingProgress);
// Handle legacy string here for single-user mode
final String enabledStr = parser.getAttributeValue(null, ATTR_ENABLED);
if (enabledStr != null) {
diff --git a/services/core/java/com/android/server/pm/ShortcutPackage.java b/services/core/java/com/android/server/pm/ShortcutPackage.java
index c6d98e7..464477d 100644
--- a/services/core/java/com/android/server/pm/ShortcutPackage.java
+++ b/services/core/java/com/android/server/pm/ShortcutPackage.java
@@ -92,6 +92,7 @@
import java.util.function.Consumer;
import java.util.function.Function;
import java.util.function.Predicate;
+import java.util.stream.Collectors;
/**
* Package information used by {@link ShortcutService}.
@@ -721,7 +722,7 @@
// If not reset yet, then reset.
if (mLastResetTime < last) {
- if (ShortcutService.DEBUG) {
+ if (ShortcutService.DEBUG || ShortcutService.DEBUG_REBOOT) {
Slog.d(TAG, String.format("%s: last reset=%d, now=%d, last=%d: resetting",
getPackageName(), mLastResetTime, now, last));
}
@@ -1101,7 +1102,7 @@
}
final int manifestShortcutSize = newManifestShortcutList == null ? 0
: newManifestShortcutList.size();
- if (ShortcutService.DEBUG) {
+ if (ShortcutService.DEBUG || ShortcutService.DEBUG_REBOOT) {
Slog.d(TAG,
String.format("Package %s has %d manifest shortcut(s), and %d share target(s)",
getPackageName(), manifestShortcutSize, mShareTargets.size()));
@@ -1113,7 +1114,7 @@
// disabled.
return false;
}
- if (ShortcutService.DEBUG) {
+ if (ShortcutService.DEBUG || ShortcutService.DEBUG_REBOOT) {
Slog.d(TAG, String.format("Package %s %s, version %d -> %d", getPackageName(),
(isNewApp ? "added" : "updated"),
getPackageInfo().getVersionCode(), pi.getLongVersionCode()));
@@ -1202,7 +1203,7 @@
}
private boolean publishManifestShortcuts(List<ShortcutInfo> newManifestShortcutList) {
- if (ShortcutService.DEBUG) {
+ if (ShortcutService.DEBUG || ShortcutService.DEBUG_REBOOT) {
Slog.d(TAG, String.format(
"Package %s: publishing manifest shortcuts", getPackageName()));
}
@@ -1879,7 +1880,7 @@
final int depth = parser.getDepth();
final String tag = parser.getName();
- if (ShortcutService.DEBUG_LOAD) {
+ if (ShortcutService.DEBUG_LOAD || ShortcutService.DEBUG_REBOOT) {
Slog.d(TAG, String.format("depth=%d type=%d name=%s", depth, type, tag));
}
if ((depth == 1) && TAG_ROOT.equals(tag)) {
@@ -2015,7 +2016,7 @@
}
final int depth = parser.getDepth();
final String tag = parser.getName();
- if (ShortcutService.DEBUG_LOAD) {
+ if (ShortcutService.DEBUG_LOAD || ShortcutService.DEBUG_REBOOT) {
Slog.d(TAG, String.format(" depth=%d type=%d name=%s",
depth, type, tag));
}
@@ -2099,7 +2100,7 @@
}
final int depth = parser.getDepth();
final String tag = parser.getName();
- if (ShortcutService.DEBUG_LOAD) {
+ if (ShortcutService.DEBUG_LOAD || ShortcutService.DEBUG_REBOOT) {
Slog.d(TAG, String.format(" depth=%d type=%d name=%s",
depth, type, tag));
}
@@ -2302,6 +2303,12 @@
// No need to invoke AppSearch when there's nothing to save.
return;
}
+ if (ShortcutService.DEBUG_REBOOT) {
+ Slog.d(TAG, "Saving shortcuts for user=" + mShortcutUser.getUserId()
+ + " pkg=" + getPackageName() + " ids=["
+ + shortcuts.stream().map(ShortcutInfo::getId)
+ .collect(Collectors.joining(",")) + "]");
+ }
awaitInAppSearch("Saving shortcuts", session -> {
final AndroidFuture<Boolean> future = new AndroidFuture<>();
session.put(new PutDocumentsRequest.Builder()
@@ -2374,6 +2381,10 @@
shortcutIds.add(id);
}
}
+ if (ShortcutService.DEBUG_REBOOT) {
+ Slog.d(TAG, "Getting shortcuts for user=" + mShortcutUser.getUserId()
+ + " pkg=" + getPackageName() + " ids: [" + String.join(",", ids) + "]");
+ }
return awaitInAppSearch("Getting shortcut by id", session -> {
final AndroidFuture<List<ShortcutInfo>> future = new AndroidFuture<>();
session.getByUri(
@@ -2418,6 +2429,10 @@
private void forEachShortcutMutateIf(@NonNull final String query,
@NonNull final Function<ShortcutInfo, Boolean> cb) {
+ if (ShortcutService.DEBUG_REBOOT) {
+ Slog.d(TAG, "Changing shortcuts for user=" + mShortcutUser.getUserId()
+ + " pkg=" + getPackageName());
+ }
final SearchResults res = awaitInAppSearch("Mutating shortcuts", session ->
AndroidFuture.completedFuture(session.search(query, getSearchSpec())));
if (res == null) return;
@@ -2439,6 +2454,10 @@
private void forEachShortcutStopWhen(
@NonNull final String query, @NonNull final Function<ShortcutInfo, Boolean> cb) {
+ if (ShortcutService.DEBUG_REBOOT) {
+ Slog.d(TAG, "Iterating shortcuts for user=" + mShortcutUser.getUserId()
+ + " pkg=" + getPackageName());
+ }
final SearchResults res = awaitInAppSearch("Iterating shortcuts", session ->
AndroidFuture.completedFuture(session.search(query, getSearchSpec())));
if (res == null) return;
@@ -2452,6 +2471,10 @@
}
private List<ShortcutInfo> getNextPage(@NonNull final SearchResults res) {
+ if (ShortcutService.DEBUG_REBOOT) {
+ Slog.d(TAG, "Get next page for search result for user=" + mShortcutUser.getUserId()
+ + " pkg=" + getPackageName());
+ }
final AndroidFuture<List<ShortcutInfo>> future = new AndroidFuture<>();
final List<ShortcutInfo> ret = new ArrayList<>();
final long callingIdentity = Binder.clearCallingIdentity();
@@ -2529,6 +2552,10 @@
@NonNull
private AndroidFuture<AppSearchSession> setupSchema(
@NonNull final AppSearchSession session) {
+ if (ShortcutService.DEBUG_REBOOT) {
+ Slog.d(TAG, "Setup Schema for user=" + mShortcutUser.getUserId()
+ + " pkg=" + getPackageName());
+ }
SetSchemaRequest.Builder schemaBuilder = new SetSchemaRequest.Builder()
.addSchemas(AppSearchPerson.SCHEMA, AppSearchShortcutInfo.SCHEMA)
.setForceOverride(true);
@@ -2569,6 +2596,15 @@
}
private void restoreParsedShortcuts(final boolean replace) {
+ if (ShortcutService.DEBUG_REBOOT) {
+ if (replace) {
+ Slog.d(TAG, "Replacing all shortcuts with the ones parsed from xml for user="
+ + mShortcutUser.getUserId() + " pkg=" + getPackageName());
+ } else {
+ Slog.d(TAG, "Restoring pinned shortcuts from xml for user="
+ + mShortcutUser.getUserId() + " pkg=" + getPackageName());
+ }
+ }
if (replace) {
removeShortcuts();
}
diff --git a/services/core/java/com/android/server/pm/ShortcutService.java b/services/core/java/com/android/server/pm/ShortcutService.java
index dcf730d..8d03fce 100644
--- a/services/core/java/com/android/server/pm/ShortcutService.java
+++ b/services/core/java/com/android/server/pm/ShortcutService.java
@@ -164,6 +164,7 @@
static final boolean DEBUG = false; // STOPSHIP if true
static final boolean DEBUG_LOAD = false; // STOPSHIP if true
static final boolean DEBUG_PROCSTATE = false; // STOPSHIP if true
+ static final boolean DEBUG_REBOOT = true;
@VisibleForTesting
static final long DEFAULT_RESET_INTERVAL_SEC = 24 * 60 * 60; // 1 day
@@ -659,7 +660,7 @@
/** lifecycle event */
void onBootPhase(int phase) {
- if (DEBUG) {
+ if (DEBUG || DEBUG_REBOOT) {
Slog.d(TAG, "onBootPhase: " + phase);
}
switch (phase) {
@@ -674,7 +675,7 @@
/** lifecycle event */
void handleUnlockUser(int userId) {
- if (DEBUG) {
+ if (DEBUG || DEBUG_REBOOT) {
Slog.d(TAG, "handleUnlockUser: user=" + userId);
}
synchronized (mUnlockedUsers) {
@@ -699,7 +700,7 @@
/** lifecycle event */
void handleStopUser(int userId) {
- if (DEBUG) {
+ if (DEBUG || DEBUG_REBOOT) {
Slog.d(TAG, "handleStopUser: user=" + userId);
}
synchronized (mLock) {
@@ -713,7 +714,7 @@
@GuardedBy("mLock")
private void unloadUserLocked(int userId) {
- if (DEBUG) {
+ if (DEBUG || DEBUG_REBOOT) {
Slog.d(TAG, "unloadUserLocked: user=" + userId);
}
// Save all dirty information.
@@ -945,7 +946,7 @@
@VisibleForTesting
void saveBaseStateLocked() {
final AtomicFile file = getBaseStateFile();
- if (DEBUG) {
+ if (DEBUG || DEBUG_REBOOT) {
Slog.d(TAG, "Saving to " + file.getBaseFile());
}
@@ -978,7 +979,7 @@
mRawLastResetTime = 0;
final AtomicFile file = getBaseStateFile();
- if (DEBUG) {
+ if (DEBUG || DEBUG_REBOOT) {
Slog.d(TAG, "Loading from " + file.getBaseFile());
}
try (FileInputStream in = file.openRead()) {
@@ -1028,7 +1029,7 @@
@GuardedBy("mLock")
private void saveUserLocked(@UserIdInt int userId) {
final File path = getUserFile(userId);
- if (DEBUG) {
+ if (DEBUG || DEBUG_REBOOT) {
Slog.d(TAG, "Saving to " + path);
}
@@ -1086,7 +1087,7 @@
@Nullable
private ShortcutUser loadUserLocked(@UserIdInt int userId) {
final File path = getUserFile(userId);
- if (DEBUG) {
+ if (DEBUG || DEBUG_REBOOT) {
Slog.d(TAG, "Loading from " + path);
}
final AtomicFile file = new AtomicFile(path);
@@ -1095,7 +1096,7 @@
try {
in = file.openRead();
} catch (FileNotFoundException e) {
- if (DEBUG) {
+ if (DEBUG || DEBUG_REBOOT) {
Slog.d(TAG, "Not found " + path);
}
return null;
@@ -1132,7 +1133,7 @@
final int depth = parser.getDepth();
final String tag = parser.getName();
- if (DEBUG_LOAD) {
+ if (DEBUG_LOAD || DEBUG_REBOOT) {
Slog.d(TAG, String.format("depth=%d type=%d name=%s",
depth, type, tag));
}
@@ -1157,7 +1158,7 @@
private final Runnable mSaveDirtyInfoRunner = this::saveDirtyInfo;
private void scheduleSaveInner(@UserIdInt int userId) {
- if (DEBUG) {
+ if (DEBUG || DEBUG_REBOOT) {
Slog.d(TAG, "Scheduling to save for " + userId);
}
synchronized (mLock) {
@@ -1172,7 +1173,7 @@
@VisibleForTesting
void saveDirtyInfo() {
- if (DEBUG) {
+ if (DEBUG || DEBUG_REBOOT) {
Slog.d(TAG, "saveDirtyInfo");
}
if (mShutdown.get()) {
@@ -2942,6 +2943,10 @@
@Nullable String packageName, @Nullable List<String> shortcutIds,
@Nullable List<LocusId> locusIds, @Nullable ComponentName componentName,
int queryFlags, int userId, int callingPid, int callingUid) {
+ if (DEBUG_REBOOT) {
+ Slog.d(TAG, "Getting shortcuts for launcher= " + callingPackage
+ + "user=" + userId + " pkg=" + packageName);
+ }
final ArrayList<ShortcutInfo> ret = new ArrayList<>();
int flags = ShortcutInfo.CLONE_REMOVE_FOR_LAUNCHER;
@@ -3639,7 +3644,7 @@
*/
@VisibleForTesting
void checkPackageChanges(@UserIdInt int ownerUserId) {
- if (DEBUG) {
+ if (DEBUG || DEBUG_REBOOT) {
Slog.d(TAG, "checkPackageChanges() ownerUserId=" + ownerUserId);
}
if (injectIsSafeModeEnabled()) {
@@ -3685,6 +3690,9 @@
@GuardedBy("mLock")
private void rescanUpdatedPackagesLocked(@UserIdInt int userId, long lastScanTime) {
+ if (DEBUG_REBOOT) {
+ Slog.d(TAG, "rescan updated package user=" + userId + " last scanned=" + lastScanTime);
+ }
final ShortcutUser user = getUserShortcutsLocked(userId);
// Note after each OTA, we'll need to rescan all system apps, as their lastUpdateTime
@@ -3708,7 +3716,7 @@
}
private void handlePackageAdded(String packageName, @UserIdInt int userId) {
- if (DEBUG) {
+ if (DEBUG || DEBUG_REBOOT) {
Slog.d(TAG, String.format("handlePackageAdded: %s user=%d", packageName, userId));
}
synchronized (mLock) {
@@ -3720,7 +3728,7 @@
}
private void handlePackageUpdateFinished(String packageName, @UserIdInt int userId) {
- if (DEBUG) {
+ if (DEBUG || DEBUG_REBOOT) {
Slog.d(TAG, String.format("handlePackageUpdateFinished: %s user=%d",
packageName, userId));
}
@@ -3736,7 +3744,7 @@
}
private void handlePackageRemoved(String packageName, @UserIdInt int packageUserId) {
- if (DEBUG) {
+ if (DEBUG || DEBUG_REBOOT) {
Slog.d(TAG, String.format("handlePackageRemoved: %s user=%d", packageName,
packageUserId));
}
@@ -3746,7 +3754,7 @@
}
private void handlePackageDataCleared(String packageName, int packageUserId) {
- if (DEBUG) {
+ if (DEBUG || DEBUG_REBOOT) {
Slog.d(TAG, String.format("handlePackageDataCleared: %s user=%d", packageName,
packageUserId));
}
@@ -3761,7 +3769,7 @@
handlePackageRemoved(packageName, packageUserId);
return;
}
- if (DEBUG) {
+ if (DEBUG || DEBUG_REBOOT) {
Slog.d(TAG, String.format("handlePackageChanged: %s user=%d", packageName,
packageUserId));
}
@@ -3948,7 +3956,7 @@
private void forUpdatedPackages(@UserIdInt int userId, long lastScanTime, boolean afterOta,
Consumer<ApplicationInfo> callback) {
- if (DEBUG) {
+ if (DEBUG || DEBUG_REBOOT) {
Slog.d(TAG, "forUpdatedPackages for user " + userId + ", lastScanTime=" + lastScanTime
+ " afterOta=" + afterOta);
}
@@ -3960,7 +3968,7 @@
// Also if it's right after an OTA, always re-scan all apps anyway, since the
// shortcut parser might have changed.
if (afterOta || (pi.lastUpdateTime >= lastScanTime)) {
- if (DEBUG) {
+ if (DEBUG || DEBUG_REBOOT) {
Slog.d(TAG, "Found updated package " + pi.packageName
+ " updateTime=" + pi.lastUpdateTime);
}
@@ -4313,7 +4321,7 @@
@Override
public void applyRestore(byte[] payload, @UserIdInt int userId) {
enforceSystem();
- if (DEBUG) {
+ if (DEBUG || DEBUG_REBOOT) {
Slog.d(TAG, "Restoring user " + userId);
}
synchronized (mLock) {
diff --git a/services/core/java/com/android/server/pm/ShortcutUser.java b/services/core/java/com/android/server/pm/ShortcutUser.java
index 069944d..e66cb03 100644
--- a/services/core/java/com/android/server/pm/ShortcutUser.java
+++ b/services/core/java/com/android/server/pm/ShortcutUser.java
@@ -328,6 +328,10 @@
public void rescanPackageIfNeeded(@NonNull String packageName, boolean forceRescan) {
final boolean isNewApp = !mPackages.containsKey(packageName);
+ if (ShortcutService.DEBUG_REBOOT) {
+ Slog.d(TAG, "rescanPackageIfNeeded " + getUserId() + "@" + packageName
+ + ", forceRescan=" + forceRescan + " , isNewApp=" + isNewApp);
+ }
final ShortcutPackage shortcutPackage = getPackageShortcuts(packageName);
@@ -397,7 +401,7 @@
} else {
// Save each ShortcutPackageItem in a separate Xml file.
final File path = getShortcutPackageItemFile(spi);
- if (ShortcutService.DEBUG) {
+ if (ShortcutService.DEBUG || ShortcutService.DEBUG_REBOOT) {
Slog.d(TAG, "Saving package item " + spi.getPackageName() + " to " + path);
}
diff --git a/services/core/java/com/android/server/pm/permission/LegacyPermissionManagerService.java b/services/core/java/com/android/server/pm/permission/LegacyPermissionManagerService.java
index fd9aa3e..b1676d0 100644
--- a/services/core/java/com/android/server/pm/permission/LegacyPermissionManagerService.java
+++ b/services/core/java/com/android/server/pm/permission/LegacyPermissionManagerService.java
@@ -21,9 +21,11 @@
import android.app.AppOpsManager;
import android.app.admin.DevicePolicyManager;
import android.content.Context;
+import android.content.pm.ApplicationInfo;
import android.content.pm.PackageManager;
import android.content.pm.PackageManagerInternal;
import android.os.Binder;
+import android.os.Build;
import android.os.Process;
import android.os.ServiceManager;
import android.os.UserHandle;
@@ -87,19 +89,7 @@
@Override
public int checkDeviceIdentifierAccess(@Nullable String packageName, @Nullable String message,
@Nullable String callingFeatureId, int pid, int uid) {
- // If the check is being requested by an app then only allow the app to query its own
- // access status.
- int callingUid = mInjector.getCallingUid();
- int callingPid = mInjector.getCallingPid();
- if (UserHandle.getAppId(callingUid) >= Process.FIRST_APPLICATION_UID && (callingUid != uid
- || callingPid != pid)) {
- String response = String.format(
- "Calling uid %d, pid %d cannot check device identifier access for package %s "
- + "(uid=%d, pid=%d)",
- callingUid, callingPid, packageName, uid, pid);
- Log.w(TAG, response);
- throw new SecurityException(response);
- }
+ verifyCallerCanCheckAccess(packageName, message, pid, uid);
// Allow system and root access to the device identifiers.
final int appId = UserHandle.getAppId(uid);
if (appId == Process.SYSTEM_UID || appId == Process.ROOT_UID) {
@@ -138,6 +128,110 @@
}
@Override
+ public int checkPhoneNumberAccess(@Nullable String packageName, @Nullable String message,
+ @Nullable String callingFeatureId, int pid, int uid) {
+ verifyCallerCanCheckAccess(packageName, message, pid, uid);
+ if (mInjector.checkPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE, pid,
+ uid) == PackageManager.PERMISSION_GRANTED) {
+ // Skip checking for runtime permission since caller has privileged permission
+ return PackageManager.PERMISSION_GRANTED;
+ }
+ // if the packageName is null then just return now as the rest of the checks require a
+ // valid package name.
+ if (packageName == null) {
+ return PackageManager.PERMISSION_DENIED;
+ }
+ // If the target SDK version is below R then also check for READ_PHONE_STATE; prior to R
+ // the phone number was accessible with the READ_PHONE_STATE permission granted.
+ boolean preR = false;
+ int result = PackageManager.PERMISSION_DENIED;
+ try {
+ ApplicationInfo info = mInjector.getApplicationInfo(packageName, uid);
+ preR = info.targetSdkVersion <= Build.VERSION_CODES.Q;
+ } catch (PackageManager.NameNotFoundException nameNotFoundException) {
+ }
+ if (preR) {
+ // For target SDK < R if the READ_PHONE_STATE permission is granted but the appop
+ // is not granted then the caller should receive null / empty data instead of a
+ // potentially crashing SecurityException. Save the result of the READ_PHONE_STATE
+ // permission / appop check; if both do not pass then first check if the app meets
+ // any of the other requirements for access, if not then return the result of this
+ // check.
+ result = checkPermissionAndAppop(packageName,
+ android.Manifest.permission.READ_PHONE_STATE,
+ AppOpsManager.OPSTR_READ_PHONE_STATE, callingFeatureId, message, pid, uid);
+ if (result == PackageManager.PERMISSION_GRANTED) {
+ return result;
+ }
+ }
+ // Default SMS app can always read it.
+ if (checkPermissionAndAppop(packageName, null, AppOpsManager.OPSTR_WRITE_SMS,
+ callingFeatureId, message, pid, uid) == PackageManager.PERMISSION_GRANTED) {
+ return PackageManager.PERMISSION_GRANTED;
+ }
+ // Can be read with READ_PHONE_NUMBERS too.
+ if (checkPermissionAndAppop(packageName, android.Manifest.permission.READ_PHONE_NUMBERS,
+ AppOpsManager.OPSTR_READ_PHONE_NUMBERS, callingFeatureId, message, pid, uid)
+ == PackageManager.PERMISSION_GRANTED) {
+ return PackageManager.PERMISSION_GRANTED;
+ }
+ // Can be read with READ_SMS too.
+ if (checkPermissionAndAppop(packageName, android.Manifest.permission.READ_SMS,
+ AppOpsManager.OPSTR_READ_SMS, callingFeatureId, message, pid, uid)
+ == PackageManager.PERMISSION_GRANTED) {
+ return PackageManager.PERMISSION_GRANTED;
+ }
+ return result;
+ }
+
+ private void verifyCallerCanCheckAccess(String packageName, String message, int pid, int uid) {
+ // If the check is being requested by an app then only allow the app to query its own
+ // access status.
+ int callingUid = mInjector.getCallingUid();
+ int callingPid = mInjector.getCallingPid();
+ if (UserHandle.getAppId(callingUid) >= Process.FIRST_APPLICATION_UID && (callingUid != uid
+ || callingPid != pid)) {
+ String response = String.format(
+ "Calling uid %d, pid %d cannot access for package %s (uid=%d, pid=%d): %s",
+ callingUid, callingPid, packageName, uid, pid, message);
+ Log.w(TAG, response);
+ throw new SecurityException(response);
+ }
+ }
+
+ /**
+ * Returns whether the specified {@code packageName} with {@code pid} and {@code uid} has been
+ * granted the provided {@code permission} and {@code appop}, using the {@code callingFeatureId}
+ * and {@code message} for the {@link
+ * AppOpsManager#noteOpNoThrow(int, int, String, String, String)} call.
+
+ * @return <ul>
+ * <li>{@link PackageManager#PERMISSION_GRANTED} if both the permission and the appop
+ * are granted to the package</li>
+ * <li>{@link android.app.AppOpsManager#MODE_IGNORED} if the permission is granted to the
+ * package but the appop is not</li>
+ * <li>{@link PackageManager#PERMISSION_DENIED} if the permission is not granted to the
+ * package</li>
+ * </ul>
+ */
+ private int checkPermissionAndAppop(String packageName, String permission, String appop,
+ String callingFeatureId, String message, int pid, int uid) {
+ if (permission != null) {
+ if (mInjector.checkPermission(permission, pid, uid)
+ != PackageManager.PERMISSION_GRANTED) {
+ return PackageManager.PERMISSION_DENIED;
+ }
+ }
+ AppOpsManager appOpsManager = (AppOpsManager) mInjector.getSystemService(
+ Context.APP_OPS_SERVICE);
+ if (appOpsManager.noteOpNoThrow(appop, uid, packageName, callingFeatureId, message)
+ != AppOpsManager.MODE_ALLOWED) {
+ return AppOpsManager.MODE_IGNORED;
+ }
+ return PackageManager.PERMISSION_GRANTED;
+ }
+
+ @Override
public void grantDefaultPermissionsToActiveLuiApp(String packageName, int userId) {
final int callingUid = Binder.getCallingUid();
PackageManagerServiceUtils.enforceSystemOrPhoneCaller(
@@ -348,5 +442,16 @@
public Object getSystemService(@NonNull String name) {
return mContext.getSystemService(name);
}
+
+ /**
+ * Returns the {@link ApplicationInfo} for the specified {@code packageName} under the
+ * provided {@code uid}.
+ */
+ public ApplicationInfo getApplicationInfo(@Nullable String packageName, int uid)
+ throws PackageManager.NameNotFoundException {
+
+ return mContext.getPackageManager().getApplicationInfoAsUser(packageName, 0,
+ UserHandle.getUserHandleForUid(uid));
+ }
}
}
diff --git a/services/core/java/com/android/server/policy/DeviceStateProviderImpl.java b/services/core/java/com/android/server/policy/DeviceStateProviderImpl.java
index cd7f685..6f6bdac 100644
--- a/services/core/java/com/android/server/policy/DeviceStateProviderImpl.java
+++ b/services/core/java/com/android/server/policy/DeviceStateProviderImpl.java
@@ -394,13 +394,13 @@
throw new IllegalStateException("Have not received sensor event.");
}
- if (latestEvent.values.length != mExpectedValues.size()) {
+ if (latestEvent.values.length < mExpectedValues.size()) {
throw new RuntimeException("Number of supplied numeric range(s) does not "
+ "match the number of values in the latest sensor event for sensor: "
+ mSensor);
}
- for (int i = 0; i < latestEvent.values.length; i++) {
+ for (int i = 0; i < mExpectedValues.size(); i++) {
if (!adheresToRange(latestEvent.values[i], mExpectedValues.get(i))) {
return false;
}
diff --git a/services/core/java/com/android/server/stats/pull/StatsPullAtomService.java b/services/core/java/com/android/server/stats/pull/StatsPullAtomService.java
index a7e2d1d..a82c91e 100644
--- a/services/core/java/com/android/server/stats/pull/StatsPullAtomService.java
+++ b/services/core/java/com/android/server/stats/pull/StatsPullAtomService.java
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2020 The Android Open Source Project
+ * Copyright 2020 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -432,6 +432,7 @@
mContext = context;
}
+ private native void initializeNativePullers();
/**
* Use of this StatsPullAtomCallbackImpl means we avoid one class per tagId, which we would
* get if we used lambdas.
@@ -713,6 +714,7 @@
super.onBootPhase(phase);
if (phase == PHASE_SYSTEM_SERVICES_READY) {
BackgroundThread.getHandler().post(() -> {
+ initializeNativePullers(); // Initialize pullers that need JNI.
initializePullersState();
registerPullers();
registerEventListeners();
diff --git a/services/core/java/com/android/server/timedetector/ServiceConfigAccessor.java b/services/core/java/com/android/server/timedetector/ServiceConfigAccessor.java
index dac8a0a..7f7d01c 100644
--- a/services/core/java/com/android/server/timedetector/ServiceConfigAccessor.java
+++ b/services/core/java/com/android/server/timedetector/ServiceConfigAccessor.java
@@ -64,6 +64,7 @@
private static final Instant TIME_LOWER_BOUND_DEFAULT = Instant.ofEpochMilli(
Long.max(android.os.Environment.getRootDirectory().lastModified(), Build.TIME));
+ /** Device config keys that affect the {@link TimeDetectorService}. */
private static final Set<String> SERVER_FLAGS_KEYS_TO_WATCH = Collections.unmodifiableSet(
new ArraySet<>(new String[] {
KEY_TIME_DETECTOR_LOWER_BOUND_MILLIS_OVERRIDE,
diff --git a/services/core/java/com/android/server/timedetector/TimeDetectorShellCommand.java b/services/core/java/com/android/server/timedetector/TimeDetectorShellCommand.java
index 233cc57..721986b 100644
--- a/services/core/java/com/android/server/timedetector/TimeDetectorShellCommand.java
+++ b/services/core/java/com/android/server/timedetector/TimeDetectorShellCommand.java
@@ -16,6 +16,7 @@
package com.android.server.timedetector;
import static android.app.timedetector.TimeDetector.SHELL_COMMAND_IS_AUTO_DETECTION_ENABLED;
+import static android.app.timedetector.TimeDetector.SHELL_COMMAND_SERVICE_NAME;
import static android.provider.DeviceConfig.NAMESPACE_SYSTEM_TIME;
import static com.android.server.timedetector.ServerFlags.KEY_TIME_DETECTOR_LOWER_BOUND_MILLIS_OVERRIDE;
@@ -61,26 +62,22 @@
@Override
public void onHelp() {
final PrintWriter pw = getOutPrintWriter();
- pw.println("Time Detector (time_detector) commands:");
- pw.println(" help");
- pw.println(" Print this help text.");
+ pw.printf("Time Detector (%s) commands:\n", SHELL_COMMAND_SERVICE_NAME);
+ pw.printf(" help\n");
+ pw.printf(" Print this help text.\n");
pw.printf(" %s\n", SHELL_COMMAND_IS_AUTO_DETECTION_ENABLED);
- pw.println(" Prints true/false according to the automatic time detection setting");
+ pw.printf(" Prints true/false according to the automatic time detection setting.\n");
pw.println();
pw.printf("This service is also affected by the following device_config flags in the"
+ " %s namespace:\n", NAMESPACE_SYSTEM_TIME);
- pw.printf(" %s - the lower bound used to validate time suggestions when they are"
- + " received.\n", KEY_TIME_DETECTOR_LOWER_BOUND_MILLIS_OVERRIDE);
- pw.println(" Specified in milliseconds since the start of the Unix epoch.");
- pw.printf(" %s - [default=null], a comma separated list of origins. See"
- + " TimeDetectorStrategy for details\n",
- KEY_TIME_DETECTOR_ORIGIN_PRIORITIES_OVERRIDE);
+ pw.printf(" %s\n", KEY_TIME_DETECTOR_LOWER_BOUND_MILLIS_OVERRIDE);
+ pw.printf(" The lower bound used to validate time suggestions when they are received."
+ + "\n");
+ pw.printf(" Specified in milliseconds since the start of the Unix epoch.\n");
+ pw.printf(" %s\n", KEY_TIME_DETECTOR_ORIGIN_PRIORITIES_OVERRIDE);
+ pw.printf(" A comma separated list of origins. See TimeDetectorStrategy for details.\n");
pw.println();
- pw.println("Example:");
- pw.printf(" $ adb shell cmd device_config put %s %s %s\n",
- NAMESPACE_SYSTEM_TIME, KEY_TIME_DETECTOR_ORIGIN_PRIORITIES_OVERRIDE,
- "external");
- pw.println("See adb shell cmd device_config for more information.");
+ pw.printf("See \"adb shell cmd device_config\" for more information on setting flags.\n");
pw.println();
}
}
diff --git a/services/core/java/com/android/server/timezonedetector/ServiceConfigAccessor.java b/services/core/java/com/android/server/timezonedetector/ServiceConfigAccessor.java
index dddb11b..4a1d9c4 100644
--- a/services/core/java/com/android/server/timezonedetector/ServiceConfigAccessor.java
+++ b/services/core/java/com/android/server/timezonedetector/ServiceConfigAccessor.java
@@ -70,6 +70,10 @@
*/
public static final @ProviderMode String PROVIDER_MODE_ENABLED = "enabled";
+ /**
+ * Device config keys that affect the {@link TimeZoneDetectorService} service and {@link
+ * com.android.server.timezonedetector.location.LocationTimeZoneManagerService}.
+ */
private static final Set<String> SERVER_FLAGS_KEYS_TO_WATCH = Collections.unmodifiableSet(
new ArraySet<>(new String[] {
ServerFlags.KEY_LOCATION_TIME_ZONE_DETECTION_FEATURE_SUPPORTED,
diff --git a/services/core/java/com/android/server/timezonedetector/TimeZoneDetectorShellCommand.java b/services/core/java/com/android/server/timezonedetector/TimeZoneDetectorShellCommand.java
index 8c529c4..9899b448b 100644
--- a/services/core/java/com/android/server/timezonedetector/TimeZoneDetectorShellCommand.java
+++ b/services/core/java/com/android/server/timezonedetector/TimeZoneDetectorShellCommand.java
@@ -18,12 +18,19 @@
import static android.app.timezonedetector.TimeZoneDetector.SHELL_COMMAND_IS_AUTO_DETECTION_ENABLED;
import static android.app.timezonedetector.TimeZoneDetector.SHELL_COMMAND_IS_GEO_DETECTION_ENABLED;
import static android.app.timezonedetector.TimeZoneDetector.SHELL_COMMAND_IS_GEO_DETECTION_SUPPORTED;
+import static android.app.timezonedetector.TimeZoneDetector.SHELL_COMMAND_SERVICE_NAME;
import static android.app.timezonedetector.TimeZoneDetector.SHELL_COMMAND_SET_AUTO_DETECTION_ENABLED;
import static android.app.timezonedetector.TimeZoneDetector.SHELL_COMMAND_SET_GEO_DETECTION_ENABLED;
import static android.app.timezonedetector.TimeZoneDetector.SHELL_COMMAND_SUGGEST_GEO_LOCATION_TIME_ZONE;
import static android.app.timezonedetector.TimeZoneDetector.SHELL_COMMAND_SUGGEST_MANUAL_TIME_ZONE;
import static android.app.timezonedetector.TimeZoneDetector.SHELL_COMMAND_SUGGEST_TELEPHONY_TIME_ZONE;
+import static android.provider.DeviceConfig.NAMESPACE_SYSTEM_TIME;
+import static com.android.server.timedetector.ServerFlags.KEY_LOCATION_TIME_ZONE_DETECTION_FEATURE_SUPPORTED;
+import static com.android.server.timedetector.ServerFlags.KEY_LOCATION_TIME_ZONE_DETECTION_SETTING_ENABLED_DEFAULT;
+import static com.android.server.timedetector.ServerFlags.KEY_LOCATION_TIME_ZONE_DETECTION_SETTING_ENABLED_OVERRIDE;
+
+import android.app.time.LocationTimeZoneManager;
import android.app.time.TimeZoneConfiguration;
import android.app.timezonedetector.ManualTimeZoneSuggestion;
import android.app.timezonedetector.TelephonyTimeZoneSuggestion;
@@ -155,20 +162,21 @@
@Override
public void onHelp() {
final PrintWriter pw = getOutPrintWriter();
- pw.println("Time Zone Detector (time_zone_detector) commands:");
- pw.println(" help");
- pw.println(" Print this help text.");
+ pw.printf("Time Zone Detector (%s) commands:\n", SHELL_COMMAND_SERVICE_NAME);
+ pw.printf(" help\n");
+ pw.printf(" Print this help text.\n");
pw.printf(" %s\n", SHELL_COMMAND_IS_AUTO_DETECTION_ENABLED);
- pw.println(" Prints true/false according to the automatic tz detection setting");
+ pw.printf(" Prints true/false according to the automatic time zone detection setting\n");
pw.printf(" %s true|false\n", SHELL_COMMAND_SET_AUTO_DETECTION_ENABLED);
- pw.println(" Sets the automatic tz detection setting.");
+ pw.printf(" Sets the automatic time zone detection setting.\n");
pw.printf(" %s\n", SHELL_COMMAND_IS_GEO_DETECTION_SUPPORTED);
- pw.println(" Prints true/false according to whether geolocation time zone detection is"
- + " supported on this device");
+ pw.printf(" Prints true/false according to whether geolocation time zone detection is"
+ + " supported on this device.\n");
pw.printf(" %s\n", SHELL_COMMAND_IS_GEO_DETECTION_ENABLED);
- pw.println(" Prints true/false according to the geolocation tz detection setting");
+ pw.printf(" Prints true/false according to the geolocation time zone detection setting."
+ + "\n");
pw.printf(" %s true|false\n", SHELL_COMMAND_SET_GEO_DETECTION_ENABLED);
- pw.println(" Sets the geolocation tz detection setting.");
+ pw.printf(" Sets the geolocation time zone detection enabled setting.\n");
pw.printf(" %s <geolocation suggestion opts>\n",
SHELL_COMMAND_SUGGEST_GEO_LOCATION_TIME_ZONE);
pw.printf(" %s <manual suggestion opts>\n",
@@ -182,5 +190,27 @@
pw.println();
TelephonyTimeZoneSuggestion.printCommandLineOpts(pw);
pw.println();
+ pw.printf("This service is also affected by the following device_config flags in the"
+ + " %s namespace:\n", NAMESPACE_SYSTEM_TIME);
+ pw.printf(" %s\n", KEY_LOCATION_TIME_ZONE_DETECTION_FEATURE_SUPPORTED);
+ pw.printf(" Only observed if the geolocation time zone detection feature is enabled in"
+ + " config.\n");
+ pw.printf(" Set this to false to disable the feature.\n");
+ pw.printf(" %s\n", KEY_LOCATION_TIME_ZONE_DETECTION_SETTING_ENABLED_DEFAULT);
+ pw.printf(" Only used if the device does not have an explicit 'geolocation time zone"
+ + " detection enabled' setting stored [*].\n");
+ pw.printf(" The default is when unset is false.\n");
+ pw.printf(" %s\n", KEY_LOCATION_TIME_ZONE_DETECTION_SETTING_ENABLED_OVERRIDE);
+ pw.printf(" Used to override the device's 'geolocation time zone detection enabled'"
+ + " setting [*].\n");
+ pw.println();
+ pw.printf("[*] To be enabled, the user must still have location = on / auto time zone"
+ + " detection = on.\n");
+ pw.println();
+ pw.printf("See \"adb shell cmd device_config\" for more information on setting flags.\n");
+ pw.println();
+ pw.printf("Also see \"adb shell cmd %s help\" for lower-level location time zone"
+ + " commands / settings.\n", LocationTimeZoneManager.SERVICE_NAME);
+ pw.println();
}
}
diff --git a/services/core/java/com/android/server/timezonedetector/location/LocationTimeZoneManagerShellCommand.java b/services/core/java/com/android/server/timezonedetector/location/LocationTimeZoneManagerShellCommand.java
index c6df624..0f0de50 100644
--- a/services/core/java/com/android/server/timezonedetector/location/LocationTimeZoneManagerShellCommand.java
+++ b/services/core/java/com/android/server/timezonedetector/location/LocationTimeZoneManagerShellCommand.java
@@ -24,9 +24,6 @@
import static android.app.time.LocationTimeZoneManager.SHELL_COMMAND_STOP;
import static android.provider.DeviceConfig.NAMESPACE_SYSTEM_TIME;
-import static com.android.server.timedetector.ServerFlags.KEY_LOCATION_TIME_ZONE_DETECTION_FEATURE_SUPPORTED;
-import static com.android.server.timedetector.ServerFlags.KEY_LOCATION_TIME_ZONE_DETECTION_SETTING_ENABLED_DEFAULT;
-import static com.android.server.timedetector.ServerFlags.KEY_LOCATION_TIME_ZONE_DETECTION_SETTING_ENABLED_OVERRIDE;
import static com.android.server.timedetector.ServerFlags.KEY_LOCATION_TIME_ZONE_DETECTION_UNCERTAINTY_DELAY_MILLIS;
import static com.android.server.timedetector.ServerFlags.KEY_LOCATION_TIME_ZONE_PROVIDER_INITIALIZATION_TIMEOUT_FUZZ_MILLIS;
import static com.android.server.timedetector.ServerFlags.KEY_LOCATION_TIME_ZONE_PROVIDER_INITIALIZATION_TIMEOUT_MILLIS;
@@ -48,6 +45,7 @@
import android.app.time.LocationTimeZoneManagerProto;
import android.app.time.LocationTimeZoneManagerServiceStateProto;
import android.app.time.TimeZoneProviderStateProto;
+import android.app.timezonedetector.TimeZoneDetector;
import android.os.Bundle;
import android.os.ShellCommand;
import android.util.IndentingPrintWriter;
@@ -103,84 +101,68 @@
public void onHelp() {
final PrintWriter pw = getOutPrintWriter();
pw.printf("Location Time Zone Manager (%s) commands for tests:\n", SERVICE_NAME);
- pw.println(" help");
- pw.println(" Print this help text.");
+ pw.printf(" help\n");
+ pw.printf(" Print this help text.\n");
pw.printf(" %s\n", SHELL_COMMAND_START);
- pw.println(" Starts the location_time_zone_manager, creating time zone providers.");
+ pw.printf(" Starts the service, creating location time zone providers.\n");
pw.printf(" %s\n", SHELL_COMMAND_STOP);
- pw.println(" Stops the location_time_zone_manager, destroying time zone providers.");
+ pw.printf(" Stops the service, destroying location time zone providers.\n");
pw.printf(" %s (true|false)\n", SHELL_COMMAND_RECORD_PROVIDER_STATES);
pw.printf(" Enables / disables provider state recording mode. See also %s. The default"
+ " state is always \"false\".\n", SHELL_COMMAND_DUMP_STATE);
- pw.println(" Note: When enabled, this mode consumes memory and it is only intended for"
- + " testing.");
- pw.println(" It should be disabled after use, or the device can be rebooted to"
- + " reset the mode to disabled.");
- pw.println(" Disabling (or enabling repeatedly) clears any existing stored states.");
+ pw.printf(" Note: When enabled, this mode consumes memory and it is only intended for"
+ + " testing.\n");
+ pw.printf(" It should be disabled after use, or the device can be rebooted to"
+ + " reset the mode to disabled.\n");
+ pw.printf(" Disabling (or enabling repeatedly) clears any existing stored states.\n");
pw.printf(" %s [%s]\n", SHELL_COMMAND_DUMP_STATE, DUMP_STATE_OPTION_PROTO);
- pw.println(" Dumps Location Time Zone Manager state for tests as text or binary proto"
- + " form.");
- pw.println(" See the LocationTimeZoneManagerServiceStateProto definition for details.");
+ pw.printf(" Dumps service state for tests as text or binary proto form.\n");
+ pw.printf(" See the LocationTimeZoneManagerServiceStateProto definition for details.\n");
pw.printf(" %s <provider index> <test command>\n",
SHELL_COMMAND_SEND_PROVIDER_TEST_COMMAND);
- pw.println(" Passes a test command to the named provider.");
+ pw.printf(" Passes a test command to the named provider.\n");
pw.println();
- pw.println("<provider index> = 0 (primary), 1 (secondary)");
+ pw.printf("<provider index> = 0 (primary), 1 (secondary)\n");
pw.println();
pw.printf("%s details:\n", SHELL_COMMAND_SEND_PROVIDER_TEST_COMMAND);
pw.println();
- pw.println("Provider <test command> encoding:");
+ pw.printf("Provider <test command> encoding:\n");
pw.println();
TestCommand.printShellCommandEncodingHelp(pw);
pw.println();
- pw.println("Simulated provider mode can be used to test the system server behavior or to"
- + " reproduce bugs without the complexity of using real providers.");
+ pw.printf("Simulated provider mode can be used to test the system server behavior or to"
+ + " reproduce bugs without the complexity of using real providers.\n");
pw.println();
- pw.println("The test commands for simulated providers are:");
+ pw.printf("The test commands for simulated providers are:\n");
SimulatedLocationTimeZoneProviderProxy.printTestCommandShellHelp(pw);
pw.println();
- pw.println("Test commands cannot currently be passed to real provider implementations.");
+ pw.printf("Test commands cannot currently be passed to real provider implementations.\n");
pw.println();
pw.printf("This service is also affected by the following device_config flags in the"
+ " %s namespace:\n", NAMESPACE_SYSTEM_TIME);
- pw.printf(" %s - [default=true], only observed if the feature is enabled in config,"
- + "set this to false to disable the feature\n",
- KEY_LOCATION_TIME_ZONE_DETECTION_FEATURE_SUPPORTED);
- pw.printf(" %s - [default=false]. Only used if the device does not have an explicit"
- + " 'location time zone detection enabled' setting configured [*].\n",
- KEY_LOCATION_TIME_ZONE_DETECTION_SETTING_ENABLED_DEFAULT);
- pw.printf(" %s - [default=<unset>]. Used to override the device's 'location time zone"
- + " detection enabled' setting [*]\n",
- KEY_LOCATION_TIME_ZONE_DETECTION_SETTING_ENABLED_OVERRIDE);
- pw.printf(" %s - Overrides the mode of the primary provider. Values=%s|%s|%s\n",
- KEY_PRIMARY_LOCATION_TIME_ZONE_PROVIDER_MODE_OVERRIDE,
+ pw.printf(" %s\n", KEY_PRIMARY_LOCATION_TIME_ZONE_PROVIDER_MODE_OVERRIDE);
+ pw.printf(" Overrides the mode of the primary provider. Values=%s|%s|%s\n",
PROVIDER_MODE_DISABLED, PROVIDER_MODE_ENABLED, PROVIDER_MODE_SIMULATED);
- pw.printf(" %s - Overrides the mode of the secondary provider. Values=%s|%s|%s\n",
- KEY_SECONDARY_LOCATION_TIME_ZONE_PROVIDER_MODE_OVERRIDE,
+ pw.printf(" %s\n", KEY_SECONDARY_LOCATION_TIME_ZONE_PROVIDER_MODE_OVERRIDE);
+ pw.printf(" Overrides the mode of the secondary provider. Values=%s|%s|%s\n",
PROVIDER_MODE_DISABLED, PROVIDER_MODE_ENABLED, PROVIDER_MODE_SIMULATED);
- pw.printf(" %s - \n",
- KEY_SECONDARY_LOCATION_TIME_ZONE_PROVIDER_MODE_OVERRIDE);
- pw.printf(" %s - Sets the amount of time the service waits when uncertain before making"
- + " an 'uncertain' suggestion to the time zone detector.\n",
- KEY_LOCATION_TIME_ZONE_DETECTION_UNCERTAINTY_DELAY_MILLIS);
- pw.printf(" %s - Sets the initialization time passed to the location time zone providers"
- + "\n",
- KEY_LOCATION_TIME_ZONE_PROVIDER_INITIALIZATION_TIMEOUT_MILLIS);
- pw.printf(" %s - Sets the amount of extra time added to the location time zone providers"
- + " initialization time\n",
- KEY_LOCATION_TIME_ZONE_PROVIDER_INITIALIZATION_TIMEOUT_FUZZ_MILLIS);
- pw.println();
- pw.println("[*] The user must still have location = on / auto time zone detection = on");
+ pw.printf(" %s\n", KEY_LOCATION_TIME_ZONE_DETECTION_UNCERTAINTY_DELAY_MILLIS);
+ pw.printf(" Sets the amount of time the service waits when uncertain before making an"
+ + " 'uncertain' suggestion to the time zone detector.\n");
+ pw.printf(" %s\n", KEY_LOCATION_TIME_ZONE_PROVIDER_INITIALIZATION_TIMEOUT_MILLIS);
+ pw.printf(" Sets the initialization time passed to the providers.\n");
+ pw.printf(" %s\n", KEY_LOCATION_TIME_ZONE_PROVIDER_INITIALIZATION_TIMEOUT_FUZZ_MILLIS);
+ pw.printf(" Sets the amount of extra time added to the providers' initialization time."
+ + "\n");
pw.println();
pw.printf("Typically, use '%s' to stop the service before setting individual"
+ " flags and '%s' after to restart it.\n",
SHELL_COMMAND_STOP, SHELL_COMMAND_START);
pw.println();
- pw.println("Example:");
- pw.printf(" $ adb shell cmd device_config put %s %s %s\n",
- NAMESPACE_SYSTEM_TIME, KEY_LOCATION_TIME_ZONE_DETECTION_SETTING_ENABLED_DEFAULT,
- "true");
- pw.println("See adb shell cmd device_config for more information.");
+ pw.printf("See \"adb shell cmd device_config\" for more information on setting flags.\n");
+ pw.println();
+ pw.printf("Also see \"adb shell cmd %s help\" for higher-level location time zone"
+ + " commands / settings.\n", TimeZoneDetector.SHELL_COMMAND_SERVICE_NAME);
pw.println();
}
diff --git a/services/core/java/com/android/server/tv/TvInputManagerService.java b/services/core/java/com/android/server/tv/TvInputManagerService.java
index e728ab0..49170f3 100755
--- a/services/core/java/com/android/server/tv/TvInputManagerService.java
+++ b/services/core/java/com/android/server/tv/TvInputManagerService.java
@@ -24,7 +24,6 @@
import android.annotation.Nullable;
import android.annotation.UserIdInt;
import android.app.ActivityManager;
-import android.app.ActivityManager.RunningAppProcessInfo;
import android.content.BroadcastReceiver;
import android.content.ComponentName;
import android.content.ContentResolver;
@@ -109,6 +108,7 @@
import java.util.Iterator;
import java.util.List;
import java.util.Map;
+import java.util.Objects;
import java.util.Set;
import java.util.UUID;
import java.util.regex.Matcher;
@@ -511,11 +511,21 @@
sessionStatesToRelease.add(sessionState);
}
}
+ boolean notifyInfoUpdated = false;
for (SessionState sessionState : sessionStatesToRelease) {
try {
sessionState.session.release();
+ sessionState.currentChannel = null;
+ if (sessionState.isCurrent) {
+ sessionState.isCurrent = false;
+ notifyInfoUpdated = true;
+ }
} catch (RemoteException e) {
Slog.e(TAG, "error in release", e);
+ } finally {
+ if (notifyInfoUpdated) {
+ notifyCurrentChannelInfosUpdatedLocked(userState);
+ }
}
clearSessionAndNotifyClientLocked(sessionState);
}
@@ -576,12 +586,22 @@
return;
}
// Release all created sessions.
+ boolean notifyInfoUpdated = false;
for (SessionState state : userState.sessionStateMap.values()) {
if (state.session != null) {
try {
state.session.release();
+ state.currentChannel = null;
+ if (state.isCurrent) {
+ state.isCurrent = false;
+ notifyInfoUpdated = true;
+ }
} catch (RemoteException e) {
Slog.e(TAG, "error in release", e);
+ } finally {
+ if (notifyInfoUpdated) {
+ notifyCurrentChannelInfosUpdatedLocked(userState);
+ }
}
}
}
@@ -826,9 +846,11 @@
sessionState.session.asBinder().unlinkToDeath(sessionState, 0);
sessionState.session.release();
}
- sessionState.isCurrent = false;
sessionState.currentChannel = null;
- notifyCurrentChannelInfosUpdatedLocked(userState);
+ if (sessionState.isCurrent) {
+ sessionState.isCurrent = false;
+ notifyCurrentChannelInfosUpdatedLocked(userState);
+ }
} catch (RemoteException | SessionNotFoundException e) {
Slog.e(TAG, "error in releaseSession", e);
} finally {
@@ -898,6 +920,11 @@
}
ITvInputSession session = getSessionLocked(sessionState);
session.setMain(isMain);
+ if (sessionState.isMainSession != isMain) {
+ UserState userState = getUserStateLocked(userId);
+ sessionState.isMainSession = isMain;
+ notifyCurrentChannelInfosUpdatedLocked(userState);
+ }
} catch (RemoteException | SessionNotFoundException e) {
Slog.e(TAG, "error in setMain", e);
}
@@ -987,6 +1014,10 @@
try {
ITvInputManagerCallback callback = userState.mCallbacks.getBroadcastItem(i);
Pair<Integer, Integer> pidUid = userState.callbackPidUidMap.get(callback);
+ if (mContext.checkPermission(android.Manifest.permission.ACCESS_TUNED_INFO,
+ pidUid.first, pidUid.second) != PackageManager.PERMISSION_GRANTED) {
+ continue;
+ }
List<TunedInfo> infos = getCurrentTunedInfosInternalLocked(
userState, pidUid.first, pidUid.second);
callback.onCurrentTunedInfosUpdated(infos);
@@ -1517,6 +1548,11 @@
getSessionLocked(sessionState.hardwareSessionToken,
Process.SYSTEM_UID, resolvedUserId).setSurface(surface);
}
+ boolean isVisible = (surface == null);
+ if (sessionState.isVisible != isVisible) {
+ sessionState.isVisible = isVisible;
+ notifyCurrentChannelInfosUpdatedLocked(userState);
+ }
} catch (RemoteException | SessionNotFoundException e) {
Slog.e(TAG, "error in setSurface", e);
}
@@ -1609,9 +1645,12 @@
UserState userState = getOrCreateUserStateLocked(resolvedUserId);
SessionState sessionState = getSessionStateLocked(sessionToken, callingUid,
userState);
- sessionState.isCurrent = true;
- sessionState.currentChannel = channelUri;
- notifyCurrentChannelInfosUpdatedLocked(userState);
+ if (!sessionState.isCurrent
+ || !Objects.equals(sessionState.currentChannel, channelUri)) {
+ sessionState.isCurrent = true;
+ sessionState.currentChannel = channelUri;
+ notifyCurrentChannelInfosUpdatedLocked(userState);
+ }
if (TvContract.isChannelUriForPassthroughInput(channelUri)) {
// Do not log the watch history for passthrough inputs.
return;
@@ -2309,6 +2348,11 @@
@Override
public List<TunedInfo> getCurrentTunedInfos(@UserIdInt int userId) {
+ if (mContext.checkCallingPermission(android.Manifest.permission.ACCESS_TUNED_INFO)
+ != PackageManager.PERMISSION_GRANTED) {
+ throw new SecurityException(
+ "The caller does not have access tuned info permission");
+ }
int callingPid = Binder.getCallingPid();
int callingUid = Binder.getCallingUid();
final int resolvedUserId = resolveCallingUserId(callingPid, callingUid, userId,
@@ -2524,7 +2568,8 @@
state.inputId,
watchedProgramsAccess ? state.currentChannel : null,
state.isRecordingSession,
- isForeground(state.callingPid),
+ state.isVisible,
+ state.isMainSession,
appType,
appTag));
}
@@ -2532,23 +2577,6 @@
return channelInfos;
}
- private boolean isForeground(int pid) {
- if (mActivityManager == null) {
- return false;
- }
- List<RunningAppProcessInfo> appProcesses = mActivityManager.getRunningAppProcesses();
- if (appProcesses == null) {
- return false;
- }
- for (RunningAppProcessInfo appProcess : appProcesses) {
- if (appProcess.pid == pid
- && appProcess.importance == RunningAppProcessInfo.IMPORTANCE_FOREGROUND) {
- return true;
- }
- }
- return false;
- }
-
private boolean hasAccessWatchedProgramsPermission(int callingPid, int callingUid) {
return mContext.checkPermission(PERMISSION_ACCESS_WATCHED_PROGRAMS, callingPid, callingUid)
== PackageManager.PERMISSION_GRANTED;
@@ -2788,6 +2816,8 @@
private boolean isCurrent = false;
private Uri currentChannel = null;
+ private boolean isVisible = false;
+ private boolean isMainSession = false;
private SessionState(IBinder sessionToken, String inputId, ComponentName componentName,
boolean isRecordingSession, ITvInputClient client, int seq, int callingUid,
@@ -3039,16 +3069,19 @@
if (mSessionState.session == null || mSessionState.client == null) {
return;
}
- mSessionState.isCurrent = true;
- mSessionState.currentChannel = channelUri;
- UserState userState = getOrCreateUserStateLocked(mSessionState.userId);
- notifyCurrentChannelInfosUpdatedLocked(userState);
try {
// TODO: Consider adding this channel change in the watch log. When we do
// that, how we can protect the watch log from malicious tv inputs should
// be addressed. e.g. add a field which represents where the channel change
// originated from.
mSessionState.client.onChannelRetuned(channelUri, mSessionState.seq);
+ if (!mSessionState.isCurrent
+ || !Objects.equals(mSessionState.currentChannel, channelUri)) {
+ UserState userState = getOrCreateUserStateLocked(mSessionState.userId);
+ mSessionState.isCurrent = true;
+ mSessionState.currentChannel = channelUri;
+ notifyCurrentChannelInfosUpdatedLocked(userState);
+ }
} catch (RemoteException e) {
Slog.e(TAG, "error in onChannelRetuned", e);
}
diff --git a/services/core/java/com/android/server/vcn/VcnGatewayConnection.java b/services/core/java/com/android/server/vcn/VcnGatewayConnection.java
index 38f5dd6..77bfc5f 100644
--- a/services/core/java/com/android/server/vcn/VcnGatewayConnection.java
+++ b/services/core/java/com/android/server/vcn/VcnGatewayConnection.java
@@ -2046,7 +2046,11 @@
pw.println("VcnGatewayConnection (" + mConnectionConfig.getGatewayConnectionName() + "):");
pw.increaseIndent();
- pw.println("Current state: " + getCurrentState().getClass().getSimpleName());
+ pw.println(
+ "Current state: "
+ + (getCurrentState() == null
+ ? null
+ : getCurrentState().getClass().getSimpleName()));
pw.println("mIsQuitting: " + mIsQuitting);
pw.println("mIsInSafeMode: " + mIsInSafeMode);
pw.println("mCurrentToken: " + mCurrentToken);
@@ -2057,7 +2061,11 @@
pw.println("mUnderlying:");
pw.increaseIndent();
- mUnderlying.dump(pw);
+ if (mUnderlying != null) {
+ mUnderlying.dump(pw);
+ } else {
+ pw.println("null");
+ }
pw.decreaseIndent();
pw.println();
diff --git a/services/core/java/com/android/server/wm/ActivityClientController.java b/services/core/java/com/android/server/wm/ActivityClientController.java
index c5115b2..efee0a1 100644
--- a/services/core/java/com/android/server/wm/ActivityClientController.java
+++ b/services/core/java/com/android/server/wm/ActivityClientController.java
@@ -45,8 +45,10 @@
import android.app.IActivityClientController;
import android.app.IRequestFinishCallback;
import android.app.PictureInPictureParams;
+import android.app.PictureInPictureUiState;
import android.app.servertransaction.ClientTransaction;
import android.app.servertransaction.EnterPipRequestedItem;
+import android.app.servertransaction.PipStateTransactionItem;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
@@ -779,6 +781,26 @@
}
}
+ /**
+ * Alert the client that the Picture-in-Picture state has changed.
+ */
+ void onPictureInPictureStateChanged(@NonNull ActivityRecord r,
+ PictureInPictureUiState pipState) {
+ if (!r.inPinnedWindowingMode()) {
+ throw new IllegalStateException("Activity is not in PIP mode");
+ }
+
+ try {
+ final ClientTransaction transaction = ClientTransaction.obtain(
+ r.app.getThread(), r.token);
+ transaction.addCallback(PipStateTransactionItem.obtain(pipState));
+ mService.getLifecycleManager().scheduleTransaction(transaction);
+ } catch (Exception e) {
+ Slog.w(TAG, "Failed to send pip state transaction item: "
+ + r.intent.getComponent(), e);
+ }
+ }
+
@Override
public void toggleFreeformWindowingMode(IBinder token) {
final long ident = Binder.clearCallingIdentity();
diff --git a/services/core/java/com/android/server/wm/ActivityRecord.java b/services/core/java/com/android/server/wm/ActivityRecord.java
index c39358e..131ba12 100644
--- a/services/core/java/com/android/server/wm/ActivityRecord.java
+++ b/services/core/java/com/android/server/wm/ActivityRecord.java
@@ -1090,6 +1090,8 @@
if (info.configChanges != 0) {
pw.println(prefix + "configChanges=0x" + Integer.toHexString(info.configChanges));
}
+ pw.println(prefix + "neverSandboxDisplayApis=" + info.neverSandboxDisplayApis());
+ pw.println(prefix + "alwaysSandboxDisplayApis=" + info.alwaysSandboxDisplayApis());
}
if (mLastParentBeforePip != null) {
pw.println(prefix + "lastParentTaskIdBeforePip=" + mLastParentBeforePip.mTaskId);
@@ -6899,7 +6901,8 @@
getResolvedOverrideConfiguration().seq = mConfigurationSeq;
// Sandbox max bounds by setting it to the activity bounds, if activity is letterboxed, or
- // has or will have mCompatDisplayInsets for size compat.
+ // has or will have mCompatDisplayInsets for size compat. Also forces an activity to be
+ // sandboxed or not depending upon the configuration settings.
if (providesMaxBounds()) {
mTmpBounds.set(resolvedConfig.windowConfiguration.getBounds());
if (mTmpBounds.isEmpty()) {
@@ -6909,11 +6912,15 @@
}
if (DEBUG_CONFIGURATION) {
ProtoLog.d(WM_DEBUG_CONFIGURATION, "Sandbox max bounds for uid %s to bounds %s. "
+ + "config to never sandbox = %s, "
+ + "config to always sandbox = %s, "
+ "letterboxing from mismatch with parent bounds = %s, "
+ "has mCompatDisplayInsets = %s, "
+ "should create compatDisplayInsets = %s",
getUid(),
mTmpBounds,
+ info.neverSandboxDisplayApis(),
+ info.alwaysSandboxDisplayApis(),
!matchParentBounds(),
mCompatDisplayInsets != null,
shouldCreateCompatDisplayInsets());
@@ -7311,12 +7318,19 @@
if (mDisplayContent != null && !mDisplayContent.sandboxDisplayApis()) {
return false;
}
+ // Never apply sandboxing to an app that should be explicitly excluded from the config.
+ if (info != null && info.neverSandboxDisplayApis()) {
+ return false;
+ }
+ // Always apply sandboxing to an app that should be explicitly included from the config.
+ if (info != null && info.alwaysSandboxDisplayApis()) {
+ return true;
+ }
// Max bounds should be sandboxed where an activity is letterboxed (activity bounds will be
// smaller than task bounds).
if (!matchParentBounds()) {
return true;
}
-
// Max bounds should be sandboxed when an activity should have compatDisplayInsets, and it
// will keep the same bounds and screen configuration when it was first launched regardless
// how its parent window changes, so that the sandbox API will provide a consistent result.
diff --git a/services/core/java/com/android/server/wm/ActivityTaskManagerService.java b/services/core/java/com/android/server/wm/ActivityTaskManagerService.java
index b83945e..ee503d5 100644
--- a/services/core/java/com/android/server/wm/ActivityTaskManagerService.java
+++ b/services/core/java/com/android/server/wm/ActivityTaskManagerService.java
@@ -141,6 +141,7 @@
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.app.PictureInPictureParams;
+import android.app.PictureInPictureUiState;
import android.app.ProfilerInfo;
import android.app.RemoteAction;
import android.app.WaitResult;
@@ -3644,6 +3645,17 @@
}
}
+ @Override
+ public void onPictureInPictureStateChanged(PictureInPictureUiState pipState) {
+ enforceTaskPermission("onPictureInPictureStateChanged");
+ final Task rootPinnedStask = mRootWindowContainer.getDefaultTaskDisplayArea()
+ .getRootPinnedTask();
+ if (rootPinnedStask != null && rootPinnedStask.getTopMostActivity() != null) {
+ mWindowManager.mAtmService.mActivityClientController.onPictureInPictureStateChanged(
+ rootPinnedStask.getTopMostActivity(), pipState);
+ }
+ }
+
void dumpLastANRLocked(PrintWriter pw) {
pw.println("ACTIVITY MANAGER LAST ANR (dumpsys activity lastanr)");
if (mLastANRState == null) {
diff --git a/services/core/java/com/android/server/wm/ShellRoot.java b/services/core/java/com/android/server/wm/ShellRoot.java
index 0902948..b56e76d 100644
--- a/services/core/java/com/android/server/wm/ShellRoot.java
+++ b/services/core/java/com/android/server/wm/ShellRoot.java
@@ -76,8 +76,11 @@
throw new IllegalArgumentException(shellRootLayer
+ " is not an acceptable shell root layer.");
}
- mToken = new WindowToken(
- dc.mWmService, client.asBinder(), windowType, true, dc, true, false);
+ mToken = new WindowToken.Builder(dc.mWmService, client.asBinder(), windowType)
+ .setDisplayContent(dc)
+ .setPersistOnEmpty(true)
+ .setOwnerCanManageAppTokens(true)
+ .build();
mSurfaceControl = mToken.makeChildSurface(null)
.setContainerLayer()
.setName("Shell Root Leash " + dc.getDisplayId())
diff --git a/services/core/java/com/android/server/wm/WindowContainer.java b/services/core/java/com/android/server/wm/WindowContainer.java
index 191c3a11..bea733b 100644
--- a/services/core/java/com/android/server/wm/WindowContainer.java
+++ b/services/core/java/com/android/server/wm/WindowContainer.java
@@ -1257,7 +1257,14 @@
mOrientation = orientation;
final WindowContainer parent = getParent();
if (parent != null) {
- if (getConfiguration().orientation != getRequestedConfigurationOrientation()) {
+ if (getConfiguration().orientation != getRequestedConfigurationOrientation()
+ // Update configuration directly only if the change won't be dispatched from
+ // ancestor. This prevents from computing intermediate configuration when the
+ // parent also needs to be updated from the ancestor. E.g. the app requests
+ // portrait but the task is still in landscape. While updating from display,
+ // the task can be updated to portrait first so the configuration can be
+ // computed in a consistent environment.
+ && (inMultiWindowMode() || !handlesOrientationChangeFromDescendant())) {
// Resolve the requested orientation.
onConfigurationChanged(parent.getConfiguration());
}
diff --git a/services/core/java/com/android/server/wm/WindowContextListenerController.java b/services/core/java/com/android/server/wm/WindowContextListenerController.java
index 0bb56e4..b417832 100644
--- a/services/core/java/com/android/server/wm/WindowContextListenerController.java
+++ b/services/core/java/com/android/server/wm/WindowContextListenerController.java
@@ -271,6 +271,21 @@
if (mDeathRecipient == null) {
throw new IllegalStateException("Invalid client token: " + mClientToken);
}
+ final WindowToken windowToken = mContainer.asWindowToken();
+ if (windowToken != null && windowToken.isFromClient()) {
+ // If the WindowContext created WindowToken is removed by
+ // WMS#postWindowRemoveCleanupLocked, the WindowContext should switch back to
+ // listen to previous associated DisplayArea.
+ final DisplayContent dc = windowToken.mWmService.mRoot
+ .getDisplayContent(mLastReportedDisplay);
+ // If we cannot obtain the DisplayContent, the DisplayContent may also be removed.
+ // We should proceed the removal process.
+ if (dc != null) {
+ final DisplayArea da = dc.findAreaForToken(windowToken);
+ updateContainer(da);
+ return;
+ }
+ }
mDeathRecipient.unlinkToDeath();
IWindowToken windowTokenClient = IWindowToken.Stub.asInterface(mClientToken);
try {
diff --git a/services/core/java/com/android/server/wm/WindowManagerService.java b/services/core/java/com/android/server/wm/WindowManagerService.java
index 61fce88..2707b4d 100644
--- a/services/core/java/com/android/server/wm/WindowManagerService.java
+++ b/services/core/java/com/android/server/wm/WindowManagerService.java
@@ -1543,13 +1543,20 @@
final IBinder binder = attrs.token != null ? attrs.token : windowContextToken;
final Bundle options = mWindowContextListenerController
.getOptions(windowContextToken);
- token = new WindowToken(this, binder, type, false /* persistOnEmpty */,
- displayContent, session.mCanAddInternalSystemWindow,
- isRoundedCornerOverlay, true /* fromClientToken */, options);
+ token = new WindowToken.Builder(this, binder, type)
+ .setDisplayContent(displayContent)
+ .setOwnerCanManageAppTokens(session.mCanAddInternalSystemWindow)
+ .setRoundedCornerOverlay(isRoundedCornerOverlay)
+ .setFromClientToken(true)
+ .setOptions(options)
+ .build();
} else {
final IBinder binder = attrs.token != null ? attrs.token : client.asBinder();
- token = new WindowToken(this, binder, type, false, displayContent,
- session.mCanAddInternalSystemWindow, isRoundedCornerOverlay);
+ token = new WindowToken.Builder(this, binder, type)
+ .setDisplayContent(displayContent)
+ .setOwnerCanManageAppTokens(session.mCanAddInternalSystemWindow)
+ .setRoundedCornerOverlay(isRoundedCornerOverlay)
+ .build();
}
} else if (rootType >= FIRST_APPLICATION_WINDOW
&& rootType <= LAST_APPLICATION_WINDOW) {
@@ -1620,8 +1627,10 @@
// It is not valid to use an app token with other system types; we will
// instead make a new token for it (as if null had been passed in for the token).
attrs.token = null;
- token = new WindowToken(this, client.asBinder(), type, false /* persistOnEmpty */,
- displayContent, session.mCanAddInternalSystemWindow);
+ token = new WindowToken.Builder(this, client.asBinder(), type)
+ .setDisplayContent(displayContent)
+ .setOwnerCanManageAppTokens(session.mCanAddInternalSystemWindow)
+ .build();
}
final WindowState win = new WindowState(this, session, client, token, parentWindow,
@@ -2647,9 +2656,12 @@
new WallpaperWindowToken(this, binder, true, dc,
true /* ownerCanManageAppTokens */, options);
} else {
- new WindowToken(this, binder, type, true /* persistOnEmpty */, dc,
- true /* ownerCanManageAppTokens */, false /* roundedCornerOverlay */,
- false /* fromClientToken */, options);
+ new WindowToken.Builder(this, binder, type)
+ .setDisplayContent(dc)
+ .setPersistOnEmpty(true)
+ .setOwnerCanManageAppTokens(true)
+ .setOptions(options)
+ .build();
}
}
}
diff --git a/services/core/java/com/android/server/wm/WindowToken.java b/services/core/java/com/android/server/wm/WindowToken.java
index ef39560..fbfa400 100644
--- a/services/core/java/com/android/server/wm/WindowToken.java
+++ b/services/core/java/com/android/server/wm/WindowToken.java
@@ -53,6 +53,7 @@
import android.view.InsetsState;
import android.view.SurfaceControl;
import android.view.WindowManager;
+import android.view.WindowManager.LayoutParams.WindowType;
import android.window.WindowContext;
import com.android.internal.protolog.common.ProtoLog;
@@ -70,10 +71,10 @@
class WindowToken extends WindowContainer<WindowState> {
private static final String TAG = TAG_WITH_CLASS_NAME ? "WindowToken" : TAG_WM;
- // The actual token.
+ /** The actual token */
final IBinder token;
- // The type of window this token is for, as per WindowManager.LayoutParams.
+ /** The type of window this token is for, as per {@link WindowManager.LayoutParams} */
final int windowType;
/**
@@ -86,8 +87,10 @@
/** {@code true} if this holds the rounded corner overlay */
final boolean mRoundedCornerOverlay;
- // Set if this token was explicitly added by a client, so should
- // persist (not be removed) when all windows are removed.
+ /**
+ * Set if this token was explicitly added by a client, so should persist (not be removed)
+ * when all windows are removed.
+ */
boolean mPersistOnEmpty;
// For printing.
@@ -198,21 +201,15 @@
return isFirstChildWindowGreaterThanSecond(newWindow, existingWindow) ? 1 : -1;
};
- WindowToken(WindowManagerService service, IBinder _token, int type, boolean persistOnEmpty,
- DisplayContent dc, boolean ownerCanManageAppTokens) {
+ protected WindowToken(WindowManagerService service, IBinder _token, int type,
+ boolean persistOnEmpty, DisplayContent dc, boolean ownerCanManageAppTokens) {
this(service, _token, type, persistOnEmpty, dc, ownerCanManageAppTokens,
- false /* roundedCornerOverlay */);
+ false /* roundedCornerOverlay */, false /* fromClientToken */, null /* options */);
}
- WindowToken(WindowManagerService service, IBinder _token, int type, boolean persistOnEmpty,
- DisplayContent dc, boolean ownerCanManageAppTokens, boolean roundedCornerOverlay) {
- this(service, _token, type, persistOnEmpty, dc, ownerCanManageAppTokens,
- roundedCornerOverlay, false /* fromClientToken */, null /* options */);
- }
-
- WindowToken(WindowManagerService service, IBinder _token, int type, boolean persistOnEmpty,
- DisplayContent dc, boolean ownerCanManageAppTokens, boolean roundedCornerOverlay,
- boolean fromClientToken, @Nullable Bundle options) {
+ protected WindowToken(WindowManagerService service, IBinder _token, int type,
+ boolean persistOnEmpty, DisplayContent dc, boolean ownerCanManageAppTokens,
+ boolean roundedCornerOverlay, boolean fromClientToken, @Nullable Bundle options) {
super(service);
token = _token;
windowType = type;
@@ -770,7 +767,69 @@
}
@Override
- @WindowManager.LayoutParams.WindowType int getWindowType() {
+ @WindowType int getWindowType() {
return windowType;
}
+
+ static class Builder {
+ private final WindowManagerService mService;
+ private final IBinder mToken;
+ @WindowType
+ private final int mType;
+
+ private boolean mPersistOnEmpty;
+ private DisplayContent mDisplayContent;
+ private boolean mOwnerCanManageAppTokens;
+ private boolean mRoundedCornerOverlay;
+ private boolean mFromClientToken;
+ @Nullable
+ private Bundle mOptions;
+
+ Builder(WindowManagerService service, IBinder token, int type) {
+ mService = service;
+ mToken = token;
+ mType = type;
+ }
+
+ /** @see WindowToken#mPersistOnEmpty */
+ Builder setPersistOnEmpty(boolean persistOnEmpty) {
+ mPersistOnEmpty = persistOnEmpty;
+ return this;
+ }
+
+ /** Sets the {@link DisplayContent} to be associated. */
+ Builder setDisplayContent(DisplayContent dc) {
+ mDisplayContent = dc;
+ return this;
+ }
+
+ /** @see WindowToken#mOwnerCanManageAppTokens */
+ Builder setOwnerCanManageAppTokens(boolean ownerCanManageAppTokens) {
+ mOwnerCanManageAppTokens = ownerCanManageAppTokens;
+ return this;
+ }
+
+ /** @see WindowToken#mRoundedCornerOverlay */
+ Builder setRoundedCornerOverlay(boolean roundedCornerOverlay) {
+ mRoundedCornerOverlay = roundedCornerOverlay;
+ return this;
+ }
+
+ /** @see WindowToken#mFromClientToken */
+ Builder setFromClientToken(boolean fromClientToken) {
+ mFromClientToken = fromClientToken;
+ return this;
+ }
+
+ /** @see WindowToken#mOptions */
+ Builder setOptions(Bundle options) {
+ mOptions = options;
+ return this;
+ }
+
+ WindowToken build() {
+ return new WindowToken(mService, mToken, mType, mPersistOnEmpty, mDisplayContent,
+ mOwnerCanManageAppTokens, mRoundedCornerOverlay, mFromClientToken, mOptions);
+ }
+ }
}
diff --git a/services/core/jni/Android.bp b/services/core/jni/Android.bp
index 74fbb42..4ce9591 100644
--- a/services/core/jni/Android.bp
+++ b/services/core/jni/Android.bp
@@ -34,6 +34,7 @@
"gnss/GnssMeasurement.cpp",
"gnss/GnssMeasurementCallback.cpp",
"gnss/Utils.cpp",
+ "stats/SurfaceFlingerPuller.cpp",
"com_android_server_adb_AdbDebuggingManager.cpp",
"com_android_server_am_BatteryStatsService.cpp",
"com_android_server_biometrics_SurfaceToNativeHandleConverter.cpp",
@@ -53,6 +54,7 @@
"com_android_server_SerialService.cpp",
"com_android_server_soundtrigger_middleware_AudioSessionProviderImpl.cpp",
"com_android_server_soundtrigger_middleware_ExternalCaptureStateTracker.cpp",
+ "com_android_server_stats_pull_StatsPullAtomService.cpp",
"com_android_server_storage_AppFuseBridge.cpp",
"com_android_server_SystemServer.cpp",
"com_android_server_tv_TvUinputBridge.cpp",
@@ -127,6 +129,7 @@
"libsensorservice",
"libsensorservicehidl",
"libgui",
+ "libtimestats_atoms_proto",
"libusbhost",
"libtinyalsa",
"libEGL",
diff --git a/services/core/jni/com_android_server_pm_PackageManagerShellCommandDataLoader.cpp b/services/core/jni/com_android_server_pm_PackageManagerShellCommandDataLoader.cpp
index f0210ee..db52683 100644
--- a/services/core/jni/com_android_server_pm_PackageManagerShellCommandDataLoader.cpp
+++ b/services/core/jni/com_android_server_pm_PackageManagerShellCommandDataLoader.cpp
@@ -171,17 +171,23 @@
return result;
}
-static inline std::vector<char> readBytes(borrowed_fd fd) {
- int32_t size = readLEInt32(fd);
- std::vector<char> result(size);
- android::base::ReadFully(fd, result.data(), size);
- return result;
+static inline bool skipBytes(borrowed_fd fd, int* max_size) {
+ int32_t size = std::min(readLEInt32(fd), *max_size);
+ if (size <= 0) {
+ return false;
+ }
+ *max_size -= size;
+ return (TEMP_FAILURE_RETRY(lseek64(fd.get(), size, SEEK_CUR)) >= 0);
}
static inline int32_t skipIdSigHeaders(borrowed_fd fd) {
- readLEInt32(fd); // version
- readBytes(fd); // hashingInfo
- readBytes(fd); // signingInfo
+ // version
+ auto version = readLEInt32(fd);
+ int max_size = INCFS_MAX_SIGNATURE_SIZE - sizeof(version);
+ // hashingInfo and signingInfo
+ if (!skipBytes(fd, &max_size) || !skipBytes(fd, &max_size)) {
+ return -1;
+ }
return readLEInt32(fd); // size of the verity tree
}
@@ -253,8 +259,12 @@
unique_fd idsigFd = openLocalFile(env, jni, shellCommand, idsigPath);
if (idsigFd.ok()) {
- auto treeSize = verityTreeSizeForFile(size);
auto actualTreeSize = skipIdSigHeaders(idsigFd);
+ if (actualTreeSize < 0) {
+ ALOGE("Error reading .idsig file: wrong format.");
+ return {};
+ }
+ auto treeSize = verityTreeSizeForFile(size);
if (treeSize != actualTreeSize) {
ALOGE("Verity tree size mismatch: %d vs .idsig: %d.", int(treeSize),
int(actualTreeSize));
diff --git a/services/core/jni/com_android_server_stats_pull_StatsPullAtomService.cpp b/services/core/jni/com_android_server_stats_pull_StatsPullAtomService.cpp
new file mode 100644
index 0000000..46fe595
--- /dev/null
+++ b/services/core/jni/com_android_server_stats_pull_StatsPullAtomService.cpp
@@ -0,0 +1,61 @@
+/*
+ * Copyright 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#define LOG_TAG "StatsPullAtomService"
+
+#include <jni.h>
+#include <log/log.h>
+#include <nativehelper/JNIHelp.h>
+#include <stats_event.h>
+#include <stats_pull_atom_callback.h>
+#include <statslog.h>
+
+#include "stats/SurfaceFlingerPuller.h"
+
+namespace android {
+
+static server::stats::SurfaceFlingerPuller gSurfaceFlingerPuller;
+
+static AStatsManager_PullAtomCallbackReturn onSurfaceFlingerPullCallback(int32_t atom_tag,
+ AStatsEventList* data,
+ void* cookie) {
+ return gSurfaceFlingerPuller.pull(atom_tag, data);
+}
+
+static void initializeNativePullers(JNIEnv* env, jobject javaObject) {
+ // Surface flinger layer & global info.
+ gSurfaceFlingerPuller = server::stats::SurfaceFlingerPuller();
+ AStatsManager_setPullAtomCallback(android::util::SURFACEFLINGER_STATS_GLOBAL_INFO,
+ /* metadata= */ nullptr, onSurfaceFlingerPullCallback,
+ /* cookie= */ nullptr);
+ AStatsManager_setPullAtomCallback(android::util::SURFACEFLINGER_STATS_LAYER_INFO,
+ /* metadata= */ nullptr, onSurfaceFlingerPullCallback,
+ /* cookie= */ nullptr);
+}
+
+static const JNINativeMethod sMethods[] = {
+ {"initializeNativePullers", "()V", (void*)initializeNativePullers}};
+
+int register_android_server_stats_pull_StatsPullAtomService(JNIEnv* env) {
+ int res = jniRegisterNativeMethods(env, "com/android/server/stats/pull/StatsPullAtomService",
+ sMethods, NELEM(sMethods));
+ if (res < 0) {
+ ALOGE("failed to register native methods");
+ }
+ return res;
+}
+
+} // namespace android
\ No newline at end of file
diff --git a/services/core/jni/onload.cpp b/services/core/jni/onload.cpp
index f257686..b043e64 100644
--- a/services/core/jni/onload.cpp
+++ b/services/core/jni/onload.cpp
@@ -61,6 +61,7 @@
int register_android_server_AdbDebuggingManager(JNIEnv* env);
int register_android_server_FaceService(JNIEnv* env);
int register_android_server_GpuService(JNIEnv* env);
+int register_android_server_stats_pull_StatsPullAtomService(JNIEnv* env);
};
using namespace android;
@@ -115,5 +116,6 @@
register_android_server_AdbDebuggingManager(env);
register_android_server_FaceService(env);
register_android_server_GpuService(env);
+ register_android_server_stats_pull_StatsPullAtomService(env);
return JNI_VERSION_1_4;
}
diff --git a/services/core/jni/stats/OWNERS b/services/core/jni/stats/OWNERS
new file mode 100644
index 0000000..2611e5b
--- /dev/null
+++ b/services/core/jni/stats/OWNERS
@@ -0,0 +1,8 @@
+jeffreyhuang@google.com
+jtnguyen@google.com
+muhammadq@google.com
+sharaieko@google.com
+singhtejinder@google.com
+tsaichristine@google.com
+yaochen@google.com
+yro@google.com
diff --git a/services/core/jni/stats/SurfaceFlingerPuller.cpp b/services/core/jni/stats/SurfaceFlingerPuller.cpp
new file mode 100644
index 0000000..0e28da7
--- /dev/null
+++ b/services/core/jni/stats/SurfaceFlingerPuller.cpp
@@ -0,0 +1,168 @@
+/*
+ * Copyright 2021 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.
+ */
+
+#define LOG_TAG "SurfaceFlingerPuller"
+
+#include "SurfaceFlingerPuller.h"
+
+#include <gui/SurfaceComposerClient.h>
+#include <log/log.h>
+#include <statslog.h>
+#include <timestatsatomsproto/TimeStatsAtomsProtoHeader.h>
+
+#include <vector>
+
+namespace android {
+namespace server {
+namespace stats {
+
+using android::util::BytesField;
+using std::optional;
+
+namespace {
+optional<BytesField> getBytes(const google::protobuf::MessageLite& proto, std::string& data) {
+ if (!proto.SerializeToString(&data)) {
+ ALOGW("Unable to serialize surface flinger bytes field");
+ return std::nullopt;
+ }
+ return {BytesField(data.data(), data.size())};
+}
+} // namespace
+
+AStatsManager_PullAtomCallbackReturn SurfaceFlingerPuller::pull(int32_t atomTag,
+ AStatsEventList* data) {
+ // Don't need mutexes here, since there is no global state.
+ // SurfaceComposerClient is thread safe, and surfaceflinger is internally thread safe.
+
+ bool success = false;
+ std::string pullDataProto;
+ status_t err = SurfaceComposerClient::onPullAtom(atomTag, &pullDataProto, &success);
+ if (!success || err != NO_ERROR) {
+ ALOGW("Failed to pull atom %" PRId32
+ " from surfaceflinger. Success is %d, binder status is %s",
+ atomTag, (int)success, binder::Status::exceptionToString(err).c_str());
+ return AStatsManager_PULL_SKIP;
+ }
+
+ switch (atomTag) {
+ case android::util::SURFACEFLINGER_STATS_GLOBAL_INFO:
+ return parseGlobalInfoPull(pullDataProto, data);
+ case android::util::SURFACEFLINGER_STATS_LAYER_INFO:
+ return parseLayerInfoPull(pullDataProto, data);
+ default:
+ ALOGW("Invalid atom id for surfaceflinger pullers: %" PRId32, atomTag);
+ return AStatsManager_PULL_SKIP;
+ }
+}
+
+AStatsManager_PullAtomCallbackReturn SurfaceFlingerPuller::parseGlobalInfoPull(
+ const std::string& protoData, AStatsEventList* data) {
+ android::surfaceflinger::SurfaceflingerStatsGlobalInfoWrapper atomList;
+ if (!atomList.ParseFromString(protoData)) {
+ ALOGW("Error parsing surface flinger global stats to proto");
+ return AStatsManager_PULL_SKIP;
+ }
+
+ for (const auto& atom : atomList.atom()) {
+ // The strings must outlive the BytesFields, which only have a pointer to the data.
+ std::string frameDurationStr, renderEngineTimeStr, deadlineMissesStr, predictionErrorsStr;
+ optional<BytesField> frameDuration = getBytes(atom.frame_duration(), frameDurationStr);
+ optional<BytesField> renderEngineTime =
+ getBytes(atom.render_engine_timing(), renderEngineTimeStr);
+ optional<BytesField> deadlineMisses =
+ getBytes(atom.sf_deadline_misses(), deadlineMissesStr);
+ optional<BytesField> predictionErrors =
+ getBytes(atom.sf_prediction_errors(), predictionErrorsStr);
+
+ // Fail if any serialization to bytes failed.
+ if (!frameDuration || !renderEngineTime || !deadlineMisses || !predictionErrors) {
+ return AStatsManager_PULL_SKIP;
+ }
+
+ android::util::addAStatsEvent(data, android::util::SURFACEFLINGER_STATS_GLOBAL_INFO,
+ atom.total_frames(), atom.missed_frames(),
+ atom.client_composition_frames(), atom.display_on_millis(),
+ atom.animation_millis(), atom.event_connection_count(),
+ frameDuration.value(), renderEngineTime.value(),
+ atom.total_timeline_frames(), atom.total_janky_frames(),
+ atom.total_janky_frames_with_long_cpu(),
+ atom.total_janky_frames_with_long_gpu(),
+ atom.total_janky_frames_sf_unattributed(),
+ atom.total_janky_frames_app_unattributed(),
+ atom.total_janky_frames_sf_scheduling(),
+ atom.total_jank_frames_sf_prediction_error(),
+ atom.total_jank_frames_app_buffer_stuffing(),
+ atom.display_refresh_rate_bucket(), deadlineMisses.value(),
+ predictionErrors.value(), atom.render_rate_bucket());
+ }
+ return AStatsManager_PULL_SUCCESS;
+}
+
+AStatsManager_PullAtomCallbackReturn SurfaceFlingerPuller::parseLayerInfoPull(
+ const std::string& protoData, AStatsEventList* data) {
+ android::surfaceflinger::SurfaceflingerStatsLayerInfoWrapper atomList;
+ if (!atomList.ParseFromString(protoData)) {
+ ALOGW("Error parsing surface flinger layer stats to proto");
+ return AStatsManager_PULL_SKIP;
+ }
+
+ for (const auto& atom : atomList.atom()) {
+ // The strings must outlive the BytesFields, which only have a pointer to the data.
+ std::string present2PresentStr, post2presentStr, acquire2PresentStr, latch2PresentStr,
+ desired2PresentStr, post2AcquireStr, frameRateVoteStr, appDeadlineMissesStr;
+ optional<BytesField> present2Present =
+ getBytes(atom.present_to_present(), present2PresentStr);
+ optional<BytesField> post2present = getBytes(atom.post_to_present(), post2presentStr);
+ optional<BytesField> acquire2Present =
+ getBytes(atom.acquire_to_present(), acquire2PresentStr);
+ optional<BytesField> latch2Present = getBytes(atom.latch_to_present(), latch2PresentStr);
+ optional<BytesField> desired2Present =
+ getBytes(atom.desired_to_present(), desired2PresentStr);
+ optional<BytesField> post2Acquire = getBytes(atom.post_to_acquire(), post2AcquireStr);
+ optional<BytesField> frameRateVote = getBytes(atom.set_frame_rate_vote(), frameRateVoteStr);
+ optional<BytesField> appDeadlineMisses =
+ getBytes(atom.app_deadline_misses(), appDeadlineMissesStr);
+
+ // Fail if any serialization to bytes failed.
+ if (!present2Present || !post2present || !acquire2Present || !latch2Present ||
+ !desired2Present || !post2Acquire || !frameRateVote || !appDeadlineMisses) {
+ return AStatsManager_PULL_SKIP;
+ }
+
+ android::util::addAStatsEvent(data, android::util::SURFACEFLINGER_STATS_LAYER_INFO,
+ atom.layer_name().c_str(), atom.total_frames(),
+ atom.dropped_frames(), present2Present.value(),
+ post2present.value(), acquire2Present.value(),
+ latch2Present.value(), desired2Present.value(),
+ post2Acquire.value(), atom.late_acquire_frames(),
+ atom.bad_desired_present_frames(), atom.uid(),
+ atom.total_timeline_frames(), atom.total_janky_frames(),
+ atom.total_janky_frames_with_long_cpu(),
+ atom.total_janky_frames_with_long_gpu(),
+ atom.total_janky_frames_sf_unattributed(),
+ atom.total_janky_frames_app_unattributed(),
+ atom.total_janky_frames_sf_scheduling(),
+ atom.total_jank_frames_sf_prediction_error(),
+ atom.total_jank_frames_app_buffer_stuffing(),
+ atom.display_refresh_rate_bucket(), atom.render_rate_bucket(),
+ frameRateVote.value(), appDeadlineMisses.value());
+ }
+ return AStatsManager_PULL_SUCCESS;
+}
+
+} // namespace stats
+} // namespace server
+} // namespace android
diff --git a/services/core/jni/stats/SurfaceFlingerPuller.h b/services/core/jni/stats/SurfaceFlingerPuller.h
new file mode 100644
index 0000000..301af1d
--- /dev/null
+++ b/services/core/jni/stats/SurfaceFlingerPuller.h
@@ -0,0 +1,44 @@
+/*
+ * Copyright 2021 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.
+ */
+
+#pragma once
+
+#include <stats_event.h>
+#include <stats_pull_atom_callback.h>
+#include <utils/String16.h>
+
+namespace android {
+namespace server {
+namespace stats {
+
+/**
+ * Pulls data from surfaceflinger.
+ * The indirection is needed because surfaceflinger is a bootstrap process.
+ */
+class SurfaceFlingerPuller {
+public:
+ AStatsManager_PullAtomCallbackReturn pull(int32_t atomTag, AStatsEventList* data);
+
+private:
+ AStatsManager_PullAtomCallbackReturn parseGlobalInfoPull(const std::string& protoData,
+ AStatsEventList* data);
+ AStatsManager_PullAtomCallbackReturn parseLayerInfoPull(const std::string& protoData,
+ AStatsEventList* data);
+};
+
+} // namespace stats
+} // namespace server
+} // namespace android
\ No newline at end of file
diff --git a/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java b/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java
index 6283b4e..20c56fb 100644
--- a/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java
+++ b/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java
@@ -626,6 +626,10 @@
@EnabledSince(targetSdkVersion = Build.VERSION_CODES.S)
private static final long PREVENT_SETTING_PASSWORD_QUALITY_ON_PARENT = 165573442L;
+ private static final String CREDENTIAL_MANAGEMENT_APP_INVALID_ALIAS_MSG =
+ "The alias provided must be contained in the aliases specified in the credential "
+ + "management app's authentication policy";
+
final Context mContext;
final Injector mInjector;
final IPackageManager mIPackageManager;
@@ -5450,11 +5454,17 @@
boolean isUserSelectable) {
final CallerIdentity caller = getCallerIdentity(who, callerPackage);
final boolean isCallerDelegate = isCallerDelegate(caller, DELEGATION_CERT_INSTALL);
- final boolean isCredentialManagementApp =
- isCredentialManagementApp(caller, alias, isUserSelectable);
+ final boolean isCredentialManagementApp = isCredentialManagementApp(caller);
Preconditions.checkCallAuthorization((caller.hasAdminComponent()
&& (isProfileOwner(caller) || isDeviceOwner(caller)))
|| (caller.hasPackage() && (isCallerDelegate || isCredentialManagementApp)));
+ if (isCredentialManagementApp) {
+ Preconditions.checkCallAuthorization(isUserSelectable, "The credential "
+ + "management app is not allowed to install a user selectable key pair");
+ Preconditions.checkCallAuthorization(
+ isAliasInCredentialManagementAppPolicy(caller, alias),
+ CREDENTIAL_MANAGEMENT_APP_INVALID_ALIAS_MSG);
+ }
checkCanExecuteOrThrowUnsafe(DevicePolicyManager.OPERATION_INSTALL_KEY_PAIR);
final long id = mInjector.binderClearCallingIdentity();
@@ -5509,10 +5519,15 @@
public boolean removeKeyPair(ComponentName who, String callerPackage, String alias) {
final CallerIdentity caller = getCallerIdentity(who, callerPackage);
final boolean isCallerDelegate = isCallerDelegate(caller, DELEGATION_CERT_INSTALL);
- final boolean isCredentialManagementApp = isCredentialManagementApp(caller, alias);
+ final boolean isCredentialManagementApp = isCredentialManagementApp(caller);
Preconditions.checkCallAuthorization((caller.hasAdminComponent()
&& (isProfileOwner(caller) || isDeviceOwner(caller)))
|| (caller.hasPackage() && (isCallerDelegate || isCredentialManagementApp)));
+ if (isCredentialManagementApp) {
+ Preconditions.checkCallAuthorization(
+ isAliasInCredentialManagementAppPolicy(caller, alias),
+ CREDENTIAL_MANAGEMENT_APP_INVALID_ALIAS_MSG);
+ }
checkCanExecuteOrThrowUnsafe(DevicePolicyManager.OPERATION_REMOVE_KEY_PAIR);
final long id = Binder.clearCallingIdentity();
@@ -5546,8 +5561,14 @@
@Override
public boolean hasKeyPair(String callerPackage, String alias) {
final CallerIdentity caller = getCallerIdentity(callerPackage);
+ final boolean isCredentialManagementApp = isCredentialManagementApp(caller);
Preconditions.checkCallAuthorization(canManageCertificates(caller)
- || isCredentialManagementApp(caller, alias));
+ || isCredentialManagementApp);
+ if (isCredentialManagementApp) {
+ Preconditions.checkCallAuthorization(
+ isAliasInCredentialManagementAppPolicy(caller, alias),
+ CREDENTIAL_MANAGEMENT_APP_INVALID_ALIAS_MSG);
+ }
return mInjector.binderWithCleanCallingIdentity(() -> {
try (KeyChainConnection keyChainConnection =
@@ -5782,7 +5803,7 @@
final CallerIdentity caller = getCallerIdentity(who, callerPackage);
final boolean isCallerDelegate = isCallerDelegate(caller, DELEGATION_CERT_INSTALL);
- final boolean isCredentialManagementApp = isCredentialManagementApp(caller, alias);
+ final boolean isCredentialManagementApp = isCredentialManagementApp(caller);
if (deviceIdAttestationRequired && attestationUtilsFlags.length > 0) {
// TODO: replace enforce methods
enforceCallerCanRequestDeviceIdAttestation(caller);
@@ -5791,6 +5812,11 @@
Preconditions.checkCallAuthorization((caller.hasAdminComponent()
&& (isProfileOwner(caller) || isDeviceOwner(caller)))
|| (caller.hasPackage() && (isCallerDelegate || isCredentialManagementApp)));
+ if (isCredentialManagementApp) {
+ Preconditions.checkCallAuthorization(
+ isAliasInCredentialManagementAppPolicy(caller, alias),
+ CREDENTIAL_MANAGEMENT_APP_INVALID_ALIAS_MSG);
+ }
}
if (TextUtils.isEmpty(alias)) {
@@ -5918,10 +5944,15 @@
byte[] cert, byte[] chain, boolean isUserSelectable) {
final CallerIdentity caller = getCallerIdentity(who, callerPackage);
final boolean isCallerDelegate = isCallerDelegate(caller, DELEGATION_CERT_INSTALL);
- final boolean isCredentialManagementApp = isCredentialManagementApp(caller, alias);
+ final boolean isCredentialManagementApp = isCredentialManagementApp(caller);
Preconditions.checkCallAuthorization((caller.hasAdminComponent()
&& (isProfileOwner(caller) || isDeviceOwner(caller)))
|| (caller.hasPackage() && (isCallerDelegate || isCredentialManagementApp)));
+ if (isCredentialManagementApp) {
+ Preconditions.checkCallAuthorization(
+ isAliasInCredentialManagementAppPolicy(caller, alias),
+ CREDENTIAL_MANAGEMENT_APP_INVALID_ALIAS_MSG);
+ }
final long id = mInjector.binderClearCallingIdentity();
try (final KeyChainConnection keyChainConnection =
@@ -6367,55 +6398,36 @@
* privileged APIs.
* <p>
* This is done by checking that the calling package is authorized to perform the app operation
- * {@link android.app.AppOpsManager#OP_MANAGE_CREDENTIALS}. The alias provided must be contained
- * in the aliases specified in the credential management app's authentication policy. The
- * key pair to install must not be user selectable.
+ * {@link android.app.AppOpsManager#OP_MANAGE_CREDENTIALS}.
*
* @param caller the calling identity
* @return {@code true} if the calling process is the credential management app.
*/
- private boolean isCredentialManagementApp(CallerIdentity caller, String alias,
- boolean isUserSelectable) {
- // Should not be user selectable
- if (isUserSelectable) {
- Slogf.e(LOG_TAG, "The credential management app is not allowed to install a "
- + "user selectable key pair");
- return false;
- }
- return isCredentialManagementApp(caller, alias);
+ private boolean isCredentialManagementApp(CallerIdentity caller) {
+ return mInjector.binderWithCleanCallingIdentity(() -> {
+ AppOpsManager appOpsManager = mInjector.getAppOpsManager();
+ if (appOpsManager == null) return false;
+ return appOpsManager.noteOpNoThrow(AppOpsManager.OP_MANAGE_CREDENTIALS, caller.getUid(),
+ caller.getPackageName(), null, null) == AppOpsManager.MODE_ALLOWED;
+ });
}
/**
- * Check whether a caller application is the credential mangement app, which can access
- * privileged APIs.
- * <p>
- * This is done by checking that the calling package is authorized to perform the app operation
- * {@link android.app.AppOpsManager#OP_MANAGE_CREDENTIALS}. The alias provided must be contained
+ * If the caller is the credential management app, the alias provided must be contained
* in the aliases specified in the credential management app's authentication policy.
- *
- * @param caller the calling identity
- * @return {@code true} if the calling process is the credential management app.
*/
- private boolean isCredentialManagementApp(CallerIdentity caller, String alias) {
+ private boolean isAliasInCredentialManagementAppPolicy(CallerIdentity caller, String alias) {
return mInjector.binderWithCleanCallingIdentity(() -> {
- // Should include alias in authentication policy
try (KeyChainConnection connection = KeyChain.bindAsUser(mContext,
caller.getUserHandle())) {
// The policy will be null if there is no credential management app
AppUriAuthenticationPolicy policy =
connection.getService().getCredentialManagementAppPolicy();
- if (policy == null || policy.getAppAndUriMappings().isEmpty()
- || !containsAlias(policy, alias)) {
- return false;
- }
+ return policy != null && !policy.getAppAndUriMappings().isEmpty()
+ && containsAlias(policy, alias);
} catch (RemoteException | InterruptedException e) {
return false;
}
-
- AppOpsManager appOpsManager = mInjector.getAppOpsManager();
- if (appOpsManager == null) return false;
- return appOpsManager.noteOpNoThrow(AppOpsManager.OP_MANAGE_CREDENTIALS, caller.getUid(),
- caller.getPackageName(), null, null) == AppOpsManager.MODE_ALLOWED;
});
}
diff --git a/services/incremental/Android.bp b/services/incremental/Android.bp
index 5140b9f..0bd737b 100644
--- a/services/incremental/Android.bp
+++ b/services/incremental/Android.bp
@@ -77,6 +77,7 @@
"libcutils",
"libincfs",
"liblog",
+ "libpermission",
"libz",
],
}
diff --git a/services/incremental/BinderIncrementalService.cpp b/services/incremental/BinderIncrementalService.cpp
index f843ea4..2f031bf 100644
--- a/services/incremental/BinderIncrementalService.cpp
+++ b/services/incremental/BinderIncrementalService.cpp
@@ -335,20 +335,6 @@
return ok();
}
-binder::Status BinderIncrementalService::registerStorageHealthListener(
- int32_t storageId,
- const ::android::os::incremental::StorageHealthCheckParams& healthCheckParams,
- const ::android::sp<IStorageHealthListener>& healthListener, bool* _aidl_return) {
- *_aidl_return =
- mImpl.registerStorageHealthListener(storageId, healthCheckParams, healthListener);
- return ok();
-}
-
-binder::Status BinderIncrementalService::unregisterStorageHealthListener(int32_t storageId) {
- mImpl.unregisterStorageHealthListener(storageId);
- return ok();
-}
-
binder::Status BinderIncrementalService::getMetrics(int32_t storageId,
android::os::PersistableBundle* _aidl_return) {
mImpl.getMetrics(storageId, _aidl_return);
diff --git a/services/incremental/BinderIncrementalService.h b/services/incremental/BinderIncrementalService.h
index 5c8741b..39f1bcb 100644
--- a/services/incremental/BinderIncrementalService.h
+++ b/services/incremental/BinderIncrementalService.h
@@ -95,11 +95,6 @@
progressListener,
bool* _aidl_return) final;
binder::Status unregisterLoadingProgressListener(int32_t storageId, bool* _aidl_return) final;
- binder::Status registerStorageHealthListener(
- int32_t storageId,
- const ::android::os::incremental::StorageHealthCheckParams& healthCheckParams,
- const ::android::sp<IStorageHealthListener>& healthListener, bool* _aidl_return) final;
- binder::Status unregisterStorageHealthListener(int32_t storageId) final;
binder::Status getMetrics(int32_t storageId,
android::os::PersistableBundle* _aidl_return) final;
diff --git a/services/incremental/IncrementalService.cpp b/services/incremental/IncrementalService.cpp
index 11a700c..4ce336d 100644
--- a/services/incremental/IncrementalService.cpp
+++ b/services/incremental/IncrementalService.cpp
@@ -2189,29 +2189,6 @@
return removeTimedJobs(*mProgressUpdateJobQueue, storage);
}
-bool IncrementalService::registerStorageHealthListener(
- StorageId storage, const StorageHealthCheckParams& healthCheckParams,
- StorageHealthListener healthListener) {
- DataLoaderStubPtr dataLoaderStub;
- {
- const auto& ifs = getIfs(storage);
- if (!ifs) {
- return false;
- }
- std::unique_lock l(ifs->lock);
- dataLoaderStub = ifs->dataLoaderStub;
- if (!dataLoaderStub) {
- return false;
- }
- }
- dataLoaderStub->setHealthListener(healthCheckParams, std::move(healthListener));
- return true;
-}
-
-void IncrementalService::unregisterStorageHealthListener(StorageId storage) {
- registerStorageHealthListener(storage, {}, {});
-}
-
bool IncrementalService::perfLoggingEnabled() {
static const bool enabled = base::GetBoolProperty("incremental.perflogging", false);
return enabled;
@@ -2779,25 +2756,6 @@
mStatusCondition.notify_all();
}
-binder::Status IncrementalService::DataLoaderStub::reportStreamHealth(MountId mountId,
- int newStatus) {
- if (!isValid()) {
- return binder::Status::
- fromServiceSpecificError(-EINVAL,
- "reportStreamHealth came to invalid DataLoaderStub");
- }
- if (id() != mountId) {
- LOG(ERROR) << "reportStreamHealth: mount ID mismatch: expected " << id()
- << ", but got: " << mountId;
- return binder::Status::fromServiceSpecificError(-EPERM, "Mount ID mismatch.");
- }
- {
- std::lock_guard lock(mMutex);
- mStreamStatus = newStatus;
- }
- return binder::Status::ok();
-}
-
bool IncrementalService::DataLoaderStub::isHealthParamsValid() const {
return mHealthCheckParams.blockedTimeoutMs > 0 &&
mHealthCheckParams.blockedTimeoutMs < mHealthCheckParams.unhealthyTimeoutMs;
@@ -2811,33 +2769,6 @@
}
}
-static int adjustHealthStatus(int healthStatus, int streamStatus) {
- if (healthStatus == IStorageHealthListener::HEALTH_STATUS_OK) {
- // everything is good; no need to change status
- return healthStatus;
- }
- int newHeathStatus = healthStatus;
- switch (streamStatus) {
- case IDataLoaderStatusListener::STREAM_STORAGE_ERROR:
- // storage is limited and storage not healthy
- newHeathStatus = IStorageHealthListener::HEALTH_STATUS_UNHEALTHY_STORAGE;
- break;
- case IDataLoaderStatusListener::STREAM_INTEGRITY_ERROR:
- // fall through
- case IDataLoaderStatusListener::STREAM_SOURCE_ERROR:
- // fall through
- case IDataLoaderStatusListener::STREAM_TRANSPORT_ERROR:
- if (healthStatus == IStorageHealthListener::HEALTH_STATUS_UNHEALTHY) {
- newHeathStatus = IStorageHealthListener::HEALTH_STATUS_UNHEALTHY_TRANSPORT;
- }
- // pending/blocked status due to transportation issues is not regarded as unhealthy
- break;
- default:
- break;
- }
- return newHeathStatus;
-}
-
void IncrementalService::DataLoaderStub::updateHealthStatus(bool baseline) {
LOG(DEBUG) << id() << ": updateHealthStatus" << (baseline ? " (baseline)" : "");
@@ -2915,8 +2846,6 @@
checkBackAfter = unhealthyMonitoring;
healthStatusToReport = IStorageHealthListener::HEALTH_STATUS_UNHEALTHY;
}
- // Adjust health status based on stream status
- healthStatusToReport = adjustHealthStatus(healthStatusToReport, mStreamStatus);
LOG(DEBUG) << id() << ": updateHealthStatus in " << double(checkBackAfter.count()) / 1000.0
<< "secs";
mService.addTimedJob(*mService.mTimedQueue, id(), checkBackAfter,
diff --git a/services/incremental/IncrementalService.h b/services/incremental/IncrementalService.h
index e3b1e6f..95a17d1 100644
--- a/services/incremental/IncrementalService.h
+++ b/services/incremental/IncrementalService.h
@@ -189,10 +189,7 @@
bool registerLoadingProgressListener(StorageId storage,
StorageLoadingProgressListener progressListener);
bool unregisterLoadingProgressListener(StorageId storage);
- bool registerStorageHealthListener(StorageId storage,
- const StorageHealthCheckParams& healthCheckParams,
- StorageHealthListener healthListener);
- void unregisterStorageHealthListener(StorageId storage);
+
RawMetadata getMetadata(StorageId storage, std::string_view path) const;
RawMetadata getMetadata(StorageId storage, FileId node) const;
@@ -256,7 +253,6 @@
private:
binder::Status onStatusChanged(MountId mount, int newStatus) final;
- binder::Status reportStreamHealth(MountId mount, int newStatus) final;
void setCurrentStatus(int newStatus);
@@ -319,7 +315,6 @@
BootClockTsUs kernelTsUs;
} mHealthBase = {TimePoint::max(), kMaxBootClockTsUs};
StorageHealthCheckParams mHealthCheckParams;
- int mStreamStatus = content::pm::IDataLoaderStatusListener::STREAM_HEALTHY;
std::vector<incfs::ReadInfoWithUid> mLastPendingReads;
};
using DataLoaderStubPtr = sp<DataLoaderStub>;
diff --git a/services/incremental/TEST_MAPPING b/services/incremental/TEST_MAPPING
index d935256..6aa8a93 100644
--- a/services/incremental/TEST_MAPPING
+++ b/services/incremental/TEST_MAPPING
@@ -24,7 +24,9 @@
},
{
"name": "CtsIncrementalInstallHostTestCases"
- },
+ }
+ ],
+ "presubmit-large": [
{
"name": "CtsInstalledLoadingProgressHostTests"
}
diff --git a/services/incremental/test/IncrementalServiceTest.cpp b/services/incremental/test/IncrementalServiceTest.cpp
index 14bcd4e..6a3d953 100644
--- a/services/incremental/test/IncrementalServiceTest.cpp
+++ b/services/incremental/test/IncrementalServiceTest.cpp
@@ -184,18 +184,6 @@
setAndReportStatus(id, IDataLoaderStatusListener::DATA_LOADER_IMAGE_READY);
return binder::Status::ok();
}
- binder::Status storageError(int32_t id) {
- if (mListener) {
- mListener->reportStreamHealth(id, IDataLoaderStatusListener::STREAM_STORAGE_ERROR);
- }
- return binder::Status::ok();
- }
- binder::Status transportError(int32_t id) {
- if (mListener) {
- mListener->reportStreamHealth(id, IDataLoaderStatusListener::STREAM_INTEGRITY_ERROR);
- }
- return binder::Status::ok();
- }
int32_t setStorageParams(bool enableReadLogs) {
int32_t result = -1;
EXPECT_NE(mServiceConnector.get(), nullptr);
@@ -1904,87 +1892,6 @@
ASSERT_EQ(mDataLoader->status(), IDataLoaderStatusListener::DATA_LOADER_DESTROYED);
}
-TEST_F(IncrementalServiceTest, testRegisterStorageHealthListenerSuccess) {
- mIncFs->openMountSuccess();
- sp<NiceMock<MockStorageHealthListener>> listener{new NiceMock<MockStorageHealthListener>};
- sp<NiceMock<MockStorageHealthListener>> newListener{new NiceMock<MockStorageHealthListener>};
- NiceMock<MockStorageHealthListener>* newListenerMock = newListener.get();
-
- TemporaryDir tempDir;
- int storageId =
- mIncrementalService->createStorage(tempDir.path, mDataLoaderParcel,
- IncrementalService::CreateOptions::CreateNew);
- ASSERT_GE(storageId, 0);
- mIncrementalService->startLoading(storageId, std::move(mDataLoaderParcel), {}, {}, listener,
- {});
-
- StorageHealthCheckParams newParams;
- newParams.blockedTimeoutMs = 10000;
- newParams.unhealthyTimeoutMs = 20000;
- newParams.unhealthyMonitoringMs = 30000;
- ASSERT_TRUE(mIncrementalService->registerStorageHealthListener(storageId, std::move(newParams),
- newListener));
-
- using MS = std::chrono::milliseconds;
- using MCS = std::chrono::microseconds;
-
- const auto blockedTimeout = MS(newParams.blockedTimeoutMs);
- const auto unhealthyTimeout = MS(newParams.unhealthyTimeoutMs);
-
- const uint64_t kFirstTimestampUs = 1000000000ll;
- const uint64_t kBlockedTimestampUs =
- kFirstTimestampUs - std::chrono::duration_cast<MCS>(blockedTimeout).count();
- const uint64_t kUnhealthyTimestampUs =
- kFirstTimestampUs - std::chrono::duration_cast<MCS>(unhealthyTimeout).count();
-
- // test that old listener was not called
- EXPECT_CALL(*listener.get(),
- onHealthStatus(_, IStorageHealthListener::HEALTH_STATUS_READS_PENDING))
- .Times(0);
- EXPECT_CALL(*newListenerMock,
- onHealthStatus(_, IStorageHealthListener::HEALTH_STATUS_READS_PENDING))
- .Times(1);
- EXPECT_CALL(*newListenerMock, onHealthStatus(_, IStorageHealthListener::HEALTH_STATUS_BLOCKED))
- .Times(1);
- EXPECT_CALL(*newListenerMock,
- onHealthStatus(_, IStorageHealthListener::HEALTH_STATUS_UNHEALTHY_STORAGE))
- .Times(1);
- EXPECT_CALL(*newListenerMock,
- onHealthStatus(_, IStorageHealthListener::HEALTH_STATUS_UNHEALTHY_TRANSPORT))
- .Times(1);
- mIncFs->waitForPendingReadsSuccess(kFirstTimestampUs);
- mLooper->mCallback(-1, -1, mLooper->mCallbackData);
-
- ASSERT_EQ(IStorageHealthListener::HEALTH_STATUS_READS_PENDING, newListener->mStatus);
- ASSERT_EQ(storageId, newListener->mStorageId);
-
- auto timedCallback = mTimedQueue->mWhat;
- mTimedQueue->clearJob(storageId);
-
- // test when health status is blocked with transport error
- mDataLoader->transportError(storageId);
- mIncFs->waitForPendingReadsSuccess(kBlockedTimestampUs);
- timedCallback();
- ASSERT_EQ(IStorageHealthListener::HEALTH_STATUS_BLOCKED, newListener->mStatus);
- timedCallback = mTimedQueue->mWhat;
- mTimedQueue->clearJob(storageId);
-
- // test when health status is blocked with storage error
- mDataLoader->storageError(storageId);
- mIncFs->waitForPendingReadsSuccess(kBlockedTimestampUs);
- timedCallback();
- ASSERT_EQ(IStorageHealthListener::HEALTH_STATUS_UNHEALTHY_STORAGE, newListener->mStatus);
- timedCallback = mTimedQueue->mWhat;
- mTimedQueue->clearJob(storageId);
-
- // test when health status is unhealthy with transport error
- mDataLoader->transportError(storageId);
- mIncFs->waitForPendingReadsSuccess(kUnhealthyTimestampUs);
- timedCallback();
- ASSERT_EQ(IStorageHealthListener::HEALTH_STATUS_UNHEALTHY_TRANSPORT, newListener->mStatus);
- mTimedQueue->clearJob(storageId);
-}
-
static std::vector<PerUidReadTimeouts> createPerUidTimeouts(
std::initializer_list<std::tuple<int, int, int, int>> tuples) {
std::vector<PerUidReadTimeouts> result;
diff --git a/services/java/com/android/server/SystemServer.java b/services/java/com/android/server/SystemServer.java
index 4c4c582..6dedca1 100644
--- a/services/java/com/android/server/SystemServer.java
+++ b/services/java/com/android/server/SystemServer.java
@@ -2731,13 +2731,6 @@
t.traceEnd();
}
- t.traceBegin("StartSystemUI");
- try {
- startSystemUi(context, windowManagerF);
- } catch (Throwable e) {
- reportWtf("starting System UI", e);
- }
- t.traceEnd();
// Enable airplane mode in safe mode. setAirplaneMode() cannot be called
// earlier as it sends broadcasts to other services.
// TODO: This may actually be too late if radio firmware already started leaking
@@ -2939,6 +2932,14 @@
}
}, t);
+ t.traceBegin("StartSystemUI");
+ try {
+ startSystemUi(context, windowManagerF);
+ } catch (Throwable e) {
+ reportWtf("starting System UI", e);
+ }
+ t.traceEnd();
+
t.traceEnd(); // startOtherServices
}
diff --git a/services/smartspace/java/com/android/server/smartspace/SmartspaceManagerService.java b/services/smartspace/java/com/android/server/smartspace/SmartspaceManagerService.java
index b07fe19..39ed4dd 100644
--- a/services/smartspace/java/com/android/server/smartspace/SmartspaceManagerService.java
+++ b/services/smartspace/java/com/android/server/smartspace/SmartspaceManagerService.java
@@ -156,7 +156,7 @@
@NonNull final Consumer<SmartspacePerUserService> c) {
ActivityManagerInternal am = LocalServices.getService(ActivityManagerInternal.class);
final int userId = am.handleIncomingUser(Binder.getCallingPid(), Binder.getCallingUid(),
- sessionId.getUserId(), false, ALLOW_NON_FULL, null, null);
+ sessionId.getUserHandle().getIdentifier(), false, ALLOW_NON_FULL, null, null);
if (DEBUG) {
Slog.d(TAG, "runForUserLocked:" + func + " from pid=" + Binder.getCallingPid()
diff --git a/services/tests/mockingservicestests/src/com/android/server/pm/PackageManagerServiceHibernationTests.kt b/services/tests/mockingservicestests/src/com/android/server/pm/PackageManagerServiceHibernationTests.kt
index 411c31c..72bc77e 100644
--- a/services/tests/mockingservicestests/src/com/android/server/pm/PackageManagerServiceHibernationTests.kt
+++ b/services/tests/mockingservicestests/src/com/android/server/pm/PackageManagerServiceHibernationTests.kt
@@ -24,6 +24,7 @@
import android.testing.TestableLooper
import android.testing.TestableLooper.RunWithLooper
import com.android.server.apphibernation.AppHibernationManagerInternal
+import com.android.server.apphibernation.AppHibernationService
import com.android.server.extendedtestutils.wheneverStatic
import com.android.server.testutils.whenever
import org.junit.Assert.assertFalse
@@ -61,6 +62,7 @@
MockitoAnnotations.initMocks(this)
wheneverStatic { DeviceConfig.getBoolean(
NAMESPACE_APP_HIBERNATION, KEY_APP_HIBERNATION_ENABLED, false) }.thenReturn(true)
+ AppHibernationService.sIsServiceEnabled = true
rule.system().stageNominalSystemState()
whenever(rule.mocks().injector.getLocalService(AppHibernationManagerInternal::class.java))
.thenReturn(appHibernationManager)
diff --git a/services/tests/servicestests/src/com/android/server/am/FgsTempAllowListTest.java b/services/tests/servicestests/src/com/android/server/am/FgsTempAllowListTest.java
new file mode 100644
index 0000000..f85f0f8
--- /dev/null
+++ b/services/tests/servicestests/src/com/android/server/am/FgsTempAllowListTest.java
@@ -0,0 +1,77 @@
+/*
+ * Copyright (C) 2021 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 com.android.server.am;
+
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
+
+import android.os.SystemClock;
+import android.platform.test.annotations.Presubmit;
+import android.util.Pair;
+
+import org.junit.Test;
+
+/**
+ * Build/Install/Run:
+ * atest FrameworksServicesTests:TempAllowListTest
+ */
+@Presubmit
+public class FgsTempAllowListTest {
+
+ /**
+ * This case tests get(), isAllowed(), remove() interfaces.
+ */
+ @Test
+ public void testIsAllowed() {
+ FgsTempAllowList<Integer, String> allowList = new FgsTempAllowList();
+ allowList.add(10001, 2000, "description1");
+ allowList.add(10002, 2000, "description2");
+
+ assertTrue(allowList.isAllowed(10001));
+ Pair<Long, String> entry1 = allowList.get(10001);
+ assertNotNull(entry1);
+ assertEquals(entry1.second, "description1");
+
+ assertTrue(allowList.isAllowed(10002));
+ Pair<Long, String> entry2 = allowList.get(10002);
+ assertNotNull(entry2);
+ assertEquals(entry2.second, "description2");
+
+ allowList.remove(10001);
+ assertFalse(allowList.isAllowed(10001));
+ assertNull(allowList.get(10001));
+ }
+
+ /**
+ * This case tests temp allowlist entry can expire.
+ */
+ @Test
+ public void testExpired() {
+ FgsTempAllowList<Integer, String> allowList = new FgsTempAllowList();
+ // temp allow for 2000ms.
+ allowList.add(10001, 2000, "uid1-2000ms");
+ // sleep for 3000ms.
+ SystemClock.sleep(3000);
+ // entry expired.
+ assertFalse(allowList.isAllowed(10001));
+ assertNull(allowList.get(10001));
+ }
+}
diff --git a/services/tests/servicestests/src/com/android/server/locksettings/RebootEscrowManagerTests.java b/services/tests/servicestests/src/com/android/server/locksettings/RebootEscrowManagerTests.java
index 49a54ec..aecc794 100644
--- a/services/tests/servicestests/src/com/android/server/locksettings/RebootEscrowManagerTests.java
+++ b/services/tests/servicestests/src/com/android/server/locksettings/RebootEscrowManagerTests.java
@@ -112,14 +112,13 @@
private MockableRebootEscrowInjected mInjected;
private RebootEscrowManager mService;
private SecretKey mAesKey;
+ private MockInjector mMockInjector;
public interface MockableRebootEscrowInjected {
int getBootCount();
long getCurrentTimeMillis();
- boolean forceServerBased();
-
void reportMetric(boolean success, int errorCode, int serviceType, int attemptCount,
int escrowDurationInSeconds, int vbmetaDigestStatus, int durationSinceBootComplete);
}
@@ -127,11 +126,12 @@
static class MockInjector extends RebootEscrowManager.Injector {
private final IRebootEscrow mRebootEscrow;
private final ResumeOnRebootServiceConnection mServiceConnection;
- private final RebootEscrowProviderInterface mRebootEscrowProvider;
+ private final RebootEscrowProviderInterface mDefaultRebootEscrowProvider;
private final UserManager mUserManager;
private final MockableRebootEscrowInjected mInjected;
private final RebootEscrowKeyStoreManager mKeyStoreManager;
- private final boolean mServerBased;
+ private boolean mServerBased;
+ private RebootEscrowProviderInterface mRebootEscrowProviderInUse;
MockInjector(Context context, UserManager userManager,
IRebootEscrow rebootEscrow,
@@ -149,7 +149,7 @@
return mRebootEscrow;
}
};
- mRebootEscrowProvider = new RebootEscrowProviderHalImpl(halInjector);
+ mDefaultRebootEscrowProvider = new RebootEscrowProviderHalImpl(halInjector);
mUserManager = userManager;
mKeyStoreManager = keyStoreManager;
mInjected = injected;
@@ -166,7 +166,8 @@
mServerBased = true;
RebootEscrowProviderServerBasedImpl.Injector injector =
new RebootEscrowProviderServerBasedImpl.Injector(serviceConnection);
- mRebootEscrowProvider = new RebootEscrowProviderServerBasedImpl(storage, injector);
+ mDefaultRebootEscrowProvider = new RebootEscrowProviderServerBasedImpl(
+ storage, injector);
mUserManager = userManager;
mKeyStoreManager = keyStoreManager;
mInjected = injected;
@@ -184,15 +185,23 @@
@Override
public boolean serverBasedResumeOnReboot() {
- if (mInjected.forceServerBased()) {
- return true;
- }
return mServerBased;
}
@Override
+ public RebootEscrowProviderInterface createRebootEscrowProviderIfNeeded() {
+ mRebootEscrowProviderInUse = mDefaultRebootEscrowProvider;
+ return mRebootEscrowProviderInUse;
+ }
+
+ @Override
public RebootEscrowProviderInterface getRebootEscrowProvider() {
- return mRebootEscrowProvider;
+ return mRebootEscrowProviderInUse;
+ }
+
+ @Override
+ public void clearRebootEscrowProvider() {
+ mRebootEscrowProviderInUse = null;
}
@Override
@@ -264,13 +273,15 @@
when(mCallbacks.isUserSecure(NONSECURE_SECONDARY_USER_ID)).thenReturn(false);
when(mCallbacks.isUserSecure(SECURE_SECONDARY_USER_ID)).thenReturn(true);
mInjected = mock(MockableRebootEscrowInjected.class);
- mService = new RebootEscrowManager(new MockInjector(mContext, mUserManager, mRebootEscrow,
- mKeyStoreManager, mStorage, mInjected), mCallbacks, mStorage);
+ mMockInjector = new MockInjector(mContext, mUserManager, mRebootEscrow,
+ mKeyStoreManager, mStorage, mInjected);
+ mService = new RebootEscrowManager(mMockInjector, mCallbacks, mStorage);
}
private void setServerBasedRebootEscrowProvider() throws Exception {
- mService = new RebootEscrowManager(new MockInjector(mContext, mUserManager,
- mServiceConnection, mKeyStoreManager, mStorage, mInjected), mCallbacks, mStorage);
+ mMockInjector = new MockInjector(mContext, mUserManager, mServiceConnection,
+ mKeyStoreManager, mStorage, mInjected);
+ mService = new RebootEscrowManager(mMockInjector, mCallbacks, mStorage);
}
@Test
@@ -317,6 +328,7 @@
doThrow(ServiceSpecificException.class).when(mRebootEscrow).storeKey(any());
mService.clearRebootEscrow();
verify(mRebootEscrow).storeKey(eq(new byte[32]));
+ assertNull(mMockInjector.getRebootEscrowProvider());
}
@Test
@@ -785,7 +797,7 @@
assertNull(
mStorage.getString(RebootEscrowManager.REBOOT_ESCROW_ARMED_KEY, null, USER_SYSTEM));
// Change the provider to server based, expect the reboot to fail
- when(mInjected.forceServerBased()).thenReturn(true);
+ mMockInjector.mServerBased = true;
assertEquals(ARM_REBOOT_ERROR_PROVIDER_MISMATCH, mService.armRebootEscrowIfNeeded());
assertNull(
mStorage.getString(RebootEscrowManager.REBOOT_ESCROW_ARMED_KEY, null, USER_SYSTEM));
diff --git a/services/tests/servicestests/src/com/android/server/pm/IncrementalStatesTest.java b/services/tests/servicestests/src/com/android/server/pm/IncrementalStatesTest.java
deleted file mode 100644
index 7b9a00d..0000000
--- a/services/tests/servicestests/src/com/android/server/pm/IncrementalStatesTest.java
+++ /dev/null
@@ -1,164 +0,0 @@
-/*
- * Copyright (C) 2020 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.server.pm;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
-
-import android.content.pm.PackageManager;
-import android.os.ConditionVariable;
-import android.os.incremental.IStorageHealthListener;
-import android.platform.test.annotations.Presubmit;
-
-import androidx.test.filters.MediumTest;
-import androidx.test.runner.AndroidJUnit4;
-
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-
-import java.util.concurrent.atomic.AtomicInteger;
-
-/**
- * Unit tests for {@link IncrementalStates}.
- * Run with: atest -c FrameworksServicesTests:com.android.server.pm.IncrementalStatesTest
- */
-@Presubmit
-@RunWith(AndroidJUnit4.class)
-@MediumTest
-public class IncrementalStatesTest {
- private IncrementalStates mIncrementalStates;
- private ConditionVariable mUnstartableCalled = new ConditionVariable();
- private ConditionVariable mFullyLoadedCalled = new ConditionVariable();
- private AtomicInteger mUnstartableReason = new AtomicInteger(0);
- private static final int WAIT_TIMEOUT_MILLIS = 1000; /* 1 second */
- private IncrementalStates.Callback mCallback = new IncrementalStates.Callback() {
- @Override
- public void onPackageUnstartable(int reason) {
- mUnstartableCalled.open();
- mUnstartableReason.set(reason);
- }
-
- @Override
- public void onPackageStartable() {
- }
-
- @Override
- public void onPackageFullyLoaded() {
- mFullyLoadedCalled.open();
- }
- };
-
- /**
- * Setup the tests as if the package has just been committed.
- * By default the package is now startable and is loading.
- */
- @Before
- public void setUp() {
- mIncrementalStates = new IncrementalStates();
- assertFalse(mIncrementalStates.getIncrementalStatesInfo().isStartable());
- mIncrementalStates.setCallback(mCallback);
- mIncrementalStates.onCommit(true);
- // Test that package is now startable and loading
- assertTrue(mIncrementalStates.getIncrementalStatesInfo().isStartable());
- assertTrue(mIncrementalStates.getIncrementalStatesInfo().isLoading());
- mUnstartableCalled.close();
- mFullyLoadedCalled.close();
- }
-
- /**
- * Test that the package is still startable when Incremental Storage is unhealthy.
- */
- @Test
- public void testStartableTransition_IncrementalStorageUnhealthy() {
- mIncrementalStates.onStorageHealthStatusChanged(
- IStorageHealthListener.HEALTH_STATUS_UNHEALTHY);
- // Test that package is still startable
- assertFalse(mUnstartableCalled.block(WAIT_TIMEOUT_MILLIS));
- assertTrue(mIncrementalStates.getIncrementalStatesInfo().isStartable());
- assertEquals(PackageManager.UNSTARTABLE_REASON_UNKNOWN, mUnstartableReason.get());
- }
-
- /**
- * Test that the package is still startable when Incremental Storage has pending reads.
- */
- @Test
- public void testStartableTransition_IncrementalStorageReadsPending()
- throws InterruptedException {
- mIncrementalStates.onStorageHealthStatusChanged(
- IStorageHealthListener.HEALTH_STATUS_READS_PENDING);
- // Test that package is still startable
- assertFalse(mUnstartableCalled.block(WAIT_TIMEOUT_MILLIS));
- assertTrue(mIncrementalStates.getIncrementalStatesInfo().isStartable());
- }
-
- /**
- * Test that the package is still startable when health status indicate storage issues.
- */
- @Test
- public void testStartableTransition_IncrementalStorageBlocked() {
- mIncrementalStates.onStorageHealthStatusChanged(
- IStorageHealthListener.HEALTH_STATUS_UNHEALTHY_STORAGE);
- // Test that package is still startable
- assertFalse(mUnstartableCalled.block(WAIT_TIMEOUT_MILLIS));
- assertTrue(mIncrementalStates.getIncrementalStatesInfo().isStartable());
- assertEquals(PackageManager.UNSTARTABLE_REASON_UNKNOWN,
- mUnstartableReason.get());
- }
-
- /**
- * Test that the package is still startable when health status indicates transport issues.
- */
- @Test
- public void testStartableTransition_DataLoaderIntegrityError() {
- mIncrementalStates.onStorageHealthStatusChanged(
- IStorageHealthListener.HEALTH_STATUS_UNHEALTHY_TRANSPORT);
- // Test that package is still startable
- assertFalse(mUnstartableCalled.block(WAIT_TIMEOUT_MILLIS));
- assertTrue(mIncrementalStates.getIncrementalStatesInfo().isStartable());
- assertEquals(PackageManager.UNSTARTABLE_REASON_UNKNOWN,
- mUnstartableReason.get());
- }
-
- /**
- * Test that when loading progress is 1, the package becomes fully loaded, and the change of
- * Incremental Storage health status does not affect the startable state.
- */
- @Test
- public void testStartableTransition_HealthStatusChangeWhenFullyLoaded()
- throws InterruptedException {
- mIncrementalStates.setProgress(1.0f);
- // Test that package is now fully loaded
- assertTrue(mFullyLoadedCalled.block(WAIT_TIMEOUT_MILLIS));
- assertFalse(mIncrementalStates.getIncrementalStatesInfo().isLoading());
- mIncrementalStates.onStorageHealthStatusChanged(
- IStorageHealthListener.HEALTH_STATUS_UNHEALTHY);
- // Test that package is still startable
- assertFalse(mUnstartableCalled.block(WAIT_TIMEOUT_MILLIS));
- assertTrue(mIncrementalStates.getIncrementalStatesInfo().isStartable());
- }
-
- /**
- * Test startability transitions if app crashes or anrs
- */
- @Test
- public void testStartableTransition_AppCrashOrAnr() {
- mIncrementalStates.onCrashOrAnr();
- assertTrue(mIncrementalStates.getIncrementalStatesInfo().isStartable());
- }
-}
diff --git a/services/tests/servicestests/src/com/android/server/pm/permission/LegacyPermissionManagerServiceTest.java b/services/tests/servicestests/src/com/android/server/pm/permission/LegacyPermissionManagerServiceTest.java
index 4f6441f..acd3fca 100644
--- a/services/tests/servicestests/src/com/android/server/pm/permission/LegacyPermissionManagerServiceTest.java
+++ b/services/tests/servicestests/src/com/android/server/pm/permission/LegacyPermissionManagerServiceTest.java
@@ -27,7 +27,9 @@
import android.app.AppOpsManager;
import android.app.admin.DevicePolicyManager;
import android.content.Context;
+import android.content.pm.ApplicationInfo;
import android.content.pm.PackageManager;
+import android.os.Build;
import android.os.Process;
import androidx.test.InstrumentationRegistry;
@@ -46,8 +48,12 @@
private static final int APP_UID = Process.FIRST_APPLICATION_UID;
private static final int APP_PID = 5678;
+ private static final String CHECK_DEVICE_IDENTIFIER_MESSAGE = "testCheckDeviceIdentifierAccess";
+ private static final String CHECK_PHONE_NUMBER_MESSAGE = "testCheckPhoneNumberAccess";
+
private LegacyPermissionManagerService mLegacyPermissionManagerService;
private Context mContext;
+ private String mPackageName;
@Mock
private LegacyPermissionManagerService.Injector mInjector;
@@ -63,6 +69,7 @@
MockitoAnnotations.initMocks(this);
mContext = InstrumentationRegistry.getContext();
+ mPackageName = mContext.getPackageName();
mLegacyPermissionManagerService = new LegacyPermissionManagerService(mContext, mInjector);
}
@@ -74,7 +81,7 @@
assertThrows(SecurityException.class,
() -> mLegacyPermissionManagerService.checkDeviceIdentifierAccess(
- mContext.getPackageName(), "testCheckDeviceIdentifierAccess", null,
+ mPackageName, CHECK_DEVICE_IDENTIFIER_MESSAGE, null,
APP_PID, SYSTEM_UID));
}
@@ -86,7 +93,7 @@
assertThrows(SecurityException.class,
() -> mLegacyPermissionManagerService.checkDeviceIdentifierAccess(
- mContext.getPackageName(), "testCheckDeviceIdentifierAccess", null,
+ mPackageName, CHECK_DEVICE_IDENTIFIER_MESSAGE, null,
SYSTEM_PID, APP_UID));
}
@@ -97,7 +104,7 @@
setupCheckDeviceIdentifierAccessTest(APP_PID, APP_UID);
int result = mLegacyPermissionManagerService.checkDeviceIdentifierAccess(
- mContext.getPackageName(), "testCheckDeviceIdentifierAccess", null, APP_PID,
+ mPackageName, CHECK_DEVICE_IDENTIFIER_MESSAGE, null, APP_PID,
APP_UID);
assertEquals(PackageManager.PERMISSION_DENIED, result);
@@ -108,7 +115,7 @@
// The system UID should always have access to device identifiers.
setupCheckDeviceIdentifierAccessTest(SYSTEM_PID, SYSTEM_UID);
int result = mLegacyPermissionManagerService.checkDeviceIdentifierAccess(
- mContext.getPackageName(), "testCheckDeviceIdentifierAccess", null, SYSTEM_PID,
+ mPackageName, CHECK_DEVICE_IDENTIFIER_MESSAGE, null, SYSTEM_PID,
SYSTEM_UID);
assertEquals(PackageManager.PERMISSION_GRANTED, result);
@@ -123,7 +130,7 @@
APP_PID, APP_UID)).thenReturn(PackageManager.PERMISSION_GRANTED);
int result = mLegacyPermissionManagerService.checkDeviceIdentifierAccess(
- mContext.getPackageName(), "testCheckDeviceIdentifierAccess", null, APP_PID,
+ mPackageName, CHECK_DEVICE_IDENTIFIER_MESSAGE, null, APP_PID,
APP_UID);
assertEquals(PackageManager.PERMISSION_GRANTED, result);
@@ -135,11 +142,11 @@
// device identifiers.
setupCheckDeviceIdentifierAccessTest(SYSTEM_PID, SYSTEM_UID);
when(mAppOpsManager.noteOpNoThrow(eq(AppOpsManager.OPSTR_READ_DEVICE_IDENTIFIERS),
- eq(APP_UID), eq(mContext.getPackageName()), any(), any())).thenReturn(
+ eq(APP_UID), eq(mPackageName), any(), any())).thenReturn(
AppOpsManager.MODE_ALLOWED);
int result = mLegacyPermissionManagerService.checkDeviceIdentifierAccess(
- mContext.getPackageName(), "testCheckDeviceIdentifierAccess", null, APP_PID,
+ mPackageName, CHECK_DEVICE_IDENTIFIER_MESSAGE, null, APP_PID,
APP_UID);
assertEquals(PackageManager.PERMISSION_GRANTED, result);
@@ -150,32 +157,228 @@
// Apps that pass a DevicePolicyManager device / profile owner check should have access to
// device identifiers.
setupCheckDeviceIdentifierAccessTest(SYSTEM_PID, SYSTEM_UID);
- when(mDevicePolicyManager.hasDeviceIdentifierAccess(mContext.getPackageName(), APP_PID,
+ when(mDevicePolicyManager.hasDeviceIdentifierAccess(mPackageName, APP_PID,
APP_UID)).thenReturn(true);
int result = mLegacyPermissionManagerService.checkDeviceIdentifierAccess(
- mContext.getPackageName(), "testCheckDeviceIdentifierAccess", null, APP_PID,
+ mPackageName, CHECK_DEVICE_IDENTIFIER_MESSAGE, null, APP_PID,
APP_UID);
assertEquals(PackageManager.PERMISSION_GRANTED, result);
}
+ @Test
+ public void checkPhoneNumberAccess_callingAppUidMismatch_throwsException() throws Exception {
+ // An app can check its own phone number access, but an exception should be
+ // thrown if an app attempts to check the phone number access of another app's UID.
+ setupCheckPhoneNumberAccessTest(APP_PID, APP_UID);
+
+ assertThrows(SecurityException.class,
+ () -> mLegacyPermissionManagerService.checkPhoneNumberAccess(
+ mPackageName, CHECK_PHONE_NUMBER_MESSAGE, null, APP_PID,
+ SYSTEM_UID));
+ }
+
+ @Test
+ public void checkPhoneNumberAccess_callingAppPidMismatch_throwsException() throws Exception {
+ // An app can check its own phone number access, but an exception should be
+ // thrown if an app attempts to check the phone number access of another app's PID.
+ setupCheckPhoneNumberAccessTest(APP_PID, APP_UID);
+
+ assertThrows(SecurityException.class,
+ () -> mLegacyPermissionManagerService.checkPhoneNumberAccess(
+ mPackageName, CHECK_PHONE_NUMBER_MESSAGE, null, SYSTEM_PID,
+ APP_UID));
+ }
+
+ @Test
+ public void checkPhoneNumberAccess_callingAppIdWithoutAccess_returnsDenied() throws Exception {
+ // Since an app can check its own phone number access, this test verifies all checks
+ // are performed and the expected result is returned when an app does not have access.
+ setupCheckPhoneNumberAccessTest(APP_PID, APP_UID);
+
+ int result = mLegacyPermissionManagerService.checkPhoneNumberAccess(
+ mPackageName, CHECK_PHONE_NUMBER_MESSAGE, null, APP_PID, APP_UID);
+
+ assertEquals(PackageManager.PERMISSION_DENIED, result);
+ }
+
+ @Test
+ public void checkPhoneNumberAccess_nullPackageName_returnsDenied() throws Exception {
+ // While a null value can be provided for the package name only the privileged
+ // permission test would be able to proceed. Verify that a null value results in a
+ // denied response instead of a NullPointerException.
+ setupCheckPhoneNumberAccessTest(APP_PID, APP_UID);
+
+ int result = mLegacyPermissionManagerService.checkPhoneNumberAccess(mPackageName,
+ CHECK_PHONE_NUMBER_MESSAGE, null, APP_PID, APP_UID);
+
+ assertEquals(PackageManager.PERMISSION_DENIED, result);
+ }
+
+ @Test
+ public void checkPhoneNumberAccess_hasPrivilegedPermission_returnsGranted() throws Exception {
+ // An app with the READ_PRIVILEGED_PHONE_STATE should have access to the phone number.
+ setupCheckPhoneNumberAccessTest(SYSTEM_PID, SYSTEM_UID);
+ when(mInjector.checkPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE,
+ APP_PID, APP_UID)).thenReturn(PackageManager.PERMISSION_GRANTED);
+
+ int result = mLegacyPermissionManagerService.checkPhoneNumberAccess(
+ null, CHECK_PHONE_NUMBER_MESSAGE, null, APP_PID, APP_UID);
+
+ assertEquals(PackageManager.PERMISSION_GRANTED, result);
+ }
+
+ @Test
+ public void checkPhoneNumberAccess_targetPreRWithReadPhoneState_returnsGranted()
+ throws Exception {
+ // Prior to R an app could access the phone number with the READ_PHONE_STATE permission, but
+ // both the permission and the appop must be granted. If the permission is granted but the
+ // appop is not then AppOpsManager#MODE_IGNORED should be returned to indicate that this
+ // should be a silent failure.
+ setupCheckPhoneNumberAccessTest(SYSTEM_PID, SYSTEM_UID);
+ setPackageTargetSdk(Build.VERSION_CODES.Q);
+
+ grantPermissionAndAppop(android.Manifest.permission.READ_PHONE_STATE, null);
+ int resultWithoutAppop = mLegacyPermissionManagerService.checkPhoneNumberAccess(
+ mPackageName, CHECK_PHONE_NUMBER_MESSAGE, null, APP_PID, APP_UID);
+ grantPermissionAndAppop(android.Manifest.permission.READ_PHONE_STATE,
+ AppOpsManager.OPSTR_READ_PHONE_STATE);
+ int resultWithAppop = mLegacyPermissionManagerService.checkPhoneNumberAccess(mPackageName,
+ CHECK_PHONE_NUMBER_MESSAGE, null, APP_PID, APP_UID);
+
+ assertEquals(AppOpsManager.MODE_IGNORED, resultWithoutAppop);
+ assertEquals(PackageManager.PERMISSION_GRANTED, resultWithAppop);
+ }
+
+ @Test
+ public void checkPhoneNumberAccess_targetRWithReadPhoneState_returnsDenied() throws Exception {
+ // Apps targeting R+ with just the READ_PHONE_STATE permission granted should not have
+ // access to the phone number; PERMISSION_DENIED should be returned both with and without
+ // the appop granted since this check should be skipped for target SDK R+.
+ setupCheckPhoneNumberAccessTest(SYSTEM_PID, SYSTEM_UID);
+
+ grantPermissionAndAppop(android.Manifest.permission.READ_PHONE_STATE, null);
+ int resultWithoutAppop = mLegacyPermissionManagerService.checkPhoneNumberAccess(
+ mPackageName, CHECK_PHONE_NUMBER_MESSAGE, null, APP_PID, APP_UID);
+ grantPermissionAndAppop(android.Manifest.permission.READ_PHONE_STATE,
+ AppOpsManager.OPSTR_READ_PHONE_STATE);
+ int resultWithAppop = mLegacyPermissionManagerService.checkPhoneNumberAccess(mPackageName,
+ CHECK_PHONE_NUMBER_MESSAGE, null, APP_PID, APP_UID);
+
+ assertEquals(PackageManager.PERMISSION_DENIED, resultWithoutAppop);
+ assertEquals(PackageManager.PERMISSION_DENIED, resultWithAppop);
+ }
+
+ @Test
+ public void checkPhoneNumberAccess_smsHandler_returnsGranted() throws Exception {
+ // The default SMS handler should have the WRITE_SMS appop granted and have access to the
+ // phone number.
+ setupCheckPhoneNumberAccessTest(APP_PID, APP_UID);
+ grantPermissionAndAppop(null, AppOpsManager.OPSTR_WRITE_SMS);
+
+ int result = mLegacyPermissionManagerService.checkPhoneNumberAccess(mPackageName,
+ CHECK_PHONE_NUMBER_MESSAGE, null, APP_PID, APP_UID);
+
+ assertEquals(PackageManager.PERMISSION_GRANTED, result);
+ }
+
+ @Test
+ public void checkPhoneNumberAccess_readPhoneNumbersGranted_returnsGranted()
+ throws Exception {
+ // Access to the phone number should be granted to an app with the READ_PHONE_NUMBERS
+ // permission and appop set.
+ setupCheckPhoneNumberAccessTest(APP_PID, APP_UID);
+
+ grantPermissionAndAppop(android.Manifest.permission.READ_PHONE_NUMBERS, null);
+ int resultWithoutAppop = mLegacyPermissionManagerService.checkPhoneNumberAccess(
+ mPackageName, CHECK_PHONE_NUMBER_MESSAGE, null, APP_PID, APP_UID);
+ grantPermissionAndAppop(android.Manifest.permission.READ_PHONE_NUMBERS,
+ AppOpsManager.OPSTR_READ_PHONE_NUMBERS);
+ int resultWithAppop = mLegacyPermissionManagerService.checkPhoneNumberAccess(mPackageName,
+ CHECK_PHONE_NUMBER_MESSAGE, null, APP_PID, APP_UID);
+
+ assertEquals(PackageManager.PERMISSION_DENIED, resultWithoutAppop);
+ assertEquals(PackageManager.PERMISSION_GRANTED, resultWithAppop);
+ }
+
+ @Test
+ public void checkPhoneNumberAccess_readSmsGranted_returnsGranted() throws Exception {
+ // Access to the phone number should be granted to an app with the READ_SMS permission and
+ // appop set.
+ setupCheckPhoneNumberAccessTest(APP_PID, APP_UID);
+
+ grantPermissionAndAppop(android.Manifest.permission.READ_SMS, null);
+ int resultWithoutAppop = mLegacyPermissionManagerService.checkPhoneNumberAccess(
+ mPackageName, CHECK_PHONE_NUMBER_MESSAGE, null, APP_PID, APP_UID);
+ grantPermissionAndAppop(android.Manifest.permission.READ_SMS, AppOpsManager.OPSTR_READ_SMS);
+ int resultWithAppop = mLegacyPermissionManagerService.checkPhoneNumberAccess(mPackageName,
+ CHECK_PHONE_NUMBER_MESSAGE, null, APP_PID, APP_UID);
+
+ assertEquals(PackageManager.PERMISSION_DENIED, resultWithoutAppop);
+ assertEquals(PackageManager.PERMISSION_GRANTED, resultWithAppop);
+ }
+
+ /**
+ * Configures device identifier access tests to fail; tests verifying access should individually
+ * set an access check to succeed to verify access when that condition is met.
+ */
private void setupCheckDeviceIdentifierAccessTest(int callingPid, int callingUid) {
+ setupAccessTest(callingPid, callingUid);
+
+ when(mDevicePolicyManager.hasDeviceIdentifierAccess(anyString(), anyInt(),
+ anyInt())).thenReturn(false);
+ when(mInjector.getSystemService(eq(Context.DEVICE_POLICY_SERVICE))).thenReturn(
+ mDevicePolicyManager);
+ }
+
+ /**
+ * Configures phone number access tests to fail; tests verifying access should individually set
+ * an access check to succeed to verify access when that condition is met.
+ */
+ private void setupCheckPhoneNumberAccessTest(int callingPid, int callingUid) throws Exception {
+ setupAccessTest(callingPid, callingUid);
+ setPackageTargetSdk(Build.VERSION_CODES.R);
+ }
+
+ /**
+ * Configures the common mocks for any access tests using the provided {@code callingPid}
+ * and {@code callingUid}.
+ */
+ private void setupAccessTest(int callingPid, int callingUid) {
when(mInjector.getCallingPid()).thenReturn(callingPid);
when(mInjector.getCallingUid()).thenReturn(callingUid);
- // Configure the checkDeviceIdentifierAccess tests to fail all access checks, then each test
- // can individually set the access check to pass for verification.
when(mInjector.checkPermission(anyString(), anyInt(), anyInt())).thenReturn(
PackageManager.PERMISSION_DENIED);
when(mAppOpsManager.noteOpNoThrow(anyString(), anyInt(), anyString(), any(),
any())).thenReturn(AppOpsManager.MODE_DEFAULT);
when(mInjector.getSystemService(eq(Context.APP_OPS_SERVICE))).thenReturn(mAppOpsManager);
+ }
- when(mDevicePolicyManager.hasDeviceIdentifierAccess(anyString(), anyInt(),
- anyInt())).thenReturn(false);
- when(mInjector.getSystemService(eq(Context.DEVICE_POLICY_SERVICE))).thenReturn(
- mDevicePolicyManager);
+ /**
+ * Sets the returned {@code targetSdkVersion} for the package under test.
+ */
+ private void setPackageTargetSdk(int targetSdkVersion) throws Exception {
+ ApplicationInfo appInfo = new ApplicationInfo();
+ appInfo.targetSdkVersion = targetSdkVersion;
+ when(mInjector.getApplicationInfo(eq(mPackageName), eq(APP_UID))).thenReturn(appInfo);
+ }
+
+ /**
+ * Configures the mocks to return {@code PackageManager.PERMISSION_GRANTED} for the specified
+ * {@code permission} and {@code AppOpsManager.MODE_ALLOWED} for the provided {@code appop}
+ * when queried for the package under test.
+ */
+ private void grantPermissionAndAppop(String permission, String appop) {
+ if (permission != null) {
+ when(mInjector.checkPermission(permission, APP_PID, APP_UID)).thenReturn(
+ PackageManager.PERMISSION_GRANTED);
+ }
+ if (appop != null) {
+ when(mAppOpsManager.noteOpNoThrow(eq(appop), eq(APP_UID), eq(mPackageName), any(),
+ any())).thenReturn(AppOpsManager.MODE_ALLOWED);
+ }
}
}
diff --git a/services/tests/servicestests/src/com/android/server/uwb/UwbServiceImplTest.java b/services/tests/servicestests/src/com/android/server/uwb/UwbServiceImplTest.java
index 2f5a5cc..11554c7 100644
--- a/services/tests/servicestests/src/com/android/server/uwb/UwbServiceImplTest.java
+++ b/services/tests/servicestests/src/com/android/server/uwb/UwbServiceImplTest.java
@@ -16,6 +16,8 @@
package com.android.server.uwb;
+import static android.Manifest.permission.UWB_PRIVILEGED;
+
import static com.google.common.truth.Truth.assertThat;
import static org.junit.Assert.fail;
@@ -24,11 +26,13 @@
import static org.mockito.ArgumentMatchers.argThat;
import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.clearInvocations;
+import static org.mockito.Mockito.doThrow;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.never;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
+import android.content.AttributionSource;
import android.content.Context;
import android.os.IBinder;
import android.os.PersistableBundle;
@@ -58,6 +62,11 @@
@SmallTest
@Presubmit
public class UwbServiceImplTest {
+ private static final int UID = 343453;
+ private static final String PACKAGE_NAME = "com.uwb.test";
+ private static final AttributionSource ATTRIBUTION_SOURCE =
+ new AttributionSource.Builder(UID).setPackageName(PACKAGE_NAME).build();
+
@Mock private IUwbAdapter mVendorService;
@Mock private IBinder mVendorServiceBinder;
@Mock private Context mContext;
@@ -72,6 +81,7 @@
public void setUp() throws Exception {
MockitoAnnotations.initMocks(this);
when(mUwbInjector.getVendorService()).thenReturn(mVendorService);
+ when(mUwbInjector.checkUwbRangingPermissionForDataDelivery(any(), any())).thenReturn(true);
when(mVendorService.asBinder()).thenReturn(mVendorServiceBinder);
mUwbServiceImpl = new UwbServiceImpl(mContext, mUwbInjector);
}
@@ -129,10 +139,11 @@
final IBinder cbBinder = mock(IBinder.class);
when(cb.asBinder()).thenReturn(cbBinder);
- mUwbServiceImpl.openRanging(sessionHandle, cb, parameters);
+ mUwbServiceImpl.openRanging(ATTRIBUTION_SOURCE, sessionHandle, cb, parameters);
verify(mVendorService).openRanging(
- eq(sessionHandle), mRangingCbCaptor.capture(), eq(parameters));
+ eq(ATTRIBUTION_SOURCE), eq(sessionHandle), mRangingCbCaptor.capture(),
+ eq(parameters));
assertThat(mRangingCbCaptor.getValue()).isNotNull();
}
@@ -182,10 +193,11 @@
final IBinder cbBinder = mock(IBinder.class);
when(cb.asBinder()).thenReturn(cbBinder);
- mUwbServiceImpl.openRanging(sessionHandle, cb, parameters);
+ mUwbServiceImpl.openRanging(ATTRIBUTION_SOURCE, sessionHandle, cb, parameters);
verify(mVendorService).openRanging(
- eq(sessionHandle), mRangingCbCaptor.capture(), eq(parameters));
+ eq(ATTRIBUTION_SOURCE), eq(sessionHandle), mRangingCbCaptor.capture(),
+ eq(parameters));
assertThat(mRangingCbCaptor.getValue()).isNotNull();
// Invoke vendor service callbacks and ensure that the corresponding app callback is
@@ -242,10 +254,11 @@
final IBinder cbBinder = mock(IBinder.class);
when(cb.asBinder()).thenReturn(cbBinder);
- mUwbServiceImpl.openRanging(sessionHandle, cb, parameters);
+ mUwbServiceImpl.openRanging(ATTRIBUTION_SOURCE, sessionHandle, cb, parameters);
verify(mVendorService).openRanging(
- eq(sessionHandle), mRangingCbCaptor.capture(), eq(parameters));
+ eq(ATTRIBUTION_SOURCE), eq(sessionHandle), mRangingCbCaptor.capture(),
+ eq(parameters));
assertThat(mRangingCbCaptor.getValue()).isNotNull();
verify(cbBinder).linkToDeath(mClientDeathCaptor.capture(), anyInt());
@@ -275,13 +288,14 @@
final IBinder cbBinder = mock(IBinder.class);
when(cb.asBinder()).thenReturn(cbBinder);
- mUwbServiceImpl.openRanging(sessionHandle, cb, parameters);
+ mUwbServiceImpl.openRanging(ATTRIBUTION_SOURCE, sessionHandle, cb, parameters);
verify(mVendorServiceBinder).linkToDeath(mVendorServiceDeathCaptor.capture(), anyInt());
assertThat(mVendorServiceDeathCaptor.getValue()).isNotNull();
verify(mVendorService).openRanging(
- eq(sessionHandle), mRangingCbCaptor.capture(), eq(parameters));
+ eq(ATTRIBUTION_SOURCE), eq(sessionHandle), mRangingCbCaptor.capture(),
+ eq(parameters));
assertThat(mRangingCbCaptor.getValue()).isNotNull();
clearInvocations(cb);
@@ -296,4 +310,56 @@
eq(sessionHandle), eq(RangingSession.Callback.REASON_UNKNOWN),
argThat((p) -> p.isEmpty()));
}
+
+ @Test
+ public void testThrowSecurityExceptionWhenCalledWithoutUwbPrivilegedPermission()
+ throws Exception {
+ doThrow(new SecurityException()).when(mContext).enforceCallingOrSelfPermission(
+ eq(UWB_PRIVILEGED), any());
+ final IUwbAdapterStateCallbacks cb = mock(IUwbAdapterStateCallbacks.class);
+ try {
+ mUwbServiceImpl.registerAdapterStateCallbacks(cb);
+ fail();
+ } catch (SecurityException e) { /* pass */ }
+ }
+
+ @Test
+ public void testThrowSecurityExceptionWhenOpenRangingCalledWithoutUwbRangingPermission()
+ throws Exception {
+ doThrow(new SecurityException()).when(mUwbInjector).enforceUwbRangingPermissionForPreflight(
+ any());
+
+ final SessionHandle sessionHandle = new SessionHandle(5);
+ final IUwbRangingCallbacks cb = mock(IUwbRangingCallbacks.class);
+ final PersistableBundle parameters = new PersistableBundle();
+ final IBinder cbBinder = mock(IBinder.class);
+ when(cb.asBinder()).thenReturn(cbBinder);
+ try {
+ mUwbServiceImpl.openRanging(ATTRIBUTION_SOURCE, sessionHandle, cb, parameters);
+ fail();
+ } catch (SecurityException e) { /* pass */ }
+ }
+
+ @Test
+ public void testOnRangingResultCallbackNotSentWithoutUwbRangingPermission() throws Exception {
+ final SessionHandle sessionHandle = new SessionHandle(5);
+ final IUwbRangingCallbacks cb = mock(IUwbRangingCallbacks.class);
+ final PersistableBundle parameters = new PersistableBundle();
+ final IBinder cbBinder = mock(IBinder.class);
+ when(cb.asBinder()).thenReturn(cbBinder);
+
+ mUwbServiceImpl.openRanging(ATTRIBUTION_SOURCE, sessionHandle, cb, parameters);
+
+ verify(mVendorService).openRanging(
+ eq(ATTRIBUTION_SOURCE), eq(sessionHandle), mRangingCbCaptor.capture(),
+ eq(parameters));
+ assertThat(mRangingCbCaptor.getValue()).isNotNull();
+
+ when(mUwbInjector.checkUwbRangingPermissionForDataDelivery(any(), any())).thenReturn(false);
+
+ // Ensure the ranging cb is not delivered to the client.
+ final RangingReport rangingReport = new RangingReport.Builder().build();
+ mRangingCbCaptor.getValue().onRangingResult(sessionHandle, rangingReport);
+ verify(cb, never()).onRangingResult(sessionHandle, rangingReport);
+ }
}
diff --git a/services/tests/uiservicestests/src/com/android/server/notification/BubbleExtractorTest.java b/services/tests/uiservicestests/src/com/android/server/notification/BubbleExtractorTest.java
index 162b2c4..9dffed2 100644
--- a/services/tests/uiservicestests/src/com/android/server/notification/BubbleExtractorTest.java
+++ b/services/tests/uiservicestests/src/com/android/server/notification/BubbleExtractorTest.java
@@ -154,7 +154,7 @@
}
void setUpBubblesEnabled(boolean feature, int app, int channel) {
- when(mConfig.bubblesEnabled()).thenReturn(feature);
+ when(mConfig.bubblesEnabled(mUser)).thenReturn(feature);
when(mConfig.getBubblePreference(anyString(), anyInt())).thenReturn(app);
mChannel.setAllowBubbles(channel);
}
diff --git a/services/tests/uiservicestests/src/com/android/server/notification/NotificationAssistantsTest.java b/services/tests/uiservicestests/src/com/android/server/notification/NotificationAssistantsTest.java
index c11ac3a..6722fff 100644
--- a/services/tests/uiservicestests/src/com/android/server/notification/NotificationAssistantsTest.java
+++ b/services/tests/uiservicestests/src/com/android/server/notification/NotificationAssistantsTest.java
@@ -213,7 +213,7 @@
mAssistants.loadDefaultsFromConfig();
assertEquals(new ArraySet<>(Arrays.asList(oldDefaultComponent)),
mAssistants.getDefaultComponents());
- assertNull(mAssistants.getDefaultFromConfig());
+ assertNull(mAssistants.mDefaultFromConfig);
// Test loadDefaultFromConfig(false) only updates the mDefaultFromConfig
when(mContext.getResources().getString(
diff --git a/services/tests/uiservicestests/src/com/android/server/notification/NotificationManagerServiceTest.java b/services/tests/uiservicestests/src/com/android/server/notification/NotificationManagerServiceTest.java
index 37d7198..5743dec 100755
--- a/services/tests/uiservicestests/src/com/android/server/notification/NotificationManagerServiceTest.java
+++ b/services/tests/uiservicestests/src/com/android/server/notification/NotificationManagerServiceTest.java
@@ -684,10 +684,11 @@
private void setUpPrefsForBubbles(String pkg, int uid, boolean globalEnabled,
int pkgPref, boolean channelEnabled) {
- Settings.Global.putInt(mContext.getContentResolver(),
- Settings.Global.NOTIFICATION_BUBBLES, globalEnabled ? 1 : 0);
+ Settings.Secure.putInt(mContext.getContentResolver(),
+ Settings.Secure.NOTIFICATION_BUBBLES, globalEnabled ? 1 : 0);
mService.mPreferencesHelper.updateBubblesEnabled();
- assertEquals(globalEnabled, mService.mPreferencesHelper.bubblesEnabled());
+ assertEquals(globalEnabled, mService.mPreferencesHelper.bubblesEnabled(
+ mock(UserHandle.class)));
try {
mBinderService.setBubblesAllowed(pkg, uid, pkgPref);
} catch (RemoteException e) {
@@ -4764,8 +4765,8 @@
@Test
public void testAreBubblesEnabled_false() throws Exception {
- Settings.Global.putInt(mContext.getContentResolver(),
- Settings.Global.NOTIFICATION_BUBBLES, 0);
+ Settings.Secure.putInt(mContext.getContentResolver(),
+ Settings.Secure.NOTIFICATION_BUBBLES, 0);
mService.mPreferencesHelper.updateBubblesEnabled();
assertFalse(mBinderService.areBubblesEnabled(UserHandle.getUserHandleForUid(mUid)));
}
@@ -5753,11 +5754,12 @@
}
@Test
- public void testNASSettingUpgrade_userSetNull_showOnBoarding() throws RemoteException {
+ public void testNASSettingUpgrade_userSetNull_noOnBoarding() throws RemoteException {
ComponentName newDefaultComponent = ComponentName.unflattenFromString("package/Component1");
TestableNotificationManagerService service = spy(mService);
int userId = 11;
setUsers(new int[]{userId});
+ when(mUm.getProfileIds(userId, false)).thenReturn(new int[]{userId});
setNASMigrationDone(false, userId);
when(mAssistants.getDefaultFromConfig())
.thenReturn(newDefaultComponent);
@@ -5766,29 +5768,29 @@
when(mAssistants.hasUserSet(userId)).thenReturn(true);
service.migrateDefaultNASShowNotificationIfNecessary();
- assertFalse(service.isNASMigrationDone(userId));
- verify(service, times(1)).createNASUpgradeNotification(eq(userId));
- verify(mAssistants, times(0)).resetDefaultFromConfig();
+ assertTrue(service.isNASMigrationDone(userId));
+ verify(service, times(0)).createNASUpgradeNotification(eq(userId));
+ verify(mAssistants, times(1)).clearDefaults();
+ }
- //Test user clear data before enable/disable from onboarding notification
- ArrayMap<Boolean, ArrayList<ComponentName>> changedListeners =
- generateResetComponentValues();
- when(mListeners.resetComponents(anyString(), anyInt())).thenReturn(changedListeners);
- ArrayMap<Boolean, ArrayList<ComponentName>> changes = new ArrayMap<>();
- changes.put(true, new ArrayList(Arrays.asList(newDefaultComponent)));
- changes.put(false, new ArrayList());
- when(mAssistants.resetComponents(anyString(), anyInt())).thenReturn(changes);
+ @Test
+ public void testNASSettingUpgrade_userSetSameDefault_noOnBoarding() throws RemoteException {
+ ComponentName defaultComponent = ComponentName.unflattenFromString("package/Component1");
+ TestableNotificationManagerService service = spy(mService);
+ int userId = 11;
+ setUsers(new int[]{userId});
+ when(mUm.getProfileIds(userId, false)).thenReturn(new int[]{userId});
+ setNASMigrationDone(false, userId);
+ when(mAssistants.getDefaultFromConfig())
+ .thenReturn(defaultComponent);
+ when(mAssistants.getAllowedComponents(anyInt()))
+ .thenReturn(new ArrayList(Arrays.asList(defaultComponent)));
+ when(mAssistants.hasUserSet(userId)).thenReturn(true);
- //Clear data
- service.getBinderService().clearData("package", userId, false);
- //Test migrate flow again
service.migrateDefaultNASShowNotificationIfNecessary();
-
- //The notification should be still there
- assertFalse(service.isNASMigrationDone(userId));
- verify(service, times(2)).createNASUpgradeNotification(eq(userId));
- verify(mAssistants, times(0)).resetDefaultFromConfig();
- assertEquals(null, service.getApprovedAssistant(userId));
+ assertTrue(service.isNASMigrationDone(userId));
+ verify(service, times(0)).createNASUpgradeNotification(eq(userId));
+ verify(mAssistants, times(1)).resetDefaultFromConfig();
}
@Test
@@ -5842,6 +5844,9 @@
int userId1 = 11;
int userId2 = 12;
setUsers(new int[]{userId1, userId2});
+ when(mUm.getProfileIds(userId1, false)).thenReturn(new int[]{userId1});
+ when(mUm.getProfileIds(userId2, false)).thenReturn(new int[]{userId2});
+
setNASMigrationDone(false, userId1);
setNASMigrationDone(false, userId2);
when(mAssistants.getDefaultComponents())
@@ -5868,6 +5873,43 @@
}
@Test
+ public void testNASSettingUpgrade_multiProfile() throws RemoteException {
+ ComponentName oldDefaultComponent = ComponentName.unflattenFromString("package/Component1");
+ ComponentName newDefaultComponent = ComponentName.unflattenFromString("package/Component2");
+ TestableNotificationManagerService service = spy(mService);
+ int userId1 = 11;
+ int userId2 = 12; //work profile
+ setUsers(new int[]{userId1, userId2});
+ when(mUm.isManagedProfile(userId2)).thenReturn(true);
+ when(mUm.getProfileIds(userId1, false)).thenReturn(new int[]{userId1, userId2});
+
+ setNASMigrationDone(false, userId1);
+ setNASMigrationDone(false, userId2);
+ when(mAssistants.getDefaultComponents())
+ .thenReturn(new ArraySet<>(Arrays.asList(oldDefaultComponent)));
+ when(mAssistants.getDefaultFromConfig())
+ .thenReturn(newDefaultComponent);
+ //Both profiles: need onboarding
+ when(mAssistants.getAllowedComponents(userId1))
+ .thenReturn(Arrays.asList(oldDefaultComponent));
+ when(mAssistants.getAllowedComponents(userId2))
+ .thenReturn(Arrays.asList(oldDefaultComponent));
+
+ when(mAssistants.hasUserSet(userId1)).thenReturn(true);
+ when(mAssistants.hasUserSet(userId2)).thenReturn(true);
+
+ service.migrateDefaultNASShowNotificationIfNecessary();
+ assertFalse(service.isNASMigrationDone(userId1));
+ assertFalse(service.isNASMigrationDone(userId2));
+
+ // only user1 get notification
+ verify(service, times(1)).createNASUpgradeNotification(eq(userId1));
+ verify(service, times(0)).createNASUpgradeNotification(eq(userId2));
+ }
+
+
+
+ @Test
public void testNASSettingUpgrade_clearDataAfterMigrationIsDone() throws RemoteException {
ComponentName defaultComponent = ComponentName.unflattenFromString("package/Component");
TestableNotificationManagerService service = spy(mService);
@@ -5898,15 +5940,21 @@
}
@Test
- public void testNASUpgradeNotificationDisableBroadcast() {
- int userId = 11;
- setUsers(new int[]{userId});
+ public void testNASUpgradeNotificationDisableBroadcast_multiProfile() {
+ int userId1 = 11;
+ int userId2 = 12;
+ setUsers(new int[]{userId1, userId2});
+ when(mUm.isManagedProfile(userId2)).thenReturn(true);
+ when(mUm.getProfileIds(userId1, false)).thenReturn(new int[]{userId1, userId2});
+
TestableNotificationManagerService service = spy(mService);
- setNASMigrationDone(false, userId);
+ setNASMigrationDone(false, userId1);
+ setNASMigrationDone(false, userId2);
- simulateNASUpgradeBroadcast(ACTION_DISABLE_NAS, userId);
+ simulateNASUpgradeBroadcast(ACTION_DISABLE_NAS, userId1);
- assertTrue(service.isNASMigrationDone(userId));
+ assertTrue(service.isNASMigrationDone(userId1));
+ assertTrue(service.isNASMigrationDone(userId2));
// User disabled the NAS from notification, the default stored in xml should be null
// rather than the new default
verify(mAssistants, times(1)).clearDefaults();
@@ -5914,7 +5962,7 @@
//No more notification after disabled
service.migrateDefaultNASShowNotificationIfNecessary();
- verify(service, times(0)).createNASUpgradeNotification(eq(userId));
+ verify(service, times(0)).createNASUpgradeNotification(anyInt());
}
@Test
@@ -5922,6 +5970,8 @@
int userId1 = 11;
int userId2 = 12;
setUsers(new int[]{userId1, userId2});
+ when(mUm.getProfileIds(userId1, false)).thenReturn(new int[]{userId1});
+
TestableNotificationManagerService service = spy(mService);
setNASMigrationDone(false, userId1);
setNASMigrationDone(false, userId2);
diff --git a/services/tests/uiservicestests/src/com/android/server/notification/PreferencesHelperTest.java b/services/tests/uiservicestests/src/com/android/server/notification/PreferencesHelperTest.java
index 04c144a..1b26352 100644
--- a/services/tests/uiservicestests/src/com/android/server/notification/PreferencesHelperTest.java
+++ b/services/tests/uiservicestests/src/com/android/server/notification/PreferencesHelperTest.java
@@ -87,7 +87,6 @@
import android.os.AsyncTask;
import android.os.Build;
import android.os.Bundle;
-import android.os.Process;
import android.os.RemoteCallback;
import android.os.RemoteException;
import android.os.UserHandle;
@@ -110,7 +109,6 @@
import androidx.test.InstrumentationRegistry;
import androidx.test.runner.AndroidJUnit4;
-import com.android.internal.util.FastXmlSerializer;
import com.android.server.UiServiceTestCase;
import org.json.JSONArray;
@@ -120,8 +118,6 @@
import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
-import org.xmlpull.v1.XmlPullParser;
-import org.xmlpull.v1.XmlSerializer;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
@@ -202,7 +198,8 @@
contentResolver.setFallbackToExisting(false);
Secure.putIntForUser(contentResolver,
Secure.NOTIFICATION_BADGING, 1, UserHandle.getUserId(UID_N_MR1));
- Global.putInt(contentResolver, Global.NOTIFICATION_BUBBLES, 1);
+ Secure.putIntForUser(contentResolver, Secure.NOTIFICATION_BUBBLES, 1,
+ UserHandle.getUserId(UID_N_MR1));
ContentProvider testContentProvider = mock(ContentProvider.class);
mTestIContentProvider = mock(IContentProvider.class, invocation -> {
@@ -2131,18 +2128,33 @@
@Test
public void testBubblesOverrideTrue() {
- Global.putInt(getContext().getContentResolver(),
- Global.NOTIFICATION_BUBBLES, 1);
+ Secure.putIntForUser(getContext().getContentResolver(),
+ Secure.NOTIFICATION_BUBBLES, 1,
+ USER.getIdentifier());
mHelper.updateBubblesEnabled(); // would be called by settings observer
- assertTrue(mHelper.bubblesEnabled());
+ assertTrue(mHelper.bubblesEnabled(USER));
}
@Test
public void testBubblesOverrideFalse() {
- Global.putInt(getContext().getContentResolver(),
- Global.NOTIFICATION_BUBBLES, 0);
+ Secure.putIntForUser(getContext().getContentResolver(),
+ Secure.NOTIFICATION_BUBBLES, 0,
+ USER.getIdentifier());
mHelper.updateBubblesEnabled(); // would be called by settings observer
- assertFalse(mHelper.bubblesEnabled());
+ assertFalse(mHelper.bubblesEnabled(USER));
+ }
+
+ @Test
+ public void testBubblesOverrideUserIsolation() throws Exception {
+ Secure.putIntForUser(getContext().getContentResolver(),
+ Secure.NOTIFICATION_BUBBLES, 0,
+ USER.getIdentifier());
+ Secure.putIntForUser(getContext().getContentResolver(),
+ Secure.NOTIFICATION_BUBBLES, 1,
+ USER2.getIdentifier());
+ mHelper.updateBubblesEnabled(); // would be called by settings observer
+ assertFalse(mHelper.bubblesEnabled(USER));
+ assertTrue(mHelper.bubblesEnabled(USER2));
}
@Test
diff --git a/services/tests/wmtests/AndroidManifest.xml b/services/tests/wmtests/AndroidManifest.xml
index 0ed037c..04db686 100644
--- a/services/tests/wmtests/AndroidManifest.xml
+++ b/services/tests/wmtests/AndroidManifest.xml
@@ -66,6 +66,18 @@
<activity android:name="com.android.server.wm.TaskStackChangedListenerTest$ResumeWhilePausingActivity"
android:resumeWhilePausing="true"/>
<activity android:name="com.android.server.wm.ActivityLeakTests$DetectLeakActivity" />
+ <!--
+ Simulate the common trampoline task that uses floating/translucent theme to avoid double
+ starting windows and animations of task open.
+ -->
+ <activity android:name="com.android.server.wm.ActivityOptionsTest$TrampolineActivity"
+ android:taskAffinity="com.android.frameworks.wmtests.trampoline"
+ android:theme="@android:style/Theme.Translucent.NoTitleBar"
+ android:turnScreenOn="true"
+ android:showWhenLocked="true" />
+ <activity android:name="com.android.server.wm.ActivityOptionsTest$MainActivity"
+ android:turnScreenOn="true"
+ android:showWhenLocked="true" />
</application>
<instrumentation
diff --git a/services/tests/wmtests/src/com/android/server/wm/ActivityOptionsTest.java b/services/tests/wmtests/src/com/android/server/wm/ActivityOptionsTest.java
index 8983b4e..b4fbf5f 100644
--- a/services/tests/wmtests/src/com/android/server/wm/ActivityOptionsTest.java
+++ b/services/tests/wmtests/src/com/android/server/wm/ActivityOptionsTest.java
@@ -20,17 +20,36 @@
import static android.app.WindowConfiguration.WINDOWING_MODE_FULLSCREEN;
import static android.view.WindowManager.LayoutParams.ROTATION_ANIMATION_ROTATE;
+import static androidx.test.platform.app.InstrumentationRegistry.getInstrumentation;
+
import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue;
+import android.app.Activity;
+import android.app.ActivityManager.RunningTaskInfo;
import android.app.ActivityOptions;
+import android.app.Instrumentation;
+import android.app.Instrumentation.ActivityMonitor;
+import android.content.ComponentName;
+import android.content.Context;
+import android.content.Intent;
+import android.os.Binder;
import android.os.Bundle;
+import android.os.IBinder;
import android.platform.test.annotations.Presubmit;
+import android.view.SurfaceControl;
+import android.window.TaskOrganizer;
import androidx.test.filters.MediumTest;
import org.junit.Test;
+import java.util.concurrent.CountDownLatch;
+import java.util.concurrent.TimeUnit;
+
/**
* Build/Install/Run:
* atest WmTests:ActivityOptionsTest
@@ -70,4 +89,78 @@
assertTrue(restoredOpts.getTaskOverlay());
assertTrue(restoredOpts.canTaskOverlayResume());
}
+
+ @Test
+ public void testTransferLaunchCookie() {
+ final Binder cookie = new Binder();
+ final ActivityOptions options = ActivityOptions.makeBasic();
+ options.setLaunchCookie(cookie);
+ final Instrumentation instrumentation = getInstrumentation();
+ final Context context = instrumentation.getContext();
+ final ComponentName trampoline = new ComponentName(context, TrampolineActivity.class);
+ final ComponentName main = new ComponentName(context, MainActivity.class);
+ final Intent intent = new Intent().setComponent(trampoline)
+ .setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+ final ActivityMonitor monitor = new ActivityMonitor(main.getClassName(),
+ null /* result */, false /* block */);
+ instrumentation.addMonitor(monitor);
+ final CountDownLatch mainLatch = new CountDownLatch(1);
+ final IBinder[] appearedCookies = new IBinder[2];
+ final TaskOrganizer organizer = new TaskOrganizer() {
+ @Override
+ public void onTaskAppeared(RunningTaskInfo taskInfo, SurfaceControl leash) {
+ try (SurfaceControl.Transaction t = new SurfaceControl.Transaction()) {
+ t.setVisibility(leash, true /* visible */).apply();
+ }
+ int cookieIndex = -1;
+ if (trampoline.equals(taskInfo.baseActivity)) {
+ cookieIndex = 0;
+ } else if (main.equals(taskInfo.baseActivity)) {
+ cookieIndex = 1;
+ mainLatch.countDown();
+ }
+ if (cookieIndex >= 0) {
+ appearedCookies[cookieIndex] = taskInfo.launchCookies.isEmpty()
+ ? null : taskInfo.launchCookies.get(0);
+ }
+ }
+ };
+ Activity mainActivity = null;
+ try {
+ organizer.registerOrganizer();
+ context.startActivity(intent, options.toBundle());
+ try {
+ mainLatch.await(10, TimeUnit.SECONDS);
+ } catch (InterruptedException ignored) {
+ }
+ mainActivity = monitor.getLastActivity();
+
+ assertNotNull(mainActivity);
+ assertNotEquals(TrampolineActivity.sTaskId, mainActivity.getTaskId());
+ assertNull("Trampoline task must not have cookie", appearedCookies[0]);
+ assertEquals("Main task must get the same cookie", cookie, appearedCookies[1]);
+ } finally {
+ organizer.unregisterOrganizer();
+ instrumentation.removeMonitor(monitor);
+ if (mainActivity != null) {
+ mainActivity.finish();
+ }
+ }
+ }
+
+ public static class TrampolineActivity extends Activity {
+ static int sTaskId;
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ sTaskId = getTaskId();
+ startActivity(new Intent(this, MainActivity.class)
+ .setFlags(Intent.FLAG_ACTIVITY_NEW_TASK));
+ finish();
+ }
+ }
+
+ public static class MainActivity extends Activity {
+ }
}
diff --git a/services/tests/wmtests/src/com/android/server/wm/DisplayAreaPolicyBuilderTest.java b/services/tests/wmtests/src/com/android/server/wm/DisplayAreaPolicyBuilderTest.java
index 7df17fd..31d4612 100644
--- a/services/tests/wmtests/src/com/android/server/wm/DisplayAreaPolicyBuilderTest.java
+++ b/services/tests/wmtests/src/com/android/server/wm/DisplayAreaPolicyBuilderTest.java
@@ -586,10 +586,13 @@
.setTaskDisplayAreas(Lists.newArrayList(mTda2)))
.build(mWms);
- final WindowToken token = new WindowToken(mWms, mock(IBinder.class),
- TYPE_STATUS_BAR, true /* persistOnEmpty */, mDisplayContent,
- true /* ownerCanManageAppTokens */, false /* roundedCornerOverlay */,
- false /* fromClientToken */, null /* options */);
+ final WindowToken token = new WindowToken.Builder(mWms, mock(IBinder.class),
+ TYPE_STATUS_BAR)
+ .setDisplayContent(mDisplayContent)
+ .setPersistOnEmpty(true)
+ .setOwnerCanManageAppTokens(true)
+ .build();
+
policy.addWindow(token);
// By default, window are always added to the root.
@@ -600,10 +603,13 @@
// When the window has options for target root id, attach it to the target root.
final Bundle options = new Bundle();
options.putInt(KEY_ROOT_DISPLAY_AREA_ID, mGroupRoot2.mFeatureId);
- final WindowToken token2 = new WindowToken(mWms, mock(IBinder.class),
- TYPE_STATUS_BAR, true /* persistOnEmpty */, mDisplayContent,
- true /* ownerCanManageAppTokens */, false /* roundedCornerOverlay */,
- false /* fromClientToken */, options);
+ final WindowToken token2 = new WindowToken.Builder(mWms, mock(IBinder.class),
+ TYPE_STATUS_BAR)
+ .setDisplayContent(mDisplayContent)
+ .setPersistOnEmpty(true)
+ .setOwnerCanManageAppTokens(true)
+ .setOptions(options)
+ .build();
policy.addWindow(token2);
assertThat(token2.isDescendantOf(mGroupRoot2)).isTrue();
@@ -631,14 +637,18 @@
})
.build(mWms);
- final WindowToken token1 = new WindowToken(mWms, mock(IBinder.class),
- TYPE_STATUS_BAR, true /* persistOnEmpty */, mDisplayContent,
- true /* ownerCanManageAppTokens */, false /* roundedCornerOverlay */,
- false /* fromClientToken */, null /* options */);
- final WindowToken token2 = new WindowToken(mWms, mock(IBinder.class),
- TYPE_WALLPAPER, true /* persistOnEmpty */, mDisplayContent,
- true /* ownerCanManageAppTokens */, false /* roundedCornerOverlay */,
- false /* fromClientToken */, null /* options */);
+ final WindowToken token1 = new WindowToken.Builder(mWms, mock(IBinder.class),
+ TYPE_STATUS_BAR)
+ .setDisplayContent(mDisplayContent)
+ .setPersistOnEmpty(true)
+ .setOwnerCanManageAppTokens(true)
+ .build();
+ final WindowToken token2 = new WindowToken.Builder(mWms, mock(IBinder.class),
+ TYPE_WALLPAPER)
+ .setDisplayContent(mDisplayContent)
+ .setPersistOnEmpty(true)
+ .setOwnerCanManageAppTokens(true)
+ .build();
policy.addWindow(token1);
policy.addWindow(token2);
@@ -682,18 +692,26 @@
options1.putInt("HIERARCHY_ROOT_ID", mGroupRoot1.mFeatureId);
final Bundle options2 = new Bundle();
options2.putInt("HIERARCHY_ROOT_ID", mGroupRoot2.mFeatureId);
- final WindowToken token0 = new WindowToken(mWms, mock(IBinder.class),
- TYPE_STATUS_BAR, true /* persistOnEmpty */, mDisplayContent,
- true /* ownerCanManageAppTokens */, false /* roundedCornerOverlay */,
- false /* fromClientToken */, null /* options */);
- final WindowToken token1 = new WindowToken(mWms, mock(IBinder.class),
- TYPE_STATUS_BAR, true /* persistOnEmpty */, mDisplayContent,
- true /* ownerCanManageAppTokens */, false /* roundedCornerOverlay */,
- false /* fromClientToken */, options1);
- final WindowToken token2 = new WindowToken(mWms, mock(IBinder.class),
- TYPE_STATUS_BAR, true /* persistOnEmpty */, mDisplayContent,
- true /* ownerCanManageAppTokens */, false /* roundedCornerOverlay */,
- false /* fromClientToken */, options2);
+ final WindowToken token0 = new WindowToken.Builder(mWms, mock(IBinder.class),
+ TYPE_STATUS_BAR)
+ .setDisplayContent(mDisplayContent)
+ .setPersistOnEmpty(true)
+ .setOwnerCanManageAppTokens(true)
+ .build();
+ final WindowToken token1 = new WindowToken.Builder(mWms, mock(IBinder.class),
+ TYPE_STATUS_BAR)
+ .setDisplayContent(mDisplayContent)
+ .setPersistOnEmpty(true)
+ .setOwnerCanManageAppTokens(true)
+ .setOptions(options1)
+ .build();
+ final WindowToken token2 = new WindowToken.Builder(mWms, mock(IBinder.class),
+ TYPE_STATUS_BAR)
+ .setDisplayContent(mDisplayContent)
+ .setPersistOnEmpty(true)
+ .setOwnerCanManageAppTokens(true)
+ .setOptions(options2)
+ .build();
policy.addWindow(token0);
policy.addWindow(token1);
@@ -787,9 +805,8 @@
}
private WindowToken tokenOfType(int type) {
- WindowToken token = new WindowToken(mWms, new Binder(), type, false /* persistOnEmpty */,
- mDisplayContent, false /* ownerCanManageAppTokens */);
- return token;
+ return new WindowToken.Builder(mWms, new Binder(), type)
+ .setDisplayContent(mDisplayContent).build();
}
private static void assertMatchLayerOrder(List<DisplayArea<?>> actualOrder,
diff --git a/services/tests/wmtests/src/com/android/server/wm/DisplayAreaTest.java b/services/tests/wmtests/src/com/android/server/wm/DisplayAreaTest.java
index d4c956d..d5628fc 100644
--- a/services/tests/wmtests/src/com/android/server/wm/DisplayAreaTest.java
+++ b/services/tests/wmtests/src/com/android/server/wm/DisplayAreaTest.java
@@ -586,8 +586,6 @@
}
private WindowToken createWindowToken(int type) {
- return new WindowToken(mWm, new Binder(),
- type, false /* persist */, null /* displayContent */,
- false /* canManageTokens */);
+ return new WindowToken.Builder(mWm, new Binder(), type).build();
}
}
diff --git a/services/tests/wmtests/src/com/android/server/wm/DualDisplayAreaGroupPolicyTest.java b/services/tests/wmtests/src/com/android/server/wm/DualDisplayAreaGroupPolicyTest.java
index e9907c1..bdc4b4e 100644
--- a/services/tests/wmtests/src/com/android/server/wm/DualDisplayAreaGroupPolicyTest.java
+++ b/services/tests/wmtests/src/com/android/server/wm/DualDisplayAreaGroupPolicyTest.java
@@ -390,8 +390,8 @@
}
private WindowToken tokenOfType(int type) {
- return new WindowToken(mWm, new Binder(), type, false /* persistOnEmpty */,
- mDisplay, false /* ownerCanManageAppTokens */);
+ return new WindowToken.Builder(mWm, new Binder(), type)
+ .setDisplayContent(mDisplay).build();
}
/** Display with two {@link DisplayAreaGroup}. Each of them take half of the screen. */
diff --git a/services/tests/wmtests/src/com/android/server/wm/SizeCompatTests.java b/services/tests/wmtests/src/com/android/server/wm/SizeCompatTests.java
index 95b7443..45818a2 100644
--- a/services/tests/wmtests/src/com/android/server/wm/SizeCompatTests.java
+++ b/services/tests/wmtests/src/com/android/server/wm/SizeCompatTests.java
@@ -60,6 +60,7 @@
import android.compat.testing.PlatformCompatChangeRule;
import android.content.ComponentName;
import android.content.pm.ActivityInfo;
+import android.content.pm.ActivityInfo.ScreenOrientation;
import android.content.res.Configuration;
import android.graphics.Rect;
import android.platform.test.annotations.Presubmit;
@@ -67,6 +68,7 @@
import androidx.test.filters.MediumTest;
+import libcore.junit.util.compat.CoreCompatChangeRule.DisableCompatChanges;
import libcore.junit.util.compat.CoreCompatChangeRule.EnableCompatChanges;
import org.junit.Rule;
@@ -662,15 +664,8 @@
mActivity.info.resizeMode = RESIZE_MODE_RESIZEABLE;
// Create an activity on the same task.
- final ActivityRecord activity = new ActivityBuilder(mAtm)
- .setTask(mTask)
- .setResizeMode(ActivityInfo.RESIZE_MODE_UNRESIZEABLE)
- .setSupportsSizeChanges(true)
- .setScreenOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT)
- .setComponent(ComponentName.createRelative(mContext,
- SizeCompatTests.class.getName()))
- .setUid(android.os.Process.myUid())
- .build();
+ final ActivityRecord activity = buildActivityRecord(/* supportsSizeChanges= */true,
+ RESIZE_MODE_UNRESIZEABLE, ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
assertFalse(activity.shouldCreateCompatDisplayInsets());
}
@@ -682,15 +677,8 @@
mActivity.info.resizeMode = RESIZE_MODE_RESIZEABLE;
// Create an activity on the same task.
- final ActivityRecord activity = new ActivityBuilder(mAtm)
- .setTask(mTask)
- .setResizeMode(ActivityInfo.RESIZE_MODE_UNRESIZEABLE)
- .setSupportsSizeChanges(false)
- .setScreenOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT)
- .setComponent(ComponentName.createRelative(mContext,
- SizeCompatTests.class.getName()))
- .setUid(android.os.Process.myUid())
- .build();
+ final ActivityRecord activity = buildActivityRecord(/* supportsSizeChanges= */false,
+ RESIZE_MODE_UNRESIZEABLE, ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
assertTrue(activity.shouldCreateCompatDisplayInsets());
}
@@ -702,15 +690,8 @@
mActivity.info.resizeMode = RESIZE_MODE_RESIZEABLE;
// Create an activity on the same task.
- final ActivityRecord activity = new ActivityBuilder(mAtm)
- .setTask(mTask)
- .setResizeMode(ActivityInfo.RESIZE_MODE_RESIZEABLE)
- .setSupportsSizeChanges(false)
- .setScreenOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT)
- .setComponent(ComponentName.createRelative(mContext,
- SizeCompatTests.class.getName()))
- .setUid(android.os.Process.myUid())
- .build();
+ final ActivityRecord activity = buildActivityRecord(/* supportsSizeChanges= */false,
+ RESIZE_MODE_RESIZEABLE, ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
assertFalse(activity.shouldCreateCompatDisplayInsets());
}
@@ -723,15 +704,8 @@
mActivity.info.resizeMode = RESIZE_MODE_RESIZEABLE;
// Create an activity on the same task.
- final ActivityRecord activity = new ActivityBuilder(mAtm)
- .setTask(mTask)
- .setResizeMode(ActivityInfo.RESIZE_MODE_UNRESIZEABLE)
- .setSupportsSizeChanges(false)
- .setScreenOrientation(ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED)
- .setComponent(ComponentName.createRelative(mContext,
- SizeCompatTests.class.getName()))
- .setUid(android.os.Process.myUid())
- .build();
+ final ActivityRecord activity = buildActivityRecord(/* supportsSizeChanges= */false,
+ RESIZE_MODE_UNRESIZEABLE, ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED);
assertFalse(activity.shouldCreateCompatDisplayInsets());
}
@@ -744,15 +718,8 @@
mActivity.info.resizeMode = RESIZE_MODE_RESIZEABLE;
// Create an activity on the same task.
- final ActivityRecord activity = new ActivityBuilder(mAtm)
- .setTask(mTask)
- .setResizeMode(ActivityInfo.RESIZE_MODE_UNRESIZEABLE)
- .setSupportsSizeChanges(false)
- .setScreenOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT)
- .setComponent(ComponentName.createRelative(mContext,
- SizeCompatTests.class.getName()))
- .setUid(android.os.Process.myUid())
- .build();
+ final ActivityRecord activity = buildActivityRecord(/* supportsSizeChanges= */false,
+ RESIZE_MODE_UNRESIZEABLE, ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
assertFalse(activity.shouldCreateCompatDisplayInsets());
}
@@ -765,15 +732,8 @@
mActivity.info.resizeMode = RESIZE_MODE_RESIZEABLE;
// Create an activity on the same task.
- final ActivityRecord activity = new ActivityBuilder(mAtm)
- .setTask(mTask)
- .setResizeMode(ActivityInfo.RESIZE_MODE_RESIZEABLE)
- .setSupportsSizeChanges(true)
- .setScreenOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT)
- .setComponent(ComponentName.createRelative(mContext,
- SizeCompatTests.class.getName()))
- .setUid(android.os.Process.myUid())
- .build();
+ final ActivityRecord activity = buildActivityRecord(/* supportsSizeChanges= */true,
+ RESIZE_MODE_RESIZEABLE, ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
assertTrue(activity.shouldCreateCompatDisplayInsets());
}
@@ -786,19 +746,111 @@
mActivity.info.resizeMode = RESIZE_MODE_RESIZEABLE;
// Create an activity on the same task.
- final ActivityRecord activity = new ActivityBuilder(mAtm)
- .setTask(mTask)
- .setResizeMode(ActivityInfo.RESIZE_MODE_RESIZEABLE)
- .setSupportsSizeChanges(true)
- .setScreenOrientation(ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED)
- .setComponent(ComponentName.createRelative(mContext,
- SizeCompatTests.class.getName()))
- .setUid(android.os.Process.myUid())
- .build();
+ final ActivityRecord activity = buildActivityRecord(/* supportsSizeChanges= */true,
+ RESIZE_MODE_RESIZEABLE, ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED);
assertTrue(activity.shouldCreateCompatDisplayInsets());
}
@Test
+ @EnableCompatChanges({ActivityInfo.NEVER_SANDBOX_DISPLAY_APIS})
+ public void testNeverSandboxDisplayApis_configEnabled_sandboxingNotApplied() {
+ setUpDisplaySizeWithApp(1000, 1200);
+
+ // Make the task root resizable.
+ mActivity.info.resizeMode = RESIZE_MODE_RESIZEABLE;
+
+ // Create an activity with a max aspect ratio on the same task.
+ final ActivityRecord activity = buildActivityRecord(/* supportsSizeChanges= */false,
+ RESIZE_MODE_UNRESIZEABLE, ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED);
+ activity.mDisplayContent.setIgnoreOrientationRequest(true /* ignoreOrientationRequest */);
+ prepareUnresizable(activity, /* maxAspect=*/ 1.5f, SCREEN_ORIENTATION_LANDSCAPE);
+
+ // Activity max bounds should not be sandboxed, even though it is letterboxed.
+ assertTrue(activity.isLetterboxedForFixedOrientationAndAspectRatio());
+ assertThat(activity.getConfiguration().windowConfiguration.getMaxBounds())
+ .isEqualTo(activity.getDisplayArea().getBounds());
+ }
+
+ @Test
+ @DisableCompatChanges({ActivityInfo.NEVER_SANDBOX_DISPLAY_APIS})
+ public void testNeverSandboxDisplayApis_configDisabled_sandboxingApplied() {
+ setUpDisplaySizeWithApp(1000, 1200);
+
+ // Make the task root resizable.
+ mActivity.info.resizeMode = RESIZE_MODE_RESIZEABLE;
+
+ // Create an activity with a max aspect ratio on the same task.
+ final ActivityRecord activity = buildActivityRecord(/* supportsSizeChanges= */false,
+ RESIZE_MODE_UNRESIZEABLE, ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED);
+ activity.mDisplayContent.setIgnoreOrientationRequest(true /* ignoreOrientationRequest */);
+ prepareUnresizable(activity, /* maxAspect=*/ 1.5f, SCREEN_ORIENTATION_LANDSCAPE);
+
+ // Activity max bounds should be sandboxed due to letterboxed and the config being disabled.
+ assertActivityMaxBoundsSandboxed(activity);
+ }
+
+ @Test
+ @EnableCompatChanges({ActivityInfo.ALWAYS_SANDBOX_DISPLAY_APIS})
+ public void testAlwaysSandboxDisplayApis_configEnabled_sandboxingApplied_unresizable() {
+ setUpDisplaySizeWithApp(1000, 1200);
+
+ // Make the task root resizable.
+ mActivity.info.resizeMode = RESIZE_MODE_RESIZEABLE;
+
+ // Create an activity with a max aspect ratio on the same task.
+ final ActivityRecord activity = buildActivityRecord(/* supportsSizeChanges= */false,
+ RESIZE_MODE_UNRESIZEABLE, ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED);
+ activity.mDisplayContent.setIgnoreOrientationRequest(true /* ignoreOrientationRequest */);
+ prepareUnresizable(activity, /* maxAspect=*/ 1.5f, SCREEN_ORIENTATION_LANDSCAPE);
+
+ // Activity max bounds should be sandboxed due to letterboxed and the config being enabled.
+ assertActivityMaxBoundsSandboxed(activity);
+ }
+
+ @Test
+ @DisableCompatChanges({ActivityInfo.ALWAYS_SANDBOX_DISPLAY_APIS})
+ public void testAlwaysSandboxDisplayApis_configDisabled_sandboxingNotApplied() {
+ setUpDisplaySizeWithApp(1000, 1200);
+
+ // Make the task root resizable.
+ mActivity.info.resizeMode = RESIZE_MODE_RESIZEABLE;
+
+ // Create an activity with a max aspect ratio on the same task.
+ final ActivityRecord activity = buildActivityRecord(/* supportsSizeChanges= */false,
+ RESIZE_MODE_UNRESIZEABLE, ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED);
+ activity.mDisplayContent.setIgnoreOrientationRequest(true /* ignoreOrientationRequest */);
+ prepareUnresizable(activity, /* maxAspect=*/ 1.5f, SCREEN_ORIENTATION_LANDSCAPE);
+
+ // Activity max bounds be sandboxed due to letterbox and the config being disabled.
+ assertActivityMaxBoundsSandboxed(activity);
+ }
+
+ @Test
+ @EnableCompatChanges({ActivityInfo.ALWAYS_SANDBOX_DISPLAY_APIS})
+ public void testAlwaysSandboxDisplayApis_configEnabled_sandboxingApplied_resizableSplit() {
+ setUpDisplaySizeWithApp(1000, 2800);
+ mActivity.info.resizeMode = RESIZE_MODE_RESIZEABLE;
+ final ActivityRecord activity = buildActivityRecord(/* supportsSizeChanges= */false,
+ RESIZE_MODE_RESIZEABLE, ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED);
+ final TestSplitOrganizer organizer =
+ new TestSplitOrganizer(mAtm, activity.getDisplayContent());
+
+ // Activity max bounds should be sandboxed due the config being enabled.
+ assertFalse(activity.inSizeCompatMode());
+ assertActivityMaxBoundsSandboxed(activity);
+
+ // Move activity to split screen which takes half of the screen.
+ mTask.reparent(organizer.mPrimary, POSITION_TOP,
+ false /*moveParents*/, "test");
+ organizer.mPrimary.setBounds(0, 0, 1000, 1400);
+ assertEquals(WINDOWING_MODE_SPLIT_SCREEN_PRIMARY, mTask.getWindowingMode());
+ assertEquals(WINDOWING_MODE_SPLIT_SCREEN_PRIMARY, activity.getWindowingMode());
+
+ // Resizable activity is sandboxed due to config being enabled.
+ assertActivityMaxBoundsSandboxed(activity);
+ }
+
+ @Test
@EnableCompatChanges({ActivityInfo.OVERRIDE_MIN_ASPECT_RATIO,
ActivityInfo.OVERRIDE_MIN_ASPECT_RATIO_MEDIUM})
public void testOverrideMinAspectRatioMedium() {
@@ -1675,6 +1727,24 @@
displayPolicy.layoutWindowLw(statusBar, null, displayContent.mDisplayFrames);
}
+ /**
+ * Returns an ActivityRecord instance with the specified attributes on the same task. By
+ * constructing the ActivityRecord, forces {@link ActivityInfo} to be loaded with the compat
+ * config settings.
+ */
+ private ActivityRecord buildActivityRecord(boolean supportsSizeChanges, int resizeMode,
+ @ScreenOrientation int screenOrientation) {
+ return new ActivityBuilder(mAtm)
+ .setTask(mTask)
+ .setResizeMode(resizeMode)
+ .setSupportsSizeChanges(supportsSizeChanges)
+ .setScreenOrientation(screenOrientation)
+ .setComponent(ComponentName.createRelative(mContext,
+ SizeCompatTests.class.getName()))
+ .setUid(android.os.Process.myUid())
+ .build();
+ }
+
static void prepareUnresizable(ActivityRecord activity, int screenOrientation) {
prepareUnresizable(activity, -1 /* maxAspect */, screenOrientation);
}
@@ -1743,9 +1813,17 @@
* bounds are sandboxed.
*/
private void assertActivityMaxBoundsSandboxed() {
+ assertActivityMaxBoundsSandboxed(mActivity);
+ }
+
+ /**
+ * Asserts activity-level letterbox or size compat mode size compat mode on the specified
+ * activity, so activity max bounds are sandboxed.
+ */
+ private void assertActivityMaxBoundsSandboxed(ActivityRecord activity) {
// Activity max bounds are sandboxed due to size compat mode.
- assertThat(mActivity.getConfiguration().windowConfiguration.getMaxBounds())
- .isEqualTo(mActivity.getWindowConfiguration().getBounds());
+ assertThat(activity.getConfiguration().windowConfiguration.getMaxBounds())
+ .isEqualTo(activity.getWindowConfiguration().getBounds());
}
static Configuration rotateDisplay(DisplayContent display, int rotation) {
diff --git a/services/tests/wmtests/src/com/android/server/wm/WindowContainerTests.java b/services/tests/wmtests/src/com/android/server/wm/WindowContainerTests.java
index 6919c4c..00f3d8b 100644
--- a/services/tests/wmtests/src/com/android/server/wm/WindowContainerTests.java
+++ b/services/tests/wmtests/src/com/android/server/wm/WindowContainerTests.java
@@ -16,6 +16,7 @@
package com.android.server.wm;
+import static android.app.WindowConfiguration.WINDOWING_MODE_FULLSCREEN;
import static android.content.pm.ActivityInfo.SCREEN_ORIENTATION_BEHIND;
import static android.content.pm.ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE;
import static android.content.pm.ActivityInfo.SCREEN_ORIENTATION_PORTRAIT;
@@ -634,6 +635,22 @@
}
@Test
+ public void testSetOrientation() {
+ final TestWindowContainer root = spy(new TestWindowContainerBuilder(mWm).build());
+ final TestWindowContainer child = spy(root.addChildWindow());
+ doReturn(true).when(root).handlesOrientationChangeFromDescendant();
+ child.getWindowConfiguration().setWindowingMode(WINDOWING_MODE_FULLSCREEN);
+ child.setOrientation(SCREEN_ORIENTATION_PORTRAIT);
+ // The ancestor should decide whether to dispatch the configuration change.
+ verify(child, never()).onConfigurationChanged(any());
+
+ doReturn(false).when(root).handlesOrientationChangeFromDescendant();
+ child.setOrientation(SCREEN_ORIENTATION_LANDSCAPE);
+ // The ancestor doesn't handle the request so the descendant applies the change directly.
+ verify(child).onConfigurationChanged(any());
+ }
+
+ @Test
public void testCompareTo() {
final TestWindowContainerBuilder builder = new TestWindowContainerBuilder(mWm);
final TestWindowContainer root = builder.setLayer(0).build();
diff --git a/services/tests/wmtests/src/com/android/server/wm/WindowContextListenerControllerTests.java b/services/tests/wmtests/src/com/android/server/wm/WindowContextListenerControllerTests.java
index 73b9173..5d0fe17 100644
--- a/services/tests/wmtests/src/com/android/server/wm/WindowContextListenerControllerTests.java
+++ b/services/tests/wmtests/src/com/android/server/wm/WindowContextListenerControllerTests.java
@@ -17,8 +17,11 @@
package com.android.server.wm;
import static android.view.Display.DEFAULT_DISPLAY;
+import static android.view.WindowManager.LayoutParams.TYPE_ACCESSIBILITY_MAGNIFICATION_OVERLAY;
import static android.view.WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY;
+import static com.google.common.truth.Truth.assertThat;
+
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
@@ -162,6 +165,26 @@
false /* callerCanManagerAppTokens */, ANOTHER_UID);
}
+ @Test
+ public void testWindowContextCreatedWindowTokenRemoved_SwitchToListenToDA() {
+ WindowToken windowContextCreatedToken = new WindowToken.Builder(mWm, mClientToken,
+ TYPE_ACCESSIBILITY_MAGNIFICATION_OVERLAY)
+ .setDisplayContent(mDefaultDisplay)
+ .setFromClientToken(true)
+ .build();
+ final DisplayArea da = windowContextCreatedToken.getDisplayArea();
+
+ mController.registerWindowContainerListener(mClientToken, windowContextCreatedToken,
+ TEST_UID, TYPE_ACCESSIBILITY_MAGNIFICATION_OVERLAY, null /* options */);
+
+ assertThat(mController.getContainer(mClientToken)).isEqualTo(windowContextCreatedToken);
+
+ // Remove WindowToken
+ windowContextCreatedToken.removeImmediately();
+
+ assertThat(mController.getContainer(mClientToken)).isEqualTo(da);
+ }
+
private class TestWindowTokenClient extends IWindowToken.Stub {
private Configuration mConfiguration;
private int mDisplayId;
diff --git a/services/tests/wmtests/src/com/android/server/wm/WindowOrganizerTests.java b/services/tests/wmtests/src/com/android/server/wm/WindowOrganizerTests.java
index 6d55220..83f41e3 100644
--- a/services/tests/wmtests/src/com/android/server/wm/WindowOrganizerTests.java
+++ b/services/tests/wmtests/src/com/android/server/wm/WindowOrganizerTests.java
@@ -543,33 +543,7 @@
@Test
public void testTileAddRemoveChild() {
- ITaskOrganizer listener = new ITaskOrganizer.Stub() {
- @Override
- public void addStartingWindow(StartingWindowInfo info, IBinder appToken) {
-
- }
-
- @Override
- public void removeStartingWindow(int taskId, SurfaceControl leash, Rect frame,
- boolean playRevealAnimation) { }
-
- @Override
- public void copySplashScreenView(int taskId) { }
-
- @Override
- public void onTaskAppeared(RunningTaskInfo taskInfo, SurfaceControl leash) { }
-
- @Override
- public void onTaskVanished(RunningTaskInfo container) { }
-
- @Override
- public void onTaskInfoChanged(RunningTaskInfo info) throws RemoteException {
- }
-
- @Override
- public void onBackPressedOnTaskRoot(RunningTaskInfo taskInfo) {
- }
- };
+ final StubOrganizer listener = new StubOrganizer();
mWm.mAtmService.mTaskOrganizerController.registerTaskOrganizer(listener);
Task task = mWm.mAtmService.mTaskOrganizerController.createRootTask(
mDisplayContent, WINDOWING_MODE_SPLIT_SCREEN_SECONDARY, null);
@@ -612,31 +586,12 @@
public void testTaskInfoCallback() {
final ArrayList<RunningTaskInfo> lastReportedTiles = new ArrayList<>();
final boolean[] called = {false};
- ITaskOrganizer listener = new ITaskOrganizer.Stub() {
+ final StubOrganizer listener = new StubOrganizer() {
@Override
- public void addStartingWindow(StartingWindowInfo info, IBinder appToken) {
-
- }
- @Override
- public void removeStartingWindow(int taskId, SurfaceControl leash, Rect frame,
- boolean playRevealAnimation) { }
- @Override
- public void copySplashScreenView(int taskId) { }
- @Override
- public void onTaskAppeared(RunningTaskInfo taskInfo, SurfaceControl leash) { }
-
- @Override
- public void onTaskVanished(RunningTaskInfo container) { }
-
- @Override
- public void onTaskInfoChanged(RunningTaskInfo info) throws RemoteException {
+ public void onTaskInfoChanged(RunningTaskInfo info) {
lastReportedTiles.add(info);
called[0] = true;
}
-
- @Override
- public void onBackPressedOnTaskRoot(RunningTaskInfo taskInfo) {
- }
};
mWm.mAtmService.mTaskOrganizerController.registerTaskOrganizer(listener);
Task task = mWm.mAtmService.mTaskOrganizerController.createRootTask(
@@ -689,31 +644,11 @@
@Test
public void testHierarchyTransaction() {
final ArrayMap<IBinder, RunningTaskInfo> lastReportedTiles = new ArrayMap<>();
- ITaskOrganizer listener = new ITaskOrganizer.Stub() {
- @Override
- public void addStartingWindow(StartingWindowInfo info, IBinder appToken) {
-
- }
-
- @Override
- public void removeStartingWindow(int taskId, SurfaceControl leash, Rect frame,
- boolean playRevealAnimation) { }
- @Override
- public void copySplashScreenView(int taskId) { }
- @Override
- public void onTaskAppeared(RunningTaskInfo taskInfo, SurfaceControl leash) { }
-
- @Override
- public void onTaskVanished(RunningTaskInfo container) { }
-
+ final StubOrganizer listener = new StubOrganizer() {
@Override
public void onTaskInfoChanged(RunningTaskInfo info) {
lastReportedTiles.put(info.token.asBinder(), info);
}
-
- @Override
- public void onBackPressedOnTaskRoot(RunningTaskInfo taskInfo) {
- }
};
mWm.mAtmService.mTaskOrganizerController.registerTaskOrganizer(listener);
@@ -838,7 +773,7 @@
verify(transactionListener).onTransactionReady(anyInt(), any());
}
- class StubOrganizer extends ITaskOrganizer.Stub {
+ static class StubOrganizer extends ITaskOrganizer.Stub {
RunningTaskInfo mInfo;
@Override
diff --git a/services/tests/wmtests/src/com/android/server/wm/WindowTestsBase.java b/services/tests/wmtests/src/com/android/server/wm/WindowTestsBase.java
index 2d4e4ef..9ac40ca 100644
--- a/services/tests/wmtests/src/com/android/server/wm/WindowTestsBase.java
+++ b/services/tests/wmtests/src/com/android/server/wm/WindowTestsBase.java
@@ -92,7 +92,6 @@
import android.view.View;
import android.view.WindowManager;
import android.view.WindowManager.DisplayImePolicy;
-import android.window.ITaskOrganizer;
import android.window.ITransitionPlayer;
import android.window.StartingWindowInfo;
import android.window.TransitionInfo;
@@ -1216,7 +1215,7 @@
}
}
- static class TestStartingWindowOrganizer extends ITaskOrganizer.Stub {
+ static class TestStartingWindowOrganizer extends WindowOrganizerTests.StubOrganizer {
private final ActivityTaskManagerService mAtm;
private final WindowManagerService mWMService;
private final WindowState.PowerManagerWrapper mPowerManagerWrapper;
@@ -1281,24 +1280,9 @@
}
}
}
- @Override
- public void copySplashScreenView(int taskId) {
- }
- @Override
- public void onTaskAppeared(ActivityManager.RunningTaskInfo info, SurfaceControl leash) {
- }
- @Override
- public void onTaskVanished(ActivityManager.RunningTaskInfo info) {
- }
- @Override
- public void onTaskInfoChanged(ActivityManager.RunningTaskInfo info) {
- }
- @Override
- public void onBackPressedOnTaskRoot(ActivityManager.RunningTaskInfo taskInfo) {
- }
}
- static class TestSplitOrganizer extends ITaskOrganizer.Stub {
+ static class TestSplitOrganizer extends WindowOrganizerTests.StubOrganizer {
final ActivityTaskManagerService mService;
Task mPrimary;
Task mSecondary;
@@ -1332,22 +1316,7 @@
public void setMoveToSecondaryOnEnter(boolean move) {
mMoveToSecondaryOnEnter = move;
}
- @Override
- public void addStartingWindow(StartingWindowInfo info, IBinder appToken) {
- }
- @Override
- public void removeStartingWindow(int taskId, SurfaceControl leash, Rect frame,
- boolean playRevealAnimation) {
- }
- @Override
- public void copySplashScreenView(int taskId) {
- }
- @Override
- public void onTaskAppeared(ActivityManager.RunningTaskInfo info, SurfaceControl leash) {
- }
- @Override
- public void onTaskVanished(ActivityManager.RunningTaskInfo info) {
- }
+
@Override
public void onTaskInfoChanged(ActivityManager.RunningTaskInfo info) {
if (mInSplit) {
@@ -1374,9 +1343,6 @@
}
});
}
- @Override
- public void onBackPressedOnTaskRoot(ActivityManager.RunningTaskInfo taskInfo) {
- }
}
static TestWindowToken createTestWindowToken(int type, DisplayContent dc) {
diff --git a/services/tests/wmtests/src/com/android/server/wm/WindowTokenTests.java b/services/tests/wmtests/src/com/android/server/wm/WindowTokenTests.java
index ed5f1d8..d048f1842 100644
--- a/services/tests/wmtests/src/com/android/server/wm/WindowTokenTests.java
+++ b/services/tests/wmtests/src/com/android/server/wm/WindowTokenTests.java
@@ -184,49 +184,28 @@
}
/**
- * Test that {@link WindowToken} constructor parameters is set with expectation.
- */
- @Test
- public void testWindowTokenConstructorValidity() {
- WindowToken token = new WindowToken(mDisplayContent.mWmService, mock(IBinder.class),
- TYPE_TOAST, true /* persistOnEmpty */, mDisplayContent,
- true /* ownerCanManageAppTokens */);
- assertFalse(token.mRoundedCornerOverlay);
- assertFalse(token.isFromClient());
-
- token = new WindowToken(mDisplayContent.mWmService, mock(IBinder.class), TYPE_TOAST,
- true /* persistOnEmpty */, mDisplayContent, true /* ownerCanManageAppTokens */,
- true /* roundedCornerOverlay */);
- assertTrue(token.mRoundedCornerOverlay);
- assertFalse(token.isFromClient());
-
- token = new WindowToken(mDisplayContent.mWmService, mock(IBinder.class), TYPE_TOAST,
- true /* persistOnEmpty */, mDisplayContent, true /* ownerCanManageAppTokens */,
- true /* roundedCornerOverlay */, true /* fromClientToken */, null /* options */);
- assertTrue(token.mRoundedCornerOverlay);
- assertTrue(token.isFromClient());
- }
-
- /**
* Test that {@link android.view.SurfaceControl} should not be created for the
* {@link WindowToken} which was created for {@link WindowContext} initially, the
* surface should be create after addWindow for this token.
*/
@Test
public void testSurfaceCreatedForWindowToken() {
- final WindowToken fromClientToken = new WindowToken(mDisplayContent.mWmService,
- mock(IBinder.class), TYPE_APPLICATION_OVERLAY, true /* persistOnEmpty */,
- mDisplayContent, true /* ownerCanManageAppTokens */,
- true /* roundedCornerOverlay */, true /* fromClientToken */, null /* options */);
+ final WindowToken fromClientToken = new WindowToken.Builder(mDisplayContent.mWmService,
+ mock(IBinder.class), TYPE_APPLICATION_OVERLAY)
+ .setDisplayContent(mDisplayContent)
+ .setFromClientToken(true)
+ .build();
+
assertNull(fromClientToken.mSurfaceControl);
createWindow(null, TYPE_APPLICATION_OVERLAY, fromClientToken, "window");
assertNotNull(fromClientToken.mSurfaceControl);
- final WindowToken nonClientToken = new WindowToken(mDisplayContent.mWmService,
- mock(IBinder.class), TYPE_TOAST, true /* persistOnEmpty */, mDisplayContent,
- true /* ownerCanManageAppTokens */, true /* roundedCornerOverlay */,
- false /* fromClientToken */, null /* options */);
+ final WindowToken nonClientToken = new WindowToken.Builder(mDisplayContent.mWmService,
+ mock(IBinder.class), TYPE_APPLICATION_OVERLAY)
+ .setDisplayContent(mDisplayContent)
+ .setFromClientToken(false)
+ .build();
assertNotNull(nonClientToken.mSurfaceControl);
}
@@ -237,18 +216,23 @@
.mSelectRootForWindowFunc;
spyOn(selectFunc);
- final WindowToken token1 = new WindowToken(mDisplayContent.mWmService, mock(IBinder.class),
- TYPE_STATUS_BAR, true /* persistOnEmpty */, mDisplayContent,
- true /* ownerCanManageAppTokens */, true /* roundedCornerOverlay */,
- false /* fromClientToken */, null /* options */);
+ final WindowToken token1 = new WindowToken.Builder(mDisplayContent.mWmService,
+ mock(IBinder.class), TYPE_STATUS_BAR)
+ .setDisplayContent(mDisplayContent)
+ .setPersistOnEmpty(true)
+ .setOwnerCanManageAppTokens(true)
+ .build();
verify(selectFunc).apply(token1.windowType, null);
final Bundle options = new Bundle();
- final WindowToken token2 = new WindowToken(mDisplayContent.mWmService, mock(IBinder.class),
- TYPE_STATUS_BAR, true /* persistOnEmpty */, mDisplayContent,
- true /* ownerCanManageAppTokens */, true /* roundedCornerOverlay */,
- false /* fromClientToken */, options /* options */);
+ final WindowToken token2 = new WindowToken.Builder(mDisplayContent.mWmService,
+ mock(IBinder.class), TYPE_STATUS_BAR)
+ .setDisplayContent(mDisplayContent)
+ .setPersistOnEmpty(true)
+ .setOwnerCanManageAppTokens(true)
+ .setOptions(options)
+ .build();
verify(selectFunc).apply(token2.windowType, options);
}
diff --git a/services/translation/java/com/android/server/translation/TranslationManagerService.java b/services/translation/java/com/android/server/translation/TranslationManagerService.java
index f132b49..6bba65d 100644
--- a/services/translation/java/com/android/server/translation/TranslationManagerService.java
+++ b/services/translation/java/com/android/server/translation/TranslationManagerService.java
@@ -185,23 +185,6 @@
}
@Override
- public void updateUiTranslationStateByTaskId(@UiTranslationState int state,
- TranslationSpec sourceSpec, TranslationSpec targetSpec, List<AutofillId> viewIds,
- int taskId, int userId) {
- // deprecated
- enforceCallerHasPermission(MANAGE_UI_TRANSLATION);
- synchronized (mLock) {
- final TranslationManagerServiceImpl service = getServiceForUserLocked(userId);
- if (service != null && (isDefaultServiceLocked(userId)
- || isCalledByServiceAppLocked(userId,
- "updateUiTranslationStateByTaskId"))) {
- service.updateUiTranslationStateLocked(state, sourceSpec, targetSpec, viewIds,
- taskId);
- }
- }
- }
-
- @Override
public void updateUiTranslationState(@UiTranslationState int state,
TranslationSpec sourceSpec, TranslationSpec targetSpec, List<AutofillId> viewIds,
IBinder token, int taskId, int userId) {
diff --git a/services/translation/java/com/android/server/translation/TranslationManagerServiceImpl.java b/services/translation/java/com/android/server/translation/TranslationManagerServiceImpl.java
index 2cd41ba..987100f 100644
--- a/services/translation/java/com/android/server/translation/TranslationManagerServiceImpl.java
+++ b/services/translation/java/com/android/server/translation/TranslationManagerServiceImpl.java
@@ -146,21 +146,6 @@
@GuardedBy("mLock")
public void updateUiTranslationStateLocked(@UiTranslationState int state,
TranslationSpec sourceSpec, TranslationSpec targetSpec, List<AutofillId> viewIds,
- int taskId) {
- // deprecated
- final ActivityTokens taskTopActivityTokens =
- mActivityTaskManagerInternal.getTopActivityForTask(taskId);
- if (taskTopActivityTokens == null) {
- Slog.w(TAG, "Unknown activity to query for update translation state.");
- return;
- }
- updateUiTranslationStateByActivityTokens(taskTopActivityTokens, state, sourceSpec,
- targetSpec, viewIds);
- }
-
- @GuardedBy("mLock")
- public void updateUiTranslationStateLocked(@UiTranslationState int state,
- TranslationSpec sourceSpec, TranslationSpec targetSpec, List<AutofillId> viewIds,
IBinder token, int taskId) {
// Get top activity for a given task id
final ActivityTokens taskTopActivityTokens =
@@ -171,16 +156,10 @@
+ "translation state for token=" + token + " taskId=" + taskId);
return;
}
- updateUiTranslationStateByActivityTokens(taskTopActivityTokens, state, sourceSpec,
- targetSpec, viewIds);
- }
-
- private void updateUiTranslationStateByActivityTokens(ActivityTokens tokens,
- @UiTranslationState int state, TranslationSpec sourceSpec, TranslationSpec targetSpec,
- List<AutofillId> viewIds) {
try {
- tokens.getApplicationThread().updateUiTranslationState(tokens.getActivityToken(), state,
- sourceSpec, targetSpec, viewIds);
+ taskTopActivityTokens.getApplicationThread().updateUiTranslationState(
+ taskTopActivityTokens.getActivityToken(), state, sourceSpec, targetSpec,
+ viewIds);
} catch (RemoteException e) {
Slog.w(TAG, "Update UiTranslationState fail: " + e);
}
diff --git a/services/uwb/java/com/android/server/uwb/UwbInjector.java b/services/uwb/java/com/android/server/uwb/UwbInjector.java
index 00c0aca..64f1da1 100644
--- a/services/uwb/java/com/android/server/uwb/UwbInjector.java
+++ b/services/uwb/java/com/android/server/uwb/UwbInjector.java
@@ -16,8 +16,13 @@
package com.android.server.uwb;
+import static android.Manifest.permission.UWB_RANGING;
+import static android.content.PermissionChecker.PERMISSION_GRANTED;
+
import android.annotation.NonNull;
+import android.content.AttributionSource;
import android.content.Context;
+import android.content.PermissionChecker;
import android.os.IBinder;
import android.os.ServiceManager;
import android.uwb.IUwbAdapter;
@@ -45,4 +50,34 @@
if (b == null) return null;
return IUwbAdapter.Stub.asInterface(b);
}
+
+ /**
+ * Throws security exception if the UWB_RANGING permission is not granted for the calling app.
+ *
+ * <p>Should be used in situations where the app op should not be noted.
+ */
+ public void enforceUwbRangingPermissionForPreflight(
+ @NonNull AttributionSource attributionSource) {
+ if (!attributionSource.checkCallingUid()) {
+ throw new SecurityException("Invalid attribution source " + attributionSource);
+ }
+ int permissionCheckResult = PermissionChecker.checkPermissionForPreflight(
+ mContext, UWB_RANGING, attributionSource);
+ if (permissionCheckResult != PERMISSION_GRANTED) {
+ throw new SecurityException("Caller does not hold UWB_RANGING permission");
+ }
+ }
+
+ /**
+ * Returns true if the UWB_RANGING permission is granted for the calling app.
+ *
+ * <p>Should be used in situations where data will be delivered and hence the app op should
+ * be noted.
+ */
+ public boolean checkUwbRangingPermissionForDataDelivery(
+ @NonNull AttributionSource attributionSource, @NonNull String message) {
+ int permissionCheckResult = PermissionChecker.checkPermissionForDataDelivery(
+ mContext, UWB_RANGING, -1, attributionSource, message);
+ return permissionCheckResult == PERMISSION_GRANTED;
+ }
}
diff --git a/services/uwb/java/com/android/server/uwb/UwbServiceImpl.java b/services/uwb/java/com/android/server/uwb/UwbServiceImpl.java
index 70bd20e..b0661fc 100644
--- a/services/uwb/java/com/android/server/uwb/UwbServiceImpl.java
+++ b/services/uwb/java/com/android/server/uwb/UwbServiceImpl.java
@@ -17,6 +17,7 @@
package com.android.server.uwb;
import android.annotation.NonNull;
+import android.content.AttributionSource;
import android.content.Context;
import android.os.IBinder;
import android.os.PersistableBundle;
@@ -60,13 +61,16 @@
* Access to these callbacks are synchronized.
*/
private class UwbRangingCallbacksWrapper extends IUwbRangingCallbacks.Stub
- implements IBinder.DeathRecipient{
+ implements IBinder.DeathRecipient {
+ private final AttributionSource mAttributionSource;
private final SessionHandle mSessionHandle;
private final IUwbRangingCallbacks mExternalCb;
private boolean mIsValid;
- UwbRangingCallbacksWrapper(@NonNull SessionHandle sessionHandle,
+ UwbRangingCallbacksWrapper(@NonNull AttributionSource attributionSource,
+ @NonNull SessionHandle sessionHandle,
@NonNull IUwbRangingCallbacks externalCb) {
+ mAttributionSource = attributionSource;
mSessionHandle = sessionHandle;
mExternalCb = externalCb;
mIsValid = true;
@@ -167,7 +171,12 @@
RangingReport rangingReport)
throws RemoteException {
if (!mIsValid) return;
- // TODO: Perform permission checks and noteOp.
+ if (!mUwbInjector.checkUwbRangingPermissionForDataDelivery(
+ mAttributionSource, "uwb ranging result")) {
+ Log.e(TAG, "Not delivering ranging result because of permission denial"
+ + mSessionHandle);
+ return;
+ }
mExternalCb.onRangingResult(sessionHandle, rangingReport);
}
@@ -229,60 +238,75 @@
mUwbInjector = uwbInjector;
}
+ private void enforceUwbPrivilegedPermission() {
+ mContext.enforceCallingOrSelfPermission(android.Manifest.permission.UWB_PRIVILEGED,
+ "UwbService");
+ }
+
@Override
public void registerAdapterStateCallbacks(IUwbAdapterStateCallbacks adapterStateCallbacks)
throws RemoteException {
+ enforceUwbPrivilegedPermission();
getVendorUwbAdapter().registerAdapterStateCallbacks(adapterStateCallbacks);
}
@Override
public void unregisterAdapterStateCallbacks(IUwbAdapterStateCallbacks adapterStateCallbacks)
throws RemoteException {
+ enforceUwbPrivilegedPermission();
getVendorUwbAdapter().unregisterAdapterStateCallbacks(adapterStateCallbacks);
}
@Override
public long getTimestampResolutionNanos() throws RemoteException {
+ enforceUwbPrivilegedPermission();
return getVendorUwbAdapter().getTimestampResolutionNanos();
}
@Override
public PersistableBundle getSpecificationInfo() throws RemoteException {
+ enforceUwbPrivilegedPermission();
return getVendorUwbAdapter().getSpecificationInfo();
}
@Override
- public void openRanging(SessionHandle sessionHandle, IUwbRangingCallbacks rangingCallbacks,
+ public void openRanging(AttributionSource attributionSource,
+ SessionHandle sessionHandle, IUwbRangingCallbacks rangingCallbacks,
PersistableBundle parameters) throws RemoteException {
+ enforceUwbPrivilegedPermission();
+ mUwbInjector.enforceUwbRangingPermissionForPreflight(attributionSource);
+
UwbRangingCallbacksWrapper wrapperCb =
- new UwbRangingCallbacksWrapper(sessionHandle, rangingCallbacks);
+ new UwbRangingCallbacksWrapper(attributionSource, sessionHandle, rangingCallbacks);
synchronized (mCallbacksMap) {
mCallbacksMap.put(sessionHandle, wrapperCb);
}
- getVendorUwbAdapter().openRanging(sessionHandle, wrapperCb, parameters);
+ getVendorUwbAdapter().openRanging(attributionSource, sessionHandle, wrapperCb, parameters);
}
@Override
public void startRanging(SessionHandle sessionHandle, PersistableBundle parameters)
throws RemoteException {
- // TODO: Perform permission checks.
+ enforceUwbPrivilegedPermission();
getVendorUwbAdapter().startRanging(sessionHandle, parameters);
}
@Override
public void reconfigureRanging(SessionHandle sessionHandle, PersistableBundle parameters)
throws RemoteException {
+ enforceUwbPrivilegedPermission();
getVendorUwbAdapter().reconfigureRanging(sessionHandle, parameters);
}
@Override
public void stopRanging(SessionHandle sessionHandle) throws RemoteException {
+ enforceUwbPrivilegedPermission();
getVendorUwbAdapter().stopRanging(sessionHandle);
}
@Override
public void closeRanging(SessionHandle sessionHandle) throws RemoteException {
+ enforceUwbPrivilegedPermission();
getVendorUwbAdapter().closeRanging(sessionHandle);
}
-
}
diff --git a/services/voiceinteraction/java/com/android/server/voiceinteraction/HotwordDetectionConnection.java b/services/voiceinteraction/java/com/android/server/voiceinteraction/HotwordDetectionConnection.java
index ba7aaab..d6ed98f 100644
--- a/services/voiceinteraction/java/com/android/server/voiceinteraction/HotwordDetectionConnection.java
+++ b/services/voiceinteraction/java/com/android/server/voiceinteraction/HotwordDetectionConnection.java
@@ -284,6 +284,114 @@
}
}
+ void triggerHardwareRecognitionEventForTestLocked(
+ SoundTrigger.KeyphraseRecognitionEvent event,
+ IHotwordRecognitionStatusCallback callback) {
+ if (DEBUG) {
+ Slog.d(TAG, "triggerHardwareRecognitionEventForTestLocked");
+ }
+ detectFromDspSourceForTest(event, callback);
+ }
+
+ private void detectFromDspSourceForTest(SoundTrigger.KeyphraseRecognitionEvent recognitionEvent,
+ IHotwordRecognitionStatusCallback externalCallback) {
+ if (DEBUG) {
+ Slog.d(TAG, "detectFromDspSourceForTest");
+ }
+
+ AudioRecord record = createFakeAudioRecord();
+ if (record == null) {
+ Slog.d(TAG, "Failed to create fake audio record");
+ return;
+ }
+
+ Pair<ParcelFileDescriptor, ParcelFileDescriptor> clientPipe = createPipe();
+ if (clientPipe == null) {
+ Slog.d(TAG, "Failed to create pipe");
+ return;
+ }
+ ParcelFileDescriptor audioSink = clientPipe.second;
+ ParcelFileDescriptor clientRead = clientPipe.first;
+
+ record.startRecording();
+
+ mAudioCopyExecutor.execute(() -> {
+ try (OutputStream fos =
+ new ParcelFileDescriptor.AutoCloseOutputStream(audioSink)) {
+
+ int remainToRead = 10240;
+ byte[] buffer = new byte[1024];
+ while (remainToRead > 0) {
+ int bytesRead = record.read(buffer, 0, 1024);
+ if (DEBUG) {
+ Slog.d(TAG, "bytesRead = " + bytesRead);
+ }
+ if (bytesRead <= 0) {
+ break;
+ }
+ if (bytesRead > 8) {
+ System.arraycopy(new byte[] {'h', 'o', 't', 'w', 'o', 'r', 'd', '!'}, 0,
+ buffer, 0, 8);
+ }
+
+ fos.write(buffer, 0, bytesRead);
+ remainToRead -= bytesRead;
+ }
+ } catch (IOException e) {
+ Slog.w(TAG, "Failed supplying audio data to validator", e);
+ }
+ });
+
+ Runnable cancellingJob = () -> {
+ Slog.d(TAG, "Timeout for getting callback from HotwordDetectionService");
+ record.stop();
+ record.release();
+ bestEffortClose(audioSink);
+ bestEffortClose(clientRead);
+ };
+
+ ScheduledFuture<?> cancelingFuture =
+ mScheduledExecutorService.schedule(
+ cancellingJob, VALIDATION_TIMEOUT_MILLIS, TimeUnit.MILLISECONDS);
+
+ IDspHotwordDetectionCallback internalCallback = new IDspHotwordDetectionCallback.Stub() {
+ @Override
+ public void onDetected(HotwordDetectedResult result) throws RemoteException {
+ if (DEBUG) {
+ Slog.d(TAG, "onDetected");
+ }
+ cancelingFuture.cancel(true);
+ record.stop();
+ record.release();
+ bestEffortClose(audioSink);
+ bestEffortClose(clientRead);
+
+ externalCallback.onKeyphraseDetected(recognitionEvent);
+ }
+
+ @Override
+ public void onRejected(HotwordRejectedResult result) throws RemoteException {
+ if (DEBUG) {
+ Slog.d(TAG, "onRejected");
+ }
+ cancelingFuture.cancel(true);
+ record.stop();
+ record.release();
+ bestEffortClose(audioSink);
+ bestEffortClose(clientRead);
+
+ externalCallback.onRejected(result);
+ }
+ };
+
+ mRemoteHotwordDetectionService.run(
+ service -> service.detectFromDspSource(
+ clientRead,
+ recognitionEvent.getCaptureFormat(),
+ VALIDATION_TIMEOUT_MILLIS,
+ internalCallback));
+ }
+
private void detectFromDspSource(SoundTrigger.KeyphraseRecognitionEvent recognitionEvent,
IHotwordRecognitionStatusCallback externalCallback) {
if (DEBUG) {
@@ -470,6 +578,37 @@
}
}
+ @Nullable
+ private AudioRecord createFakeAudioRecord() {
+ if (DEBUG) {
+ Slog.i(TAG, "#createFakeAudioRecord");
+ }
+ try {
+ AudioRecord audioRecord = new AudioRecord.Builder()
+ .setAudioFormat(new AudioFormat.Builder()
+ .setSampleRate(32000)
+ .setEncoding(AudioFormat.ENCODING_PCM_16BIT)
+ .setChannelMask(AudioFormat.CHANNEL_IN_MONO).build())
+ .setAudioAttributes(new AudioAttributes.Builder()
+ .setInternalCapturePreset(MediaRecorder.AudioSource.HOTWORD).build())
+ .setBufferSizeInBytes(
+ AudioRecord.getMinBufferSize(32000,
+ AudioFormat.CHANNEL_IN_MONO,
+ AudioFormat.ENCODING_PCM_16BIT) * 2)
+ .build();
+
+ if (audioRecord.getState() != AudioRecord.STATE_INITIALIZED) {
+ Slog.w(TAG, "Failed to initialize AudioRecord");
+ audioRecord.release();
+ return null;
+ }
+ return audioRecord;
+ } catch (IllegalArgumentException e) {
+ Slog.e(TAG, "Failed to create AudioRecord", e);
+ }
+ return null;
+ }
+
/**
* Returns the number of bytes required to store {@code bufferLengthSeconds} of audio sampled at
* {@code sampleRate} Hz, using the format returned by DSP audio capture.
diff --git a/services/voiceinteraction/java/com/android/server/voiceinteraction/VoiceInteractionManagerService.java b/services/voiceinteraction/java/com/android/server/voiceinteraction/VoiceInteractionManagerService.java
index 9aded89..92cfe49 100644
--- a/services/voiceinteraction/java/com/android/server/voiceinteraction/VoiceInteractionManagerService.java
+++ b/services/voiceinteraction/java/com/android/server/voiceinteraction/VoiceInteractionManagerService.java
@@ -1130,6 +1130,29 @@
}
}
+ @Override
+ public void triggerHardwareRecognitionEventForTest(
+ SoundTrigger.KeyphraseRecognitionEvent event,
+ IHotwordRecognitionStatusCallback callback)
+ throws RemoteException {
+ enforceCallingPermission(Manifest.permission.RECORD_AUDIO);
+ enforceCallingPermission(Manifest.permission.CAPTURE_AUDIO_HOTWORD);
+ synchronized (this) {
+ enforceIsCurrentVoiceInteractionService();
+
+ if (mImpl == null) {
+ Slog.w(TAG, "triggerHardwareRecognitionEventForTest without running"
+ + " voice interaction service");
+ return;
+ }
+ final long caller = Binder.clearCallingIdentity();
+ try {
+ mImpl.triggerHardwareRecognitionEventForTestLocked(event, callback);
+ } finally {
+ Binder.restoreCallingIdentity(caller);
+ }
+ }
+ }
//----------------- Model management APIs --------------------------------//
@Override
diff --git a/services/voiceinteraction/java/com/android/server/voiceinteraction/VoiceInteractionManagerServiceImpl.java b/services/voiceinteraction/java/com/android/server/voiceinteraction/VoiceInteractionManagerServiceImpl.java
index 6922ccc..0552841 100644
--- a/services/voiceinteraction/java/com/android/server/voiceinteraction/VoiceInteractionManagerServiceImpl.java
+++ b/services/voiceinteraction/java/com/android/server/voiceinteraction/VoiceInteractionManagerServiceImpl.java
@@ -40,6 +40,7 @@
import android.content.pm.PackageManager;
import android.content.pm.ServiceInfo;
import android.hardware.soundtrigger.IRecognitionStatusCallback;
+import android.hardware.soundtrigger.SoundTrigger;
import android.media.AudioFormat;
import android.os.Bundle;
import android.os.Handler;
@@ -493,6 +494,20 @@
mHotwordDetectionConnection.stopListening();
}
+ public void triggerHardwareRecognitionEventForTestLocked(
+ SoundTrigger.KeyphraseRecognitionEvent event,
+ IHotwordRecognitionStatusCallback callback) {
+ if (DEBUG) {
+ Slog.d(TAG, "triggerHardwareRecognitionEventForTestLocked");
+ }
+ if (mHotwordDetectionConnection == null) {
+ Slog.w(TAG, "triggerHardwareRecognitionEventForTestLocked() called but connection"
+ + " isn't established");
+ return;
+ }
+ mHotwordDetectionConnection.triggerHardwareRecognitionEventForTestLocked(event, callback);
+ }
+
public IRecognitionStatusCallback createSoundTriggerCallbackLocked(
IHotwordRecognitionStatusCallback callback) {
if (DEBUG) {
diff --git a/telephony/common/com/android/internal/telephony/TelephonyPermissions.java b/telephony/common/com/android/internal/telephony/TelephonyPermissions.java
index d250297..d361db2 100644
--- a/telephony/common/com/android/internal/telephony/TelephonyPermissions.java
+++ b/telephony/common/com/android/internal/telephony/TelephonyPermissions.java
@@ -482,64 +482,25 @@
public static boolean checkReadPhoneNumber(
Context context, int subId, int pid, int uid,
String callingPackage, @Nullable String callingFeatureId, String message) {
- // First, check if the SDK version is below R
- boolean preR = false;
- try {
- ApplicationInfo info = context.getPackageManager().getApplicationInfoAsUser(
- callingPackage, 0, UserHandle.getUserHandleForUid(Binder.getCallingUid()));
- preR = info.targetSdkVersion <= Build.VERSION_CODES.Q;
- } catch (PackageManager.NameNotFoundException nameNotFoundException) {
- }
- if (preR) {
- // SDK < R allows READ_PHONE_STATE, READ_PRIVILEGED_PHONE_STATE, or carrier privilege
- try {
- return checkReadPhoneState(
- context, subId, pid, uid, callingPackage, callingFeatureId, message);
- } catch (SecurityException readPhoneStateException) {
- }
- } else {
- // SDK >= R allows READ_PRIVILEGED_PHONE_STATE or carrier privilege
- try {
- context.enforcePermission(
- android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE, pid, uid, message);
- // Skip checking for runtime permission since caller has privileged permission
- return true;
- } catch (SecurityException readPrivilegedPhoneStateException) {
- if (SubscriptionManager.isValidSubscriptionId(subId)) {
- try {
- enforceCarrierPrivilege(context, subId, uid, message);
- // Skip checking for runtime permission since caller has carrier privilege
- return true;
- } catch (SecurityException carrierPrivilegeException) {
- }
- }
- }
- }
-
- // Default SMS app can always read it.
- AppOpsManager appOps = (AppOpsManager) context.getSystemService(Context.APP_OPS_SERVICE);
- if (appOps.noteOp(AppOpsManager.OPSTR_WRITE_SMS, uid, callingPackage, callingFeatureId,
- null) == AppOpsManager.MODE_ALLOWED) {
+ LegacyPermissionManager permissionManager = (LegacyPermissionManager)
+ context.getSystemService(Context.LEGACY_PERMISSION_SERVICE);
+ // Apps with target SDK version < R can have the READ_PHONE_STATE permission granted with
+ // the appop denied. If PERMISSION_GRANTED is not received then check if the caller has
+ // carrier privileges; if not and the permission result is MODE_IGNORED then return false
+ // to return null data to the caller.
+ int permissionResult = permissionManager.checkPhoneNumberAccess(callingPackage, message,
+ callingFeatureId, pid, uid);
+ if (permissionResult == PackageManager.PERMISSION_GRANTED) {
return true;
}
- // Can be read with READ_SMS too.
- try {
- context.enforcePermission(android.Manifest.permission.READ_SMS, pid, uid, message);
- if (appOps.noteOp(AppOpsManager.OPSTR_READ_SMS, uid, callingPackage,
- callingFeatureId, null) == AppOpsManager.MODE_ALLOWED) {
+ if (SubscriptionManager.isValidSubscriptionId(subId)) {
+ if (TelephonyPermissions.getCarrierPrivilegeStatus(context, subId, uid)
+ == TelephonyManager.CARRIER_PRIVILEGE_STATUS_HAS_ACCESS) {
return true;
}
- } catch (SecurityException readSmsSecurityException) {
}
- // Can be read with READ_PHONE_NUMBERS too.
- try {
- context.enforcePermission(android.Manifest.permission.READ_PHONE_NUMBERS, pid, uid,
- message);
- if (appOps.noteOp(AppOpsManager.OPSTR_READ_PHONE_NUMBERS, uid, callingPackage,
- callingFeatureId, null) == AppOpsManager.MODE_ALLOWED) {
- return true;
- }
- } catch (SecurityException readPhoneNumberSecurityException) {
+ if (permissionResult == AppOpsManager.MODE_IGNORED) {
+ return false;
}
throw new SecurityException(message + ": Neither user " + uid
diff --git a/telephony/java/android/telephony/CarrierBandwidth.java b/telephony/java/android/telephony/CarrierBandwidth.java
deleted file mode 100644
index 9e1dee0..0000000
--- a/telephony/java/android/telephony/CarrierBandwidth.java
+++ /dev/null
@@ -1,226 +0,0 @@
-/*
- * Copyright (C) 2020 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package android.telephony;
-
-import android.annotation.NonNull;
-import android.annotation.Nullable;
-import android.annotation.RequiresFeature;
-import android.annotation.SystemApi;
-import android.os.Parcel;
-import android.os.Parcelable;
-
-import java.util.Objects;
-
-/**
- * Defines downlink and uplink capacity of a network in kbps
- * @hide
- */
-@SystemApi
-public final class CarrierBandwidth implements Parcelable {
- /**
- * Any field that is not reported shall be set to INVALID
- */
- public static final int INVALID = -1;
-
- /**
- * Estimated downlink capacity in kbps of the primary carrier.
- * This bandwidth estimate shall be the estimated maximum sustainable link bandwidth.
- * This will be {@link #INVALID} if the network is not connected
- */
- private int mPrimaryDownlinkCapacityKbps;
-
- /**
- * Estimated uplink capacity in kbps of the primary carrier.
- * This bandwidth estimate shall be the estimated maximum sustainable link bandwidth.
- * This will be {@link #INVALID} if the network is not connected
- */
- private int mPrimaryUplinkCapacityKbps;
-
- /**
- * Estimated downlink capacity in kbps of the secondary carrier in a dual connected network.
- * This bandwidth estimate shall be the estimated maximum sustainable link bandwidth.
- * This will be {@link #INVALID} if the network is not connected
- */
- private int mSecondaryDownlinkCapacityKbps;
-
- /**
- * Estimated uplink capacity in kbps of the secondary carrier in a dual connected network.
- * This bandwidth estimate shall be the estimated maximum sustainable link bandwidth.
- * This will be {@link #INVALID} if the network is not connected
- */
- private int mSecondaryUplinkCapacityKbps;
-
- /** @hide **/
- public CarrierBandwidth(Parcel in) {
- mPrimaryDownlinkCapacityKbps = in.readInt();
- mPrimaryUplinkCapacityKbps = in.readInt();
- mSecondaryDownlinkCapacityKbps = in.readInt();
- mSecondaryUplinkCapacityKbps = in.readInt();
- }
-
- /** @hide **/
- public CarrierBandwidth() {
- mPrimaryDownlinkCapacityKbps = INVALID;
- mPrimaryUplinkCapacityKbps = INVALID;
- mSecondaryDownlinkCapacityKbps = INVALID;
- mSecondaryUplinkCapacityKbps = INVALID;
- }
-
- /**
- * Constructor.
- *
- * @param primaryDownlinkCapacityKbps Estimated downlink capacity in kbps of
- * the primary carrier.
- * @param primaryUplinkCapacityKbps Estimated uplink capacity in kbps of
- * the primary carrier.
- * @param secondaryDownlinkCapacityKbps Estimated downlink capacity in kbps of
- * the secondary carrier
- * @param secondaryUplinkCapacityKbps Estimated uplink capacity in kbps of
- * the secondary carrier
- */
- public CarrierBandwidth(int primaryDownlinkCapacityKbps, int primaryUplinkCapacityKbps,
- int secondaryDownlinkCapacityKbps, int secondaryUplinkCapacityKbps) {
- mPrimaryDownlinkCapacityKbps = primaryDownlinkCapacityKbps;
- mPrimaryUplinkCapacityKbps = primaryUplinkCapacityKbps;
- mSecondaryDownlinkCapacityKbps = secondaryDownlinkCapacityKbps;
- mSecondaryUplinkCapacityKbps = secondaryUplinkCapacityKbps;
- }
-
- /**
- * Retrieves the upstream bandwidth for the primary network in kbps. This always only refers to
- * the estimated first hop transport bandwidth.
- * This will be {@link #INVALID} if the network is not connected
- *
- * @return The estimated first hop upstream (device to network) bandwidth.
- */
- public int getPrimaryDownlinkCapacityKbps() {
- return mPrimaryDownlinkCapacityKbps;
- }
-
- /**
- * Retrieves the downstream bandwidth for the primary network in kbps. This always only refers
- * to the estimated first hop transport bandwidth.
- * This will be {@link #INVALID} if the network is not connected
- *
- * @return The estimated first hop downstream (network to device) bandwidth.
- */
- public int getPrimaryUplinkCapacityKbps() {
- return mPrimaryUplinkCapacityKbps;
- }
-
- /**
- * Retrieves the upstream bandwidth for the secondary network in kbps. This always only refers
- * to the estimated first hop transport bandwidth.
- * <p/>
- * This will be {@link #INVALID} if either are the case:
- * <ol>
- * <li>The network is not connected</li>
- * <li>The device does not support
- * {@link android.telephony.TelephonyManager#CAPABILITY_SECONDARY_LINK_BANDWIDTH_VISIBLE}.</li>
- * </ol>
- *
- * @return The estimated first hop upstream (device to network) bandwidth.
- */
- @RequiresFeature(
- enforcement = "android.telephony.TelephonyManager#isRadioInterfaceCapabilitySupported",
- value = TelephonyManager.CAPABILITY_SECONDARY_LINK_BANDWIDTH_VISIBLE)
- public int getSecondaryDownlinkCapacityKbps() {
- return mSecondaryDownlinkCapacityKbps;
- }
-
- /**
- * Retrieves the downstream bandwidth for the secondary network in kbps. This always only
- * refers to the estimated first hop transport bandwidth.
- * <p/>
- * This will be {@link #INVALID} if either are the case:
- * <ol>
- * <li>The network is not connected</li>
- * <li>The device does not support
- * {@link android.telephony.TelephonyManager#CAPABILITY_SECONDARY_LINK_BANDWIDTH_VISIBLE}.</li>
- * </ol>
- * @return The estimated first hop downstream (network to device) bandwidth.
- */
- @RequiresFeature(
- enforcement = "android.telephony.TelephonyManager#isRadioInterfaceCapabilitySupported",
- value = TelephonyManager.CAPABILITY_SECONDARY_LINK_BANDWIDTH_VISIBLE)
- public int getSecondaryUplinkCapacityKbps() {
- return mSecondaryUplinkCapacityKbps;
- }
-
- @NonNull
- @Override
- public String toString() {
- return "CarrierBandwidth: {primaryDownlinkCapacityKbps=" + mPrimaryDownlinkCapacityKbps
- + " primaryUplinkCapacityKbps=" + mPrimaryUplinkCapacityKbps
- + " secondaryDownlinkCapacityKbps=" + mSecondaryDownlinkCapacityKbps
- + " secondaryUplinkCapacityKbps=" + mSecondaryUplinkCapacityKbps
- + "}";
- }
-
- @Override
- public int hashCode() {
- return Objects.hash(
- mPrimaryDownlinkCapacityKbps,
- mPrimaryUplinkCapacityKbps,
- mSecondaryDownlinkCapacityKbps,
- mSecondaryUplinkCapacityKbps);
- }
-
- @Override
- public boolean equals(@Nullable Object o) {
- if (o == null || !(o instanceof CallQuality) || hashCode() != o.hashCode()) {
- return false;
- }
- if (this == o) {
- return true;
- }
- CarrierBandwidth s = (CarrierBandwidth) o;
- return (mPrimaryDownlinkCapacityKbps == s.mPrimaryDownlinkCapacityKbps
- && mPrimaryUplinkCapacityKbps == s.mPrimaryUplinkCapacityKbps
- && mSecondaryDownlinkCapacityKbps == s.mSecondaryDownlinkCapacityKbps
- && mSecondaryDownlinkCapacityKbps == s.mSecondaryDownlinkCapacityKbps);
- }
-
- /**
- * {@link Parcelable#describeContents}
- */
- public int describeContents() {
- return 0;
- }
-
- /**
- * {@link Parcelable#writeToParcel}
- * @hide
- */
- public void writeToParcel(Parcel dest, int flags) {
- dest.writeInt(mPrimaryDownlinkCapacityKbps);
- dest.writeInt(mPrimaryUplinkCapacityKbps);
- dest.writeInt(mSecondaryDownlinkCapacityKbps);
- dest.writeInt(mSecondaryUplinkCapacityKbps);
- }
-
- public static final @android.annotation.NonNull Parcelable.Creator<CarrierBandwidth> CREATOR =
- new Parcelable.Creator() {
- public CarrierBandwidth createFromParcel(Parcel in) {
- return new CarrierBandwidth(in);
- }
-
- public CarrierBandwidth[] newArray(int size) {
- return new CarrierBandwidth[size];
- }
- };
-}
diff --git a/telephony/java/android/telephony/CarrierConfigManager.java b/telephony/java/android/telephony/CarrierConfigManager.java
index b914972..8b9fc0f 100644
--- a/telephony/java/android/telephony/CarrierConfigManager.java
+++ b/telephony/java/android/telephony/CarrierConfigManager.java
@@ -4216,7 +4216,6 @@
* it will override the framework default.
* @hide
*/
- @SystemApi
public static final String KEY_PUBLISH_SERVICE_DESC_FEATURE_TAG_MAP_OVERRIDE_STRING_ARRAY =
KEY_PREFIX + "publish_service_desc_feature_tag_map_override_string_array";
diff --git a/telephony/java/android/telephony/data/TrafficDescriptor.java b/telephony/java/android/telephony/data/TrafficDescriptor.java
index f400a5e..2178fc1 100644
--- a/telephony/java/android/telephony/data/TrafficDescriptor.java
+++ b/telephony/java/android/telephony/data/TrafficDescriptor.java
@@ -125,7 +125,6 @@
* .build();
* </code></pre>
*
- * @hide
*/
public static final class Builder {
private String mDnn = null;
diff --git a/telephony/java/android/telephony/ims/SipDelegateImsConfiguration.java b/telephony/java/android/telephony/ims/SipDelegateImsConfiguration.java
index 8762b6a..0d63f7b 100644
--- a/telephony/java/android/telephony/ims/SipDelegateImsConfiguration.java
+++ b/telephony/java/android/telephony/ims/SipDelegateImsConfiguration.java
@@ -501,6 +501,10 @@
* {@link SipMessage} was using the latest configuration during creation and not a stale
* configuration due to race conditions between the configuration being updated and the RCS
* application not receiving the updated configuration before generating a new message.
+ * <p>
+ * The version number should be a positive number that starts at 0 and increments sequentially
+ * as new {@link SipDelegateImsConfiguration} instances are created to update the IMS
+ * configuration state.
*
* @return the version number associated with this {@link SipDelegateImsConfiguration}.
*/
diff --git a/tests/net/TEST_MAPPING b/tests/net/TEST_MAPPING
index d659688..502f885 100644
--- a/tests/net/TEST_MAPPING
+++ b/tests/net/TEST_MAPPING
@@ -28,7 +28,7 @@
],
"imports": [
{
- "path": "cts/tests/tests/net"
+ "path": "packages/modules/Connectivity"
}
]
}
\ No newline at end of file
diff --git a/tests/net/common/java/ParseExceptionTest.kt b/tests/net/common/java/ParseExceptionTest.kt
index f17715a..b702d61 100644
--- a/tests/net/common/java/ParseExceptionTest.kt
+++ b/tests/net/common/java/ParseExceptionTest.kt
@@ -15,16 +15,22 @@
*/
import android.net.ParseException
+import android.os.Build
import androidx.test.ext.junit.runners.AndroidJUnit4
import androidx.test.filters.SmallTest
+import com.android.testutils.DevSdkIgnoreRule
import junit.framework.Assert.assertEquals
import junit.framework.Assert.assertNull
+import org.junit.Rule
import org.junit.Test
import org.junit.runner.RunWith
@SmallTest
@RunWith(AndroidJUnit4::class)
class ParseExceptionTest {
+ @get:Rule
+ val ignoreRule = DevSdkIgnoreRule(ignoreClassUpTo = Build.VERSION_CODES.R)
+
@Test
fun testConstructor_WithCause() {
val testMessage = "Test message"
diff --git a/tests/net/java/com/android/server/ConnectivityServiceTest.java b/tests/net/java/com/android/server/ConnectivityServiceTest.java
index 7ebed39..23e782f 100644
--- a/tests/net/java/com/android/server/ConnectivityServiceTest.java
+++ b/tests/net/java/com/android/server/ConnectivityServiceTest.java
@@ -10409,12 +10409,15 @@
return UidRange.createForUser(UserHandle.of(userId));
}
- private void mockGetApplicationInfo(@NonNull final String packageName, @NonNull final int uid)
- throws Exception {
+ private void mockGetApplicationInfo(@NonNull final String packageName, @NonNull final int uid) {
final ApplicationInfo applicationInfo = new ApplicationInfo();
applicationInfo.uid = uid;
- when(mPackageManager.getApplicationInfo(eq(packageName), anyInt()))
- .thenReturn(applicationInfo);
+ try {
+ when(mPackageManager.getApplicationInfo(eq(packageName), anyInt()))
+ .thenReturn(applicationInfo);
+ } catch (Exception e) {
+ fail(e.getMessage());
+ }
}
private void mockGetApplicationInfoThrowsNameNotFound(@NonNull final String packageName)
@@ -10435,8 +10438,7 @@
}
private OemNetworkPreferences createDefaultOemNetworkPreferences(
- @OemNetworkPreferences.OemNetworkPreference final int preference)
- throws Exception {
+ @OemNetworkPreferences.OemNetworkPreference final int preference) {
// Arrange PackageManager mocks
mockGetApplicationInfo(TEST_PACKAGE_NAME, TEST_PACKAGE_UID);
@@ -10913,11 +10915,13 @@
mDone.complete(new Object());
}
- void expectOnComplete() throws Exception {
+ void expectOnComplete() {
try {
mDone.get(TIMEOUT_MS, TimeUnit.MILLISECONDS);
} catch (TimeoutException e) {
fail("Expected onComplete() not received after " + TIMEOUT_MS + " ms");
+ } catch (Exception e) {
+ fail(e.getMessage());
}
}
@@ -12648,4 +12652,72 @@
expected,
() -> mCm.registerNetworkCallback(getRequestWithSubIds(), new NetworkCallback()));
}
+
+ /**
+ * Validate request counts are counted accurately on setProfileNetworkPreference on set/replace.
+ */
+ @Test
+ public void testProfileNetworkPrefCountsRequestsCorrectlyOnSet() throws Exception {
+ final UserHandle testHandle = setupEnterpriseNetwork();
+ testRequestCountLimits(() -> {
+ // Set initially to test the limit prior to having existing requests.
+ final TestOnCompleteListener listener = new TestOnCompleteListener();
+ mCm.setProfileNetworkPreference(testHandle, PROFILE_NETWORK_PREFERENCE_ENTERPRISE,
+ Runnable::run, listener);
+ listener.expectOnComplete();
+
+ // re-set so as to test the limit as part of replacing existing requests.
+ mCm.setProfileNetworkPreference(testHandle, PROFILE_NETWORK_PREFERENCE_ENTERPRISE,
+ Runnable::run, listener);
+ listener.expectOnComplete();
+ });
+ }
+
+ /**
+ * Validate request counts are counted accurately on setOemNetworkPreference on set/replace.
+ */
+ @Test
+ public void testSetOemNetworkPreferenceCountsRequestsCorrectlyOnSet() throws Exception {
+ mockHasSystemFeature(PackageManager.FEATURE_AUTOMOTIVE, true);
+ @OemNetworkPreferences.OemNetworkPreference final int networkPref =
+ OEM_NETWORK_PREFERENCE_OEM_PRIVATE_ONLY;
+ testRequestCountLimits(() -> {
+ // Set initially to test the limit prior to having existing requests.
+ final TestOemListenerCallback listener = new TestOemListenerCallback();
+ mService.setOemNetworkPreference(
+ createDefaultOemNetworkPreferences(networkPref), listener);
+ listener.expectOnComplete();
+
+ // re-set so as to test the limit as part of replacing existing requests.
+ mService.setOemNetworkPreference(
+ createDefaultOemNetworkPreferences(networkPref), listener);
+ listener.expectOnComplete();
+ });
+ }
+
+ private void testRequestCountLimits(@NonNull final Runnable r) throws Exception {
+ final ArraySet<TestNetworkCallback> callbacks = new ArraySet<>();
+ try {
+ final int requestCount = mService.mSystemNetworkRequestCounter
+ .mUidToNetworkRequestCount.get(Process.myUid());
+ // The limit is hit when total requests <= limit.
+ final int maxCount =
+ ConnectivityService.MAX_NETWORK_REQUESTS_PER_SYSTEM_UID - requestCount;
+ // Need permission so registerDefaultNetworkCallback uses mSystemNetworkRequestCounter
+ withPermission(NetworkStack.PERMISSION_MAINLINE_NETWORK_STACK, () -> {
+ for (int i = 1; i < maxCount - 1; i++) {
+ final TestNetworkCallback cb = new TestNetworkCallback();
+ mCm.registerDefaultNetworkCallback(cb);
+ callbacks.add(cb);
+ }
+
+ // Code to run to check if it triggers a max request count limit error.
+ r.run();
+ });
+ } finally {
+ for (final TestNetworkCallback cb : callbacks) {
+ mCm.unregisterNetworkCallback(cb);
+ }
+ }
+ }
}
diff --git a/tests/net/java/com/android/server/net/NetworkStatsServiceTest.java b/tests/net/java/com/android/server/net/NetworkStatsServiceTest.java
index eeeb4fb..0ab4d2b 100644
--- a/tests/net/java/com/android/server/net/NetworkStatsServiceTest.java
+++ b/tests/net/java/com/android/server/net/NetworkStatsServiceTest.java
@@ -67,6 +67,7 @@
import static org.mockito.ArgumentMatchers.anyLong;
import static org.mockito.ArgumentMatchers.anyString;
import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.reset;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
@@ -88,8 +89,8 @@
import android.net.NetworkStats;
import android.net.NetworkStatsHistory;
import android.net.NetworkTemplate;
-import android.net.UnderlyingNetworkInfo;
import android.net.TelephonyNetworkSpecifier;
+import android.net.UnderlyingNetworkInfo;
import android.net.netstats.provider.INetworkStatsProviderCallback;
import android.os.ConditionVariable;
import android.os.Handler;
@@ -165,9 +166,9 @@
private long mElapsedRealtime;
- private BroadcastInterceptingContext mServiceContext;
private File mStatsDir;
-
+ private MockContext mServiceContext;
+ private @Mock TelephonyManager mTelephonyManager;
private @Mock INetworkManagementService mNetManager;
private @Mock NetworkStatsFactory mStatsFactory;
private @Mock NetworkStatsSettings mSettings;
@@ -183,19 +184,32 @@
private ContentObserver mContentObserver;
private Handler mHandler;
+ private class MockContext extends BroadcastInterceptingContext {
+ private final Context mBaseContext;
+
+ MockContext(Context base) {
+ super(base);
+ mBaseContext = base;
+ }
+
+ @Override
+ public Object getSystemService(String name) {
+ if (Context.TELEPHONY_SERVICE.equals(name)) return mTelephonyManager;
+ return mBaseContext.getSystemService(name);
+ }
+ }
+
private final Clock mClock = new SimpleClock(ZoneOffset.UTC) {
@Override
public long millis() {
return currentTimeMillis();
}
};
-
@Before
public void setUp() throws Exception {
MockitoAnnotations.initMocks(this);
final Context context = InstrumentationRegistry.getContext();
-
- mServiceContext = new BroadcastInterceptingContext(context);
+ mServiceContext = new MockContext(context);
mStatsDir = context.getFilesDir();
if (mStatsDir.exists()) {
IoUtils.deleteContents(mStatsDir);
@@ -217,7 +231,6 @@
expectDefaultSettings();
expectNetworkStatsUidDetail(buildEmptyStats());
expectSystemReady();
-
mService.systemReady();
// Verify that system ready fetches realtime stats
verify(mStatsFactory).readNetworkStatsDetail(UID_ALL, INTERFACES_ALL, TAG_ALL);
@@ -228,6 +241,9 @@
verify(mNetworkStatsSubscriptionsMonitor).start();
reset(mNetworkStatsSubscriptionsMonitor);
+ doReturn(TelephonyManager.CARRIER_PRIVILEGE_STATUS_HAS_ACCESS).when(mTelephonyManager)
+ .checkCarrierPrivilegesForPackageAnyPhone(anyString());
+
mSession = mService.openSession();
assertNotNull("openSession() failed", mSession);