From ab29a7c832b4c2be69fadeab7557e218902a6fcb Mon Sep 17 00:00:00 2001
From: Marek Habersack <grendel@twistedcode.net>
Date: Thu, 26 Jan 2023 20:59:06 +0100
Subject: [PATCH 1/5] [monodroid] Prevent overlapped decompression of embedded
 assemblies (#7732)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Fixes: https://github.com/xamarin/xamarin-android/issues/7335

Context: d236af54538ef1fe62d0125798cdde78e46dcd8e

Commit d236af54 introduced embedded assembly compression, using LZ4,
which speeds up startup and reduces final package size.

Assemblies are compressed at build time and, at the same time, pre-
allocated buffers for the **decompressed** data are allocated in
`libxamarin-app.so`.  The buffers are then passed to the LZ4 APIs,
all threads using the same output buffer.  The assumption was that we
can do fine without locking as even if overlapped decompression
happens, the output data will be the same and so even if two threads
do the same thing at the same time, the data will be valid at all
times, so long as at least one thread completes the decompression.

This assumption proved to be **largely** true, but it appears that in
high concurrency cases it is possible that the data in the
decompression buffer differs.  This can result in app crashes:

	A/libc: Fatal signal 6 (SIGABRT), code -1 (SI_QUEUE) in tid 3092 (.NET ThreadPool), pid 2727 (myapp.name)
	A/DEBUG: pid: 2727, tid: 3092, name: .NET ThreadPool  >>> myapp.name <<<
	A/DEBUG:       #01 pc 0000000000029b1c  /data/app/myapp.name-B9t_3dF9i8mDxJEKodZw5w==/split_config.arm64_v8a.apk!libmono-android.release.so (offset 0x103d000) (xamarin::android::internal::MonodroidRuntime::mono_log_handler(char const*, char const*, char const*, int, void*)+144) (BuildId: 29c5a3805a0bedee1eede9b6668d7c676aa63371)
	A/DEBUG:       #02 pc 00000000002680bc  /data/app/myapp.name-B9t_3dF9i8mDxJEKodZw5w==/split_config.arm64_v8a.apk!libmonosgen-2.0.so (offset 0x109b000) (BuildId: 4a5dd4396e8816b7f69881838bd549285213d53b)
	A/DEBUG:       #03 pc 00000000002681e8  /data/app/myapp.name-B9t_3dF9i8mDxJEKodZw5w==/split_config.arm64_v8a.apk!libmonosgen-2.0.so (offset 0x109b000) (BuildId: 4a5dd4396e8816b7f69881838bd549285213d53b)
	A/DEBUG:       #04 pc 000000000008555c  /data/app/myapp.name-B9t_3dF9i8mDxJEKodZw5w==/split_config.arm64_v8a.apk!libmonosgen-2.0.so (offset 0x109b000) (mono_metadata_string_heap+188) (BuildId: 4a5dd4396e8816b7f69881838bd549285213d53b)
	…

My guess is that LZ4 either uses the output buffer as a scratchpad
area when decompressing or that it initializes/modifies the buffer
before writing actual data in it.  With overlapped decompression, it
may lead to one thread overwriting valid data previously written by
another thread, so that when the latter returns the buffer it thought
to have had valid data may contain certain bytes temporarily
overwritten by the decompression session in the other, still running,
thread.  It may happen that MonoVM reads the corrupted data just when
it is still invalid (before the still running decompression session
actually writes the valid data), a classic race condition.

To fix this, the decompression block is now protected with a startup-
aware mutex.  Mutex will be held only after the initial startup phase
is completed, so there should not be much loss of startup performance.
---
 src/monodroid/jni/embedded-assemblies.cc | 42 ++++++++++++------------
 src/monodroid/jni/embedded-assemblies.hh |  8 +++--
 2 files changed, 26 insertions(+), 24 deletions(-)

diff --git a/src/monodroid/jni/embedded-assemblies.cc b/src/monodroid/jni/embedded-assemblies.cc
index 0c4e0bf6986..2eade547dfd 100644
--- a/src/monodroid/jni/embedded-assemblies.cc
+++ b/src/monodroid/jni/embedded-assemblies.cc
@@ -35,6 +35,7 @@
 #include "mono-image-loader.hh"
 #include "xamarin-app.hh"
 #include "cpp-util.hh"
+#include "monodroid-glue-internal.hh"
 #include "startup-aware-lock.hh"
 #include "timing-internal.hh"
 #include "search.hh"
@@ -73,6 +74,13 @@ void EmbeddedAssemblies::set_assemblies_prefix (const char *prefix)
 	assemblies_prefix_override = prefix != nullptr ? utils.strdup_new (prefix) : nullptr;
 }
 
+force_inline void
+EmbeddedAssemblies::set_assembly_data_and_size (uint8_t* source_assembly_data, uint32_t source_assembly_data_size, uint8_t*& dest_assembly_data, uint32_t& dest_assembly_data_size) noexcept
+{
+	dest_assembly_data = source_assembly_data;
+	dest_assembly_data_size = source_assembly_data_size;
+}
+
 force_inline void
 EmbeddedAssemblies::get_assembly_data (uint8_t *data, uint32_t data_size, [[maybe_unused]] const char *name, uint8_t*& assembly_data, uint32_t& assembly_data_size) noexcept
 {
@@ -91,17 +99,18 @@ EmbeddedAssemblies::get_assembly_data (uint8_t *data, uint32_t data_size, [[mayb
 		CompressedAssemblyDescriptor &cad = compressed_assemblies.descriptors[header->descriptor_index];
 		assembly_data_size = data_size - sizeof(CompressedAssemblyHeader);
 		if (!cad.loaded) {
+			StartupAwareLock decompress_lock (assembly_decompress_mutex);
+
+			if (cad.loaded) {
+				set_assembly_data_and_size (reinterpret_cast<uint8_t*>(cad.data), cad.uncompressed_file_size, assembly_data, assembly_data_size);
+				return;
+			}
+
 			if (XA_UNLIKELY (cad.data == nullptr)) {
 				log_fatal (LOG_ASSEMBLY, "Invalid compressed assembly descriptor at %u: no data", header->descriptor_index);
 				exit (FATAL_EXIT_MISSING_ASSEMBLY);
 			}
 
-			bool log_timing = FastTiming::enabled () && !FastTiming::is_bare_mode ();
-			size_t decompress_time_index;
-			if (XA_UNLIKELY (log_timing)) {
-				decompress_time_index = internal_timing->start_event (TimingEventKind::AssemblyDecompression);
-			}
-
 			if (header->uncompressed_length != cad.uncompressed_file_size) {
 				if (header->uncompressed_length > cad.uncompressed_file_size) {
 					log_fatal (LOG_ASSEMBLY, "Compressed assembly '%s' is larger than when the application was built (expected at most %u, got %u). Assemblies don't grow just like that!", name, cad.uncompressed_file_size, header->uncompressed_length);
@@ -115,11 +124,6 @@ EmbeddedAssemblies::get_assembly_data (uint8_t *data, uint32_t data_size, [[mayb
 			const char *data_start = reinterpret_cast<const char*>(data + sizeof(CompressedAssemblyHeader));
 			int ret = LZ4_decompress_safe (data_start, reinterpret_cast<char*>(cad.data), static_cast<int>(assembly_data_size), static_cast<int>(cad.uncompressed_file_size));
 
-			if (XA_UNLIKELY (log_timing)) {
-				internal_timing->end_event (decompress_time_index, true /* uses_more_info */);
-				internal_timing->add_more_info (decompress_time_index, name);
-			}
-
 			if (ret < 0) {
 				log_fatal (LOG_ASSEMBLY, "Decompression of assembly %s failed with code %d", name, ret);
 				exit (FATAL_EXIT_MISSING_ASSEMBLY);
@@ -131,13 +135,12 @@ EmbeddedAssemblies::get_assembly_data (uint8_t *data, uint32_t data_size, [[mayb
 			}
 			cad.loaded = true;
 		}
-		assembly_data = reinterpret_cast<uint8_t*>(cad.data);
-		assembly_data_size = cad.uncompressed_file_size;
+
+		set_assembly_data_and_size (reinterpret_cast<uint8_t*>(cad.data), cad.uncompressed_file_size, assembly_data, assembly_data_size);
 	} else
 #endif
 	{
-		assembly_data = data;
-		assembly_data_size = data_size;
+		set_assembly_data_and_size (data, data_size, assembly_data, assembly_data_size);
 	}
 }
 
@@ -357,10 +360,6 @@ EmbeddedAssemblies::assembly_store_open_from_bundles (dynamic_local_string<SENSI
 		len -= sizeof(SharedConstants::DLL_EXTENSION) - 1;
 	}
 
-	std::string clipped_name;
-	clipped_name.assign (name.get (), len);
-	log_info (LOG_ASSEMBLY, "Clipped name: %s", clipped_name.c_str ());
-
 	hash_t name_hash = xxhash::hash (name.get (), len);
 	log_debug (LOG_ASSEMBLY, "assembly_store_open_from_bundles: looking for bundled name: '%s' (hash 0x%zx)", name.get (), name_hash);
 
@@ -412,14 +411,15 @@ EmbeddedAssemblies::assembly_store_open_from_bundles (dynamic_local_string<SENSI
 
 		log_debug (
 			LOG_ASSEMBLY,
-			"Mapped: image_data == %p; debug_info_data == %p; config_data == %p; descriptor == %p; data size == %u; debug data size == %u; config data size == %u",
+			"Mapped: image_data == %p; debug_info_data == %p; config_data == %p; descriptor == %p; data size == %u; debug data size == %u; config data size == %u; name == '%s'",
 			assembly_runtime_info.image_data,
 			assembly_runtime_info.debug_info_data,
 			assembly_runtime_info.config_data,
 			assembly_runtime_info.descriptor,
 			assembly_runtime_info.descriptor->data_size,
 			assembly_runtime_info.descriptor->debug_data_size,
-			assembly_runtime_info.descriptor->config_data_size
+			assembly_runtime_info.descriptor->config_data_size,
+			name.get ()
 		);
 	}
 
diff --git a/src/monodroid/jni/embedded-assemblies.hh b/src/monodroid/jni/embedded-assemblies.hh
index 58f12334e49..4b4c3324dae 100644
--- a/src/monodroid/jni/embedded-assemblies.hh
+++ b/src/monodroid/jni/embedded-assemblies.hh
@@ -223,9 +223,10 @@ namespace xamarin::android::internal {
 #else // def NET
 		static MonoAssembly* open_from_bundles_refonly (MonoAssemblyName *aname, char **assemblies_path, void *user_data);
 #endif // ndef NET
-		static void get_assembly_data (uint8_t *data, uint32_t data_size, const char *name, uint8_t*& assembly_data, uint32_t& assembly_data_size) noexcept;
-		static void get_assembly_data (XamarinAndroidBundledAssembly const& e, uint8_t*& assembly_data, uint32_t& assembly_data_size) noexcept;
-		static void get_assembly_data (AssemblyStoreSingleAssemblyRuntimeData const& e, uint8_t*& assembly_data, uint32_t& assembly_data_size) noexcept;
+		void set_assembly_data_and_size (uint8_t* source_assembly_data, uint32_t source_assembly_data_size, uint8_t*& dest_assembly_data, uint32_t& dest_assembly_data_size) noexcept;
+		void get_assembly_data (uint8_t *data, uint32_t data_size, const char *name, uint8_t*& assembly_data, uint32_t& assembly_data_size) noexcept;
+		void get_assembly_data (XamarinAndroidBundledAssembly const& e, uint8_t*& assembly_data, uint32_t& assembly_data_size) noexcept;
+		void get_assembly_data (AssemblyStoreSingleAssemblyRuntimeData const& e, uint8_t*& assembly_data, uint32_t& assembly_data_size) noexcept;
 
 		void zip_load_entries (int fd, const char *apk_name, monodroid_should_register should_register);
 		void zip_load_individual_assembly_entries (std::vector<uint8_t> const& buf, uint32_t num_entries, monodroid_should_register should_register, ZipEntryLoadState &state) noexcept;
@@ -333,6 +334,7 @@ namespace xamarin::android::internal {
 
 		AssemblyStoreHeader *index_assembly_store_header = nullptr;
 		AssemblyStoreHashEntry             *assembly_store_hashes;
+		std::mutex             assembly_decompress_mutex;
 	};
 }
 

From 1ccf99b183b50d12ea3fe8e85e9eff425804287d Mon Sep 17 00:00:00 2001
From: Marek Habersack <grendel@twistedcode.net>
Date: Tue, 21 Feb 2023 22:31:43 +0100
Subject: [PATCH 2/5] Update apkdesc files

---
 .../BuildReleaseArm64SimpleDotNet.apkdesc     | 26 +++----
 .../BuildReleaseArm64XFormsDotNet.apkdesc     | 78 +++++++++----------
 2 files changed, 52 insertions(+), 52 deletions(-)

diff --git a/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.ProjectTools/Resources/Base/BuildReleaseArm64SimpleDotNet.apkdesc b/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.ProjectTools/Resources/Base/BuildReleaseArm64SimpleDotNet.apkdesc
index e17a9ccf73c..b22d39befc8 100644
--- a/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.ProjectTools/Resources/Base/BuildReleaseArm64SimpleDotNet.apkdesc
+++ b/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.ProjectTools/Resources/Base/BuildReleaseArm64SimpleDotNet.apkdesc
@@ -5,49 +5,49 @@
       "Size": 3032
     },
     "assemblies/Java.Interop.dll": {
-      "Size": 58991
+      "Size": 58989
     },
     "assemblies/Mono.Android.dll": {
-      "Size": 88024
+      "Size": 88029
     },
     "assemblies/rc.bin": {
       "Size": 1182
     },
     "assemblies/System.Console.dll": {
-      "Size": 6527
+      "Size": 6525
     },
     "assemblies/System.Linq.dll": {
-      "Size": 9223
+      "Size": 9224
     },
     "assemblies/System.Private.CoreLib.dll": {
-      "Size": 464288
+      "Size": 464285
     },
     "assemblies/System.Runtime.dll": {
-      "Size": 2346
+      "Size": 2348
     },
     "assemblies/System.Runtime.InteropServices.dll": {
-      "Size": 2234
+      "Size": 2232
     },
     "assemblies/UnnamedProject.dll": {
-      "Size": 3631
+      "Size": 3628
     },
     "classes.dex": {
       "Size": 368636
     },
     "lib/arm64-v8a/libmonodroid.so": {
-      "Size": 427328
+      "Size": 371888
     },
     "lib/arm64-v8a/libmonosgen-2.0.so": {
-      "Size": 3074520
+      "Size": 3075360
     },
     "lib/arm64-v8a/libSystem.IO.Compression.Native.so": {
       "Size": 723840
     },
     "lib/arm64-v8a/libSystem.Native.so": {
-      "Size": 93704
+      "Size": 93768
     },
     "lib/arm64-v8a/libSystem.Security.Cryptography.Native.Android.so": {
-      "Size": 148696
+      "Size": 151624
     },
     "lib/arm64-v8a/libxamarin-app.so": {
       "Size": 9680
@@ -86,5 +86,5 @@
       "Size": 1904
     }
   },
-  "PackageSize": 2639930
+  "PackageSize": 2627642
 }
\ No newline at end of file
diff --git a/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.ProjectTools/Resources/Base/BuildReleaseArm64XFormsDotNet.apkdesc b/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.ProjectTools/Resources/Base/BuildReleaseArm64XFormsDotNet.apkdesc
index 31edae4256c..a02e838931a 100644
--- a/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.ProjectTools/Resources/Base/BuildReleaseArm64XFormsDotNet.apkdesc
+++ b/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.ProjectTools/Resources/Base/BuildReleaseArm64XFormsDotNet.apkdesc
@@ -8,16 +8,16 @@
       "Size": 7114
     },
     "assemblies/Java.Interop.dll": {
-      "Size": 66845
+      "Size": 66840
     },
     "assemblies/Mono.Android.dll": {
-      "Size": 445336
+      "Size": 445342
     },
     "assemblies/mscorlib.dll": {
-      "Size": 3829
+      "Size": 3830
     },
     "assemblies/netstandard.dll": {
-      "Size": 5546
+      "Size": 5550
     },
     "assemblies/rc.bin": {
       "Size": 1182
@@ -26,7 +26,7 @@
       "Size": 10612
     },
     "assemblies/System.Collections.dll": {
-      "Size": 15447
+      "Size": 15446
     },
     "assemblies/System.Collections.NonGeneric.dll": {
       "Size": 7597
@@ -35,97 +35,97 @@
       "Size": 2118
     },
     "assemblies/System.ComponentModel.Primitives.dll": {
-      "Size": 2614
+      "Size": 2615
     },
     "assemblies/System.ComponentModel.TypeConverter.dll": {
-      "Size": 6168
+      "Size": 6169
     },
     "assemblies/System.Console.dll": {
-      "Size": 6693
+      "Size": 6690
     },
     "assemblies/System.Core.dll": {
-      "Size": 1953
+      "Size": 1956
     },
     "assemblies/System.Diagnostics.TraceSource.dll": {
-      "Size": 6712
+      "Size": 6708
     },
     "assemblies/System.dll": {
-      "Size": 2309
+      "Size": 2312
     },
     "assemblies/System.Drawing.dll": {
-      "Size": 1991
+      "Size": 1993
     },
     "assemblies/System.Drawing.Primitives.dll": {
       "Size": 12129
     },
     "assemblies/System.IO.Compression.dll": {
-      "Size": 16760
+      "Size": 16759
     },
     "assemblies/System.IO.IsolatedStorage.dll": {
-      "Size": 10114
+      "Size": 10111
     },
     "assemblies/System.Linq.dll": {
-      "Size": 19286
+      "Size": 19288
     },
     "assemblies/System.Linq.Expressions.dll": {
-      "Size": 164020
+      "Size": 164017
     },
     "assemblies/System.Net.Http.dll": {
-      "Size": 66971
+      "Size": 66969
     },
     "assemblies/System.Net.Primitives.dll": {
-      "Size": 21981
+      "Size": 21983
     },
     "assemblies/System.Net.Requests.dll": {
-      "Size": 3716
+      "Size": 3715
     },
     "assemblies/System.ObjectModel.dll": {
-      "Size": 8137
+      "Size": 8139
     },
     "assemblies/System.Private.CoreLib.dll": {
-      "Size": 772506
+      "Size": 772515
     },
     "assemblies/System.Private.DataContractSerialization.dll": {
-      "Size": 192495
+      "Size": 192548
     },
     "assemblies/System.Private.Uri.dll": {
-      "Size": 42378
+      "Size": 42377
     },
     "assemblies/System.Private.Xml.dll": {
-      "Size": 215549
+      "Size": 215543
     },
     "assemblies/System.Private.Xml.Linq.dll": {
       "Size": 16806
     },
     "assemblies/System.Runtime.dll": {
-      "Size": 2545
+      "Size": 2548
     },
     "assemblies/System.Runtime.InteropServices.dll": {
-      "Size": 2234
+      "Size": 2232
     },
     "assemblies/System.Runtime.Serialization.dll": {
-      "Size": 1917
+      "Size": 1918
     },
     "assemblies/System.Runtime.Serialization.Formatters.dll": {
-      "Size": 2647
+      "Size": 2646
     },
     "assemblies/System.Runtime.Serialization.Primitives.dll": {
-      "Size": 3819
+      "Size": 3820
     },
     "assemblies/System.Security.Cryptography.dll": {
-      "Size": 7913
+      "Size": 7915
     },
     "assemblies/System.Text.RegularExpressions.dll": {
-      "Size": 154174
+      "Size": 154283
     },
     "assemblies/System.Xml.dll": {
-      "Size": 1805
+      "Size": 1806
     },
     "assemblies/System.Xml.Linq.dll": {
-      "Size": 1827
+      "Size": 1828
     },
     "assemblies/UnnamedProject.dll": {
-      "Size": 117372
+      "Size": 117371
     },
     "assemblies/Xamarin.AndroidX.Activity.dll": {
       "Size": 5872
@@ -197,19 +197,19 @@
       "Size": 3480884
     },
     "lib/arm64-v8a/libmonodroid.so": {
-      "Size": 427328
+      "Size": 371888
     },
     "lib/arm64-v8a/libmonosgen-2.0.so": {
-      "Size": 3074520
+      "Size": 3075360
     },
     "lib/arm64-v8a/libSystem.IO.Compression.Native.so": {
       "Size": 723840
     },
     "lib/arm64-v8a/libSystem.Native.so": {
-      "Size": 93704
+      "Size": 93768
     },
     "lib/arm64-v8a/libSystem.Security.Cryptography.Native.Android.so": {
-      "Size": 148696
+      "Size": 151624
     },
     "lib/arm64-v8a/libxamarin-app.so": {
       "Size": 99272
@@ -1967,5 +1967,5 @@
       "Size": 341228
     }
   },
-  "PackageSize": 7991796
+  "PackageSize": 7975412
 }
\ No newline at end of file

From fa19dfa3ddd637e56df38231a9d3113de1e0f887 Mon Sep 17 00:00:00 2001
From: Marek Habersack <grendel@twistedcode.net>
Date: Wed, 22 Feb 2023 15:19:45 +0100
Subject: [PATCH 3/5] Update apkdesc files again, this time from Windows

---
 .../Resources/Base/BuildReleaseArm64SimpleDotNet.apkdesc  | 8 ++++----
 .../Resources/Base/BuildReleaseArm64XFormsDotNet.apkdesc  | 8 ++++----
 2 files changed, 8 insertions(+), 8 deletions(-)

diff --git a/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.ProjectTools/Resources/Base/BuildReleaseArm64SimpleDotNet.apkdesc b/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.ProjectTools/Resources/Base/BuildReleaseArm64SimpleDotNet.apkdesc
index b22d39befc8..decfcaa704f 100644
--- a/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.ProjectTools/Resources/Base/BuildReleaseArm64SimpleDotNet.apkdesc
+++ b/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.ProjectTools/Resources/Base/BuildReleaseArm64SimpleDotNet.apkdesc
@@ -8,7 +8,7 @@
       "Size": 58989
     },
     "assemblies/Mono.Android.dll": {
-      "Size": 88029
+      "Size": 88025
     },
     "assemblies/rc.bin": {
       "Size": 1182
@@ -29,13 +29,13 @@
       "Size": 2232
     },
     "assemblies/UnnamedProject.dll": {
-      "Size": 3628
+      "Size": 3622
     },
     "classes.dex": {
       "Size": 368636
     },
     "lib/arm64-v8a/libmonodroid.so": {
-      "Size": 371888
+      "Size": 371504
     },
     "lib/arm64-v8a/libmonosgen-2.0.so": {
       "Size": 3075360
@@ -62,7 +62,7 @@
       "Size": 2560
     },
     "res/drawable-hdpi-v4/icon.png": {
-      "Size": 4762
+      "Size": 4791
     },
     "res/drawable-mdpi-v4/icon.png": {
       "Size": 2200
diff --git a/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.ProjectTools/Resources/Base/BuildReleaseArm64XFormsDotNet.apkdesc b/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.ProjectTools/Resources/Base/BuildReleaseArm64XFormsDotNet.apkdesc
index a02e838931a..a314ae5a4cf 100644
--- a/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.ProjectTools/Resources/Base/BuildReleaseArm64XFormsDotNet.apkdesc
+++ b/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.ProjectTools/Resources/Base/BuildReleaseArm64XFormsDotNet.apkdesc
@@ -11,7 +11,7 @@
       "Size": 66840
     },
     "assemblies/Mono.Android.dll": {
-      "Size": 445342
+      "Size": 445269
     },
     "assemblies/mscorlib.dll": {
       "Size": 3830
@@ -125,7 +125,7 @@
       "Size": 1828
     },
     "assemblies/UnnamedProject.dll": {
-      "Size": 117371
+      "Size": 117367
     },
     "assemblies/Xamarin.AndroidX.Activity.dll": {
       "Size": 5872
@@ -197,7 +197,7 @@
       "Size": 3480884
     },
     "lib/arm64-v8a/libmonodroid.so": {
-      "Size": 371888
+      "Size": 371504
     },
     "lib/arm64-v8a/libmonosgen-2.0.so": {
       "Size": 3075360
@@ -779,7 +779,7 @@
       "Size": 470
     },
     "res/drawable-hdpi-v4/icon.png": {
-      "Size": 4762
+      "Size": 4791
     },
     "res/drawable-hdpi-v4/notification_bg_low_normal.9.png": {
       "Size": 212

From f9bbad2bd0c7da5bab285cadaeae1db26da7719f Mon Sep 17 00:00:00 2001
From: Marek Habersack <grendel@twistedcode.net>
Date: Fri, 24 Feb 2023 17:01:36 +0100
Subject: [PATCH 4/5] Update apkdesc

---
 .../Resources/Base/BuildReleaseArm64SimpleDotNet.apkdesc        | 2 +-
 .../Resources/Base/BuildReleaseArm64XFormsDotNet.apkdesc        | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.ProjectTools/Resources/Base/BuildReleaseArm64SimpleDotNet.apkdesc b/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.ProjectTools/Resources/Base/BuildReleaseArm64SimpleDotNet.apkdesc
index decfcaa704f..c549724ccc0 100644
--- a/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.ProjectTools/Resources/Base/BuildReleaseArm64SimpleDotNet.apkdesc
+++ b/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.ProjectTools/Resources/Base/BuildReleaseArm64SimpleDotNet.apkdesc
@@ -8,7 +8,7 @@
       "Size": 58989
     },
     "assemblies/Mono.Android.dll": {
-      "Size": 88025
+      "Size": 88028
     },
     "assemblies/rc.bin": {
       "Size": 1182
diff --git a/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.ProjectTools/Resources/Base/BuildReleaseArm64XFormsDotNet.apkdesc b/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.ProjectTools/Resources/Base/BuildReleaseArm64XFormsDotNet.apkdesc
index a314ae5a4cf..2e600072c87 100644
--- a/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.ProjectTools/Resources/Base/BuildReleaseArm64XFormsDotNet.apkdesc
+++ b/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.ProjectTools/Resources/Base/BuildReleaseArm64XFormsDotNet.apkdesc
@@ -11,7 +11,7 @@
       "Size": 66840
     },
     "assemblies/Mono.Android.dll": {
-      "Size": 445269
+      "Size": 445271
     },
     "assemblies/mscorlib.dll": {
       "Size": 3830

From 486b59a06494f02286787c93728a9b70fb27c162 Mon Sep 17 00:00:00 2001
From: Marek Habersack <grendel@twistedcode.net>
Date: Fri, 24 Feb 2023 19:16:45 +0100
Subject: [PATCH 5/5] Update apkdesc files

---
 .../BuildReleaseArm64SimpleLegacy.apkdesc     |  26 +-
 .../BuildReleaseArm64XFormsLegacy.apkdesc     | 938 +++++++++---------
 2 files changed, 482 insertions(+), 482 deletions(-)

diff --git a/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.ProjectTools/Resources/Base/BuildReleaseArm64SimpleLegacy.apkdesc b/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.ProjectTools/Resources/Base/BuildReleaseArm64SimpleLegacy.apkdesc
index ac323f1cebb..a4baf81e8cb 100644
--- a/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.ProjectTools/Resources/Base/BuildReleaseArm64SimpleLegacy.apkdesc
+++ b/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.ProjectTools/Resources/Base/BuildReleaseArm64SimpleLegacy.apkdesc
@@ -5,43 +5,43 @@
       "Size": 2604
     },
     "assemblies/Java.Interop.dll": {
-      "Size": 68921
+      "Size": 69019
     },
     "assemblies/Mono.Android.dll": {
-      "Size": 259883
+      "Size": 264177
     },
     "assemblies/mscorlib.dll": {
-      "Size": 769017
+      "Size": 769014
     },
     "assemblies/System.Core.dll": {
-      "Size": 28199
+      "Size": 28190
     },
     "assemblies/System.dll": {
-      "Size": 9179
+      "Size": 9178
     },
     "assemblies/UnnamedProject.dll": {
-      "Size": 2877
+      "Size": 2873
     },
     "classes.dex": {
-      "Size": 362940
+      "Size": 370828
     },
     "lib/arm64-v8a/libmono-btls-shared.so": {
       "Size": 1613872
     },
+    "lib/arm64-v8a/libmonodroid.so": {
+      "Size": 277152
+    },
     "lib/arm64-v8a/libmono-native.so": {
       "Size": 750976
     },
-    "lib/arm64-v8a/libmonodroid.so": {
-      "Size": 332128
-    },
     "lib/arm64-v8a/libmonosgen-2.0.so": {
-      "Size": 4051864
+      "Size": 4039176
     },
     "lib/arm64-v8a/libxa-internal-api.so": {
       "Size": 66184
     },
     "lib/arm64-v8a/libxamarin-app.so": {
-      "Size": 20240
+      "Size": 20328
     },
     "META-INF/ANDROIDD.RSA": {
       "Size": 1213
@@ -74,5 +74,5 @@
       "Size": 1724
     }
   },
-  "PackageSize": 4028116
+  "PackageSize": 4015828
 }
\ No newline at end of file
diff --git a/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.ProjectTools/Resources/Base/BuildReleaseArm64XFormsLegacy.apkdesc b/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.ProjectTools/Resources/Base/BuildReleaseArm64XFormsLegacy.apkdesc
index 4498b397cca..91daeba683f 100644
--- a/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.ProjectTools/Resources/Base/BuildReleaseArm64XFormsLegacy.apkdesc
+++ b/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.ProjectTools/Resources/Base/BuildReleaseArm64XFormsLegacy.apkdesc
@@ -5,133 +5,133 @@
       "Size": 3140
     },
     "assemblies/FormsViewGroup.dll": {
-      "Size": 7215
+      "Size": 7207
     },
     "assemblies/Java.Interop.dll": {
-      "Size": 69945
+      "Size": 70053
     },
     "assemblies/Mono.Android.dll": {
-      "Size": 570605
+      "Size": 571692
     },
     "assemblies/Mono.Security.dll": {
-      "Size": 68433
+      "Size": 68430
     },
     "assemblies/mscorlib.dll": {
-      "Size": 915406
+      "Size": 915394
     },
     "assemblies/System.Core.dll": {
-      "Size": 164047
+      "Size": 164043
     },
     "assemblies/System.dll": {
-      "Size": 388864
+      "Size": 388861
     },
     "assemblies/System.Drawing.Common.dll": {
-      "Size": 12365
+      "Size": 12356
     },
     "assemblies/System.Net.Http.dll": {
       "Size": 110693
     },
     "assemblies/System.Numerics.dll": {
-      "Size": 15682
+      "Size": 15681
     },
     "assemblies/System.Runtime.Serialization.dll": {
-      "Size": 186660
+      "Size": 186653
     },
     "assemblies/System.ServiceModel.Internals.dll": {
-      "Size": 26593
+      "Size": 26586
     },
     "assemblies/System.Xml.dll": {
-      "Size": 395656
+      "Size": 395651
     },
     "assemblies/UnnamedProject.dll": {
-      "Size": 116896
+      "Size": 116889
     },
     "assemblies/Xamarin.AndroidX.Activity.dll": {
-      "Size": 7697
+      "Size": 7689
     },
     "assemblies/Xamarin.AndroidX.AppCompat.AppCompatResources.dll": {
-      "Size": 6648
+      "Size": 6640
     },
     "assemblies/Xamarin.AndroidX.AppCompat.dll": {
-      "Size": 125328
+      "Size": 125325
     },
     "assemblies/Xamarin.AndroidX.CardView.dll": {
-      "Size": 7367
+      "Size": 7357
     },
     "assemblies/Xamarin.AndroidX.CoordinatorLayout.dll": {
-      "Size": 18272
+      "Size": 18264
     },
     "assemblies/Xamarin.AndroidX.Core.dll": {
-      "Size": 131930
+      "Size": 131923
     },
     "assemblies/Xamarin.AndroidX.DrawerLayout.dll": {
-      "Size": 15426
+      "Size": 15421
     },
     "assemblies/Xamarin.AndroidX.Fragment.dll": {
-      "Size": 43135
+      "Size": 43130
     },
     "assemblies/Xamarin.AndroidX.Legacy.Support.Core.UI.dll": {
-      "Size": 6715
+      "Size": 6708
     },
     "assemblies/Xamarin.AndroidX.Lifecycle.Common.dll": {
-      "Size": 7062
+      "Size": 7055
     },
     "assemblies/Xamarin.AndroidX.Lifecycle.LiveData.Core.dll": {
-      "Size": 7194
+      "Size": 7186
     },
     "assemblies/Xamarin.AndroidX.Lifecycle.ViewModel.dll": {
-      "Size": 4873
+      "Size": 4861
     },
     "assemblies/Xamarin.AndroidX.Loader.dll": {
-      "Size": 13585
+      "Size": 13578
     },
     "assemblies/Xamarin.AndroidX.RecyclerView.dll": {
-      "Size": 102327
+      "Size": 102322
     },
     "assemblies/Xamarin.AndroidX.SavedState.dll": {
-      "Size": 6268
+      "Size": 6265
     },
     "assemblies/Xamarin.AndroidX.SwipeRefreshLayout.dll": {
-      "Size": 11272
+      "Size": 11261
     },
     "assemblies/Xamarin.AndroidX.ViewPager.dll": {
-      "Size": 19423
+      "Size": 19416
     },
     "assemblies/Xamarin.Forms.Core.dll": {
-      "Size": 524736
+      "Size": 524728
     },
     "assemblies/Xamarin.Forms.Platform.Android.dll": {
-      "Size": 384872
+      "Size": 384861
     },
     "assemblies/Xamarin.Forms.Platform.dll": {
       "Size": 56878
     },
     "assemblies/Xamarin.Forms.Xaml.dll": {
-      "Size": 55801
+      "Size": 55795
     },
     "assemblies/Xamarin.Google.Android.Material.dll": {
-      "Size": 43497
+      "Size": 43489
     },
     "classes.dex": {
-      "Size": 3475144
+      "Size": 3482812
     },
     "lib/arm64-v8a/libmono-btls-shared.so": {
       "Size": 1613872
     },
+    "lib/arm64-v8a/libmonodroid.so": {
+      "Size": 277152
+    },
     "lib/arm64-v8a/libmono-native.so": {
       "Size": 750976
     },
-    "lib/arm64-v8a/libmonodroid.so": {
-      "Size": 332128
-    },
     "lib/arm64-v8a/libmonosgen-2.0.so": {
-      "Size": 4051864
+      "Size": 4039176
     },
     "lib/arm64-v8a/libxa-internal-api.so": {
       "Size": 66184
     },
     "lib/arm64-v8a/libxamarin-app.so": {
-      "Size": 105288
+      "Size": 105376
     },
     "META-INF/android.support.design_material.version": {
       "Size": 12
@@ -145,10 +145,10 @@
     "META-INF/androidx.activity_activity.version": {
       "Size": 6
     },
-    "META-INF/androidx.appcompat_appcompat-resources.version": {
+    "META-INF/androidx.appcompat_appcompat.version": {
       "Size": 6
     },
-    "META-INF/androidx.appcompat_appcompat.version": {
+    "META-INF/androidx.appcompat_appcompat-resources.version": {
       "Size": 6
     },
     "META-INF/androidx.arch.core_core-runtime.version": {
@@ -196,10 +196,10 @@
     "META-INF/androidx.legacy_legacy-support-v4.version": {
       "Size": 6
     },
-    "META-INF/androidx.lifecycle_lifecycle-livedata-core.version": {
+    "META-INF/androidx.lifecycle_lifecycle-livedata.version": {
       "Size": 6
     },
-    "META-INF/androidx.lifecycle_lifecycle-livedata.version": {
+    "META-INF/androidx.lifecycle_lifecycle-livedata-core.version": {
       "Size": 6
     },
     "META-INF/androidx.lifecycle_lifecycle-runtime.version": {
@@ -235,10 +235,10 @@
     "META-INF/androidx.transition_transition.version": {
       "Size": 6
     },
-    "META-INF/androidx.vectordrawable_vectordrawable-animated.version": {
+    "META-INF/androidx.vectordrawable_vectordrawable.version": {
       "Size": 6
     },
-    "META-INF/androidx.vectordrawable_vectordrawable.version": {
+    "META-INF/androidx.vectordrawable_vectordrawable-animated.version": {
       "Size": 6
     },
     "META-INF/androidx.versionedparcelable_versionedparcelable.version": {
@@ -256,12 +256,6 @@
     "META-INF/proguard/androidx-annotations.pro": {
       "Size": 339
     },
-    "res/anim-v21/design_bottom_sheet_slide_in.xml": {
-      "Size": 616
-    },
-    "res/anim-v21/design_bottom_sheet_slide_out.xml": {
-      "Size": 616
-    },
     "res/anim/abc_fade_in.xml": {
       "Size": 388
     },
@@ -358,9 +352,6 @@
     "res/anim/exittoright.xml": {
       "Size": 468
     },
-    "res/animator-v21/design_appbar_state_list_animator.xml": {
-      "Size": 1216
-    },
     "res/animator/design_fab_hide_motion_spec.xml": {
       "Size": 796
     },
@@ -388,38 +379,14 @@
     "res/animator/mtrl_fab_transformation_sheet_expand_spec.xml": {
       "Size": 1888
     },
-    "res/color-v21/abc_btn_colored_borderless_text_material.xml": {
-      "Size": 464
-    },
-    "res/color-v23/abc_btn_colored_borderless_text_material.xml": {
-      "Size": 500
-    },
-    "res/color-v23/abc_btn_colored_text_material.xml": {
-      "Size": 500
-    },
-    "res/color-v23/abc_color_highlight_material.xml": {
-      "Size": 544
-    },
-    "res/color-v23/abc_tint_btn_checkable.xml": {
-      "Size": 624
-    },
-    "res/color-v23/abc_tint_default.xml": {
-      "Size": 1120
-    },
-    "res/color-v23/abc_tint_edittext.xml": {
-      "Size": 668
-    },
-    "res/color-v23/abc_tint_seek_thumb.xml": {
-      "Size": 500
-    },
-    "res/color-v23/abc_tint_spinner.xml": {
-      "Size": 668
+    "res/animator-v21/design_appbar_state_list_animator.xml": {
+      "Size": 1216
     },
-    "res/color-v23/abc_tint_switch_track.xml": {
-      "Size": 664
+    "res/anim-v21/design_bottom_sheet_slide_in.xml": {
+      "Size": 616
     },
-    "res/color-v23/design_tint_password_toggle.xml": {
-      "Size": 376
+    "res/anim-v21/design_bottom_sheet_slide_out.xml": {
+      "Size": 616
     },
     "res/color/abc_background_cache_hint_selector_material_dark.xml": {
       "Size": 468
@@ -523,10 +490,10 @@
     "res/color/mtrl_tabs_colored_ripple_color.xml": {
       "Size": 948
     },
-    "res/color/mtrl_tabs_icon_color_selector_colored.xml": {
+    "res/color/mtrl_tabs_icon_color_selector.xml": {
       "Size": 464
     },
-    "res/color/mtrl_tabs_icon_color_selector.xml": {
+    "res/color/mtrl_tabs_icon_color_selector_colored.xml": {
       "Size": 464
     },
     "res/color/mtrl_tabs_legacy_text_color_selector.xml": {
@@ -544,159 +511,375 @@
     "res/color/switch_thumb_material_light.xml": {
       "Size": 464
     },
-    "res/drawable-anydpi-v21/design_ic_visibility_off.xml": {
-      "Size": 1144
-    },
-    "res/drawable-anydpi-v21/design_ic_visibility.xml": {
-      "Size": 540
+    "res/color-v21/abc_btn_colored_borderless_text_material.xml": {
+      "Size": 464
     },
-    "res/drawable-hdpi-v4/abc_ab_share_pack_mtrl_alpha.9.png": {
-      "Size": 272
+    "res/color-v23/abc_btn_colored_borderless_text_material.xml": {
+      "Size": 500
     },
-    "res/drawable-hdpi-v4/abc_btn_check_to_on_mtrl_000.png": {
-      "Size": 227
+    "res/color-v23/abc_btn_colored_text_material.xml": {
+      "Size": 500
     },
-    "res/drawable-hdpi-v4/abc_btn_check_to_on_mtrl_015.png": {
-      "Size": 404
+    "res/color-v23/abc_color_highlight_material.xml": {
+      "Size": 544
     },
-    "res/drawable-hdpi-v4/abc_btn_radio_to_on_mtrl_000.png": {
-      "Size": 464
+    "res/color-v23/abc_tint_btn_checkable.xml": {
+      "Size": 624
     },
-    "res/drawable-hdpi-v4/abc_btn_radio_to_on_mtrl_015.png": {
-      "Size": 563
+    "res/color-v23/abc_tint_default.xml": {
+      "Size": 1120
     },
-    "res/drawable-hdpi-v4/abc_btn_switch_to_on_mtrl_00001.9.png": {
-      "Size": 1096
+    "res/color-v23/abc_tint_edittext.xml": {
+      "Size": 668
     },
-    "res/drawable-hdpi-v4/abc_btn_switch_to_on_mtrl_00012.9.png": {
-      "Size": 1243
+    "res/color-v23/abc_tint_seek_thumb.xml": {
+      "Size": 500
     },
-    "res/drawable-hdpi-v4/abc_cab_background_top_mtrl_alpha.9.png": {
-      "Size": 226
+    "res/color-v23/abc_tint_spinner.xml": {
+      "Size": 668
     },
-    "res/drawable-hdpi-v4/abc_ic_commit_search_api_mtrl_alpha.png": {
-      "Size": 171
+    "res/color-v23/abc_tint_switch_track.xml": {
+      "Size": 664
     },
-    "res/drawable-hdpi-v4/abc_ic_menu_copy_mtrl_am_alpha.png": {
-      "Size": 202
+    "res/color-v23/design_tint_password_toggle.xml": {
+      "Size": 376
     },
-    "res/drawable-hdpi-v4/abc_ic_menu_cut_mtrl_alpha.png": {
-      "Size": 404
+    "res/drawable/abc_btn_borderless_material.xml": {
+      "Size": 588
     },
-    "res/drawable-hdpi-v4/abc_ic_menu_paste_mtrl_am_alpha.png": {
-      "Size": 226
+    "res/drawable/abc_btn_check_material.xml": {
+      "Size": 464
     },
-    "res/drawable-hdpi-v4/abc_ic_menu_selectall_mtrl_alpha.png": {
-      "Size": 215
+    "res/drawable/abc_btn_check_material_anim.xml": {
+      "Size": 816
     },
-    "res/drawable-hdpi-v4/abc_ic_menu_share_mtrl_alpha.png": {
-      "Size": 389
+    "res/drawable/abc_btn_colored_material.xml": {
+      "Size": 344
     },
-    "res/drawable-hdpi-v4/abc_ic_star_black_16dp.png": {
-      "Size": 263
+    "res/drawable/abc_btn_default_mtrl_shape.xml": {
+      "Size": 932
     },
-    "res/drawable-hdpi-v4/abc_ic_star_black_36dp.png": {
-      "Size": 522
+    "res/drawable/abc_btn_radio_material.xml": {
+      "Size": 464
     },
-    "res/drawable-hdpi-v4/abc_ic_star_black_48dp.png": {
-      "Size": 668
+    "res/drawable/abc_btn_radio_material_anim.xml": {
+      "Size": 816
     },
-    "res/drawable-hdpi-v4/abc_ic_star_half_black_16dp.png": {
-      "Size": 197
+    "res/drawable/abc_cab_background_internal_bg.xml": {
+      "Size": 372
     },
-    "res/drawable-hdpi-v4/abc_ic_star_half_black_36dp.png": {
-      "Size": 328
+    "res/drawable/abc_cab_background_top_material.xml": {
+      "Size": 336
     },
-    "res/drawable-hdpi-v4/abc_ic_star_half_black_48dp.png": {
-      "Size": 431
+    "res/drawable/abc_dialog_material_background.xml": {
+      "Size": 716
     },
-    "res/drawable-hdpi-v4/abc_list_divider_mtrl_alpha.9.png": {
-      "Size": 167
+    "res/drawable/abc_edit_text_material.xml": {
+      "Size": 868
     },
-    "res/drawable-hdpi-v4/abc_list_focused_holo.9.png": {
-      "Size": 244
+    "res/drawable/abc_ic_ab_back_material.xml": {
+      "Size": 692
     },
-    "res/drawable-hdpi-v4/abc_list_longpressed_holo.9.png": {
-      "Size": 212
+    "res/drawable/abc_ic_arrow_drop_right_black_24dp.xml": {
+      "Size": 1000
     },
-    "res/drawable-hdpi-v4/abc_list_pressed_holo_dark.9.png": {
-      "Size": 208
+    "res/drawable/abc_ic_clear_material.xml": {
+      "Size": 684
     },
-    "res/drawable-hdpi-v4/abc_list_pressed_holo_light.9.png": {
-      "Size": 208
+    "res/drawable/abc_ic_go_search_api_material.xml": {
+      "Size": 640
     },
-    "res/drawable-hdpi-v4/abc_list_selector_disabled_holo_dark.9.png": {
-      "Size": 228
+    "res/drawable/abc_ic_menu_overflow_material.xml": {
+      "Size": 792
     },
-    "res/drawable-hdpi-v4/abc_list_selector_disabled_holo_light.9.png": {
-      "Size": 229
+    "res/drawable/abc_ic_search_api_material.xml": {
+      "Size": 812
     },
-    "res/drawable-hdpi-v4/abc_menu_hardkey_panel_mtrl_mult.9.png": {
-      "Size": 738
+    "res/drawable/abc_ic_voice_search_api_material.xml": {
+      "Size": 828
     },
-    "res/drawable-hdpi-v4/abc_popup_background_mtrl_mult.9.png": {
-      "Size": 1098
+    "res/drawable/abc_item_background_holo_dark.xml": {
+      "Size": 1012
     },
-    "res/drawable-hdpi-v4/abc_scrubber_control_off_mtrl_alpha.png": {
-      "Size": 201
+    "res/drawable/abc_item_background_holo_light.xml": {
+      "Size": 1012
     },
-    "res/drawable-hdpi-v4/abc_scrubber_control_to_pressed_mtrl_000.png": {
-      "Size": 196
+    "res/drawable/abc_list_divider_material.xml": {
+      "Size": 480
     },
-    "res/drawable-hdpi-v4/abc_scrubber_control_to_pressed_mtrl_005.png": {
-      "Size": 272
+    "res/drawable/abc_list_selector_background_transition_holo_dark.xml": {
+      "Size": 424
     },
-    "res/drawable-hdpi-v4/abc_scrubber_primary_mtrl_alpha.9.png": {
-      "Size": 205
+    "res/drawable/abc_list_selector_background_transition_holo_light.xml": {
+      "Size": 424
     },
-    "res/drawable-hdpi-v4/abc_scrubber_track_mtrl_alpha.9.png": {
-      "Size": 196
+    "res/drawable/abc_list_selector_holo_dark.xml": {
+      "Size": 1064
     },
-    "res/drawable-hdpi-v4/abc_spinner_mtrl_am_alpha.9.png": {
-      "Size": 345
+    "res/drawable/abc_list_selector_holo_light.xml": {
+      "Size": 1064
     },
-    "res/drawable-hdpi-v4/abc_switch_track_mtrl_alpha.9.png": {
-      "Size": 484
+    "res/drawable/abc_ratingbar_indicator_material.xml": {
+      "Size": 664
     },
-    "res/drawable-hdpi-v4/abc_tab_indicator_mtrl_alpha.9.png": {
-      "Size": 190
+    "res/drawable/abc_ratingbar_material.xml": {
+      "Size": 664
     },
-    "res/drawable-hdpi-v4/abc_text_select_handle_left_mtrl_dark.png": {
-      "Size": 278
+    "res/drawable/abc_ratingbar_small_material.xml": {
+      "Size": 664
     },
-    "res/drawable-hdpi-v4/abc_text_select_handle_left_mtrl_light.png": {
-      "Size": 278
+    "res/drawable/abc_seekbar_thumb_material.xml": {
+      "Size": 1100
     },
-    "res/drawable-hdpi-v4/abc_text_select_handle_middle_mtrl_dark.png": {
-      "Size": 398
+    "res/drawable/abc_seekbar_tick_mark_material.xml": {
+      "Size": 516
     },
-    "res/drawable-hdpi-v4/abc_text_select_handle_middle_mtrl_light.png": {
-      "Size": 396
+    "res/drawable/abc_seekbar_track_material.xml": {
+      "Size": 1408
     },
-    "res/drawable-hdpi-v4/abc_text_select_handle_right_mtrl_dark.png": {
-      "Size": 263
+    "res/drawable/abc_spinner_textfield_background_material.xml": {
+      "Size": 1160
     },
-    "res/drawable-hdpi-v4/abc_text_select_handle_right_mtrl_light.png": {
-      "Size": 262
+    "res/drawable/abc_switch_thumb_material.xml": {
+      "Size": 464
     },
-    "res/drawable-hdpi-v4/abc_textfield_activated_mtrl_alpha.9.png": {
-      "Size": 186
+    "res/drawable/abc_tab_indicator_material.xml": {
+      "Size": 468
     },
-    "res/drawable-hdpi-v4/abc_textfield_default_mtrl_alpha.9.png": {
-      "Size": 192
+    "res/drawable/abc_text_cursor_material.xml": {
+      "Size": 516
     },
-    "res/drawable-hdpi-v4/abc_textfield_search_activated_mtrl_alpha.9.png": {
-      "Size": 178
+    "res/drawable/abc_textfield_search_material.xml": {
+      "Size": 756
     },
-    "res/drawable-hdpi-v4/abc_textfield_search_default_mtrl_alpha.9.png": {
+    "res/drawable/abc_vector_test.xml": {
+      "Size": 612
+    },
+    "res/drawable/btn_checkbox_checked_mtrl.xml": {
+      "Size": 2688
+    },
+    "res/drawable/btn_checkbox_checked_to_unchecked_mtrl_animation.xml": {
+      "Size": 688
+    },
+    "res/drawable/btn_checkbox_unchecked_mtrl.xml": {
+      "Size": 2660
+    },
+    "res/drawable/btn_checkbox_unchecked_to_checked_mtrl_animation.xml": {
+      "Size": 688
+    },
+    "res/drawable/btn_radio_off_mtrl.xml": {
+      "Size": 1728
+    },
+    "res/drawable/btn_radio_off_to_on_mtrl_animation.xml": {
+      "Size": 680
+    },
+    "res/drawable/btn_radio_on_mtrl.xml": {
+      "Size": 1656
+    },
+    "res/drawable/btn_radio_on_to_off_mtrl_animation.xml": {
+      "Size": 680
+    },
+    "res/drawable/design_bottom_navigation_item_background.xml": {
+      "Size": 784
+    },
+    "res/drawable/design_fab_background.xml": {
+      "Size": 372
+    },
+    "res/drawable/design_password_eye.xml": {
+      "Size": 464
+    },
+    "res/drawable/design_snackbar_background.xml": {
+      "Size": 484
+    },
+    "res/drawable/ic_mtrl_chip_checked_black.xml": {
+      "Size": 600
+    },
+    "res/drawable/ic_mtrl_chip_checked_circle.xml": {
+      "Size": 940
+    },
+    "res/drawable/ic_mtrl_chip_close_circle.xml": {
+      "Size": 808
+    },
+    "res/drawable/mtrl_snackbar_background.xml": {
+      "Size": 484
+    },
+    "res/drawable/mtrl_tabs_default_indicator.xml": {
+      "Size": 628
+    },
+    "res/drawable/navigation_empty_icon.xml": {
+      "Size": 516
+    },
+    "res/drawable/notification_bg.xml": {
+      "Size": 532
+    },
+    "res/drawable/notification_bg_low.xml": {
+      "Size": 532
+    },
+    "res/drawable/notification_icon_background.xml": {
+      "Size": 372
+    },
+    "res/drawable/notification_tile_bg.xml": {
+      "Size": 304
+    },
+    "res/drawable/tooltip_frame_dark.xml": {
+      "Size": 484
+    },
+    "res/drawable/tooltip_frame_light.xml": {
+      "Size": 484
+    },
+    "res/drawable-anydpi-v21/design_ic_visibility.xml": {
+      "Size": 540
+    },
+    "res/drawable-anydpi-v21/design_ic_visibility_off.xml": {
+      "Size": 1144
+    },
+    "res/drawable-hdpi-v4/abc_ab_share_pack_mtrl_alpha.9.png": {
+      "Size": 272
+    },
+    "res/drawable-hdpi-v4/abc_btn_check_to_on_mtrl_000.png": {
+      "Size": 227
+    },
+    "res/drawable-hdpi-v4/abc_btn_check_to_on_mtrl_015.png": {
+      "Size": 404
+    },
+    "res/drawable-hdpi-v4/abc_btn_radio_to_on_mtrl_000.png": {
+      "Size": 464
+    },
+    "res/drawable-hdpi-v4/abc_btn_radio_to_on_mtrl_015.png": {
+      "Size": 563
+    },
+    "res/drawable-hdpi-v4/abc_btn_switch_to_on_mtrl_00001.9.png": {
+      "Size": 1096
+    },
+    "res/drawable-hdpi-v4/abc_btn_switch_to_on_mtrl_00012.9.png": {
+      "Size": 1243
+    },
+    "res/drawable-hdpi-v4/abc_cab_background_top_mtrl_alpha.9.png": {
+      "Size": 226
+    },
+    "res/drawable-hdpi-v4/abc_ic_commit_search_api_mtrl_alpha.png": {
+      "Size": 171
+    },
+    "res/drawable-hdpi-v4/abc_ic_menu_copy_mtrl_am_alpha.png": {
+      "Size": 202
+    },
+    "res/drawable-hdpi-v4/abc_ic_menu_cut_mtrl_alpha.png": {
+      "Size": 404
+    },
+    "res/drawable-hdpi-v4/abc_ic_menu_paste_mtrl_am_alpha.png": {
+      "Size": 226
+    },
+    "res/drawable-hdpi-v4/abc_ic_menu_selectall_mtrl_alpha.png": {
+      "Size": 215
+    },
+    "res/drawable-hdpi-v4/abc_ic_menu_share_mtrl_alpha.png": {
+      "Size": 389
+    },
+    "res/drawable-hdpi-v4/abc_ic_star_black_16dp.png": {
+      "Size": 263
+    },
+    "res/drawable-hdpi-v4/abc_ic_star_black_36dp.png": {
+      "Size": 522
+    },
+    "res/drawable-hdpi-v4/abc_ic_star_black_48dp.png": {
+      "Size": 668
+    },
+    "res/drawable-hdpi-v4/abc_ic_star_half_black_16dp.png": {
+      "Size": 197
+    },
+    "res/drawable-hdpi-v4/abc_ic_star_half_black_36dp.png": {
+      "Size": 328
+    },
+    "res/drawable-hdpi-v4/abc_ic_star_half_black_48dp.png": {
+      "Size": 431
+    },
+    "res/drawable-hdpi-v4/abc_list_divider_mtrl_alpha.9.png": {
+      "Size": 167
+    },
+    "res/drawable-hdpi-v4/abc_list_focused_holo.9.png": {
+      "Size": 244
+    },
+    "res/drawable-hdpi-v4/abc_list_longpressed_holo.9.png": {
+      "Size": 212
+    },
+    "res/drawable-hdpi-v4/abc_list_pressed_holo_dark.9.png": {
+      "Size": 208
+    },
+    "res/drawable-hdpi-v4/abc_list_pressed_holo_light.9.png": {
+      "Size": 208
+    },
+    "res/drawable-hdpi-v4/abc_list_selector_disabled_holo_dark.9.png": {
+      "Size": 228
+    },
+    "res/drawable-hdpi-v4/abc_list_selector_disabled_holo_light.9.png": {
+      "Size": 229
+    },
+    "res/drawable-hdpi-v4/abc_menu_hardkey_panel_mtrl_mult.9.png": {
+      "Size": 738
+    },
+    "res/drawable-hdpi-v4/abc_popup_background_mtrl_mult.9.png": {
+      "Size": 1098
+    },
+    "res/drawable-hdpi-v4/abc_scrubber_control_off_mtrl_alpha.png": {
+      "Size": 201
+    },
+    "res/drawable-hdpi-v4/abc_scrubber_control_to_pressed_mtrl_000.png": {
+      "Size": 196
+    },
+    "res/drawable-hdpi-v4/abc_scrubber_control_to_pressed_mtrl_005.png": {
+      "Size": 272
+    },
+    "res/drawable-hdpi-v4/abc_scrubber_primary_mtrl_alpha.9.png": {
+      "Size": 205
+    },
+    "res/drawable-hdpi-v4/abc_scrubber_track_mtrl_alpha.9.png": {
+      "Size": 196
+    },
+    "res/drawable-hdpi-v4/abc_spinner_mtrl_am_alpha.9.png": {
+      "Size": 345
+    },
+    "res/drawable-hdpi-v4/abc_switch_track_mtrl_alpha.9.png": {
+      "Size": 484
+    },
+    "res/drawable-hdpi-v4/abc_tab_indicator_mtrl_alpha.9.png": {
+      "Size": 190
+    },
+    "res/drawable-hdpi-v4/abc_text_select_handle_left_mtrl_dark.png": {
+      "Size": 278
+    },
+    "res/drawable-hdpi-v4/abc_text_select_handle_left_mtrl_light.png": {
+      "Size": 278
+    },
+    "res/drawable-hdpi-v4/abc_text_select_handle_middle_mtrl_dark.png": {
+      "Size": 398
+    },
+    "res/drawable-hdpi-v4/abc_text_select_handle_middle_mtrl_light.png": {
+      "Size": 396
+    },
+    "res/drawable-hdpi-v4/abc_text_select_handle_right_mtrl_dark.png": {
+      "Size": 263
+    },
+    "res/drawable-hdpi-v4/abc_text_select_handle_right_mtrl_light.png": {
+      "Size": 262
+    },
+    "res/drawable-hdpi-v4/abc_textfield_activated_mtrl_alpha.9.png": {
+      "Size": 186
+    },
+    "res/drawable-hdpi-v4/abc_textfield_default_mtrl_alpha.9.png": {
+      "Size": 192
+    },
+    "res/drawable-hdpi-v4/abc_textfield_search_activated_mtrl_alpha.9.png": {
       "Size": 178
     },
-    "res/drawable-hdpi-v4/design_ic_visibility_off.png": {
-      "Size": 507
+    "res/drawable-hdpi-v4/abc_textfield_search_default_mtrl_alpha.9.png": {
+      "Size": 178
     },
     "res/drawable-hdpi-v4/design_ic_visibility.png": {
       "Size": 470
     },
+    "res/drawable-hdpi-v4/design_ic_visibility_off.png": {
+      "Size": 507
+    },
     "res/drawable-hdpi-v4/icon.png": {
       "Size": 4762
     },
@@ -706,12 +889,12 @@
     "res/drawable-hdpi-v4/notification_bg_low_pressed.9.png": {
       "Size": 225
     },
-    "res/drawable-hdpi-v4/notification_bg_normal_pressed.9.png": {
-      "Size": 225
-    },
     "res/drawable-hdpi-v4/notification_bg_normal.9.png": {
       "Size": 212
     },
+    "res/drawable-hdpi-v4/notification_bg_normal_pressed.9.png": {
+      "Size": 225
+    },
     "res/drawable-hdpi-v4/notify_panel_notification_icon_bg.png": {
       "Size": 107
     },
@@ -901,12 +1084,12 @@
     "res/drawable-mdpi-v4/abc_textfield_search_default_mtrl_alpha.9.png": {
       "Size": 178
     },
-    "res/drawable-mdpi-v4/design_ic_visibility_off.png": {
-      "Size": 351
-    },
     "res/drawable-mdpi-v4/design_ic_visibility.png": {
       "Size": 309
     },
+    "res/drawable-mdpi-v4/design_ic_visibility_off.png": {
+      "Size": 351
+    },
     "res/drawable-mdpi-v4/icon.png": {
       "Size": 2200
     },
@@ -916,12 +1099,12 @@
     "res/drawable-mdpi-v4/notification_bg_low_pressed.9.png": {
       "Size": 223
     },
-    "res/drawable-mdpi-v4/notification_bg_normal_pressed.9.png": {
-      "Size": 223
-    },
     "res/drawable-mdpi-v4/notification_bg_normal.9.png": {
       "Size": 215
     },
+    "res/drawable-mdpi-v4/notification_bg_normal_pressed.9.png": {
+      "Size": 223
+    },
     "res/drawable-mdpi-v4/notify_panel_notification_icon_bg.png": {
       "Size": 98
     },
@@ -1129,12 +1312,12 @@
     "res/drawable-xhdpi-v4/abc_textfield_search_default_mtrl_alpha.9.png": {
       "Size": 182
     },
-    "res/drawable-xhdpi-v4/design_ic_visibility_off.png": {
-      "Size": 629
-    },
     "res/drawable-xhdpi-v4/design_ic_visibility.png": {
       "Size": 593
     },
+    "res/drawable-xhdpi-v4/design_ic_visibility_off.png": {
+      "Size": 629
+    },
     "res/drawable-xhdpi-v4/icon.png": {
       "Size": 7462
     },
@@ -1144,12 +1327,12 @@
     "res/drawable-xhdpi-v4/notification_bg_low_pressed.9.png": {
       "Size": 252
     },
-    "res/drawable-xhdpi-v4/notification_bg_normal_pressed.9.png": {
-      "Size": 247
-    },
     "res/drawable-xhdpi-v4/notification_bg_normal.9.png": {
       "Size": 221
     },
+    "res/drawable-xhdpi-v4/notification_bg_normal_pressed.9.png": {
+      "Size": 247
+    },
     "res/drawable-xhdpi-v4/notify_panel_notification_icon_bg.png": {
       "Size": 138
     },
@@ -1294,12 +1477,12 @@
     "res/drawable-xxhdpi-v4/abc_textfield_search_default_mtrl_alpha.9.png": {
       "Size": 186
     },
-    "res/drawable-xxhdpi-v4/design_ic_visibility_off.png": {
-      "Size": 884
-    },
     "res/drawable-xxhdpi-v4/design_ic_visibility.png": {
       "Size": 868
     },
+    "res/drawable-xxhdpi-v4/design_ic_visibility_off.png": {
+      "Size": 884
+    },
     "res/drawable-xxhdpi-v4/icon.png": {
       "Size": 13092
     },
@@ -1381,207 +1564,15 @@
     "res/drawable-xxxhdpi-v4/abc_text_select_handle_right_mtrl_light.png": {
       "Size": 513
     },
-    "res/drawable-xxxhdpi-v4/design_ic_visibility_off.png": {
-      "Size": 1201
-    },
     "res/drawable-xxxhdpi-v4/design_ic_visibility.png": {
       "Size": 1155
     },
+    "res/drawable-xxxhdpi-v4/design_ic_visibility_off.png": {
+      "Size": 1201
+    },
     "res/drawable-xxxhdpi-v4/icon.png": {
       "Size": 20118
     },
-    "res/drawable/abc_btn_borderless_material.xml": {
-      "Size": 588
-    },
-    "res/drawable/abc_btn_check_material_anim.xml": {
-      "Size": 816
-    },
-    "res/drawable/abc_btn_check_material.xml": {
-      "Size": 464
-    },
-    "res/drawable/abc_btn_colored_material.xml": {
-      "Size": 344
-    },
-    "res/drawable/abc_btn_default_mtrl_shape.xml": {
-      "Size": 932
-    },
-    "res/drawable/abc_btn_radio_material_anim.xml": {
-      "Size": 816
-    },
-    "res/drawable/abc_btn_radio_material.xml": {
-      "Size": 464
-    },
-    "res/drawable/abc_cab_background_internal_bg.xml": {
-      "Size": 372
-    },
-    "res/drawable/abc_cab_background_top_material.xml": {
-      "Size": 336
-    },
-    "res/drawable/abc_dialog_material_background.xml": {
-      "Size": 716
-    },
-    "res/drawable/abc_edit_text_material.xml": {
-      "Size": 868
-    },
-    "res/drawable/abc_ic_ab_back_material.xml": {
-      "Size": 692
-    },
-    "res/drawable/abc_ic_arrow_drop_right_black_24dp.xml": {
-      "Size": 1000
-    },
-    "res/drawable/abc_ic_clear_material.xml": {
-      "Size": 684
-    },
-    "res/drawable/abc_ic_go_search_api_material.xml": {
-      "Size": 640
-    },
-    "res/drawable/abc_ic_menu_overflow_material.xml": {
-      "Size": 792
-    },
-    "res/drawable/abc_ic_search_api_material.xml": {
-      "Size": 812
-    },
-    "res/drawable/abc_ic_voice_search_api_material.xml": {
-      "Size": 828
-    },
-    "res/drawable/abc_item_background_holo_dark.xml": {
-      "Size": 1012
-    },
-    "res/drawable/abc_item_background_holo_light.xml": {
-      "Size": 1012
-    },
-    "res/drawable/abc_list_divider_material.xml": {
-      "Size": 480
-    },
-    "res/drawable/abc_list_selector_background_transition_holo_dark.xml": {
-      "Size": 424
-    },
-    "res/drawable/abc_list_selector_background_transition_holo_light.xml": {
-      "Size": 424
-    },
-    "res/drawable/abc_list_selector_holo_dark.xml": {
-      "Size": 1064
-    },
-    "res/drawable/abc_list_selector_holo_light.xml": {
-      "Size": 1064
-    },
-    "res/drawable/abc_ratingbar_indicator_material.xml": {
-      "Size": 664
-    },
-    "res/drawable/abc_ratingbar_material.xml": {
-      "Size": 664
-    },
-    "res/drawable/abc_ratingbar_small_material.xml": {
-      "Size": 664
-    },
-    "res/drawable/abc_seekbar_thumb_material.xml": {
-      "Size": 1100
-    },
-    "res/drawable/abc_seekbar_tick_mark_material.xml": {
-      "Size": 516
-    },
-    "res/drawable/abc_seekbar_track_material.xml": {
-      "Size": 1408
-    },
-    "res/drawable/abc_spinner_textfield_background_material.xml": {
-      "Size": 1160
-    },
-    "res/drawable/abc_switch_thumb_material.xml": {
-      "Size": 464
-    },
-    "res/drawable/abc_tab_indicator_material.xml": {
-      "Size": 468
-    },
-    "res/drawable/abc_text_cursor_material.xml": {
-      "Size": 516
-    },
-    "res/drawable/abc_textfield_search_material.xml": {
-      "Size": 756
-    },
-    "res/drawable/abc_vector_test.xml": {
-      "Size": 612
-    },
-    "res/drawable/btn_checkbox_checked_mtrl.xml": {
-      "Size": 2688
-    },
-    "res/drawable/btn_checkbox_checked_to_unchecked_mtrl_animation.xml": {
-      "Size": 688
-    },
-    "res/drawable/btn_checkbox_unchecked_mtrl.xml": {
-      "Size": 2660
-    },
-    "res/drawable/btn_checkbox_unchecked_to_checked_mtrl_animation.xml": {
-      "Size": 688
-    },
-    "res/drawable/btn_radio_off_mtrl.xml": {
-      "Size": 1728
-    },
-    "res/drawable/btn_radio_off_to_on_mtrl_animation.xml": {
-      "Size": 680
-    },
-    "res/drawable/btn_radio_on_mtrl.xml": {
-      "Size": 1656
-    },
-    "res/drawable/btn_radio_on_to_off_mtrl_animation.xml": {
-      "Size": 680
-    },
-    "res/drawable/design_bottom_navigation_item_background.xml": {
-      "Size": 784
-    },
-    "res/drawable/design_fab_background.xml": {
-      "Size": 372
-    },
-    "res/drawable/design_password_eye.xml": {
-      "Size": 464
-    },
-    "res/drawable/design_snackbar_background.xml": {
-      "Size": 484
-    },
-    "res/drawable/ic_mtrl_chip_checked_black.xml": {
-      "Size": 600
-    },
-    "res/drawable/ic_mtrl_chip_checked_circle.xml": {
-      "Size": 940
-    },
-    "res/drawable/ic_mtrl_chip_close_circle.xml": {
-      "Size": 808
-    },
-    "res/drawable/mtrl_snackbar_background.xml": {
-      "Size": 484
-    },
-    "res/drawable/mtrl_tabs_default_indicator.xml": {
-      "Size": 628
-    },
-    "res/drawable/navigation_empty_icon.xml": {
-      "Size": 516
-    },
-    "res/drawable/notification_bg_low.xml": {
-      "Size": 532
-    },
-    "res/drawable/notification_bg.xml": {
-      "Size": 532
-    },
-    "res/drawable/notification_icon_background.xml": {
-      "Size": 372
-    },
-    "res/drawable/notification_tile_bg.xml": {
-      "Size": 304
-    },
-    "res/drawable/tooltip_frame_dark.xml": {
-      "Size": 484
-    },
-    "res/drawable/tooltip_frame_light.xml": {
-      "Size": 484
-    },
-    "res/interpolator-v21/mtrl_fast_out_linear_in.xml": {
-      "Size": 400
-    },
-    "res/interpolator-v21/mtrl_fast_out_slow_in.xml": {
-      "Size": 400
-    },
-    "res/interpolator-v21/mtrl_linear_out_slow_in.xml": {
-      "Size": 400
-    },
     "res/interpolator/btn_checkbox_checked_mtrl_animation_interpolator_0.xml": {
       "Size": 316
     },
@@ -1609,53 +1600,20 @@
     "res/interpolator/mtrl_fast_out_slow_in.xml": {
       "Size": 144
     },
-    "res/interpolator/mtrl_linear_out_slow_in.xml": {
-      "Size": 136
-    },
     "res/interpolator/mtrl_linear.xml": {
       "Size": 132
     },
-    "res/layout-sw600dp-v13/design_layout_snackbar.xml": {
-      "Size": 528
-    },
-    "res/layout-sw600dp-v13/mtrl_layout_snackbar.xml": {
-      "Size": 528
-    },
-    "res/layout-v16/notification_template_custom_big.xml": {
-      "Size": 3208
-    },
-    "res/layout-v21/abc_screen_toolbar.xml": {
-      "Size": 1504
-    },
-    "res/layout-v21/fallbacktoolbardonotuse.xml": {
-      "Size": 496
-    },
-    "res/layout-v21/notification_action_tombstone.xml": {
-      "Size": 1228
-    },
-    "res/layout-v21/notification_action.xml": {
-      "Size": 1052
-    },
-    "res/layout-v21/notification_template_custom_big.xml": {
-      "Size": 2456
-    },
-    "res/layout-v21/notification_template_icon_group.xml": {
-      "Size": 988
-    },
-    "res/layout-v21/toolbar.xml": {
-      "Size": 496
-    },
-    "res/layout-v22/abc_alert_dialog_button_bar_material.xml": {
-      "Size": 1584
+    "res/interpolator/mtrl_linear_out_slow_in.xml": {
+      "Size": 136
     },
-    "res/layout-v26/abc_screen_toolbar.xml": {
-      "Size": 1560
+    "res/interpolator-v21/mtrl_fast_out_linear_in.xml": {
+      "Size": 400
     },
-    "res/layout-watch-v20/abc_alert_dialog_button_bar_material.xml": {
-      "Size": 1208
+    "res/interpolator-v21/mtrl_fast_out_slow_in.xml": {
+      "Size": 400
     },
-    "res/layout-watch-v20/abc_alert_dialog_title_material.xml": {
-      "Size": 1352
+    "res/interpolator-v21/mtrl_linear_out_slow_in.xml": {
+      "Size": 400
     },
     "res/layout/abc_action_bar_title_item.xml": {
       "Size": 872
@@ -1675,12 +1633,12 @@
     "res/layout/abc_action_mode_close_item_material.xml": {
       "Size": 840
     },
-    "res/layout/abc_activity_chooser_view_list_item.xml": {
-      "Size": 1304
-    },
     "res/layout/abc_activity_chooser_view.xml": {
       "Size": 1684
     },
+    "res/layout/abc_activity_chooser_view_list_item.xml": {
+      "Size": 1304
+    },
     "res/layout/abc_alert_dialog_button_bar_material.xml": {
       "Size": 1536
     },
@@ -1720,12 +1678,12 @@
     "res/layout/abc_screen_content_include.xml": {
       "Size": 548
     },
-    "res/layout/abc_screen_simple_overlay_action_mode.xml": {
-      "Size": 792
-    },
     "res/layout/abc_screen_simple.xml": {
       "Size": 832
     },
+    "res/layout/abc_screen_simple_overlay_action_mode.xml": {
+      "Size": 792
+    },
     "res/layout/abc_screen_toolbar.xml": {
       "Size": 1452
     },
@@ -1759,12 +1717,12 @@
     "res/layout/design_bottom_sheet_dialog.xml": {
       "Size": 1184
     },
-    "res/layout/design_layout_snackbar_include.xml": {
-      "Size": 1444
-    },
     "res/layout/design_layout_snackbar.xml": {
       "Size": 528
     },
+    "res/layout/design_layout_snackbar_include.xml": {
+      "Size": 1444
+    },
     "res/layout/design_layout_tab_icon.xml": {
       "Size": 408
     },
@@ -1774,6 +1732,9 @@
     "res/layout/design_menu_item_action_area.xml": {
       "Size": 320
     },
+    "res/layout/design_navigation_item.xml": {
+      "Size": 536
+    },
     "res/layout/design_navigation_item_header.xml": {
       "Size": 440
     },
@@ -1783,15 +1744,12 @@
     "res/layout/design_navigation_item_subheader.xml": {
       "Size": 564
     },
-    "res/layout/design_navigation_item.xml": {
-      "Size": 536
+    "res/layout/design_navigation_menu.xml": {
+      "Size": 528
     },
     "res/layout/design_navigation_menu_item.xml": {
       "Size": 856
     },
-    "res/layout/design_navigation_menu.xml": {
-      "Size": 528
-    },
     "res/layout/design_text_input_password_icon.xml": {
       "Size": 564
     },
@@ -1807,35 +1765,35 @@
     "res/layout/main.xml": {
       "Size": 544
     },
-    "res/layout/mtrl_layout_snackbar_include.xml": {
-      "Size": 1404
-    },
     "res/layout/mtrl_layout_snackbar.xml": {
       "Size": 528
     },
-    "res/layout/notification_action_tombstone.xml": {
-      "Size": 1332
+    "res/layout/mtrl_layout_snackbar_include.xml": {
+      "Size": 1404
     },
     "res/layout/notification_action.xml": {
       "Size": 1156
     },
+    "res/layout/notification_action_tombstone.xml": {
+      "Size": 1332
+    },
     "res/layout/notification_media_action.xml": {
       "Size": 564
     },
     "res/layout/notification_media_cancel_action.xml": {
       "Size": 744
     },
+    "res/layout/notification_template_big_media.xml": {
+      "Size": 1696
+    },
     "res/layout/notification_template_big_media_custom.xml": {
       "Size": 3044
     },
-    "res/layout/notification_template_big_media_narrow_custom.xml": {
-      "Size": 3216
-    },
     "res/layout/notification_template_big_media_narrow.xml": {
       "Size": 1824
     },
-    "res/layout/notification_template_big_media.xml": {
-      "Size": 1696
+    "res/layout/notification_template_big_media_narrow_custom.xml": {
+      "Size": 3216
     },
     "res/layout/notification_template_icon_group.xml": {
       "Size": 392
@@ -1843,12 +1801,12 @@
     "res/layout/notification_template_lines_media.xml": {
       "Size": 2872
     },
-    "res/layout/notification_template_media_custom.xml": {
-      "Size": 2756
-    },
     "res/layout/notification_template_media.xml": {
       "Size": 1292
     },
+    "res/layout/notification_template_media_custom.xml": {
+      "Size": 2756
+    },
     "res/layout/notification_template_part_chronometer.xml": {
       "Size": 440
     },
@@ -1879,9 +1837,51 @@
     "res/layout/toolbar.xml": {
       "Size": 452
     },
+    "res/layout-sw600dp-v13/design_layout_snackbar.xml": {
+      "Size": 528
+    },
+    "res/layout-sw600dp-v13/mtrl_layout_snackbar.xml": {
+      "Size": 528
+    },
+    "res/layout-v16/notification_template_custom_big.xml": {
+      "Size": 3208
+    },
+    "res/layout-v21/abc_screen_toolbar.xml": {
+      "Size": 1504
+    },
+    "res/layout-v21/fallbacktoolbardonotuse.xml": {
+      "Size": 496
+    },
+    "res/layout-v21/notification_action.xml": {
+      "Size": 1052
+    },
+    "res/layout-v21/notification_action_tombstone.xml": {
+      "Size": 1228
+    },
+    "res/layout-v21/notification_template_custom_big.xml": {
+      "Size": 2456
+    },
+    "res/layout-v21/notification_template_icon_group.xml": {
+      "Size": 988
+    },
+    "res/layout-v21/toolbar.xml": {
+      "Size": 496
+    },
+    "res/layout-v22/abc_alert_dialog_button_bar_material.xml": {
+      "Size": 1584
+    },
+    "res/layout-v26/abc_screen_toolbar.xml": {
+      "Size": 1560
+    },
+    "res/layout-watch-v20/abc_alert_dialog_button_bar_material.xml": {
+      "Size": 1208
+    },
+    "res/layout-watch-v20/abc_alert_dialog_title_material.xml": {
+      "Size": 1352
+    },
     "resources.arsc": {
       "Size": 341040
     }
   },
-  "PackageSize": 9545886
+  "PackageSize": 9533598
 }
\ No newline at end of file
