Merge "Code cleanup (13/n)"
diff --git a/ApiDocs.bp b/ApiDocs.bp
index b5acfb2..996cdc9 100644
--- a/ApiDocs.bp
+++ b/ApiDocs.bp
@@ -87,6 +87,7 @@
         ":framework-graphics-srcs",
         ":framework-mediaprovider-sources",
         ":framework-nearby-sources",
+        ":framework-ondevicepersonalization-sources",
         ":framework-permission-sources",
         ":framework-permission-s-sources",
         ":framework-scheduling-sources",
diff --git a/apct-tests/perftests/core/OWNERS b/apct-tests/perftests/core/OWNERS
index 18486af..2b3564e 100644
--- a/apct-tests/perftests/core/OWNERS
+++ b/apct-tests/perftests/core/OWNERS
@@ -1 +1,5 @@
 include /graphics/java/android/graphics/fonts/OWNERS
+
+# Bug component: 568761
+per-file /apct-tests/perftests/core/res/* = felkachang@google.com,zyy@google.com
+
diff --git a/apct-tests/perftests/core/res/values/colors.xml b/apct-tests/perftests/core/res/values/colors.xml
new file mode 100644
index 0000000..5e56c25
--- /dev/null
+++ b/apct-tests/perftests/core/res/values/colors.xml
@@ -0,0 +1,10022 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ 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
+  -->
+
+<resources>
+    <!--- The colors with prefix "i_am_color_%x" and %x is from 0 to 10000. They are used by
+          ResourcesPerfTest.java -->
+    <color name="i_am_color_0">#00000000</color>
+    <color name="i_am_color_1">#00000001</color>
+    <color name="i_am_color_2">#00000002</color>
+    <color name="i_am_color_3">#00000003</color>
+    <color name="i_am_color_4">#00000004</color>
+    <color name="i_am_color_5">#00000005</color>
+    <color name="i_am_color_6">#00000006</color>
+    <color name="i_am_color_7">#00000007</color>
+    <color name="i_am_color_8">#00000008</color>
+    <color name="i_am_color_9">#00000009</color>
+    <color name="i_am_color_a">#0000000a</color>
+    <color name="i_am_color_b">#0000000b</color>
+    <color name="i_am_color_c">#0000000c</color>
+    <color name="i_am_color_d">#0000000d</color>
+    <color name="i_am_color_e">#0000000e</color>
+    <color name="i_am_color_f">#0000000f</color>
+    <color name="i_am_color_10">#00000010</color>
+    <color name="i_am_color_11">#00000011</color>
+    <color name="i_am_color_12">#00000012</color>
+    <color name="i_am_color_13">#00000013</color>
+    <color name="i_am_color_14">#00000014</color>
+    <color name="i_am_color_15">#00000015</color>
+    <color name="i_am_color_16">#00000016</color>
+    <color name="i_am_color_17">#00000017</color>
+    <color name="i_am_color_18">#00000018</color>
+    <color name="i_am_color_19">#00000019</color>
+    <color name="i_am_color_1a">#0000001a</color>
+    <color name="i_am_color_1b">#0000001b</color>
+    <color name="i_am_color_1c">#0000001c</color>
+    <color name="i_am_color_1d">#0000001d</color>
+    <color name="i_am_color_1e">#0000001e</color>
+    <color name="i_am_color_1f">#0000001f</color>
+    <color name="i_am_color_20">#00000020</color>
+    <color name="i_am_color_21">#00000021</color>
+    <color name="i_am_color_22">#00000022</color>
+    <color name="i_am_color_23">#00000023</color>
+    <color name="i_am_color_24">#00000024</color>
+    <color name="i_am_color_25">#00000025</color>
+    <color name="i_am_color_26">#00000026</color>
+    <color name="i_am_color_27">#00000027</color>
+    <color name="i_am_color_28">#00000028</color>
+    <color name="i_am_color_29">#00000029</color>
+    <color name="i_am_color_2a">#0000002a</color>
+    <color name="i_am_color_2b">#0000002b</color>
+    <color name="i_am_color_2c">#0000002c</color>
+    <color name="i_am_color_2d">#0000002d</color>
+    <color name="i_am_color_2e">#0000002e</color>
+    <color name="i_am_color_2f">#0000002f</color>
+    <color name="i_am_color_30">#00000030</color>
+    <color name="i_am_color_31">#00000031</color>
+    <color name="i_am_color_32">#00000032</color>
+    <color name="i_am_color_33">#00000033</color>
+    <color name="i_am_color_34">#00000034</color>
+    <color name="i_am_color_35">#00000035</color>
+    <color name="i_am_color_36">#00000036</color>
+    <color name="i_am_color_37">#00000037</color>
+    <color name="i_am_color_38">#00000038</color>
+    <color name="i_am_color_39">#00000039</color>
+    <color name="i_am_color_3a">#0000003a</color>
+    <color name="i_am_color_3b">#0000003b</color>
+    <color name="i_am_color_3c">#0000003c</color>
+    <color name="i_am_color_3d">#0000003d</color>
+    <color name="i_am_color_3e">#0000003e</color>
+    <color name="i_am_color_3f">#0000003f</color>
+    <color name="i_am_color_40">#00000040</color>
+    <color name="i_am_color_41">#00000041</color>
+    <color name="i_am_color_42">#00000042</color>
+    <color name="i_am_color_43">#00000043</color>
+    <color name="i_am_color_44">#00000044</color>
+    <color name="i_am_color_45">#00000045</color>
+    <color name="i_am_color_46">#00000046</color>
+    <color name="i_am_color_47">#00000047</color>
+    <color name="i_am_color_48">#00000048</color>
+    <color name="i_am_color_49">#00000049</color>
+    <color name="i_am_color_4a">#0000004a</color>
+    <color name="i_am_color_4b">#0000004b</color>
+    <color name="i_am_color_4c">#0000004c</color>
+    <color name="i_am_color_4d">#0000004d</color>
+    <color name="i_am_color_4e">#0000004e</color>
+    <color name="i_am_color_4f">#0000004f</color>
+    <color name="i_am_color_50">#00000050</color>
+    <color name="i_am_color_51">#00000051</color>
+    <color name="i_am_color_52">#00000052</color>
+    <color name="i_am_color_53">#00000053</color>
+    <color name="i_am_color_54">#00000054</color>
+    <color name="i_am_color_55">#00000055</color>
+    <color name="i_am_color_56">#00000056</color>
+    <color name="i_am_color_57">#00000057</color>
+    <color name="i_am_color_58">#00000058</color>
+    <color name="i_am_color_59">#00000059</color>
+    <color name="i_am_color_5a">#0000005a</color>
+    <color name="i_am_color_5b">#0000005b</color>
+    <color name="i_am_color_5c">#0000005c</color>
+    <color name="i_am_color_5d">#0000005d</color>
+    <color name="i_am_color_5e">#0000005e</color>
+    <color name="i_am_color_5f">#0000005f</color>
+    <color name="i_am_color_60">#00000060</color>
+    <color name="i_am_color_61">#00000061</color>
+    <color name="i_am_color_62">#00000062</color>
+    <color name="i_am_color_63">#00000063</color>
+    <color name="i_am_color_64">#00000064</color>
+    <color name="i_am_color_65">#00000065</color>
+    <color name="i_am_color_66">#00000066</color>
+    <color name="i_am_color_67">#00000067</color>
+    <color name="i_am_color_68">#00000068</color>
+    <color name="i_am_color_69">#00000069</color>
+    <color name="i_am_color_6a">#0000006a</color>
+    <color name="i_am_color_6b">#0000006b</color>
+    <color name="i_am_color_6c">#0000006c</color>
+    <color name="i_am_color_6d">#0000006d</color>
+    <color name="i_am_color_6e">#0000006e</color>
+    <color name="i_am_color_6f">#0000006f</color>
+    <color name="i_am_color_70">#00000070</color>
+    <color name="i_am_color_71">#00000071</color>
+    <color name="i_am_color_72">#00000072</color>
+    <color name="i_am_color_73">#00000073</color>
+    <color name="i_am_color_74">#00000074</color>
+    <color name="i_am_color_75">#00000075</color>
+    <color name="i_am_color_76">#00000076</color>
+    <color name="i_am_color_77">#00000077</color>
+    <color name="i_am_color_78">#00000078</color>
+    <color name="i_am_color_79">#00000079</color>
+    <color name="i_am_color_7a">#0000007a</color>
+    <color name="i_am_color_7b">#0000007b</color>
+    <color name="i_am_color_7c">#0000007c</color>
+    <color name="i_am_color_7d">#0000007d</color>
+    <color name="i_am_color_7e">#0000007e</color>
+    <color name="i_am_color_7f">#0000007f</color>
+    <color name="i_am_color_80">#00000080</color>
+    <color name="i_am_color_81">#00000081</color>
+    <color name="i_am_color_82">#00000082</color>
+    <color name="i_am_color_83">#00000083</color>
+    <color name="i_am_color_84">#00000084</color>
+    <color name="i_am_color_85">#00000085</color>
+    <color name="i_am_color_86">#00000086</color>
+    <color name="i_am_color_87">#00000087</color>
+    <color name="i_am_color_88">#00000088</color>
+    <color name="i_am_color_89">#00000089</color>
+    <color name="i_am_color_8a">#0000008a</color>
+    <color name="i_am_color_8b">#0000008b</color>
+    <color name="i_am_color_8c">#0000008c</color>
+    <color name="i_am_color_8d">#0000008d</color>
+    <color name="i_am_color_8e">#0000008e</color>
+    <color name="i_am_color_8f">#0000008f</color>
+    <color name="i_am_color_90">#00000090</color>
+    <color name="i_am_color_91">#00000091</color>
+    <color name="i_am_color_92">#00000092</color>
+    <color name="i_am_color_93">#00000093</color>
+    <color name="i_am_color_94">#00000094</color>
+    <color name="i_am_color_95">#00000095</color>
+    <color name="i_am_color_96">#00000096</color>
+    <color name="i_am_color_97">#00000097</color>
+    <color name="i_am_color_98">#00000098</color>
+    <color name="i_am_color_99">#00000099</color>
+    <color name="i_am_color_9a">#0000009a</color>
+    <color name="i_am_color_9b">#0000009b</color>
+    <color name="i_am_color_9c">#0000009c</color>
+    <color name="i_am_color_9d">#0000009d</color>
+    <color name="i_am_color_9e">#0000009e</color>
+    <color name="i_am_color_9f">#0000009f</color>
+    <color name="i_am_color_a0">#000000a0</color>
+    <color name="i_am_color_a1">#000000a1</color>
+    <color name="i_am_color_a2">#000000a2</color>
+    <color name="i_am_color_a3">#000000a3</color>
+    <color name="i_am_color_a4">#000000a4</color>
+    <color name="i_am_color_a5">#000000a5</color>
+    <color name="i_am_color_a6">#000000a6</color>
+    <color name="i_am_color_a7">#000000a7</color>
+    <color name="i_am_color_a8">#000000a8</color>
+    <color name="i_am_color_a9">#000000a9</color>
+    <color name="i_am_color_aa">#000000aa</color>
+    <color name="i_am_color_ab">#000000ab</color>
+    <color name="i_am_color_ac">#000000ac</color>
+    <color name="i_am_color_ad">#000000ad</color>
+    <color name="i_am_color_ae">#000000ae</color>
+    <color name="i_am_color_af">#000000af</color>
+    <color name="i_am_color_b0">#000000b0</color>
+    <color name="i_am_color_b1">#000000b1</color>
+    <color name="i_am_color_b2">#000000b2</color>
+    <color name="i_am_color_b3">#000000b3</color>
+    <color name="i_am_color_b4">#000000b4</color>
+    <color name="i_am_color_b5">#000000b5</color>
+    <color name="i_am_color_b6">#000000b6</color>
+    <color name="i_am_color_b7">#000000b7</color>
+    <color name="i_am_color_b8">#000000b8</color>
+    <color name="i_am_color_b9">#000000b9</color>
+    <color name="i_am_color_ba">#000000ba</color>
+    <color name="i_am_color_bb">#000000bb</color>
+    <color name="i_am_color_bc">#000000bc</color>
+    <color name="i_am_color_bd">#000000bd</color>
+    <color name="i_am_color_be">#000000be</color>
+    <color name="i_am_color_bf">#000000bf</color>
+    <color name="i_am_color_c0">#000000c0</color>
+    <color name="i_am_color_c1">#000000c1</color>
+    <color name="i_am_color_c2">#000000c2</color>
+    <color name="i_am_color_c3">#000000c3</color>
+    <color name="i_am_color_c4">#000000c4</color>
+    <color name="i_am_color_c5">#000000c5</color>
+    <color name="i_am_color_c6">#000000c6</color>
+    <color name="i_am_color_c7">#000000c7</color>
+    <color name="i_am_color_c8">#000000c8</color>
+    <color name="i_am_color_c9">#000000c9</color>
+    <color name="i_am_color_ca">#000000ca</color>
+    <color name="i_am_color_cb">#000000cb</color>
+    <color name="i_am_color_cc">#000000cc</color>
+    <color name="i_am_color_cd">#000000cd</color>
+    <color name="i_am_color_ce">#000000ce</color>
+    <color name="i_am_color_cf">#000000cf</color>
+    <color name="i_am_color_d0">#000000d0</color>
+    <color name="i_am_color_d1">#000000d1</color>
+    <color name="i_am_color_d2">#000000d2</color>
+    <color name="i_am_color_d3">#000000d3</color>
+    <color name="i_am_color_d4">#000000d4</color>
+    <color name="i_am_color_d5">#000000d5</color>
+    <color name="i_am_color_d6">#000000d6</color>
+    <color name="i_am_color_d7">#000000d7</color>
+    <color name="i_am_color_d8">#000000d8</color>
+    <color name="i_am_color_d9">#000000d9</color>
+    <color name="i_am_color_da">#000000da</color>
+    <color name="i_am_color_db">#000000db</color>
+    <color name="i_am_color_dc">#000000dc</color>
+    <color name="i_am_color_dd">#000000dd</color>
+    <color name="i_am_color_de">#000000de</color>
+    <color name="i_am_color_df">#000000df</color>
+    <color name="i_am_color_e0">#000000e0</color>
+    <color name="i_am_color_e1">#000000e1</color>
+    <color name="i_am_color_e2">#000000e2</color>
+    <color name="i_am_color_e3">#000000e3</color>
+    <color name="i_am_color_e4">#000000e4</color>
+    <color name="i_am_color_e5">#000000e5</color>
+    <color name="i_am_color_e6">#000000e6</color>
+    <color name="i_am_color_e7">#000000e7</color>
+    <color name="i_am_color_e8">#000000e8</color>
+    <color name="i_am_color_e9">#000000e9</color>
+    <color name="i_am_color_ea">#000000ea</color>
+    <color name="i_am_color_eb">#000000eb</color>
+    <color name="i_am_color_ec">#000000ec</color>
+    <color name="i_am_color_ed">#000000ed</color>
+    <color name="i_am_color_ee">#000000ee</color>
+    <color name="i_am_color_ef">#000000ef</color>
+    <color name="i_am_color_f0">#000000f0</color>
+    <color name="i_am_color_f1">#000000f1</color>
+    <color name="i_am_color_f2">#000000f2</color>
+    <color name="i_am_color_f3">#000000f3</color>
+    <color name="i_am_color_f4">#000000f4</color>
+    <color name="i_am_color_f5">#000000f5</color>
+    <color name="i_am_color_f6">#000000f6</color>
+    <color name="i_am_color_f7">#000000f7</color>
+    <color name="i_am_color_f8">#000000f8</color>
+    <color name="i_am_color_f9">#000000f9</color>
+    <color name="i_am_color_fa">#000000fa</color>
+    <color name="i_am_color_fb">#000000fb</color>
+    <color name="i_am_color_fc">#000000fc</color>
+    <color name="i_am_color_fd">#000000fd</color>
+    <color name="i_am_color_fe">#000000fe</color>
+    <color name="i_am_color_ff">#000000ff</color>
+    <color name="i_am_color_100">#00000100</color>
+    <color name="i_am_color_101">#00000101</color>
+    <color name="i_am_color_102">#00000102</color>
+    <color name="i_am_color_103">#00000103</color>
+    <color name="i_am_color_104">#00000104</color>
+    <color name="i_am_color_105">#00000105</color>
+    <color name="i_am_color_106">#00000106</color>
+    <color name="i_am_color_107">#00000107</color>
+    <color name="i_am_color_108">#00000108</color>
+    <color name="i_am_color_109">#00000109</color>
+    <color name="i_am_color_10a">#0000010a</color>
+    <color name="i_am_color_10b">#0000010b</color>
+    <color name="i_am_color_10c">#0000010c</color>
+    <color name="i_am_color_10d">#0000010d</color>
+    <color name="i_am_color_10e">#0000010e</color>
+    <color name="i_am_color_10f">#0000010f</color>
+    <color name="i_am_color_110">#00000110</color>
+    <color name="i_am_color_111">#00000111</color>
+    <color name="i_am_color_112">#00000112</color>
+    <color name="i_am_color_113">#00000113</color>
+    <color name="i_am_color_114">#00000114</color>
+    <color name="i_am_color_115">#00000115</color>
+    <color name="i_am_color_116">#00000116</color>
+    <color name="i_am_color_117">#00000117</color>
+    <color name="i_am_color_118">#00000118</color>
+    <color name="i_am_color_119">#00000119</color>
+    <color name="i_am_color_11a">#0000011a</color>
+    <color name="i_am_color_11b">#0000011b</color>
+    <color name="i_am_color_11c">#0000011c</color>
+    <color name="i_am_color_11d">#0000011d</color>
+    <color name="i_am_color_11e">#0000011e</color>
+    <color name="i_am_color_11f">#0000011f</color>
+    <color name="i_am_color_120">#00000120</color>
+    <color name="i_am_color_121">#00000121</color>
+    <color name="i_am_color_122">#00000122</color>
+    <color name="i_am_color_123">#00000123</color>
+    <color name="i_am_color_124">#00000124</color>
+    <color name="i_am_color_125">#00000125</color>
+    <color name="i_am_color_126">#00000126</color>
+    <color name="i_am_color_127">#00000127</color>
+    <color name="i_am_color_128">#00000128</color>
+    <color name="i_am_color_129">#00000129</color>
+    <color name="i_am_color_12a">#0000012a</color>
+    <color name="i_am_color_12b">#0000012b</color>
+    <color name="i_am_color_12c">#0000012c</color>
+    <color name="i_am_color_12d">#0000012d</color>
+    <color name="i_am_color_12e">#0000012e</color>
+    <color name="i_am_color_12f">#0000012f</color>
+    <color name="i_am_color_130">#00000130</color>
+    <color name="i_am_color_131">#00000131</color>
+    <color name="i_am_color_132">#00000132</color>
+    <color name="i_am_color_133">#00000133</color>
+    <color name="i_am_color_134">#00000134</color>
+    <color name="i_am_color_135">#00000135</color>
+    <color name="i_am_color_136">#00000136</color>
+    <color name="i_am_color_137">#00000137</color>
+    <color name="i_am_color_138">#00000138</color>
+    <color name="i_am_color_139">#00000139</color>
+    <color name="i_am_color_13a">#0000013a</color>
+    <color name="i_am_color_13b">#0000013b</color>
+    <color name="i_am_color_13c">#0000013c</color>
+    <color name="i_am_color_13d">#0000013d</color>
+    <color name="i_am_color_13e">#0000013e</color>
+    <color name="i_am_color_13f">#0000013f</color>
+    <color name="i_am_color_140">#00000140</color>
+    <color name="i_am_color_141">#00000141</color>
+    <color name="i_am_color_142">#00000142</color>
+    <color name="i_am_color_143">#00000143</color>
+    <color name="i_am_color_144">#00000144</color>
+    <color name="i_am_color_145">#00000145</color>
+    <color name="i_am_color_146">#00000146</color>
+    <color name="i_am_color_147">#00000147</color>
+    <color name="i_am_color_148">#00000148</color>
+    <color name="i_am_color_149">#00000149</color>
+    <color name="i_am_color_14a">#0000014a</color>
+    <color name="i_am_color_14b">#0000014b</color>
+    <color name="i_am_color_14c">#0000014c</color>
+    <color name="i_am_color_14d">#0000014d</color>
+    <color name="i_am_color_14e">#0000014e</color>
+    <color name="i_am_color_14f">#0000014f</color>
+    <color name="i_am_color_150">#00000150</color>
+    <color name="i_am_color_151">#00000151</color>
+    <color name="i_am_color_152">#00000152</color>
+    <color name="i_am_color_153">#00000153</color>
+    <color name="i_am_color_154">#00000154</color>
+    <color name="i_am_color_155">#00000155</color>
+    <color name="i_am_color_156">#00000156</color>
+    <color name="i_am_color_157">#00000157</color>
+    <color name="i_am_color_158">#00000158</color>
+    <color name="i_am_color_159">#00000159</color>
+    <color name="i_am_color_15a">#0000015a</color>
+    <color name="i_am_color_15b">#0000015b</color>
+    <color name="i_am_color_15c">#0000015c</color>
+    <color name="i_am_color_15d">#0000015d</color>
+    <color name="i_am_color_15e">#0000015e</color>
+    <color name="i_am_color_15f">#0000015f</color>
+    <color name="i_am_color_160">#00000160</color>
+    <color name="i_am_color_161">#00000161</color>
+    <color name="i_am_color_162">#00000162</color>
+    <color name="i_am_color_163">#00000163</color>
+    <color name="i_am_color_164">#00000164</color>
+    <color name="i_am_color_165">#00000165</color>
+    <color name="i_am_color_166">#00000166</color>
+    <color name="i_am_color_167">#00000167</color>
+    <color name="i_am_color_168">#00000168</color>
+    <color name="i_am_color_169">#00000169</color>
+    <color name="i_am_color_16a">#0000016a</color>
+    <color name="i_am_color_16b">#0000016b</color>
+    <color name="i_am_color_16c">#0000016c</color>
+    <color name="i_am_color_16d">#0000016d</color>
+    <color name="i_am_color_16e">#0000016e</color>
+    <color name="i_am_color_16f">#0000016f</color>
+    <color name="i_am_color_170">#00000170</color>
+    <color name="i_am_color_171">#00000171</color>
+    <color name="i_am_color_172">#00000172</color>
+    <color name="i_am_color_173">#00000173</color>
+    <color name="i_am_color_174">#00000174</color>
+    <color name="i_am_color_175">#00000175</color>
+    <color name="i_am_color_176">#00000176</color>
+    <color name="i_am_color_177">#00000177</color>
+    <color name="i_am_color_178">#00000178</color>
+    <color name="i_am_color_179">#00000179</color>
+    <color name="i_am_color_17a">#0000017a</color>
+    <color name="i_am_color_17b">#0000017b</color>
+    <color name="i_am_color_17c">#0000017c</color>
+    <color name="i_am_color_17d">#0000017d</color>
+    <color name="i_am_color_17e">#0000017e</color>
+    <color name="i_am_color_17f">#0000017f</color>
+    <color name="i_am_color_180">#00000180</color>
+    <color name="i_am_color_181">#00000181</color>
+    <color name="i_am_color_182">#00000182</color>
+    <color name="i_am_color_183">#00000183</color>
+    <color name="i_am_color_184">#00000184</color>
+    <color name="i_am_color_185">#00000185</color>
+    <color name="i_am_color_186">#00000186</color>
+    <color name="i_am_color_187">#00000187</color>
+    <color name="i_am_color_188">#00000188</color>
+    <color name="i_am_color_189">#00000189</color>
+    <color name="i_am_color_18a">#0000018a</color>
+    <color name="i_am_color_18b">#0000018b</color>
+    <color name="i_am_color_18c">#0000018c</color>
+    <color name="i_am_color_18d">#0000018d</color>
+    <color name="i_am_color_18e">#0000018e</color>
+    <color name="i_am_color_18f">#0000018f</color>
+    <color name="i_am_color_190">#00000190</color>
+    <color name="i_am_color_191">#00000191</color>
+    <color name="i_am_color_192">#00000192</color>
+    <color name="i_am_color_193">#00000193</color>
+    <color name="i_am_color_194">#00000194</color>
+    <color name="i_am_color_195">#00000195</color>
+    <color name="i_am_color_196">#00000196</color>
+    <color name="i_am_color_197">#00000197</color>
+    <color name="i_am_color_198">#00000198</color>
+    <color name="i_am_color_199">#00000199</color>
+    <color name="i_am_color_19a">#0000019a</color>
+    <color name="i_am_color_19b">#0000019b</color>
+    <color name="i_am_color_19c">#0000019c</color>
+    <color name="i_am_color_19d">#0000019d</color>
+    <color name="i_am_color_19e">#0000019e</color>
+    <color name="i_am_color_19f">#0000019f</color>
+    <color name="i_am_color_1a0">#000001a0</color>
+    <color name="i_am_color_1a1">#000001a1</color>
+    <color name="i_am_color_1a2">#000001a2</color>
+    <color name="i_am_color_1a3">#000001a3</color>
+    <color name="i_am_color_1a4">#000001a4</color>
+    <color name="i_am_color_1a5">#000001a5</color>
+    <color name="i_am_color_1a6">#000001a6</color>
+    <color name="i_am_color_1a7">#000001a7</color>
+    <color name="i_am_color_1a8">#000001a8</color>
+    <color name="i_am_color_1a9">#000001a9</color>
+    <color name="i_am_color_1aa">#000001aa</color>
+    <color name="i_am_color_1ab">#000001ab</color>
+    <color name="i_am_color_1ac">#000001ac</color>
+    <color name="i_am_color_1ad">#000001ad</color>
+    <color name="i_am_color_1ae">#000001ae</color>
+    <color name="i_am_color_1af">#000001af</color>
+    <color name="i_am_color_1b0">#000001b0</color>
+    <color name="i_am_color_1b1">#000001b1</color>
+    <color name="i_am_color_1b2">#000001b2</color>
+    <color name="i_am_color_1b3">#000001b3</color>
+    <color name="i_am_color_1b4">#000001b4</color>
+    <color name="i_am_color_1b5">#000001b5</color>
+    <color name="i_am_color_1b6">#000001b6</color>
+    <color name="i_am_color_1b7">#000001b7</color>
+    <color name="i_am_color_1b8">#000001b8</color>
+    <color name="i_am_color_1b9">#000001b9</color>
+    <color name="i_am_color_1ba">#000001ba</color>
+    <color name="i_am_color_1bb">#000001bb</color>
+    <color name="i_am_color_1bc">#000001bc</color>
+    <color name="i_am_color_1bd">#000001bd</color>
+    <color name="i_am_color_1be">#000001be</color>
+    <color name="i_am_color_1bf">#000001bf</color>
+    <color name="i_am_color_1c0">#000001c0</color>
+    <color name="i_am_color_1c1">#000001c1</color>
+    <color name="i_am_color_1c2">#000001c2</color>
+    <color name="i_am_color_1c3">#000001c3</color>
+    <color name="i_am_color_1c4">#000001c4</color>
+    <color name="i_am_color_1c5">#000001c5</color>
+    <color name="i_am_color_1c6">#000001c6</color>
+    <color name="i_am_color_1c7">#000001c7</color>
+    <color name="i_am_color_1c8">#000001c8</color>
+    <color name="i_am_color_1c9">#000001c9</color>
+    <color name="i_am_color_1ca">#000001ca</color>
+    <color name="i_am_color_1cb">#000001cb</color>
+    <color name="i_am_color_1cc">#000001cc</color>
+    <color name="i_am_color_1cd">#000001cd</color>
+    <color name="i_am_color_1ce">#000001ce</color>
+    <color name="i_am_color_1cf">#000001cf</color>
+    <color name="i_am_color_1d0">#000001d0</color>
+    <color name="i_am_color_1d1">#000001d1</color>
+    <color name="i_am_color_1d2">#000001d2</color>
+    <color name="i_am_color_1d3">#000001d3</color>
+    <color name="i_am_color_1d4">#000001d4</color>
+    <color name="i_am_color_1d5">#000001d5</color>
+    <color name="i_am_color_1d6">#000001d6</color>
+    <color name="i_am_color_1d7">#000001d7</color>
+    <color name="i_am_color_1d8">#000001d8</color>
+    <color name="i_am_color_1d9">#000001d9</color>
+    <color name="i_am_color_1da">#000001da</color>
+    <color name="i_am_color_1db">#000001db</color>
+    <color name="i_am_color_1dc">#000001dc</color>
+    <color name="i_am_color_1dd">#000001dd</color>
+    <color name="i_am_color_1de">#000001de</color>
+    <color name="i_am_color_1df">#000001df</color>
+    <color name="i_am_color_1e0">#000001e0</color>
+    <color name="i_am_color_1e1">#000001e1</color>
+    <color name="i_am_color_1e2">#000001e2</color>
+    <color name="i_am_color_1e3">#000001e3</color>
+    <color name="i_am_color_1e4">#000001e4</color>
+    <color name="i_am_color_1e5">#000001e5</color>
+    <color name="i_am_color_1e6">#000001e6</color>
+    <color name="i_am_color_1e7">#000001e7</color>
+    <color name="i_am_color_1e8">#000001e8</color>
+    <color name="i_am_color_1e9">#000001e9</color>
+    <color name="i_am_color_1ea">#000001ea</color>
+    <color name="i_am_color_1eb">#000001eb</color>
+    <color name="i_am_color_1ec">#000001ec</color>
+    <color name="i_am_color_1ed">#000001ed</color>
+    <color name="i_am_color_1ee">#000001ee</color>
+    <color name="i_am_color_1ef">#000001ef</color>
+    <color name="i_am_color_1f0">#000001f0</color>
+    <color name="i_am_color_1f1">#000001f1</color>
+    <color name="i_am_color_1f2">#000001f2</color>
+    <color name="i_am_color_1f3">#000001f3</color>
+    <color name="i_am_color_1f4">#000001f4</color>
+    <color name="i_am_color_1f5">#000001f5</color>
+    <color name="i_am_color_1f6">#000001f6</color>
+    <color name="i_am_color_1f7">#000001f7</color>
+    <color name="i_am_color_1f8">#000001f8</color>
+    <color name="i_am_color_1f9">#000001f9</color>
+    <color name="i_am_color_1fa">#000001fa</color>
+    <color name="i_am_color_1fb">#000001fb</color>
+    <color name="i_am_color_1fc">#000001fc</color>
+    <color name="i_am_color_1fd">#000001fd</color>
+    <color name="i_am_color_1fe">#000001fe</color>
+    <color name="i_am_color_1ff">#000001ff</color>
+    <color name="i_am_color_200">#00000200</color>
+    <color name="i_am_color_201">#00000201</color>
+    <color name="i_am_color_202">#00000202</color>
+    <color name="i_am_color_203">#00000203</color>
+    <color name="i_am_color_204">#00000204</color>
+    <color name="i_am_color_205">#00000205</color>
+    <color name="i_am_color_206">#00000206</color>
+    <color name="i_am_color_207">#00000207</color>
+    <color name="i_am_color_208">#00000208</color>
+    <color name="i_am_color_209">#00000209</color>
+    <color name="i_am_color_20a">#0000020a</color>
+    <color name="i_am_color_20b">#0000020b</color>
+    <color name="i_am_color_20c">#0000020c</color>
+    <color name="i_am_color_20d">#0000020d</color>
+    <color name="i_am_color_20e">#0000020e</color>
+    <color name="i_am_color_20f">#0000020f</color>
+    <color name="i_am_color_210">#00000210</color>
+    <color name="i_am_color_211">#00000211</color>
+    <color name="i_am_color_212">#00000212</color>
+    <color name="i_am_color_213">#00000213</color>
+    <color name="i_am_color_214">#00000214</color>
+    <color name="i_am_color_215">#00000215</color>
+    <color name="i_am_color_216">#00000216</color>
+    <color name="i_am_color_217">#00000217</color>
+    <color name="i_am_color_218">#00000218</color>
+    <color name="i_am_color_219">#00000219</color>
+    <color name="i_am_color_21a">#0000021a</color>
+    <color name="i_am_color_21b">#0000021b</color>
+    <color name="i_am_color_21c">#0000021c</color>
+    <color name="i_am_color_21d">#0000021d</color>
+    <color name="i_am_color_21e">#0000021e</color>
+    <color name="i_am_color_21f">#0000021f</color>
+    <color name="i_am_color_220">#00000220</color>
+    <color name="i_am_color_221">#00000221</color>
+    <color name="i_am_color_222">#00000222</color>
+    <color name="i_am_color_223">#00000223</color>
+    <color name="i_am_color_224">#00000224</color>
+    <color name="i_am_color_225">#00000225</color>
+    <color name="i_am_color_226">#00000226</color>
+    <color name="i_am_color_227">#00000227</color>
+    <color name="i_am_color_228">#00000228</color>
+    <color name="i_am_color_229">#00000229</color>
+    <color name="i_am_color_22a">#0000022a</color>
+    <color name="i_am_color_22b">#0000022b</color>
+    <color name="i_am_color_22c">#0000022c</color>
+    <color name="i_am_color_22d">#0000022d</color>
+    <color name="i_am_color_22e">#0000022e</color>
+    <color name="i_am_color_22f">#0000022f</color>
+    <color name="i_am_color_230">#00000230</color>
+    <color name="i_am_color_231">#00000231</color>
+    <color name="i_am_color_232">#00000232</color>
+    <color name="i_am_color_233">#00000233</color>
+    <color name="i_am_color_234">#00000234</color>
+    <color name="i_am_color_235">#00000235</color>
+    <color name="i_am_color_236">#00000236</color>
+    <color name="i_am_color_237">#00000237</color>
+    <color name="i_am_color_238">#00000238</color>
+    <color name="i_am_color_239">#00000239</color>
+    <color name="i_am_color_23a">#0000023a</color>
+    <color name="i_am_color_23b">#0000023b</color>
+    <color name="i_am_color_23c">#0000023c</color>
+    <color name="i_am_color_23d">#0000023d</color>
+    <color name="i_am_color_23e">#0000023e</color>
+    <color name="i_am_color_23f">#0000023f</color>
+    <color name="i_am_color_240">#00000240</color>
+    <color name="i_am_color_241">#00000241</color>
+    <color name="i_am_color_242">#00000242</color>
+    <color name="i_am_color_243">#00000243</color>
+    <color name="i_am_color_244">#00000244</color>
+    <color name="i_am_color_245">#00000245</color>
+    <color name="i_am_color_246">#00000246</color>
+    <color name="i_am_color_247">#00000247</color>
+    <color name="i_am_color_248">#00000248</color>
+    <color name="i_am_color_249">#00000249</color>
+    <color name="i_am_color_24a">#0000024a</color>
+    <color name="i_am_color_24b">#0000024b</color>
+    <color name="i_am_color_24c">#0000024c</color>
+    <color name="i_am_color_24d">#0000024d</color>
+    <color name="i_am_color_24e">#0000024e</color>
+    <color name="i_am_color_24f">#0000024f</color>
+    <color name="i_am_color_250">#00000250</color>
+    <color name="i_am_color_251">#00000251</color>
+    <color name="i_am_color_252">#00000252</color>
+    <color name="i_am_color_253">#00000253</color>
+    <color name="i_am_color_254">#00000254</color>
+    <color name="i_am_color_255">#00000255</color>
+    <color name="i_am_color_256">#00000256</color>
+    <color name="i_am_color_257">#00000257</color>
+    <color name="i_am_color_258">#00000258</color>
+    <color name="i_am_color_259">#00000259</color>
+    <color name="i_am_color_25a">#0000025a</color>
+    <color name="i_am_color_25b">#0000025b</color>
+    <color name="i_am_color_25c">#0000025c</color>
+    <color name="i_am_color_25d">#0000025d</color>
+    <color name="i_am_color_25e">#0000025e</color>
+    <color name="i_am_color_25f">#0000025f</color>
+    <color name="i_am_color_260">#00000260</color>
+    <color name="i_am_color_261">#00000261</color>
+    <color name="i_am_color_262">#00000262</color>
+    <color name="i_am_color_263">#00000263</color>
+    <color name="i_am_color_264">#00000264</color>
+    <color name="i_am_color_265">#00000265</color>
+    <color name="i_am_color_266">#00000266</color>
+    <color name="i_am_color_267">#00000267</color>
+    <color name="i_am_color_268">#00000268</color>
+    <color name="i_am_color_269">#00000269</color>
+    <color name="i_am_color_26a">#0000026a</color>
+    <color name="i_am_color_26b">#0000026b</color>
+    <color name="i_am_color_26c">#0000026c</color>
+    <color name="i_am_color_26d">#0000026d</color>
+    <color name="i_am_color_26e">#0000026e</color>
+    <color name="i_am_color_26f">#0000026f</color>
+    <color name="i_am_color_270">#00000270</color>
+    <color name="i_am_color_271">#00000271</color>
+    <color name="i_am_color_272">#00000272</color>
+    <color name="i_am_color_273">#00000273</color>
+    <color name="i_am_color_274">#00000274</color>
+    <color name="i_am_color_275">#00000275</color>
+    <color name="i_am_color_276">#00000276</color>
+    <color name="i_am_color_277">#00000277</color>
+    <color name="i_am_color_278">#00000278</color>
+    <color name="i_am_color_279">#00000279</color>
+    <color name="i_am_color_27a">#0000027a</color>
+    <color name="i_am_color_27b">#0000027b</color>
+    <color name="i_am_color_27c">#0000027c</color>
+    <color name="i_am_color_27d">#0000027d</color>
+    <color name="i_am_color_27e">#0000027e</color>
+    <color name="i_am_color_27f">#0000027f</color>
+    <color name="i_am_color_280">#00000280</color>
+    <color name="i_am_color_281">#00000281</color>
+    <color name="i_am_color_282">#00000282</color>
+    <color name="i_am_color_283">#00000283</color>
+    <color name="i_am_color_284">#00000284</color>
+    <color name="i_am_color_285">#00000285</color>
+    <color name="i_am_color_286">#00000286</color>
+    <color name="i_am_color_287">#00000287</color>
+    <color name="i_am_color_288">#00000288</color>
+    <color name="i_am_color_289">#00000289</color>
+    <color name="i_am_color_28a">#0000028a</color>
+    <color name="i_am_color_28b">#0000028b</color>
+    <color name="i_am_color_28c">#0000028c</color>
+    <color name="i_am_color_28d">#0000028d</color>
+    <color name="i_am_color_28e">#0000028e</color>
+    <color name="i_am_color_28f">#0000028f</color>
+    <color name="i_am_color_290">#00000290</color>
+    <color name="i_am_color_291">#00000291</color>
+    <color name="i_am_color_292">#00000292</color>
+    <color name="i_am_color_293">#00000293</color>
+    <color name="i_am_color_294">#00000294</color>
+    <color name="i_am_color_295">#00000295</color>
+    <color name="i_am_color_296">#00000296</color>
+    <color name="i_am_color_297">#00000297</color>
+    <color name="i_am_color_298">#00000298</color>
+    <color name="i_am_color_299">#00000299</color>
+    <color name="i_am_color_29a">#0000029a</color>
+    <color name="i_am_color_29b">#0000029b</color>
+    <color name="i_am_color_29c">#0000029c</color>
+    <color name="i_am_color_29d">#0000029d</color>
+    <color name="i_am_color_29e">#0000029e</color>
+    <color name="i_am_color_29f">#0000029f</color>
+    <color name="i_am_color_2a0">#000002a0</color>
+    <color name="i_am_color_2a1">#000002a1</color>
+    <color name="i_am_color_2a2">#000002a2</color>
+    <color name="i_am_color_2a3">#000002a3</color>
+    <color name="i_am_color_2a4">#000002a4</color>
+    <color name="i_am_color_2a5">#000002a5</color>
+    <color name="i_am_color_2a6">#000002a6</color>
+    <color name="i_am_color_2a7">#000002a7</color>
+    <color name="i_am_color_2a8">#000002a8</color>
+    <color name="i_am_color_2a9">#000002a9</color>
+    <color name="i_am_color_2aa">#000002aa</color>
+    <color name="i_am_color_2ab">#000002ab</color>
+    <color name="i_am_color_2ac">#000002ac</color>
+    <color name="i_am_color_2ad">#000002ad</color>
+    <color name="i_am_color_2ae">#000002ae</color>
+    <color name="i_am_color_2af">#000002af</color>
+    <color name="i_am_color_2b0">#000002b0</color>
+    <color name="i_am_color_2b1">#000002b1</color>
+    <color name="i_am_color_2b2">#000002b2</color>
+    <color name="i_am_color_2b3">#000002b3</color>
+    <color name="i_am_color_2b4">#000002b4</color>
+    <color name="i_am_color_2b5">#000002b5</color>
+    <color name="i_am_color_2b6">#000002b6</color>
+    <color name="i_am_color_2b7">#000002b7</color>
+    <color name="i_am_color_2b8">#000002b8</color>
+    <color name="i_am_color_2b9">#000002b9</color>
+    <color name="i_am_color_2ba">#000002ba</color>
+    <color name="i_am_color_2bb">#000002bb</color>
+    <color name="i_am_color_2bc">#000002bc</color>
+    <color name="i_am_color_2bd">#000002bd</color>
+    <color name="i_am_color_2be">#000002be</color>
+    <color name="i_am_color_2bf">#000002bf</color>
+    <color name="i_am_color_2c0">#000002c0</color>
+    <color name="i_am_color_2c1">#000002c1</color>
+    <color name="i_am_color_2c2">#000002c2</color>
+    <color name="i_am_color_2c3">#000002c3</color>
+    <color name="i_am_color_2c4">#000002c4</color>
+    <color name="i_am_color_2c5">#000002c5</color>
+    <color name="i_am_color_2c6">#000002c6</color>
+    <color name="i_am_color_2c7">#000002c7</color>
+    <color name="i_am_color_2c8">#000002c8</color>
+    <color name="i_am_color_2c9">#000002c9</color>
+    <color name="i_am_color_2ca">#000002ca</color>
+    <color name="i_am_color_2cb">#000002cb</color>
+    <color name="i_am_color_2cc">#000002cc</color>
+    <color name="i_am_color_2cd">#000002cd</color>
+    <color name="i_am_color_2ce">#000002ce</color>
+    <color name="i_am_color_2cf">#000002cf</color>
+    <color name="i_am_color_2d0">#000002d0</color>
+    <color name="i_am_color_2d1">#000002d1</color>
+    <color name="i_am_color_2d2">#000002d2</color>
+    <color name="i_am_color_2d3">#000002d3</color>
+    <color name="i_am_color_2d4">#000002d4</color>
+    <color name="i_am_color_2d5">#000002d5</color>
+    <color name="i_am_color_2d6">#000002d6</color>
+    <color name="i_am_color_2d7">#000002d7</color>
+    <color name="i_am_color_2d8">#000002d8</color>
+    <color name="i_am_color_2d9">#000002d9</color>
+    <color name="i_am_color_2da">#000002da</color>
+    <color name="i_am_color_2db">#000002db</color>
+    <color name="i_am_color_2dc">#000002dc</color>
+    <color name="i_am_color_2dd">#000002dd</color>
+    <color name="i_am_color_2de">#000002de</color>
+    <color name="i_am_color_2df">#000002df</color>
+    <color name="i_am_color_2e0">#000002e0</color>
+    <color name="i_am_color_2e1">#000002e1</color>
+    <color name="i_am_color_2e2">#000002e2</color>
+    <color name="i_am_color_2e3">#000002e3</color>
+    <color name="i_am_color_2e4">#000002e4</color>
+    <color name="i_am_color_2e5">#000002e5</color>
+    <color name="i_am_color_2e6">#000002e6</color>
+    <color name="i_am_color_2e7">#000002e7</color>
+    <color name="i_am_color_2e8">#000002e8</color>
+    <color name="i_am_color_2e9">#000002e9</color>
+    <color name="i_am_color_2ea">#000002ea</color>
+    <color name="i_am_color_2eb">#000002eb</color>
+    <color name="i_am_color_2ec">#000002ec</color>
+    <color name="i_am_color_2ed">#000002ed</color>
+    <color name="i_am_color_2ee">#000002ee</color>
+    <color name="i_am_color_2ef">#000002ef</color>
+    <color name="i_am_color_2f0">#000002f0</color>
+    <color name="i_am_color_2f1">#000002f1</color>
+    <color name="i_am_color_2f2">#000002f2</color>
+    <color name="i_am_color_2f3">#000002f3</color>
+    <color name="i_am_color_2f4">#000002f4</color>
+    <color name="i_am_color_2f5">#000002f5</color>
+    <color name="i_am_color_2f6">#000002f6</color>
+    <color name="i_am_color_2f7">#000002f7</color>
+    <color name="i_am_color_2f8">#000002f8</color>
+    <color name="i_am_color_2f9">#000002f9</color>
+    <color name="i_am_color_2fa">#000002fa</color>
+    <color name="i_am_color_2fb">#000002fb</color>
+    <color name="i_am_color_2fc">#000002fc</color>
+    <color name="i_am_color_2fd">#000002fd</color>
+    <color name="i_am_color_2fe">#000002fe</color>
+    <color name="i_am_color_2ff">#000002ff</color>
+    <color name="i_am_color_300">#00000300</color>
+    <color name="i_am_color_301">#00000301</color>
+    <color name="i_am_color_302">#00000302</color>
+    <color name="i_am_color_303">#00000303</color>
+    <color name="i_am_color_304">#00000304</color>
+    <color name="i_am_color_305">#00000305</color>
+    <color name="i_am_color_306">#00000306</color>
+    <color name="i_am_color_307">#00000307</color>
+    <color name="i_am_color_308">#00000308</color>
+    <color name="i_am_color_309">#00000309</color>
+    <color name="i_am_color_30a">#0000030a</color>
+    <color name="i_am_color_30b">#0000030b</color>
+    <color name="i_am_color_30c">#0000030c</color>
+    <color name="i_am_color_30d">#0000030d</color>
+    <color name="i_am_color_30e">#0000030e</color>
+    <color name="i_am_color_30f">#0000030f</color>
+    <color name="i_am_color_310">#00000310</color>
+    <color name="i_am_color_311">#00000311</color>
+    <color name="i_am_color_312">#00000312</color>
+    <color name="i_am_color_313">#00000313</color>
+    <color name="i_am_color_314">#00000314</color>
+    <color name="i_am_color_315">#00000315</color>
+    <color name="i_am_color_316">#00000316</color>
+    <color name="i_am_color_317">#00000317</color>
+    <color name="i_am_color_318">#00000318</color>
+    <color name="i_am_color_319">#00000319</color>
+    <color name="i_am_color_31a">#0000031a</color>
+    <color name="i_am_color_31b">#0000031b</color>
+    <color name="i_am_color_31c">#0000031c</color>
+    <color name="i_am_color_31d">#0000031d</color>
+    <color name="i_am_color_31e">#0000031e</color>
+    <color name="i_am_color_31f">#0000031f</color>
+    <color name="i_am_color_320">#00000320</color>
+    <color name="i_am_color_321">#00000321</color>
+    <color name="i_am_color_322">#00000322</color>
+    <color name="i_am_color_323">#00000323</color>
+    <color name="i_am_color_324">#00000324</color>
+    <color name="i_am_color_325">#00000325</color>
+    <color name="i_am_color_326">#00000326</color>
+    <color name="i_am_color_327">#00000327</color>
+    <color name="i_am_color_328">#00000328</color>
+    <color name="i_am_color_329">#00000329</color>
+    <color name="i_am_color_32a">#0000032a</color>
+    <color name="i_am_color_32b">#0000032b</color>
+    <color name="i_am_color_32c">#0000032c</color>
+    <color name="i_am_color_32d">#0000032d</color>
+    <color name="i_am_color_32e">#0000032e</color>
+    <color name="i_am_color_32f">#0000032f</color>
+    <color name="i_am_color_330">#00000330</color>
+    <color name="i_am_color_331">#00000331</color>
+    <color name="i_am_color_332">#00000332</color>
+    <color name="i_am_color_333">#00000333</color>
+    <color name="i_am_color_334">#00000334</color>
+    <color name="i_am_color_335">#00000335</color>
+    <color name="i_am_color_336">#00000336</color>
+    <color name="i_am_color_337">#00000337</color>
+    <color name="i_am_color_338">#00000338</color>
+    <color name="i_am_color_339">#00000339</color>
+    <color name="i_am_color_33a">#0000033a</color>
+    <color name="i_am_color_33b">#0000033b</color>
+    <color name="i_am_color_33c">#0000033c</color>
+    <color name="i_am_color_33d">#0000033d</color>
+    <color name="i_am_color_33e">#0000033e</color>
+    <color name="i_am_color_33f">#0000033f</color>
+    <color name="i_am_color_340">#00000340</color>
+    <color name="i_am_color_341">#00000341</color>
+    <color name="i_am_color_342">#00000342</color>
+    <color name="i_am_color_343">#00000343</color>
+    <color name="i_am_color_344">#00000344</color>
+    <color name="i_am_color_345">#00000345</color>
+    <color name="i_am_color_346">#00000346</color>
+    <color name="i_am_color_347">#00000347</color>
+    <color name="i_am_color_348">#00000348</color>
+    <color name="i_am_color_349">#00000349</color>
+    <color name="i_am_color_34a">#0000034a</color>
+    <color name="i_am_color_34b">#0000034b</color>
+    <color name="i_am_color_34c">#0000034c</color>
+    <color name="i_am_color_34d">#0000034d</color>
+    <color name="i_am_color_34e">#0000034e</color>
+    <color name="i_am_color_34f">#0000034f</color>
+    <color name="i_am_color_350">#00000350</color>
+    <color name="i_am_color_351">#00000351</color>
+    <color name="i_am_color_352">#00000352</color>
+    <color name="i_am_color_353">#00000353</color>
+    <color name="i_am_color_354">#00000354</color>
+    <color name="i_am_color_355">#00000355</color>
+    <color name="i_am_color_356">#00000356</color>
+    <color name="i_am_color_357">#00000357</color>
+    <color name="i_am_color_358">#00000358</color>
+    <color name="i_am_color_359">#00000359</color>
+    <color name="i_am_color_35a">#0000035a</color>
+    <color name="i_am_color_35b">#0000035b</color>
+    <color name="i_am_color_35c">#0000035c</color>
+    <color name="i_am_color_35d">#0000035d</color>
+    <color name="i_am_color_35e">#0000035e</color>
+    <color name="i_am_color_35f">#0000035f</color>
+    <color name="i_am_color_360">#00000360</color>
+    <color name="i_am_color_361">#00000361</color>
+    <color name="i_am_color_362">#00000362</color>
+    <color name="i_am_color_363">#00000363</color>
+    <color name="i_am_color_364">#00000364</color>
+    <color name="i_am_color_365">#00000365</color>
+    <color name="i_am_color_366">#00000366</color>
+    <color name="i_am_color_367">#00000367</color>
+    <color name="i_am_color_368">#00000368</color>
+    <color name="i_am_color_369">#00000369</color>
+    <color name="i_am_color_36a">#0000036a</color>
+    <color name="i_am_color_36b">#0000036b</color>
+    <color name="i_am_color_36c">#0000036c</color>
+    <color name="i_am_color_36d">#0000036d</color>
+    <color name="i_am_color_36e">#0000036e</color>
+    <color name="i_am_color_36f">#0000036f</color>
+    <color name="i_am_color_370">#00000370</color>
+    <color name="i_am_color_371">#00000371</color>
+    <color name="i_am_color_372">#00000372</color>
+    <color name="i_am_color_373">#00000373</color>
+    <color name="i_am_color_374">#00000374</color>
+    <color name="i_am_color_375">#00000375</color>
+    <color name="i_am_color_376">#00000376</color>
+    <color name="i_am_color_377">#00000377</color>
+    <color name="i_am_color_378">#00000378</color>
+    <color name="i_am_color_379">#00000379</color>
+    <color name="i_am_color_37a">#0000037a</color>
+    <color name="i_am_color_37b">#0000037b</color>
+    <color name="i_am_color_37c">#0000037c</color>
+    <color name="i_am_color_37d">#0000037d</color>
+    <color name="i_am_color_37e">#0000037e</color>
+    <color name="i_am_color_37f">#0000037f</color>
+    <color name="i_am_color_380">#00000380</color>
+    <color name="i_am_color_381">#00000381</color>
+    <color name="i_am_color_382">#00000382</color>
+    <color name="i_am_color_383">#00000383</color>
+    <color name="i_am_color_384">#00000384</color>
+    <color name="i_am_color_385">#00000385</color>
+    <color name="i_am_color_386">#00000386</color>
+    <color name="i_am_color_387">#00000387</color>
+    <color name="i_am_color_388">#00000388</color>
+    <color name="i_am_color_389">#00000389</color>
+    <color name="i_am_color_38a">#0000038a</color>
+    <color name="i_am_color_38b">#0000038b</color>
+    <color name="i_am_color_38c">#0000038c</color>
+    <color name="i_am_color_38d">#0000038d</color>
+    <color name="i_am_color_38e">#0000038e</color>
+    <color name="i_am_color_38f">#0000038f</color>
+    <color name="i_am_color_390">#00000390</color>
+    <color name="i_am_color_391">#00000391</color>
+    <color name="i_am_color_392">#00000392</color>
+    <color name="i_am_color_393">#00000393</color>
+    <color name="i_am_color_394">#00000394</color>
+    <color name="i_am_color_395">#00000395</color>
+    <color name="i_am_color_396">#00000396</color>
+    <color name="i_am_color_397">#00000397</color>
+    <color name="i_am_color_398">#00000398</color>
+    <color name="i_am_color_399">#00000399</color>
+    <color name="i_am_color_39a">#0000039a</color>
+    <color name="i_am_color_39b">#0000039b</color>
+    <color name="i_am_color_39c">#0000039c</color>
+    <color name="i_am_color_39d">#0000039d</color>
+    <color name="i_am_color_39e">#0000039e</color>
+    <color name="i_am_color_39f">#0000039f</color>
+    <color name="i_am_color_3a0">#000003a0</color>
+    <color name="i_am_color_3a1">#000003a1</color>
+    <color name="i_am_color_3a2">#000003a2</color>
+    <color name="i_am_color_3a3">#000003a3</color>
+    <color name="i_am_color_3a4">#000003a4</color>
+    <color name="i_am_color_3a5">#000003a5</color>
+    <color name="i_am_color_3a6">#000003a6</color>
+    <color name="i_am_color_3a7">#000003a7</color>
+    <color name="i_am_color_3a8">#000003a8</color>
+    <color name="i_am_color_3a9">#000003a9</color>
+    <color name="i_am_color_3aa">#000003aa</color>
+    <color name="i_am_color_3ab">#000003ab</color>
+    <color name="i_am_color_3ac">#000003ac</color>
+    <color name="i_am_color_3ad">#000003ad</color>
+    <color name="i_am_color_3ae">#000003ae</color>
+    <color name="i_am_color_3af">#000003af</color>
+    <color name="i_am_color_3b0">#000003b0</color>
+    <color name="i_am_color_3b1">#000003b1</color>
+    <color name="i_am_color_3b2">#000003b2</color>
+    <color name="i_am_color_3b3">#000003b3</color>
+    <color name="i_am_color_3b4">#000003b4</color>
+    <color name="i_am_color_3b5">#000003b5</color>
+    <color name="i_am_color_3b6">#000003b6</color>
+    <color name="i_am_color_3b7">#000003b7</color>
+    <color name="i_am_color_3b8">#000003b8</color>
+    <color name="i_am_color_3b9">#000003b9</color>
+    <color name="i_am_color_3ba">#000003ba</color>
+    <color name="i_am_color_3bb">#000003bb</color>
+    <color name="i_am_color_3bc">#000003bc</color>
+    <color name="i_am_color_3bd">#000003bd</color>
+    <color name="i_am_color_3be">#000003be</color>
+    <color name="i_am_color_3bf">#000003bf</color>
+    <color name="i_am_color_3c0">#000003c0</color>
+    <color name="i_am_color_3c1">#000003c1</color>
+    <color name="i_am_color_3c2">#000003c2</color>
+    <color name="i_am_color_3c3">#000003c3</color>
+    <color name="i_am_color_3c4">#000003c4</color>
+    <color name="i_am_color_3c5">#000003c5</color>
+    <color name="i_am_color_3c6">#000003c6</color>
+    <color name="i_am_color_3c7">#000003c7</color>
+    <color name="i_am_color_3c8">#000003c8</color>
+    <color name="i_am_color_3c9">#000003c9</color>
+    <color name="i_am_color_3ca">#000003ca</color>
+    <color name="i_am_color_3cb">#000003cb</color>
+    <color name="i_am_color_3cc">#000003cc</color>
+    <color name="i_am_color_3cd">#000003cd</color>
+    <color name="i_am_color_3ce">#000003ce</color>
+    <color name="i_am_color_3cf">#000003cf</color>
+    <color name="i_am_color_3d0">#000003d0</color>
+    <color name="i_am_color_3d1">#000003d1</color>
+    <color name="i_am_color_3d2">#000003d2</color>
+    <color name="i_am_color_3d3">#000003d3</color>
+    <color name="i_am_color_3d4">#000003d4</color>
+    <color name="i_am_color_3d5">#000003d5</color>
+    <color name="i_am_color_3d6">#000003d6</color>
+    <color name="i_am_color_3d7">#000003d7</color>
+    <color name="i_am_color_3d8">#000003d8</color>
+    <color name="i_am_color_3d9">#000003d9</color>
+    <color name="i_am_color_3da">#000003da</color>
+    <color name="i_am_color_3db">#000003db</color>
+    <color name="i_am_color_3dc">#000003dc</color>
+    <color name="i_am_color_3dd">#000003dd</color>
+    <color name="i_am_color_3de">#000003de</color>
+    <color name="i_am_color_3df">#000003df</color>
+    <color name="i_am_color_3e0">#000003e0</color>
+    <color name="i_am_color_3e1">#000003e1</color>
+    <color name="i_am_color_3e2">#000003e2</color>
+    <color name="i_am_color_3e3">#000003e3</color>
+    <color name="i_am_color_3e4">#000003e4</color>
+    <color name="i_am_color_3e5">#000003e5</color>
+    <color name="i_am_color_3e6">#000003e6</color>
+    <color name="i_am_color_3e7">#000003e7</color>
+    <color name="i_am_color_3e8">#000003e8</color>
+    <color name="i_am_color_3e9">#000003e9</color>
+    <color name="i_am_color_3ea">#000003ea</color>
+    <color name="i_am_color_3eb">#000003eb</color>
+    <color name="i_am_color_3ec">#000003ec</color>
+    <color name="i_am_color_3ed">#000003ed</color>
+    <color name="i_am_color_3ee">#000003ee</color>
+    <color name="i_am_color_3ef">#000003ef</color>
+    <color name="i_am_color_3f0">#000003f0</color>
+    <color name="i_am_color_3f1">#000003f1</color>
+    <color name="i_am_color_3f2">#000003f2</color>
+    <color name="i_am_color_3f3">#000003f3</color>
+    <color name="i_am_color_3f4">#000003f4</color>
+    <color name="i_am_color_3f5">#000003f5</color>
+    <color name="i_am_color_3f6">#000003f6</color>
+    <color name="i_am_color_3f7">#000003f7</color>
+    <color name="i_am_color_3f8">#000003f8</color>
+    <color name="i_am_color_3f9">#000003f9</color>
+    <color name="i_am_color_3fa">#000003fa</color>
+    <color name="i_am_color_3fb">#000003fb</color>
+    <color name="i_am_color_3fc">#000003fc</color>
+    <color name="i_am_color_3fd">#000003fd</color>
+    <color name="i_am_color_3fe">#000003fe</color>
+    <color name="i_am_color_3ff">#000003ff</color>
+    <color name="i_am_color_400">#00000400</color>
+    <color name="i_am_color_401">#00000401</color>
+    <color name="i_am_color_402">#00000402</color>
+    <color name="i_am_color_403">#00000403</color>
+    <color name="i_am_color_404">#00000404</color>
+    <color name="i_am_color_405">#00000405</color>
+    <color name="i_am_color_406">#00000406</color>
+    <color name="i_am_color_407">#00000407</color>
+    <color name="i_am_color_408">#00000408</color>
+    <color name="i_am_color_409">#00000409</color>
+    <color name="i_am_color_40a">#0000040a</color>
+    <color name="i_am_color_40b">#0000040b</color>
+    <color name="i_am_color_40c">#0000040c</color>
+    <color name="i_am_color_40d">#0000040d</color>
+    <color name="i_am_color_40e">#0000040e</color>
+    <color name="i_am_color_40f">#0000040f</color>
+    <color name="i_am_color_410">#00000410</color>
+    <color name="i_am_color_411">#00000411</color>
+    <color name="i_am_color_412">#00000412</color>
+    <color name="i_am_color_413">#00000413</color>
+    <color name="i_am_color_414">#00000414</color>
+    <color name="i_am_color_415">#00000415</color>
+    <color name="i_am_color_416">#00000416</color>
+    <color name="i_am_color_417">#00000417</color>
+    <color name="i_am_color_418">#00000418</color>
+    <color name="i_am_color_419">#00000419</color>
+    <color name="i_am_color_41a">#0000041a</color>
+    <color name="i_am_color_41b">#0000041b</color>
+    <color name="i_am_color_41c">#0000041c</color>
+    <color name="i_am_color_41d">#0000041d</color>
+    <color name="i_am_color_41e">#0000041e</color>
+    <color name="i_am_color_41f">#0000041f</color>
+    <color name="i_am_color_420">#00000420</color>
+    <color name="i_am_color_421">#00000421</color>
+    <color name="i_am_color_422">#00000422</color>
+    <color name="i_am_color_423">#00000423</color>
+    <color name="i_am_color_424">#00000424</color>
+    <color name="i_am_color_425">#00000425</color>
+    <color name="i_am_color_426">#00000426</color>
+    <color name="i_am_color_427">#00000427</color>
+    <color name="i_am_color_428">#00000428</color>
+    <color name="i_am_color_429">#00000429</color>
+    <color name="i_am_color_42a">#0000042a</color>
+    <color name="i_am_color_42b">#0000042b</color>
+    <color name="i_am_color_42c">#0000042c</color>
+    <color name="i_am_color_42d">#0000042d</color>
+    <color name="i_am_color_42e">#0000042e</color>
+    <color name="i_am_color_42f">#0000042f</color>
+    <color name="i_am_color_430">#00000430</color>
+    <color name="i_am_color_431">#00000431</color>
+    <color name="i_am_color_432">#00000432</color>
+    <color name="i_am_color_433">#00000433</color>
+    <color name="i_am_color_434">#00000434</color>
+    <color name="i_am_color_435">#00000435</color>
+    <color name="i_am_color_436">#00000436</color>
+    <color name="i_am_color_437">#00000437</color>
+    <color name="i_am_color_438">#00000438</color>
+    <color name="i_am_color_439">#00000439</color>
+    <color name="i_am_color_43a">#0000043a</color>
+    <color name="i_am_color_43b">#0000043b</color>
+    <color name="i_am_color_43c">#0000043c</color>
+    <color name="i_am_color_43d">#0000043d</color>
+    <color name="i_am_color_43e">#0000043e</color>
+    <color name="i_am_color_43f">#0000043f</color>
+    <color name="i_am_color_440">#00000440</color>
+    <color name="i_am_color_441">#00000441</color>
+    <color name="i_am_color_442">#00000442</color>
+    <color name="i_am_color_443">#00000443</color>
+    <color name="i_am_color_444">#00000444</color>
+    <color name="i_am_color_445">#00000445</color>
+    <color name="i_am_color_446">#00000446</color>
+    <color name="i_am_color_447">#00000447</color>
+    <color name="i_am_color_448">#00000448</color>
+    <color name="i_am_color_449">#00000449</color>
+    <color name="i_am_color_44a">#0000044a</color>
+    <color name="i_am_color_44b">#0000044b</color>
+    <color name="i_am_color_44c">#0000044c</color>
+    <color name="i_am_color_44d">#0000044d</color>
+    <color name="i_am_color_44e">#0000044e</color>
+    <color name="i_am_color_44f">#0000044f</color>
+    <color name="i_am_color_450">#00000450</color>
+    <color name="i_am_color_451">#00000451</color>
+    <color name="i_am_color_452">#00000452</color>
+    <color name="i_am_color_453">#00000453</color>
+    <color name="i_am_color_454">#00000454</color>
+    <color name="i_am_color_455">#00000455</color>
+    <color name="i_am_color_456">#00000456</color>
+    <color name="i_am_color_457">#00000457</color>
+    <color name="i_am_color_458">#00000458</color>
+    <color name="i_am_color_459">#00000459</color>
+    <color name="i_am_color_45a">#0000045a</color>
+    <color name="i_am_color_45b">#0000045b</color>
+    <color name="i_am_color_45c">#0000045c</color>
+    <color name="i_am_color_45d">#0000045d</color>
+    <color name="i_am_color_45e">#0000045e</color>
+    <color name="i_am_color_45f">#0000045f</color>
+    <color name="i_am_color_460">#00000460</color>
+    <color name="i_am_color_461">#00000461</color>
+    <color name="i_am_color_462">#00000462</color>
+    <color name="i_am_color_463">#00000463</color>
+    <color name="i_am_color_464">#00000464</color>
+    <color name="i_am_color_465">#00000465</color>
+    <color name="i_am_color_466">#00000466</color>
+    <color name="i_am_color_467">#00000467</color>
+    <color name="i_am_color_468">#00000468</color>
+    <color name="i_am_color_469">#00000469</color>
+    <color name="i_am_color_46a">#0000046a</color>
+    <color name="i_am_color_46b">#0000046b</color>
+    <color name="i_am_color_46c">#0000046c</color>
+    <color name="i_am_color_46d">#0000046d</color>
+    <color name="i_am_color_46e">#0000046e</color>
+    <color name="i_am_color_46f">#0000046f</color>
+    <color name="i_am_color_470">#00000470</color>
+    <color name="i_am_color_471">#00000471</color>
+    <color name="i_am_color_472">#00000472</color>
+    <color name="i_am_color_473">#00000473</color>
+    <color name="i_am_color_474">#00000474</color>
+    <color name="i_am_color_475">#00000475</color>
+    <color name="i_am_color_476">#00000476</color>
+    <color name="i_am_color_477">#00000477</color>
+    <color name="i_am_color_478">#00000478</color>
+    <color name="i_am_color_479">#00000479</color>
+    <color name="i_am_color_47a">#0000047a</color>
+    <color name="i_am_color_47b">#0000047b</color>
+    <color name="i_am_color_47c">#0000047c</color>
+    <color name="i_am_color_47d">#0000047d</color>
+    <color name="i_am_color_47e">#0000047e</color>
+    <color name="i_am_color_47f">#0000047f</color>
+    <color name="i_am_color_480">#00000480</color>
+    <color name="i_am_color_481">#00000481</color>
+    <color name="i_am_color_482">#00000482</color>
+    <color name="i_am_color_483">#00000483</color>
+    <color name="i_am_color_484">#00000484</color>
+    <color name="i_am_color_485">#00000485</color>
+    <color name="i_am_color_486">#00000486</color>
+    <color name="i_am_color_487">#00000487</color>
+    <color name="i_am_color_488">#00000488</color>
+    <color name="i_am_color_489">#00000489</color>
+    <color name="i_am_color_48a">#0000048a</color>
+    <color name="i_am_color_48b">#0000048b</color>
+    <color name="i_am_color_48c">#0000048c</color>
+    <color name="i_am_color_48d">#0000048d</color>
+    <color name="i_am_color_48e">#0000048e</color>
+    <color name="i_am_color_48f">#0000048f</color>
+    <color name="i_am_color_490">#00000490</color>
+    <color name="i_am_color_491">#00000491</color>
+    <color name="i_am_color_492">#00000492</color>
+    <color name="i_am_color_493">#00000493</color>
+    <color name="i_am_color_494">#00000494</color>
+    <color name="i_am_color_495">#00000495</color>
+    <color name="i_am_color_496">#00000496</color>
+    <color name="i_am_color_497">#00000497</color>
+    <color name="i_am_color_498">#00000498</color>
+    <color name="i_am_color_499">#00000499</color>
+    <color name="i_am_color_49a">#0000049a</color>
+    <color name="i_am_color_49b">#0000049b</color>
+    <color name="i_am_color_49c">#0000049c</color>
+    <color name="i_am_color_49d">#0000049d</color>
+    <color name="i_am_color_49e">#0000049e</color>
+    <color name="i_am_color_49f">#0000049f</color>
+    <color name="i_am_color_4a0">#000004a0</color>
+    <color name="i_am_color_4a1">#000004a1</color>
+    <color name="i_am_color_4a2">#000004a2</color>
+    <color name="i_am_color_4a3">#000004a3</color>
+    <color name="i_am_color_4a4">#000004a4</color>
+    <color name="i_am_color_4a5">#000004a5</color>
+    <color name="i_am_color_4a6">#000004a6</color>
+    <color name="i_am_color_4a7">#000004a7</color>
+    <color name="i_am_color_4a8">#000004a8</color>
+    <color name="i_am_color_4a9">#000004a9</color>
+    <color name="i_am_color_4aa">#000004aa</color>
+    <color name="i_am_color_4ab">#000004ab</color>
+    <color name="i_am_color_4ac">#000004ac</color>
+    <color name="i_am_color_4ad">#000004ad</color>
+    <color name="i_am_color_4ae">#000004ae</color>
+    <color name="i_am_color_4af">#000004af</color>
+    <color name="i_am_color_4b0">#000004b0</color>
+    <color name="i_am_color_4b1">#000004b1</color>
+    <color name="i_am_color_4b2">#000004b2</color>
+    <color name="i_am_color_4b3">#000004b3</color>
+    <color name="i_am_color_4b4">#000004b4</color>
+    <color name="i_am_color_4b5">#000004b5</color>
+    <color name="i_am_color_4b6">#000004b6</color>
+    <color name="i_am_color_4b7">#000004b7</color>
+    <color name="i_am_color_4b8">#000004b8</color>
+    <color name="i_am_color_4b9">#000004b9</color>
+    <color name="i_am_color_4ba">#000004ba</color>
+    <color name="i_am_color_4bb">#000004bb</color>
+    <color name="i_am_color_4bc">#000004bc</color>
+    <color name="i_am_color_4bd">#000004bd</color>
+    <color name="i_am_color_4be">#000004be</color>
+    <color name="i_am_color_4bf">#000004bf</color>
+    <color name="i_am_color_4c0">#000004c0</color>
+    <color name="i_am_color_4c1">#000004c1</color>
+    <color name="i_am_color_4c2">#000004c2</color>
+    <color name="i_am_color_4c3">#000004c3</color>
+    <color name="i_am_color_4c4">#000004c4</color>
+    <color name="i_am_color_4c5">#000004c5</color>
+    <color name="i_am_color_4c6">#000004c6</color>
+    <color name="i_am_color_4c7">#000004c7</color>
+    <color name="i_am_color_4c8">#000004c8</color>
+    <color name="i_am_color_4c9">#000004c9</color>
+    <color name="i_am_color_4ca">#000004ca</color>
+    <color name="i_am_color_4cb">#000004cb</color>
+    <color name="i_am_color_4cc">#000004cc</color>
+    <color name="i_am_color_4cd">#000004cd</color>
+    <color name="i_am_color_4ce">#000004ce</color>
+    <color name="i_am_color_4cf">#000004cf</color>
+    <color name="i_am_color_4d0">#000004d0</color>
+    <color name="i_am_color_4d1">#000004d1</color>
+    <color name="i_am_color_4d2">#000004d2</color>
+    <color name="i_am_color_4d3">#000004d3</color>
+    <color name="i_am_color_4d4">#000004d4</color>
+    <color name="i_am_color_4d5">#000004d5</color>
+    <color name="i_am_color_4d6">#000004d6</color>
+    <color name="i_am_color_4d7">#000004d7</color>
+    <color name="i_am_color_4d8">#000004d8</color>
+    <color name="i_am_color_4d9">#000004d9</color>
+    <color name="i_am_color_4da">#000004da</color>
+    <color name="i_am_color_4db">#000004db</color>
+    <color name="i_am_color_4dc">#000004dc</color>
+    <color name="i_am_color_4dd">#000004dd</color>
+    <color name="i_am_color_4de">#000004de</color>
+    <color name="i_am_color_4df">#000004df</color>
+    <color name="i_am_color_4e0">#000004e0</color>
+    <color name="i_am_color_4e1">#000004e1</color>
+    <color name="i_am_color_4e2">#000004e2</color>
+    <color name="i_am_color_4e3">#000004e3</color>
+    <color name="i_am_color_4e4">#000004e4</color>
+    <color name="i_am_color_4e5">#000004e5</color>
+    <color name="i_am_color_4e6">#000004e6</color>
+    <color name="i_am_color_4e7">#000004e7</color>
+    <color name="i_am_color_4e8">#000004e8</color>
+    <color name="i_am_color_4e9">#000004e9</color>
+    <color name="i_am_color_4ea">#000004ea</color>
+    <color name="i_am_color_4eb">#000004eb</color>
+    <color name="i_am_color_4ec">#000004ec</color>
+    <color name="i_am_color_4ed">#000004ed</color>
+    <color name="i_am_color_4ee">#000004ee</color>
+    <color name="i_am_color_4ef">#000004ef</color>
+    <color name="i_am_color_4f0">#000004f0</color>
+    <color name="i_am_color_4f1">#000004f1</color>
+    <color name="i_am_color_4f2">#000004f2</color>
+    <color name="i_am_color_4f3">#000004f3</color>
+    <color name="i_am_color_4f4">#000004f4</color>
+    <color name="i_am_color_4f5">#000004f5</color>
+    <color name="i_am_color_4f6">#000004f6</color>
+    <color name="i_am_color_4f7">#000004f7</color>
+    <color name="i_am_color_4f8">#000004f8</color>
+    <color name="i_am_color_4f9">#000004f9</color>
+    <color name="i_am_color_4fa">#000004fa</color>
+    <color name="i_am_color_4fb">#000004fb</color>
+    <color name="i_am_color_4fc">#000004fc</color>
+    <color name="i_am_color_4fd">#000004fd</color>
+    <color name="i_am_color_4fe">#000004fe</color>
+    <color name="i_am_color_4ff">#000004ff</color>
+    <color name="i_am_color_500">#00000500</color>
+    <color name="i_am_color_501">#00000501</color>
+    <color name="i_am_color_502">#00000502</color>
+    <color name="i_am_color_503">#00000503</color>
+    <color name="i_am_color_504">#00000504</color>
+    <color name="i_am_color_505">#00000505</color>
+    <color name="i_am_color_506">#00000506</color>
+    <color name="i_am_color_507">#00000507</color>
+    <color name="i_am_color_508">#00000508</color>
+    <color name="i_am_color_509">#00000509</color>
+    <color name="i_am_color_50a">#0000050a</color>
+    <color name="i_am_color_50b">#0000050b</color>
+    <color name="i_am_color_50c">#0000050c</color>
+    <color name="i_am_color_50d">#0000050d</color>
+    <color name="i_am_color_50e">#0000050e</color>
+    <color name="i_am_color_50f">#0000050f</color>
+    <color name="i_am_color_510">#00000510</color>
+    <color name="i_am_color_511">#00000511</color>
+    <color name="i_am_color_512">#00000512</color>
+    <color name="i_am_color_513">#00000513</color>
+    <color name="i_am_color_514">#00000514</color>
+    <color name="i_am_color_515">#00000515</color>
+    <color name="i_am_color_516">#00000516</color>
+    <color name="i_am_color_517">#00000517</color>
+    <color name="i_am_color_518">#00000518</color>
+    <color name="i_am_color_519">#00000519</color>
+    <color name="i_am_color_51a">#0000051a</color>
+    <color name="i_am_color_51b">#0000051b</color>
+    <color name="i_am_color_51c">#0000051c</color>
+    <color name="i_am_color_51d">#0000051d</color>
+    <color name="i_am_color_51e">#0000051e</color>
+    <color name="i_am_color_51f">#0000051f</color>
+    <color name="i_am_color_520">#00000520</color>
+    <color name="i_am_color_521">#00000521</color>
+    <color name="i_am_color_522">#00000522</color>
+    <color name="i_am_color_523">#00000523</color>
+    <color name="i_am_color_524">#00000524</color>
+    <color name="i_am_color_525">#00000525</color>
+    <color name="i_am_color_526">#00000526</color>
+    <color name="i_am_color_527">#00000527</color>
+    <color name="i_am_color_528">#00000528</color>
+    <color name="i_am_color_529">#00000529</color>
+    <color name="i_am_color_52a">#0000052a</color>
+    <color name="i_am_color_52b">#0000052b</color>
+    <color name="i_am_color_52c">#0000052c</color>
+    <color name="i_am_color_52d">#0000052d</color>
+    <color name="i_am_color_52e">#0000052e</color>
+    <color name="i_am_color_52f">#0000052f</color>
+    <color name="i_am_color_530">#00000530</color>
+    <color name="i_am_color_531">#00000531</color>
+    <color name="i_am_color_532">#00000532</color>
+    <color name="i_am_color_533">#00000533</color>
+    <color name="i_am_color_534">#00000534</color>
+    <color name="i_am_color_535">#00000535</color>
+    <color name="i_am_color_536">#00000536</color>
+    <color name="i_am_color_537">#00000537</color>
+    <color name="i_am_color_538">#00000538</color>
+    <color name="i_am_color_539">#00000539</color>
+    <color name="i_am_color_53a">#0000053a</color>
+    <color name="i_am_color_53b">#0000053b</color>
+    <color name="i_am_color_53c">#0000053c</color>
+    <color name="i_am_color_53d">#0000053d</color>
+    <color name="i_am_color_53e">#0000053e</color>
+    <color name="i_am_color_53f">#0000053f</color>
+    <color name="i_am_color_540">#00000540</color>
+    <color name="i_am_color_541">#00000541</color>
+    <color name="i_am_color_542">#00000542</color>
+    <color name="i_am_color_543">#00000543</color>
+    <color name="i_am_color_544">#00000544</color>
+    <color name="i_am_color_545">#00000545</color>
+    <color name="i_am_color_546">#00000546</color>
+    <color name="i_am_color_547">#00000547</color>
+    <color name="i_am_color_548">#00000548</color>
+    <color name="i_am_color_549">#00000549</color>
+    <color name="i_am_color_54a">#0000054a</color>
+    <color name="i_am_color_54b">#0000054b</color>
+    <color name="i_am_color_54c">#0000054c</color>
+    <color name="i_am_color_54d">#0000054d</color>
+    <color name="i_am_color_54e">#0000054e</color>
+    <color name="i_am_color_54f">#0000054f</color>
+    <color name="i_am_color_550">#00000550</color>
+    <color name="i_am_color_551">#00000551</color>
+    <color name="i_am_color_552">#00000552</color>
+    <color name="i_am_color_553">#00000553</color>
+    <color name="i_am_color_554">#00000554</color>
+    <color name="i_am_color_555">#00000555</color>
+    <color name="i_am_color_556">#00000556</color>
+    <color name="i_am_color_557">#00000557</color>
+    <color name="i_am_color_558">#00000558</color>
+    <color name="i_am_color_559">#00000559</color>
+    <color name="i_am_color_55a">#0000055a</color>
+    <color name="i_am_color_55b">#0000055b</color>
+    <color name="i_am_color_55c">#0000055c</color>
+    <color name="i_am_color_55d">#0000055d</color>
+    <color name="i_am_color_55e">#0000055e</color>
+    <color name="i_am_color_55f">#0000055f</color>
+    <color name="i_am_color_560">#00000560</color>
+    <color name="i_am_color_561">#00000561</color>
+    <color name="i_am_color_562">#00000562</color>
+    <color name="i_am_color_563">#00000563</color>
+    <color name="i_am_color_564">#00000564</color>
+    <color name="i_am_color_565">#00000565</color>
+    <color name="i_am_color_566">#00000566</color>
+    <color name="i_am_color_567">#00000567</color>
+    <color name="i_am_color_568">#00000568</color>
+    <color name="i_am_color_569">#00000569</color>
+    <color name="i_am_color_56a">#0000056a</color>
+    <color name="i_am_color_56b">#0000056b</color>
+    <color name="i_am_color_56c">#0000056c</color>
+    <color name="i_am_color_56d">#0000056d</color>
+    <color name="i_am_color_56e">#0000056e</color>
+    <color name="i_am_color_56f">#0000056f</color>
+    <color name="i_am_color_570">#00000570</color>
+    <color name="i_am_color_571">#00000571</color>
+    <color name="i_am_color_572">#00000572</color>
+    <color name="i_am_color_573">#00000573</color>
+    <color name="i_am_color_574">#00000574</color>
+    <color name="i_am_color_575">#00000575</color>
+    <color name="i_am_color_576">#00000576</color>
+    <color name="i_am_color_577">#00000577</color>
+    <color name="i_am_color_578">#00000578</color>
+    <color name="i_am_color_579">#00000579</color>
+    <color name="i_am_color_57a">#0000057a</color>
+    <color name="i_am_color_57b">#0000057b</color>
+    <color name="i_am_color_57c">#0000057c</color>
+    <color name="i_am_color_57d">#0000057d</color>
+    <color name="i_am_color_57e">#0000057e</color>
+    <color name="i_am_color_57f">#0000057f</color>
+    <color name="i_am_color_580">#00000580</color>
+    <color name="i_am_color_581">#00000581</color>
+    <color name="i_am_color_582">#00000582</color>
+    <color name="i_am_color_583">#00000583</color>
+    <color name="i_am_color_584">#00000584</color>
+    <color name="i_am_color_585">#00000585</color>
+    <color name="i_am_color_586">#00000586</color>
+    <color name="i_am_color_587">#00000587</color>
+    <color name="i_am_color_588">#00000588</color>
+    <color name="i_am_color_589">#00000589</color>
+    <color name="i_am_color_58a">#0000058a</color>
+    <color name="i_am_color_58b">#0000058b</color>
+    <color name="i_am_color_58c">#0000058c</color>
+    <color name="i_am_color_58d">#0000058d</color>
+    <color name="i_am_color_58e">#0000058e</color>
+    <color name="i_am_color_58f">#0000058f</color>
+    <color name="i_am_color_590">#00000590</color>
+    <color name="i_am_color_591">#00000591</color>
+    <color name="i_am_color_592">#00000592</color>
+    <color name="i_am_color_593">#00000593</color>
+    <color name="i_am_color_594">#00000594</color>
+    <color name="i_am_color_595">#00000595</color>
+    <color name="i_am_color_596">#00000596</color>
+    <color name="i_am_color_597">#00000597</color>
+    <color name="i_am_color_598">#00000598</color>
+    <color name="i_am_color_599">#00000599</color>
+    <color name="i_am_color_59a">#0000059a</color>
+    <color name="i_am_color_59b">#0000059b</color>
+    <color name="i_am_color_59c">#0000059c</color>
+    <color name="i_am_color_59d">#0000059d</color>
+    <color name="i_am_color_59e">#0000059e</color>
+    <color name="i_am_color_59f">#0000059f</color>
+    <color name="i_am_color_5a0">#000005a0</color>
+    <color name="i_am_color_5a1">#000005a1</color>
+    <color name="i_am_color_5a2">#000005a2</color>
+    <color name="i_am_color_5a3">#000005a3</color>
+    <color name="i_am_color_5a4">#000005a4</color>
+    <color name="i_am_color_5a5">#000005a5</color>
+    <color name="i_am_color_5a6">#000005a6</color>
+    <color name="i_am_color_5a7">#000005a7</color>
+    <color name="i_am_color_5a8">#000005a8</color>
+    <color name="i_am_color_5a9">#000005a9</color>
+    <color name="i_am_color_5aa">#000005aa</color>
+    <color name="i_am_color_5ab">#000005ab</color>
+    <color name="i_am_color_5ac">#000005ac</color>
+    <color name="i_am_color_5ad">#000005ad</color>
+    <color name="i_am_color_5ae">#000005ae</color>
+    <color name="i_am_color_5af">#000005af</color>
+    <color name="i_am_color_5b0">#000005b0</color>
+    <color name="i_am_color_5b1">#000005b1</color>
+    <color name="i_am_color_5b2">#000005b2</color>
+    <color name="i_am_color_5b3">#000005b3</color>
+    <color name="i_am_color_5b4">#000005b4</color>
+    <color name="i_am_color_5b5">#000005b5</color>
+    <color name="i_am_color_5b6">#000005b6</color>
+    <color name="i_am_color_5b7">#000005b7</color>
+    <color name="i_am_color_5b8">#000005b8</color>
+    <color name="i_am_color_5b9">#000005b9</color>
+    <color name="i_am_color_5ba">#000005ba</color>
+    <color name="i_am_color_5bb">#000005bb</color>
+    <color name="i_am_color_5bc">#000005bc</color>
+    <color name="i_am_color_5bd">#000005bd</color>
+    <color name="i_am_color_5be">#000005be</color>
+    <color name="i_am_color_5bf">#000005bf</color>
+    <color name="i_am_color_5c0">#000005c0</color>
+    <color name="i_am_color_5c1">#000005c1</color>
+    <color name="i_am_color_5c2">#000005c2</color>
+    <color name="i_am_color_5c3">#000005c3</color>
+    <color name="i_am_color_5c4">#000005c4</color>
+    <color name="i_am_color_5c5">#000005c5</color>
+    <color name="i_am_color_5c6">#000005c6</color>
+    <color name="i_am_color_5c7">#000005c7</color>
+    <color name="i_am_color_5c8">#000005c8</color>
+    <color name="i_am_color_5c9">#000005c9</color>
+    <color name="i_am_color_5ca">#000005ca</color>
+    <color name="i_am_color_5cb">#000005cb</color>
+    <color name="i_am_color_5cc">#000005cc</color>
+    <color name="i_am_color_5cd">#000005cd</color>
+    <color name="i_am_color_5ce">#000005ce</color>
+    <color name="i_am_color_5cf">#000005cf</color>
+    <color name="i_am_color_5d0">#000005d0</color>
+    <color name="i_am_color_5d1">#000005d1</color>
+    <color name="i_am_color_5d2">#000005d2</color>
+    <color name="i_am_color_5d3">#000005d3</color>
+    <color name="i_am_color_5d4">#000005d4</color>
+    <color name="i_am_color_5d5">#000005d5</color>
+    <color name="i_am_color_5d6">#000005d6</color>
+    <color name="i_am_color_5d7">#000005d7</color>
+    <color name="i_am_color_5d8">#000005d8</color>
+    <color name="i_am_color_5d9">#000005d9</color>
+    <color name="i_am_color_5da">#000005da</color>
+    <color name="i_am_color_5db">#000005db</color>
+    <color name="i_am_color_5dc">#000005dc</color>
+    <color name="i_am_color_5dd">#000005dd</color>
+    <color name="i_am_color_5de">#000005de</color>
+    <color name="i_am_color_5df">#000005df</color>
+    <color name="i_am_color_5e0">#000005e0</color>
+    <color name="i_am_color_5e1">#000005e1</color>
+    <color name="i_am_color_5e2">#000005e2</color>
+    <color name="i_am_color_5e3">#000005e3</color>
+    <color name="i_am_color_5e4">#000005e4</color>
+    <color name="i_am_color_5e5">#000005e5</color>
+    <color name="i_am_color_5e6">#000005e6</color>
+    <color name="i_am_color_5e7">#000005e7</color>
+    <color name="i_am_color_5e8">#000005e8</color>
+    <color name="i_am_color_5e9">#000005e9</color>
+    <color name="i_am_color_5ea">#000005ea</color>
+    <color name="i_am_color_5eb">#000005eb</color>
+    <color name="i_am_color_5ec">#000005ec</color>
+    <color name="i_am_color_5ed">#000005ed</color>
+    <color name="i_am_color_5ee">#000005ee</color>
+    <color name="i_am_color_5ef">#000005ef</color>
+    <color name="i_am_color_5f0">#000005f0</color>
+    <color name="i_am_color_5f1">#000005f1</color>
+    <color name="i_am_color_5f2">#000005f2</color>
+    <color name="i_am_color_5f3">#000005f3</color>
+    <color name="i_am_color_5f4">#000005f4</color>
+    <color name="i_am_color_5f5">#000005f5</color>
+    <color name="i_am_color_5f6">#000005f6</color>
+    <color name="i_am_color_5f7">#000005f7</color>
+    <color name="i_am_color_5f8">#000005f8</color>
+    <color name="i_am_color_5f9">#000005f9</color>
+    <color name="i_am_color_5fa">#000005fa</color>
+    <color name="i_am_color_5fb">#000005fb</color>
+    <color name="i_am_color_5fc">#000005fc</color>
+    <color name="i_am_color_5fd">#000005fd</color>
+    <color name="i_am_color_5fe">#000005fe</color>
+    <color name="i_am_color_5ff">#000005ff</color>
+    <color name="i_am_color_600">#00000600</color>
+    <color name="i_am_color_601">#00000601</color>
+    <color name="i_am_color_602">#00000602</color>
+    <color name="i_am_color_603">#00000603</color>
+    <color name="i_am_color_604">#00000604</color>
+    <color name="i_am_color_605">#00000605</color>
+    <color name="i_am_color_606">#00000606</color>
+    <color name="i_am_color_607">#00000607</color>
+    <color name="i_am_color_608">#00000608</color>
+    <color name="i_am_color_609">#00000609</color>
+    <color name="i_am_color_60a">#0000060a</color>
+    <color name="i_am_color_60b">#0000060b</color>
+    <color name="i_am_color_60c">#0000060c</color>
+    <color name="i_am_color_60d">#0000060d</color>
+    <color name="i_am_color_60e">#0000060e</color>
+    <color name="i_am_color_60f">#0000060f</color>
+    <color name="i_am_color_610">#00000610</color>
+    <color name="i_am_color_611">#00000611</color>
+    <color name="i_am_color_612">#00000612</color>
+    <color name="i_am_color_613">#00000613</color>
+    <color name="i_am_color_614">#00000614</color>
+    <color name="i_am_color_615">#00000615</color>
+    <color name="i_am_color_616">#00000616</color>
+    <color name="i_am_color_617">#00000617</color>
+    <color name="i_am_color_618">#00000618</color>
+    <color name="i_am_color_619">#00000619</color>
+    <color name="i_am_color_61a">#0000061a</color>
+    <color name="i_am_color_61b">#0000061b</color>
+    <color name="i_am_color_61c">#0000061c</color>
+    <color name="i_am_color_61d">#0000061d</color>
+    <color name="i_am_color_61e">#0000061e</color>
+    <color name="i_am_color_61f">#0000061f</color>
+    <color name="i_am_color_620">#00000620</color>
+    <color name="i_am_color_621">#00000621</color>
+    <color name="i_am_color_622">#00000622</color>
+    <color name="i_am_color_623">#00000623</color>
+    <color name="i_am_color_624">#00000624</color>
+    <color name="i_am_color_625">#00000625</color>
+    <color name="i_am_color_626">#00000626</color>
+    <color name="i_am_color_627">#00000627</color>
+    <color name="i_am_color_628">#00000628</color>
+    <color name="i_am_color_629">#00000629</color>
+    <color name="i_am_color_62a">#0000062a</color>
+    <color name="i_am_color_62b">#0000062b</color>
+    <color name="i_am_color_62c">#0000062c</color>
+    <color name="i_am_color_62d">#0000062d</color>
+    <color name="i_am_color_62e">#0000062e</color>
+    <color name="i_am_color_62f">#0000062f</color>
+    <color name="i_am_color_630">#00000630</color>
+    <color name="i_am_color_631">#00000631</color>
+    <color name="i_am_color_632">#00000632</color>
+    <color name="i_am_color_633">#00000633</color>
+    <color name="i_am_color_634">#00000634</color>
+    <color name="i_am_color_635">#00000635</color>
+    <color name="i_am_color_636">#00000636</color>
+    <color name="i_am_color_637">#00000637</color>
+    <color name="i_am_color_638">#00000638</color>
+    <color name="i_am_color_639">#00000639</color>
+    <color name="i_am_color_63a">#0000063a</color>
+    <color name="i_am_color_63b">#0000063b</color>
+    <color name="i_am_color_63c">#0000063c</color>
+    <color name="i_am_color_63d">#0000063d</color>
+    <color name="i_am_color_63e">#0000063e</color>
+    <color name="i_am_color_63f">#0000063f</color>
+    <color name="i_am_color_640">#00000640</color>
+    <color name="i_am_color_641">#00000641</color>
+    <color name="i_am_color_642">#00000642</color>
+    <color name="i_am_color_643">#00000643</color>
+    <color name="i_am_color_644">#00000644</color>
+    <color name="i_am_color_645">#00000645</color>
+    <color name="i_am_color_646">#00000646</color>
+    <color name="i_am_color_647">#00000647</color>
+    <color name="i_am_color_648">#00000648</color>
+    <color name="i_am_color_649">#00000649</color>
+    <color name="i_am_color_64a">#0000064a</color>
+    <color name="i_am_color_64b">#0000064b</color>
+    <color name="i_am_color_64c">#0000064c</color>
+    <color name="i_am_color_64d">#0000064d</color>
+    <color name="i_am_color_64e">#0000064e</color>
+    <color name="i_am_color_64f">#0000064f</color>
+    <color name="i_am_color_650">#00000650</color>
+    <color name="i_am_color_651">#00000651</color>
+    <color name="i_am_color_652">#00000652</color>
+    <color name="i_am_color_653">#00000653</color>
+    <color name="i_am_color_654">#00000654</color>
+    <color name="i_am_color_655">#00000655</color>
+    <color name="i_am_color_656">#00000656</color>
+    <color name="i_am_color_657">#00000657</color>
+    <color name="i_am_color_658">#00000658</color>
+    <color name="i_am_color_659">#00000659</color>
+    <color name="i_am_color_65a">#0000065a</color>
+    <color name="i_am_color_65b">#0000065b</color>
+    <color name="i_am_color_65c">#0000065c</color>
+    <color name="i_am_color_65d">#0000065d</color>
+    <color name="i_am_color_65e">#0000065e</color>
+    <color name="i_am_color_65f">#0000065f</color>
+    <color name="i_am_color_660">#00000660</color>
+    <color name="i_am_color_661">#00000661</color>
+    <color name="i_am_color_662">#00000662</color>
+    <color name="i_am_color_663">#00000663</color>
+    <color name="i_am_color_664">#00000664</color>
+    <color name="i_am_color_665">#00000665</color>
+    <color name="i_am_color_666">#00000666</color>
+    <color name="i_am_color_667">#00000667</color>
+    <color name="i_am_color_668">#00000668</color>
+    <color name="i_am_color_669">#00000669</color>
+    <color name="i_am_color_66a">#0000066a</color>
+    <color name="i_am_color_66b">#0000066b</color>
+    <color name="i_am_color_66c">#0000066c</color>
+    <color name="i_am_color_66d">#0000066d</color>
+    <color name="i_am_color_66e">#0000066e</color>
+    <color name="i_am_color_66f">#0000066f</color>
+    <color name="i_am_color_670">#00000670</color>
+    <color name="i_am_color_671">#00000671</color>
+    <color name="i_am_color_672">#00000672</color>
+    <color name="i_am_color_673">#00000673</color>
+    <color name="i_am_color_674">#00000674</color>
+    <color name="i_am_color_675">#00000675</color>
+    <color name="i_am_color_676">#00000676</color>
+    <color name="i_am_color_677">#00000677</color>
+    <color name="i_am_color_678">#00000678</color>
+    <color name="i_am_color_679">#00000679</color>
+    <color name="i_am_color_67a">#0000067a</color>
+    <color name="i_am_color_67b">#0000067b</color>
+    <color name="i_am_color_67c">#0000067c</color>
+    <color name="i_am_color_67d">#0000067d</color>
+    <color name="i_am_color_67e">#0000067e</color>
+    <color name="i_am_color_67f">#0000067f</color>
+    <color name="i_am_color_680">#00000680</color>
+    <color name="i_am_color_681">#00000681</color>
+    <color name="i_am_color_682">#00000682</color>
+    <color name="i_am_color_683">#00000683</color>
+    <color name="i_am_color_684">#00000684</color>
+    <color name="i_am_color_685">#00000685</color>
+    <color name="i_am_color_686">#00000686</color>
+    <color name="i_am_color_687">#00000687</color>
+    <color name="i_am_color_688">#00000688</color>
+    <color name="i_am_color_689">#00000689</color>
+    <color name="i_am_color_68a">#0000068a</color>
+    <color name="i_am_color_68b">#0000068b</color>
+    <color name="i_am_color_68c">#0000068c</color>
+    <color name="i_am_color_68d">#0000068d</color>
+    <color name="i_am_color_68e">#0000068e</color>
+    <color name="i_am_color_68f">#0000068f</color>
+    <color name="i_am_color_690">#00000690</color>
+    <color name="i_am_color_691">#00000691</color>
+    <color name="i_am_color_692">#00000692</color>
+    <color name="i_am_color_693">#00000693</color>
+    <color name="i_am_color_694">#00000694</color>
+    <color name="i_am_color_695">#00000695</color>
+    <color name="i_am_color_696">#00000696</color>
+    <color name="i_am_color_697">#00000697</color>
+    <color name="i_am_color_698">#00000698</color>
+    <color name="i_am_color_699">#00000699</color>
+    <color name="i_am_color_69a">#0000069a</color>
+    <color name="i_am_color_69b">#0000069b</color>
+    <color name="i_am_color_69c">#0000069c</color>
+    <color name="i_am_color_69d">#0000069d</color>
+    <color name="i_am_color_69e">#0000069e</color>
+    <color name="i_am_color_69f">#0000069f</color>
+    <color name="i_am_color_6a0">#000006a0</color>
+    <color name="i_am_color_6a1">#000006a1</color>
+    <color name="i_am_color_6a2">#000006a2</color>
+    <color name="i_am_color_6a3">#000006a3</color>
+    <color name="i_am_color_6a4">#000006a4</color>
+    <color name="i_am_color_6a5">#000006a5</color>
+    <color name="i_am_color_6a6">#000006a6</color>
+    <color name="i_am_color_6a7">#000006a7</color>
+    <color name="i_am_color_6a8">#000006a8</color>
+    <color name="i_am_color_6a9">#000006a9</color>
+    <color name="i_am_color_6aa">#000006aa</color>
+    <color name="i_am_color_6ab">#000006ab</color>
+    <color name="i_am_color_6ac">#000006ac</color>
+    <color name="i_am_color_6ad">#000006ad</color>
+    <color name="i_am_color_6ae">#000006ae</color>
+    <color name="i_am_color_6af">#000006af</color>
+    <color name="i_am_color_6b0">#000006b0</color>
+    <color name="i_am_color_6b1">#000006b1</color>
+    <color name="i_am_color_6b2">#000006b2</color>
+    <color name="i_am_color_6b3">#000006b3</color>
+    <color name="i_am_color_6b4">#000006b4</color>
+    <color name="i_am_color_6b5">#000006b5</color>
+    <color name="i_am_color_6b6">#000006b6</color>
+    <color name="i_am_color_6b7">#000006b7</color>
+    <color name="i_am_color_6b8">#000006b8</color>
+    <color name="i_am_color_6b9">#000006b9</color>
+    <color name="i_am_color_6ba">#000006ba</color>
+    <color name="i_am_color_6bb">#000006bb</color>
+    <color name="i_am_color_6bc">#000006bc</color>
+    <color name="i_am_color_6bd">#000006bd</color>
+    <color name="i_am_color_6be">#000006be</color>
+    <color name="i_am_color_6bf">#000006bf</color>
+    <color name="i_am_color_6c0">#000006c0</color>
+    <color name="i_am_color_6c1">#000006c1</color>
+    <color name="i_am_color_6c2">#000006c2</color>
+    <color name="i_am_color_6c3">#000006c3</color>
+    <color name="i_am_color_6c4">#000006c4</color>
+    <color name="i_am_color_6c5">#000006c5</color>
+    <color name="i_am_color_6c6">#000006c6</color>
+    <color name="i_am_color_6c7">#000006c7</color>
+    <color name="i_am_color_6c8">#000006c8</color>
+    <color name="i_am_color_6c9">#000006c9</color>
+    <color name="i_am_color_6ca">#000006ca</color>
+    <color name="i_am_color_6cb">#000006cb</color>
+    <color name="i_am_color_6cc">#000006cc</color>
+    <color name="i_am_color_6cd">#000006cd</color>
+    <color name="i_am_color_6ce">#000006ce</color>
+    <color name="i_am_color_6cf">#000006cf</color>
+    <color name="i_am_color_6d0">#000006d0</color>
+    <color name="i_am_color_6d1">#000006d1</color>
+    <color name="i_am_color_6d2">#000006d2</color>
+    <color name="i_am_color_6d3">#000006d3</color>
+    <color name="i_am_color_6d4">#000006d4</color>
+    <color name="i_am_color_6d5">#000006d5</color>
+    <color name="i_am_color_6d6">#000006d6</color>
+    <color name="i_am_color_6d7">#000006d7</color>
+    <color name="i_am_color_6d8">#000006d8</color>
+    <color name="i_am_color_6d9">#000006d9</color>
+    <color name="i_am_color_6da">#000006da</color>
+    <color name="i_am_color_6db">#000006db</color>
+    <color name="i_am_color_6dc">#000006dc</color>
+    <color name="i_am_color_6dd">#000006dd</color>
+    <color name="i_am_color_6de">#000006de</color>
+    <color name="i_am_color_6df">#000006df</color>
+    <color name="i_am_color_6e0">#000006e0</color>
+    <color name="i_am_color_6e1">#000006e1</color>
+    <color name="i_am_color_6e2">#000006e2</color>
+    <color name="i_am_color_6e3">#000006e3</color>
+    <color name="i_am_color_6e4">#000006e4</color>
+    <color name="i_am_color_6e5">#000006e5</color>
+    <color name="i_am_color_6e6">#000006e6</color>
+    <color name="i_am_color_6e7">#000006e7</color>
+    <color name="i_am_color_6e8">#000006e8</color>
+    <color name="i_am_color_6e9">#000006e9</color>
+    <color name="i_am_color_6ea">#000006ea</color>
+    <color name="i_am_color_6eb">#000006eb</color>
+    <color name="i_am_color_6ec">#000006ec</color>
+    <color name="i_am_color_6ed">#000006ed</color>
+    <color name="i_am_color_6ee">#000006ee</color>
+    <color name="i_am_color_6ef">#000006ef</color>
+    <color name="i_am_color_6f0">#000006f0</color>
+    <color name="i_am_color_6f1">#000006f1</color>
+    <color name="i_am_color_6f2">#000006f2</color>
+    <color name="i_am_color_6f3">#000006f3</color>
+    <color name="i_am_color_6f4">#000006f4</color>
+    <color name="i_am_color_6f5">#000006f5</color>
+    <color name="i_am_color_6f6">#000006f6</color>
+    <color name="i_am_color_6f7">#000006f7</color>
+    <color name="i_am_color_6f8">#000006f8</color>
+    <color name="i_am_color_6f9">#000006f9</color>
+    <color name="i_am_color_6fa">#000006fa</color>
+    <color name="i_am_color_6fb">#000006fb</color>
+    <color name="i_am_color_6fc">#000006fc</color>
+    <color name="i_am_color_6fd">#000006fd</color>
+    <color name="i_am_color_6fe">#000006fe</color>
+    <color name="i_am_color_6ff">#000006ff</color>
+    <color name="i_am_color_700">#00000700</color>
+    <color name="i_am_color_701">#00000701</color>
+    <color name="i_am_color_702">#00000702</color>
+    <color name="i_am_color_703">#00000703</color>
+    <color name="i_am_color_704">#00000704</color>
+    <color name="i_am_color_705">#00000705</color>
+    <color name="i_am_color_706">#00000706</color>
+    <color name="i_am_color_707">#00000707</color>
+    <color name="i_am_color_708">#00000708</color>
+    <color name="i_am_color_709">#00000709</color>
+    <color name="i_am_color_70a">#0000070a</color>
+    <color name="i_am_color_70b">#0000070b</color>
+    <color name="i_am_color_70c">#0000070c</color>
+    <color name="i_am_color_70d">#0000070d</color>
+    <color name="i_am_color_70e">#0000070e</color>
+    <color name="i_am_color_70f">#0000070f</color>
+    <color name="i_am_color_710">#00000710</color>
+    <color name="i_am_color_711">#00000711</color>
+    <color name="i_am_color_712">#00000712</color>
+    <color name="i_am_color_713">#00000713</color>
+    <color name="i_am_color_714">#00000714</color>
+    <color name="i_am_color_715">#00000715</color>
+    <color name="i_am_color_716">#00000716</color>
+    <color name="i_am_color_717">#00000717</color>
+    <color name="i_am_color_718">#00000718</color>
+    <color name="i_am_color_719">#00000719</color>
+    <color name="i_am_color_71a">#0000071a</color>
+    <color name="i_am_color_71b">#0000071b</color>
+    <color name="i_am_color_71c">#0000071c</color>
+    <color name="i_am_color_71d">#0000071d</color>
+    <color name="i_am_color_71e">#0000071e</color>
+    <color name="i_am_color_71f">#0000071f</color>
+    <color name="i_am_color_720">#00000720</color>
+    <color name="i_am_color_721">#00000721</color>
+    <color name="i_am_color_722">#00000722</color>
+    <color name="i_am_color_723">#00000723</color>
+    <color name="i_am_color_724">#00000724</color>
+    <color name="i_am_color_725">#00000725</color>
+    <color name="i_am_color_726">#00000726</color>
+    <color name="i_am_color_727">#00000727</color>
+    <color name="i_am_color_728">#00000728</color>
+    <color name="i_am_color_729">#00000729</color>
+    <color name="i_am_color_72a">#0000072a</color>
+    <color name="i_am_color_72b">#0000072b</color>
+    <color name="i_am_color_72c">#0000072c</color>
+    <color name="i_am_color_72d">#0000072d</color>
+    <color name="i_am_color_72e">#0000072e</color>
+    <color name="i_am_color_72f">#0000072f</color>
+    <color name="i_am_color_730">#00000730</color>
+    <color name="i_am_color_731">#00000731</color>
+    <color name="i_am_color_732">#00000732</color>
+    <color name="i_am_color_733">#00000733</color>
+    <color name="i_am_color_734">#00000734</color>
+    <color name="i_am_color_735">#00000735</color>
+    <color name="i_am_color_736">#00000736</color>
+    <color name="i_am_color_737">#00000737</color>
+    <color name="i_am_color_738">#00000738</color>
+    <color name="i_am_color_739">#00000739</color>
+    <color name="i_am_color_73a">#0000073a</color>
+    <color name="i_am_color_73b">#0000073b</color>
+    <color name="i_am_color_73c">#0000073c</color>
+    <color name="i_am_color_73d">#0000073d</color>
+    <color name="i_am_color_73e">#0000073e</color>
+    <color name="i_am_color_73f">#0000073f</color>
+    <color name="i_am_color_740">#00000740</color>
+    <color name="i_am_color_741">#00000741</color>
+    <color name="i_am_color_742">#00000742</color>
+    <color name="i_am_color_743">#00000743</color>
+    <color name="i_am_color_744">#00000744</color>
+    <color name="i_am_color_745">#00000745</color>
+    <color name="i_am_color_746">#00000746</color>
+    <color name="i_am_color_747">#00000747</color>
+    <color name="i_am_color_748">#00000748</color>
+    <color name="i_am_color_749">#00000749</color>
+    <color name="i_am_color_74a">#0000074a</color>
+    <color name="i_am_color_74b">#0000074b</color>
+    <color name="i_am_color_74c">#0000074c</color>
+    <color name="i_am_color_74d">#0000074d</color>
+    <color name="i_am_color_74e">#0000074e</color>
+    <color name="i_am_color_74f">#0000074f</color>
+    <color name="i_am_color_750">#00000750</color>
+    <color name="i_am_color_751">#00000751</color>
+    <color name="i_am_color_752">#00000752</color>
+    <color name="i_am_color_753">#00000753</color>
+    <color name="i_am_color_754">#00000754</color>
+    <color name="i_am_color_755">#00000755</color>
+    <color name="i_am_color_756">#00000756</color>
+    <color name="i_am_color_757">#00000757</color>
+    <color name="i_am_color_758">#00000758</color>
+    <color name="i_am_color_759">#00000759</color>
+    <color name="i_am_color_75a">#0000075a</color>
+    <color name="i_am_color_75b">#0000075b</color>
+    <color name="i_am_color_75c">#0000075c</color>
+    <color name="i_am_color_75d">#0000075d</color>
+    <color name="i_am_color_75e">#0000075e</color>
+    <color name="i_am_color_75f">#0000075f</color>
+    <color name="i_am_color_760">#00000760</color>
+    <color name="i_am_color_761">#00000761</color>
+    <color name="i_am_color_762">#00000762</color>
+    <color name="i_am_color_763">#00000763</color>
+    <color name="i_am_color_764">#00000764</color>
+    <color name="i_am_color_765">#00000765</color>
+    <color name="i_am_color_766">#00000766</color>
+    <color name="i_am_color_767">#00000767</color>
+    <color name="i_am_color_768">#00000768</color>
+    <color name="i_am_color_769">#00000769</color>
+    <color name="i_am_color_76a">#0000076a</color>
+    <color name="i_am_color_76b">#0000076b</color>
+    <color name="i_am_color_76c">#0000076c</color>
+    <color name="i_am_color_76d">#0000076d</color>
+    <color name="i_am_color_76e">#0000076e</color>
+    <color name="i_am_color_76f">#0000076f</color>
+    <color name="i_am_color_770">#00000770</color>
+    <color name="i_am_color_771">#00000771</color>
+    <color name="i_am_color_772">#00000772</color>
+    <color name="i_am_color_773">#00000773</color>
+    <color name="i_am_color_774">#00000774</color>
+    <color name="i_am_color_775">#00000775</color>
+    <color name="i_am_color_776">#00000776</color>
+    <color name="i_am_color_777">#00000777</color>
+    <color name="i_am_color_778">#00000778</color>
+    <color name="i_am_color_779">#00000779</color>
+    <color name="i_am_color_77a">#0000077a</color>
+    <color name="i_am_color_77b">#0000077b</color>
+    <color name="i_am_color_77c">#0000077c</color>
+    <color name="i_am_color_77d">#0000077d</color>
+    <color name="i_am_color_77e">#0000077e</color>
+    <color name="i_am_color_77f">#0000077f</color>
+    <color name="i_am_color_780">#00000780</color>
+    <color name="i_am_color_781">#00000781</color>
+    <color name="i_am_color_782">#00000782</color>
+    <color name="i_am_color_783">#00000783</color>
+    <color name="i_am_color_784">#00000784</color>
+    <color name="i_am_color_785">#00000785</color>
+    <color name="i_am_color_786">#00000786</color>
+    <color name="i_am_color_787">#00000787</color>
+    <color name="i_am_color_788">#00000788</color>
+    <color name="i_am_color_789">#00000789</color>
+    <color name="i_am_color_78a">#0000078a</color>
+    <color name="i_am_color_78b">#0000078b</color>
+    <color name="i_am_color_78c">#0000078c</color>
+    <color name="i_am_color_78d">#0000078d</color>
+    <color name="i_am_color_78e">#0000078e</color>
+    <color name="i_am_color_78f">#0000078f</color>
+    <color name="i_am_color_790">#00000790</color>
+    <color name="i_am_color_791">#00000791</color>
+    <color name="i_am_color_792">#00000792</color>
+    <color name="i_am_color_793">#00000793</color>
+    <color name="i_am_color_794">#00000794</color>
+    <color name="i_am_color_795">#00000795</color>
+    <color name="i_am_color_796">#00000796</color>
+    <color name="i_am_color_797">#00000797</color>
+    <color name="i_am_color_798">#00000798</color>
+    <color name="i_am_color_799">#00000799</color>
+    <color name="i_am_color_79a">#0000079a</color>
+    <color name="i_am_color_79b">#0000079b</color>
+    <color name="i_am_color_79c">#0000079c</color>
+    <color name="i_am_color_79d">#0000079d</color>
+    <color name="i_am_color_79e">#0000079e</color>
+    <color name="i_am_color_79f">#0000079f</color>
+    <color name="i_am_color_7a0">#000007a0</color>
+    <color name="i_am_color_7a1">#000007a1</color>
+    <color name="i_am_color_7a2">#000007a2</color>
+    <color name="i_am_color_7a3">#000007a3</color>
+    <color name="i_am_color_7a4">#000007a4</color>
+    <color name="i_am_color_7a5">#000007a5</color>
+    <color name="i_am_color_7a6">#000007a6</color>
+    <color name="i_am_color_7a7">#000007a7</color>
+    <color name="i_am_color_7a8">#000007a8</color>
+    <color name="i_am_color_7a9">#000007a9</color>
+    <color name="i_am_color_7aa">#000007aa</color>
+    <color name="i_am_color_7ab">#000007ab</color>
+    <color name="i_am_color_7ac">#000007ac</color>
+    <color name="i_am_color_7ad">#000007ad</color>
+    <color name="i_am_color_7ae">#000007ae</color>
+    <color name="i_am_color_7af">#000007af</color>
+    <color name="i_am_color_7b0">#000007b0</color>
+    <color name="i_am_color_7b1">#000007b1</color>
+    <color name="i_am_color_7b2">#000007b2</color>
+    <color name="i_am_color_7b3">#000007b3</color>
+    <color name="i_am_color_7b4">#000007b4</color>
+    <color name="i_am_color_7b5">#000007b5</color>
+    <color name="i_am_color_7b6">#000007b6</color>
+    <color name="i_am_color_7b7">#000007b7</color>
+    <color name="i_am_color_7b8">#000007b8</color>
+    <color name="i_am_color_7b9">#000007b9</color>
+    <color name="i_am_color_7ba">#000007ba</color>
+    <color name="i_am_color_7bb">#000007bb</color>
+    <color name="i_am_color_7bc">#000007bc</color>
+    <color name="i_am_color_7bd">#000007bd</color>
+    <color name="i_am_color_7be">#000007be</color>
+    <color name="i_am_color_7bf">#000007bf</color>
+    <color name="i_am_color_7c0">#000007c0</color>
+    <color name="i_am_color_7c1">#000007c1</color>
+    <color name="i_am_color_7c2">#000007c2</color>
+    <color name="i_am_color_7c3">#000007c3</color>
+    <color name="i_am_color_7c4">#000007c4</color>
+    <color name="i_am_color_7c5">#000007c5</color>
+    <color name="i_am_color_7c6">#000007c6</color>
+    <color name="i_am_color_7c7">#000007c7</color>
+    <color name="i_am_color_7c8">#000007c8</color>
+    <color name="i_am_color_7c9">#000007c9</color>
+    <color name="i_am_color_7ca">#000007ca</color>
+    <color name="i_am_color_7cb">#000007cb</color>
+    <color name="i_am_color_7cc">#000007cc</color>
+    <color name="i_am_color_7cd">#000007cd</color>
+    <color name="i_am_color_7ce">#000007ce</color>
+    <color name="i_am_color_7cf">#000007cf</color>
+    <color name="i_am_color_7d0">#000007d0</color>
+    <color name="i_am_color_7d1">#000007d1</color>
+    <color name="i_am_color_7d2">#000007d2</color>
+    <color name="i_am_color_7d3">#000007d3</color>
+    <color name="i_am_color_7d4">#000007d4</color>
+    <color name="i_am_color_7d5">#000007d5</color>
+    <color name="i_am_color_7d6">#000007d6</color>
+    <color name="i_am_color_7d7">#000007d7</color>
+    <color name="i_am_color_7d8">#000007d8</color>
+    <color name="i_am_color_7d9">#000007d9</color>
+    <color name="i_am_color_7da">#000007da</color>
+    <color name="i_am_color_7db">#000007db</color>
+    <color name="i_am_color_7dc">#000007dc</color>
+    <color name="i_am_color_7dd">#000007dd</color>
+    <color name="i_am_color_7de">#000007de</color>
+    <color name="i_am_color_7df">#000007df</color>
+    <color name="i_am_color_7e0">#000007e0</color>
+    <color name="i_am_color_7e1">#000007e1</color>
+    <color name="i_am_color_7e2">#000007e2</color>
+    <color name="i_am_color_7e3">#000007e3</color>
+    <color name="i_am_color_7e4">#000007e4</color>
+    <color name="i_am_color_7e5">#000007e5</color>
+    <color name="i_am_color_7e6">#000007e6</color>
+    <color name="i_am_color_7e7">#000007e7</color>
+    <color name="i_am_color_7e8">#000007e8</color>
+    <color name="i_am_color_7e9">#000007e9</color>
+    <color name="i_am_color_7ea">#000007ea</color>
+    <color name="i_am_color_7eb">#000007eb</color>
+    <color name="i_am_color_7ec">#000007ec</color>
+    <color name="i_am_color_7ed">#000007ed</color>
+    <color name="i_am_color_7ee">#000007ee</color>
+    <color name="i_am_color_7ef">#000007ef</color>
+    <color name="i_am_color_7f0">#000007f0</color>
+    <color name="i_am_color_7f1">#000007f1</color>
+    <color name="i_am_color_7f2">#000007f2</color>
+    <color name="i_am_color_7f3">#000007f3</color>
+    <color name="i_am_color_7f4">#000007f4</color>
+    <color name="i_am_color_7f5">#000007f5</color>
+    <color name="i_am_color_7f6">#000007f6</color>
+    <color name="i_am_color_7f7">#000007f7</color>
+    <color name="i_am_color_7f8">#000007f8</color>
+    <color name="i_am_color_7f9">#000007f9</color>
+    <color name="i_am_color_7fa">#000007fa</color>
+    <color name="i_am_color_7fb">#000007fb</color>
+    <color name="i_am_color_7fc">#000007fc</color>
+    <color name="i_am_color_7fd">#000007fd</color>
+    <color name="i_am_color_7fe">#000007fe</color>
+    <color name="i_am_color_7ff">#000007ff</color>
+    <color name="i_am_color_800">#00000800</color>
+    <color name="i_am_color_801">#00000801</color>
+    <color name="i_am_color_802">#00000802</color>
+    <color name="i_am_color_803">#00000803</color>
+    <color name="i_am_color_804">#00000804</color>
+    <color name="i_am_color_805">#00000805</color>
+    <color name="i_am_color_806">#00000806</color>
+    <color name="i_am_color_807">#00000807</color>
+    <color name="i_am_color_808">#00000808</color>
+    <color name="i_am_color_809">#00000809</color>
+    <color name="i_am_color_80a">#0000080a</color>
+    <color name="i_am_color_80b">#0000080b</color>
+    <color name="i_am_color_80c">#0000080c</color>
+    <color name="i_am_color_80d">#0000080d</color>
+    <color name="i_am_color_80e">#0000080e</color>
+    <color name="i_am_color_80f">#0000080f</color>
+    <color name="i_am_color_810">#00000810</color>
+    <color name="i_am_color_811">#00000811</color>
+    <color name="i_am_color_812">#00000812</color>
+    <color name="i_am_color_813">#00000813</color>
+    <color name="i_am_color_814">#00000814</color>
+    <color name="i_am_color_815">#00000815</color>
+    <color name="i_am_color_816">#00000816</color>
+    <color name="i_am_color_817">#00000817</color>
+    <color name="i_am_color_818">#00000818</color>
+    <color name="i_am_color_819">#00000819</color>
+    <color name="i_am_color_81a">#0000081a</color>
+    <color name="i_am_color_81b">#0000081b</color>
+    <color name="i_am_color_81c">#0000081c</color>
+    <color name="i_am_color_81d">#0000081d</color>
+    <color name="i_am_color_81e">#0000081e</color>
+    <color name="i_am_color_81f">#0000081f</color>
+    <color name="i_am_color_820">#00000820</color>
+    <color name="i_am_color_821">#00000821</color>
+    <color name="i_am_color_822">#00000822</color>
+    <color name="i_am_color_823">#00000823</color>
+    <color name="i_am_color_824">#00000824</color>
+    <color name="i_am_color_825">#00000825</color>
+    <color name="i_am_color_826">#00000826</color>
+    <color name="i_am_color_827">#00000827</color>
+    <color name="i_am_color_828">#00000828</color>
+    <color name="i_am_color_829">#00000829</color>
+    <color name="i_am_color_82a">#0000082a</color>
+    <color name="i_am_color_82b">#0000082b</color>
+    <color name="i_am_color_82c">#0000082c</color>
+    <color name="i_am_color_82d">#0000082d</color>
+    <color name="i_am_color_82e">#0000082e</color>
+    <color name="i_am_color_82f">#0000082f</color>
+    <color name="i_am_color_830">#00000830</color>
+    <color name="i_am_color_831">#00000831</color>
+    <color name="i_am_color_832">#00000832</color>
+    <color name="i_am_color_833">#00000833</color>
+    <color name="i_am_color_834">#00000834</color>
+    <color name="i_am_color_835">#00000835</color>
+    <color name="i_am_color_836">#00000836</color>
+    <color name="i_am_color_837">#00000837</color>
+    <color name="i_am_color_838">#00000838</color>
+    <color name="i_am_color_839">#00000839</color>
+    <color name="i_am_color_83a">#0000083a</color>
+    <color name="i_am_color_83b">#0000083b</color>
+    <color name="i_am_color_83c">#0000083c</color>
+    <color name="i_am_color_83d">#0000083d</color>
+    <color name="i_am_color_83e">#0000083e</color>
+    <color name="i_am_color_83f">#0000083f</color>
+    <color name="i_am_color_840">#00000840</color>
+    <color name="i_am_color_841">#00000841</color>
+    <color name="i_am_color_842">#00000842</color>
+    <color name="i_am_color_843">#00000843</color>
+    <color name="i_am_color_844">#00000844</color>
+    <color name="i_am_color_845">#00000845</color>
+    <color name="i_am_color_846">#00000846</color>
+    <color name="i_am_color_847">#00000847</color>
+    <color name="i_am_color_848">#00000848</color>
+    <color name="i_am_color_849">#00000849</color>
+    <color name="i_am_color_84a">#0000084a</color>
+    <color name="i_am_color_84b">#0000084b</color>
+    <color name="i_am_color_84c">#0000084c</color>
+    <color name="i_am_color_84d">#0000084d</color>
+    <color name="i_am_color_84e">#0000084e</color>
+    <color name="i_am_color_84f">#0000084f</color>
+    <color name="i_am_color_850">#00000850</color>
+    <color name="i_am_color_851">#00000851</color>
+    <color name="i_am_color_852">#00000852</color>
+    <color name="i_am_color_853">#00000853</color>
+    <color name="i_am_color_854">#00000854</color>
+    <color name="i_am_color_855">#00000855</color>
+    <color name="i_am_color_856">#00000856</color>
+    <color name="i_am_color_857">#00000857</color>
+    <color name="i_am_color_858">#00000858</color>
+    <color name="i_am_color_859">#00000859</color>
+    <color name="i_am_color_85a">#0000085a</color>
+    <color name="i_am_color_85b">#0000085b</color>
+    <color name="i_am_color_85c">#0000085c</color>
+    <color name="i_am_color_85d">#0000085d</color>
+    <color name="i_am_color_85e">#0000085e</color>
+    <color name="i_am_color_85f">#0000085f</color>
+    <color name="i_am_color_860">#00000860</color>
+    <color name="i_am_color_861">#00000861</color>
+    <color name="i_am_color_862">#00000862</color>
+    <color name="i_am_color_863">#00000863</color>
+    <color name="i_am_color_864">#00000864</color>
+    <color name="i_am_color_865">#00000865</color>
+    <color name="i_am_color_866">#00000866</color>
+    <color name="i_am_color_867">#00000867</color>
+    <color name="i_am_color_868">#00000868</color>
+    <color name="i_am_color_869">#00000869</color>
+    <color name="i_am_color_86a">#0000086a</color>
+    <color name="i_am_color_86b">#0000086b</color>
+    <color name="i_am_color_86c">#0000086c</color>
+    <color name="i_am_color_86d">#0000086d</color>
+    <color name="i_am_color_86e">#0000086e</color>
+    <color name="i_am_color_86f">#0000086f</color>
+    <color name="i_am_color_870">#00000870</color>
+    <color name="i_am_color_871">#00000871</color>
+    <color name="i_am_color_872">#00000872</color>
+    <color name="i_am_color_873">#00000873</color>
+    <color name="i_am_color_874">#00000874</color>
+    <color name="i_am_color_875">#00000875</color>
+    <color name="i_am_color_876">#00000876</color>
+    <color name="i_am_color_877">#00000877</color>
+    <color name="i_am_color_878">#00000878</color>
+    <color name="i_am_color_879">#00000879</color>
+    <color name="i_am_color_87a">#0000087a</color>
+    <color name="i_am_color_87b">#0000087b</color>
+    <color name="i_am_color_87c">#0000087c</color>
+    <color name="i_am_color_87d">#0000087d</color>
+    <color name="i_am_color_87e">#0000087e</color>
+    <color name="i_am_color_87f">#0000087f</color>
+    <color name="i_am_color_880">#00000880</color>
+    <color name="i_am_color_881">#00000881</color>
+    <color name="i_am_color_882">#00000882</color>
+    <color name="i_am_color_883">#00000883</color>
+    <color name="i_am_color_884">#00000884</color>
+    <color name="i_am_color_885">#00000885</color>
+    <color name="i_am_color_886">#00000886</color>
+    <color name="i_am_color_887">#00000887</color>
+    <color name="i_am_color_888">#00000888</color>
+    <color name="i_am_color_889">#00000889</color>
+    <color name="i_am_color_88a">#0000088a</color>
+    <color name="i_am_color_88b">#0000088b</color>
+    <color name="i_am_color_88c">#0000088c</color>
+    <color name="i_am_color_88d">#0000088d</color>
+    <color name="i_am_color_88e">#0000088e</color>
+    <color name="i_am_color_88f">#0000088f</color>
+    <color name="i_am_color_890">#00000890</color>
+    <color name="i_am_color_891">#00000891</color>
+    <color name="i_am_color_892">#00000892</color>
+    <color name="i_am_color_893">#00000893</color>
+    <color name="i_am_color_894">#00000894</color>
+    <color name="i_am_color_895">#00000895</color>
+    <color name="i_am_color_896">#00000896</color>
+    <color name="i_am_color_897">#00000897</color>
+    <color name="i_am_color_898">#00000898</color>
+    <color name="i_am_color_899">#00000899</color>
+    <color name="i_am_color_89a">#0000089a</color>
+    <color name="i_am_color_89b">#0000089b</color>
+    <color name="i_am_color_89c">#0000089c</color>
+    <color name="i_am_color_89d">#0000089d</color>
+    <color name="i_am_color_89e">#0000089e</color>
+    <color name="i_am_color_89f">#0000089f</color>
+    <color name="i_am_color_8a0">#000008a0</color>
+    <color name="i_am_color_8a1">#000008a1</color>
+    <color name="i_am_color_8a2">#000008a2</color>
+    <color name="i_am_color_8a3">#000008a3</color>
+    <color name="i_am_color_8a4">#000008a4</color>
+    <color name="i_am_color_8a5">#000008a5</color>
+    <color name="i_am_color_8a6">#000008a6</color>
+    <color name="i_am_color_8a7">#000008a7</color>
+    <color name="i_am_color_8a8">#000008a8</color>
+    <color name="i_am_color_8a9">#000008a9</color>
+    <color name="i_am_color_8aa">#000008aa</color>
+    <color name="i_am_color_8ab">#000008ab</color>
+    <color name="i_am_color_8ac">#000008ac</color>
+    <color name="i_am_color_8ad">#000008ad</color>
+    <color name="i_am_color_8ae">#000008ae</color>
+    <color name="i_am_color_8af">#000008af</color>
+    <color name="i_am_color_8b0">#000008b0</color>
+    <color name="i_am_color_8b1">#000008b1</color>
+    <color name="i_am_color_8b2">#000008b2</color>
+    <color name="i_am_color_8b3">#000008b3</color>
+    <color name="i_am_color_8b4">#000008b4</color>
+    <color name="i_am_color_8b5">#000008b5</color>
+    <color name="i_am_color_8b6">#000008b6</color>
+    <color name="i_am_color_8b7">#000008b7</color>
+    <color name="i_am_color_8b8">#000008b8</color>
+    <color name="i_am_color_8b9">#000008b9</color>
+    <color name="i_am_color_8ba">#000008ba</color>
+    <color name="i_am_color_8bb">#000008bb</color>
+    <color name="i_am_color_8bc">#000008bc</color>
+    <color name="i_am_color_8bd">#000008bd</color>
+    <color name="i_am_color_8be">#000008be</color>
+    <color name="i_am_color_8bf">#000008bf</color>
+    <color name="i_am_color_8c0">#000008c0</color>
+    <color name="i_am_color_8c1">#000008c1</color>
+    <color name="i_am_color_8c2">#000008c2</color>
+    <color name="i_am_color_8c3">#000008c3</color>
+    <color name="i_am_color_8c4">#000008c4</color>
+    <color name="i_am_color_8c5">#000008c5</color>
+    <color name="i_am_color_8c6">#000008c6</color>
+    <color name="i_am_color_8c7">#000008c7</color>
+    <color name="i_am_color_8c8">#000008c8</color>
+    <color name="i_am_color_8c9">#000008c9</color>
+    <color name="i_am_color_8ca">#000008ca</color>
+    <color name="i_am_color_8cb">#000008cb</color>
+    <color name="i_am_color_8cc">#000008cc</color>
+    <color name="i_am_color_8cd">#000008cd</color>
+    <color name="i_am_color_8ce">#000008ce</color>
+    <color name="i_am_color_8cf">#000008cf</color>
+    <color name="i_am_color_8d0">#000008d0</color>
+    <color name="i_am_color_8d1">#000008d1</color>
+    <color name="i_am_color_8d2">#000008d2</color>
+    <color name="i_am_color_8d3">#000008d3</color>
+    <color name="i_am_color_8d4">#000008d4</color>
+    <color name="i_am_color_8d5">#000008d5</color>
+    <color name="i_am_color_8d6">#000008d6</color>
+    <color name="i_am_color_8d7">#000008d7</color>
+    <color name="i_am_color_8d8">#000008d8</color>
+    <color name="i_am_color_8d9">#000008d9</color>
+    <color name="i_am_color_8da">#000008da</color>
+    <color name="i_am_color_8db">#000008db</color>
+    <color name="i_am_color_8dc">#000008dc</color>
+    <color name="i_am_color_8dd">#000008dd</color>
+    <color name="i_am_color_8de">#000008de</color>
+    <color name="i_am_color_8df">#000008df</color>
+    <color name="i_am_color_8e0">#000008e0</color>
+    <color name="i_am_color_8e1">#000008e1</color>
+    <color name="i_am_color_8e2">#000008e2</color>
+    <color name="i_am_color_8e3">#000008e3</color>
+    <color name="i_am_color_8e4">#000008e4</color>
+    <color name="i_am_color_8e5">#000008e5</color>
+    <color name="i_am_color_8e6">#000008e6</color>
+    <color name="i_am_color_8e7">#000008e7</color>
+    <color name="i_am_color_8e8">#000008e8</color>
+    <color name="i_am_color_8e9">#000008e9</color>
+    <color name="i_am_color_8ea">#000008ea</color>
+    <color name="i_am_color_8eb">#000008eb</color>
+    <color name="i_am_color_8ec">#000008ec</color>
+    <color name="i_am_color_8ed">#000008ed</color>
+    <color name="i_am_color_8ee">#000008ee</color>
+    <color name="i_am_color_8ef">#000008ef</color>
+    <color name="i_am_color_8f0">#000008f0</color>
+    <color name="i_am_color_8f1">#000008f1</color>
+    <color name="i_am_color_8f2">#000008f2</color>
+    <color name="i_am_color_8f3">#000008f3</color>
+    <color name="i_am_color_8f4">#000008f4</color>
+    <color name="i_am_color_8f5">#000008f5</color>
+    <color name="i_am_color_8f6">#000008f6</color>
+    <color name="i_am_color_8f7">#000008f7</color>
+    <color name="i_am_color_8f8">#000008f8</color>
+    <color name="i_am_color_8f9">#000008f9</color>
+    <color name="i_am_color_8fa">#000008fa</color>
+    <color name="i_am_color_8fb">#000008fb</color>
+    <color name="i_am_color_8fc">#000008fc</color>
+    <color name="i_am_color_8fd">#000008fd</color>
+    <color name="i_am_color_8fe">#000008fe</color>
+    <color name="i_am_color_8ff">#000008ff</color>
+    <color name="i_am_color_900">#00000900</color>
+    <color name="i_am_color_901">#00000901</color>
+    <color name="i_am_color_902">#00000902</color>
+    <color name="i_am_color_903">#00000903</color>
+    <color name="i_am_color_904">#00000904</color>
+    <color name="i_am_color_905">#00000905</color>
+    <color name="i_am_color_906">#00000906</color>
+    <color name="i_am_color_907">#00000907</color>
+    <color name="i_am_color_908">#00000908</color>
+    <color name="i_am_color_909">#00000909</color>
+    <color name="i_am_color_90a">#0000090a</color>
+    <color name="i_am_color_90b">#0000090b</color>
+    <color name="i_am_color_90c">#0000090c</color>
+    <color name="i_am_color_90d">#0000090d</color>
+    <color name="i_am_color_90e">#0000090e</color>
+    <color name="i_am_color_90f">#0000090f</color>
+    <color name="i_am_color_910">#00000910</color>
+    <color name="i_am_color_911">#00000911</color>
+    <color name="i_am_color_912">#00000912</color>
+    <color name="i_am_color_913">#00000913</color>
+    <color name="i_am_color_914">#00000914</color>
+    <color name="i_am_color_915">#00000915</color>
+    <color name="i_am_color_916">#00000916</color>
+    <color name="i_am_color_917">#00000917</color>
+    <color name="i_am_color_918">#00000918</color>
+    <color name="i_am_color_919">#00000919</color>
+    <color name="i_am_color_91a">#0000091a</color>
+    <color name="i_am_color_91b">#0000091b</color>
+    <color name="i_am_color_91c">#0000091c</color>
+    <color name="i_am_color_91d">#0000091d</color>
+    <color name="i_am_color_91e">#0000091e</color>
+    <color name="i_am_color_91f">#0000091f</color>
+    <color name="i_am_color_920">#00000920</color>
+    <color name="i_am_color_921">#00000921</color>
+    <color name="i_am_color_922">#00000922</color>
+    <color name="i_am_color_923">#00000923</color>
+    <color name="i_am_color_924">#00000924</color>
+    <color name="i_am_color_925">#00000925</color>
+    <color name="i_am_color_926">#00000926</color>
+    <color name="i_am_color_927">#00000927</color>
+    <color name="i_am_color_928">#00000928</color>
+    <color name="i_am_color_929">#00000929</color>
+    <color name="i_am_color_92a">#0000092a</color>
+    <color name="i_am_color_92b">#0000092b</color>
+    <color name="i_am_color_92c">#0000092c</color>
+    <color name="i_am_color_92d">#0000092d</color>
+    <color name="i_am_color_92e">#0000092e</color>
+    <color name="i_am_color_92f">#0000092f</color>
+    <color name="i_am_color_930">#00000930</color>
+    <color name="i_am_color_931">#00000931</color>
+    <color name="i_am_color_932">#00000932</color>
+    <color name="i_am_color_933">#00000933</color>
+    <color name="i_am_color_934">#00000934</color>
+    <color name="i_am_color_935">#00000935</color>
+    <color name="i_am_color_936">#00000936</color>
+    <color name="i_am_color_937">#00000937</color>
+    <color name="i_am_color_938">#00000938</color>
+    <color name="i_am_color_939">#00000939</color>
+    <color name="i_am_color_93a">#0000093a</color>
+    <color name="i_am_color_93b">#0000093b</color>
+    <color name="i_am_color_93c">#0000093c</color>
+    <color name="i_am_color_93d">#0000093d</color>
+    <color name="i_am_color_93e">#0000093e</color>
+    <color name="i_am_color_93f">#0000093f</color>
+    <color name="i_am_color_940">#00000940</color>
+    <color name="i_am_color_941">#00000941</color>
+    <color name="i_am_color_942">#00000942</color>
+    <color name="i_am_color_943">#00000943</color>
+    <color name="i_am_color_944">#00000944</color>
+    <color name="i_am_color_945">#00000945</color>
+    <color name="i_am_color_946">#00000946</color>
+    <color name="i_am_color_947">#00000947</color>
+    <color name="i_am_color_948">#00000948</color>
+    <color name="i_am_color_949">#00000949</color>
+    <color name="i_am_color_94a">#0000094a</color>
+    <color name="i_am_color_94b">#0000094b</color>
+    <color name="i_am_color_94c">#0000094c</color>
+    <color name="i_am_color_94d">#0000094d</color>
+    <color name="i_am_color_94e">#0000094e</color>
+    <color name="i_am_color_94f">#0000094f</color>
+    <color name="i_am_color_950">#00000950</color>
+    <color name="i_am_color_951">#00000951</color>
+    <color name="i_am_color_952">#00000952</color>
+    <color name="i_am_color_953">#00000953</color>
+    <color name="i_am_color_954">#00000954</color>
+    <color name="i_am_color_955">#00000955</color>
+    <color name="i_am_color_956">#00000956</color>
+    <color name="i_am_color_957">#00000957</color>
+    <color name="i_am_color_958">#00000958</color>
+    <color name="i_am_color_959">#00000959</color>
+    <color name="i_am_color_95a">#0000095a</color>
+    <color name="i_am_color_95b">#0000095b</color>
+    <color name="i_am_color_95c">#0000095c</color>
+    <color name="i_am_color_95d">#0000095d</color>
+    <color name="i_am_color_95e">#0000095e</color>
+    <color name="i_am_color_95f">#0000095f</color>
+    <color name="i_am_color_960">#00000960</color>
+    <color name="i_am_color_961">#00000961</color>
+    <color name="i_am_color_962">#00000962</color>
+    <color name="i_am_color_963">#00000963</color>
+    <color name="i_am_color_964">#00000964</color>
+    <color name="i_am_color_965">#00000965</color>
+    <color name="i_am_color_966">#00000966</color>
+    <color name="i_am_color_967">#00000967</color>
+    <color name="i_am_color_968">#00000968</color>
+    <color name="i_am_color_969">#00000969</color>
+    <color name="i_am_color_96a">#0000096a</color>
+    <color name="i_am_color_96b">#0000096b</color>
+    <color name="i_am_color_96c">#0000096c</color>
+    <color name="i_am_color_96d">#0000096d</color>
+    <color name="i_am_color_96e">#0000096e</color>
+    <color name="i_am_color_96f">#0000096f</color>
+    <color name="i_am_color_970">#00000970</color>
+    <color name="i_am_color_971">#00000971</color>
+    <color name="i_am_color_972">#00000972</color>
+    <color name="i_am_color_973">#00000973</color>
+    <color name="i_am_color_974">#00000974</color>
+    <color name="i_am_color_975">#00000975</color>
+    <color name="i_am_color_976">#00000976</color>
+    <color name="i_am_color_977">#00000977</color>
+    <color name="i_am_color_978">#00000978</color>
+    <color name="i_am_color_979">#00000979</color>
+    <color name="i_am_color_97a">#0000097a</color>
+    <color name="i_am_color_97b">#0000097b</color>
+    <color name="i_am_color_97c">#0000097c</color>
+    <color name="i_am_color_97d">#0000097d</color>
+    <color name="i_am_color_97e">#0000097e</color>
+    <color name="i_am_color_97f">#0000097f</color>
+    <color name="i_am_color_980">#00000980</color>
+    <color name="i_am_color_981">#00000981</color>
+    <color name="i_am_color_982">#00000982</color>
+    <color name="i_am_color_983">#00000983</color>
+    <color name="i_am_color_984">#00000984</color>
+    <color name="i_am_color_985">#00000985</color>
+    <color name="i_am_color_986">#00000986</color>
+    <color name="i_am_color_987">#00000987</color>
+    <color name="i_am_color_988">#00000988</color>
+    <color name="i_am_color_989">#00000989</color>
+    <color name="i_am_color_98a">#0000098a</color>
+    <color name="i_am_color_98b">#0000098b</color>
+    <color name="i_am_color_98c">#0000098c</color>
+    <color name="i_am_color_98d">#0000098d</color>
+    <color name="i_am_color_98e">#0000098e</color>
+    <color name="i_am_color_98f">#0000098f</color>
+    <color name="i_am_color_990">#00000990</color>
+    <color name="i_am_color_991">#00000991</color>
+    <color name="i_am_color_992">#00000992</color>
+    <color name="i_am_color_993">#00000993</color>
+    <color name="i_am_color_994">#00000994</color>
+    <color name="i_am_color_995">#00000995</color>
+    <color name="i_am_color_996">#00000996</color>
+    <color name="i_am_color_997">#00000997</color>
+    <color name="i_am_color_998">#00000998</color>
+    <color name="i_am_color_999">#00000999</color>
+    <color name="i_am_color_99a">#0000099a</color>
+    <color name="i_am_color_99b">#0000099b</color>
+    <color name="i_am_color_99c">#0000099c</color>
+    <color name="i_am_color_99d">#0000099d</color>
+    <color name="i_am_color_99e">#0000099e</color>
+    <color name="i_am_color_99f">#0000099f</color>
+    <color name="i_am_color_9a0">#000009a0</color>
+    <color name="i_am_color_9a1">#000009a1</color>
+    <color name="i_am_color_9a2">#000009a2</color>
+    <color name="i_am_color_9a3">#000009a3</color>
+    <color name="i_am_color_9a4">#000009a4</color>
+    <color name="i_am_color_9a5">#000009a5</color>
+    <color name="i_am_color_9a6">#000009a6</color>
+    <color name="i_am_color_9a7">#000009a7</color>
+    <color name="i_am_color_9a8">#000009a8</color>
+    <color name="i_am_color_9a9">#000009a9</color>
+    <color name="i_am_color_9aa">#000009aa</color>
+    <color name="i_am_color_9ab">#000009ab</color>
+    <color name="i_am_color_9ac">#000009ac</color>
+    <color name="i_am_color_9ad">#000009ad</color>
+    <color name="i_am_color_9ae">#000009ae</color>
+    <color name="i_am_color_9af">#000009af</color>
+    <color name="i_am_color_9b0">#000009b0</color>
+    <color name="i_am_color_9b1">#000009b1</color>
+    <color name="i_am_color_9b2">#000009b2</color>
+    <color name="i_am_color_9b3">#000009b3</color>
+    <color name="i_am_color_9b4">#000009b4</color>
+    <color name="i_am_color_9b5">#000009b5</color>
+    <color name="i_am_color_9b6">#000009b6</color>
+    <color name="i_am_color_9b7">#000009b7</color>
+    <color name="i_am_color_9b8">#000009b8</color>
+    <color name="i_am_color_9b9">#000009b9</color>
+    <color name="i_am_color_9ba">#000009ba</color>
+    <color name="i_am_color_9bb">#000009bb</color>
+    <color name="i_am_color_9bc">#000009bc</color>
+    <color name="i_am_color_9bd">#000009bd</color>
+    <color name="i_am_color_9be">#000009be</color>
+    <color name="i_am_color_9bf">#000009bf</color>
+    <color name="i_am_color_9c0">#000009c0</color>
+    <color name="i_am_color_9c1">#000009c1</color>
+    <color name="i_am_color_9c2">#000009c2</color>
+    <color name="i_am_color_9c3">#000009c3</color>
+    <color name="i_am_color_9c4">#000009c4</color>
+    <color name="i_am_color_9c5">#000009c5</color>
+    <color name="i_am_color_9c6">#000009c6</color>
+    <color name="i_am_color_9c7">#000009c7</color>
+    <color name="i_am_color_9c8">#000009c8</color>
+    <color name="i_am_color_9c9">#000009c9</color>
+    <color name="i_am_color_9ca">#000009ca</color>
+    <color name="i_am_color_9cb">#000009cb</color>
+    <color name="i_am_color_9cc">#000009cc</color>
+    <color name="i_am_color_9cd">#000009cd</color>
+    <color name="i_am_color_9ce">#000009ce</color>
+    <color name="i_am_color_9cf">#000009cf</color>
+    <color name="i_am_color_9d0">#000009d0</color>
+    <color name="i_am_color_9d1">#000009d1</color>
+    <color name="i_am_color_9d2">#000009d2</color>
+    <color name="i_am_color_9d3">#000009d3</color>
+    <color name="i_am_color_9d4">#000009d4</color>
+    <color name="i_am_color_9d5">#000009d5</color>
+    <color name="i_am_color_9d6">#000009d6</color>
+    <color name="i_am_color_9d7">#000009d7</color>
+    <color name="i_am_color_9d8">#000009d8</color>
+    <color name="i_am_color_9d9">#000009d9</color>
+    <color name="i_am_color_9da">#000009da</color>
+    <color name="i_am_color_9db">#000009db</color>
+    <color name="i_am_color_9dc">#000009dc</color>
+    <color name="i_am_color_9dd">#000009dd</color>
+    <color name="i_am_color_9de">#000009de</color>
+    <color name="i_am_color_9df">#000009df</color>
+    <color name="i_am_color_9e0">#000009e0</color>
+    <color name="i_am_color_9e1">#000009e1</color>
+    <color name="i_am_color_9e2">#000009e2</color>
+    <color name="i_am_color_9e3">#000009e3</color>
+    <color name="i_am_color_9e4">#000009e4</color>
+    <color name="i_am_color_9e5">#000009e5</color>
+    <color name="i_am_color_9e6">#000009e6</color>
+    <color name="i_am_color_9e7">#000009e7</color>
+    <color name="i_am_color_9e8">#000009e8</color>
+    <color name="i_am_color_9e9">#000009e9</color>
+    <color name="i_am_color_9ea">#000009ea</color>
+    <color name="i_am_color_9eb">#000009eb</color>
+    <color name="i_am_color_9ec">#000009ec</color>
+    <color name="i_am_color_9ed">#000009ed</color>
+    <color name="i_am_color_9ee">#000009ee</color>
+    <color name="i_am_color_9ef">#000009ef</color>
+    <color name="i_am_color_9f0">#000009f0</color>
+    <color name="i_am_color_9f1">#000009f1</color>
+    <color name="i_am_color_9f2">#000009f2</color>
+    <color name="i_am_color_9f3">#000009f3</color>
+    <color name="i_am_color_9f4">#000009f4</color>
+    <color name="i_am_color_9f5">#000009f5</color>
+    <color name="i_am_color_9f6">#000009f6</color>
+    <color name="i_am_color_9f7">#000009f7</color>
+    <color name="i_am_color_9f8">#000009f8</color>
+    <color name="i_am_color_9f9">#000009f9</color>
+    <color name="i_am_color_9fa">#000009fa</color>
+    <color name="i_am_color_9fb">#000009fb</color>
+    <color name="i_am_color_9fc">#000009fc</color>
+    <color name="i_am_color_9fd">#000009fd</color>
+    <color name="i_am_color_9fe">#000009fe</color>
+    <color name="i_am_color_9ff">#000009ff</color>
+    <color name="i_am_color_a00">#00000a00</color>
+    <color name="i_am_color_a01">#00000a01</color>
+    <color name="i_am_color_a02">#00000a02</color>
+    <color name="i_am_color_a03">#00000a03</color>
+    <color name="i_am_color_a04">#00000a04</color>
+    <color name="i_am_color_a05">#00000a05</color>
+    <color name="i_am_color_a06">#00000a06</color>
+    <color name="i_am_color_a07">#00000a07</color>
+    <color name="i_am_color_a08">#00000a08</color>
+    <color name="i_am_color_a09">#00000a09</color>
+    <color name="i_am_color_a0a">#00000a0a</color>
+    <color name="i_am_color_a0b">#00000a0b</color>
+    <color name="i_am_color_a0c">#00000a0c</color>
+    <color name="i_am_color_a0d">#00000a0d</color>
+    <color name="i_am_color_a0e">#00000a0e</color>
+    <color name="i_am_color_a0f">#00000a0f</color>
+    <color name="i_am_color_a10">#00000a10</color>
+    <color name="i_am_color_a11">#00000a11</color>
+    <color name="i_am_color_a12">#00000a12</color>
+    <color name="i_am_color_a13">#00000a13</color>
+    <color name="i_am_color_a14">#00000a14</color>
+    <color name="i_am_color_a15">#00000a15</color>
+    <color name="i_am_color_a16">#00000a16</color>
+    <color name="i_am_color_a17">#00000a17</color>
+    <color name="i_am_color_a18">#00000a18</color>
+    <color name="i_am_color_a19">#00000a19</color>
+    <color name="i_am_color_a1a">#00000a1a</color>
+    <color name="i_am_color_a1b">#00000a1b</color>
+    <color name="i_am_color_a1c">#00000a1c</color>
+    <color name="i_am_color_a1d">#00000a1d</color>
+    <color name="i_am_color_a1e">#00000a1e</color>
+    <color name="i_am_color_a1f">#00000a1f</color>
+    <color name="i_am_color_a20">#00000a20</color>
+    <color name="i_am_color_a21">#00000a21</color>
+    <color name="i_am_color_a22">#00000a22</color>
+    <color name="i_am_color_a23">#00000a23</color>
+    <color name="i_am_color_a24">#00000a24</color>
+    <color name="i_am_color_a25">#00000a25</color>
+    <color name="i_am_color_a26">#00000a26</color>
+    <color name="i_am_color_a27">#00000a27</color>
+    <color name="i_am_color_a28">#00000a28</color>
+    <color name="i_am_color_a29">#00000a29</color>
+    <color name="i_am_color_a2a">#00000a2a</color>
+    <color name="i_am_color_a2b">#00000a2b</color>
+    <color name="i_am_color_a2c">#00000a2c</color>
+    <color name="i_am_color_a2d">#00000a2d</color>
+    <color name="i_am_color_a2e">#00000a2e</color>
+    <color name="i_am_color_a2f">#00000a2f</color>
+    <color name="i_am_color_a30">#00000a30</color>
+    <color name="i_am_color_a31">#00000a31</color>
+    <color name="i_am_color_a32">#00000a32</color>
+    <color name="i_am_color_a33">#00000a33</color>
+    <color name="i_am_color_a34">#00000a34</color>
+    <color name="i_am_color_a35">#00000a35</color>
+    <color name="i_am_color_a36">#00000a36</color>
+    <color name="i_am_color_a37">#00000a37</color>
+    <color name="i_am_color_a38">#00000a38</color>
+    <color name="i_am_color_a39">#00000a39</color>
+    <color name="i_am_color_a3a">#00000a3a</color>
+    <color name="i_am_color_a3b">#00000a3b</color>
+    <color name="i_am_color_a3c">#00000a3c</color>
+    <color name="i_am_color_a3d">#00000a3d</color>
+    <color name="i_am_color_a3e">#00000a3e</color>
+    <color name="i_am_color_a3f">#00000a3f</color>
+    <color name="i_am_color_a40">#00000a40</color>
+    <color name="i_am_color_a41">#00000a41</color>
+    <color name="i_am_color_a42">#00000a42</color>
+    <color name="i_am_color_a43">#00000a43</color>
+    <color name="i_am_color_a44">#00000a44</color>
+    <color name="i_am_color_a45">#00000a45</color>
+    <color name="i_am_color_a46">#00000a46</color>
+    <color name="i_am_color_a47">#00000a47</color>
+    <color name="i_am_color_a48">#00000a48</color>
+    <color name="i_am_color_a49">#00000a49</color>
+    <color name="i_am_color_a4a">#00000a4a</color>
+    <color name="i_am_color_a4b">#00000a4b</color>
+    <color name="i_am_color_a4c">#00000a4c</color>
+    <color name="i_am_color_a4d">#00000a4d</color>
+    <color name="i_am_color_a4e">#00000a4e</color>
+    <color name="i_am_color_a4f">#00000a4f</color>
+    <color name="i_am_color_a50">#00000a50</color>
+    <color name="i_am_color_a51">#00000a51</color>
+    <color name="i_am_color_a52">#00000a52</color>
+    <color name="i_am_color_a53">#00000a53</color>
+    <color name="i_am_color_a54">#00000a54</color>
+    <color name="i_am_color_a55">#00000a55</color>
+    <color name="i_am_color_a56">#00000a56</color>
+    <color name="i_am_color_a57">#00000a57</color>
+    <color name="i_am_color_a58">#00000a58</color>
+    <color name="i_am_color_a59">#00000a59</color>
+    <color name="i_am_color_a5a">#00000a5a</color>
+    <color name="i_am_color_a5b">#00000a5b</color>
+    <color name="i_am_color_a5c">#00000a5c</color>
+    <color name="i_am_color_a5d">#00000a5d</color>
+    <color name="i_am_color_a5e">#00000a5e</color>
+    <color name="i_am_color_a5f">#00000a5f</color>
+    <color name="i_am_color_a60">#00000a60</color>
+    <color name="i_am_color_a61">#00000a61</color>
+    <color name="i_am_color_a62">#00000a62</color>
+    <color name="i_am_color_a63">#00000a63</color>
+    <color name="i_am_color_a64">#00000a64</color>
+    <color name="i_am_color_a65">#00000a65</color>
+    <color name="i_am_color_a66">#00000a66</color>
+    <color name="i_am_color_a67">#00000a67</color>
+    <color name="i_am_color_a68">#00000a68</color>
+    <color name="i_am_color_a69">#00000a69</color>
+    <color name="i_am_color_a6a">#00000a6a</color>
+    <color name="i_am_color_a6b">#00000a6b</color>
+    <color name="i_am_color_a6c">#00000a6c</color>
+    <color name="i_am_color_a6d">#00000a6d</color>
+    <color name="i_am_color_a6e">#00000a6e</color>
+    <color name="i_am_color_a6f">#00000a6f</color>
+    <color name="i_am_color_a70">#00000a70</color>
+    <color name="i_am_color_a71">#00000a71</color>
+    <color name="i_am_color_a72">#00000a72</color>
+    <color name="i_am_color_a73">#00000a73</color>
+    <color name="i_am_color_a74">#00000a74</color>
+    <color name="i_am_color_a75">#00000a75</color>
+    <color name="i_am_color_a76">#00000a76</color>
+    <color name="i_am_color_a77">#00000a77</color>
+    <color name="i_am_color_a78">#00000a78</color>
+    <color name="i_am_color_a79">#00000a79</color>
+    <color name="i_am_color_a7a">#00000a7a</color>
+    <color name="i_am_color_a7b">#00000a7b</color>
+    <color name="i_am_color_a7c">#00000a7c</color>
+    <color name="i_am_color_a7d">#00000a7d</color>
+    <color name="i_am_color_a7e">#00000a7e</color>
+    <color name="i_am_color_a7f">#00000a7f</color>
+    <color name="i_am_color_a80">#00000a80</color>
+    <color name="i_am_color_a81">#00000a81</color>
+    <color name="i_am_color_a82">#00000a82</color>
+    <color name="i_am_color_a83">#00000a83</color>
+    <color name="i_am_color_a84">#00000a84</color>
+    <color name="i_am_color_a85">#00000a85</color>
+    <color name="i_am_color_a86">#00000a86</color>
+    <color name="i_am_color_a87">#00000a87</color>
+    <color name="i_am_color_a88">#00000a88</color>
+    <color name="i_am_color_a89">#00000a89</color>
+    <color name="i_am_color_a8a">#00000a8a</color>
+    <color name="i_am_color_a8b">#00000a8b</color>
+    <color name="i_am_color_a8c">#00000a8c</color>
+    <color name="i_am_color_a8d">#00000a8d</color>
+    <color name="i_am_color_a8e">#00000a8e</color>
+    <color name="i_am_color_a8f">#00000a8f</color>
+    <color name="i_am_color_a90">#00000a90</color>
+    <color name="i_am_color_a91">#00000a91</color>
+    <color name="i_am_color_a92">#00000a92</color>
+    <color name="i_am_color_a93">#00000a93</color>
+    <color name="i_am_color_a94">#00000a94</color>
+    <color name="i_am_color_a95">#00000a95</color>
+    <color name="i_am_color_a96">#00000a96</color>
+    <color name="i_am_color_a97">#00000a97</color>
+    <color name="i_am_color_a98">#00000a98</color>
+    <color name="i_am_color_a99">#00000a99</color>
+    <color name="i_am_color_a9a">#00000a9a</color>
+    <color name="i_am_color_a9b">#00000a9b</color>
+    <color name="i_am_color_a9c">#00000a9c</color>
+    <color name="i_am_color_a9d">#00000a9d</color>
+    <color name="i_am_color_a9e">#00000a9e</color>
+    <color name="i_am_color_a9f">#00000a9f</color>
+    <color name="i_am_color_aa0">#00000aa0</color>
+    <color name="i_am_color_aa1">#00000aa1</color>
+    <color name="i_am_color_aa2">#00000aa2</color>
+    <color name="i_am_color_aa3">#00000aa3</color>
+    <color name="i_am_color_aa4">#00000aa4</color>
+    <color name="i_am_color_aa5">#00000aa5</color>
+    <color name="i_am_color_aa6">#00000aa6</color>
+    <color name="i_am_color_aa7">#00000aa7</color>
+    <color name="i_am_color_aa8">#00000aa8</color>
+    <color name="i_am_color_aa9">#00000aa9</color>
+    <color name="i_am_color_aaa">#00000aaa</color>
+    <color name="i_am_color_aab">#00000aab</color>
+    <color name="i_am_color_aac">#00000aac</color>
+    <color name="i_am_color_aad">#00000aad</color>
+    <color name="i_am_color_aae">#00000aae</color>
+    <color name="i_am_color_aaf">#00000aaf</color>
+    <color name="i_am_color_ab0">#00000ab0</color>
+    <color name="i_am_color_ab1">#00000ab1</color>
+    <color name="i_am_color_ab2">#00000ab2</color>
+    <color name="i_am_color_ab3">#00000ab3</color>
+    <color name="i_am_color_ab4">#00000ab4</color>
+    <color name="i_am_color_ab5">#00000ab5</color>
+    <color name="i_am_color_ab6">#00000ab6</color>
+    <color name="i_am_color_ab7">#00000ab7</color>
+    <color name="i_am_color_ab8">#00000ab8</color>
+    <color name="i_am_color_ab9">#00000ab9</color>
+    <color name="i_am_color_aba">#00000aba</color>
+    <color name="i_am_color_abb">#00000abb</color>
+    <color name="i_am_color_abc">#00000abc</color>
+    <color name="i_am_color_abd">#00000abd</color>
+    <color name="i_am_color_abe">#00000abe</color>
+    <color name="i_am_color_abf">#00000abf</color>
+    <color name="i_am_color_ac0">#00000ac0</color>
+    <color name="i_am_color_ac1">#00000ac1</color>
+    <color name="i_am_color_ac2">#00000ac2</color>
+    <color name="i_am_color_ac3">#00000ac3</color>
+    <color name="i_am_color_ac4">#00000ac4</color>
+    <color name="i_am_color_ac5">#00000ac5</color>
+    <color name="i_am_color_ac6">#00000ac6</color>
+    <color name="i_am_color_ac7">#00000ac7</color>
+    <color name="i_am_color_ac8">#00000ac8</color>
+    <color name="i_am_color_ac9">#00000ac9</color>
+    <color name="i_am_color_aca">#00000aca</color>
+    <color name="i_am_color_acb">#00000acb</color>
+    <color name="i_am_color_acc">#00000acc</color>
+    <color name="i_am_color_acd">#00000acd</color>
+    <color name="i_am_color_ace">#00000ace</color>
+    <color name="i_am_color_acf">#00000acf</color>
+    <color name="i_am_color_ad0">#00000ad0</color>
+    <color name="i_am_color_ad1">#00000ad1</color>
+    <color name="i_am_color_ad2">#00000ad2</color>
+    <color name="i_am_color_ad3">#00000ad3</color>
+    <color name="i_am_color_ad4">#00000ad4</color>
+    <color name="i_am_color_ad5">#00000ad5</color>
+    <color name="i_am_color_ad6">#00000ad6</color>
+    <color name="i_am_color_ad7">#00000ad7</color>
+    <color name="i_am_color_ad8">#00000ad8</color>
+    <color name="i_am_color_ad9">#00000ad9</color>
+    <color name="i_am_color_ada">#00000ada</color>
+    <color name="i_am_color_adb">#00000adb</color>
+    <color name="i_am_color_adc">#00000adc</color>
+    <color name="i_am_color_add">#00000add</color>
+    <color name="i_am_color_ade">#00000ade</color>
+    <color name="i_am_color_adf">#00000adf</color>
+    <color name="i_am_color_ae0">#00000ae0</color>
+    <color name="i_am_color_ae1">#00000ae1</color>
+    <color name="i_am_color_ae2">#00000ae2</color>
+    <color name="i_am_color_ae3">#00000ae3</color>
+    <color name="i_am_color_ae4">#00000ae4</color>
+    <color name="i_am_color_ae5">#00000ae5</color>
+    <color name="i_am_color_ae6">#00000ae6</color>
+    <color name="i_am_color_ae7">#00000ae7</color>
+    <color name="i_am_color_ae8">#00000ae8</color>
+    <color name="i_am_color_ae9">#00000ae9</color>
+    <color name="i_am_color_aea">#00000aea</color>
+    <color name="i_am_color_aeb">#00000aeb</color>
+    <color name="i_am_color_aec">#00000aec</color>
+    <color name="i_am_color_aed">#00000aed</color>
+    <color name="i_am_color_aee">#00000aee</color>
+    <color name="i_am_color_aef">#00000aef</color>
+    <color name="i_am_color_af0">#00000af0</color>
+    <color name="i_am_color_af1">#00000af1</color>
+    <color name="i_am_color_af2">#00000af2</color>
+    <color name="i_am_color_af3">#00000af3</color>
+    <color name="i_am_color_af4">#00000af4</color>
+    <color name="i_am_color_af5">#00000af5</color>
+    <color name="i_am_color_af6">#00000af6</color>
+    <color name="i_am_color_af7">#00000af7</color>
+    <color name="i_am_color_af8">#00000af8</color>
+    <color name="i_am_color_af9">#00000af9</color>
+    <color name="i_am_color_afa">#00000afa</color>
+    <color name="i_am_color_afb">#00000afb</color>
+    <color name="i_am_color_afc">#00000afc</color>
+    <color name="i_am_color_afd">#00000afd</color>
+    <color name="i_am_color_afe">#00000afe</color>
+    <color name="i_am_color_aff">#00000aff</color>
+    <color name="i_am_color_b00">#00000b00</color>
+    <color name="i_am_color_b01">#00000b01</color>
+    <color name="i_am_color_b02">#00000b02</color>
+    <color name="i_am_color_b03">#00000b03</color>
+    <color name="i_am_color_b04">#00000b04</color>
+    <color name="i_am_color_b05">#00000b05</color>
+    <color name="i_am_color_b06">#00000b06</color>
+    <color name="i_am_color_b07">#00000b07</color>
+    <color name="i_am_color_b08">#00000b08</color>
+    <color name="i_am_color_b09">#00000b09</color>
+    <color name="i_am_color_b0a">#00000b0a</color>
+    <color name="i_am_color_b0b">#00000b0b</color>
+    <color name="i_am_color_b0c">#00000b0c</color>
+    <color name="i_am_color_b0d">#00000b0d</color>
+    <color name="i_am_color_b0e">#00000b0e</color>
+    <color name="i_am_color_b0f">#00000b0f</color>
+    <color name="i_am_color_b10">#00000b10</color>
+    <color name="i_am_color_b11">#00000b11</color>
+    <color name="i_am_color_b12">#00000b12</color>
+    <color name="i_am_color_b13">#00000b13</color>
+    <color name="i_am_color_b14">#00000b14</color>
+    <color name="i_am_color_b15">#00000b15</color>
+    <color name="i_am_color_b16">#00000b16</color>
+    <color name="i_am_color_b17">#00000b17</color>
+    <color name="i_am_color_b18">#00000b18</color>
+    <color name="i_am_color_b19">#00000b19</color>
+    <color name="i_am_color_b1a">#00000b1a</color>
+    <color name="i_am_color_b1b">#00000b1b</color>
+    <color name="i_am_color_b1c">#00000b1c</color>
+    <color name="i_am_color_b1d">#00000b1d</color>
+    <color name="i_am_color_b1e">#00000b1e</color>
+    <color name="i_am_color_b1f">#00000b1f</color>
+    <color name="i_am_color_b20">#00000b20</color>
+    <color name="i_am_color_b21">#00000b21</color>
+    <color name="i_am_color_b22">#00000b22</color>
+    <color name="i_am_color_b23">#00000b23</color>
+    <color name="i_am_color_b24">#00000b24</color>
+    <color name="i_am_color_b25">#00000b25</color>
+    <color name="i_am_color_b26">#00000b26</color>
+    <color name="i_am_color_b27">#00000b27</color>
+    <color name="i_am_color_b28">#00000b28</color>
+    <color name="i_am_color_b29">#00000b29</color>
+    <color name="i_am_color_b2a">#00000b2a</color>
+    <color name="i_am_color_b2b">#00000b2b</color>
+    <color name="i_am_color_b2c">#00000b2c</color>
+    <color name="i_am_color_b2d">#00000b2d</color>
+    <color name="i_am_color_b2e">#00000b2e</color>
+    <color name="i_am_color_b2f">#00000b2f</color>
+    <color name="i_am_color_b30">#00000b30</color>
+    <color name="i_am_color_b31">#00000b31</color>
+    <color name="i_am_color_b32">#00000b32</color>
+    <color name="i_am_color_b33">#00000b33</color>
+    <color name="i_am_color_b34">#00000b34</color>
+    <color name="i_am_color_b35">#00000b35</color>
+    <color name="i_am_color_b36">#00000b36</color>
+    <color name="i_am_color_b37">#00000b37</color>
+    <color name="i_am_color_b38">#00000b38</color>
+    <color name="i_am_color_b39">#00000b39</color>
+    <color name="i_am_color_b3a">#00000b3a</color>
+    <color name="i_am_color_b3b">#00000b3b</color>
+    <color name="i_am_color_b3c">#00000b3c</color>
+    <color name="i_am_color_b3d">#00000b3d</color>
+    <color name="i_am_color_b3e">#00000b3e</color>
+    <color name="i_am_color_b3f">#00000b3f</color>
+    <color name="i_am_color_b40">#00000b40</color>
+    <color name="i_am_color_b41">#00000b41</color>
+    <color name="i_am_color_b42">#00000b42</color>
+    <color name="i_am_color_b43">#00000b43</color>
+    <color name="i_am_color_b44">#00000b44</color>
+    <color name="i_am_color_b45">#00000b45</color>
+    <color name="i_am_color_b46">#00000b46</color>
+    <color name="i_am_color_b47">#00000b47</color>
+    <color name="i_am_color_b48">#00000b48</color>
+    <color name="i_am_color_b49">#00000b49</color>
+    <color name="i_am_color_b4a">#00000b4a</color>
+    <color name="i_am_color_b4b">#00000b4b</color>
+    <color name="i_am_color_b4c">#00000b4c</color>
+    <color name="i_am_color_b4d">#00000b4d</color>
+    <color name="i_am_color_b4e">#00000b4e</color>
+    <color name="i_am_color_b4f">#00000b4f</color>
+    <color name="i_am_color_b50">#00000b50</color>
+    <color name="i_am_color_b51">#00000b51</color>
+    <color name="i_am_color_b52">#00000b52</color>
+    <color name="i_am_color_b53">#00000b53</color>
+    <color name="i_am_color_b54">#00000b54</color>
+    <color name="i_am_color_b55">#00000b55</color>
+    <color name="i_am_color_b56">#00000b56</color>
+    <color name="i_am_color_b57">#00000b57</color>
+    <color name="i_am_color_b58">#00000b58</color>
+    <color name="i_am_color_b59">#00000b59</color>
+    <color name="i_am_color_b5a">#00000b5a</color>
+    <color name="i_am_color_b5b">#00000b5b</color>
+    <color name="i_am_color_b5c">#00000b5c</color>
+    <color name="i_am_color_b5d">#00000b5d</color>
+    <color name="i_am_color_b5e">#00000b5e</color>
+    <color name="i_am_color_b5f">#00000b5f</color>
+    <color name="i_am_color_b60">#00000b60</color>
+    <color name="i_am_color_b61">#00000b61</color>
+    <color name="i_am_color_b62">#00000b62</color>
+    <color name="i_am_color_b63">#00000b63</color>
+    <color name="i_am_color_b64">#00000b64</color>
+    <color name="i_am_color_b65">#00000b65</color>
+    <color name="i_am_color_b66">#00000b66</color>
+    <color name="i_am_color_b67">#00000b67</color>
+    <color name="i_am_color_b68">#00000b68</color>
+    <color name="i_am_color_b69">#00000b69</color>
+    <color name="i_am_color_b6a">#00000b6a</color>
+    <color name="i_am_color_b6b">#00000b6b</color>
+    <color name="i_am_color_b6c">#00000b6c</color>
+    <color name="i_am_color_b6d">#00000b6d</color>
+    <color name="i_am_color_b6e">#00000b6e</color>
+    <color name="i_am_color_b6f">#00000b6f</color>
+    <color name="i_am_color_b70">#00000b70</color>
+    <color name="i_am_color_b71">#00000b71</color>
+    <color name="i_am_color_b72">#00000b72</color>
+    <color name="i_am_color_b73">#00000b73</color>
+    <color name="i_am_color_b74">#00000b74</color>
+    <color name="i_am_color_b75">#00000b75</color>
+    <color name="i_am_color_b76">#00000b76</color>
+    <color name="i_am_color_b77">#00000b77</color>
+    <color name="i_am_color_b78">#00000b78</color>
+    <color name="i_am_color_b79">#00000b79</color>
+    <color name="i_am_color_b7a">#00000b7a</color>
+    <color name="i_am_color_b7b">#00000b7b</color>
+    <color name="i_am_color_b7c">#00000b7c</color>
+    <color name="i_am_color_b7d">#00000b7d</color>
+    <color name="i_am_color_b7e">#00000b7e</color>
+    <color name="i_am_color_b7f">#00000b7f</color>
+    <color name="i_am_color_b80">#00000b80</color>
+    <color name="i_am_color_b81">#00000b81</color>
+    <color name="i_am_color_b82">#00000b82</color>
+    <color name="i_am_color_b83">#00000b83</color>
+    <color name="i_am_color_b84">#00000b84</color>
+    <color name="i_am_color_b85">#00000b85</color>
+    <color name="i_am_color_b86">#00000b86</color>
+    <color name="i_am_color_b87">#00000b87</color>
+    <color name="i_am_color_b88">#00000b88</color>
+    <color name="i_am_color_b89">#00000b89</color>
+    <color name="i_am_color_b8a">#00000b8a</color>
+    <color name="i_am_color_b8b">#00000b8b</color>
+    <color name="i_am_color_b8c">#00000b8c</color>
+    <color name="i_am_color_b8d">#00000b8d</color>
+    <color name="i_am_color_b8e">#00000b8e</color>
+    <color name="i_am_color_b8f">#00000b8f</color>
+    <color name="i_am_color_b90">#00000b90</color>
+    <color name="i_am_color_b91">#00000b91</color>
+    <color name="i_am_color_b92">#00000b92</color>
+    <color name="i_am_color_b93">#00000b93</color>
+    <color name="i_am_color_b94">#00000b94</color>
+    <color name="i_am_color_b95">#00000b95</color>
+    <color name="i_am_color_b96">#00000b96</color>
+    <color name="i_am_color_b97">#00000b97</color>
+    <color name="i_am_color_b98">#00000b98</color>
+    <color name="i_am_color_b99">#00000b99</color>
+    <color name="i_am_color_b9a">#00000b9a</color>
+    <color name="i_am_color_b9b">#00000b9b</color>
+    <color name="i_am_color_b9c">#00000b9c</color>
+    <color name="i_am_color_b9d">#00000b9d</color>
+    <color name="i_am_color_b9e">#00000b9e</color>
+    <color name="i_am_color_b9f">#00000b9f</color>
+    <color name="i_am_color_ba0">#00000ba0</color>
+    <color name="i_am_color_ba1">#00000ba1</color>
+    <color name="i_am_color_ba2">#00000ba2</color>
+    <color name="i_am_color_ba3">#00000ba3</color>
+    <color name="i_am_color_ba4">#00000ba4</color>
+    <color name="i_am_color_ba5">#00000ba5</color>
+    <color name="i_am_color_ba6">#00000ba6</color>
+    <color name="i_am_color_ba7">#00000ba7</color>
+    <color name="i_am_color_ba8">#00000ba8</color>
+    <color name="i_am_color_ba9">#00000ba9</color>
+    <color name="i_am_color_baa">#00000baa</color>
+    <color name="i_am_color_bab">#00000bab</color>
+    <color name="i_am_color_bac">#00000bac</color>
+    <color name="i_am_color_bad">#00000bad</color>
+    <color name="i_am_color_bae">#00000bae</color>
+    <color name="i_am_color_baf">#00000baf</color>
+    <color name="i_am_color_bb0">#00000bb0</color>
+    <color name="i_am_color_bb1">#00000bb1</color>
+    <color name="i_am_color_bb2">#00000bb2</color>
+    <color name="i_am_color_bb3">#00000bb3</color>
+    <color name="i_am_color_bb4">#00000bb4</color>
+    <color name="i_am_color_bb5">#00000bb5</color>
+    <color name="i_am_color_bb6">#00000bb6</color>
+    <color name="i_am_color_bb7">#00000bb7</color>
+    <color name="i_am_color_bb8">#00000bb8</color>
+    <color name="i_am_color_bb9">#00000bb9</color>
+    <color name="i_am_color_bba">#00000bba</color>
+    <color name="i_am_color_bbb">#00000bbb</color>
+    <color name="i_am_color_bbc">#00000bbc</color>
+    <color name="i_am_color_bbd">#00000bbd</color>
+    <color name="i_am_color_bbe">#00000bbe</color>
+    <color name="i_am_color_bbf">#00000bbf</color>
+    <color name="i_am_color_bc0">#00000bc0</color>
+    <color name="i_am_color_bc1">#00000bc1</color>
+    <color name="i_am_color_bc2">#00000bc2</color>
+    <color name="i_am_color_bc3">#00000bc3</color>
+    <color name="i_am_color_bc4">#00000bc4</color>
+    <color name="i_am_color_bc5">#00000bc5</color>
+    <color name="i_am_color_bc6">#00000bc6</color>
+    <color name="i_am_color_bc7">#00000bc7</color>
+    <color name="i_am_color_bc8">#00000bc8</color>
+    <color name="i_am_color_bc9">#00000bc9</color>
+    <color name="i_am_color_bca">#00000bca</color>
+    <color name="i_am_color_bcb">#00000bcb</color>
+    <color name="i_am_color_bcc">#00000bcc</color>
+    <color name="i_am_color_bcd">#00000bcd</color>
+    <color name="i_am_color_bce">#00000bce</color>
+    <color name="i_am_color_bcf">#00000bcf</color>
+    <color name="i_am_color_bd0">#00000bd0</color>
+    <color name="i_am_color_bd1">#00000bd1</color>
+    <color name="i_am_color_bd2">#00000bd2</color>
+    <color name="i_am_color_bd3">#00000bd3</color>
+    <color name="i_am_color_bd4">#00000bd4</color>
+    <color name="i_am_color_bd5">#00000bd5</color>
+    <color name="i_am_color_bd6">#00000bd6</color>
+    <color name="i_am_color_bd7">#00000bd7</color>
+    <color name="i_am_color_bd8">#00000bd8</color>
+    <color name="i_am_color_bd9">#00000bd9</color>
+    <color name="i_am_color_bda">#00000bda</color>
+    <color name="i_am_color_bdb">#00000bdb</color>
+    <color name="i_am_color_bdc">#00000bdc</color>
+    <color name="i_am_color_bdd">#00000bdd</color>
+    <color name="i_am_color_bde">#00000bde</color>
+    <color name="i_am_color_bdf">#00000bdf</color>
+    <color name="i_am_color_be0">#00000be0</color>
+    <color name="i_am_color_be1">#00000be1</color>
+    <color name="i_am_color_be2">#00000be2</color>
+    <color name="i_am_color_be3">#00000be3</color>
+    <color name="i_am_color_be4">#00000be4</color>
+    <color name="i_am_color_be5">#00000be5</color>
+    <color name="i_am_color_be6">#00000be6</color>
+    <color name="i_am_color_be7">#00000be7</color>
+    <color name="i_am_color_be8">#00000be8</color>
+    <color name="i_am_color_be9">#00000be9</color>
+    <color name="i_am_color_bea">#00000bea</color>
+    <color name="i_am_color_beb">#00000beb</color>
+    <color name="i_am_color_bec">#00000bec</color>
+    <color name="i_am_color_bed">#00000bed</color>
+    <color name="i_am_color_bee">#00000bee</color>
+    <color name="i_am_color_bef">#00000bef</color>
+    <color name="i_am_color_bf0">#00000bf0</color>
+    <color name="i_am_color_bf1">#00000bf1</color>
+    <color name="i_am_color_bf2">#00000bf2</color>
+    <color name="i_am_color_bf3">#00000bf3</color>
+    <color name="i_am_color_bf4">#00000bf4</color>
+    <color name="i_am_color_bf5">#00000bf5</color>
+    <color name="i_am_color_bf6">#00000bf6</color>
+    <color name="i_am_color_bf7">#00000bf7</color>
+    <color name="i_am_color_bf8">#00000bf8</color>
+    <color name="i_am_color_bf9">#00000bf9</color>
+    <color name="i_am_color_bfa">#00000bfa</color>
+    <color name="i_am_color_bfb">#00000bfb</color>
+    <color name="i_am_color_bfc">#00000bfc</color>
+    <color name="i_am_color_bfd">#00000bfd</color>
+    <color name="i_am_color_bfe">#00000bfe</color>
+    <color name="i_am_color_bff">#00000bff</color>
+    <color name="i_am_color_c00">#00000c00</color>
+    <color name="i_am_color_c01">#00000c01</color>
+    <color name="i_am_color_c02">#00000c02</color>
+    <color name="i_am_color_c03">#00000c03</color>
+    <color name="i_am_color_c04">#00000c04</color>
+    <color name="i_am_color_c05">#00000c05</color>
+    <color name="i_am_color_c06">#00000c06</color>
+    <color name="i_am_color_c07">#00000c07</color>
+    <color name="i_am_color_c08">#00000c08</color>
+    <color name="i_am_color_c09">#00000c09</color>
+    <color name="i_am_color_c0a">#00000c0a</color>
+    <color name="i_am_color_c0b">#00000c0b</color>
+    <color name="i_am_color_c0c">#00000c0c</color>
+    <color name="i_am_color_c0d">#00000c0d</color>
+    <color name="i_am_color_c0e">#00000c0e</color>
+    <color name="i_am_color_c0f">#00000c0f</color>
+    <color name="i_am_color_c10">#00000c10</color>
+    <color name="i_am_color_c11">#00000c11</color>
+    <color name="i_am_color_c12">#00000c12</color>
+    <color name="i_am_color_c13">#00000c13</color>
+    <color name="i_am_color_c14">#00000c14</color>
+    <color name="i_am_color_c15">#00000c15</color>
+    <color name="i_am_color_c16">#00000c16</color>
+    <color name="i_am_color_c17">#00000c17</color>
+    <color name="i_am_color_c18">#00000c18</color>
+    <color name="i_am_color_c19">#00000c19</color>
+    <color name="i_am_color_c1a">#00000c1a</color>
+    <color name="i_am_color_c1b">#00000c1b</color>
+    <color name="i_am_color_c1c">#00000c1c</color>
+    <color name="i_am_color_c1d">#00000c1d</color>
+    <color name="i_am_color_c1e">#00000c1e</color>
+    <color name="i_am_color_c1f">#00000c1f</color>
+    <color name="i_am_color_c20">#00000c20</color>
+    <color name="i_am_color_c21">#00000c21</color>
+    <color name="i_am_color_c22">#00000c22</color>
+    <color name="i_am_color_c23">#00000c23</color>
+    <color name="i_am_color_c24">#00000c24</color>
+    <color name="i_am_color_c25">#00000c25</color>
+    <color name="i_am_color_c26">#00000c26</color>
+    <color name="i_am_color_c27">#00000c27</color>
+    <color name="i_am_color_c28">#00000c28</color>
+    <color name="i_am_color_c29">#00000c29</color>
+    <color name="i_am_color_c2a">#00000c2a</color>
+    <color name="i_am_color_c2b">#00000c2b</color>
+    <color name="i_am_color_c2c">#00000c2c</color>
+    <color name="i_am_color_c2d">#00000c2d</color>
+    <color name="i_am_color_c2e">#00000c2e</color>
+    <color name="i_am_color_c2f">#00000c2f</color>
+    <color name="i_am_color_c30">#00000c30</color>
+    <color name="i_am_color_c31">#00000c31</color>
+    <color name="i_am_color_c32">#00000c32</color>
+    <color name="i_am_color_c33">#00000c33</color>
+    <color name="i_am_color_c34">#00000c34</color>
+    <color name="i_am_color_c35">#00000c35</color>
+    <color name="i_am_color_c36">#00000c36</color>
+    <color name="i_am_color_c37">#00000c37</color>
+    <color name="i_am_color_c38">#00000c38</color>
+    <color name="i_am_color_c39">#00000c39</color>
+    <color name="i_am_color_c3a">#00000c3a</color>
+    <color name="i_am_color_c3b">#00000c3b</color>
+    <color name="i_am_color_c3c">#00000c3c</color>
+    <color name="i_am_color_c3d">#00000c3d</color>
+    <color name="i_am_color_c3e">#00000c3e</color>
+    <color name="i_am_color_c3f">#00000c3f</color>
+    <color name="i_am_color_c40">#00000c40</color>
+    <color name="i_am_color_c41">#00000c41</color>
+    <color name="i_am_color_c42">#00000c42</color>
+    <color name="i_am_color_c43">#00000c43</color>
+    <color name="i_am_color_c44">#00000c44</color>
+    <color name="i_am_color_c45">#00000c45</color>
+    <color name="i_am_color_c46">#00000c46</color>
+    <color name="i_am_color_c47">#00000c47</color>
+    <color name="i_am_color_c48">#00000c48</color>
+    <color name="i_am_color_c49">#00000c49</color>
+    <color name="i_am_color_c4a">#00000c4a</color>
+    <color name="i_am_color_c4b">#00000c4b</color>
+    <color name="i_am_color_c4c">#00000c4c</color>
+    <color name="i_am_color_c4d">#00000c4d</color>
+    <color name="i_am_color_c4e">#00000c4e</color>
+    <color name="i_am_color_c4f">#00000c4f</color>
+    <color name="i_am_color_c50">#00000c50</color>
+    <color name="i_am_color_c51">#00000c51</color>
+    <color name="i_am_color_c52">#00000c52</color>
+    <color name="i_am_color_c53">#00000c53</color>
+    <color name="i_am_color_c54">#00000c54</color>
+    <color name="i_am_color_c55">#00000c55</color>
+    <color name="i_am_color_c56">#00000c56</color>
+    <color name="i_am_color_c57">#00000c57</color>
+    <color name="i_am_color_c58">#00000c58</color>
+    <color name="i_am_color_c59">#00000c59</color>
+    <color name="i_am_color_c5a">#00000c5a</color>
+    <color name="i_am_color_c5b">#00000c5b</color>
+    <color name="i_am_color_c5c">#00000c5c</color>
+    <color name="i_am_color_c5d">#00000c5d</color>
+    <color name="i_am_color_c5e">#00000c5e</color>
+    <color name="i_am_color_c5f">#00000c5f</color>
+    <color name="i_am_color_c60">#00000c60</color>
+    <color name="i_am_color_c61">#00000c61</color>
+    <color name="i_am_color_c62">#00000c62</color>
+    <color name="i_am_color_c63">#00000c63</color>
+    <color name="i_am_color_c64">#00000c64</color>
+    <color name="i_am_color_c65">#00000c65</color>
+    <color name="i_am_color_c66">#00000c66</color>
+    <color name="i_am_color_c67">#00000c67</color>
+    <color name="i_am_color_c68">#00000c68</color>
+    <color name="i_am_color_c69">#00000c69</color>
+    <color name="i_am_color_c6a">#00000c6a</color>
+    <color name="i_am_color_c6b">#00000c6b</color>
+    <color name="i_am_color_c6c">#00000c6c</color>
+    <color name="i_am_color_c6d">#00000c6d</color>
+    <color name="i_am_color_c6e">#00000c6e</color>
+    <color name="i_am_color_c6f">#00000c6f</color>
+    <color name="i_am_color_c70">#00000c70</color>
+    <color name="i_am_color_c71">#00000c71</color>
+    <color name="i_am_color_c72">#00000c72</color>
+    <color name="i_am_color_c73">#00000c73</color>
+    <color name="i_am_color_c74">#00000c74</color>
+    <color name="i_am_color_c75">#00000c75</color>
+    <color name="i_am_color_c76">#00000c76</color>
+    <color name="i_am_color_c77">#00000c77</color>
+    <color name="i_am_color_c78">#00000c78</color>
+    <color name="i_am_color_c79">#00000c79</color>
+    <color name="i_am_color_c7a">#00000c7a</color>
+    <color name="i_am_color_c7b">#00000c7b</color>
+    <color name="i_am_color_c7c">#00000c7c</color>
+    <color name="i_am_color_c7d">#00000c7d</color>
+    <color name="i_am_color_c7e">#00000c7e</color>
+    <color name="i_am_color_c7f">#00000c7f</color>
+    <color name="i_am_color_c80">#00000c80</color>
+    <color name="i_am_color_c81">#00000c81</color>
+    <color name="i_am_color_c82">#00000c82</color>
+    <color name="i_am_color_c83">#00000c83</color>
+    <color name="i_am_color_c84">#00000c84</color>
+    <color name="i_am_color_c85">#00000c85</color>
+    <color name="i_am_color_c86">#00000c86</color>
+    <color name="i_am_color_c87">#00000c87</color>
+    <color name="i_am_color_c88">#00000c88</color>
+    <color name="i_am_color_c89">#00000c89</color>
+    <color name="i_am_color_c8a">#00000c8a</color>
+    <color name="i_am_color_c8b">#00000c8b</color>
+    <color name="i_am_color_c8c">#00000c8c</color>
+    <color name="i_am_color_c8d">#00000c8d</color>
+    <color name="i_am_color_c8e">#00000c8e</color>
+    <color name="i_am_color_c8f">#00000c8f</color>
+    <color name="i_am_color_c90">#00000c90</color>
+    <color name="i_am_color_c91">#00000c91</color>
+    <color name="i_am_color_c92">#00000c92</color>
+    <color name="i_am_color_c93">#00000c93</color>
+    <color name="i_am_color_c94">#00000c94</color>
+    <color name="i_am_color_c95">#00000c95</color>
+    <color name="i_am_color_c96">#00000c96</color>
+    <color name="i_am_color_c97">#00000c97</color>
+    <color name="i_am_color_c98">#00000c98</color>
+    <color name="i_am_color_c99">#00000c99</color>
+    <color name="i_am_color_c9a">#00000c9a</color>
+    <color name="i_am_color_c9b">#00000c9b</color>
+    <color name="i_am_color_c9c">#00000c9c</color>
+    <color name="i_am_color_c9d">#00000c9d</color>
+    <color name="i_am_color_c9e">#00000c9e</color>
+    <color name="i_am_color_c9f">#00000c9f</color>
+    <color name="i_am_color_ca0">#00000ca0</color>
+    <color name="i_am_color_ca1">#00000ca1</color>
+    <color name="i_am_color_ca2">#00000ca2</color>
+    <color name="i_am_color_ca3">#00000ca3</color>
+    <color name="i_am_color_ca4">#00000ca4</color>
+    <color name="i_am_color_ca5">#00000ca5</color>
+    <color name="i_am_color_ca6">#00000ca6</color>
+    <color name="i_am_color_ca7">#00000ca7</color>
+    <color name="i_am_color_ca8">#00000ca8</color>
+    <color name="i_am_color_ca9">#00000ca9</color>
+    <color name="i_am_color_caa">#00000caa</color>
+    <color name="i_am_color_cab">#00000cab</color>
+    <color name="i_am_color_cac">#00000cac</color>
+    <color name="i_am_color_cad">#00000cad</color>
+    <color name="i_am_color_cae">#00000cae</color>
+    <color name="i_am_color_caf">#00000caf</color>
+    <color name="i_am_color_cb0">#00000cb0</color>
+    <color name="i_am_color_cb1">#00000cb1</color>
+    <color name="i_am_color_cb2">#00000cb2</color>
+    <color name="i_am_color_cb3">#00000cb3</color>
+    <color name="i_am_color_cb4">#00000cb4</color>
+    <color name="i_am_color_cb5">#00000cb5</color>
+    <color name="i_am_color_cb6">#00000cb6</color>
+    <color name="i_am_color_cb7">#00000cb7</color>
+    <color name="i_am_color_cb8">#00000cb8</color>
+    <color name="i_am_color_cb9">#00000cb9</color>
+    <color name="i_am_color_cba">#00000cba</color>
+    <color name="i_am_color_cbb">#00000cbb</color>
+    <color name="i_am_color_cbc">#00000cbc</color>
+    <color name="i_am_color_cbd">#00000cbd</color>
+    <color name="i_am_color_cbe">#00000cbe</color>
+    <color name="i_am_color_cbf">#00000cbf</color>
+    <color name="i_am_color_cc0">#00000cc0</color>
+    <color name="i_am_color_cc1">#00000cc1</color>
+    <color name="i_am_color_cc2">#00000cc2</color>
+    <color name="i_am_color_cc3">#00000cc3</color>
+    <color name="i_am_color_cc4">#00000cc4</color>
+    <color name="i_am_color_cc5">#00000cc5</color>
+    <color name="i_am_color_cc6">#00000cc6</color>
+    <color name="i_am_color_cc7">#00000cc7</color>
+    <color name="i_am_color_cc8">#00000cc8</color>
+    <color name="i_am_color_cc9">#00000cc9</color>
+    <color name="i_am_color_cca">#00000cca</color>
+    <color name="i_am_color_ccb">#00000ccb</color>
+    <color name="i_am_color_ccc">#00000ccc</color>
+    <color name="i_am_color_ccd">#00000ccd</color>
+    <color name="i_am_color_cce">#00000cce</color>
+    <color name="i_am_color_ccf">#00000ccf</color>
+    <color name="i_am_color_cd0">#00000cd0</color>
+    <color name="i_am_color_cd1">#00000cd1</color>
+    <color name="i_am_color_cd2">#00000cd2</color>
+    <color name="i_am_color_cd3">#00000cd3</color>
+    <color name="i_am_color_cd4">#00000cd4</color>
+    <color name="i_am_color_cd5">#00000cd5</color>
+    <color name="i_am_color_cd6">#00000cd6</color>
+    <color name="i_am_color_cd7">#00000cd7</color>
+    <color name="i_am_color_cd8">#00000cd8</color>
+    <color name="i_am_color_cd9">#00000cd9</color>
+    <color name="i_am_color_cda">#00000cda</color>
+    <color name="i_am_color_cdb">#00000cdb</color>
+    <color name="i_am_color_cdc">#00000cdc</color>
+    <color name="i_am_color_cdd">#00000cdd</color>
+    <color name="i_am_color_cde">#00000cde</color>
+    <color name="i_am_color_cdf">#00000cdf</color>
+    <color name="i_am_color_ce0">#00000ce0</color>
+    <color name="i_am_color_ce1">#00000ce1</color>
+    <color name="i_am_color_ce2">#00000ce2</color>
+    <color name="i_am_color_ce3">#00000ce3</color>
+    <color name="i_am_color_ce4">#00000ce4</color>
+    <color name="i_am_color_ce5">#00000ce5</color>
+    <color name="i_am_color_ce6">#00000ce6</color>
+    <color name="i_am_color_ce7">#00000ce7</color>
+    <color name="i_am_color_ce8">#00000ce8</color>
+    <color name="i_am_color_ce9">#00000ce9</color>
+    <color name="i_am_color_cea">#00000cea</color>
+    <color name="i_am_color_ceb">#00000ceb</color>
+    <color name="i_am_color_cec">#00000cec</color>
+    <color name="i_am_color_ced">#00000ced</color>
+    <color name="i_am_color_cee">#00000cee</color>
+    <color name="i_am_color_cef">#00000cef</color>
+    <color name="i_am_color_cf0">#00000cf0</color>
+    <color name="i_am_color_cf1">#00000cf1</color>
+    <color name="i_am_color_cf2">#00000cf2</color>
+    <color name="i_am_color_cf3">#00000cf3</color>
+    <color name="i_am_color_cf4">#00000cf4</color>
+    <color name="i_am_color_cf5">#00000cf5</color>
+    <color name="i_am_color_cf6">#00000cf6</color>
+    <color name="i_am_color_cf7">#00000cf7</color>
+    <color name="i_am_color_cf8">#00000cf8</color>
+    <color name="i_am_color_cf9">#00000cf9</color>
+    <color name="i_am_color_cfa">#00000cfa</color>
+    <color name="i_am_color_cfb">#00000cfb</color>
+    <color name="i_am_color_cfc">#00000cfc</color>
+    <color name="i_am_color_cfd">#00000cfd</color>
+    <color name="i_am_color_cfe">#00000cfe</color>
+    <color name="i_am_color_cff">#00000cff</color>
+    <color name="i_am_color_d00">#00000d00</color>
+    <color name="i_am_color_d01">#00000d01</color>
+    <color name="i_am_color_d02">#00000d02</color>
+    <color name="i_am_color_d03">#00000d03</color>
+    <color name="i_am_color_d04">#00000d04</color>
+    <color name="i_am_color_d05">#00000d05</color>
+    <color name="i_am_color_d06">#00000d06</color>
+    <color name="i_am_color_d07">#00000d07</color>
+    <color name="i_am_color_d08">#00000d08</color>
+    <color name="i_am_color_d09">#00000d09</color>
+    <color name="i_am_color_d0a">#00000d0a</color>
+    <color name="i_am_color_d0b">#00000d0b</color>
+    <color name="i_am_color_d0c">#00000d0c</color>
+    <color name="i_am_color_d0d">#00000d0d</color>
+    <color name="i_am_color_d0e">#00000d0e</color>
+    <color name="i_am_color_d0f">#00000d0f</color>
+    <color name="i_am_color_d10">#00000d10</color>
+    <color name="i_am_color_d11">#00000d11</color>
+    <color name="i_am_color_d12">#00000d12</color>
+    <color name="i_am_color_d13">#00000d13</color>
+    <color name="i_am_color_d14">#00000d14</color>
+    <color name="i_am_color_d15">#00000d15</color>
+    <color name="i_am_color_d16">#00000d16</color>
+    <color name="i_am_color_d17">#00000d17</color>
+    <color name="i_am_color_d18">#00000d18</color>
+    <color name="i_am_color_d19">#00000d19</color>
+    <color name="i_am_color_d1a">#00000d1a</color>
+    <color name="i_am_color_d1b">#00000d1b</color>
+    <color name="i_am_color_d1c">#00000d1c</color>
+    <color name="i_am_color_d1d">#00000d1d</color>
+    <color name="i_am_color_d1e">#00000d1e</color>
+    <color name="i_am_color_d1f">#00000d1f</color>
+    <color name="i_am_color_d20">#00000d20</color>
+    <color name="i_am_color_d21">#00000d21</color>
+    <color name="i_am_color_d22">#00000d22</color>
+    <color name="i_am_color_d23">#00000d23</color>
+    <color name="i_am_color_d24">#00000d24</color>
+    <color name="i_am_color_d25">#00000d25</color>
+    <color name="i_am_color_d26">#00000d26</color>
+    <color name="i_am_color_d27">#00000d27</color>
+    <color name="i_am_color_d28">#00000d28</color>
+    <color name="i_am_color_d29">#00000d29</color>
+    <color name="i_am_color_d2a">#00000d2a</color>
+    <color name="i_am_color_d2b">#00000d2b</color>
+    <color name="i_am_color_d2c">#00000d2c</color>
+    <color name="i_am_color_d2d">#00000d2d</color>
+    <color name="i_am_color_d2e">#00000d2e</color>
+    <color name="i_am_color_d2f">#00000d2f</color>
+    <color name="i_am_color_d30">#00000d30</color>
+    <color name="i_am_color_d31">#00000d31</color>
+    <color name="i_am_color_d32">#00000d32</color>
+    <color name="i_am_color_d33">#00000d33</color>
+    <color name="i_am_color_d34">#00000d34</color>
+    <color name="i_am_color_d35">#00000d35</color>
+    <color name="i_am_color_d36">#00000d36</color>
+    <color name="i_am_color_d37">#00000d37</color>
+    <color name="i_am_color_d38">#00000d38</color>
+    <color name="i_am_color_d39">#00000d39</color>
+    <color name="i_am_color_d3a">#00000d3a</color>
+    <color name="i_am_color_d3b">#00000d3b</color>
+    <color name="i_am_color_d3c">#00000d3c</color>
+    <color name="i_am_color_d3d">#00000d3d</color>
+    <color name="i_am_color_d3e">#00000d3e</color>
+    <color name="i_am_color_d3f">#00000d3f</color>
+    <color name="i_am_color_d40">#00000d40</color>
+    <color name="i_am_color_d41">#00000d41</color>
+    <color name="i_am_color_d42">#00000d42</color>
+    <color name="i_am_color_d43">#00000d43</color>
+    <color name="i_am_color_d44">#00000d44</color>
+    <color name="i_am_color_d45">#00000d45</color>
+    <color name="i_am_color_d46">#00000d46</color>
+    <color name="i_am_color_d47">#00000d47</color>
+    <color name="i_am_color_d48">#00000d48</color>
+    <color name="i_am_color_d49">#00000d49</color>
+    <color name="i_am_color_d4a">#00000d4a</color>
+    <color name="i_am_color_d4b">#00000d4b</color>
+    <color name="i_am_color_d4c">#00000d4c</color>
+    <color name="i_am_color_d4d">#00000d4d</color>
+    <color name="i_am_color_d4e">#00000d4e</color>
+    <color name="i_am_color_d4f">#00000d4f</color>
+    <color name="i_am_color_d50">#00000d50</color>
+    <color name="i_am_color_d51">#00000d51</color>
+    <color name="i_am_color_d52">#00000d52</color>
+    <color name="i_am_color_d53">#00000d53</color>
+    <color name="i_am_color_d54">#00000d54</color>
+    <color name="i_am_color_d55">#00000d55</color>
+    <color name="i_am_color_d56">#00000d56</color>
+    <color name="i_am_color_d57">#00000d57</color>
+    <color name="i_am_color_d58">#00000d58</color>
+    <color name="i_am_color_d59">#00000d59</color>
+    <color name="i_am_color_d5a">#00000d5a</color>
+    <color name="i_am_color_d5b">#00000d5b</color>
+    <color name="i_am_color_d5c">#00000d5c</color>
+    <color name="i_am_color_d5d">#00000d5d</color>
+    <color name="i_am_color_d5e">#00000d5e</color>
+    <color name="i_am_color_d5f">#00000d5f</color>
+    <color name="i_am_color_d60">#00000d60</color>
+    <color name="i_am_color_d61">#00000d61</color>
+    <color name="i_am_color_d62">#00000d62</color>
+    <color name="i_am_color_d63">#00000d63</color>
+    <color name="i_am_color_d64">#00000d64</color>
+    <color name="i_am_color_d65">#00000d65</color>
+    <color name="i_am_color_d66">#00000d66</color>
+    <color name="i_am_color_d67">#00000d67</color>
+    <color name="i_am_color_d68">#00000d68</color>
+    <color name="i_am_color_d69">#00000d69</color>
+    <color name="i_am_color_d6a">#00000d6a</color>
+    <color name="i_am_color_d6b">#00000d6b</color>
+    <color name="i_am_color_d6c">#00000d6c</color>
+    <color name="i_am_color_d6d">#00000d6d</color>
+    <color name="i_am_color_d6e">#00000d6e</color>
+    <color name="i_am_color_d6f">#00000d6f</color>
+    <color name="i_am_color_d70">#00000d70</color>
+    <color name="i_am_color_d71">#00000d71</color>
+    <color name="i_am_color_d72">#00000d72</color>
+    <color name="i_am_color_d73">#00000d73</color>
+    <color name="i_am_color_d74">#00000d74</color>
+    <color name="i_am_color_d75">#00000d75</color>
+    <color name="i_am_color_d76">#00000d76</color>
+    <color name="i_am_color_d77">#00000d77</color>
+    <color name="i_am_color_d78">#00000d78</color>
+    <color name="i_am_color_d79">#00000d79</color>
+    <color name="i_am_color_d7a">#00000d7a</color>
+    <color name="i_am_color_d7b">#00000d7b</color>
+    <color name="i_am_color_d7c">#00000d7c</color>
+    <color name="i_am_color_d7d">#00000d7d</color>
+    <color name="i_am_color_d7e">#00000d7e</color>
+    <color name="i_am_color_d7f">#00000d7f</color>
+    <color name="i_am_color_d80">#00000d80</color>
+    <color name="i_am_color_d81">#00000d81</color>
+    <color name="i_am_color_d82">#00000d82</color>
+    <color name="i_am_color_d83">#00000d83</color>
+    <color name="i_am_color_d84">#00000d84</color>
+    <color name="i_am_color_d85">#00000d85</color>
+    <color name="i_am_color_d86">#00000d86</color>
+    <color name="i_am_color_d87">#00000d87</color>
+    <color name="i_am_color_d88">#00000d88</color>
+    <color name="i_am_color_d89">#00000d89</color>
+    <color name="i_am_color_d8a">#00000d8a</color>
+    <color name="i_am_color_d8b">#00000d8b</color>
+    <color name="i_am_color_d8c">#00000d8c</color>
+    <color name="i_am_color_d8d">#00000d8d</color>
+    <color name="i_am_color_d8e">#00000d8e</color>
+    <color name="i_am_color_d8f">#00000d8f</color>
+    <color name="i_am_color_d90">#00000d90</color>
+    <color name="i_am_color_d91">#00000d91</color>
+    <color name="i_am_color_d92">#00000d92</color>
+    <color name="i_am_color_d93">#00000d93</color>
+    <color name="i_am_color_d94">#00000d94</color>
+    <color name="i_am_color_d95">#00000d95</color>
+    <color name="i_am_color_d96">#00000d96</color>
+    <color name="i_am_color_d97">#00000d97</color>
+    <color name="i_am_color_d98">#00000d98</color>
+    <color name="i_am_color_d99">#00000d99</color>
+    <color name="i_am_color_d9a">#00000d9a</color>
+    <color name="i_am_color_d9b">#00000d9b</color>
+    <color name="i_am_color_d9c">#00000d9c</color>
+    <color name="i_am_color_d9d">#00000d9d</color>
+    <color name="i_am_color_d9e">#00000d9e</color>
+    <color name="i_am_color_d9f">#00000d9f</color>
+    <color name="i_am_color_da0">#00000da0</color>
+    <color name="i_am_color_da1">#00000da1</color>
+    <color name="i_am_color_da2">#00000da2</color>
+    <color name="i_am_color_da3">#00000da3</color>
+    <color name="i_am_color_da4">#00000da4</color>
+    <color name="i_am_color_da5">#00000da5</color>
+    <color name="i_am_color_da6">#00000da6</color>
+    <color name="i_am_color_da7">#00000da7</color>
+    <color name="i_am_color_da8">#00000da8</color>
+    <color name="i_am_color_da9">#00000da9</color>
+    <color name="i_am_color_daa">#00000daa</color>
+    <color name="i_am_color_dab">#00000dab</color>
+    <color name="i_am_color_dac">#00000dac</color>
+    <color name="i_am_color_dad">#00000dad</color>
+    <color name="i_am_color_dae">#00000dae</color>
+    <color name="i_am_color_daf">#00000daf</color>
+    <color name="i_am_color_db0">#00000db0</color>
+    <color name="i_am_color_db1">#00000db1</color>
+    <color name="i_am_color_db2">#00000db2</color>
+    <color name="i_am_color_db3">#00000db3</color>
+    <color name="i_am_color_db4">#00000db4</color>
+    <color name="i_am_color_db5">#00000db5</color>
+    <color name="i_am_color_db6">#00000db6</color>
+    <color name="i_am_color_db7">#00000db7</color>
+    <color name="i_am_color_db8">#00000db8</color>
+    <color name="i_am_color_db9">#00000db9</color>
+    <color name="i_am_color_dba">#00000dba</color>
+    <color name="i_am_color_dbb">#00000dbb</color>
+    <color name="i_am_color_dbc">#00000dbc</color>
+    <color name="i_am_color_dbd">#00000dbd</color>
+    <color name="i_am_color_dbe">#00000dbe</color>
+    <color name="i_am_color_dbf">#00000dbf</color>
+    <color name="i_am_color_dc0">#00000dc0</color>
+    <color name="i_am_color_dc1">#00000dc1</color>
+    <color name="i_am_color_dc2">#00000dc2</color>
+    <color name="i_am_color_dc3">#00000dc3</color>
+    <color name="i_am_color_dc4">#00000dc4</color>
+    <color name="i_am_color_dc5">#00000dc5</color>
+    <color name="i_am_color_dc6">#00000dc6</color>
+    <color name="i_am_color_dc7">#00000dc7</color>
+    <color name="i_am_color_dc8">#00000dc8</color>
+    <color name="i_am_color_dc9">#00000dc9</color>
+    <color name="i_am_color_dca">#00000dca</color>
+    <color name="i_am_color_dcb">#00000dcb</color>
+    <color name="i_am_color_dcc">#00000dcc</color>
+    <color name="i_am_color_dcd">#00000dcd</color>
+    <color name="i_am_color_dce">#00000dce</color>
+    <color name="i_am_color_dcf">#00000dcf</color>
+    <color name="i_am_color_dd0">#00000dd0</color>
+    <color name="i_am_color_dd1">#00000dd1</color>
+    <color name="i_am_color_dd2">#00000dd2</color>
+    <color name="i_am_color_dd3">#00000dd3</color>
+    <color name="i_am_color_dd4">#00000dd4</color>
+    <color name="i_am_color_dd5">#00000dd5</color>
+    <color name="i_am_color_dd6">#00000dd6</color>
+    <color name="i_am_color_dd7">#00000dd7</color>
+    <color name="i_am_color_dd8">#00000dd8</color>
+    <color name="i_am_color_dd9">#00000dd9</color>
+    <color name="i_am_color_dda">#00000dda</color>
+    <color name="i_am_color_ddb">#00000ddb</color>
+    <color name="i_am_color_ddc">#00000ddc</color>
+    <color name="i_am_color_ddd">#00000ddd</color>
+    <color name="i_am_color_dde">#00000dde</color>
+    <color name="i_am_color_ddf">#00000ddf</color>
+    <color name="i_am_color_de0">#00000de0</color>
+    <color name="i_am_color_de1">#00000de1</color>
+    <color name="i_am_color_de2">#00000de2</color>
+    <color name="i_am_color_de3">#00000de3</color>
+    <color name="i_am_color_de4">#00000de4</color>
+    <color name="i_am_color_de5">#00000de5</color>
+    <color name="i_am_color_de6">#00000de6</color>
+    <color name="i_am_color_de7">#00000de7</color>
+    <color name="i_am_color_de8">#00000de8</color>
+    <color name="i_am_color_de9">#00000de9</color>
+    <color name="i_am_color_dea">#00000dea</color>
+    <color name="i_am_color_deb">#00000deb</color>
+    <color name="i_am_color_dec">#00000dec</color>
+    <color name="i_am_color_ded">#00000ded</color>
+    <color name="i_am_color_dee">#00000dee</color>
+    <color name="i_am_color_def">#00000def</color>
+    <color name="i_am_color_df0">#00000df0</color>
+    <color name="i_am_color_df1">#00000df1</color>
+    <color name="i_am_color_df2">#00000df2</color>
+    <color name="i_am_color_df3">#00000df3</color>
+    <color name="i_am_color_df4">#00000df4</color>
+    <color name="i_am_color_df5">#00000df5</color>
+    <color name="i_am_color_df6">#00000df6</color>
+    <color name="i_am_color_df7">#00000df7</color>
+    <color name="i_am_color_df8">#00000df8</color>
+    <color name="i_am_color_df9">#00000df9</color>
+    <color name="i_am_color_dfa">#00000dfa</color>
+    <color name="i_am_color_dfb">#00000dfb</color>
+    <color name="i_am_color_dfc">#00000dfc</color>
+    <color name="i_am_color_dfd">#00000dfd</color>
+    <color name="i_am_color_dfe">#00000dfe</color>
+    <color name="i_am_color_dff">#00000dff</color>
+    <color name="i_am_color_e00">#00000e00</color>
+    <color name="i_am_color_e01">#00000e01</color>
+    <color name="i_am_color_e02">#00000e02</color>
+    <color name="i_am_color_e03">#00000e03</color>
+    <color name="i_am_color_e04">#00000e04</color>
+    <color name="i_am_color_e05">#00000e05</color>
+    <color name="i_am_color_e06">#00000e06</color>
+    <color name="i_am_color_e07">#00000e07</color>
+    <color name="i_am_color_e08">#00000e08</color>
+    <color name="i_am_color_e09">#00000e09</color>
+    <color name="i_am_color_e0a">#00000e0a</color>
+    <color name="i_am_color_e0b">#00000e0b</color>
+    <color name="i_am_color_e0c">#00000e0c</color>
+    <color name="i_am_color_e0d">#00000e0d</color>
+    <color name="i_am_color_e0e">#00000e0e</color>
+    <color name="i_am_color_e0f">#00000e0f</color>
+    <color name="i_am_color_e10">#00000e10</color>
+    <color name="i_am_color_e11">#00000e11</color>
+    <color name="i_am_color_e12">#00000e12</color>
+    <color name="i_am_color_e13">#00000e13</color>
+    <color name="i_am_color_e14">#00000e14</color>
+    <color name="i_am_color_e15">#00000e15</color>
+    <color name="i_am_color_e16">#00000e16</color>
+    <color name="i_am_color_e17">#00000e17</color>
+    <color name="i_am_color_e18">#00000e18</color>
+    <color name="i_am_color_e19">#00000e19</color>
+    <color name="i_am_color_e1a">#00000e1a</color>
+    <color name="i_am_color_e1b">#00000e1b</color>
+    <color name="i_am_color_e1c">#00000e1c</color>
+    <color name="i_am_color_e1d">#00000e1d</color>
+    <color name="i_am_color_e1e">#00000e1e</color>
+    <color name="i_am_color_e1f">#00000e1f</color>
+    <color name="i_am_color_e20">#00000e20</color>
+    <color name="i_am_color_e21">#00000e21</color>
+    <color name="i_am_color_e22">#00000e22</color>
+    <color name="i_am_color_e23">#00000e23</color>
+    <color name="i_am_color_e24">#00000e24</color>
+    <color name="i_am_color_e25">#00000e25</color>
+    <color name="i_am_color_e26">#00000e26</color>
+    <color name="i_am_color_e27">#00000e27</color>
+    <color name="i_am_color_e28">#00000e28</color>
+    <color name="i_am_color_e29">#00000e29</color>
+    <color name="i_am_color_e2a">#00000e2a</color>
+    <color name="i_am_color_e2b">#00000e2b</color>
+    <color name="i_am_color_e2c">#00000e2c</color>
+    <color name="i_am_color_e2d">#00000e2d</color>
+    <color name="i_am_color_e2e">#00000e2e</color>
+    <color name="i_am_color_e2f">#00000e2f</color>
+    <color name="i_am_color_e30">#00000e30</color>
+    <color name="i_am_color_e31">#00000e31</color>
+    <color name="i_am_color_e32">#00000e32</color>
+    <color name="i_am_color_e33">#00000e33</color>
+    <color name="i_am_color_e34">#00000e34</color>
+    <color name="i_am_color_e35">#00000e35</color>
+    <color name="i_am_color_e36">#00000e36</color>
+    <color name="i_am_color_e37">#00000e37</color>
+    <color name="i_am_color_e38">#00000e38</color>
+    <color name="i_am_color_e39">#00000e39</color>
+    <color name="i_am_color_e3a">#00000e3a</color>
+    <color name="i_am_color_e3b">#00000e3b</color>
+    <color name="i_am_color_e3c">#00000e3c</color>
+    <color name="i_am_color_e3d">#00000e3d</color>
+    <color name="i_am_color_e3e">#00000e3e</color>
+    <color name="i_am_color_e3f">#00000e3f</color>
+    <color name="i_am_color_e40">#00000e40</color>
+    <color name="i_am_color_e41">#00000e41</color>
+    <color name="i_am_color_e42">#00000e42</color>
+    <color name="i_am_color_e43">#00000e43</color>
+    <color name="i_am_color_e44">#00000e44</color>
+    <color name="i_am_color_e45">#00000e45</color>
+    <color name="i_am_color_e46">#00000e46</color>
+    <color name="i_am_color_e47">#00000e47</color>
+    <color name="i_am_color_e48">#00000e48</color>
+    <color name="i_am_color_e49">#00000e49</color>
+    <color name="i_am_color_e4a">#00000e4a</color>
+    <color name="i_am_color_e4b">#00000e4b</color>
+    <color name="i_am_color_e4c">#00000e4c</color>
+    <color name="i_am_color_e4d">#00000e4d</color>
+    <color name="i_am_color_e4e">#00000e4e</color>
+    <color name="i_am_color_e4f">#00000e4f</color>
+    <color name="i_am_color_e50">#00000e50</color>
+    <color name="i_am_color_e51">#00000e51</color>
+    <color name="i_am_color_e52">#00000e52</color>
+    <color name="i_am_color_e53">#00000e53</color>
+    <color name="i_am_color_e54">#00000e54</color>
+    <color name="i_am_color_e55">#00000e55</color>
+    <color name="i_am_color_e56">#00000e56</color>
+    <color name="i_am_color_e57">#00000e57</color>
+    <color name="i_am_color_e58">#00000e58</color>
+    <color name="i_am_color_e59">#00000e59</color>
+    <color name="i_am_color_e5a">#00000e5a</color>
+    <color name="i_am_color_e5b">#00000e5b</color>
+    <color name="i_am_color_e5c">#00000e5c</color>
+    <color name="i_am_color_e5d">#00000e5d</color>
+    <color name="i_am_color_e5e">#00000e5e</color>
+    <color name="i_am_color_e5f">#00000e5f</color>
+    <color name="i_am_color_e60">#00000e60</color>
+    <color name="i_am_color_e61">#00000e61</color>
+    <color name="i_am_color_e62">#00000e62</color>
+    <color name="i_am_color_e63">#00000e63</color>
+    <color name="i_am_color_e64">#00000e64</color>
+    <color name="i_am_color_e65">#00000e65</color>
+    <color name="i_am_color_e66">#00000e66</color>
+    <color name="i_am_color_e67">#00000e67</color>
+    <color name="i_am_color_e68">#00000e68</color>
+    <color name="i_am_color_e69">#00000e69</color>
+    <color name="i_am_color_e6a">#00000e6a</color>
+    <color name="i_am_color_e6b">#00000e6b</color>
+    <color name="i_am_color_e6c">#00000e6c</color>
+    <color name="i_am_color_e6d">#00000e6d</color>
+    <color name="i_am_color_e6e">#00000e6e</color>
+    <color name="i_am_color_e6f">#00000e6f</color>
+    <color name="i_am_color_e70">#00000e70</color>
+    <color name="i_am_color_e71">#00000e71</color>
+    <color name="i_am_color_e72">#00000e72</color>
+    <color name="i_am_color_e73">#00000e73</color>
+    <color name="i_am_color_e74">#00000e74</color>
+    <color name="i_am_color_e75">#00000e75</color>
+    <color name="i_am_color_e76">#00000e76</color>
+    <color name="i_am_color_e77">#00000e77</color>
+    <color name="i_am_color_e78">#00000e78</color>
+    <color name="i_am_color_e79">#00000e79</color>
+    <color name="i_am_color_e7a">#00000e7a</color>
+    <color name="i_am_color_e7b">#00000e7b</color>
+    <color name="i_am_color_e7c">#00000e7c</color>
+    <color name="i_am_color_e7d">#00000e7d</color>
+    <color name="i_am_color_e7e">#00000e7e</color>
+    <color name="i_am_color_e7f">#00000e7f</color>
+    <color name="i_am_color_e80">#00000e80</color>
+    <color name="i_am_color_e81">#00000e81</color>
+    <color name="i_am_color_e82">#00000e82</color>
+    <color name="i_am_color_e83">#00000e83</color>
+    <color name="i_am_color_e84">#00000e84</color>
+    <color name="i_am_color_e85">#00000e85</color>
+    <color name="i_am_color_e86">#00000e86</color>
+    <color name="i_am_color_e87">#00000e87</color>
+    <color name="i_am_color_e88">#00000e88</color>
+    <color name="i_am_color_e89">#00000e89</color>
+    <color name="i_am_color_e8a">#00000e8a</color>
+    <color name="i_am_color_e8b">#00000e8b</color>
+    <color name="i_am_color_e8c">#00000e8c</color>
+    <color name="i_am_color_e8d">#00000e8d</color>
+    <color name="i_am_color_e8e">#00000e8e</color>
+    <color name="i_am_color_e8f">#00000e8f</color>
+    <color name="i_am_color_e90">#00000e90</color>
+    <color name="i_am_color_e91">#00000e91</color>
+    <color name="i_am_color_e92">#00000e92</color>
+    <color name="i_am_color_e93">#00000e93</color>
+    <color name="i_am_color_e94">#00000e94</color>
+    <color name="i_am_color_e95">#00000e95</color>
+    <color name="i_am_color_e96">#00000e96</color>
+    <color name="i_am_color_e97">#00000e97</color>
+    <color name="i_am_color_e98">#00000e98</color>
+    <color name="i_am_color_e99">#00000e99</color>
+    <color name="i_am_color_e9a">#00000e9a</color>
+    <color name="i_am_color_e9b">#00000e9b</color>
+    <color name="i_am_color_e9c">#00000e9c</color>
+    <color name="i_am_color_e9d">#00000e9d</color>
+    <color name="i_am_color_e9e">#00000e9e</color>
+    <color name="i_am_color_e9f">#00000e9f</color>
+    <color name="i_am_color_ea0">#00000ea0</color>
+    <color name="i_am_color_ea1">#00000ea1</color>
+    <color name="i_am_color_ea2">#00000ea2</color>
+    <color name="i_am_color_ea3">#00000ea3</color>
+    <color name="i_am_color_ea4">#00000ea4</color>
+    <color name="i_am_color_ea5">#00000ea5</color>
+    <color name="i_am_color_ea6">#00000ea6</color>
+    <color name="i_am_color_ea7">#00000ea7</color>
+    <color name="i_am_color_ea8">#00000ea8</color>
+    <color name="i_am_color_ea9">#00000ea9</color>
+    <color name="i_am_color_eaa">#00000eaa</color>
+    <color name="i_am_color_eab">#00000eab</color>
+    <color name="i_am_color_eac">#00000eac</color>
+    <color name="i_am_color_ead">#00000ead</color>
+    <color name="i_am_color_eae">#00000eae</color>
+    <color name="i_am_color_eaf">#00000eaf</color>
+    <color name="i_am_color_eb0">#00000eb0</color>
+    <color name="i_am_color_eb1">#00000eb1</color>
+    <color name="i_am_color_eb2">#00000eb2</color>
+    <color name="i_am_color_eb3">#00000eb3</color>
+    <color name="i_am_color_eb4">#00000eb4</color>
+    <color name="i_am_color_eb5">#00000eb5</color>
+    <color name="i_am_color_eb6">#00000eb6</color>
+    <color name="i_am_color_eb7">#00000eb7</color>
+    <color name="i_am_color_eb8">#00000eb8</color>
+    <color name="i_am_color_eb9">#00000eb9</color>
+    <color name="i_am_color_eba">#00000eba</color>
+    <color name="i_am_color_ebb">#00000ebb</color>
+    <color name="i_am_color_ebc">#00000ebc</color>
+    <color name="i_am_color_ebd">#00000ebd</color>
+    <color name="i_am_color_ebe">#00000ebe</color>
+    <color name="i_am_color_ebf">#00000ebf</color>
+    <color name="i_am_color_ec0">#00000ec0</color>
+    <color name="i_am_color_ec1">#00000ec1</color>
+    <color name="i_am_color_ec2">#00000ec2</color>
+    <color name="i_am_color_ec3">#00000ec3</color>
+    <color name="i_am_color_ec4">#00000ec4</color>
+    <color name="i_am_color_ec5">#00000ec5</color>
+    <color name="i_am_color_ec6">#00000ec6</color>
+    <color name="i_am_color_ec7">#00000ec7</color>
+    <color name="i_am_color_ec8">#00000ec8</color>
+    <color name="i_am_color_ec9">#00000ec9</color>
+    <color name="i_am_color_eca">#00000eca</color>
+    <color name="i_am_color_ecb">#00000ecb</color>
+    <color name="i_am_color_ecc">#00000ecc</color>
+    <color name="i_am_color_ecd">#00000ecd</color>
+    <color name="i_am_color_ece">#00000ece</color>
+    <color name="i_am_color_ecf">#00000ecf</color>
+    <color name="i_am_color_ed0">#00000ed0</color>
+    <color name="i_am_color_ed1">#00000ed1</color>
+    <color name="i_am_color_ed2">#00000ed2</color>
+    <color name="i_am_color_ed3">#00000ed3</color>
+    <color name="i_am_color_ed4">#00000ed4</color>
+    <color name="i_am_color_ed5">#00000ed5</color>
+    <color name="i_am_color_ed6">#00000ed6</color>
+    <color name="i_am_color_ed7">#00000ed7</color>
+    <color name="i_am_color_ed8">#00000ed8</color>
+    <color name="i_am_color_ed9">#00000ed9</color>
+    <color name="i_am_color_eda">#00000eda</color>
+    <color name="i_am_color_edb">#00000edb</color>
+    <color name="i_am_color_edc">#00000edc</color>
+    <color name="i_am_color_edd">#00000edd</color>
+    <color name="i_am_color_ede">#00000ede</color>
+    <color name="i_am_color_edf">#00000edf</color>
+    <color name="i_am_color_ee0">#00000ee0</color>
+    <color name="i_am_color_ee1">#00000ee1</color>
+    <color name="i_am_color_ee2">#00000ee2</color>
+    <color name="i_am_color_ee3">#00000ee3</color>
+    <color name="i_am_color_ee4">#00000ee4</color>
+    <color name="i_am_color_ee5">#00000ee5</color>
+    <color name="i_am_color_ee6">#00000ee6</color>
+    <color name="i_am_color_ee7">#00000ee7</color>
+    <color name="i_am_color_ee8">#00000ee8</color>
+    <color name="i_am_color_ee9">#00000ee9</color>
+    <color name="i_am_color_eea">#00000eea</color>
+    <color name="i_am_color_eeb">#00000eeb</color>
+    <color name="i_am_color_eec">#00000eec</color>
+    <color name="i_am_color_eed">#00000eed</color>
+    <color name="i_am_color_eee">#00000eee</color>
+    <color name="i_am_color_eef">#00000eef</color>
+    <color name="i_am_color_ef0">#00000ef0</color>
+    <color name="i_am_color_ef1">#00000ef1</color>
+    <color name="i_am_color_ef2">#00000ef2</color>
+    <color name="i_am_color_ef3">#00000ef3</color>
+    <color name="i_am_color_ef4">#00000ef4</color>
+    <color name="i_am_color_ef5">#00000ef5</color>
+    <color name="i_am_color_ef6">#00000ef6</color>
+    <color name="i_am_color_ef7">#00000ef7</color>
+    <color name="i_am_color_ef8">#00000ef8</color>
+    <color name="i_am_color_ef9">#00000ef9</color>
+    <color name="i_am_color_efa">#00000efa</color>
+    <color name="i_am_color_efb">#00000efb</color>
+    <color name="i_am_color_efc">#00000efc</color>
+    <color name="i_am_color_efd">#00000efd</color>
+    <color name="i_am_color_efe">#00000efe</color>
+    <color name="i_am_color_eff">#00000eff</color>
+    <color name="i_am_color_f00">#00000f00</color>
+    <color name="i_am_color_f01">#00000f01</color>
+    <color name="i_am_color_f02">#00000f02</color>
+    <color name="i_am_color_f03">#00000f03</color>
+    <color name="i_am_color_f04">#00000f04</color>
+    <color name="i_am_color_f05">#00000f05</color>
+    <color name="i_am_color_f06">#00000f06</color>
+    <color name="i_am_color_f07">#00000f07</color>
+    <color name="i_am_color_f08">#00000f08</color>
+    <color name="i_am_color_f09">#00000f09</color>
+    <color name="i_am_color_f0a">#00000f0a</color>
+    <color name="i_am_color_f0b">#00000f0b</color>
+    <color name="i_am_color_f0c">#00000f0c</color>
+    <color name="i_am_color_f0d">#00000f0d</color>
+    <color name="i_am_color_f0e">#00000f0e</color>
+    <color name="i_am_color_f0f">#00000f0f</color>
+    <color name="i_am_color_f10">#00000f10</color>
+    <color name="i_am_color_f11">#00000f11</color>
+    <color name="i_am_color_f12">#00000f12</color>
+    <color name="i_am_color_f13">#00000f13</color>
+    <color name="i_am_color_f14">#00000f14</color>
+    <color name="i_am_color_f15">#00000f15</color>
+    <color name="i_am_color_f16">#00000f16</color>
+    <color name="i_am_color_f17">#00000f17</color>
+    <color name="i_am_color_f18">#00000f18</color>
+    <color name="i_am_color_f19">#00000f19</color>
+    <color name="i_am_color_f1a">#00000f1a</color>
+    <color name="i_am_color_f1b">#00000f1b</color>
+    <color name="i_am_color_f1c">#00000f1c</color>
+    <color name="i_am_color_f1d">#00000f1d</color>
+    <color name="i_am_color_f1e">#00000f1e</color>
+    <color name="i_am_color_f1f">#00000f1f</color>
+    <color name="i_am_color_f20">#00000f20</color>
+    <color name="i_am_color_f21">#00000f21</color>
+    <color name="i_am_color_f22">#00000f22</color>
+    <color name="i_am_color_f23">#00000f23</color>
+    <color name="i_am_color_f24">#00000f24</color>
+    <color name="i_am_color_f25">#00000f25</color>
+    <color name="i_am_color_f26">#00000f26</color>
+    <color name="i_am_color_f27">#00000f27</color>
+    <color name="i_am_color_f28">#00000f28</color>
+    <color name="i_am_color_f29">#00000f29</color>
+    <color name="i_am_color_f2a">#00000f2a</color>
+    <color name="i_am_color_f2b">#00000f2b</color>
+    <color name="i_am_color_f2c">#00000f2c</color>
+    <color name="i_am_color_f2d">#00000f2d</color>
+    <color name="i_am_color_f2e">#00000f2e</color>
+    <color name="i_am_color_f2f">#00000f2f</color>
+    <color name="i_am_color_f30">#00000f30</color>
+    <color name="i_am_color_f31">#00000f31</color>
+    <color name="i_am_color_f32">#00000f32</color>
+    <color name="i_am_color_f33">#00000f33</color>
+    <color name="i_am_color_f34">#00000f34</color>
+    <color name="i_am_color_f35">#00000f35</color>
+    <color name="i_am_color_f36">#00000f36</color>
+    <color name="i_am_color_f37">#00000f37</color>
+    <color name="i_am_color_f38">#00000f38</color>
+    <color name="i_am_color_f39">#00000f39</color>
+    <color name="i_am_color_f3a">#00000f3a</color>
+    <color name="i_am_color_f3b">#00000f3b</color>
+    <color name="i_am_color_f3c">#00000f3c</color>
+    <color name="i_am_color_f3d">#00000f3d</color>
+    <color name="i_am_color_f3e">#00000f3e</color>
+    <color name="i_am_color_f3f">#00000f3f</color>
+    <color name="i_am_color_f40">#00000f40</color>
+    <color name="i_am_color_f41">#00000f41</color>
+    <color name="i_am_color_f42">#00000f42</color>
+    <color name="i_am_color_f43">#00000f43</color>
+    <color name="i_am_color_f44">#00000f44</color>
+    <color name="i_am_color_f45">#00000f45</color>
+    <color name="i_am_color_f46">#00000f46</color>
+    <color name="i_am_color_f47">#00000f47</color>
+    <color name="i_am_color_f48">#00000f48</color>
+    <color name="i_am_color_f49">#00000f49</color>
+    <color name="i_am_color_f4a">#00000f4a</color>
+    <color name="i_am_color_f4b">#00000f4b</color>
+    <color name="i_am_color_f4c">#00000f4c</color>
+    <color name="i_am_color_f4d">#00000f4d</color>
+    <color name="i_am_color_f4e">#00000f4e</color>
+    <color name="i_am_color_f4f">#00000f4f</color>
+    <color name="i_am_color_f50">#00000f50</color>
+    <color name="i_am_color_f51">#00000f51</color>
+    <color name="i_am_color_f52">#00000f52</color>
+    <color name="i_am_color_f53">#00000f53</color>
+    <color name="i_am_color_f54">#00000f54</color>
+    <color name="i_am_color_f55">#00000f55</color>
+    <color name="i_am_color_f56">#00000f56</color>
+    <color name="i_am_color_f57">#00000f57</color>
+    <color name="i_am_color_f58">#00000f58</color>
+    <color name="i_am_color_f59">#00000f59</color>
+    <color name="i_am_color_f5a">#00000f5a</color>
+    <color name="i_am_color_f5b">#00000f5b</color>
+    <color name="i_am_color_f5c">#00000f5c</color>
+    <color name="i_am_color_f5d">#00000f5d</color>
+    <color name="i_am_color_f5e">#00000f5e</color>
+    <color name="i_am_color_f5f">#00000f5f</color>
+    <color name="i_am_color_f60">#00000f60</color>
+    <color name="i_am_color_f61">#00000f61</color>
+    <color name="i_am_color_f62">#00000f62</color>
+    <color name="i_am_color_f63">#00000f63</color>
+    <color name="i_am_color_f64">#00000f64</color>
+    <color name="i_am_color_f65">#00000f65</color>
+    <color name="i_am_color_f66">#00000f66</color>
+    <color name="i_am_color_f67">#00000f67</color>
+    <color name="i_am_color_f68">#00000f68</color>
+    <color name="i_am_color_f69">#00000f69</color>
+    <color name="i_am_color_f6a">#00000f6a</color>
+    <color name="i_am_color_f6b">#00000f6b</color>
+    <color name="i_am_color_f6c">#00000f6c</color>
+    <color name="i_am_color_f6d">#00000f6d</color>
+    <color name="i_am_color_f6e">#00000f6e</color>
+    <color name="i_am_color_f6f">#00000f6f</color>
+    <color name="i_am_color_f70">#00000f70</color>
+    <color name="i_am_color_f71">#00000f71</color>
+    <color name="i_am_color_f72">#00000f72</color>
+    <color name="i_am_color_f73">#00000f73</color>
+    <color name="i_am_color_f74">#00000f74</color>
+    <color name="i_am_color_f75">#00000f75</color>
+    <color name="i_am_color_f76">#00000f76</color>
+    <color name="i_am_color_f77">#00000f77</color>
+    <color name="i_am_color_f78">#00000f78</color>
+    <color name="i_am_color_f79">#00000f79</color>
+    <color name="i_am_color_f7a">#00000f7a</color>
+    <color name="i_am_color_f7b">#00000f7b</color>
+    <color name="i_am_color_f7c">#00000f7c</color>
+    <color name="i_am_color_f7d">#00000f7d</color>
+    <color name="i_am_color_f7e">#00000f7e</color>
+    <color name="i_am_color_f7f">#00000f7f</color>
+    <color name="i_am_color_f80">#00000f80</color>
+    <color name="i_am_color_f81">#00000f81</color>
+    <color name="i_am_color_f82">#00000f82</color>
+    <color name="i_am_color_f83">#00000f83</color>
+    <color name="i_am_color_f84">#00000f84</color>
+    <color name="i_am_color_f85">#00000f85</color>
+    <color name="i_am_color_f86">#00000f86</color>
+    <color name="i_am_color_f87">#00000f87</color>
+    <color name="i_am_color_f88">#00000f88</color>
+    <color name="i_am_color_f89">#00000f89</color>
+    <color name="i_am_color_f8a">#00000f8a</color>
+    <color name="i_am_color_f8b">#00000f8b</color>
+    <color name="i_am_color_f8c">#00000f8c</color>
+    <color name="i_am_color_f8d">#00000f8d</color>
+    <color name="i_am_color_f8e">#00000f8e</color>
+    <color name="i_am_color_f8f">#00000f8f</color>
+    <color name="i_am_color_f90">#00000f90</color>
+    <color name="i_am_color_f91">#00000f91</color>
+    <color name="i_am_color_f92">#00000f92</color>
+    <color name="i_am_color_f93">#00000f93</color>
+    <color name="i_am_color_f94">#00000f94</color>
+    <color name="i_am_color_f95">#00000f95</color>
+    <color name="i_am_color_f96">#00000f96</color>
+    <color name="i_am_color_f97">#00000f97</color>
+    <color name="i_am_color_f98">#00000f98</color>
+    <color name="i_am_color_f99">#00000f99</color>
+    <color name="i_am_color_f9a">#00000f9a</color>
+    <color name="i_am_color_f9b">#00000f9b</color>
+    <color name="i_am_color_f9c">#00000f9c</color>
+    <color name="i_am_color_f9d">#00000f9d</color>
+    <color name="i_am_color_f9e">#00000f9e</color>
+    <color name="i_am_color_f9f">#00000f9f</color>
+    <color name="i_am_color_fa0">#00000fa0</color>
+    <color name="i_am_color_fa1">#00000fa1</color>
+    <color name="i_am_color_fa2">#00000fa2</color>
+    <color name="i_am_color_fa3">#00000fa3</color>
+    <color name="i_am_color_fa4">#00000fa4</color>
+    <color name="i_am_color_fa5">#00000fa5</color>
+    <color name="i_am_color_fa6">#00000fa6</color>
+    <color name="i_am_color_fa7">#00000fa7</color>
+    <color name="i_am_color_fa8">#00000fa8</color>
+    <color name="i_am_color_fa9">#00000fa9</color>
+    <color name="i_am_color_faa">#00000faa</color>
+    <color name="i_am_color_fab">#00000fab</color>
+    <color name="i_am_color_fac">#00000fac</color>
+    <color name="i_am_color_fad">#00000fad</color>
+    <color name="i_am_color_fae">#00000fae</color>
+    <color name="i_am_color_faf">#00000faf</color>
+    <color name="i_am_color_fb0">#00000fb0</color>
+    <color name="i_am_color_fb1">#00000fb1</color>
+    <color name="i_am_color_fb2">#00000fb2</color>
+    <color name="i_am_color_fb3">#00000fb3</color>
+    <color name="i_am_color_fb4">#00000fb4</color>
+    <color name="i_am_color_fb5">#00000fb5</color>
+    <color name="i_am_color_fb6">#00000fb6</color>
+    <color name="i_am_color_fb7">#00000fb7</color>
+    <color name="i_am_color_fb8">#00000fb8</color>
+    <color name="i_am_color_fb9">#00000fb9</color>
+    <color name="i_am_color_fba">#00000fba</color>
+    <color name="i_am_color_fbb">#00000fbb</color>
+    <color name="i_am_color_fbc">#00000fbc</color>
+    <color name="i_am_color_fbd">#00000fbd</color>
+    <color name="i_am_color_fbe">#00000fbe</color>
+    <color name="i_am_color_fbf">#00000fbf</color>
+    <color name="i_am_color_fc0">#00000fc0</color>
+    <color name="i_am_color_fc1">#00000fc1</color>
+    <color name="i_am_color_fc2">#00000fc2</color>
+    <color name="i_am_color_fc3">#00000fc3</color>
+    <color name="i_am_color_fc4">#00000fc4</color>
+    <color name="i_am_color_fc5">#00000fc5</color>
+    <color name="i_am_color_fc6">#00000fc6</color>
+    <color name="i_am_color_fc7">#00000fc7</color>
+    <color name="i_am_color_fc8">#00000fc8</color>
+    <color name="i_am_color_fc9">#00000fc9</color>
+    <color name="i_am_color_fca">#00000fca</color>
+    <color name="i_am_color_fcb">#00000fcb</color>
+    <color name="i_am_color_fcc">#00000fcc</color>
+    <color name="i_am_color_fcd">#00000fcd</color>
+    <color name="i_am_color_fce">#00000fce</color>
+    <color name="i_am_color_fcf">#00000fcf</color>
+    <color name="i_am_color_fd0">#00000fd0</color>
+    <color name="i_am_color_fd1">#00000fd1</color>
+    <color name="i_am_color_fd2">#00000fd2</color>
+    <color name="i_am_color_fd3">#00000fd3</color>
+    <color name="i_am_color_fd4">#00000fd4</color>
+    <color name="i_am_color_fd5">#00000fd5</color>
+    <color name="i_am_color_fd6">#00000fd6</color>
+    <color name="i_am_color_fd7">#00000fd7</color>
+    <color name="i_am_color_fd8">#00000fd8</color>
+    <color name="i_am_color_fd9">#00000fd9</color>
+    <color name="i_am_color_fda">#00000fda</color>
+    <color name="i_am_color_fdb">#00000fdb</color>
+    <color name="i_am_color_fdc">#00000fdc</color>
+    <color name="i_am_color_fdd">#00000fdd</color>
+    <color name="i_am_color_fde">#00000fde</color>
+    <color name="i_am_color_fdf">#00000fdf</color>
+    <color name="i_am_color_fe0">#00000fe0</color>
+    <color name="i_am_color_fe1">#00000fe1</color>
+    <color name="i_am_color_fe2">#00000fe2</color>
+    <color name="i_am_color_fe3">#00000fe3</color>
+    <color name="i_am_color_fe4">#00000fe4</color>
+    <color name="i_am_color_fe5">#00000fe5</color>
+    <color name="i_am_color_fe6">#00000fe6</color>
+    <color name="i_am_color_fe7">#00000fe7</color>
+    <color name="i_am_color_fe8">#00000fe8</color>
+    <color name="i_am_color_fe9">#00000fe9</color>
+    <color name="i_am_color_fea">#00000fea</color>
+    <color name="i_am_color_feb">#00000feb</color>
+    <color name="i_am_color_fec">#00000fec</color>
+    <color name="i_am_color_fed">#00000fed</color>
+    <color name="i_am_color_fee">#00000fee</color>
+    <color name="i_am_color_fef">#00000fef</color>
+    <color name="i_am_color_ff0">#00000ff0</color>
+    <color name="i_am_color_ff1">#00000ff1</color>
+    <color name="i_am_color_ff2">#00000ff2</color>
+    <color name="i_am_color_ff3">#00000ff3</color>
+    <color name="i_am_color_ff4">#00000ff4</color>
+    <color name="i_am_color_ff5">#00000ff5</color>
+    <color name="i_am_color_ff6">#00000ff6</color>
+    <color name="i_am_color_ff7">#00000ff7</color>
+    <color name="i_am_color_ff8">#00000ff8</color>
+    <color name="i_am_color_ff9">#00000ff9</color>
+    <color name="i_am_color_ffa">#00000ffa</color>
+    <color name="i_am_color_ffb">#00000ffb</color>
+    <color name="i_am_color_ffc">#00000ffc</color>
+    <color name="i_am_color_ffd">#00000ffd</color>
+    <color name="i_am_color_ffe">#00000ffe</color>
+    <color name="i_am_color_fff">#00000fff</color>
+    <color name="i_am_color_1000">#00001000</color>
+    <color name="i_am_color_1001">#00001001</color>
+    <color name="i_am_color_1002">#00001002</color>
+    <color name="i_am_color_1003">#00001003</color>
+    <color name="i_am_color_1004">#00001004</color>
+    <color name="i_am_color_1005">#00001005</color>
+    <color name="i_am_color_1006">#00001006</color>
+    <color name="i_am_color_1007">#00001007</color>
+    <color name="i_am_color_1008">#00001008</color>
+    <color name="i_am_color_1009">#00001009</color>
+    <color name="i_am_color_100a">#0000100a</color>
+    <color name="i_am_color_100b">#0000100b</color>
+    <color name="i_am_color_100c">#0000100c</color>
+    <color name="i_am_color_100d">#0000100d</color>
+    <color name="i_am_color_100e">#0000100e</color>
+    <color name="i_am_color_100f">#0000100f</color>
+    <color name="i_am_color_1010">#00001010</color>
+    <color name="i_am_color_1011">#00001011</color>
+    <color name="i_am_color_1012">#00001012</color>
+    <color name="i_am_color_1013">#00001013</color>
+    <color name="i_am_color_1014">#00001014</color>
+    <color name="i_am_color_1015">#00001015</color>
+    <color name="i_am_color_1016">#00001016</color>
+    <color name="i_am_color_1017">#00001017</color>
+    <color name="i_am_color_1018">#00001018</color>
+    <color name="i_am_color_1019">#00001019</color>
+    <color name="i_am_color_101a">#0000101a</color>
+    <color name="i_am_color_101b">#0000101b</color>
+    <color name="i_am_color_101c">#0000101c</color>
+    <color name="i_am_color_101d">#0000101d</color>
+    <color name="i_am_color_101e">#0000101e</color>
+    <color name="i_am_color_101f">#0000101f</color>
+    <color name="i_am_color_1020">#00001020</color>
+    <color name="i_am_color_1021">#00001021</color>
+    <color name="i_am_color_1022">#00001022</color>
+    <color name="i_am_color_1023">#00001023</color>
+    <color name="i_am_color_1024">#00001024</color>
+    <color name="i_am_color_1025">#00001025</color>
+    <color name="i_am_color_1026">#00001026</color>
+    <color name="i_am_color_1027">#00001027</color>
+    <color name="i_am_color_1028">#00001028</color>
+    <color name="i_am_color_1029">#00001029</color>
+    <color name="i_am_color_102a">#0000102a</color>
+    <color name="i_am_color_102b">#0000102b</color>
+    <color name="i_am_color_102c">#0000102c</color>
+    <color name="i_am_color_102d">#0000102d</color>
+    <color name="i_am_color_102e">#0000102e</color>
+    <color name="i_am_color_102f">#0000102f</color>
+    <color name="i_am_color_1030">#00001030</color>
+    <color name="i_am_color_1031">#00001031</color>
+    <color name="i_am_color_1032">#00001032</color>
+    <color name="i_am_color_1033">#00001033</color>
+    <color name="i_am_color_1034">#00001034</color>
+    <color name="i_am_color_1035">#00001035</color>
+    <color name="i_am_color_1036">#00001036</color>
+    <color name="i_am_color_1037">#00001037</color>
+    <color name="i_am_color_1038">#00001038</color>
+    <color name="i_am_color_1039">#00001039</color>
+    <color name="i_am_color_103a">#0000103a</color>
+    <color name="i_am_color_103b">#0000103b</color>
+    <color name="i_am_color_103c">#0000103c</color>
+    <color name="i_am_color_103d">#0000103d</color>
+    <color name="i_am_color_103e">#0000103e</color>
+    <color name="i_am_color_103f">#0000103f</color>
+    <color name="i_am_color_1040">#00001040</color>
+    <color name="i_am_color_1041">#00001041</color>
+    <color name="i_am_color_1042">#00001042</color>
+    <color name="i_am_color_1043">#00001043</color>
+    <color name="i_am_color_1044">#00001044</color>
+    <color name="i_am_color_1045">#00001045</color>
+    <color name="i_am_color_1046">#00001046</color>
+    <color name="i_am_color_1047">#00001047</color>
+    <color name="i_am_color_1048">#00001048</color>
+    <color name="i_am_color_1049">#00001049</color>
+    <color name="i_am_color_104a">#0000104a</color>
+    <color name="i_am_color_104b">#0000104b</color>
+    <color name="i_am_color_104c">#0000104c</color>
+    <color name="i_am_color_104d">#0000104d</color>
+    <color name="i_am_color_104e">#0000104e</color>
+    <color name="i_am_color_104f">#0000104f</color>
+    <color name="i_am_color_1050">#00001050</color>
+    <color name="i_am_color_1051">#00001051</color>
+    <color name="i_am_color_1052">#00001052</color>
+    <color name="i_am_color_1053">#00001053</color>
+    <color name="i_am_color_1054">#00001054</color>
+    <color name="i_am_color_1055">#00001055</color>
+    <color name="i_am_color_1056">#00001056</color>
+    <color name="i_am_color_1057">#00001057</color>
+    <color name="i_am_color_1058">#00001058</color>
+    <color name="i_am_color_1059">#00001059</color>
+    <color name="i_am_color_105a">#0000105a</color>
+    <color name="i_am_color_105b">#0000105b</color>
+    <color name="i_am_color_105c">#0000105c</color>
+    <color name="i_am_color_105d">#0000105d</color>
+    <color name="i_am_color_105e">#0000105e</color>
+    <color name="i_am_color_105f">#0000105f</color>
+    <color name="i_am_color_1060">#00001060</color>
+    <color name="i_am_color_1061">#00001061</color>
+    <color name="i_am_color_1062">#00001062</color>
+    <color name="i_am_color_1063">#00001063</color>
+    <color name="i_am_color_1064">#00001064</color>
+    <color name="i_am_color_1065">#00001065</color>
+    <color name="i_am_color_1066">#00001066</color>
+    <color name="i_am_color_1067">#00001067</color>
+    <color name="i_am_color_1068">#00001068</color>
+    <color name="i_am_color_1069">#00001069</color>
+    <color name="i_am_color_106a">#0000106a</color>
+    <color name="i_am_color_106b">#0000106b</color>
+    <color name="i_am_color_106c">#0000106c</color>
+    <color name="i_am_color_106d">#0000106d</color>
+    <color name="i_am_color_106e">#0000106e</color>
+    <color name="i_am_color_106f">#0000106f</color>
+    <color name="i_am_color_1070">#00001070</color>
+    <color name="i_am_color_1071">#00001071</color>
+    <color name="i_am_color_1072">#00001072</color>
+    <color name="i_am_color_1073">#00001073</color>
+    <color name="i_am_color_1074">#00001074</color>
+    <color name="i_am_color_1075">#00001075</color>
+    <color name="i_am_color_1076">#00001076</color>
+    <color name="i_am_color_1077">#00001077</color>
+    <color name="i_am_color_1078">#00001078</color>
+    <color name="i_am_color_1079">#00001079</color>
+    <color name="i_am_color_107a">#0000107a</color>
+    <color name="i_am_color_107b">#0000107b</color>
+    <color name="i_am_color_107c">#0000107c</color>
+    <color name="i_am_color_107d">#0000107d</color>
+    <color name="i_am_color_107e">#0000107e</color>
+    <color name="i_am_color_107f">#0000107f</color>
+    <color name="i_am_color_1080">#00001080</color>
+    <color name="i_am_color_1081">#00001081</color>
+    <color name="i_am_color_1082">#00001082</color>
+    <color name="i_am_color_1083">#00001083</color>
+    <color name="i_am_color_1084">#00001084</color>
+    <color name="i_am_color_1085">#00001085</color>
+    <color name="i_am_color_1086">#00001086</color>
+    <color name="i_am_color_1087">#00001087</color>
+    <color name="i_am_color_1088">#00001088</color>
+    <color name="i_am_color_1089">#00001089</color>
+    <color name="i_am_color_108a">#0000108a</color>
+    <color name="i_am_color_108b">#0000108b</color>
+    <color name="i_am_color_108c">#0000108c</color>
+    <color name="i_am_color_108d">#0000108d</color>
+    <color name="i_am_color_108e">#0000108e</color>
+    <color name="i_am_color_108f">#0000108f</color>
+    <color name="i_am_color_1090">#00001090</color>
+    <color name="i_am_color_1091">#00001091</color>
+    <color name="i_am_color_1092">#00001092</color>
+    <color name="i_am_color_1093">#00001093</color>
+    <color name="i_am_color_1094">#00001094</color>
+    <color name="i_am_color_1095">#00001095</color>
+    <color name="i_am_color_1096">#00001096</color>
+    <color name="i_am_color_1097">#00001097</color>
+    <color name="i_am_color_1098">#00001098</color>
+    <color name="i_am_color_1099">#00001099</color>
+    <color name="i_am_color_109a">#0000109a</color>
+    <color name="i_am_color_109b">#0000109b</color>
+    <color name="i_am_color_109c">#0000109c</color>
+    <color name="i_am_color_109d">#0000109d</color>
+    <color name="i_am_color_109e">#0000109e</color>
+    <color name="i_am_color_109f">#0000109f</color>
+    <color name="i_am_color_10a0">#000010a0</color>
+    <color name="i_am_color_10a1">#000010a1</color>
+    <color name="i_am_color_10a2">#000010a2</color>
+    <color name="i_am_color_10a3">#000010a3</color>
+    <color name="i_am_color_10a4">#000010a4</color>
+    <color name="i_am_color_10a5">#000010a5</color>
+    <color name="i_am_color_10a6">#000010a6</color>
+    <color name="i_am_color_10a7">#000010a7</color>
+    <color name="i_am_color_10a8">#000010a8</color>
+    <color name="i_am_color_10a9">#000010a9</color>
+    <color name="i_am_color_10aa">#000010aa</color>
+    <color name="i_am_color_10ab">#000010ab</color>
+    <color name="i_am_color_10ac">#000010ac</color>
+    <color name="i_am_color_10ad">#000010ad</color>
+    <color name="i_am_color_10ae">#000010ae</color>
+    <color name="i_am_color_10af">#000010af</color>
+    <color name="i_am_color_10b0">#000010b0</color>
+    <color name="i_am_color_10b1">#000010b1</color>
+    <color name="i_am_color_10b2">#000010b2</color>
+    <color name="i_am_color_10b3">#000010b3</color>
+    <color name="i_am_color_10b4">#000010b4</color>
+    <color name="i_am_color_10b5">#000010b5</color>
+    <color name="i_am_color_10b6">#000010b6</color>
+    <color name="i_am_color_10b7">#000010b7</color>
+    <color name="i_am_color_10b8">#000010b8</color>
+    <color name="i_am_color_10b9">#000010b9</color>
+    <color name="i_am_color_10ba">#000010ba</color>
+    <color name="i_am_color_10bb">#000010bb</color>
+    <color name="i_am_color_10bc">#000010bc</color>
+    <color name="i_am_color_10bd">#000010bd</color>
+    <color name="i_am_color_10be">#000010be</color>
+    <color name="i_am_color_10bf">#000010bf</color>
+    <color name="i_am_color_10c0">#000010c0</color>
+    <color name="i_am_color_10c1">#000010c1</color>
+    <color name="i_am_color_10c2">#000010c2</color>
+    <color name="i_am_color_10c3">#000010c3</color>
+    <color name="i_am_color_10c4">#000010c4</color>
+    <color name="i_am_color_10c5">#000010c5</color>
+    <color name="i_am_color_10c6">#000010c6</color>
+    <color name="i_am_color_10c7">#000010c7</color>
+    <color name="i_am_color_10c8">#000010c8</color>
+    <color name="i_am_color_10c9">#000010c9</color>
+    <color name="i_am_color_10ca">#000010ca</color>
+    <color name="i_am_color_10cb">#000010cb</color>
+    <color name="i_am_color_10cc">#000010cc</color>
+    <color name="i_am_color_10cd">#000010cd</color>
+    <color name="i_am_color_10ce">#000010ce</color>
+    <color name="i_am_color_10cf">#000010cf</color>
+    <color name="i_am_color_10d0">#000010d0</color>
+    <color name="i_am_color_10d1">#000010d1</color>
+    <color name="i_am_color_10d2">#000010d2</color>
+    <color name="i_am_color_10d3">#000010d3</color>
+    <color name="i_am_color_10d4">#000010d4</color>
+    <color name="i_am_color_10d5">#000010d5</color>
+    <color name="i_am_color_10d6">#000010d6</color>
+    <color name="i_am_color_10d7">#000010d7</color>
+    <color name="i_am_color_10d8">#000010d8</color>
+    <color name="i_am_color_10d9">#000010d9</color>
+    <color name="i_am_color_10da">#000010da</color>
+    <color name="i_am_color_10db">#000010db</color>
+    <color name="i_am_color_10dc">#000010dc</color>
+    <color name="i_am_color_10dd">#000010dd</color>
+    <color name="i_am_color_10de">#000010de</color>
+    <color name="i_am_color_10df">#000010df</color>
+    <color name="i_am_color_10e0">#000010e0</color>
+    <color name="i_am_color_10e1">#000010e1</color>
+    <color name="i_am_color_10e2">#000010e2</color>
+    <color name="i_am_color_10e3">#000010e3</color>
+    <color name="i_am_color_10e4">#000010e4</color>
+    <color name="i_am_color_10e5">#000010e5</color>
+    <color name="i_am_color_10e6">#000010e6</color>
+    <color name="i_am_color_10e7">#000010e7</color>
+    <color name="i_am_color_10e8">#000010e8</color>
+    <color name="i_am_color_10e9">#000010e9</color>
+    <color name="i_am_color_10ea">#000010ea</color>
+    <color name="i_am_color_10eb">#000010eb</color>
+    <color name="i_am_color_10ec">#000010ec</color>
+    <color name="i_am_color_10ed">#000010ed</color>
+    <color name="i_am_color_10ee">#000010ee</color>
+    <color name="i_am_color_10ef">#000010ef</color>
+    <color name="i_am_color_10f0">#000010f0</color>
+    <color name="i_am_color_10f1">#000010f1</color>
+    <color name="i_am_color_10f2">#000010f2</color>
+    <color name="i_am_color_10f3">#000010f3</color>
+    <color name="i_am_color_10f4">#000010f4</color>
+    <color name="i_am_color_10f5">#000010f5</color>
+    <color name="i_am_color_10f6">#000010f6</color>
+    <color name="i_am_color_10f7">#000010f7</color>
+    <color name="i_am_color_10f8">#000010f8</color>
+    <color name="i_am_color_10f9">#000010f9</color>
+    <color name="i_am_color_10fa">#000010fa</color>
+    <color name="i_am_color_10fb">#000010fb</color>
+    <color name="i_am_color_10fc">#000010fc</color>
+    <color name="i_am_color_10fd">#000010fd</color>
+    <color name="i_am_color_10fe">#000010fe</color>
+    <color name="i_am_color_10ff">#000010ff</color>
+    <color name="i_am_color_1100">#00001100</color>
+    <color name="i_am_color_1101">#00001101</color>
+    <color name="i_am_color_1102">#00001102</color>
+    <color name="i_am_color_1103">#00001103</color>
+    <color name="i_am_color_1104">#00001104</color>
+    <color name="i_am_color_1105">#00001105</color>
+    <color name="i_am_color_1106">#00001106</color>
+    <color name="i_am_color_1107">#00001107</color>
+    <color name="i_am_color_1108">#00001108</color>
+    <color name="i_am_color_1109">#00001109</color>
+    <color name="i_am_color_110a">#0000110a</color>
+    <color name="i_am_color_110b">#0000110b</color>
+    <color name="i_am_color_110c">#0000110c</color>
+    <color name="i_am_color_110d">#0000110d</color>
+    <color name="i_am_color_110e">#0000110e</color>
+    <color name="i_am_color_110f">#0000110f</color>
+    <color name="i_am_color_1110">#00001110</color>
+    <color name="i_am_color_1111">#00001111</color>
+    <color name="i_am_color_1112">#00001112</color>
+    <color name="i_am_color_1113">#00001113</color>
+    <color name="i_am_color_1114">#00001114</color>
+    <color name="i_am_color_1115">#00001115</color>
+    <color name="i_am_color_1116">#00001116</color>
+    <color name="i_am_color_1117">#00001117</color>
+    <color name="i_am_color_1118">#00001118</color>
+    <color name="i_am_color_1119">#00001119</color>
+    <color name="i_am_color_111a">#0000111a</color>
+    <color name="i_am_color_111b">#0000111b</color>
+    <color name="i_am_color_111c">#0000111c</color>
+    <color name="i_am_color_111d">#0000111d</color>
+    <color name="i_am_color_111e">#0000111e</color>
+    <color name="i_am_color_111f">#0000111f</color>
+    <color name="i_am_color_1120">#00001120</color>
+    <color name="i_am_color_1121">#00001121</color>
+    <color name="i_am_color_1122">#00001122</color>
+    <color name="i_am_color_1123">#00001123</color>
+    <color name="i_am_color_1124">#00001124</color>
+    <color name="i_am_color_1125">#00001125</color>
+    <color name="i_am_color_1126">#00001126</color>
+    <color name="i_am_color_1127">#00001127</color>
+    <color name="i_am_color_1128">#00001128</color>
+    <color name="i_am_color_1129">#00001129</color>
+    <color name="i_am_color_112a">#0000112a</color>
+    <color name="i_am_color_112b">#0000112b</color>
+    <color name="i_am_color_112c">#0000112c</color>
+    <color name="i_am_color_112d">#0000112d</color>
+    <color name="i_am_color_112e">#0000112e</color>
+    <color name="i_am_color_112f">#0000112f</color>
+    <color name="i_am_color_1130">#00001130</color>
+    <color name="i_am_color_1131">#00001131</color>
+    <color name="i_am_color_1132">#00001132</color>
+    <color name="i_am_color_1133">#00001133</color>
+    <color name="i_am_color_1134">#00001134</color>
+    <color name="i_am_color_1135">#00001135</color>
+    <color name="i_am_color_1136">#00001136</color>
+    <color name="i_am_color_1137">#00001137</color>
+    <color name="i_am_color_1138">#00001138</color>
+    <color name="i_am_color_1139">#00001139</color>
+    <color name="i_am_color_113a">#0000113a</color>
+    <color name="i_am_color_113b">#0000113b</color>
+    <color name="i_am_color_113c">#0000113c</color>
+    <color name="i_am_color_113d">#0000113d</color>
+    <color name="i_am_color_113e">#0000113e</color>
+    <color name="i_am_color_113f">#0000113f</color>
+    <color name="i_am_color_1140">#00001140</color>
+    <color name="i_am_color_1141">#00001141</color>
+    <color name="i_am_color_1142">#00001142</color>
+    <color name="i_am_color_1143">#00001143</color>
+    <color name="i_am_color_1144">#00001144</color>
+    <color name="i_am_color_1145">#00001145</color>
+    <color name="i_am_color_1146">#00001146</color>
+    <color name="i_am_color_1147">#00001147</color>
+    <color name="i_am_color_1148">#00001148</color>
+    <color name="i_am_color_1149">#00001149</color>
+    <color name="i_am_color_114a">#0000114a</color>
+    <color name="i_am_color_114b">#0000114b</color>
+    <color name="i_am_color_114c">#0000114c</color>
+    <color name="i_am_color_114d">#0000114d</color>
+    <color name="i_am_color_114e">#0000114e</color>
+    <color name="i_am_color_114f">#0000114f</color>
+    <color name="i_am_color_1150">#00001150</color>
+    <color name="i_am_color_1151">#00001151</color>
+    <color name="i_am_color_1152">#00001152</color>
+    <color name="i_am_color_1153">#00001153</color>
+    <color name="i_am_color_1154">#00001154</color>
+    <color name="i_am_color_1155">#00001155</color>
+    <color name="i_am_color_1156">#00001156</color>
+    <color name="i_am_color_1157">#00001157</color>
+    <color name="i_am_color_1158">#00001158</color>
+    <color name="i_am_color_1159">#00001159</color>
+    <color name="i_am_color_115a">#0000115a</color>
+    <color name="i_am_color_115b">#0000115b</color>
+    <color name="i_am_color_115c">#0000115c</color>
+    <color name="i_am_color_115d">#0000115d</color>
+    <color name="i_am_color_115e">#0000115e</color>
+    <color name="i_am_color_115f">#0000115f</color>
+    <color name="i_am_color_1160">#00001160</color>
+    <color name="i_am_color_1161">#00001161</color>
+    <color name="i_am_color_1162">#00001162</color>
+    <color name="i_am_color_1163">#00001163</color>
+    <color name="i_am_color_1164">#00001164</color>
+    <color name="i_am_color_1165">#00001165</color>
+    <color name="i_am_color_1166">#00001166</color>
+    <color name="i_am_color_1167">#00001167</color>
+    <color name="i_am_color_1168">#00001168</color>
+    <color name="i_am_color_1169">#00001169</color>
+    <color name="i_am_color_116a">#0000116a</color>
+    <color name="i_am_color_116b">#0000116b</color>
+    <color name="i_am_color_116c">#0000116c</color>
+    <color name="i_am_color_116d">#0000116d</color>
+    <color name="i_am_color_116e">#0000116e</color>
+    <color name="i_am_color_116f">#0000116f</color>
+    <color name="i_am_color_1170">#00001170</color>
+    <color name="i_am_color_1171">#00001171</color>
+    <color name="i_am_color_1172">#00001172</color>
+    <color name="i_am_color_1173">#00001173</color>
+    <color name="i_am_color_1174">#00001174</color>
+    <color name="i_am_color_1175">#00001175</color>
+    <color name="i_am_color_1176">#00001176</color>
+    <color name="i_am_color_1177">#00001177</color>
+    <color name="i_am_color_1178">#00001178</color>
+    <color name="i_am_color_1179">#00001179</color>
+    <color name="i_am_color_117a">#0000117a</color>
+    <color name="i_am_color_117b">#0000117b</color>
+    <color name="i_am_color_117c">#0000117c</color>
+    <color name="i_am_color_117d">#0000117d</color>
+    <color name="i_am_color_117e">#0000117e</color>
+    <color name="i_am_color_117f">#0000117f</color>
+    <color name="i_am_color_1180">#00001180</color>
+    <color name="i_am_color_1181">#00001181</color>
+    <color name="i_am_color_1182">#00001182</color>
+    <color name="i_am_color_1183">#00001183</color>
+    <color name="i_am_color_1184">#00001184</color>
+    <color name="i_am_color_1185">#00001185</color>
+    <color name="i_am_color_1186">#00001186</color>
+    <color name="i_am_color_1187">#00001187</color>
+    <color name="i_am_color_1188">#00001188</color>
+    <color name="i_am_color_1189">#00001189</color>
+    <color name="i_am_color_118a">#0000118a</color>
+    <color name="i_am_color_118b">#0000118b</color>
+    <color name="i_am_color_118c">#0000118c</color>
+    <color name="i_am_color_118d">#0000118d</color>
+    <color name="i_am_color_118e">#0000118e</color>
+    <color name="i_am_color_118f">#0000118f</color>
+    <color name="i_am_color_1190">#00001190</color>
+    <color name="i_am_color_1191">#00001191</color>
+    <color name="i_am_color_1192">#00001192</color>
+    <color name="i_am_color_1193">#00001193</color>
+    <color name="i_am_color_1194">#00001194</color>
+    <color name="i_am_color_1195">#00001195</color>
+    <color name="i_am_color_1196">#00001196</color>
+    <color name="i_am_color_1197">#00001197</color>
+    <color name="i_am_color_1198">#00001198</color>
+    <color name="i_am_color_1199">#00001199</color>
+    <color name="i_am_color_119a">#0000119a</color>
+    <color name="i_am_color_119b">#0000119b</color>
+    <color name="i_am_color_119c">#0000119c</color>
+    <color name="i_am_color_119d">#0000119d</color>
+    <color name="i_am_color_119e">#0000119e</color>
+    <color name="i_am_color_119f">#0000119f</color>
+    <color name="i_am_color_11a0">#000011a0</color>
+    <color name="i_am_color_11a1">#000011a1</color>
+    <color name="i_am_color_11a2">#000011a2</color>
+    <color name="i_am_color_11a3">#000011a3</color>
+    <color name="i_am_color_11a4">#000011a4</color>
+    <color name="i_am_color_11a5">#000011a5</color>
+    <color name="i_am_color_11a6">#000011a6</color>
+    <color name="i_am_color_11a7">#000011a7</color>
+    <color name="i_am_color_11a8">#000011a8</color>
+    <color name="i_am_color_11a9">#000011a9</color>
+    <color name="i_am_color_11aa">#000011aa</color>
+    <color name="i_am_color_11ab">#000011ab</color>
+    <color name="i_am_color_11ac">#000011ac</color>
+    <color name="i_am_color_11ad">#000011ad</color>
+    <color name="i_am_color_11ae">#000011ae</color>
+    <color name="i_am_color_11af">#000011af</color>
+    <color name="i_am_color_11b0">#000011b0</color>
+    <color name="i_am_color_11b1">#000011b1</color>
+    <color name="i_am_color_11b2">#000011b2</color>
+    <color name="i_am_color_11b3">#000011b3</color>
+    <color name="i_am_color_11b4">#000011b4</color>
+    <color name="i_am_color_11b5">#000011b5</color>
+    <color name="i_am_color_11b6">#000011b6</color>
+    <color name="i_am_color_11b7">#000011b7</color>
+    <color name="i_am_color_11b8">#000011b8</color>
+    <color name="i_am_color_11b9">#000011b9</color>
+    <color name="i_am_color_11ba">#000011ba</color>
+    <color name="i_am_color_11bb">#000011bb</color>
+    <color name="i_am_color_11bc">#000011bc</color>
+    <color name="i_am_color_11bd">#000011bd</color>
+    <color name="i_am_color_11be">#000011be</color>
+    <color name="i_am_color_11bf">#000011bf</color>
+    <color name="i_am_color_11c0">#000011c0</color>
+    <color name="i_am_color_11c1">#000011c1</color>
+    <color name="i_am_color_11c2">#000011c2</color>
+    <color name="i_am_color_11c3">#000011c3</color>
+    <color name="i_am_color_11c4">#000011c4</color>
+    <color name="i_am_color_11c5">#000011c5</color>
+    <color name="i_am_color_11c6">#000011c6</color>
+    <color name="i_am_color_11c7">#000011c7</color>
+    <color name="i_am_color_11c8">#000011c8</color>
+    <color name="i_am_color_11c9">#000011c9</color>
+    <color name="i_am_color_11ca">#000011ca</color>
+    <color name="i_am_color_11cb">#000011cb</color>
+    <color name="i_am_color_11cc">#000011cc</color>
+    <color name="i_am_color_11cd">#000011cd</color>
+    <color name="i_am_color_11ce">#000011ce</color>
+    <color name="i_am_color_11cf">#000011cf</color>
+    <color name="i_am_color_11d0">#000011d0</color>
+    <color name="i_am_color_11d1">#000011d1</color>
+    <color name="i_am_color_11d2">#000011d2</color>
+    <color name="i_am_color_11d3">#000011d3</color>
+    <color name="i_am_color_11d4">#000011d4</color>
+    <color name="i_am_color_11d5">#000011d5</color>
+    <color name="i_am_color_11d6">#000011d6</color>
+    <color name="i_am_color_11d7">#000011d7</color>
+    <color name="i_am_color_11d8">#000011d8</color>
+    <color name="i_am_color_11d9">#000011d9</color>
+    <color name="i_am_color_11da">#000011da</color>
+    <color name="i_am_color_11db">#000011db</color>
+    <color name="i_am_color_11dc">#000011dc</color>
+    <color name="i_am_color_11dd">#000011dd</color>
+    <color name="i_am_color_11de">#000011de</color>
+    <color name="i_am_color_11df">#000011df</color>
+    <color name="i_am_color_11e0">#000011e0</color>
+    <color name="i_am_color_11e1">#000011e1</color>
+    <color name="i_am_color_11e2">#000011e2</color>
+    <color name="i_am_color_11e3">#000011e3</color>
+    <color name="i_am_color_11e4">#000011e4</color>
+    <color name="i_am_color_11e5">#000011e5</color>
+    <color name="i_am_color_11e6">#000011e6</color>
+    <color name="i_am_color_11e7">#000011e7</color>
+    <color name="i_am_color_11e8">#000011e8</color>
+    <color name="i_am_color_11e9">#000011e9</color>
+    <color name="i_am_color_11ea">#000011ea</color>
+    <color name="i_am_color_11eb">#000011eb</color>
+    <color name="i_am_color_11ec">#000011ec</color>
+    <color name="i_am_color_11ed">#000011ed</color>
+    <color name="i_am_color_11ee">#000011ee</color>
+    <color name="i_am_color_11ef">#000011ef</color>
+    <color name="i_am_color_11f0">#000011f0</color>
+    <color name="i_am_color_11f1">#000011f1</color>
+    <color name="i_am_color_11f2">#000011f2</color>
+    <color name="i_am_color_11f3">#000011f3</color>
+    <color name="i_am_color_11f4">#000011f4</color>
+    <color name="i_am_color_11f5">#000011f5</color>
+    <color name="i_am_color_11f6">#000011f6</color>
+    <color name="i_am_color_11f7">#000011f7</color>
+    <color name="i_am_color_11f8">#000011f8</color>
+    <color name="i_am_color_11f9">#000011f9</color>
+    <color name="i_am_color_11fa">#000011fa</color>
+    <color name="i_am_color_11fb">#000011fb</color>
+    <color name="i_am_color_11fc">#000011fc</color>
+    <color name="i_am_color_11fd">#000011fd</color>
+    <color name="i_am_color_11fe">#000011fe</color>
+    <color name="i_am_color_11ff">#000011ff</color>
+    <color name="i_am_color_1200">#00001200</color>
+    <color name="i_am_color_1201">#00001201</color>
+    <color name="i_am_color_1202">#00001202</color>
+    <color name="i_am_color_1203">#00001203</color>
+    <color name="i_am_color_1204">#00001204</color>
+    <color name="i_am_color_1205">#00001205</color>
+    <color name="i_am_color_1206">#00001206</color>
+    <color name="i_am_color_1207">#00001207</color>
+    <color name="i_am_color_1208">#00001208</color>
+    <color name="i_am_color_1209">#00001209</color>
+    <color name="i_am_color_120a">#0000120a</color>
+    <color name="i_am_color_120b">#0000120b</color>
+    <color name="i_am_color_120c">#0000120c</color>
+    <color name="i_am_color_120d">#0000120d</color>
+    <color name="i_am_color_120e">#0000120e</color>
+    <color name="i_am_color_120f">#0000120f</color>
+    <color name="i_am_color_1210">#00001210</color>
+    <color name="i_am_color_1211">#00001211</color>
+    <color name="i_am_color_1212">#00001212</color>
+    <color name="i_am_color_1213">#00001213</color>
+    <color name="i_am_color_1214">#00001214</color>
+    <color name="i_am_color_1215">#00001215</color>
+    <color name="i_am_color_1216">#00001216</color>
+    <color name="i_am_color_1217">#00001217</color>
+    <color name="i_am_color_1218">#00001218</color>
+    <color name="i_am_color_1219">#00001219</color>
+    <color name="i_am_color_121a">#0000121a</color>
+    <color name="i_am_color_121b">#0000121b</color>
+    <color name="i_am_color_121c">#0000121c</color>
+    <color name="i_am_color_121d">#0000121d</color>
+    <color name="i_am_color_121e">#0000121e</color>
+    <color name="i_am_color_121f">#0000121f</color>
+    <color name="i_am_color_1220">#00001220</color>
+    <color name="i_am_color_1221">#00001221</color>
+    <color name="i_am_color_1222">#00001222</color>
+    <color name="i_am_color_1223">#00001223</color>
+    <color name="i_am_color_1224">#00001224</color>
+    <color name="i_am_color_1225">#00001225</color>
+    <color name="i_am_color_1226">#00001226</color>
+    <color name="i_am_color_1227">#00001227</color>
+    <color name="i_am_color_1228">#00001228</color>
+    <color name="i_am_color_1229">#00001229</color>
+    <color name="i_am_color_122a">#0000122a</color>
+    <color name="i_am_color_122b">#0000122b</color>
+    <color name="i_am_color_122c">#0000122c</color>
+    <color name="i_am_color_122d">#0000122d</color>
+    <color name="i_am_color_122e">#0000122e</color>
+    <color name="i_am_color_122f">#0000122f</color>
+    <color name="i_am_color_1230">#00001230</color>
+    <color name="i_am_color_1231">#00001231</color>
+    <color name="i_am_color_1232">#00001232</color>
+    <color name="i_am_color_1233">#00001233</color>
+    <color name="i_am_color_1234">#00001234</color>
+    <color name="i_am_color_1235">#00001235</color>
+    <color name="i_am_color_1236">#00001236</color>
+    <color name="i_am_color_1237">#00001237</color>
+    <color name="i_am_color_1238">#00001238</color>
+    <color name="i_am_color_1239">#00001239</color>
+    <color name="i_am_color_123a">#0000123a</color>
+    <color name="i_am_color_123b">#0000123b</color>
+    <color name="i_am_color_123c">#0000123c</color>
+    <color name="i_am_color_123d">#0000123d</color>
+    <color name="i_am_color_123e">#0000123e</color>
+    <color name="i_am_color_123f">#0000123f</color>
+    <color name="i_am_color_1240">#00001240</color>
+    <color name="i_am_color_1241">#00001241</color>
+    <color name="i_am_color_1242">#00001242</color>
+    <color name="i_am_color_1243">#00001243</color>
+    <color name="i_am_color_1244">#00001244</color>
+    <color name="i_am_color_1245">#00001245</color>
+    <color name="i_am_color_1246">#00001246</color>
+    <color name="i_am_color_1247">#00001247</color>
+    <color name="i_am_color_1248">#00001248</color>
+    <color name="i_am_color_1249">#00001249</color>
+    <color name="i_am_color_124a">#0000124a</color>
+    <color name="i_am_color_124b">#0000124b</color>
+    <color name="i_am_color_124c">#0000124c</color>
+    <color name="i_am_color_124d">#0000124d</color>
+    <color name="i_am_color_124e">#0000124e</color>
+    <color name="i_am_color_124f">#0000124f</color>
+    <color name="i_am_color_1250">#00001250</color>
+    <color name="i_am_color_1251">#00001251</color>
+    <color name="i_am_color_1252">#00001252</color>
+    <color name="i_am_color_1253">#00001253</color>
+    <color name="i_am_color_1254">#00001254</color>
+    <color name="i_am_color_1255">#00001255</color>
+    <color name="i_am_color_1256">#00001256</color>
+    <color name="i_am_color_1257">#00001257</color>
+    <color name="i_am_color_1258">#00001258</color>
+    <color name="i_am_color_1259">#00001259</color>
+    <color name="i_am_color_125a">#0000125a</color>
+    <color name="i_am_color_125b">#0000125b</color>
+    <color name="i_am_color_125c">#0000125c</color>
+    <color name="i_am_color_125d">#0000125d</color>
+    <color name="i_am_color_125e">#0000125e</color>
+    <color name="i_am_color_125f">#0000125f</color>
+    <color name="i_am_color_1260">#00001260</color>
+    <color name="i_am_color_1261">#00001261</color>
+    <color name="i_am_color_1262">#00001262</color>
+    <color name="i_am_color_1263">#00001263</color>
+    <color name="i_am_color_1264">#00001264</color>
+    <color name="i_am_color_1265">#00001265</color>
+    <color name="i_am_color_1266">#00001266</color>
+    <color name="i_am_color_1267">#00001267</color>
+    <color name="i_am_color_1268">#00001268</color>
+    <color name="i_am_color_1269">#00001269</color>
+    <color name="i_am_color_126a">#0000126a</color>
+    <color name="i_am_color_126b">#0000126b</color>
+    <color name="i_am_color_126c">#0000126c</color>
+    <color name="i_am_color_126d">#0000126d</color>
+    <color name="i_am_color_126e">#0000126e</color>
+    <color name="i_am_color_126f">#0000126f</color>
+    <color name="i_am_color_1270">#00001270</color>
+    <color name="i_am_color_1271">#00001271</color>
+    <color name="i_am_color_1272">#00001272</color>
+    <color name="i_am_color_1273">#00001273</color>
+    <color name="i_am_color_1274">#00001274</color>
+    <color name="i_am_color_1275">#00001275</color>
+    <color name="i_am_color_1276">#00001276</color>
+    <color name="i_am_color_1277">#00001277</color>
+    <color name="i_am_color_1278">#00001278</color>
+    <color name="i_am_color_1279">#00001279</color>
+    <color name="i_am_color_127a">#0000127a</color>
+    <color name="i_am_color_127b">#0000127b</color>
+    <color name="i_am_color_127c">#0000127c</color>
+    <color name="i_am_color_127d">#0000127d</color>
+    <color name="i_am_color_127e">#0000127e</color>
+    <color name="i_am_color_127f">#0000127f</color>
+    <color name="i_am_color_1280">#00001280</color>
+    <color name="i_am_color_1281">#00001281</color>
+    <color name="i_am_color_1282">#00001282</color>
+    <color name="i_am_color_1283">#00001283</color>
+    <color name="i_am_color_1284">#00001284</color>
+    <color name="i_am_color_1285">#00001285</color>
+    <color name="i_am_color_1286">#00001286</color>
+    <color name="i_am_color_1287">#00001287</color>
+    <color name="i_am_color_1288">#00001288</color>
+    <color name="i_am_color_1289">#00001289</color>
+    <color name="i_am_color_128a">#0000128a</color>
+    <color name="i_am_color_128b">#0000128b</color>
+    <color name="i_am_color_128c">#0000128c</color>
+    <color name="i_am_color_128d">#0000128d</color>
+    <color name="i_am_color_128e">#0000128e</color>
+    <color name="i_am_color_128f">#0000128f</color>
+    <color name="i_am_color_1290">#00001290</color>
+    <color name="i_am_color_1291">#00001291</color>
+    <color name="i_am_color_1292">#00001292</color>
+    <color name="i_am_color_1293">#00001293</color>
+    <color name="i_am_color_1294">#00001294</color>
+    <color name="i_am_color_1295">#00001295</color>
+    <color name="i_am_color_1296">#00001296</color>
+    <color name="i_am_color_1297">#00001297</color>
+    <color name="i_am_color_1298">#00001298</color>
+    <color name="i_am_color_1299">#00001299</color>
+    <color name="i_am_color_129a">#0000129a</color>
+    <color name="i_am_color_129b">#0000129b</color>
+    <color name="i_am_color_129c">#0000129c</color>
+    <color name="i_am_color_129d">#0000129d</color>
+    <color name="i_am_color_129e">#0000129e</color>
+    <color name="i_am_color_129f">#0000129f</color>
+    <color name="i_am_color_12a0">#000012a0</color>
+    <color name="i_am_color_12a1">#000012a1</color>
+    <color name="i_am_color_12a2">#000012a2</color>
+    <color name="i_am_color_12a3">#000012a3</color>
+    <color name="i_am_color_12a4">#000012a4</color>
+    <color name="i_am_color_12a5">#000012a5</color>
+    <color name="i_am_color_12a6">#000012a6</color>
+    <color name="i_am_color_12a7">#000012a7</color>
+    <color name="i_am_color_12a8">#000012a8</color>
+    <color name="i_am_color_12a9">#000012a9</color>
+    <color name="i_am_color_12aa">#000012aa</color>
+    <color name="i_am_color_12ab">#000012ab</color>
+    <color name="i_am_color_12ac">#000012ac</color>
+    <color name="i_am_color_12ad">#000012ad</color>
+    <color name="i_am_color_12ae">#000012ae</color>
+    <color name="i_am_color_12af">#000012af</color>
+    <color name="i_am_color_12b0">#000012b0</color>
+    <color name="i_am_color_12b1">#000012b1</color>
+    <color name="i_am_color_12b2">#000012b2</color>
+    <color name="i_am_color_12b3">#000012b3</color>
+    <color name="i_am_color_12b4">#000012b4</color>
+    <color name="i_am_color_12b5">#000012b5</color>
+    <color name="i_am_color_12b6">#000012b6</color>
+    <color name="i_am_color_12b7">#000012b7</color>
+    <color name="i_am_color_12b8">#000012b8</color>
+    <color name="i_am_color_12b9">#000012b9</color>
+    <color name="i_am_color_12ba">#000012ba</color>
+    <color name="i_am_color_12bb">#000012bb</color>
+    <color name="i_am_color_12bc">#000012bc</color>
+    <color name="i_am_color_12bd">#000012bd</color>
+    <color name="i_am_color_12be">#000012be</color>
+    <color name="i_am_color_12bf">#000012bf</color>
+    <color name="i_am_color_12c0">#000012c0</color>
+    <color name="i_am_color_12c1">#000012c1</color>
+    <color name="i_am_color_12c2">#000012c2</color>
+    <color name="i_am_color_12c3">#000012c3</color>
+    <color name="i_am_color_12c4">#000012c4</color>
+    <color name="i_am_color_12c5">#000012c5</color>
+    <color name="i_am_color_12c6">#000012c6</color>
+    <color name="i_am_color_12c7">#000012c7</color>
+    <color name="i_am_color_12c8">#000012c8</color>
+    <color name="i_am_color_12c9">#000012c9</color>
+    <color name="i_am_color_12ca">#000012ca</color>
+    <color name="i_am_color_12cb">#000012cb</color>
+    <color name="i_am_color_12cc">#000012cc</color>
+    <color name="i_am_color_12cd">#000012cd</color>
+    <color name="i_am_color_12ce">#000012ce</color>
+    <color name="i_am_color_12cf">#000012cf</color>
+    <color name="i_am_color_12d0">#000012d0</color>
+    <color name="i_am_color_12d1">#000012d1</color>
+    <color name="i_am_color_12d2">#000012d2</color>
+    <color name="i_am_color_12d3">#000012d3</color>
+    <color name="i_am_color_12d4">#000012d4</color>
+    <color name="i_am_color_12d5">#000012d5</color>
+    <color name="i_am_color_12d6">#000012d6</color>
+    <color name="i_am_color_12d7">#000012d7</color>
+    <color name="i_am_color_12d8">#000012d8</color>
+    <color name="i_am_color_12d9">#000012d9</color>
+    <color name="i_am_color_12da">#000012da</color>
+    <color name="i_am_color_12db">#000012db</color>
+    <color name="i_am_color_12dc">#000012dc</color>
+    <color name="i_am_color_12dd">#000012dd</color>
+    <color name="i_am_color_12de">#000012de</color>
+    <color name="i_am_color_12df">#000012df</color>
+    <color name="i_am_color_12e0">#000012e0</color>
+    <color name="i_am_color_12e1">#000012e1</color>
+    <color name="i_am_color_12e2">#000012e2</color>
+    <color name="i_am_color_12e3">#000012e3</color>
+    <color name="i_am_color_12e4">#000012e4</color>
+    <color name="i_am_color_12e5">#000012e5</color>
+    <color name="i_am_color_12e6">#000012e6</color>
+    <color name="i_am_color_12e7">#000012e7</color>
+    <color name="i_am_color_12e8">#000012e8</color>
+    <color name="i_am_color_12e9">#000012e9</color>
+    <color name="i_am_color_12ea">#000012ea</color>
+    <color name="i_am_color_12eb">#000012eb</color>
+    <color name="i_am_color_12ec">#000012ec</color>
+    <color name="i_am_color_12ed">#000012ed</color>
+    <color name="i_am_color_12ee">#000012ee</color>
+    <color name="i_am_color_12ef">#000012ef</color>
+    <color name="i_am_color_12f0">#000012f0</color>
+    <color name="i_am_color_12f1">#000012f1</color>
+    <color name="i_am_color_12f2">#000012f2</color>
+    <color name="i_am_color_12f3">#000012f3</color>
+    <color name="i_am_color_12f4">#000012f4</color>
+    <color name="i_am_color_12f5">#000012f5</color>
+    <color name="i_am_color_12f6">#000012f6</color>
+    <color name="i_am_color_12f7">#000012f7</color>
+    <color name="i_am_color_12f8">#000012f8</color>
+    <color name="i_am_color_12f9">#000012f9</color>
+    <color name="i_am_color_12fa">#000012fa</color>
+    <color name="i_am_color_12fb">#000012fb</color>
+    <color name="i_am_color_12fc">#000012fc</color>
+    <color name="i_am_color_12fd">#000012fd</color>
+    <color name="i_am_color_12fe">#000012fe</color>
+    <color name="i_am_color_12ff">#000012ff</color>
+    <color name="i_am_color_1300">#00001300</color>
+    <color name="i_am_color_1301">#00001301</color>
+    <color name="i_am_color_1302">#00001302</color>
+    <color name="i_am_color_1303">#00001303</color>
+    <color name="i_am_color_1304">#00001304</color>
+    <color name="i_am_color_1305">#00001305</color>
+    <color name="i_am_color_1306">#00001306</color>
+    <color name="i_am_color_1307">#00001307</color>
+    <color name="i_am_color_1308">#00001308</color>
+    <color name="i_am_color_1309">#00001309</color>
+    <color name="i_am_color_130a">#0000130a</color>
+    <color name="i_am_color_130b">#0000130b</color>
+    <color name="i_am_color_130c">#0000130c</color>
+    <color name="i_am_color_130d">#0000130d</color>
+    <color name="i_am_color_130e">#0000130e</color>
+    <color name="i_am_color_130f">#0000130f</color>
+    <color name="i_am_color_1310">#00001310</color>
+    <color name="i_am_color_1311">#00001311</color>
+    <color name="i_am_color_1312">#00001312</color>
+    <color name="i_am_color_1313">#00001313</color>
+    <color name="i_am_color_1314">#00001314</color>
+    <color name="i_am_color_1315">#00001315</color>
+    <color name="i_am_color_1316">#00001316</color>
+    <color name="i_am_color_1317">#00001317</color>
+    <color name="i_am_color_1318">#00001318</color>
+    <color name="i_am_color_1319">#00001319</color>
+    <color name="i_am_color_131a">#0000131a</color>
+    <color name="i_am_color_131b">#0000131b</color>
+    <color name="i_am_color_131c">#0000131c</color>
+    <color name="i_am_color_131d">#0000131d</color>
+    <color name="i_am_color_131e">#0000131e</color>
+    <color name="i_am_color_131f">#0000131f</color>
+    <color name="i_am_color_1320">#00001320</color>
+    <color name="i_am_color_1321">#00001321</color>
+    <color name="i_am_color_1322">#00001322</color>
+    <color name="i_am_color_1323">#00001323</color>
+    <color name="i_am_color_1324">#00001324</color>
+    <color name="i_am_color_1325">#00001325</color>
+    <color name="i_am_color_1326">#00001326</color>
+    <color name="i_am_color_1327">#00001327</color>
+    <color name="i_am_color_1328">#00001328</color>
+    <color name="i_am_color_1329">#00001329</color>
+    <color name="i_am_color_132a">#0000132a</color>
+    <color name="i_am_color_132b">#0000132b</color>
+    <color name="i_am_color_132c">#0000132c</color>
+    <color name="i_am_color_132d">#0000132d</color>
+    <color name="i_am_color_132e">#0000132e</color>
+    <color name="i_am_color_132f">#0000132f</color>
+    <color name="i_am_color_1330">#00001330</color>
+    <color name="i_am_color_1331">#00001331</color>
+    <color name="i_am_color_1332">#00001332</color>
+    <color name="i_am_color_1333">#00001333</color>
+    <color name="i_am_color_1334">#00001334</color>
+    <color name="i_am_color_1335">#00001335</color>
+    <color name="i_am_color_1336">#00001336</color>
+    <color name="i_am_color_1337">#00001337</color>
+    <color name="i_am_color_1338">#00001338</color>
+    <color name="i_am_color_1339">#00001339</color>
+    <color name="i_am_color_133a">#0000133a</color>
+    <color name="i_am_color_133b">#0000133b</color>
+    <color name="i_am_color_133c">#0000133c</color>
+    <color name="i_am_color_133d">#0000133d</color>
+    <color name="i_am_color_133e">#0000133e</color>
+    <color name="i_am_color_133f">#0000133f</color>
+    <color name="i_am_color_1340">#00001340</color>
+    <color name="i_am_color_1341">#00001341</color>
+    <color name="i_am_color_1342">#00001342</color>
+    <color name="i_am_color_1343">#00001343</color>
+    <color name="i_am_color_1344">#00001344</color>
+    <color name="i_am_color_1345">#00001345</color>
+    <color name="i_am_color_1346">#00001346</color>
+    <color name="i_am_color_1347">#00001347</color>
+    <color name="i_am_color_1348">#00001348</color>
+    <color name="i_am_color_1349">#00001349</color>
+    <color name="i_am_color_134a">#0000134a</color>
+    <color name="i_am_color_134b">#0000134b</color>
+    <color name="i_am_color_134c">#0000134c</color>
+    <color name="i_am_color_134d">#0000134d</color>
+    <color name="i_am_color_134e">#0000134e</color>
+    <color name="i_am_color_134f">#0000134f</color>
+    <color name="i_am_color_1350">#00001350</color>
+    <color name="i_am_color_1351">#00001351</color>
+    <color name="i_am_color_1352">#00001352</color>
+    <color name="i_am_color_1353">#00001353</color>
+    <color name="i_am_color_1354">#00001354</color>
+    <color name="i_am_color_1355">#00001355</color>
+    <color name="i_am_color_1356">#00001356</color>
+    <color name="i_am_color_1357">#00001357</color>
+    <color name="i_am_color_1358">#00001358</color>
+    <color name="i_am_color_1359">#00001359</color>
+    <color name="i_am_color_135a">#0000135a</color>
+    <color name="i_am_color_135b">#0000135b</color>
+    <color name="i_am_color_135c">#0000135c</color>
+    <color name="i_am_color_135d">#0000135d</color>
+    <color name="i_am_color_135e">#0000135e</color>
+    <color name="i_am_color_135f">#0000135f</color>
+    <color name="i_am_color_1360">#00001360</color>
+    <color name="i_am_color_1361">#00001361</color>
+    <color name="i_am_color_1362">#00001362</color>
+    <color name="i_am_color_1363">#00001363</color>
+    <color name="i_am_color_1364">#00001364</color>
+    <color name="i_am_color_1365">#00001365</color>
+    <color name="i_am_color_1366">#00001366</color>
+    <color name="i_am_color_1367">#00001367</color>
+    <color name="i_am_color_1368">#00001368</color>
+    <color name="i_am_color_1369">#00001369</color>
+    <color name="i_am_color_136a">#0000136a</color>
+    <color name="i_am_color_136b">#0000136b</color>
+    <color name="i_am_color_136c">#0000136c</color>
+    <color name="i_am_color_136d">#0000136d</color>
+    <color name="i_am_color_136e">#0000136e</color>
+    <color name="i_am_color_136f">#0000136f</color>
+    <color name="i_am_color_1370">#00001370</color>
+    <color name="i_am_color_1371">#00001371</color>
+    <color name="i_am_color_1372">#00001372</color>
+    <color name="i_am_color_1373">#00001373</color>
+    <color name="i_am_color_1374">#00001374</color>
+    <color name="i_am_color_1375">#00001375</color>
+    <color name="i_am_color_1376">#00001376</color>
+    <color name="i_am_color_1377">#00001377</color>
+    <color name="i_am_color_1378">#00001378</color>
+    <color name="i_am_color_1379">#00001379</color>
+    <color name="i_am_color_137a">#0000137a</color>
+    <color name="i_am_color_137b">#0000137b</color>
+    <color name="i_am_color_137c">#0000137c</color>
+    <color name="i_am_color_137d">#0000137d</color>
+    <color name="i_am_color_137e">#0000137e</color>
+    <color name="i_am_color_137f">#0000137f</color>
+    <color name="i_am_color_1380">#00001380</color>
+    <color name="i_am_color_1381">#00001381</color>
+    <color name="i_am_color_1382">#00001382</color>
+    <color name="i_am_color_1383">#00001383</color>
+    <color name="i_am_color_1384">#00001384</color>
+    <color name="i_am_color_1385">#00001385</color>
+    <color name="i_am_color_1386">#00001386</color>
+    <color name="i_am_color_1387">#00001387</color>
+    <color name="i_am_color_1388">#00001388</color>
+    <color name="i_am_color_1389">#00001389</color>
+    <color name="i_am_color_138a">#0000138a</color>
+    <color name="i_am_color_138b">#0000138b</color>
+    <color name="i_am_color_138c">#0000138c</color>
+    <color name="i_am_color_138d">#0000138d</color>
+    <color name="i_am_color_138e">#0000138e</color>
+    <color name="i_am_color_138f">#0000138f</color>
+    <color name="i_am_color_1390">#00001390</color>
+    <color name="i_am_color_1391">#00001391</color>
+    <color name="i_am_color_1392">#00001392</color>
+    <color name="i_am_color_1393">#00001393</color>
+    <color name="i_am_color_1394">#00001394</color>
+    <color name="i_am_color_1395">#00001395</color>
+    <color name="i_am_color_1396">#00001396</color>
+    <color name="i_am_color_1397">#00001397</color>
+    <color name="i_am_color_1398">#00001398</color>
+    <color name="i_am_color_1399">#00001399</color>
+    <color name="i_am_color_139a">#0000139a</color>
+    <color name="i_am_color_139b">#0000139b</color>
+    <color name="i_am_color_139c">#0000139c</color>
+    <color name="i_am_color_139d">#0000139d</color>
+    <color name="i_am_color_139e">#0000139e</color>
+    <color name="i_am_color_139f">#0000139f</color>
+    <color name="i_am_color_13a0">#000013a0</color>
+    <color name="i_am_color_13a1">#000013a1</color>
+    <color name="i_am_color_13a2">#000013a2</color>
+    <color name="i_am_color_13a3">#000013a3</color>
+    <color name="i_am_color_13a4">#000013a4</color>
+    <color name="i_am_color_13a5">#000013a5</color>
+    <color name="i_am_color_13a6">#000013a6</color>
+    <color name="i_am_color_13a7">#000013a7</color>
+    <color name="i_am_color_13a8">#000013a8</color>
+    <color name="i_am_color_13a9">#000013a9</color>
+    <color name="i_am_color_13aa">#000013aa</color>
+    <color name="i_am_color_13ab">#000013ab</color>
+    <color name="i_am_color_13ac">#000013ac</color>
+    <color name="i_am_color_13ad">#000013ad</color>
+    <color name="i_am_color_13ae">#000013ae</color>
+    <color name="i_am_color_13af">#000013af</color>
+    <color name="i_am_color_13b0">#000013b0</color>
+    <color name="i_am_color_13b1">#000013b1</color>
+    <color name="i_am_color_13b2">#000013b2</color>
+    <color name="i_am_color_13b3">#000013b3</color>
+    <color name="i_am_color_13b4">#000013b4</color>
+    <color name="i_am_color_13b5">#000013b5</color>
+    <color name="i_am_color_13b6">#000013b6</color>
+    <color name="i_am_color_13b7">#000013b7</color>
+    <color name="i_am_color_13b8">#000013b8</color>
+    <color name="i_am_color_13b9">#000013b9</color>
+    <color name="i_am_color_13ba">#000013ba</color>
+    <color name="i_am_color_13bb">#000013bb</color>
+    <color name="i_am_color_13bc">#000013bc</color>
+    <color name="i_am_color_13bd">#000013bd</color>
+    <color name="i_am_color_13be">#000013be</color>
+    <color name="i_am_color_13bf">#000013bf</color>
+    <color name="i_am_color_13c0">#000013c0</color>
+    <color name="i_am_color_13c1">#000013c1</color>
+    <color name="i_am_color_13c2">#000013c2</color>
+    <color name="i_am_color_13c3">#000013c3</color>
+    <color name="i_am_color_13c4">#000013c4</color>
+    <color name="i_am_color_13c5">#000013c5</color>
+    <color name="i_am_color_13c6">#000013c6</color>
+    <color name="i_am_color_13c7">#000013c7</color>
+    <color name="i_am_color_13c8">#000013c8</color>
+    <color name="i_am_color_13c9">#000013c9</color>
+    <color name="i_am_color_13ca">#000013ca</color>
+    <color name="i_am_color_13cb">#000013cb</color>
+    <color name="i_am_color_13cc">#000013cc</color>
+    <color name="i_am_color_13cd">#000013cd</color>
+    <color name="i_am_color_13ce">#000013ce</color>
+    <color name="i_am_color_13cf">#000013cf</color>
+    <color name="i_am_color_13d0">#000013d0</color>
+    <color name="i_am_color_13d1">#000013d1</color>
+    <color name="i_am_color_13d2">#000013d2</color>
+    <color name="i_am_color_13d3">#000013d3</color>
+    <color name="i_am_color_13d4">#000013d4</color>
+    <color name="i_am_color_13d5">#000013d5</color>
+    <color name="i_am_color_13d6">#000013d6</color>
+    <color name="i_am_color_13d7">#000013d7</color>
+    <color name="i_am_color_13d8">#000013d8</color>
+    <color name="i_am_color_13d9">#000013d9</color>
+    <color name="i_am_color_13da">#000013da</color>
+    <color name="i_am_color_13db">#000013db</color>
+    <color name="i_am_color_13dc">#000013dc</color>
+    <color name="i_am_color_13dd">#000013dd</color>
+    <color name="i_am_color_13de">#000013de</color>
+    <color name="i_am_color_13df">#000013df</color>
+    <color name="i_am_color_13e0">#000013e0</color>
+    <color name="i_am_color_13e1">#000013e1</color>
+    <color name="i_am_color_13e2">#000013e2</color>
+    <color name="i_am_color_13e3">#000013e3</color>
+    <color name="i_am_color_13e4">#000013e4</color>
+    <color name="i_am_color_13e5">#000013e5</color>
+    <color name="i_am_color_13e6">#000013e6</color>
+    <color name="i_am_color_13e7">#000013e7</color>
+    <color name="i_am_color_13e8">#000013e8</color>
+    <color name="i_am_color_13e9">#000013e9</color>
+    <color name="i_am_color_13ea">#000013ea</color>
+    <color name="i_am_color_13eb">#000013eb</color>
+    <color name="i_am_color_13ec">#000013ec</color>
+    <color name="i_am_color_13ed">#000013ed</color>
+    <color name="i_am_color_13ee">#000013ee</color>
+    <color name="i_am_color_13ef">#000013ef</color>
+    <color name="i_am_color_13f0">#000013f0</color>
+    <color name="i_am_color_13f1">#000013f1</color>
+    <color name="i_am_color_13f2">#000013f2</color>
+    <color name="i_am_color_13f3">#000013f3</color>
+    <color name="i_am_color_13f4">#000013f4</color>
+    <color name="i_am_color_13f5">#000013f5</color>
+    <color name="i_am_color_13f6">#000013f6</color>
+    <color name="i_am_color_13f7">#000013f7</color>
+    <color name="i_am_color_13f8">#000013f8</color>
+    <color name="i_am_color_13f9">#000013f9</color>
+    <color name="i_am_color_13fa">#000013fa</color>
+    <color name="i_am_color_13fb">#000013fb</color>
+    <color name="i_am_color_13fc">#000013fc</color>
+    <color name="i_am_color_13fd">#000013fd</color>
+    <color name="i_am_color_13fe">#000013fe</color>
+    <color name="i_am_color_13ff">#000013ff</color>
+    <color name="i_am_color_1400">#00001400</color>
+    <color name="i_am_color_1401">#00001401</color>
+    <color name="i_am_color_1402">#00001402</color>
+    <color name="i_am_color_1403">#00001403</color>
+    <color name="i_am_color_1404">#00001404</color>
+    <color name="i_am_color_1405">#00001405</color>
+    <color name="i_am_color_1406">#00001406</color>
+    <color name="i_am_color_1407">#00001407</color>
+    <color name="i_am_color_1408">#00001408</color>
+    <color name="i_am_color_1409">#00001409</color>
+    <color name="i_am_color_140a">#0000140a</color>
+    <color name="i_am_color_140b">#0000140b</color>
+    <color name="i_am_color_140c">#0000140c</color>
+    <color name="i_am_color_140d">#0000140d</color>
+    <color name="i_am_color_140e">#0000140e</color>
+    <color name="i_am_color_140f">#0000140f</color>
+    <color name="i_am_color_1410">#00001410</color>
+    <color name="i_am_color_1411">#00001411</color>
+    <color name="i_am_color_1412">#00001412</color>
+    <color name="i_am_color_1413">#00001413</color>
+    <color name="i_am_color_1414">#00001414</color>
+    <color name="i_am_color_1415">#00001415</color>
+    <color name="i_am_color_1416">#00001416</color>
+    <color name="i_am_color_1417">#00001417</color>
+    <color name="i_am_color_1418">#00001418</color>
+    <color name="i_am_color_1419">#00001419</color>
+    <color name="i_am_color_141a">#0000141a</color>
+    <color name="i_am_color_141b">#0000141b</color>
+    <color name="i_am_color_141c">#0000141c</color>
+    <color name="i_am_color_141d">#0000141d</color>
+    <color name="i_am_color_141e">#0000141e</color>
+    <color name="i_am_color_141f">#0000141f</color>
+    <color name="i_am_color_1420">#00001420</color>
+    <color name="i_am_color_1421">#00001421</color>
+    <color name="i_am_color_1422">#00001422</color>
+    <color name="i_am_color_1423">#00001423</color>
+    <color name="i_am_color_1424">#00001424</color>
+    <color name="i_am_color_1425">#00001425</color>
+    <color name="i_am_color_1426">#00001426</color>
+    <color name="i_am_color_1427">#00001427</color>
+    <color name="i_am_color_1428">#00001428</color>
+    <color name="i_am_color_1429">#00001429</color>
+    <color name="i_am_color_142a">#0000142a</color>
+    <color name="i_am_color_142b">#0000142b</color>
+    <color name="i_am_color_142c">#0000142c</color>
+    <color name="i_am_color_142d">#0000142d</color>
+    <color name="i_am_color_142e">#0000142e</color>
+    <color name="i_am_color_142f">#0000142f</color>
+    <color name="i_am_color_1430">#00001430</color>
+    <color name="i_am_color_1431">#00001431</color>
+    <color name="i_am_color_1432">#00001432</color>
+    <color name="i_am_color_1433">#00001433</color>
+    <color name="i_am_color_1434">#00001434</color>
+    <color name="i_am_color_1435">#00001435</color>
+    <color name="i_am_color_1436">#00001436</color>
+    <color name="i_am_color_1437">#00001437</color>
+    <color name="i_am_color_1438">#00001438</color>
+    <color name="i_am_color_1439">#00001439</color>
+    <color name="i_am_color_143a">#0000143a</color>
+    <color name="i_am_color_143b">#0000143b</color>
+    <color name="i_am_color_143c">#0000143c</color>
+    <color name="i_am_color_143d">#0000143d</color>
+    <color name="i_am_color_143e">#0000143e</color>
+    <color name="i_am_color_143f">#0000143f</color>
+    <color name="i_am_color_1440">#00001440</color>
+    <color name="i_am_color_1441">#00001441</color>
+    <color name="i_am_color_1442">#00001442</color>
+    <color name="i_am_color_1443">#00001443</color>
+    <color name="i_am_color_1444">#00001444</color>
+    <color name="i_am_color_1445">#00001445</color>
+    <color name="i_am_color_1446">#00001446</color>
+    <color name="i_am_color_1447">#00001447</color>
+    <color name="i_am_color_1448">#00001448</color>
+    <color name="i_am_color_1449">#00001449</color>
+    <color name="i_am_color_144a">#0000144a</color>
+    <color name="i_am_color_144b">#0000144b</color>
+    <color name="i_am_color_144c">#0000144c</color>
+    <color name="i_am_color_144d">#0000144d</color>
+    <color name="i_am_color_144e">#0000144e</color>
+    <color name="i_am_color_144f">#0000144f</color>
+    <color name="i_am_color_1450">#00001450</color>
+    <color name="i_am_color_1451">#00001451</color>
+    <color name="i_am_color_1452">#00001452</color>
+    <color name="i_am_color_1453">#00001453</color>
+    <color name="i_am_color_1454">#00001454</color>
+    <color name="i_am_color_1455">#00001455</color>
+    <color name="i_am_color_1456">#00001456</color>
+    <color name="i_am_color_1457">#00001457</color>
+    <color name="i_am_color_1458">#00001458</color>
+    <color name="i_am_color_1459">#00001459</color>
+    <color name="i_am_color_145a">#0000145a</color>
+    <color name="i_am_color_145b">#0000145b</color>
+    <color name="i_am_color_145c">#0000145c</color>
+    <color name="i_am_color_145d">#0000145d</color>
+    <color name="i_am_color_145e">#0000145e</color>
+    <color name="i_am_color_145f">#0000145f</color>
+    <color name="i_am_color_1460">#00001460</color>
+    <color name="i_am_color_1461">#00001461</color>
+    <color name="i_am_color_1462">#00001462</color>
+    <color name="i_am_color_1463">#00001463</color>
+    <color name="i_am_color_1464">#00001464</color>
+    <color name="i_am_color_1465">#00001465</color>
+    <color name="i_am_color_1466">#00001466</color>
+    <color name="i_am_color_1467">#00001467</color>
+    <color name="i_am_color_1468">#00001468</color>
+    <color name="i_am_color_1469">#00001469</color>
+    <color name="i_am_color_146a">#0000146a</color>
+    <color name="i_am_color_146b">#0000146b</color>
+    <color name="i_am_color_146c">#0000146c</color>
+    <color name="i_am_color_146d">#0000146d</color>
+    <color name="i_am_color_146e">#0000146e</color>
+    <color name="i_am_color_146f">#0000146f</color>
+    <color name="i_am_color_1470">#00001470</color>
+    <color name="i_am_color_1471">#00001471</color>
+    <color name="i_am_color_1472">#00001472</color>
+    <color name="i_am_color_1473">#00001473</color>
+    <color name="i_am_color_1474">#00001474</color>
+    <color name="i_am_color_1475">#00001475</color>
+    <color name="i_am_color_1476">#00001476</color>
+    <color name="i_am_color_1477">#00001477</color>
+    <color name="i_am_color_1478">#00001478</color>
+    <color name="i_am_color_1479">#00001479</color>
+    <color name="i_am_color_147a">#0000147a</color>
+    <color name="i_am_color_147b">#0000147b</color>
+    <color name="i_am_color_147c">#0000147c</color>
+    <color name="i_am_color_147d">#0000147d</color>
+    <color name="i_am_color_147e">#0000147e</color>
+    <color name="i_am_color_147f">#0000147f</color>
+    <color name="i_am_color_1480">#00001480</color>
+    <color name="i_am_color_1481">#00001481</color>
+    <color name="i_am_color_1482">#00001482</color>
+    <color name="i_am_color_1483">#00001483</color>
+    <color name="i_am_color_1484">#00001484</color>
+    <color name="i_am_color_1485">#00001485</color>
+    <color name="i_am_color_1486">#00001486</color>
+    <color name="i_am_color_1487">#00001487</color>
+    <color name="i_am_color_1488">#00001488</color>
+    <color name="i_am_color_1489">#00001489</color>
+    <color name="i_am_color_148a">#0000148a</color>
+    <color name="i_am_color_148b">#0000148b</color>
+    <color name="i_am_color_148c">#0000148c</color>
+    <color name="i_am_color_148d">#0000148d</color>
+    <color name="i_am_color_148e">#0000148e</color>
+    <color name="i_am_color_148f">#0000148f</color>
+    <color name="i_am_color_1490">#00001490</color>
+    <color name="i_am_color_1491">#00001491</color>
+    <color name="i_am_color_1492">#00001492</color>
+    <color name="i_am_color_1493">#00001493</color>
+    <color name="i_am_color_1494">#00001494</color>
+    <color name="i_am_color_1495">#00001495</color>
+    <color name="i_am_color_1496">#00001496</color>
+    <color name="i_am_color_1497">#00001497</color>
+    <color name="i_am_color_1498">#00001498</color>
+    <color name="i_am_color_1499">#00001499</color>
+    <color name="i_am_color_149a">#0000149a</color>
+    <color name="i_am_color_149b">#0000149b</color>
+    <color name="i_am_color_149c">#0000149c</color>
+    <color name="i_am_color_149d">#0000149d</color>
+    <color name="i_am_color_149e">#0000149e</color>
+    <color name="i_am_color_149f">#0000149f</color>
+    <color name="i_am_color_14a0">#000014a0</color>
+    <color name="i_am_color_14a1">#000014a1</color>
+    <color name="i_am_color_14a2">#000014a2</color>
+    <color name="i_am_color_14a3">#000014a3</color>
+    <color name="i_am_color_14a4">#000014a4</color>
+    <color name="i_am_color_14a5">#000014a5</color>
+    <color name="i_am_color_14a6">#000014a6</color>
+    <color name="i_am_color_14a7">#000014a7</color>
+    <color name="i_am_color_14a8">#000014a8</color>
+    <color name="i_am_color_14a9">#000014a9</color>
+    <color name="i_am_color_14aa">#000014aa</color>
+    <color name="i_am_color_14ab">#000014ab</color>
+    <color name="i_am_color_14ac">#000014ac</color>
+    <color name="i_am_color_14ad">#000014ad</color>
+    <color name="i_am_color_14ae">#000014ae</color>
+    <color name="i_am_color_14af">#000014af</color>
+    <color name="i_am_color_14b0">#000014b0</color>
+    <color name="i_am_color_14b1">#000014b1</color>
+    <color name="i_am_color_14b2">#000014b2</color>
+    <color name="i_am_color_14b3">#000014b3</color>
+    <color name="i_am_color_14b4">#000014b4</color>
+    <color name="i_am_color_14b5">#000014b5</color>
+    <color name="i_am_color_14b6">#000014b6</color>
+    <color name="i_am_color_14b7">#000014b7</color>
+    <color name="i_am_color_14b8">#000014b8</color>
+    <color name="i_am_color_14b9">#000014b9</color>
+    <color name="i_am_color_14ba">#000014ba</color>
+    <color name="i_am_color_14bb">#000014bb</color>
+    <color name="i_am_color_14bc">#000014bc</color>
+    <color name="i_am_color_14bd">#000014bd</color>
+    <color name="i_am_color_14be">#000014be</color>
+    <color name="i_am_color_14bf">#000014bf</color>
+    <color name="i_am_color_14c0">#000014c0</color>
+    <color name="i_am_color_14c1">#000014c1</color>
+    <color name="i_am_color_14c2">#000014c2</color>
+    <color name="i_am_color_14c3">#000014c3</color>
+    <color name="i_am_color_14c4">#000014c4</color>
+    <color name="i_am_color_14c5">#000014c5</color>
+    <color name="i_am_color_14c6">#000014c6</color>
+    <color name="i_am_color_14c7">#000014c7</color>
+    <color name="i_am_color_14c8">#000014c8</color>
+    <color name="i_am_color_14c9">#000014c9</color>
+    <color name="i_am_color_14ca">#000014ca</color>
+    <color name="i_am_color_14cb">#000014cb</color>
+    <color name="i_am_color_14cc">#000014cc</color>
+    <color name="i_am_color_14cd">#000014cd</color>
+    <color name="i_am_color_14ce">#000014ce</color>
+    <color name="i_am_color_14cf">#000014cf</color>
+    <color name="i_am_color_14d0">#000014d0</color>
+    <color name="i_am_color_14d1">#000014d1</color>
+    <color name="i_am_color_14d2">#000014d2</color>
+    <color name="i_am_color_14d3">#000014d3</color>
+    <color name="i_am_color_14d4">#000014d4</color>
+    <color name="i_am_color_14d5">#000014d5</color>
+    <color name="i_am_color_14d6">#000014d6</color>
+    <color name="i_am_color_14d7">#000014d7</color>
+    <color name="i_am_color_14d8">#000014d8</color>
+    <color name="i_am_color_14d9">#000014d9</color>
+    <color name="i_am_color_14da">#000014da</color>
+    <color name="i_am_color_14db">#000014db</color>
+    <color name="i_am_color_14dc">#000014dc</color>
+    <color name="i_am_color_14dd">#000014dd</color>
+    <color name="i_am_color_14de">#000014de</color>
+    <color name="i_am_color_14df">#000014df</color>
+    <color name="i_am_color_14e0">#000014e0</color>
+    <color name="i_am_color_14e1">#000014e1</color>
+    <color name="i_am_color_14e2">#000014e2</color>
+    <color name="i_am_color_14e3">#000014e3</color>
+    <color name="i_am_color_14e4">#000014e4</color>
+    <color name="i_am_color_14e5">#000014e5</color>
+    <color name="i_am_color_14e6">#000014e6</color>
+    <color name="i_am_color_14e7">#000014e7</color>
+    <color name="i_am_color_14e8">#000014e8</color>
+    <color name="i_am_color_14e9">#000014e9</color>
+    <color name="i_am_color_14ea">#000014ea</color>
+    <color name="i_am_color_14eb">#000014eb</color>
+    <color name="i_am_color_14ec">#000014ec</color>
+    <color name="i_am_color_14ed">#000014ed</color>
+    <color name="i_am_color_14ee">#000014ee</color>
+    <color name="i_am_color_14ef">#000014ef</color>
+    <color name="i_am_color_14f0">#000014f0</color>
+    <color name="i_am_color_14f1">#000014f1</color>
+    <color name="i_am_color_14f2">#000014f2</color>
+    <color name="i_am_color_14f3">#000014f3</color>
+    <color name="i_am_color_14f4">#000014f4</color>
+    <color name="i_am_color_14f5">#000014f5</color>
+    <color name="i_am_color_14f6">#000014f6</color>
+    <color name="i_am_color_14f7">#000014f7</color>
+    <color name="i_am_color_14f8">#000014f8</color>
+    <color name="i_am_color_14f9">#000014f9</color>
+    <color name="i_am_color_14fa">#000014fa</color>
+    <color name="i_am_color_14fb">#000014fb</color>
+    <color name="i_am_color_14fc">#000014fc</color>
+    <color name="i_am_color_14fd">#000014fd</color>
+    <color name="i_am_color_14fe">#000014fe</color>
+    <color name="i_am_color_14ff">#000014ff</color>
+    <color name="i_am_color_1500">#00001500</color>
+    <color name="i_am_color_1501">#00001501</color>
+    <color name="i_am_color_1502">#00001502</color>
+    <color name="i_am_color_1503">#00001503</color>
+    <color name="i_am_color_1504">#00001504</color>
+    <color name="i_am_color_1505">#00001505</color>
+    <color name="i_am_color_1506">#00001506</color>
+    <color name="i_am_color_1507">#00001507</color>
+    <color name="i_am_color_1508">#00001508</color>
+    <color name="i_am_color_1509">#00001509</color>
+    <color name="i_am_color_150a">#0000150a</color>
+    <color name="i_am_color_150b">#0000150b</color>
+    <color name="i_am_color_150c">#0000150c</color>
+    <color name="i_am_color_150d">#0000150d</color>
+    <color name="i_am_color_150e">#0000150e</color>
+    <color name="i_am_color_150f">#0000150f</color>
+    <color name="i_am_color_1510">#00001510</color>
+    <color name="i_am_color_1511">#00001511</color>
+    <color name="i_am_color_1512">#00001512</color>
+    <color name="i_am_color_1513">#00001513</color>
+    <color name="i_am_color_1514">#00001514</color>
+    <color name="i_am_color_1515">#00001515</color>
+    <color name="i_am_color_1516">#00001516</color>
+    <color name="i_am_color_1517">#00001517</color>
+    <color name="i_am_color_1518">#00001518</color>
+    <color name="i_am_color_1519">#00001519</color>
+    <color name="i_am_color_151a">#0000151a</color>
+    <color name="i_am_color_151b">#0000151b</color>
+    <color name="i_am_color_151c">#0000151c</color>
+    <color name="i_am_color_151d">#0000151d</color>
+    <color name="i_am_color_151e">#0000151e</color>
+    <color name="i_am_color_151f">#0000151f</color>
+    <color name="i_am_color_1520">#00001520</color>
+    <color name="i_am_color_1521">#00001521</color>
+    <color name="i_am_color_1522">#00001522</color>
+    <color name="i_am_color_1523">#00001523</color>
+    <color name="i_am_color_1524">#00001524</color>
+    <color name="i_am_color_1525">#00001525</color>
+    <color name="i_am_color_1526">#00001526</color>
+    <color name="i_am_color_1527">#00001527</color>
+    <color name="i_am_color_1528">#00001528</color>
+    <color name="i_am_color_1529">#00001529</color>
+    <color name="i_am_color_152a">#0000152a</color>
+    <color name="i_am_color_152b">#0000152b</color>
+    <color name="i_am_color_152c">#0000152c</color>
+    <color name="i_am_color_152d">#0000152d</color>
+    <color name="i_am_color_152e">#0000152e</color>
+    <color name="i_am_color_152f">#0000152f</color>
+    <color name="i_am_color_1530">#00001530</color>
+    <color name="i_am_color_1531">#00001531</color>
+    <color name="i_am_color_1532">#00001532</color>
+    <color name="i_am_color_1533">#00001533</color>
+    <color name="i_am_color_1534">#00001534</color>
+    <color name="i_am_color_1535">#00001535</color>
+    <color name="i_am_color_1536">#00001536</color>
+    <color name="i_am_color_1537">#00001537</color>
+    <color name="i_am_color_1538">#00001538</color>
+    <color name="i_am_color_1539">#00001539</color>
+    <color name="i_am_color_153a">#0000153a</color>
+    <color name="i_am_color_153b">#0000153b</color>
+    <color name="i_am_color_153c">#0000153c</color>
+    <color name="i_am_color_153d">#0000153d</color>
+    <color name="i_am_color_153e">#0000153e</color>
+    <color name="i_am_color_153f">#0000153f</color>
+    <color name="i_am_color_1540">#00001540</color>
+    <color name="i_am_color_1541">#00001541</color>
+    <color name="i_am_color_1542">#00001542</color>
+    <color name="i_am_color_1543">#00001543</color>
+    <color name="i_am_color_1544">#00001544</color>
+    <color name="i_am_color_1545">#00001545</color>
+    <color name="i_am_color_1546">#00001546</color>
+    <color name="i_am_color_1547">#00001547</color>
+    <color name="i_am_color_1548">#00001548</color>
+    <color name="i_am_color_1549">#00001549</color>
+    <color name="i_am_color_154a">#0000154a</color>
+    <color name="i_am_color_154b">#0000154b</color>
+    <color name="i_am_color_154c">#0000154c</color>
+    <color name="i_am_color_154d">#0000154d</color>
+    <color name="i_am_color_154e">#0000154e</color>
+    <color name="i_am_color_154f">#0000154f</color>
+    <color name="i_am_color_1550">#00001550</color>
+    <color name="i_am_color_1551">#00001551</color>
+    <color name="i_am_color_1552">#00001552</color>
+    <color name="i_am_color_1553">#00001553</color>
+    <color name="i_am_color_1554">#00001554</color>
+    <color name="i_am_color_1555">#00001555</color>
+    <color name="i_am_color_1556">#00001556</color>
+    <color name="i_am_color_1557">#00001557</color>
+    <color name="i_am_color_1558">#00001558</color>
+    <color name="i_am_color_1559">#00001559</color>
+    <color name="i_am_color_155a">#0000155a</color>
+    <color name="i_am_color_155b">#0000155b</color>
+    <color name="i_am_color_155c">#0000155c</color>
+    <color name="i_am_color_155d">#0000155d</color>
+    <color name="i_am_color_155e">#0000155e</color>
+    <color name="i_am_color_155f">#0000155f</color>
+    <color name="i_am_color_1560">#00001560</color>
+    <color name="i_am_color_1561">#00001561</color>
+    <color name="i_am_color_1562">#00001562</color>
+    <color name="i_am_color_1563">#00001563</color>
+    <color name="i_am_color_1564">#00001564</color>
+    <color name="i_am_color_1565">#00001565</color>
+    <color name="i_am_color_1566">#00001566</color>
+    <color name="i_am_color_1567">#00001567</color>
+    <color name="i_am_color_1568">#00001568</color>
+    <color name="i_am_color_1569">#00001569</color>
+    <color name="i_am_color_156a">#0000156a</color>
+    <color name="i_am_color_156b">#0000156b</color>
+    <color name="i_am_color_156c">#0000156c</color>
+    <color name="i_am_color_156d">#0000156d</color>
+    <color name="i_am_color_156e">#0000156e</color>
+    <color name="i_am_color_156f">#0000156f</color>
+    <color name="i_am_color_1570">#00001570</color>
+    <color name="i_am_color_1571">#00001571</color>
+    <color name="i_am_color_1572">#00001572</color>
+    <color name="i_am_color_1573">#00001573</color>
+    <color name="i_am_color_1574">#00001574</color>
+    <color name="i_am_color_1575">#00001575</color>
+    <color name="i_am_color_1576">#00001576</color>
+    <color name="i_am_color_1577">#00001577</color>
+    <color name="i_am_color_1578">#00001578</color>
+    <color name="i_am_color_1579">#00001579</color>
+    <color name="i_am_color_157a">#0000157a</color>
+    <color name="i_am_color_157b">#0000157b</color>
+    <color name="i_am_color_157c">#0000157c</color>
+    <color name="i_am_color_157d">#0000157d</color>
+    <color name="i_am_color_157e">#0000157e</color>
+    <color name="i_am_color_157f">#0000157f</color>
+    <color name="i_am_color_1580">#00001580</color>
+    <color name="i_am_color_1581">#00001581</color>
+    <color name="i_am_color_1582">#00001582</color>
+    <color name="i_am_color_1583">#00001583</color>
+    <color name="i_am_color_1584">#00001584</color>
+    <color name="i_am_color_1585">#00001585</color>
+    <color name="i_am_color_1586">#00001586</color>
+    <color name="i_am_color_1587">#00001587</color>
+    <color name="i_am_color_1588">#00001588</color>
+    <color name="i_am_color_1589">#00001589</color>
+    <color name="i_am_color_158a">#0000158a</color>
+    <color name="i_am_color_158b">#0000158b</color>
+    <color name="i_am_color_158c">#0000158c</color>
+    <color name="i_am_color_158d">#0000158d</color>
+    <color name="i_am_color_158e">#0000158e</color>
+    <color name="i_am_color_158f">#0000158f</color>
+    <color name="i_am_color_1590">#00001590</color>
+    <color name="i_am_color_1591">#00001591</color>
+    <color name="i_am_color_1592">#00001592</color>
+    <color name="i_am_color_1593">#00001593</color>
+    <color name="i_am_color_1594">#00001594</color>
+    <color name="i_am_color_1595">#00001595</color>
+    <color name="i_am_color_1596">#00001596</color>
+    <color name="i_am_color_1597">#00001597</color>
+    <color name="i_am_color_1598">#00001598</color>
+    <color name="i_am_color_1599">#00001599</color>
+    <color name="i_am_color_159a">#0000159a</color>
+    <color name="i_am_color_159b">#0000159b</color>
+    <color name="i_am_color_159c">#0000159c</color>
+    <color name="i_am_color_159d">#0000159d</color>
+    <color name="i_am_color_159e">#0000159e</color>
+    <color name="i_am_color_159f">#0000159f</color>
+    <color name="i_am_color_15a0">#000015a0</color>
+    <color name="i_am_color_15a1">#000015a1</color>
+    <color name="i_am_color_15a2">#000015a2</color>
+    <color name="i_am_color_15a3">#000015a3</color>
+    <color name="i_am_color_15a4">#000015a4</color>
+    <color name="i_am_color_15a5">#000015a5</color>
+    <color name="i_am_color_15a6">#000015a6</color>
+    <color name="i_am_color_15a7">#000015a7</color>
+    <color name="i_am_color_15a8">#000015a8</color>
+    <color name="i_am_color_15a9">#000015a9</color>
+    <color name="i_am_color_15aa">#000015aa</color>
+    <color name="i_am_color_15ab">#000015ab</color>
+    <color name="i_am_color_15ac">#000015ac</color>
+    <color name="i_am_color_15ad">#000015ad</color>
+    <color name="i_am_color_15ae">#000015ae</color>
+    <color name="i_am_color_15af">#000015af</color>
+    <color name="i_am_color_15b0">#000015b0</color>
+    <color name="i_am_color_15b1">#000015b1</color>
+    <color name="i_am_color_15b2">#000015b2</color>
+    <color name="i_am_color_15b3">#000015b3</color>
+    <color name="i_am_color_15b4">#000015b4</color>
+    <color name="i_am_color_15b5">#000015b5</color>
+    <color name="i_am_color_15b6">#000015b6</color>
+    <color name="i_am_color_15b7">#000015b7</color>
+    <color name="i_am_color_15b8">#000015b8</color>
+    <color name="i_am_color_15b9">#000015b9</color>
+    <color name="i_am_color_15ba">#000015ba</color>
+    <color name="i_am_color_15bb">#000015bb</color>
+    <color name="i_am_color_15bc">#000015bc</color>
+    <color name="i_am_color_15bd">#000015bd</color>
+    <color name="i_am_color_15be">#000015be</color>
+    <color name="i_am_color_15bf">#000015bf</color>
+    <color name="i_am_color_15c0">#000015c0</color>
+    <color name="i_am_color_15c1">#000015c1</color>
+    <color name="i_am_color_15c2">#000015c2</color>
+    <color name="i_am_color_15c3">#000015c3</color>
+    <color name="i_am_color_15c4">#000015c4</color>
+    <color name="i_am_color_15c5">#000015c5</color>
+    <color name="i_am_color_15c6">#000015c6</color>
+    <color name="i_am_color_15c7">#000015c7</color>
+    <color name="i_am_color_15c8">#000015c8</color>
+    <color name="i_am_color_15c9">#000015c9</color>
+    <color name="i_am_color_15ca">#000015ca</color>
+    <color name="i_am_color_15cb">#000015cb</color>
+    <color name="i_am_color_15cc">#000015cc</color>
+    <color name="i_am_color_15cd">#000015cd</color>
+    <color name="i_am_color_15ce">#000015ce</color>
+    <color name="i_am_color_15cf">#000015cf</color>
+    <color name="i_am_color_15d0">#000015d0</color>
+    <color name="i_am_color_15d1">#000015d1</color>
+    <color name="i_am_color_15d2">#000015d2</color>
+    <color name="i_am_color_15d3">#000015d3</color>
+    <color name="i_am_color_15d4">#000015d4</color>
+    <color name="i_am_color_15d5">#000015d5</color>
+    <color name="i_am_color_15d6">#000015d6</color>
+    <color name="i_am_color_15d7">#000015d7</color>
+    <color name="i_am_color_15d8">#000015d8</color>
+    <color name="i_am_color_15d9">#000015d9</color>
+    <color name="i_am_color_15da">#000015da</color>
+    <color name="i_am_color_15db">#000015db</color>
+    <color name="i_am_color_15dc">#000015dc</color>
+    <color name="i_am_color_15dd">#000015dd</color>
+    <color name="i_am_color_15de">#000015de</color>
+    <color name="i_am_color_15df">#000015df</color>
+    <color name="i_am_color_15e0">#000015e0</color>
+    <color name="i_am_color_15e1">#000015e1</color>
+    <color name="i_am_color_15e2">#000015e2</color>
+    <color name="i_am_color_15e3">#000015e3</color>
+    <color name="i_am_color_15e4">#000015e4</color>
+    <color name="i_am_color_15e5">#000015e5</color>
+    <color name="i_am_color_15e6">#000015e6</color>
+    <color name="i_am_color_15e7">#000015e7</color>
+    <color name="i_am_color_15e8">#000015e8</color>
+    <color name="i_am_color_15e9">#000015e9</color>
+    <color name="i_am_color_15ea">#000015ea</color>
+    <color name="i_am_color_15eb">#000015eb</color>
+    <color name="i_am_color_15ec">#000015ec</color>
+    <color name="i_am_color_15ed">#000015ed</color>
+    <color name="i_am_color_15ee">#000015ee</color>
+    <color name="i_am_color_15ef">#000015ef</color>
+    <color name="i_am_color_15f0">#000015f0</color>
+    <color name="i_am_color_15f1">#000015f1</color>
+    <color name="i_am_color_15f2">#000015f2</color>
+    <color name="i_am_color_15f3">#000015f3</color>
+    <color name="i_am_color_15f4">#000015f4</color>
+    <color name="i_am_color_15f5">#000015f5</color>
+    <color name="i_am_color_15f6">#000015f6</color>
+    <color name="i_am_color_15f7">#000015f7</color>
+    <color name="i_am_color_15f8">#000015f8</color>
+    <color name="i_am_color_15f9">#000015f9</color>
+    <color name="i_am_color_15fa">#000015fa</color>
+    <color name="i_am_color_15fb">#000015fb</color>
+    <color name="i_am_color_15fc">#000015fc</color>
+    <color name="i_am_color_15fd">#000015fd</color>
+    <color name="i_am_color_15fe">#000015fe</color>
+    <color name="i_am_color_15ff">#000015ff</color>
+    <color name="i_am_color_1600">#00001600</color>
+    <color name="i_am_color_1601">#00001601</color>
+    <color name="i_am_color_1602">#00001602</color>
+    <color name="i_am_color_1603">#00001603</color>
+    <color name="i_am_color_1604">#00001604</color>
+    <color name="i_am_color_1605">#00001605</color>
+    <color name="i_am_color_1606">#00001606</color>
+    <color name="i_am_color_1607">#00001607</color>
+    <color name="i_am_color_1608">#00001608</color>
+    <color name="i_am_color_1609">#00001609</color>
+    <color name="i_am_color_160a">#0000160a</color>
+    <color name="i_am_color_160b">#0000160b</color>
+    <color name="i_am_color_160c">#0000160c</color>
+    <color name="i_am_color_160d">#0000160d</color>
+    <color name="i_am_color_160e">#0000160e</color>
+    <color name="i_am_color_160f">#0000160f</color>
+    <color name="i_am_color_1610">#00001610</color>
+    <color name="i_am_color_1611">#00001611</color>
+    <color name="i_am_color_1612">#00001612</color>
+    <color name="i_am_color_1613">#00001613</color>
+    <color name="i_am_color_1614">#00001614</color>
+    <color name="i_am_color_1615">#00001615</color>
+    <color name="i_am_color_1616">#00001616</color>
+    <color name="i_am_color_1617">#00001617</color>
+    <color name="i_am_color_1618">#00001618</color>
+    <color name="i_am_color_1619">#00001619</color>
+    <color name="i_am_color_161a">#0000161a</color>
+    <color name="i_am_color_161b">#0000161b</color>
+    <color name="i_am_color_161c">#0000161c</color>
+    <color name="i_am_color_161d">#0000161d</color>
+    <color name="i_am_color_161e">#0000161e</color>
+    <color name="i_am_color_161f">#0000161f</color>
+    <color name="i_am_color_1620">#00001620</color>
+    <color name="i_am_color_1621">#00001621</color>
+    <color name="i_am_color_1622">#00001622</color>
+    <color name="i_am_color_1623">#00001623</color>
+    <color name="i_am_color_1624">#00001624</color>
+    <color name="i_am_color_1625">#00001625</color>
+    <color name="i_am_color_1626">#00001626</color>
+    <color name="i_am_color_1627">#00001627</color>
+    <color name="i_am_color_1628">#00001628</color>
+    <color name="i_am_color_1629">#00001629</color>
+    <color name="i_am_color_162a">#0000162a</color>
+    <color name="i_am_color_162b">#0000162b</color>
+    <color name="i_am_color_162c">#0000162c</color>
+    <color name="i_am_color_162d">#0000162d</color>
+    <color name="i_am_color_162e">#0000162e</color>
+    <color name="i_am_color_162f">#0000162f</color>
+    <color name="i_am_color_1630">#00001630</color>
+    <color name="i_am_color_1631">#00001631</color>
+    <color name="i_am_color_1632">#00001632</color>
+    <color name="i_am_color_1633">#00001633</color>
+    <color name="i_am_color_1634">#00001634</color>
+    <color name="i_am_color_1635">#00001635</color>
+    <color name="i_am_color_1636">#00001636</color>
+    <color name="i_am_color_1637">#00001637</color>
+    <color name="i_am_color_1638">#00001638</color>
+    <color name="i_am_color_1639">#00001639</color>
+    <color name="i_am_color_163a">#0000163a</color>
+    <color name="i_am_color_163b">#0000163b</color>
+    <color name="i_am_color_163c">#0000163c</color>
+    <color name="i_am_color_163d">#0000163d</color>
+    <color name="i_am_color_163e">#0000163e</color>
+    <color name="i_am_color_163f">#0000163f</color>
+    <color name="i_am_color_1640">#00001640</color>
+    <color name="i_am_color_1641">#00001641</color>
+    <color name="i_am_color_1642">#00001642</color>
+    <color name="i_am_color_1643">#00001643</color>
+    <color name="i_am_color_1644">#00001644</color>
+    <color name="i_am_color_1645">#00001645</color>
+    <color name="i_am_color_1646">#00001646</color>
+    <color name="i_am_color_1647">#00001647</color>
+    <color name="i_am_color_1648">#00001648</color>
+    <color name="i_am_color_1649">#00001649</color>
+    <color name="i_am_color_164a">#0000164a</color>
+    <color name="i_am_color_164b">#0000164b</color>
+    <color name="i_am_color_164c">#0000164c</color>
+    <color name="i_am_color_164d">#0000164d</color>
+    <color name="i_am_color_164e">#0000164e</color>
+    <color name="i_am_color_164f">#0000164f</color>
+    <color name="i_am_color_1650">#00001650</color>
+    <color name="i_am_color_1651">#00001651</color>
+    <color name="i_am_color_1652">#00001652</color>
+    <color name="i_am_color_1653">#00001653</color>
+    <color name="i_am_color_1654">#00001654</color>
+    <color name="i_am_color_1655">#00001655</color>
+    <color name="i_am_color_1656">#00001656</color>
+    <color name="i_am_color_1657">#00001657</color>
+    <color name="i_am_color_1658">#00001658</color>
+    <color name="i_am_color_1659">#00001659</color>
+    <color name="i_am_color_165a">#0000165a</color>
+    <color name="i_am_color_165b">#0000165b</color>
+    <color name="i_am_color_165c">#0000165c</color>
+    <color name="i_am_color_165d">#0000165d</color>
+    <color name="i_am_color_165e">#0000165e</color>
+    <color name="i_am_color_165f">#0000165f</color>
+    <color name="i_am_color_1660">#00001660</color>
+    <color name="i_am_color_1661">#00001661</color>
+    <color name="i_am_color_1662">#00001662</color>
+    <color name="i_am_color_1663">#00001663</color>
+    <color name="i_am_color_1664">#00001664</color>
+    <color name="i_am_color_1665">#00001665</color>
+    <color name="i_am_color_1666">#00001666</color>
+    <color name="i_am_color_1667">#00001667</color>
+    <color name="i_am_color_1668">#00001668</color>
+    <color name="i_am_color_1669">#00001669</color>
+    <color name="i_am_color_166a">#0000166a</color>
+    <color name="i_am_color_166b">#0000166b</color>
+    <color name="i_am_color_166c">#0000166c</color>
+    <color name="i_am_color_166d">#0000166d</color>
+    <color name="i_am_color_166e">#0000166e</color>
+    <color name="i_am_color_166f">#0000166f</color>
+    <color name="i_am_color_1670">#00001670</color>
+    <color name="i_am_color_1671">#00001671</color>
+    <color name="i_am_color_1672">#00001672</color>
+    <color name="i_am_color_1673">#00001673</color>
+    <color name="i_am_color_1674">#00001674</color>
+    <color name="i_am_color_1675">#00001675</color>
+    <color name="i_am_color_1676">#00001676</color>
+    <color name="i_am_color_1677">#00001677</color>
+    <color name="i_am_color_1678">#00001678</color>
+    <color name="i_am_color_1679">#00001679</color>
+    <color name="i_am_color_167a">#0000167a</color>
+    <color name="i_am_color_167b">#0000167b</color>
+    <color name="i_am_color_167c">#0000167c</color>
+    <color name="i_am_color_167d">#0000167d</color>
+    <color name="i_am_color_167e">#0000167e</color>
+    <color name="i_am_color_167f">#0000167f</color>
+    <color name="i_am_color_1680">#00001680</color>
+    <color name="i_am_color_1681">#00001681</color>
+    <color name="i_am_color_1682">#00001682</color>
+    <color name="i_am_color_1683">#00001683</color>
+    <color name="i_am_color_1684">#00001684</color>
+    <color name="i_am_color_1685">#00001685</color>
+    <color name="i_am_color_1686">#00001686</color>
+    <color name="i_am_color_1687">#00001687</color>
+    <color name="i_am_color_1688">#00001688</color>
+    <color name="i_am_color_1689">#00001689</color>
+    <color name="i_am_color_168a">#0000168a</color>
+    <color name="i_am_color_168b">#0000168b</color>
+    <color name="i_am_color_168c">#0000168c</color>
+    <color name="i_am_color_168d">#0000168d</color>
+    <color name="i_am_color_168e">#0000168e</color>
+    <color name="i_am_color_168f">#0000168f</color>
+    <color name="i_am_color_1690">#00001690</color>
+    <color name="i_am_color_1691">#00001691</color>
+    <color name="i_am_color_1692">#00001692</color>
+    <color name="i_am_color_1693">#00001693</color>
+    <color name="i_am_color_1694">#00001694</color>
+    <color name="i_am_color_1695">#00001695</color>
+    <color name="i_am_color_1696">#00001696</color>
+    <color name="i_am_color_1697">#00001697</color>
+    <color name="i_am_color_1698">#00001698</color>
+    <color name="i_am_color_1699">#00001699</color>
+    <color name="i_am_color_169a">#0000169a</color>
+    <color name="i_am_color_169b">#0000169b</color>
+    <color name="i_am_color_169c">#0000169c</color>
+    <color name="i_am_color_169d">#0000169d</color>
+    <color name="i_am_color_169e">#0000169e</color>
+    <color name="i_am_color_169f">#0000169f</color>
+    <color name="i_am_color_16a0">#000016a0</color>
+    <color name="i_am_color_16a1">#000016a1</color>
+    <color name="i_am_color_16a2">#000016a2</color>
+    <color name="i_am_color_16a3">#000016a3</color>
+    <color name="i_am_color_16a4">#000016a4</color>
+    <color name="i_am_color_16a5">#000016a5</color>
+    <color name="i_am_color_16a6">#000016a6</color>
+    <color name="i_am_color_16a7">#000016a7</color>
+    <color name="i_am_color_16a8">#000016a8</color>
+    <color name="i_am_color_16a9">#000016a9</color>
+    <color name="i_am_color_16aa">#000016aa</color>
+    <color name="i_am_color_16ab">#000016ab</color>
+    <color name="i_am_color_16ac">#000016ac</color>
+    <color name="i_am_color_16ad">#000016ad</color>
+    <color name="i_am_color_16ae">#000016ae</color>
+    <color name="i_am_color_16af">#000016af</color>
+    <color name="i_am_color_16b0">#000016b0</color>
+    <color name="i_am_color_16b1">#000016b1</color>
+    <color name="i_am_color_16b2">#000016b2</color>
+    <color name="i_am_color_16b3">#000016b3</color>
+    <color name="i_am_color_16b4">#000016b4</color>
+    <color name="i_am_color_16b5">#000016b5</color>
+    <color name="i_am_color_16b6">#000016b6</color>
+    <color name="i_am_color_16b7">#000016b7</color>
+    <color name="i_am_color_16b8">#000016b8</color>
+    <color name="i_am_color_16b9">#000016b9</color>
+    <color name="i_am_color_16ba">#000016ba</color>
+    <color name="i_am_color_16bb">#000016bb</color>
+    <color name="i_am_color_16bc">#000016bc</color>
+    <color name="i_am_color_16bd">#000016bd</color>
+    <color name="i_am_color_16be">#000016be</color>
+    <color name="i_am_color_16bf">#000016bf</color>
+    <color name="i_am_color_16c0">#000016c0</color>
+    <color name="i_am_color_16c1">#000016c1</color>
+    <color name="i_am_color_16c2">#000016c2</color>
+    <color name="i_am_color_16c3">#000016c3</color>
+    <color name="i_am_color_16c4">#000016c4</color>
+    <color name="i_am_color_16c5">#000016c5</color>
+    <color name="i_am_color_16c6">#000016c6</color>
+    <color name="i_am_color_16c7">#000016c7</color>
+    <color name="i_am_color_16c8">#000016c8</color>
+    <color name="i_am_color_16c9">#000016c9</color>
+    <color name="i_am_color_16ca">#000016ca</color>
+    <color name="i_am_color_16cb">#000016cb</color>
+    <color name="i_am_color_16cc">#000016cc</color>
+    <color name="i_am_color_16cd">#000016cd</color>
+    <color name="i_am_color_16ce">#000016ce</color>
+    <color name="i_am_color_16cf">#000016cf</color>
+    <color name="i_am_color_16d0">#000016d0</color>
+    <color name="i_am_color_16d1">#000016d1</color>
+    <color name="i_am_color_16d2">#000016d2</color>
+    <color name="i_am_color_16d3">#000016d3</color>
+    <color name="i_am_color_16d4">#000016d4</color>
+    <color name="i_am_color_16d5">#000016d5</color>
+    <color name="i_am_color_16d6">#000016d6</color>
+    <color name="i_am_color_16d7">#000016d7</color>
+    <color name="i_am_color_16d8">#000016d8</color>
+    <color name="i_am_color_16d9">#000016d9</color>
+    <color name="i_am_color_16da">#000016da</color>
+    <color name="i_am_color_16db">#000016db</color>
+    <color name="i_am_color_16dc">#000016dc</color>
+    <color name="i_am_color_16dd">#000016dd</color>
+    <color name="i_am_color_16de">#000016de</color>
+    <color name="i_am_color_16df">#000016df</color>
+    <color name="i_am_color_16e0">#000016e0</color>
+    <color name="i_am_color_16e1">#000016e1</color>
+    <color name="i_am_color_16e2">#000016e2</color>
+    <color name="i_am_color_16e3">#000016e3</color>
+    <color name="i_am_color_16e4">#000016e4</color>
+    <color name="i_am_color_16e5">#000016e5</color>
+    <color name="i_am_color_16e6">#000016e6</color>
+    <color name="i_am_color_16e7">#000016e7</color>
+    <color name="i_am_color_16e8">#000016e8</color>
+    <color name="i_am_color_16e9">#000016e9</color>
+    <color name="i_am_color_16ea">#000016ea</color>
+    <color name="i_am_color_16eb">#000016eb</color>
+    <color name="i_am_color_16ec">#000016ec</color>
+    <color name="i_am_color_16ed">#000016ed</color>
+    <color name="i_am_color_16ee">#000016ee</color>
+    <color name="i_am_color_16ef">#000016ef</color>
+    <color name="i_am_color_16f0">#000016f0</color>
+    <color name="i_am_color_16f1">#000016f1</color>
+    <color name="i_am_color_16f2">#000016f2</color>
+    <color name="i_am_color_16f3">#000016f3</color>
+    <color name="i_am_color_16f4">#000016f4</color>
+    <color name="i_am_color_16f5">#000016f5</color>
+    <color name="i_am_color_16f6">#000016f6</color>
+    <color name="i_am_color_16f7">#000016f7</color>
+    <color name="i_am_color_16f8">#000016f8</color>
+    <color name="i_am_color_16f9">#000016f9</color>
+    <color name="i_am_color_16fa">#000016fa</color>
+    <color name="i_am_color_16fb">#000016fb</color>
+    <color name="i_am_color_16fc">#000016fc</color>
+    <color name="i_am_color_16fd">#000016fd</color>
+    <color name="i_am_color_16fe">#000016fe</color>
+    <color name="i_am_color_16ff">#000016ff</color>
+    <color name="i_am_color_1700">#00001700</color>
+    <color name="i_am_color_1701">#00001701</color>
+    <color name="i_am_color_1702">#00001702</color>
+    <color name="i_am_color_1703">#00001703</color>
+    <color name="i_am_color_1704">#00001704</color>
+    <color name="i_am_color_1705">#00001705</color>
+    <color name="i_am_color_1706">#00001706</color>
+    <color name="i_am_color_1707">#00001707</color>
+    <color name="i_am_color_1708">#00001708</color>
+    <color name="i_am_color_1709">#00001709</color>
+    <color name="i_am_color_170a">#0000170a</color>
+    <color name="i_am_color_170b">#0000170b</color>
+    <color name="i_am_color_170c">#0000170c</color>
+    <color name="i_am_color_170d">#0000170d</color>
+    <color name="i_am_color_170e">#0000170e</color>
+    <color name="i_am_color_170f">#0000170f</color>
+    <color name="i_am_color_1710">#00001710</color>
+    <color name="i_am_color_1711">#00001711</color>
+    <color name="i_am_color_1712">#00001712</color>
+    <color name="i_am_color_1713">#00001713</color>
+    <color name="i_am_color_1714">#00001714</color>
+    <color name="i_am_color_1715">#00001715</color>
+    <color name="i_am_color_1716">#00001716</color>
+    <color name="i_am_color_1717">#00001717</color>
+    <color name="i_am_color_1718">#00001718</color>
+    <color name="i_am_color_1719">#00001719</color>
+    <color name="i_am_color_171a">#0000171a</color>
+    <color name="i_am_color_171b">#0000171b</color>
+    <color name="i_am_color_171c">#0000171c</color>
+    <color name="i_am_color_171d">#0000171d</color>
+    <color name="i_am_color_171e">#0000171e</color>
+    <color name="i_am_color_171f">#0000171f</color>
+    <color name="i_am_color_1720">#00001720</color>
+    <color name="i_am_color_1721">#00001721</color>
+    <color name="i_am_color_1722">#00001722</color>
+    <color name="i_am_color_1723">#00001723</color>
+    <color name="i_am_color_1724">#00001724</color>
+    <color name="i_am_color_1725">#00001725</color>
+    <color name="i_am_color_1726">#00001726</color>
+    <color name="i_am_color_1727">#00001727</color>
+    <color name="i_am_color_1728">#00001728</color>
+    <color name="i_am_color_1729">#00001729</color>
+    <color name="i_am_color_172a">#0000172a</color>
+    <color name="i_am_color_172b">#0000172b</color>
+    <color name="i_am_color_172c">#0000172c</color>
+    <color name="i_am_color_172d">#0000172d</color>
+    <color name="i_am_color_172e">#0000172e</color>
+    <color name="i_am_color_172f">#0000172f</color>
+    <color name="i_am_color_1730">#00001730</color>
+    <color name="i_am_color_1731">#00001731</color>
+    <color name="i_am_color_1732">#00001732</color>
+    <color name="i_am_color_1733">#00001733</color>
+    <color name="i_am_color_1734">#00001734</color>
+    <color name="i_am_color_1735">#00001735</color>
+    <color name="i_am_color_1736">#00001736</color>
+    <color name="i_am_color_1737">#00001737</color>
+    <color name="i_am_color_1738">#00001738</color>
+    <color name="i_am_color_1739">#00001739</color>
+    <color name="i_am_color_173a">#0000173a</color>
+    <color name="i_am_color_173b">#0000173b</color>
+    <color name="i_am_color_173c">#0000173c</color>
+    <color name="i_am_color_173d">#0000173d</color>
+    <color name="i_am_color_173e">#0000173e</color>
+    <color name="i_am_color_173f">#0000173f</color>
+    <color name="i_am_color_1740">#00001740</color>
+    <color name="i_am_color_1741">#00001741</color>
+    <color name="i_am_color_1742">#00001742</color>
+    <color name="i_am_color_1743">#00001743</color>
+    <color name="i_am_color_1744">#00001744</color>
+    <color name="i_am_color_1745">#00001745</color>
+    <color name="i_am_color_1746">#00001746</color>
+    <color name="i_am_color_1747">#00001747</color>
+    <color name="i_am_color_1748">#00001748</color>
+    <color name="i_am_color_1749">#00001749</color>
+    <color name="i_am_color_174a">#0000174a</color>
+    <color name="i_am_color_174b">#0000174b</color>
+    <color name="i_am_color_174c">#0000174c</color>
+    <color name="i_am_color_174d">#0000174d</color>
+    <color name="i_am_color_174e">#0000174e</color>
+    <color name="i_am_color_174f">#0000174f</color>
+    <color name="i_am_color_1750">#00001750</color>
+    <color name="i_am_color_1751">#00001751</color>
+    <color name="i_am_color_1752">#00001752</color>
+    <color name="i_am_color_1753">#00001753</color>
+    <color name="i_am_color_1754">#00001754</color>
+    <color name="i_am_color_1755">#00001755</color>
+    <color name="i_am_color_1756">#00001756</color>
+    <color name="i_am_color_1757">#00001757</color>
+    <color name="i_am_color_1758">#00001758</color>
+    <color name="i_am_color_1759">#00001759</color>
+    <color name="i_am_color_175a">#0000175a</color>
+    <color name="i_am_color_175b">#0000175b</color>
+    <color name="i_am_color_175c">#0000175c</color>
+    <color name="i_am_color_175d">#0000175d</color>
+    <color name="i_am_color_175e">#0000175e</color>
+    <color name="i_am_color_175f">#0000175f</color>
+    <color name="i_am_color_1760">#00001760</color>
+    <color name="i_am_color_1761">#00001761</color>
+    <color name="i_am_color_1762">#00001762</color>
+    <color name="i_am_color_1763">#00001763</color>
+    <color name="i_am_color_1764">#00001764</color>
+    <color name="i_am_color_1765">#00001765</color>
+    <color name="i_am_color_1766">#00001766</color>
+    <color name="i_am_color_1767">#00001767</color>
+    <color name="i_am_color_1768">#00001768</color>
+    <color name="i_am_color_1769">#00001769</color>
+    <color name="i_am_color_176a">#0000176a</color>
+    <color name="i_am_color_176b">#0000176b</color>
+    <color name="i_am_color_176c">#0000176c</color>
+    <color name="i_am_color_176d">#0000176d</color>
+    <color name="i_am_color_176e">#0000176e</color>
+    <color name="i_am_color_176f">#0000176f</color>
+    <color name="i_am_color_1770">#00001770</color>
+    <color name="i_am_color_1771">#00001771</color>
+    <color name="i_am_color_1772">#00001772</color>
+    <color name="i_am_color_1773">#00001773</color>
+    <color name="i_am_color_1774">#00001774</color>
+    <color name="i_am_color_1775">#00001775</color>
+    <color name="i_am_color_1776">#00001776</color>
+    <color name="i_am_color_1777">#00001777</color>
+    <color name="i_am_color_1778">#00001778</color>
+    <color name="i_am_color_1779">#00001779</color>
+    <color name="i_am_color_177a">#0000177a</color>
+    <color name="i_am_color_177b">#0000177b</color>
+    <color name="i_am_color_177c">#0000177c</color>
+    <color name="i_am_color_177d">#0000177d</color>
+    <color name="i_am_color_177e">#0000177e</color>
+    <color name="i_am_color_177f">#0000177f</color>
+    <color name="i_am_color_1780">#00001780</color>
+    <color name="i_am_color_1781">#00001781</color>
+    <color name="i_am_color_1782">#00001782</color>
+    <color name="i_am_color_1783">#00001783</color>
+    <color name="i_am_color_1784">#00001784</color>
+    <color name="i_am_color_1785">#00001785</color>
+    <color name="i_am_color_1786">#00001786</color>
+    <color name="i_am_color_1787">#00001787</color>
+    <color name="i_am_color_1788">#00001788</color>
+    <color name="i_am_color_1789">#00001789</color>
+    <color name="i_am_color_178a">#0000178a</color>
+    <color name="i_am_color_178b">#0000178b</color>
+    <color name="i_am_color_178c">#0000178c</color>
+    <color name="i_am_color_178d">#0000178d</color>
+    <color name="i_am_color_178e">#0000178e</color>
+    <color name="i_am_color_178f">#0000178f</color>
+    <color name="i_am_color_1790">#00001790</color>
+    <color name="i_am_color_1791">#00001791</color>
+    <color name="i_am_color_1792">#00001792</color>
+    <color name="i_am_color_1793">#00001793</color>
+    <color name="i_am_color_1794">#00001794</color>
+    <color name="i_am_color_1795">#00001795</color>
+    <color name="i_am_color_1796">#00001796</color>
+    <color name="i_am_color_1797">#00001797</color>
+    <color name="i_am_color_1798">#00001798</color>
+    <color name="i_am_color_1799">#00001799</color>
+    <color name="i_am_color_179a">#0000179a</color>
+    <color name="i_am_color_179b">#0000179b</color>
+    <color name="i_am_color_179c">#0000179c</color>
+    <color name="i_am_color_179d">#0000179d</color>
+    <color name="i_am_color_179e">#0000179e</color>
+    <color name="i_am_color_179f">#0000179f</color>
+    <color name="i_am_color_17a0">#000017a0</color>
+    <color name="i_am_color_17a1">#000017a1</color>
+    <color name="i_am_color_17a2">#000017a2</color>
+    <color name="i_am_color_17a3">#000017a3</color>
+    <color name="i_am_color_17a4">#000017a4</color>
+    <color name="i_am_color_17a5">#000017a5</color>
+    <color name="i_am_color_17a6">#000017a6</color>
+    <color name="i_am_color_17a7">#000017a7</color>
+    <color name="i_am_color_17a8">#000017a8</color>
+    <color name="i_am_color_17a9">#000017a9</color>
+    <color name="i_am_color_17aa">#000017aa</color>
+    <color name="i_am_color_17ab">#000017ab</color>
+    <color name="i_am_color_17ac">#000017ac</color>
+    <color name="i_am_color_17ad">#000017ad</color>
+    <color name="i_am_color_17ae">#000017ae</color>
+    <color name="i_am_color_17af">#000017af</color>
+    <color name="i_am_color_17b0">#000017b0</color>
+    <color name="i_am_color_17b1">#000017b1</color>
+    <color name="i_am_color_17b2">#000017b2</color>
+    <color name="i_am_color_17b3">#000017b3</color>
+    <color name="i_am_color_17b4">#000017b4</color>
+    <color name="i_am_color_17b5">#000017b5</color>
+    <color name="i_am_color_17b6">#000017b6</color>
+    <color name="i_am_color_17b7">#000017b7</color>
+    <color name="i_am_color_17b8">#000017b8</color>
+    <color name="i_am_color_17b9">#000017b9</color>
+    <color name="i_am_color_17ba">#000017ba</color>
+    <color name="i_am_color_17bb">#000017bb</color>
+    <color name="i_am_color_17bc">#000017bc</color>
+    <color name="i_am_color_17bd">#000017bd</color>
+    <color name="i_am_color_17be">#000017be</color>
+    <color name="i_am_color_17bf">#000017bf</color>
+    <color name="i_am_color_17c0">#000017c0</color>
+    <color name="i_am_color_17c1">#000017c1</color>
+    <color name="i_am_color_17c2">#000017c2</color>
+    <color name="i_am_color_17c3">#000017c3</color>
+    <color name="i_am_color_17c4">#000017c4</color>
+    <color name="i_am_color_17c5">#000017c5</color>
+    <color name="i_am_color_17c6">#000017c6</color>
+    <color name="i_am_color_17c7">#000017c7</color>
+    <color name="i_am_color_17c8">#000017c8</color>
+    <color name="i_am_color_17c9">#000017c9</color>
+    <color name="i_am_color_17ca">#000017ca</color>
+    <color name="i_am_color_17cb">#000017cb</color>
+    <color name="i_am_color_17cc">#000017cc</color>
+    <color name="i_am_color_17cd">#000017cd</color>
+    <color name="i_am_color_17ce">#000017ce</color>
+    <color name="i_am_color_17cf">#000017cf</color>
+    <color name="i_am_color_17d0">#000017d0</color>
+    <color name="i_am_color_17d1">#000017d1</color>
+    <color name="i_am_color_17d2">#000017d2</color>
+    <color name="i_am_color_17d3">#000017d3</color>
+    <color name="i_am_color_17d4">#000017d4</color>
+    <color name="i_am_color_17d5">#000017d5</color>
+    <color name="i_am_color_17d6">#000017d6</color>
+    <color name="i_am_color_17d7">#000017d7</color>
+    <color name="i_am_color_17d8">#000017d8</color>
+    <color name="i_am_color_17d9">#000017d9</color>
+    <color name="i_am_color_17da">#000017da</color>
+    <color name="i_am_color_17db">#000017db</color>
+    <color name="i_am_color_17dc">#000017dc</color>
+    <color name="i_am_color_17dd">#000017dd</color>
+    <color name="i_am_color_17de">#000017de</color>
+    <color name="i_am_color_17df">#000017df</color>
+    <color name="i_am_color_17e0">#000017e0</color>
+    <color name="i_am_color_17e1">#000017e1</color>
+    <color name="i_am_color_17e2">#000017e2</color>
+    <color name="i_am_color_17e3">#000017e3</color>
+    <color name="i_am_color_17e4">#000017e4</color>
+    <color name="i_am_color_17e5">#000017e5</color>
+    <color name="i_am_color_17e6">#000017e6</color>
+    <color name="i_am_color_17e7">#000017e7</color>
+    <color name="i_am_color_17e8">#000017e8</color>
+    <color name="i_am_color_17e9">#000017e9</color>
+    <color name="i_am_color_17ea">#000017ea</color>
+    <color name="i_am_color_17eb">#000017eb</color>
+    <color name="i_am_color_17ec">#000017ec</color>
+    <color name="i_am_color_17ed">#000017ed</color>
+    <color name="i_am_color_17ee">#000017ee</color>
+    <color name="i_am_color_17ef">#000017ef</color>
+    <color name="i_am_color_17f0">#000017f0</color>
+    <color name="i_am_color_17f1">#000017f1</color>
+    <color name="i_am_color_17f2">#000017f2</color>
+    <color name="i_am_color_17f3">#000017f3</color>
+    <color name="i_am_color_17f4">#000017f4</color>
+    <color name="i_am_color_17f5">#000017f5</color>
+    <color name="i_am_color_17f6">#000017f6</color>
+    <color name="i_am_color_17f7">#000017f7</color>
+    <color name="i_am_color_17f8">#000017f8</color>
+    <color name="i_am_color_17f9">#000017f9</color>
+    <color name="i_am_color_17fa">#000017fa</color>
+    <color name="i_am_color_17fb">#000017fb</color>
+    <color name="i_am_color_17fc">#000017fc</color>
+    <color name="i_am_color_17fd">#000017fd</color>
+    <color name="i_am_color_17fe">#000017fe</color>
+    <color name="i_am_color_17ff">#000017ff</color>
+    <color name="i_am_color_1800">#00001800</color>
+    <color name="i_am_color_1801">#00001801</color>
+    <color name="i_am_color_1802">#00001802</color>
+    <color name="i_am_color_1803">#00001803</color>
+    <color name="i_am_color_1804">#00001804</color>
+    <color name="i_am_color_1805">#00001805</color>
+    <color name="i_am_color_1806">#00001806</color>
+    <color name="i_am_color_1807">#00001807</color>
+    <color name="i_am_color_1808">#00001808</color>
+    <color name="i_am_color_1809">#00001809</color>
+    <color name="i_am_color_180a">#0000180a</color>
+    <color name="i_am_color_180b">#0000180b</color>
+    <color name="i_am_color_180c">#0000180c</color>
+    <color name="i_am_color_180d">#0000180d</color>
+    <color name="i_am_color_180e">#0000180e</color>
+    <color name="i_am_color_180f">#0000180f</color>
+    <color name="i_am_color_1810">#00001810</color>
+    <color name="i_am_color_1811">#00001811</color>
+    <color name="i_am_color_1812">#00001812</color>
+    <color name="i_am_color_1813">#00001813</color>
+    <color name="i_am_color_1814">#00001814</color>
+    <color name="i_am_color_1815">#00001815</color>
+    <color name="i_am_color_1816">#00001816</color>
+    <color name="i_am_color_1817">#00001817</color>
+    <color name="i_am_color_1818">#00001818</color>
+    <color name="i_am_color_1819">#00001819</color>
+    <color name="i_am_color_181a">#0000181a</color>
+    <color name="i_am_color_181b">#0000181b</color>
+    <color name="i_am_color_181c">#0000181c</color>
+    <color name="i_am_color_181d">#0000181d</color>
+    <color name="i_am_color_181e">#0000181e</color>
+    <color name="i_am_color_181f">#0000181f</color>
+    <color name="i_am_color_1820">#00001820</color>
+    <color name="i_am_color_1821">#00001821</color>
+    <color name="i_am_color_1822">#00001822</color>
+    <color name="i_am_color_1823">#00001823</color>
+    <color name="i_am_color_1824">#00001824</color>
+    <color name="i_am_color_1825">#00001825</color>
+    <color name="i_am_color_1826">#00001826</color>
+    <color name="i_am_color_1827">#00001827</color>
+    <color name="i_am_color_1828">#00001828</color>
+    <color name="i_am_color_1829">#00001829</color>
+    <color name="i_am_color_182a">#0000182a</color>
+    <color name="i_am_color_182b">#0000182b</color>
+    <color name="i_am_color_182c">#0000182c</color>
+    <color name="i_am_color_182d">#0000182d</color>
+    <color name="i_am_color_182e">#0000182e</color>
+    <color name="i_am_color_182f">#0000182f</color>
+    <color name="i_am_color_1830">#00001830</color>
+    <color name="i_am_color_1831">#00001831</color>
+    <color name="i_am_color_1832">#00001832</color>
+    <color name="i_am_color_1833">#00001833</color>
+    <color name="i_am_color_1834">#00001834</color>
+    <color name="i_am_color_1835">#00001835</color>
+    <color name="i_am_color_1836">#00001836</color>
+    <color name="i_am_color_1837">#00001837</color>
+    <color name="i_am_color_1838">#00001838</color>
+    <color name="i_am_color_1839">#00001839</color>
+    <color name="i_am_color_183a">#0000183a</color>
+    <color name="i_am_color_183b">#0000183b</color>
+    <color name="i_am_color_183c">#0000183c</color>
+    <color name="i_am_color_183d">#0000183d</color>
+    <color name="i_am_color_183e">#0000183e</color>
+    <color name="i_am_color_183f">#0000183f</color>
+    <color name="i_am_color_1840">#00001840</color>
+    <color name="i_am_color_1841">#00001841</color>
+    <color name="i_am_color_1842">#00001842</color>
+    <color name="i_am_color_1843">#00001843</color>
+    <color name="i_am_color_1844">#00001844</color>
+    <color name="i_am_color_1845">#00001845</color>
+    <color name="i_am_color_1846">#00001846</color>
+    <color name="i_am_color_1847">#00001847</color>
+    <color name="i_am_color_1848">#00001848</color>
+    <color name="i_am_color_1849">#00001849</color>
+    <color name="i_am_color_184a">#0000184a</color>
+    <color name="i_am_color_184b">#0000184b</color>
+    <color name="i_am_color_184c">#0000184c</color>
+    <color name="i_am_color_184d">#0000184d</color>
+    <color name="i_am_color_184e">#0000184e</color>
+    <color name="i_am_color_184f">#0000184f</color>
+    <color name="i_am_color_1850">#00001850</color>
+    <color name="i_am_color_1851">#00001851</color>
+    <color name="i_am_color_1852">#00001852</color>
+    <color name="i_am_color_1853">#00001853</color>
+    <color name="i_am_color_1854">#00001854</color>
+    <color name="i_am_color_1855">#00001855</color>
+    <color name="i_am_color_1856">#00001856</color>
+    <color name="i_am_color_1857">#00001857</color>
+    <color name="i_am_color_1858">#00001858</color>
+    <color name="i_am_color_1859">#00001859</color>
+    <color name="i_am_color_185a">#0000185a</color>
+    <color name="i_am_color_185b">#0000185b</color>
+    <color name="i_am_color_185c">#0000185c</color>
+    <color name="i_am_color_185d">#0000185d</color>
+    <color name="i_am_color_185e">#0000185e</color>
+    <color name="i_am_color_185f">#0000185f</color>
+    <color name="i_am_color_1860">#00001860</color>
+    <color name="i_am_color_1861">#00001861</color>
+    <color name="i_am_color_1862">#00001862</color>
+    <color name="i_am_color_1863">#00001863</color>
+    <color name="i_am_color_1864">#00001864</color>
+    <color name="i_am_color_1865">#00001865</color>
+    <color name="i_am_color_1866">#00001866</color>
+    <color name="i_am_color_1867">#00001867</color>
+    <color name="i_am_color_1868">#00001868</color>
+    <color name="i_am_color_1869">#00001869</color>
+    <color name="i_am_color_186a">#0000186a</color>
+    <color name="i_am_color_186b">#0000186b</color>
+    <color name="i_am_color_186c">#0000186c</color>
+    <color name="i_am_color_186d">#0000186d</color>
+    <color name="i_am_color_186e">#0000186e</color>
+    <color name="i_am_color_186f">#0000186f</color>
+    <color name="i_am_color_1870">#00001870</color>
+    <color name="i_am_color_1871">#00001871</color>
+    <color name="i_am_color_1872">#00001872</color>
+    <color name="i_am_color_1873">#00001873</color>
+    <color name="i_am_color_1874">#00001874</color>
+    <color name="i_am_color_1875">#00001875</color>
+    <color name="i_am_color_1876">#00001876</color>
+    <color name="i_am_color_1877">#00001877</color>
+    <color name="i_am_color_1878">#00001878</color>
+    <color name="i_am_color_1879">#00001879</color>
+    <color name="i_am_color_187a">#0000187a</color>
+    <color name="i_am_color_187b">#0000187b</color>
+    <color name="i_am_color_187c">#0000187c</color>
+    <color name="i_am_color_187d">#0000187d</color>
+    <color name="i_am_color_187e">#0000187e</color>
+    <color name="i_am_color_187f">#0000187f</color>
+    <color name="i_am_color_1880">#00001880</color>
+    <color name="i_am_color_1881">#00001881</color>
+    <color name="i_am_color_1882">#00001882</color>
+    <color name="i_am_color_1883">#00001883</color>
+    <color name="i_am_color_1884">#00001884</color>
+    <color name="i_am_color_1885">#00001885</color>
+    <color name="i_am_color_1886">#00001886</color>
+    <color name="i_am_color_1887">#00001887</color>
+    <color name="i_am_color_1888">#00001888</color>
+    <color name="i_am_color_1889">#00001889</color>
+    <color name="i_am_color_188a">#0000188a</color>
+    <color name="i_am_color_188b">#0000188b</color>
+    <color name="i_am_color_188c">#0000188c</color>
+    <color name="i_am_color_188d">#0000188d</color>
+    <color name="i_am_color_188e">#0000188e</color>
+    <color name="i_am_color_188f">#0000188f</color>
+    <color name="i_am_color_1890">#00001890</color>
+    <color name="i_am_color_1891">#00001891</color>
+    <color name="i_am_color_1892">#00001892</color>
+    <color name="i_am_color_1893">#00001893</color>
+    <color name="i_am_color_1894">#00001894</color>
+    <color name="i_am_color_1895">#00001895</color>
+    <color name="i_am_color_1896">#00001896</color>
+    <color name="i_am_color_1897">#00001897</color>
+    <color name="i_am_color_1898">#00001898</color>
+    <color name="i_am_color_1899">#00001899</color>
+    <color name="i_am_color_189a">#0000189a</color>
+    <color name="i_am_color_189b">#0000189b</color>
+    <color name="i_am_color_189c">#0000189c</color>
+    <color name="i_am_color_189d">#0000189d</color>
+    <color name="i_am_color_189e">#0000189e</color>
+    <color name="i_am_color_189f">#0000189f</color>
+    <color name="i_am_color_18a0">#000018a0</color>
+    <color name="i_am_color_18a1">#000018a1</color>
+    <color name="i_am_color_18a2">#000018a2</color>
+    <color name="i_am_color_18a3">#000018a3</color>
+    <color name="i_am_color_18a4">#000018a4</color>
+    <color name="i_am_color_18a5">#000018a5</color>
+    <color name="i_am_color_18a6">#000018a6</color>
+    <color name="i_am_color_18a7">#000018a7</color>
+    <color name="i_am_color_18a8">#000018a8</color>
+    <color name="i_am_color_18a9">#000018a9</color>
+    <color name="i_am_color_18aa">#000018aa</color>
+    <color name="i_am_color_18ab">#000018ab</color>
+    <color name="i_am_color_18ac">#000018ac</color>
+    <color name="i_am_color_18ad">#000018ad</color>
+    <color name="i_am_color_18ae">#000018ae</color>
+    <color name="i_am_color_18af">#000018af</color>
+    <color name="i_am_color_18b0">#000018b0</color>
+    <color name="i_am_color_18b1">#000018b1</color>
+    <color name="i_am_color_18b2">#000018b2</color>
+    <color name="i_am_color_18b3">#000018b3</color>
+    <color name="i_am_color_18b4">#000018b4</color>
+    <color name="i_am_color_18b5">#000018b5</color>
+    <color name="i_am_color_18b6">#000018b6</color>
+    <color name="i_am_color_18b7">#000018b7</color>
+    <color name="i_am_color_18b8">#000018b8</color>
+    <color name="i_am_color_18b9">#000018b9</color>
+    <color name="i_am_color_18ba">#000018ba</color>
+    <color name="i_am_color_18bb">#000018bb</color>
+    <color name="i_am_color_18bc">#000018bc</color>
+    <color name="i_am_color_18bd">#000018bd</color>
+    <color name="i_am_color_18be">#000018be</color>
+    <color name="i_am_color_18bf">#000018bf</color>
+    <color name="i_am_color_18c0">#000018c0</color>
+    <color name="i_am_color_18c1">#000018c1</color>
+    <color name="i_am_color_18c2">#000018c2</color>
+    <color name="i_am_color_18c3">#000018c3</color>
+    <color name="i_am_color_18c4">#000018c4</color>
+    <color name="i_am_color_18c5">#000018c5</color>
+    <color name="i_am_color_18c6">#000018c6</color>
+    <color name="i_am_color_18c7">#000018c7</color>
+    <color name="i_am_color_18c8">#000018c8</color>
+    <color name="i_am_color_18c9">#000018c9</color>
+    <color name="i_am_color_18ca">#000018ca</color>
+    <color name="i_am_color_18cb">#000018cb</color>
+    <color name="i_am_color_18cc">#000018cc</color>
+    <color name="i_am_color_18cd">#000018cd</color>
+    <color name="i_am_color_18ce">#000018ce</color>
+    <color name="i_am_color_18cf">#000018cf</color>
+    <color name="i_am_color_18d0">#000018d0</color>
+    <color name="i_am_color_18d1">#000018d1</color>
+    <color name="i_am_color_18d2">#000018d2</color>
+    <color name="i_am_color_18d3">#000018d3</color>
+    <color name="i_am_color_18d4">#000018d4</color>
+    <color name="i_am_color_18d5">#000018d5</color>
+    <color name="i_am_color_18d6">#000018d6</color>
+    <color name="i_am_color_18d7">#000018d7</color>
+    <color name="i_am_color_18d8">#000018d8</color>
+    <color name="i_am_color_18d9">#000018d9</color>
+    <color name="i_am_color_18da">#000018da</color>
+    <color name="i_am_color_18db">#000018db</color>
+    <color name="i_am_color_18dc">#000018dc</color>
+    <color name="i_am_color_18dd">#000018dd</color>
+    <color name="i_am_color_18de">#000018de</color>
+    <color name="i_am_color_18df">#000018df</color>
+    <color name="i_am_color_18e0">#000018e0</color>
+    <color name="i_am_color_18e1">#000018e1</color>
+    <color name="i_am_color_18e2">#000018e2</color>
+    <color name="i_am_color_18e3">#000018e3</color>
+    <color name="i_am_color_18e4">#000018e4</color>
+    <color name="i_am_color_18e5">#000018e5</color>
+    <color name="i_am_color_18e6">#000018e6</color>
+    <color name="i_am_color_18e7">#000018e7</color>
+    <color name="i_am_color_18e8">#000018e8</color>
+    <color name="i_am_color_18e9">#000018e9</color>
+    <color name="i_am_color_18ea">#000018ea</color>
+    <color name="i_am_color_18eb">#000018eb</color>
+    <color name="i_am_color_18ec">#000018ec</color>
+    <color name="i_am_color_18ed">#000018ed</color>
+    <color name="i_am_color_18ee">#000018ee</color>
+    <color name="i_am_color_18ef">#000018ef</color>
+    <color name="i_am_color_18f0">#000018f0</color>
+    <color name="i_am_color_18f1">#000018f1</color>
+    <color name="i_am_color_18f2">#000018f2</color>
+    <color name="i_am_color_18f3">#000018f3</color>
+    <color name="i_am_color_18f4">#000018f4</color>
+    <color name="i_am_color_18f5">#000018f5</color>
+    <color name="i_am_color_18f6">#000018f6</color>
+    <color name="i_am_color_18f7">#000018f7</color>
+    <color name="i_am_color_18f8">#000018f8</color>
+    <color name="i_am_color_18f9">#000018f9</color>
+    <color name="i_am_color_18fa">#000018fa</color>
+    <color name="i_am_color_18fb">#000018fb</color>
+    <color name="i_am_color_18fc">#000018fc</color>
+    <color name="i_am_color_18fd">#000018fd</color>
+    <color name="i_am_color_18fe">#000018fe</color>
+    <color name="i_am_color_18ff">#000018ff</color>
+    <color name="i_am_color_1900">#00001900</color>
+    <color name="i_am_color_1901">#00001901</color>
+    <color name="i_am_color_1902">#00001902</color>
+    <color name="i_am_color_1903">#00001903</color>
+    <color name="i_am_color_1904">#00001904</color>
+    <color name="i_am_color_1905">#00001905</color>
+    <color name="i_am_color_1906">#00001906</color>
+    <color name="i_am_color_1907">#00001907</color>
+    <color name="i_am_color_1908">#00001908</color>
+    <color name="i_am_color_1909">#00001909</color>
+    <color name="i_am_color_190a">#0000190a</color>
+    <color name="i_am_color_190b">#0000190b</color>
+    <color name="i_am_color_190c">#0000190c</color>
+    <color name="i_am_color_190d">#0000190d</color>
+    <color name="i_am_color_190e">#0000190e</color>
+    <color name="i_am_color_190f">#0000190f</color>
+    <color name="i_am_color_1910">#00001910</color>
+    <color name="i_am_color_1911">#00001911</color>
+    <color name="i_am_color_1912">#00001912</color>
+    <color name="i_am_color_1913">#00001913</color>
+    <color name="i_am_color_1914">#00001914</color>
+    <color name="i_am_color_1915">#00001915</color>
+    <color name="i_am_color_1916">#00001916</color>
+    <color name="i_am_color_1917">#00001917</color>
+    <color name="i_am_color_1918">#00001918</color>
+    <color name="i_am_color_1919">#00001919</color>
+    <color name="i_am_color_191a">#0000191a</color>
+    <color name="i_am_color_191b">#0000191b</color>
+    <color name="i_am_color_191c">#0000191c</color>
+    <color name="i_am_color_191d">#0000191d</color>
+    <color name="i_am_color_191e">#0000191e</color>
+    <color name="i_am_color_191f">#0000191f</color>
+    <color name="i_am_color_1920">#00001920</color>
+    <color name="i_am_color_1921">#00001921</color>
+    <color name="i_am_color_1922">#00001922</color>
+    <color name="i_am_color_1923">#00001923</color>
+    <color name="i_am_color_1924">#00001924</color>
+    <color name="i_am_color_1925">#00001925</color>
+    <color name="i_am_color_1926">#00001926</color>
+    <color name="i_am_color_1927">#00001927</color>
+    <color name="i_am_color_1928">#00001928</color>
+    <color name="i_am_color_1929">#00001929</color>
+    <color name="i_am_color_192a">#0000192a</color>
+    <color name="i_am_color_192b">#0000192b</color>
+    <color name="i_am_color_192c">#0000192c</color>
+    <color name="i_am_color_192d">#0000192d</color>
+    <color name="i_am_color_192e">#0000192e</color>
+    <color name="i_am_color_192f">#0000192f</color>
+    <color name="i_am_color_1930">#00001930</color>
+    <color name="i_am_color_1931">#00001931</color>
+    <color name="i_am_color_1932">#00001932</color>
+    <color name="i_am_color_1933">#00001933</color>
+    <color name="i_am_color_1934">#00001934</color>
+    <color name="i_am_color_1935">#00001935</color>
+    <color name="i_am_color_1936">#00001936</color>
+    <color name="i_am_color_1937">#00001937</color>
+    <color name="i_am_color_1938">#00001938</color>
+    <color name="i_am_color_1939">#00001939</color>
+    <color name="i_am_color_193a">#0000193a</color>
+    <color name="i_am_color_193b">#0000193b</color>
+    <color name="i_am_color_193c">#0000193c</color>
+    <color name="i_am_color_193d">#0000193d</color>
+    <color name="i_am_color_193e">#0000193e</color>
+    <color name="i_am_color_193f">#0000193f</color>
+    <color name="i_am_color_1940">#00001940</color>
+    <color name="i_am_color_1941">#00001941</color>
+    <color name="i_am_color_1942">#00001942</color>
+    <color name="i_am_color_1943">#00001943</color>
+    <color name="i_am_color_1944">#00001944</color>
+    <color name="i_am_color_1945">#00001945</color>
+    <color name="i_am_color_1946">#00001946</color>
+    <color name="i_am_color_1947">#00001947</color>
+    <color name="i_am_color_1948">#00001948</color>
+    <color name="i_am_color_1949">#00001949</color>
+    <color name="i_am_color_194a">#0000194a</color>
+    <color name="i_am_color_194b">#0000194b</color>
+    <color name="i_am_color_194c">#0000194c</color>
+    <color name="i_am_color_194d">#0000194d</color>
+    <color name="i_am_color_194e">#0000194e</color>
+    <color name="i_am_color_194f">#0000194f</color>
+    <color name="i_am_color_1950">#00001950</color>
+    <color name="i_am_color_1951">#00001951</color>
+    <color name="i_am_color_1952">#00001952</color>
+    <color name="i_am_color_1953">#00001953</color>
+    <color name="i_am_color_1954">#00001954</color>
+    <color name="i_am_color_1955">#00001955</color>
+    <color name="i_am_color_1956">#00001956</color>
+    <color name="i_am_color_1957">#00001957</color>
+    <color name="i_am_color_1958">#00001958</color>
+    <color name="i_am_color_1959">#00001959</color>
+    <color name="i_am_color_195a">#0000195a</color>
+    <color name="i_am_color_195b">#0000195b</color>
+    <color name="i_am_color_195c">#0000195c</color>
+    <color name="i_am_color_195d">#0000195d</color>
+    <color name="i_am_color_195e">#0000195e</color>
+    <color name="i_am_color_195f">#0000195f</color>
+    <color name="i_am_color_1960">#00001960</color>
+    <color name="i_am_color_1961">#00001961</color>
+    <color name="i_am_color_1962">#00001962</color>
+    <color name="i_am_color_1963">#00001963</color>
+    <color name="i_am_color_1964">#00001964</color>
+    <color name="i_am_color_1965">#00001965</color>
+    <color name="i_am_color_1966">#00001966</color>
+    <color name="i_am_color_1967">#00001967</color>
+    <color name="i_am_color_1968">#00001968</color>
+    <color name="i_am_color_1969">#00001969</color>
+    <color name="i_am_color_196a">#0000196a</color>
+    <color name="i_am_color_196b">#0000196b</color>
+    <color name="i_am_color_196c">#0000196c</color>
+    <color name="i_am_color_196d">#0000196d</color>
+    <color name="i_am_color_196e">#0000196e</color>
+    <color name="i_am_color_196f">#0000196f</color>
+    <color name="i_am_color_1970">#00001970</color>
+    <color name="i_am_color_1971">#00001971</color>
+    <color name="i_am_color_1972">#00001972</color>
+    <color name="i_am_color_1973">#00001973</color>
+    <color name="i_am_color_1974">#00001974</color>
+    <color name="i_am_color_1975">#00001975</color>
+    <color name="i_am_color_1976">#00001976</color>
+    <color name="i_am_color_1977">#00001977</color>
+    <color name="i_am_color_1978">#00001978</color>
+    <color name="i_am_color_1979">#00001979</color>
+    <color name="i_am_color_197a">#0000197a</color>
+    <color name="i_am_color_197b">#0000197b</color>
+    <color name="i_am_color_197c">#0000197c</color>
+    <color name="i_am_color_197d">#0000197d</color>
+    <color name="i_am_color_197e">#0000197e</color>
+    <color name="i_am_color_197f">#0000197f</color>
+    <color name="i_am_color_1980">#00001980</color>
+    <color name="i_am_color_1981">#00001981</color>
+    <color name="i_am_color_1982">#00001982</color>
+    <color name="i_am_color_1983">#00001983</color>
+    <color name="i_am_color_1984">#00001984</color>
+    <color name="i_am_color_1985">#00001985</color>
+    <color name="i_am_color_1986">#00001986</color>
+    <color name="i_am_color_1987">#00001987</color>
+    <color name="i_am_color_1988">#00001988</color>
+    <color name="i_am_color_1989">#00001989</color>
+    <color name="i_am_color_198a">#0000198a</color>
+    <color name="i_am_color_198b">#0000198b</color>
+    <color name="i_am_color_198c">#0000198c</color>
+    <color name="i_am_color_198d">#0000198d</color>
+    <color name="i_am_color_198e">#0000198e</color>
+    <color name="i_am_color_198f">#0000198f</color>
+    <color name="i_am_color_1990">#00001990</color>
+    <color name="i_am_color_1991">#00001991</color>
+    <color name="i_am_color_1992">#00001992</color>
+    <color name="i_am_color_1993">#00001993</color>
+    <color name="i_am_color_1994">#00001994</color>
+    <color name="i_am_color_1995">#00001995</color>
+    <color name="i_am_color_1996">#00001996</color>
+    <color name="i_am_color_1997">#00001997</color>
+    <color name="i_am_color_1998">#00001998</color>
+    <color name="i_am_color_1999">#00001999</color>
+    <color name="i_am_color_199a">#0000199a</color>
+    <color name="i_am_color_199b">#0000199b</color>
+    <color name="i_am_color_199c">#0000199c</color>
+    <color name="i_am_color_199d">#0000199d</color>
+    <color name="i_am_color_199e">#0000199e</color>
+    <color name="i_am_color_199f">#0000199f</color>
+    <color name="i_am_color_19a0">#000019a0</color>
+    <color name="i_am_color_19a1">#000019a1</color>
+    <color name="i_am_color_19a2">#000019a2</color>
+    <color name="i_am_color_19a3">#000019a3</color>
+    <color name="i_am_color_19a4">#000019a4</color>
+    <color name="i_am_color_19a5">#000019a5</color>
+    <color name="i_am_color_19a6">#000019a6</color>
+    <color name="i_am_color_19a7">#000019a7</color>
+    <color name="i_am_color_19a8">#000019a8</color>
+    <color name="i_am_color_19a9">#000019a9</color>
+    <color name="i_am_color_19aa">#000019aa</color>
+    <color name="i_am_color_19ab">#000019ab</color>
+    <color name="i_am_color_19ac">#000019ac</color>
+    <color name="i_am_color_19ad">#000019ad</color>
+    <color name="i_am_color_19ae">#000019ae</color>
+    <color name="i_am_color_19af">#000019af</color>
+    <color name="i_am_color_19b0">#000019b0</color>
+    <color name="i_am_color_19b1">#000019b1</color>
+    <color name="i_am_color_19b2">#000019b2</color>
+    <color name="i_am_color_19b3">#000019b3</color>
+    <color name="i_am_color_19b4">#000019b4</color>
+    <color name="i_am_color_19b5">#000019b5</color>
+    <color name="i_am_color_19b6">#000019b6</color>
+    <color name="i_am_color_19b7">#000019b7</color>
+    <color name="i_am_color_19b8">#000019b8</color>
+    <color name="i_am_color_19b9">#000019b9</color>
+    <color name="i_am_color_19ba">#000019ba</color>
+    <color name="i_am_color_19bb">#000019bb</color>
+    <color name="i_am_color_19bc">#000019bc</color>
+    <color name="i_am_color_19bd">#000019bd</color>
+    <color name="i_am_color_19be">#000019be</color>
+    <color name="i_am_color_19bf">#000019bf</color>
+    <color name="i_am_color_19c0">#000019c0</color>
+    <color name="i_am_color_19c1">#000019c1</color>
+    <color name="i_am_color_19c2">#000019c2</color>
+    <color name="i_am_color_19c3">#000019c3</color>
+    <color name="i_am_color_19c4">#000019c4</color>
+    <color name="i_am_color_19c5">#000019c5</color>
+    <color name="i_am_color_19c6">#000019c6</color>
+    <color name="i_am_color_19c7">#000019c7</color>
+    <color name="i_am_color_19c8">#000019c8</color>
+    <color name="i_am_color_19c9">#000019c9</color>
+    <color name="i_am_color_19ca">#000019ca</color>
+    <color name="i_am_color_19cb">#000019cb</color>
+    <color name="i_am_color_19cc">#000019cc</color>
+    <color name="i_am_color_19cd">#000019cd</color>
+    <color name="i_am_color_19ce">#000019ce</color>
+    <color name="i_am_color_19cf">#000019cf</color>
+    <color name="i_am_color_19d0">#000019d0</color>
+    <color name="i_am_color_19d1">#000019d1</color>
+    <color name="i_am_color_19d2">#000019d2</color>
+    <color name="i_am_color_19d3">#000019d3</color>
+    <color name="i_am_color_19d4">#000019d4</color>
+    <color name="i_am_color_19d5">#000019d5</color>
+    <color name="i_am_color_19d6">#000019d6</color>
+    <color name="i_am_color_19d7">#000019d7</color>
+    <color name="i_am_color_19d8">#000019d8</color>
+    <color name="i_am_color_19d9">#000019d9</color>
+    <color name="i_am_color_19da">#000019da</color>
+    <color name="i_am_color_19db">#000019db</color>
+    <color name="i_am_color_19dc">#000019dc</color>
+    <color name="i_am_color_19dd">#000019dd</color>
+    <color name="i_am_color_19de">#000019de</color>
+    <color name="i_am_color_19df">#000019df</color>
+    <color name="i_am_color_19e0">#000019e0</color>
+    <color name="i_am_color_19e1">#000019e1</color>
+    <color name="i_am_color_19e2">#000019e2</color>
+    <color name="i_am_color_19e3">#000019e3</color>
+    <color name="i_am_color_19e4">#000019e4</color>
+    <color name="i_am_color_19e5">#000019e5</color>
+    <color name="i_am_color_19e6">#000019e6</color>
+    <color name="i_am_color_19e7">#000019e7</color>
+    <color name="i_am_color_19e8">#000019e8</color>
+    <color name="i_am_color_19e9">#000019e9</color>
+    <color name="i_am_color_19ea">#000019ea</color>
+    <color name="i_am_color_19eb">#000019eb</color>
+    <color name="i_am_color_19ec">#000019ec</color>
+    <color name="i_am_color_19ed">#000019ed</color>
+    <color name="i_am_color_19ee">#000019ee</color>
+    <color name="i_am_color_19ef">#000019ef</color>
+    <color name="i_am_color_19f0">#000019f0</color>
+    <color name="i_am_color_19f1">#000019f1</color>
+    <color name="i_am_color_19f2">#000019f2</color>
+    <color name="i_am_color_19f3">#000019f3</color>
+    <color name="i_am_color_19f4">#000019f4</color>
+    <color name="i_am_color_19f5">#000019f5</color>
+    <color name="i_am_color_19f6">#000019f6</color>
+    <color name="i_am_color_19f7">#000019f7</color>
+    <color name="i_am_color_19f8">#000019f8</color>
+    <color name="i_am_color_19f9">#000019f9</color>
+    <color name="i_am_color_19fa">#000019fa</color>
+    <color name="i_am_color_19fb">#000019fb</color>
+    <color name="i_am_color_19fc">#000019fc</color>
+    <color name="i_am_color_19fd">#000019fd</color>
+    <color name="i_am_color_19fe">#000019fe</color>
+    <color name="i_am_color_19ff">#000019ff</color>
+    <color name="i_am_color_1a00">#00001a00</color>
+    <color name="i_am_color_1a01">#00001a01</color>
+    <color name="i_am_color_1a02">#00001a02</color>
+    <color name="i_am_color_1a03">#00001a03</color>
+    <color name="i_am_color_1a04">#00001a04</color>
+    <color name="i_am_color_1a05">#00001a05</color>
+    <color name="i_am_color_1a06">#00001a06</color>
+    <color name="i_am_color_1a07">#00001a07</color>
+    <color name="i_am_color_1a08">#00001a08</color>
+    <color name="i_am_color_1a09">#00001a09</color>
+    <color name="i_am_color_1a0a">#00001a0a</color>
+    <color name="i_am_color_1a0b">#00001a0b</color>
+    <color name="i_am_color_1a0c">#00001a0c</color>
+    <color name="i_am_color_1a0d">#00001a0d</color>
+    <color name="i_am_color_1a0e">#00001a0e</color>
+    <color name="i_am_color_1a0f">#00001a0f</color>
+    <color name="i_am_color_1a10">#00001a10</color>
+    <color name="i_am_color_1a11">#00001a11</color>
+    <color name="i_am_color_1a12">#00001a12</color>
+    <color name="i_am_color_1a13">#00001a13</color>
+    <color name="i_am_color_1a14">#00001a14</color>
+    <color name="i_am_color_1a15">#00001a15</color>
+    <color name="i_am_color_1a16">#00001a16</color>
+    <color name="i_am_color_1a17">#00001a17</color>
+    <color name="i_am_color_1a18">#00001a18</color>
+    <color name="i_am_color_1a19">#00001a19</color>
+    <color name="i_am_color_1a1a">#00001a1a</color>
+    <color name="i_am_color_1a1b">#00001a1b</color>
+    <color name="i_am_color_1a1c">#00001a1c</color>
+    <color name="i_am_color_1a1d">#00001a1d</color>
+    <color name="i_am_color_1a1e">#00001a1e</color>
+    <color name="i_am_color_1a1f">#00001a1f</color>
+    <color name="i_am_color_1a20">#00001a20</color>
+    <color name="i_am_color_1a21">#00001a21</color>
+    <color name="i_am_color_1a22">#00001a22</color>
+    <color name="i_am_color_1a23">#00001a23</color>
+    <color name="i_am_color_1a24">#00001a24</color>
+    <color name="i_am_color_1a25">#00001a25</color>
+    <color name="i_am_color_1a26">#00001a26</color>
+    <color name="i_am_color_1a27">#00001a27</color>
+    <color name="i_am_color_1a28">#00001a28</color>
+    <color name="i_am_color_1a29">#00001a29</color>
+    <color name="i_am_color_1a2a">#00001a2a</color>
+    <color name="i_am_color_1a2b">#00001a2b</color>
+    <color name="i_am_color_1a2c">#00001a2c</color>
+    <color name="i_am_color_1a2d">#00001a2d</color>
+    <color name="i_am_color_1a2e">#00001a2e</color>
+    <color name="i_am_color_1a2f">#00001a2f</color>
+    <color name="i_am_color_1a30">#00001a30</color>
+    <color name="i_am_color_1a31">#00001a31</color>
+    <color name="i_am_color_1a32">#00001a32</color>
+    <color name="i_am_color_1a33">#00001a33</color>
+    <color name="i_am_color_1a34">#00001a34</color>
+    <color name="i_am_color_1a35">#00001a35</color>
+    <color name="i_am_color_1a36">#00001a36</color>
+    <color name="i_am_color_1a37">#00001a37</color>
+    <color name="i_am_color_1a38">#00001a38</color>
+    <color name="i_am_color_1a39">#00001a39</color>
+    <color name="i_am_color_1a3a">#00001a3a</color>
+    <color name="i_am_color_1a3b">#00001a3b</color>
+    <color name="i_am_color_1a3c">#00001a3c</color>
+    <color name="i_am_color_1a3d">#00001a3d</color>
+    <color name="i_am_color_1a3e">#00001a3e</color>
+    <color name="i_am_color_1a3f">#00001a3f</color>
+    <color name="i_am_color_1a40">#00001a40</color>
+    <color name="i_am_color_1a41">#00001a41</color>
+    <color name="i_am_color_1a42">#00001a42</color>
+    <color name="i_am_color_1a43">#00001a43</color>
+    <color name="i_am_color_1a44">#00001a44</color>
+    <color name="i_am_color_1a45">#00001a45</color>
+    <color name="i_am_color_1a46">#00001a46</color>
+    <color name="i_am_color_1a47">#00001a47</color>
+    <color name="i_am_color_1a48">#00001a48</color>
+    <color name="i_am_color_1a49">#00001a49</color>
+    <color name="i_am_color_1a4a">#00001a4a</color>
+    <color name="i_am_color_1a4b">#00001a4b</color>
+    <color name="i_am_color_1a4c">#00001a4c</color>
+    <color name="i_am_color_1a4d">#00001a4d</color>
+    <color name="i_am_color_1a4e">#00001a4e</color>
+    <color name="i_am_color_1a4f">#00001a4f</color>
+    <color name="i_am_color_1a50">#00001a50</color>
+    <color name="i_am_color_1a51">#00001a51</color>
+    <color name="i_am_color_1a52">#00001a52</color>
+    <color name="i_am_color_1a53">#00001a53</color>
+    <color name="i_am_color_1a54">#00001a54</color>
+    <color name="i_am_color_1a55">#00001a55</color>
+    <color name="i_am_color_1a56">#00001a56</color>
+    <color name="i_am_color_1a57">#00001a57</color>
+    <color name="i_am_color_1a58">#00001a58</color>
+    <color name="i_am_color_1a59">#00001a59</color>
+    <color name="i_am_color_1a5a">#00001a5a</color>
+    <color name="i_am_color_1a5b">#00001a5b</color>
+    <color name="i_am_color_1a5c">#00001a5c</color>
+    <color name="i_am_color_1a5d">#00001a5d</color>
+    <color name="i_am_color_1a5e">#00001a5e</color>
+    <color name="i_am_color_1a5f">#00001a5f</color>
+    <color name="i_am_color_1a60">#00001a60</color>
+    <color name="i_am_color_1a61">#00001a61</color>
+    <color name="i_am_color_1a62">#00001a62</color>
+    <color name="i_am_color_1a63">#00001a63</color>
+    <color name="i_am_color_1a64">#00001a64</color>
+    <color name="i_am_color_1a65">#00001a65</color>
+    <color name="i_am_color_1a66">#00001a66</color>
+    <color name="i_am_color_1a67">#00001a67</color>
+    <color name="i_am_color_1a68">#00001a68</color>
+    <color name="i_am_color_1a69">#00001a69</color>
+    <color name="i_am_color_1a6a">#00001a6a</color>
+    <color name="i_am_color_1a6b">#00001a6b</color>
+    <color name="i_am_color_1a6c">#00001a6c</color>
+    <color name="i_am_color_1a6d">#00001a6d</color>
+    <color name="i_am_color_1a6e">#00001a6e</color>
+    <color name="i_am_color_1a6f">#00001a6f</color>
+    <color name="i_am_color_1a70">#00001a70</color>
+    <color name="i_am_color_1a71">#00001a71</color>
+    <color name="i_am_color_1a72">#00001a72</color>
+    <color name="i_am_color_1a73">#00001a73</color>
+    <color name="i_am_color_1a74">#00001a74</color>
+    <color name="i_am_color_1a75">#00001a75</color>
+    <color name="i_am_color_1a76">#00001a76</color>
+    <color name="i_am_color_1a77">#00001a77</color>
+    <color name="i_am_color_1a78">#00001a78</color>
+    <color name="i_am_color_1a79">#00001a79</color>
+    <color name="i_am_color_1a7a">#00001a7a</color>
+    <color name="i_am_color_1a7b">#00001a7b</color>
+    <color name="i_am_color_1a7c">#00001a7c</color>
+    <color name="i_am_color_1a7d">#00001a7d</color>
+    <color name="i_am_color_1a7e">#00001a7e</color>
+    <color name="i_am_color_1a7f">#00001a7f</color>
+    <color name="i_am_color_1a80">#00001a80</color>
+    <color name="i_am_color_1a81">#00001a81</color>
+    <color name="i_am_color_1a82">#00001a82</color>
+    <color name="i_am_color_1a83">#00001a83</color>
+    <color name="i_am_color_1a84">#00001a84</color>
+    <color name="i_am_color_1a85">#00001a85</color>
+    <color name="i_am_color_1a86">#00001a86</color>
+    <color name="i_am_color_1a87">#00001a87</color>
+    <color name="i_am_color_1a88">#00001a88</color>
+    <color name="i_am_color_1a89">#00001a89</color>
+    <color name="i_am_color_1a8a">#00001a8a</color>
+    <color name="i_am_color_1a8b">#00001a8b</color>
+    <color name="i_am_color_1a8c">#00001a8c</color>
+    <color name="i_am_color_1a8d">#00001a8d</color>
+    <color name="i_am_color_1a8e">#00001a8e</color>
+    <color name="i_am_color_1a8f">#00001a8f</color>
+    <color name="i_am_color_1a90">#00001a90</color>
+    <color name="i_am_color_1a91">#00001a91</color>
+    <color name="i_am_color_1a92">#00001a92</color>
+    <color name="i_am_color_1a93">#00001a93</color>
+    <color name="i_am_color_1a94">#00001a94</color>
+    <color name="i_am_color_1a95">#00001a95</color>
+    <color name="i_am_color_1a96">#00001a96</color>
+    <color name="i_am_color_1a97">#00001a97</color>
+    <color name="i_am_color_1a98">#00001a98</color>
+    <color name="i_am_color_1a99">#00001a99</color>
+    <color name="i_am_color_1a9a">#00001a9a</color>
+    <color name="i_am_color_1a9b">#00001a9b</color>
+    <color name="i_am_color_1a9c">#00001a9c</color>
+    <color name="i_am_color_1a9d">#00001a9d</color>
+    <color name="i_am_color_1a9e">#00001a9e</color>
+    <color name="i_am_color_1a9f">#00001a9f</color>
+    <color name="i_am_color_1aa0">#00001aa0</color>
+    <color name="i_am_color_1aa1">#00001aa1</color>
+    <color name="i_am_color_1aa2">#00001aa2</color>
+    <color name="i_am_color_1aa3">#00001aa3</color>
+    <color name="i_am_color_1aa4">#00001aa4</color>
+    <color name="i_am_color_1aa5">#00001aa5</color>
+    <color name="i_am_color_1aa6">#00001aa6</color>
+    <color name="i_am_color_1aa7">#00001aa7</color>
+    <color name="i_am_color_1aa8">#00001aa8</color>
+    <color name="i_am_color_1aa9">#00001aa9</color>
+    <color name="i_am_color_1aaa">#00001aaa</color>
+    <color name="i_am_color_1aab">#00001aab</color>
+    <color name="i_am_color_1aac">#00001aac</color>
+    <color name="i_am_color_1aad">#00001aad</color>
+    <color name="i_am_color_1aae">#00001aae</color>
+    <color name="i_am_color_1aaf">#00001aaf</color>
+    <color name="i_am_color_1ab0">#00001ab0</color>
+    <color name="i_am_color_1ab1">#00001ab1</color>
+    <color name="i_am_color_1ab2">#00001ab2</color>
+    <color name="i_am_color_1ab3">#00001ab3</color>
+    <color name="i_am_color_1ab4">#00001ab4</color>
+    <color name="i_am_color_1ab5">#00001ab5</color>
+    <color name="i_am_color_1ab6">#00001ab6</color>
+    <color name="i_am_color_1ab7">#00001ab7</color>
+    <color name="i_am_color_1ab8">#00001ab8</color>
+    <color name="i_am_color_1ab9">#00001ab9</color>
+    <color name="i_am_color_1aba">#00001aba</color>
+    <color name="i_am_color_1abb">#00001abb</color>
+    <color name="i_am_color_1abc">#00001abc</color>
+    <color name="i_am_color_1abd">#00001abd</color>
+    <color name="i_am_color_1abe">#00001abe</color>
+    <color name="i_am_color_1abf">#00001abf</color>
+    <color name="i_am_color_1ac0">#00001ac0</color>
+    <color name="i_am_color_1ac1">#00001ac1</color>
+    <color name="i_am_color_1ac2">#00001ac2</color>
+    <color name="i_am_color_1ac3">#00001ac3</color>
+    <color name="i_am_color_1ac4">#00001ac4</color>
+    <color name="i_am_color_1ac5">#00001ac5</color>
+    <color name="i_am_color_1ac6">#00001ac6</color>
+    <color name="i_am_color_1ac7">#00001ac7</color>
+    <color name="i_am_color_1ac8">#00001ac8</color>
+    <color name="i_am_color_1ac9">#00001ac9</color>
+    <color name="i_am_color_1aca">#00001aca</color>
+    <color name="i_am_color_1acb">#00001acb</color>
+    <color name="i_am_color_1acc">#00001acc</color>
+    <color name="i_am_color_1acd">#00001acd</color>
+    <color name="i_am_color_1ace">#00001ace</color>
+    <color name="i_am_color_1acf">#00001acf</color>
+    <color name="i_am_color_1ad0">#00001ad0</color>
+    <color name="i_am_color_1ad1">#00001ad1</color>
+    <color name="i_am_color_1ad2">#00001ad2</color>
+    <color name="i_am_color_1ad3">#00001ad3</color>
+    <color name="i_am_color_1ad4">#00001ad4</color>
+    <color name="i_am_color_1ad5">#00001ad5</color>
+    <color name="i_am_color_1ad6">#00001ad6</color>
+    <color name="i_am_color_1ad7">#00001ad7</color>
+    <color name="i_am_color_1ad8">#00001ad8</color>
+    <color name="i_am_color_1ad9">#00001ad9</color>
+    <color name="i_am_color_1ada">#00001ada</color>
+    <color name="i_am_color_1adb">#00001adb</color>
+    <color name="i_am_color_1adc">#00001adc</color>
+    <color name="i_am_color_1add">#00001add</color>
+    <color name="i_am_color_1ade">#00001ade</color>
+    <color name="i_am_color_1adf">#00001adf</color>
+    <color name="i_am_color_1ae0">#00001ae0</color>
+    <color name="i_am_color_1ae1">#00001ae1</color>
+    <color name="i_am_color_1ae2">#00001ae2</color>
+    <color name="i_am_color_1ae3">#00001ae3</color>
+    <color name="i_am_color_1ae4">#00001ae4</color>
+    <color name="i_am_color_1ae5">#00001ae5</color>
+    <color name="i_am_color_1ae6">#00001ae6</color>
+    <color name="i_am_color_1ae7">#00001ae7</color>
+    <color name="i_am_color_1ae8">#00001ae8</color>
+    <color name="i_am_color_1ae9">#00001ae9</color>
+    <color name="i_am_color_1aea">#00001aea</color>
+    <color name="i_am_color_1aeb">#00001aeb</color>
+    <color name="i_am_color_1aec">#00001aec</color>
+    <color name="i_am_color_1aed">#00001aed</color>
+    <color name="i_am_color_1aee">#00001aee</color>
+    <color name="i_am_color_1aef">#00001aef</color>
+    <color name="i_am_color_1af0">#00001af0</color>
+    <color name="i_am_color_1af1">#00001af1</color>
+    <color name="i_am_color_1af2">#00001af2</color>
+    <color name="i_am_color_1af3">#00001af3</color>
+    <color name="i_am_color_1af4">#00001af4</color>
+    <color name="i_am_color_1af5">#00001af5</color>
+    <color name="i_am_color_1af6">#00001af6</color>
+    <color name="i_am_color_1af7">#00001af7</color>
+    <color name="i_am_color_1af8">#00001af8</color>
+    <color name="i_am_color_1af9">#00001af9</color>
+    <color name="i_am_color_1afa">#00001afa</color>
+    <color name="i_am_color_1afb">#00001afb</color>
+    <color name="i_am_color_1afc">#00001afc</color>
+    <color name="i_am_color_1afd">#00001afd</color>
+    <color name="i_am_color_1afe">#00001afe</color>
+    <color name="i_am_color_1aff">#00001aff</color>
+    <color name="i_am_color_1b00">#00001b00</color>
+    <color name="i_am_color_1b01">#00001b01</color>
+    <color name="i_am_color_1b02">#00001b02</color>
+    <color name="i_am_color_1b03">#00001b03</color>
+    <color name="i_am_color_1b04">#00001b04</color>
+    <color name="i_am_color_1b05">#00001b05</color>
+    <color name="i_am_color_1b06">#00001b06</color>
+    <color name="i_am_color_1b07">#00001b07</color>
+    <color name="i_am_color_1b08">#00001b08</color>
+    <color name="i_am_color_1b09">#00001b09</color>
+    <color name="i_am_color_1b0a">#00001b0a</color>
+    <color name="i_am_color_1b0b">#00001b0b</color>
+    <color name="i_am_color_1b0c">#00001b0c</color>
+    <color name="i_am_color_1b0d">#00001b0d</color>
+    <color name="i_am_color_1b0e">#00001b0e</color>
+    <color name="i_am_color_1b0f">#00001b0f</color>
+    <color name="i_am_color_1b10">#00001b10</color>
+    <color name="i_am_color_1b11">#00001b11</color>
+    <color name="i_am_color_1b12">#00001b12</color>
+    <color name="i_am_color_1b13">#00001b13</color>
+    <color name="i_am_color_1b14">#00001b14</color>
+    <color name="i_am_color_1b15">#00001b15</color>
+    <color name="i_am_color_1b16">#00001b16</color>
+    <color name="i_am_color_1b17">#00001b17</color>
+    <color name="i_am_color_1b18">#00001b18</color>
+    <color name="i_am_color_1b19">#00001b19</color>
+    <color name="i_am_color_1b1a">#00001b1a</color>
+    <color name="i_am_color_1b1b">#00001b1b</color>
+    <color name="i_am_color_1b1c">#00001b1c</color>
+    <color name="i_am_color_1b1d">#00001b1d</color>
+    <color name="i_am_color_1b1e">#00001b1e</color>
+    <color name="i_am_color_1b1f">#00001b1f</color>
+    <color name="i_am_color_1b20">#00001b20</color>
+    <color name="i_am_color_1b21">#00001b21</color>
+    <color name="i_am_color_1b22">#00001b22</color>
+    <color name="i_am_color_1b23">#00001b23</color>
+    <color name="i_am_color_1b24">#00001b24</color>
+    <color name="i_am_color_1b25">#00001b25</color>
+    <color name="i_am_color_1b26">#00001b26</color>
+    <color name="i_am_color_1b27">#00001b27</color>
+    <color name="i_am_color_1b28">#00001b28</color>
+    <color name="i_am_color_1b29">#00001b29</color>
+    <color name="i_am_color_1b2a">#00001b2a</color>
+    <color name="i_am_color_1b2b">#00001b2b</color>
+    <color name="i_am_color_1b2c">#00001b2c</color>
+    <color name="i_am_color_1b2d">#00001b2d</color>
+    <color name="i_am_color_1b2e">#00001b2e</color>
+    <color name="i_am_color_1b2f">#00001b2f</color>
+    <color name="i_am_color_1b30">#00001b30</color>
+    <color name="i_am_color_1b31">#00001b31</color>
+    <color name="i_am_color_1b32">#00001b32</color>
+    <color name="i_am_color_1b33">#00001b33</color>
+    <color name="i_am_color_1b34">#00001b34</color>
+    <color name="i_am_color_1b35">#00001b35</color>
+    <color name="i_am_color_1b36">#00001b36</color>
+    <color name="i_am_color_1b37">#00001b37</color>
+    <color name="i_am_color_1b38">#00001b38</color>
+    <color name="i_am_color_1b39">#00001b39</color>
+    <color name="i_am_color_1b3a">#00001b3a</color>
+    <color name="i_am_color_1b3b">#00001b3b</color>
+    <color name="i_am_color_1b3c">#00001b3c</color>
+    <color name="i_am_color_1b3d">#00001b3d</color>
+    <color name="i_am_color_1b3e">#00001b3e</color>
+    <color name="i_am_color_1b3f">#00001b3f</color>
+    <color name="i_am_color_1b40">#00001b40</color>
+    <color name="i_am_color_1b41">#00001b41</color>
+    <color name="i_am_color_1b42">#00001b42</color>
+    <color name="i_am_color_1b43">#00001b43</color>
+    <color name="i_am_color_1b44">#00001b44</color>
+    <color name="i_am_color_1b45">#00001b45</color>
+    <color name="i_am_color_1b46">#00001b46</color>
+    <color name="i_am_color_1b47">#00001b47</color>
+    <color name="i_am_color_1b48">#00001b48</color>
+    <color name="i_am_color_1b49">#00001b49</color>
+    <color name="i_am_color_1b4a">#00001b4a</color>
+    <color name="i_am_color_1b4b">#00001b4b</color>
+    <color name="i_am_color_1b4c">#00001b4c</color>
+    <color name="i_am_color_1b4d">#00001b4d</color>
+    <color name="i_am_color_1b4e">#00001b4e</color>
+    <color name="i_am_color_1b4f">#00001b4f</color>
+    <color name="i_am_color_1b50">#00001b50</color>
+    <color name="i_am_color_1b51">#00001b51</color>
+    <color name="i_am_color_1b52">#00001b52</color>
+    <color name="i_am_color_1b53">#00001b53</color>
+    <color name="i_am_color_1b54">#00001b54</color>
+    <color name="i_am_color_1b55">#00001b55</color>
+    <color name="i_am_color_1b56">#00001b56</color>
+    <color name="i_am_color_1b57">#00001b57</color>
+    <color name="i_am_color_1b58">#00001b58</color>
+    <color name="i_am_color_1b59">#00001b59</color>
+    <color name="i_am_color_1b5a">#00001b5a</color>
+    <color name="i_am_color_1b5b">#00001b5b</color>
+    <color name="i_am_color_1b5c">#00001b5c</color>
+    <color name="i_am_color_1b5d">#00001b5d</color>
+    <color name="i_am_color_1b5e">#00001b5e</color>
+    <color name="i_am_color_1b5f">#00001b5f</color>
+    <color name="i_am_color_1b60">#00001b60</color>
+    <color name="i_am_color_1b61">#00001b61</color>
+    <color name="i_am_color_1b62">#00001b62</color>
+    <color name="i_am_color_1b63">#00001b63</color>
+    <color name="i_am_color_1b64">#00001b64</color>
+    <color name="i_am_color_1b65">#00001b65</color>
+    <color name="i_am_color_1b66">#00001b66</color>
+    <color name="i_am_color_1b67">#00001b67</color>
+    <color name="i_am_color_1b68">#00001b68</color>
+    <color name="i_am_color_1b69">#00001b69</color>
+    <color name="i_am_color_1b6a">#00001b6a</color>
+    <color name="i_am_color_1b6b">#00001b6b</color>
+    <color name="i_am_color_1b6c">#00001b6c</color>
+    <color name="i_am_color_1b6d">#00001b6d</color>
+    <color name="i_am_color_1b6e">#00001b6e</color>
+    <color name="i_am_color_1b6f">#00001b6f</color>
+    <color name="i_am_color_1b70">#00001b70</color>
+    <color name="i_am_color_1b71">#00001b71</color>
+    <color name="i_am_color_1b72">#00001b72</color>
+    <color name="i_am_color_1b73">#00001b73</color>
+    <color name="i_am_color_1b74">#00001b74</color>
+    <color name="i_am_color_1b75">#00001b75</color>
+    <color name="i_am_color_1b76">#00001b76</color>
+    <color name="i_am_color_1b77">#00001b77</color>
+    <color name="i_am_color_1b78">#00001b78</color>
+    <color name="i_am_color_1b79">#00001b79</color>
+    <color name="i_am_color_1b7a">#00001b7a</color>
+    <color name="i_am_color_1b7b">#00001b7b</color>
+    <color name="i_am_color_1b7c">#00001b7c</color>
+    <color name="i_am_color_1b7d">#00001b7d</color>
+    <color name="i_am_color_1b7e">#00001b7e</color>
+    <color name="i_am_color_1b7f">#00001b7f</color>
+    <color name="i_am_color_1b80">#00001b80</color>
+    <color name="i_am_color_1b81">#00001b81</color>
+    <color name="i_am_color_1b82">#00001b82</color>
+    <color name="i_am_color_1b83">#00001b83</color>
+    <color name="i_am_color_1b84">#00001b84</color>
+    <color name="i_am_color_1b85">#00001b85</color>
+    <color name="i_am_color_1b86">#00001b86</color>
+    <color name="i_am_color_1b87">#00001b87</color>
+    <color name="i_am_color_1b88">#00001b88</color>
+    <color name="i_am_color_1b89">#00001b89</color>
+    <color name="i_am_color_1b8a">#00001b8a</color>
+    <color name="i_am_color_1b8b">#00001b8b</color>
+    <color name="i_am_color_1b8c">#00001b8c</color>
+    <color name="i_am_color_1b8d">#00001b8d</color>
+    <color name="i_am_color_1b8e">#00001b8e</color>
+    <color name="i_am_color_1b8f">#00001b8f</color>
+    <color name="i_am_color_1b90">#00001b90</color>
+    <color name="i_am_color_1b91">#00001b91</color>
+    <color name="i_am_color_1b92">#00001b92</color>
+    <color name="i_am_color_1b93">#00001b93</color>
+    <color name="i_am_color_1b94">#00001b94</color>
+    <color name="i_am_color_1b95">#00001b95</color>
+    <color name="i_am_color_1b96">#00001b96</color>
+    <color name="i_am_color_1b97">#00001b97</color>
+    <color name="i_am_color_1b98">#00001b98</color>
+    <color name="i_am_color_1b99">#00001b99</color>
+    <color name="i_am_color_1b9a">#00001b9a</color>
+    <color name="i_am_color_1b9b">#00001b9b</color>
+    <color name="i_am_color_1b9c">#00001b9c</color>
+    <color name="i_am_color_1b9d">#00001b9d</color>
+    <color name="i_am_color_1b9e">#00001b9e</color>
+    <color name="i_am_color_1b9f">#00001b9f</color>
+    <color name="i_am_color_1ba0">#00001ba0</color>
+    <color name="i_am_color_1ba1">#00001ba1</color>
+    <color name="i_am_color_1ba2">#00001ba2</color>
+    <color name="i_am_color_1ba3">#00001ba3</color>
+    <color name="i_am_color_1ba4">#00001ba4</color>
+    <color name="i_am_color_1ba5">#00001ba5</color>
+    <color name="i_am_color_1ba6">#00001ba6</color>
+    <color name="i_am_color_1ba7">#00001ba7</color>
+    <color name="i_am_color_1ba8">#00001ba8</color>
+    <color name="i_am_color_1ba9">#00001ba9</color>
+    <color name="i_am_color_1baa">#00001baa</color>
+    <color name="i_am_color_1bab">#00001bab</color>
+    <color name="i_am_color_1bac">#00001bac</color>
+    <color name="i_am_color_1bad">#00001bad</color>
+    <color name="i_am_color_1bae">#00001bae</color>
+    <color name="i_am_color_1baf">#00001baf</color>
+    <color name="i_am_color_1bb0">#00001bb0</color>
+    <color name="i_am_color_1bb1">#00001bb1</color>
+    <color name="i_am_color_1bb2">#00001bb2</color>
+    <color name="i_am_color_1bb3">#00001bb3</color>
+    <color name="i_am_color_1bb4">#00001bb4</color>
+    <color name="i_am_color_1bb5">#00001bb5</color>
+    <color name="i_am_color_1bb6">#00001bb6</color>
+    <color name="i_am_color_1bb7">#00001bb7</color>
+    <color name="i_am_color_1bb8">#00001bb8</color>
+    <color name="i_am_color_1bb9">#00001bb9</color>
+    <color name="i_am_color_1bba">#00001bba</color>
+    <color name="i_am_color_1bbb">#00001bbb</color>
+    <color name="i_am_color_1bbc">#00001bbc</color>
+    <color name="i_am_color_1bbd">#00001bbd</color>
+    <color name="i_am_color_1bbe">#00001bbe</color>
+    <color name="i_am_color_1bbf">#00001bbf</color>
+    <color name="i_am_color_1bc0">#00001bc0</color>
+    <color name="i_am_color_1bc1">#00001bc1</color>
+    <color name="i_am_color_1bc2">#00001bc2</color>
+    <color name="i_am_color_1bc3">#00001bc3</color>
+    <color name="i_am_color_1bc4">#00001bc4</color>
+    <color name="i_am_color_1bc5">#00001bc5</color>
+    <color name="i_am_color_1bc6">#00001bc6</color>
+    <color name="i_am_color_1bc7">#00001bc7</color>
+    <color name="i_am_color_1bc8">#00001bc8</color>
+    <color name="i_am_color_1bc9">#00001bc9</color>
+    <color name="i_am_color_1bca">#00001bca</color>
+    <color name="i_am_color_1bcb">#00001bcb</color>
+    <color name="i_am_color_1bcc">#00001bcc</color>
+    <color name="i_am_color_1bcd">#00001bcd</color>
+    <color name="i_am_color_1bce">#00001bce</color>
+    <color name="i_am_color_1bcf">#00001bcf</color>
+    <color name="i_am_color_1bd0">#00001bd0</color>
+    <color name="i_am_color_1bd1">#00001bd1</color>
+    <color name="i_am_color_1bd2">#00001bd2</color>
+    <color name="i_am_color_1bd3">#00001bd3</color>
+    <color name="i_am_color_1bd4">#00001bd4</color>
+    <color name="i_am_color_1bd5">#00001bd5</color>
+    <color name="i_am_color_1bd6">#00001bd6</color>
+    <color name="i_am_color_1bd7">#00001bd7</color>
+    <color name="i_am_color_1bd8">#00001bd8</color>
+    <color name="i_am_color_1bd9">#00001bd9</color>
+    <color name="i_am_color_1bda">#00001bda</color>
+    <color name="i_am_color_1bdb">#00001bdb</color>
+    <color name="i_am_color_1bdc">#00001bdc</color>
+    <color name="i_am_color_1bdd">#00001bdd</color>
+    <color name="i_am_color_1bde">#00001bde</color>
+    <color name="i_am_color_1bdf">#00001bdf</color>
+    <color name="i_am_color_1be0">#00001be0</color>
+    <color name="i_am_color_1be1">#00001be1</color>
+    <color name="i_am_color_1be2">#00001be2</color>
+    <color name="i_am_color_1be3">#00001be3</color>
+    <color name="i_am_color_1be4">#00001be4</color>
+    <color name="i_am_color_1be5">#00001be5</color>
+    <color name="i_am_color_1be6">#00001be6</color>
+    <color name="i_am_color_1be7">#00001be7</color>
+    <color name="i_am_color_1be8">#00001be8</color>
+    <color name="i_am_color_1be9">#00001be9</color>
+    <color name="i_am_color_1bea">#00001bea</color>
+    <color name="i_am_color_1beb">#00001beb</color>
+    <color name="i_am_color_1bec">#00001bec</color>
+    <color name="i_am_color_1bed">#00001bed</color>
+    <color name="i_am_color_1bee">#00001bee</color>
+    <color name="i_am_color_1bef">#00001bef</color>
+    <color name="i_am_color_1bf0">#00001bf0</color>
+    <color name="i_am_color_1bf1">#00001bf1</color>
+    <color name="i_am_color_1bf2">#00001bf2</color>
+    <color name="i_am_color_1bf3">#00001bf3</color>
+    <color name="i_am_color_1bf4">#00001bf4</color>
+    <color name="i_am_color_1bf5">#00001bf5</color>
+    <color name="i_am_color_1bf6">#00001bf6</color>
+    <color name="i_am_color_1bf7">#00001bf7</color>
+    <color name="i_am_color_1bf8">#00001bf8</color>
+    <color name="i_am_color_1bf9">#00001bf9</color>
+    <color name="i_am_color_1bfa">#00001bfa</color>
+    <color name="i_am_color_1bfb">#00001bfb</color>
+    <color name="i_am_color_1bfc">#00001bfc</color>
+    <color name="i_am_color_1bfd">#00001bfd</color>
+    <color name="i_am_color_1bfe">#00001bfe</color>
+    <color name="i_am_color_1bff">#00001bff</color>
+    <color name="i_am_color_1c00">#00001c00</color>
+    <color name="i_am_color_1c01">#00001c01</color>
+    <color name="i_am_color_1c02">#00001c02</color>
+    <color name="i_am_color_1c03">#00001c03</color>
+    <color name="i_am_color_1c04">#00001c04</color>
+    <color name="i_am_color_1c05">#00001c05</color>
+    <color name="i_am_color_1c06">#00001c06</color>
+    <color name="i_am_color_1c07">#00001c07</color>
+    <color name="i_am_color_1c08">#00001c08</color>
+    <color name="i_am_color_1c09">#00001c09</color>
+    <color name="i_am_color_1c0a">#00001c0a</color>
+    <color name="i_am_color_1c0b">#00001c0b</color>
+    <color name="i_am_color_1c0c">#00001c0c</color>
+    <color name="i_am_color_1c0d">#00001c0d</color>
+    <color name="i_am_color_1c0e">#00001c0e</color>
+    <color name="i_am_color_1c0f">#00001c0f</color>
+    <color name="i_am_color_1c10">#00001c10</color>
+    <color name="i_am_color_1c11">#00001c11</color>
+    <color name="i_am_color_1c12">#00001c12</color>
+    <color name="i_am_color_1c13">#00001c13</color>
+    <color name="i_am_color_1c14">#00001c14</color>
+    <color name="i_am_color_1c15">#00001c15</color>
+    <color name="i_am_color_1c16">#00001c16</color>
+    <color name="i_am_color_1c17">#00001c17</color>
+    <color name="i_am_color_1c18">#00001c18</color>
+    <color name="i_am_color_1c19">#00001c19</color>
+    <color name="i_am_color_1c1a">#00001c1a</color>
+    <color name="i_am_color_1c1b">#00001c1b</color>
+    <color name="i_am_color_1c1c">#00001c1c</color>
+    <color name="i_am_color_1c1d">#00001c1d</color>
+    <color name="i_am_color_1c1e">#00001c1e</color>
+    <color name="i_am_color_1c1f">#00001c1f</color>
+    <color name="i_am_color_1c20">#00001c20</color>
+    <color name="i_am_color_1c21">#00001c21</color>
+    <color name="i_am_color_1c22">#00001c22</color>
+    <color name="i_am_color_1c23">#00001c23</color>
+    <color name="i_am_color_1c24">#00001c24</color>
+    <color name="i_am_color_1c25">#00001c25</color>
+    <color name="i_am_color_1c26">#00001c26</color>
+    <color name="i_am_color_1c27">#00001c27</color>
+    <color name="i_am_color_1c28">#00001c28</color>
+    <color name="i_am_color_1c29">#00001c29</color>
+    <color name="i_am_color_1c2a">#00001c2a</color>
+    <color name="i_am_color_1c2b">#00001c2b</color>
+    <color name="i_am_color_1c2c">#00001c2c</color>
+    <color name="i_am_color_1c2d">#00001c2d</color>
+    <color name="i_am_color_1c2e">#00001c2e</color>
+    <color name="i_am_color_1c2f">#00001c2f</color>
+    <color name="i_am_color_1c30">#00001c30</color>
+    <color name="i_am_color_1c31">#00001c31</color>
+    <color name="i_am_color_1c32">#00001c32</color>
+    <color name="i_am_color_1c33">#00001c33</color>
+    <color name="i_am_color_1c34">#00001c34</color>
+    <color name="i_am_color_1c35">#00001c35</color>
+    <color name="i_am_color_1c36">#00001c36</color>
+    <color name="i_am_color_1c37">#00001c37</color>
+    <color name="i_am_color_1c38">#00001c38</color>
+    <color name="i_am_color_1c39">#00001c39</color>
+    <color name="i_am_color_1c3a">#00001c3a</color>
+    <color name="i_am_color_1c3b">#00001c3b</color>
+    <color name="i_am_color_1c3c">#00001c3c</color>
+    <color name="i_am_color_1c3d">#00001c3d</color>
+    <color name="i_am_color_1c3e">#00001c3e</color>
+    <color name="i_am_color_1c3f">#00001c3f</color>
+    <color name="i_am_color_1c40">#00001c40</color>
+    <color name="i_am_color_1c41">#00001c41</color>
+    <color name="i_am_color_1c42">#00001c42</color>
+    <color name="i_am_color_1c43">#00001c43</color>
+    <color name="i_am_color_1c44">#00001c44</color>
+    <color name="i_am_color_1c45">#00001c45</color>
+    <color name="i_am_color_1c46">#00001c46</color>
+    <color name="i_am_color_1c47">#00001c47</color>
+    <color name="i_am_color_1c48">#00001c48</color>
+    <color name="i_am_color_1c49">#00001c49</color>
+    <color name="i_am_color_1c4a">#00001c4a</color>
+    <color name="i_am_color_1c4b">#00001c4b</color>
+    <color name="i_am_color_1c4c">#00001c4c</color>
+    <color name="i_am_color_1c4d">#00001c4d</color>
+    <color name="i_am_color_1c4e">#00001c4e</color>
+    <color name="i_am_color_1c4f">#00001c4f</color>
+    <color name="i_am_color_1c50">#00001c50</color>
+    <color name="i_am_color_1c51">#00001c51</color>
+    <color name="i_am_color_1c52">#00001c52</color>
+    <color name="i_am_color_1c53">#00001c53</color>
+    <color name="i_am_color_1c54">#00001c54</color>
+    <color name="i_am_color_1c55">#00001c55</color>
+    <color name="i_am_color_1c56">#00001c56</color>
+    <color name="i_am_color_1c57">#00001c57</color>
+    <color name="i_am_color_1c58">#00001c58</color>
+    <color name="i_am_color_1c59">#00001c59</color>
+    <color name="i_am_color_1c5a">#00001c5a</color>
+    <color name="i_am_color_1c5b">#00001c5b</color>
+    <color name="i_am_color_1c5c">#00001c5c</color>
+    <color name="i_am_color_1c5d">#00001c5d</color>
+    <color name="i_am_color_1c5e">#00001c5e</color>
+    <color name="i_am_color_1c5f">#00001c5f</color>
+    <color name="i_am_color_1c60">#00001c60</color>
+    <color name="i_am_color_1c61">#00001c61</color>
+    <color name="i_am_color_1c62">#00001c62</color>
+    <color name="i_am_color_1c63">#00001c63</color>
+    <color name="i_am_color_1c64">#00001c64</color>
+    <color name="i_am_color_1c65">#00001c65</color>
+    <color name="i_am_color_1c66">#00001c66</color>
+    <color name="i_am_color_1c67">#00001c67</color>
+    <color name="i_am_color_1c68">#00001c68</color>
+    <color name="i_am_color_1c69">#00001c69</color>
+    <color name="i_am_color_1c6a">#00001c6a</color>
+    <color name="i_am_color_1c6b">#00001c6b</color>
+    <color name="i_am_color_1c6c">#00001c6c</color>
+    <color name="i_am_color_1c6d">#00001c6d</color>
+    <color name="i_am_color_1c6e">#00001c6e</color>
+    <color name="i_am_color_1c6f">#00001c6f</color>
+    <color name="i_am_color_1c70">#00001c70</color>
+    <color name="i_am_color_1c71">#00001c71</color>
+    <color name="i_am_color_1c72">#00001c72</color>
+    <color name="i_am_color_1c73">#00001c73</color>
+    <color name="i_am_color_1c74">#00001c74</color>
+    <color name="i_am_color_1c75">#00001c75</color>
+    <color name="i_am_color_1c76">#00001c76</color>
+    <color name="i_am_color_1c77">#00001c77</color>
+    <color name="i_am_color_1c78">#00001c78</color>
+    <color name="i_am_color_1c79">#00001c79</color>
+    <color name="i_am_color_1c7a">#00001c7a</color>
+    <color name="i_am_color_1c7b">#00001c7b</color>
+    <color name="i_am_color_1c7c">#00001c7c</color>
+    <color name="i_am_color_1c7d">#00001c7d</color>
+    <color name="i_am_color_1c7e">#00001c7e</color>
+    <color name="i_am_color_1c7f">#00001c7f</color>
+    <color name="i_am_color_1c80">#00001c80</color>
+    <color name="i_am_color_1c81">#00001c81</color>
+    <color name="i_am_color_1c82">#00001c82</color>
+    <color name="i_am_color_1c83">#00001c83</color>
+    <color name="i_am_color_1c84">#00001c84</color>
+    <color name="i_am_color_1c85">#00001c85</color>
+    <color name="i_am_color_1c86">#00001c86</color>
+    <color name="i_am_color_1c87">#00001c87</color>
+    <color name="i_am_color_1c88">#00001c88</color>
+    <color name="i_am_color_1c89">#00001c89</color>
+    <color name="i_am_color_1c8a">#00001c8a</color>
+    <color name="i_am_color_1c8b">#00001c8b</color>
+    <color name="i_am_color_1c8c">#00001c8c</color>
+    <color name="i_am_color_1c8d">#00001c8d</color>
+    <color name="i_am_color_1c8e">#00001c8e</color>
+    <color name="i_am_color_1c8f">#00001c8f</color>
+    <color name="i_am_color_1c90">#00001c90</color>
+    <color name="i_am_color_1c91">#00001c91</color>
+    <color name="i_am_color_1c92">#00001c92</color>
+    <color name="i_am_color_1c93">#00001c93</color>
+    <color name="i_am_color_1c94">#00001c94</color>
+    <color name="i_am_color_1c95">#00001c95</color>
+    <color name="i_am_color_1c96">#00001c96</color>
+    <color name="i_am_color_1c97">#00001c97</color>
+    <color name="i_am_color_1c98">#00001c98</color>
+    <color name="i_am_color_1c99">#00001c99</color>
+    <color name="i_am_color_1c9a">#00001c9a</color>
+    <color name="i_am_color_1c9b">#00001c9b</color>
+    <color name="i_am_color_1c9c">#00001c9c</color>
+    <color name="i_am_color_1c9d">#00001c9d</color>
+    <color name="i_am_color_1c9e">#00001c9e</color>
+    <color name="i_am_color_1c9f">#00001c9f</color>
+    <color name="i_am_color_1ca0">#00001ca0</color>
+    <color name="i_am_color_1ca1">#00001ca1</color>
+    <color name="i_am_color_1ca2">#00001ca2</color>
+    <color name="i_am_color_1ca3">#00001ca3</color>
+    <color name="i_am_color_1ca4">#00001ca4</color>
+    <color name="i_am_color_1ca5">#00001ca5</color>
+    <color name="i_am_color_1ca6">#00001ca6</color>
+    <color name="i_am_color_1ca7">#00001ca7</color>
+    <color name="i_am_color_1ca8">#00001ca8</color>
+    <color name="i_am_color_1ca9">#00001ca9</color>
+    <color name="i_am_color_1caa">#00001caa</color>
+    <color name="i_am_color_1cab">#00001cab</color>
+    <color name="i_am_color_1cac">#00001cac</color>
+    <color name="i_am_color_1cad">#00001cad</color>
+    <color name="i_am_color_1cae">#00001cae</color>
+    <color name="i_am_color_1caf">#00001caf</color>
+    <color name="i_am_color_1cb0">#00001cb0</color>
+    <color name="i_am_color_1cb1">#00001cb1</color>
+    <color name="i_am_color_1cb2">#00001cb2</color>
+    <color name="i_am_color_1cb3">#00001cb3</color>
+    <color name="i_am_color_1cb4">#00001cb4</color>
+    <color name="i_am_color_1cb5">#00001cb5</color>
+    <color name="i_am_color_1cb6">#00001cb6</color>
+    <color name="i_am_color_1cb7">#00001cb7</color>
+    <color name="i_am_color_1cb8">#00001cb8</color>
+    <color name="i_am_color_1cb9">#00001cb9</color>
+    <color name="i_am_color_1cba">#00001cba</color>
+    <color name="i_am_color_1cbb">#00001cbb</color>
+    <color name="i_am_color_1cbc">#00001cbc</color>
+    <color name="i_am_color_1cbd">#00001cbd</color>
+    <color name="i_am_color_1cbe">#00001cbe</color>
+    <color name="i_am_color_1cbf">#00001cbf</color>
+    <color name="i_am_color_1cc0">#00001cc0</color>
+    <color name="i_am_color_1cc1">#00001cc1</color>
+    <color name="i_am_color_1cc2">#00001cc2</color>
+    <color name="i_am_color_1cc3">#00001cc3</color>
+    <color name="i_am_color_1cc4">#00001cc4</color>
+    <color name="i_am_color_1cc5">#00001cc5</color>
+    <color name="i_am_color_1cc6">#00001cc6</color>
+    <color name="i_am_color_1cc7">#00001cc7</color>
+    <color name="i_am_color_1cc8">#00001cc8</color>
+    <color name="i_am_color_1cc9">#00001cc9</color>
+    <color name="i_am_color_1cca">#00001cca</color>
+    <color name="i_am_color_1ccb">#00001ccb</color>
+    <color name="i_am_color_1ccc">#00001ccc</color>
+    <color name="i_am_color_1ccd">#00001ccd</color>
+    <color name="i_am_color_1cce">#00001cce</color>
+    <color name="i_am_color_1ccf">#00001ccf</color>
+    <color name="i_am_color_1cd0">#00001cd0</color>
+    <color name="i_am_color_1cd1">#00001cd1</color>
+    <color name="i_am_color_1cd2">#00001cd2</color>
+    <color name="i_am_color_1cd3">#00001cd3</color>
+    <color name="i_am_color_1cd4">#00001cd4</color>
+    <color name="i_am_color_1cd5">#00001cd5</color>
+    <color name="i_am_color_1cd6">#00001cd6</color>
+    <color name="i_am_color_1cd7">#00001cd7</color>
+    <color name="i_am_color_1cd8">#00001cd8</color>
+    <color name="i_am_color_1cd9">#00001cd9</color>
+    <color name="i_am_color_1cda">#00001cda</color>
+    <color name="i_am_color_1cdb">#00001cdb</color>
+    <color name="i_am_color_1cdc">#00001cdc</color>
+    <color name="i_am_color_1cdd">#00001cdd</color>
+    <color name="i_am_color_1cde">#00001cde</color>
+    <color name="i_am_color_1cdf">#00001cdf</color>
+    <color name="i_am_color_1ce0">#00001ce0</color>
+    <color name="i_am_color_1ce1">#00001ce1</color>
+    <color name="i_am_color_1ce2">#00001ce2</color>
+    <color name="i_am_color_1ce3">#00001ce3</color>
+    <color name="i_am_color_1ce4">#00001ce4</color>
+    <color name="i_am_color_1ce5">#00001ce5</color>
+    <color name="i_am_color_1ce6">#00001ce6</color>
+    <color name="i_am_color_1ce7">#00001ce7</color>
+    <color name="i_am_color_1ce8">#00001ce8</color>
+    <color name="i_am_color_1ce9">#00001ce9</color>
+    <color name="i_am_color_1cea">#00001cea</color>
+    <color name="i_am_color_1ceb">#00001ceb</color>
+    <color name="i_am_color_1cec">#00001cec</color>
+    <color name="i_am_color_1ced">#00001ced</color>
+    <color name="i_am_color_1cee">#00001cee</color>
+    <color name="i_am_color_1cef">#00001cef</color>
+    <color name="i_am_color_1cf0">#00001cf0</color>
+    <color name="i_am_color_1cf1">#00001cf1</color>
+    <color name="i_am_color_1cf2">#00001cf2</color>
+    <color name="i_am_color_1cf3">#00001cf3</color>
+    <color name="i_am_color_1cf4">#00001cf4</color>
+    <color name="i_am_color_1cf5">#00001cf5</color>
+    <color name="i_am_color_1cf6">#00001cf6</color>
+    <color name="i_am_color_1cf7">#00001cf7</color>
+    <color name="i_am_color_1cf8">#00001cf8</color>
+    <color name="i_am_color_1cf9">#00001cf9</color>
+    <color name="i_am_color_1cfa">#00001cfa</color>
+    <color name="i_am_color_1cfb">#00001cfb</color>
+    <color name="i_am_color_1cfc">#00001cfc</color>
+    <color name="i_am_color_1cfd">#00001cfd</color>
+    <color name="i_am_color_1cfe">#00001cfe</color>
+    <color name="i_am_color_1cff">#00001cff</color>
+    <color name="i_am_color_1d00">#00001d00</color>
+    <color name="i_am_color_1d01">#00001d01</color>
+    <color name="i_am_color_1d02">#00001d02</color>
+    <color name="i_am_color_1d03">#00001d03</color>
+    <color name="i_am_color_1d04">#00001d04</color>
+    <color name="i_am_color_1d05">#00001d05</color>
+    <color name="i_am_color_1d06">#00001d06</color>
+    <color name="i_am_color_1d07">#00001d07</color>
+    <color name="i_am_color_1d08">#00001d08</color>
+    <color name="i_am_color_1d09">#00001d09</color>
+    <color name="i_am_color_1d0a">#00001d0a</color>
+    <color name="i_am_color_1d0b">#00001d0b</color>
+    <color name="i_am_color_1d0c">#00001d0c</color>
+    <color name="i_am_color_1d0d">#00001d0d</color>
+    <color name="i_am_color_1d0e">#00001d0e</color>
+    <color name="i_am_color_1d0f">#00001d0f</color>
+    <color name="i_am_color_1d10">#00001d10</color>
+    <color name="i_am_color_1d11">#00001d11</color>
+    <color name="i_am_color_1d12">#00001d12</color>
+    <color name="i_am_color_1d13">#00001d13</color>
+    <color name="i_am_color_1d14">#00001d14</color>
+    <color name="i_am_color_1d15">#00001d15</color>
+    <color name="i_am_color_1d16">#00001d16</color>
+    <color name="i_am_color_1d17">#00001d17</color>
+    <color name="i_am_color_1d18">#00001d18</color>
+    <color name="i_am_color_1d19">#00001d19</color>
+    <color name="i_am_color_1d1a">#00001d1a</color>
+    <color name="i_am_color_1d1b">#00001d1b</color>
+    <color name="i_am_color_1d1c">#00001d1c</color>
+    <color name="i_am_color_1d1d">#00001d1d</color>
+    <color name="i_am_color_1d1e">#00001d1e</color>
+    <color name="i_am_color_1d1f">#00001d1f</color>
+    <color name="i_am_color_1d20">#00001d20</color>
+    <color name="i_am_color_1d21">#00001d21</color>
+    <color name="i_am_color_1d22">#00001d22</color>
+    <color name="i_am_color_1d23">#00001d23</color>
+    <color name="i_am_color_1d24">#00001d24</color>
+    <color name="i_am_color_1d25">#00001d25</color>
+    <color name="i_am_color_1d26">#00001d26</color>
+    <color name="i_am_color_1d27">#00001d27</color>
+    <color name="i_am_color_1d28">#00001d28</color>
+    <color name="i_am_color_1d29">#00001d29</color>
+    <color name="i_am_color_1d2a">#00001d2a</color>
+    <color name="i_am_color_1d2b">#00001d2b</color>
+    <color name="i_am_color_1d2c">#00001d2c</color>
+    <color name="i_am_color_1d2d">#00001d2d</color>
+    <color name="i_am_color_1d2e">#00001d2e</color>
+    <color name="i_am_color_1d2f">#00001d2f</color>
+    <color name="i_am_color_1d30">#00001d30</color>
+    <color name="i_am_color_1d31">#00001d31</color>
+    <color name="i_am_color_1d32">#00001d32</color>
+    <color name="i_am_color_1d33">#00001d33</color>
+    <color name="i_am_color_1d34">#00001d34</color>
+    <color name="i_am_color_1d35">#00001d35</color>
+    <color name="i_am_color_1d36">#00001d36</color>
+    <color name="i_am_color_1d37">#00001d37</color>
+    <color name="i_am_color_1d38">#00001d38</color>
+    <color name="i_am_color_1d39">#00001d39</color>
+    <color name="i_am_color_1d3a">#00001d3a</color>
+    <color name="i_am_color_1d3b">#00001d3b</color>
+    <color name="i_am_color_1d3c">#00001d3c</color>
+    <color name="i_am_color_1d3d">#00001d3d</color>
+    <color name="i_am_color_1d3e">#00001d3e</color>
+    <color name="i_am_color_1d3f">#00001d3f</color>
+    <color name="i_am_color_1d40">#00001d40</color>
+    <color name="i_am_color_1d41">#00001d41</color>
+    <color name="i_am_color_1d42">#00001d42</color>
+    <color name="i_am_color_1d43">#00001d43</color>
+    <color name="i_am_color_1d44">#00001d44</color>
+    <color name="i_am_color_1d45">#00001d45</color>
+    <color name="i_am_color_1d46">#00001d46</color>
+    <color name="i_am_color_1d47">#00001d47</color>
+    <color name="i_am_color_1d48">#00001d48</color>
+    <color name="i_am_color_1d49">#00001d49</color>
+    <color name="i_am_color_1d4a">#00001d4a</color>
+    <color name="i_am_color_1d4b">#00001d4b</color>
+    <color name="i_am_color_1d4c">#00001d4c</color>
+    <color name="i_am_color_1d4d">#00001d4d</color>
+    <color name="i_am_color_1d4e">#00001d4e</color>
+    <color name="i_am_color_1d4f">#00001d4f</color>
+    <color name="i_am_color_1d50">#00001d50</color>
+    <color name="i_am_color_1d51">#00001d51</color>
+    <color name="i_am_color_1d52">#00001d52</color>
+    <color name="i_am_color_1d53">#00001d53</color>
+    <color name="i_am_color_1d54">#00001d54</color>
+    <color name="i_am_color_1d55">#00001d55</color>
+    <color name="i_am_color_1d56">#00001d56</color>
+    <color name="i_am_color_1d57">#00001d57</color>
+    <color name="i_am_color_1d58">#00001d58</color>
+    <color name="i_am_color_1d59">#00001d59</color>
+    <color name="i_am_color_1d5a">#00001d5a</color>
+    <color name="i_am_color_1d5b">#00001d5b</color>
+    <color name="i_am_color_1d5c">#00001d5c</color>
+    <color name="i_am_color_1d5d">#00001d5d</color>
+    <color name="i_am_color_1d5e">#00001d5e</color>
+    <color name="i_am_color_1d5f">#00001d5f</color>
+    <color name="i_am_color_1d60">#00001d60</color>
+    <color name="i_am_color_1d61">#00001d61</color>
+    <color name="i_am_color_1d62">#00001d62</color>
+    <color name="i_am_color_1d63">#00001d63</color>
+    <color name="i_am_color_1d64">#00001d64</color>
+    <color name="i_am_color_1d65">#00001d65</color>
+    <color name="i_am_color_1d66">#00001d66</color>
+    <color name="i_am_color_1d67">#00001d67</color>
+    <color name="i_am_color_1d68">#00001d68</color>
+    <color name="i_am_color_1d69">#00001d69</color>
+    <color name="i_am_color_1d6a">#00001d6a</color>
+    <color name="i_am_color_1d6b">#00001d6b</color>
+    <color name="i_am_color_1d6c">#00001d6c</color>
+    <color name="i_am_color_1d6d">#00001d6d</color>
+    <color name="i_am_color_1d6e">#00001d6e</color>
+    <color name="i_am_color_1d6f">#00001d6f</color>
+    <color name="i_am_color_1d70">#00001d70</color>
+    <color name="i_am_color_1d71">#00001d71</color>
+    <color name="i_am_color_1d72">#00001d72</color>
+    <color name="i_am_color_1d73">#00001d73</color>
+    <color name="i_am_color_1d74">#00001d74</color>
+    <color name="i_am_color_1d75">#00001d75</color>
+    <color name="i_am_color_1d76">#00001d76</color>
+    <color name="i_am_color_1d77">#00001d77</color>
+    <color name="i_am_color_1d78">#00001d78</color>
+    <color name="i_am_color_1d79">#00001d79</color>
+    <color name="i_am_color_1d7a">#00001d7a</color>
+    <color name="i_am_color_1d7b">#00001d7b</color>
+    <color name="i_am_color_1d7c">#00001d7c</color>
+    <color name="i_am_color_1d7d">#00001d7d</color>
+    <color name="i_am_color_1d7e">#00001d7e</color>
+    <color name="i_am_color_1d7f">#00001d7f</color>
+    <color name="i_am_color_1d80">#00001d80</color>
+    <color name="i_am_color_1d81">#00001d81</color>
+    <color name="i_am_color_1d82">#00001d82</color>
+    <color name="i_am_color_1d83">#00001d83</color>
+    <color name="i_am_color_1d84">#00001d84</color>
+    <color name="i_am_color_1d85">#00001d85</color>
+    <color name="i_am_color_1d86">#00001d86</color>
+    <color name="i_am_color_1d87">#00001d87</color>
+    <color name="i_am_color_1d88">#00001d88</color>
+    <color name="i_am_color_1d89">#00001d89</color>
+    <color name="i_am_color_1d8a">#00001d8a</color>
+    <color name="i_am_color_1d8b">#00001d8b</color>
+    <color name="i_am_color_1d8c">#00001d8c</color>
+    <color name="i_am_color_1d8d">#00001d8d</color>
+    <color name="i_am_color_1d8e">#00001d8e</color>
+    <color name="i_am_color_1d8f">#00001d8f</color>
+    <color name="i_am_color_1d90">#00001d90</color>
+    <color name="i_am_color_1d91">#00001d91</color>
+    <color name="i_am_color_1d92">#00001d92</color>
+    <color name="i_am_color_1d93">#00001d93</color>
+    <color name="i_am_color_1d94">#00001d94</color>
+    <color name="i_am_color_1d95">#00001d95</color>
+    <color name="i_am_color_1d96">#00001d96</color>
+    <color name="i_am_color_1d97">#00001d97</color>
+    <color name="i_am_color_1d98">#00001d98</color>
+    <color name="i_am_color_1d99">#00001d99</color>
+    <color name="i_am_color_1d9a">#00001d9a</color>
+    <color name="i_am_color_1d9b">#00001d9b</color>
+    <color name="i_am_color_1d9c">#00001d9c</color>
+    <color name="i_am_color_1d9d">#00001d9d</color>
+    <color name="i_am_color_1d9e">#00001d9e</color>
+    <color name="i_am_color_1d9f">#00001d9f</color>
+    <color name="i_am_color_1da0">#00001da0</color>
+    <color name="i_am_color_1da1">#00001da1</color>
+    <color name="i_am_color_1da2">#00001da2</color>
+    <color name="i_am_color_1da3">#00001da3</color>
+    <color name="i_am_color_1da4">#00001da4</color>
+    <color name="i_am_color_1da5">#00001da5</color>
+    <color name="i_am_color_1da6">#00001da6</color>
+    <color name="i_am_color_1da7">#00001da7</color>
+    <color name="i_am_color_1da8">#00001da8</color>
+    <color name="i_am_color_1da9">#00001da9</color>
+    <color name="i_am_color_1daa">#00001daa</color>
+    <color name="i_am_color_1dab">#00001dab</color>
+    <color name="i_am_color_1dac">#00001dac</color>
+    <color name="i_am_color_1dad">#00001dad</color>
+    <color name="i_am_color_1dae">#00001dae</color>
+    <color name="i_am_color_1daf">#00001daf</color>
+    <color name="i_am_color_1db0">#00001db0</color>
+    <color name="i_am_color_1db1">#00001db1</color>
+    <color name="i_am_color_1db2">#00001db2</color>
+    <color name="i_am_color_1db3">#00001db3</color>
+    <color name="i_am_color_1db4">#00001db4</color>
+    <color name="i_am_color_1db5">#00001db5</color>
+    <color name="i_am_color_1db6">#00001db6</color>
+    <color name="i_am_color_1db7">#00001db7</color>
+    <color name="i_am_color_1db8">#00001db8</color>
+    <color name="i_am_color_1db9">#00001db9</color>
+    <color name="i_am_color_1dba">#00001dba</color>
+    <color name="i_am_color_1dbb">#00001dbb</color>
+    <color name="i_am_color_1dbc">#00001dbc</color>
+    <color name="i_am_color_1dbd">#00001dbd</color>
+    <color name="i_am_color_1dbe">#00001dbe</color>
+    <color name="i_am_color_1dbf">#00001dbf</color>
+    <color name="i_am_color_1dc0">#00001dc0</color>
+    <color name="i_am_color_1dc1">#00001dc1</color>
+    <color name="i_am_color_1dc2">#00001dc2</color>
+    <color name="i_am_color_1dc3">#00001dc3</color>
+    <color name="i_am_color_1dc4">#00001dc4</color>
+    <color name="i_am_color_1dc5">#00001dc5</color>
+    <color name="i_am_color_1dc6">#00001dc6</color>
+    <color name="i_am_color_1dc7">#00001dc7</color>
+    <color name="i_am_color_1dc8">#00001dc8</color>
+    <color name="i_am_color_1dc9">#00001dc9</color>
+    <color name="i_am_color_1dca">#00001dca</color>
+    <color name="i_am_color_1dcb">#00001dcb</color>
+    <color name="i_am_color_1dcc">#00001dcc</color>
+    <color name="i_am_color_1dcd">#00001dcd</color>
+    <color name="i_am_color_1dce">#00001dce</color>
+    <color name="i_am_color_1dcf">#00001dcf</color>
+    <color name="i_am_color_1dd0">#00001dd0</color>
+    <color name="i_am_color_1dd1">#00001dd1</color>
+    <color name="i_am_color_1dd2">#00001dd2</color>
+    <color name="i_am_color_1dd3">#00001dd3</color>
+    <color name="i_am_color_1dd4">#00001dd4</color>
+    <color name="i_am_color_1dd5">#00001dd5</color>
+    <color name="i_am_color_1dd6">#00001dd6</color>
+    <color name="i_am_color_1dd7">#00001dd7</color>
+    <color name="i_am_color_1dd8">#00001dd8</color>
+    <color name="i_am_color_1dd9">#00001dd9</color>
+    <color name="i_am_color_1dda">#00001dda</color>
+    <color name="i_am_color_1ddb">#00001ddb</color>
+    <color name="i_am_color_1ddc">#00001ddc</color>
+    <color name="i_am_color_1ddd">#00001ddd</color>
+    <color name="i_am_color_1dde">#00001dde</color>
+    <color name="i_am_color_1ddf">#00001ddf</color>
+    <color name="i_am_color_1de0">#00001de0</color>
+    <color name="i_am_color_1de1">#00001de1</color>
+    <color name="i_am_color_1de2">#00001de2</color>
+    <color name="i_am_color_1de3">#00001de3</color>
+    <color name="i_am_color_1de4">#00001de4</color>
+    <color name="i_am_color_1de5">#00001de5</color>
+    <color name="i_am_color_1de6">#00001de6</color>
+    <color name="i_am_color_1de7">#00001de7</color>
+    <color name="i_am_color_1de8">#00001de8</color>
+    <color name="i_am_color_1de9">#00001de9</color>
+    <color name="i_am_color_1dea">#00001dea</color>
+    <color name="i_am_color_1deb">#00001deb</color>
+    <color name="i_am_color_1dec">#00001dec</color>
+    <color name="i_am_color_1ded">#00001ded</color>
+    <color name="i_am_color_1dee">#00001dee</color>
+    <color name="i_am_color_1def">#00001def</color>
+    <color name="i_am_color_1df0">#00001df0</color>
+    <color name="i_am_color_1df1">#00001df1</color>
+    <color name="i_am_color_1df2">#00001df2</color>
+    <color name="i_am_color_1df3">#00001df3</color>
+    <color name="i_am_color_1df4">#00001df4</color>
+    <color name="i_am_color_1df5">#00001df5</color>
+    <color name="i_am_color_1df6">#00001df6</color>
+    <color name="i_am_color_1df7">#00001df7</color>
+    <color name="i_am_color_1df8">#00001df8</color>
+    <color name="i_am_color_1df9">#00001df9</color>
+    <color name="i_am_color_1dfa">#00001dfa</color>
+    <color name="i_am_color_1dfb">#00001dfb</color>
+    <color name="i_am_color_1dfc">#00001dfc</color>
+    <color name="i_am_color_1dfd">#00001dfd</color>
+    <color name="i_am_color_1dfe">#00001dfe</color>
+    <color name="i_am_color_1dff">#00001dff</color>
+    <color name="i_am_color_1e00">#00001e00</color>
+    <color name="i_am_color_1e01">#00001e01</color>
+    <color name="i_am_color_1e02">#00001e02</color>
+    <color name="i_am_color_1e03">#00001e03</color>
+    <color name="i_am_color_1e04">#00001e04</color>
+    <color name="i_am_color_1e05">#00001e05</color>
+    <color name="i_am_color_1e06">#00001e06</color>
+    <color name="i_am_color_1e07">#00001e07</color>
+    <color name="i_am_color_1e08">#00001e08</color>
+    <color name="i_am_color_1e09">#00001e09</color>
+    <color name="i_am_color_1e0a">#00001e0a</color>
+    <color name="i_am_color_1e0b">#00001e0b</color>
+    <color name="i_am_color_1e0c">#00001e0c</color>
+    <color name="i_am_color_1e0d">#00001e0d</color>
+    <color name="i_am_color_1e0e">#00001e0e</color>
+    <color name="i_am_color_1e0f">#00001e0f</color>
+    <color name="i_am_color_1e10">#00001e10</color>
+    <color name="i_am_color_1e11">#00001e11</color>
+    <color name="i_am_color_1e12">#00001e12</color>
+    <color name="i_am_color_1e13">#00001e13</color>
+    <color name="i_am_color_1e14">#00001e14</color>
+    <color name="i_am_color_1e15">#00001e15</color>
+    <color name="i_am_color_1e16">#00001e16</color>
+    <color name="i_am_color_1e17">#00001e17</color>
+    <color name="i_am_color_1e18">#00001e18</color>
+    <color name="i_am_color_1e19">#00001e19</color>
+    <color name="i_am_color_1e1a">#00001e1a</color>
+    <color name="i_am_color_1e1b">#00001e1b</color>
+    <color name="i_am_color_1e1c">#00001e1c</color>
+    <color name="i_am_color_1e1d">#00001e1d</color>
+    <color name="i_am_color_1e1e">#00001e1e</color>
+    <color name="i_am_color_1e1f">#00001e1f</color>
+    <color name="i_am_color_1e20">#00001e20</color>
+    <color name="i_am_color_1e21">#00001e21</color>
+    <color name="i_am_color_1e22">#00001e22</color>
+    <color name="i_am_color_1e23">#00001e23</color>
+    <color name="i_am_color_1e24">#00001e24</color>
+    <color name="i_am_color_1e25">#00001e25</color>
+    <color name="i_am_color_1e26">#00001e26</color>
+    <color name="i_am_color_1e27">#00001e27</color>
+    <color name="i_am_color_1e28">#00001e28</color>
+    <color name="i_am_color_1e29">#00001e29</color>
+    <color name="i_am_color_1e2a">#00001e2a</color>
+    <color name="i_am_color_1e2b">#00001e2b</color>
+    <color name="i_am_color_1e2c">#00001e2c</color>
+    <color name="i_am_color_1e2d">#00001e2d</color>
+    <color name="i_am_color_1e2e">#00001e2e</color>
+    <color name="i_am_color_1e2f">#00001e2f</color>
+    <color name="i_am_color_1e30">#00001e30</color>
+    <color name="i_am_color_1e31">#00001e31</color>
+    <color name="i_am_color_1e32">#00001e32</color>
+    <color name="i_am_color_1e33">#00001e33</color>
+    <color name="i_am_color_1e34">#00001e34</color>
+    <color name="i_am_color_1e35">#00001e35</color>
+    <color name="i_am_color_1e36">#00001e36</color>
+    <color name="i_am_color_1e37">#00001e37</color>
+    <color name="i_am_color_1e38">#00001e38</color>
+    <color name="i_am_color_1e39">#00001e39</color>
+    <color name="i_am_color_1e3a">#00001e3a</color>
+    <color name="i_am_color_1e3b">#00001e3b</color>
+    <color name="i_am_color_1e3c">#00001e3c</color>
+    <color name="i_am_color_1e3d">#00001e3d</color>
+    <color name="i_am_color_1e3e">#00001e3e</color>
+    <color name="i_am_color_1e3f">#00001e3f</color>
+    <color name="i_am_color_1e40">#00001e40</color>
+    <color name="i_am_color_1e41">#00001e41</color>
+    <color name="i_am_color_1e42">#00001e42</color>
+    <color name="i_am_color_1e43">#00001e43</color>
+    <color name="i_am_color_1e44">#00001e44</color>
+    <color name="i_am_color_1e45">#00001e45</color>
+    <color name="i_am_color_1e46">#00001e46</color>
+    <color name="i_am_color_1e47">#00001e47</color>
+    <color name="i_am_color_1e48">#00001e48</color>
+    <color name="i_am_color_1e49">#00001e49</color>
+    <color name="i_am_color_1e4a">#00001e4a</color>
+    <color name="i_am_color_1e4b">#00001e4b</color>
+    <color name="i_am_color_1e4c">#00001e4c</color>
+    <color name="i_am_color_1e4d">#00001e4d</color>
+    <color name="i_am_color_1e4e">#00001e4e</color>
+    <color name="i_am_color_1e4f">#00001e4f</color>
+    <color name="i_am_color_1e50">#00001e50</color>
+    <color name="i_am_color_1e51">#00001e51</color>
+    <color name="i_am_color_1e52">#00001e52</color>
+    <color name="i_am_color_1e53">#00001e53</color>
+    <color name="i_am_color_1e54">#00001e54</color>
+    <color name="i_am_color_1e55">#00001e55</color>
+    <color name="i_am_color_1e56">#00001e56</color>
+    <color name="i_am_color_1e57">#00001e57</color>
+    <color name="i_am_color_1e58">#00001e58</color>
+    <color name="i_am_color_1e59">#00001e59</color>
+    <color name="i_am_color_1e5a">#00001e5a</color>
+    <color name="i_am_color_1e5b">#00001e5b</color>
+    <color name="i_am_color_1e5c">#00001e5c</color>
+    <color name="i_am_color_1e5d">#00001e5d</color>
+    <color name="i_am_color_1e5e">#00001e5e</color>
+    <color name="i_am_color_1e5f">#00001e5f</color>
+    <color name="i_am_color_1e60">#00001e60</color>
+    <color name="i_am_color_1e61">#00001e61</color>
+    <color name="i_am_color_1e62">#00001e62</color>
+    <color name="i_am_color_1e63">#00001e63</color>
+    <color name="i_am_color_1e64">#00001e64</color>
+    <color name="i_am_color_1e65">#00001e65</color>
+    <color name="i_am_color_1e66">#00001e66</color>
+    <color name="i_am_color_1e67">#00001e67</color>
+    <color name="i_am_color_1e68">#00001e68</color>
+    <color name="i_am_color_1e69">#00001e69</color>
+    <color name="i_am_color_1e6a">#00001e6a</color>
+    <color name="i_am_color_1e6b">#00001e6b</color>
+    <color name="i_am_color_1e6c">#00001e6c</color>
+    <color name="i_am_color_1e6d">#00001e6d</color>
+    <color name="i_am_color_1e6e">#00001e6e</color>
+    <color name="i_am_color_1e6f">#00001e6f</color>
+    <color name="i_am_color_1e70">#00001e70</color>
+    <color name="i_am_color_1e71">#00001e71</color>
+    <color name="i_am_color_1e72">#00001e72</color>
+    <color name="i_am_color_1e73">#00001e73</color>
+    <color name="i_am_color_1e74">#00001e74</color>
+    <color name="i_am_color_1e75">#00001e75</color>
+    <color name="i_am_color_1e76">#00001e76</color>
+    <color name="i_am_color_1e77">#00001e77</color>
+    <color name="i_am_color_1e78">#00001e78</color>
+    <color name="i_am_color_1e79">#00001e79</color>
+    <color name="i_am_color_1e7a">#00001e7a</color>
+    <color name="i_am_color_1e7b">#00001e7b</color>
+    <color name="i_am_color_1e7c">#00001e7c</color>
+    <color name="i_am_color_1e7d">#00001e7d</color>
+    <color name="i_am_color_1e7e">#00001e7e</color>
+    <color name="i_am_color_1e7f">#00001e7f</color>
+    <color name="i_am_color_1e80">#00001e80</color>
+    <color name="i_am_color_1e81">#00001e81</color>
+    <color name="i_am_color_1e82">#00001e82</color>
+    <color name="i_am_color_1e83">#00001e83</color>
+    <color name="i_am_color_1e84">#00001e84</color>
+    <color name="i_am_color_1e85">#00001e85</color>
+    <color name="i_am_color_1e86">#00001e86</color>
+    <color name="i_am_color_1e87">#00001e87</color>
+    <color name="i_am_color_1e88">#00001e88</color>
+    <color name="i_am_color_1e89">#00001e89</color>
+    <color name="i_am_color_1e8a">#00001e8a</color>
+    <color name="i_am_color_1e8b">#00001e8b</color>
+    <color name="i_am_color_1e8c">#00001e8c</color>
+    <color name="i_am_color_1e8d">#00001e8d</color>
+    <color name="i_am_color_1e8e">#00001e8e</color>
+    <color name="i_am_color_1e8f">#00001e8f</color>
+    <color name="i_am_color_1e90">#00001e90</color>
+    <color name="i_am_color_1e91">#00001e91</color>
+    <color name="i_am_color_1e92">#00001e92</color>
+    <color name="i_am_color_1e93">#00001e93</color>
+    <color name="i_am_color_1e94">#00001e94</color>
+    <color name="i_am_color_1e95">#00001e95</color>
+    <color name="i_am_color_1e96">#00001e96</color>
+    <color name="i_am_color_1e97">#00001e97</color>
+    <color name="i_am_color_1e98">#00001e98</color>
+    <color name="i_am_color_1e99">#00001e99</color>
+    <color name="i_am_color_1e9a">#00001e9a</color>
+    <color name="i_am_color_1e9b">#00001e9b</color>
+    <color name="i_am_color_1e9c">#00001e9c</color>
+    <color name="i_am_color_1e9d">#00001e9d</color>
+    <color name="i_am_color_1e9e">#00001e9e</color>
+    <color name="i_am_color_1e9f">#00001e9f</color>
+    <color name="i_am_color_1ea0">#00001ea0</color>
+    <color name="i_am_color_1ea1">#00001ea1</color>
+    <color name="i_am_color_1ea2">#00001ea2</color>
+    <color name="i_am_color_1ea3">#00001ea3</color>
+    <color name="i_am_color_1ea4">#00001ea4</color>
+    <color name="i_am_color_1ea5">#00001ea5</color>
+    <color name="i_am_color_1ea6">#00001ea6</color>
+    <color name="i_am_color_1ea7">#00001ea7</color>
+    <color name="i_am_color_1ea8">#00001ea8</color>
+    <color name="i_am_color_1ea9">#00001ea9</color>
+    <color name="i_am_color_1eaa">#00001eaa</color>
+    <color name="i_am_color_1eab">#00001eab</color>
+    <color name="i_am_color_1eac">#00001eac</color>
+    <color name="i_am_color_1ead">#00001ead</color>
+    <color name="i_am_color_1eae">#00001eae</color>
+    <color name="i_am_color_1eaf">#00001eaf</color>
+    <color name="i_am_color_1eb0">#00001eb0</color>
+    <color name="i_am_color_1eb1">#00001eb1</color>
+    <color name="i_am_color_1eb2">#00001eb2</color>
+    <color name="i_am_color_1eb3">#00001eb3</color>
+    <color name="i_am_color_1eb4">#00001eb4</color>
+    <color name="i_am_color_1eb5">#00001eb5</color>
+    <color name="i_am_color_1eb6">#00001eb6</color>
+    <color name="i_am_color_1eb7">#00001eb7</color>
+    <color name="i_am_color_1eb8">#00001eb8</color>
+    <color name="i_am_color_1eb9">#00001eb9</color>
+    <color name="i_am_color_1eba">#00001eba</color>
+    <color name="i_am_color_1ebb">#00001ebb</color>
+    <color name="i_am_color_1ebc">#00001ebc</color>
+    <color name="i_am_color_1ebd">#00001ebd</color>
+    <color name="i_am_color_1ebe">#00001ebe</color>
+    <color name="i_am_color_1ebf">#00001ebf</color>
+    <color name="i_am_color_1ec0">#00001ec0</color>
+    <color name="i_am_color_1ec1">#00001ec1</color>
+    <color name="i_am_color_1ec2">#00001ec2</color>
+    <color name="i_am_color_1ec3">#00001ec3</color>
+    <color name="i_am_color_1ec4">#00001ec4</color>
+    <color name="i_am_color_1ec5">#00001ec5</color>
+    <color name="i_am_color_1ec6">#00001ec6</color>
+    <color name="i_am_color_1ec7">#00001ec7</color>
+    <color name="i_am_color_1ec8">#00001ec8</color>
+    <color name="i_am_color_1ec9">#00001ec9</color>
+    <color name="i_am_color_1eca">#00001eca</color>
+    <color name="i_am_color_1ecb">#00001ecb</color>
+    <color name="i_am_color_1ecc">#00001ecc</color>
+    <color name="i_am_color_1ecd">#00001ecd</color>
+    <color name="i_am_color_1ece">#00001ece</color>
+    <color name="i_am_color_1ecf">#00001ecf</color>
+    <color name="i_am_color_1ed0">#00001ed0</color>
+    <color name="i_am_color_1ed1">#00001ed1</color>
+    <color name="i_am_color_1ed2">#00001ed2</color>
+    <color name="i_am_color_1ed3">#00001ed3</color>
+    <color name="i_am_color_1ed4">#00001ed4</color>
+    <color name="i_am_color_1ed5">#00001ed5</color>
+    <color name="i_am_color_1ed6">#00001ed6</color>
+    <color name="i_am_color_1ed7">#00001ed7</color>
+    <color name="i_am_color_1ed8">#00001ed8</color>
+    <color name="i_am_color_1ed9">#00001ed9</color>
+    <color name="i_am_color_1eda">#00001eda</color>
+    <color name="i_am_color_1edb">#00001edb</color>
+    <color name="i_am_color_1edc">#00001edc</color>
+    <color name="i_am_color_1edd">#00001edd</color>
+    <color name="i_am_color_1ede">#00001ede</color>
+    <color name="i_am_color_1edf">#00001edf</color>
+    <color name="i_am_color_1ee0">#00001ee0</color>
+    <color name="i_am_color_1ee1">#00001ee1</color>
+    <color name="i_am_color_1ee2">#00001ee2</color>
+    <color name="i_am_color_1ee3">#00001ee3</color>
+    <color name="i_am_color_1ee4">#00001ee4</color>
+    <color name="i_am_color_1ee5">#00001ee5</color>
+    <color name="i_am_color_1ee6">#00001ee6</color>
+    <color name="i_am_color_1ee7">#00001ee7</color>
+    <color name="i_am_color_1ee8">#00001ee8</color>
+    <color name="i_am_color_1ee9">#00001ee9</color>
+    <color name="i_am_color_1eea">#00001eea</color>
+    <color name="i_am_color_1eeb">#00001eeb</color>
+    <color name="i_am_color_1eec">#00001eec</color>
+    <color name="i_am_color_1eed">#00001eed</color>
+    <color name="i_am_color_1eee">#00001eee</color>
+    <color name="i_am_color_1eef">#00001eef</color>
+    <color name="i_am_color_1ef0">#00001ef0</color>
+    <color name="i_am_color_1ef1">#00001ef1</color>
+    <color name="i_am_color_1ef2">#00001ef2</color>
+    <color name="i_am_color_1ef3">#00001ef3</color>
+    <color name="i_am_color_1ef4">#00001ef4</color>
+    <color name="i_am_color_1ef5">#00001ef5</color>
+    <color name="i_am_color_1ef6">#00001ef6</color>
+    <color name="i_am_color_1ef7">#00001ef7</color>
+    <color name="i_am_color_1ef8">#00001ef8</color>
+    <color name="i_am_color_1ef9">#00001ef9</color>
+    <color name="i_am_color_1efa">#00001efa</color>
+    <color name="i_am_color_1efb">#00001efb</color>
+    <color name="i_am_color_1efc">#00001efc</color>
+    <color name="i_am_color_1efd">#00001efd</color>
+    <color name="i_am_color_1efe">#00001efe</color>
+    <color name="i_am_color_1eff">#00001eff</color>
+    <color name="i_am_color_1f00">#00001f00</color>
+    <color name="i_am_color_1f01">#00001f01</color>
+    <color name="i_am_color_1f02">#00001f02</color>
+    <color name="i_am_color_1f03">#00001f03</color>
+    <color name="i_am_color_1f04">#00001f04</color>
+    <color name="i_am_color_1f05">#00001f05</color>
+    <color name="i_am_color_1f06">#00001f06</color>
+    <color name="i_am_color_1f07">#00001f07</color>
+    <color name="i_am_color_1f08">#00001f08</color>
+    <color name="i_am_color_1f09">#00001f09</color>
+    <color name="i_am_color_1f0a">#00001f0a</color>
+    <color name="i_am_color_1f0b">#00001f0b</color>
+    <color name="i_am_color_1f0c">#00001f0c</color>
+    <color name="i_am_color_1f0d">#00001f0d</color>
+    <color name="i_am_color_1f0e">#00001f0e</color>
+    <color name="i_am_color_1f0f">#00001f0f</color>
+    <color name="i_am_color_1f10">#00001f10</color>
+    <color name="i_am_color_1f11">#00001f11</color>
+    <color name="i_am_color_1f12">#00001f12</color>
+    <color name="i_am_color_1f13">#00001f13</color>
+    <color name="i_am_color_1f14">#00001f14</color>
+    <color name="i_am_color_1f15">#00001f15</color>
+    <color name="i_am_color_1f16">#00001f16</color>
+    <color name="i_am_color_1f17">#00001f17</color>
+    <color name="i_am_color_1f18">#00001f18</color>
+    <color name="i_am_color_1f19">#00001f19</color>
+    <color name="i_am_color_1f1a">#00001f1a</color>
+    <color name="i_am_color_1f1b">#00001f1b</color>
+    <color name="i_am_color_1f1c">#00001f1c</color>
+    <color name="i_am_color_1f1d">#00001f1d</color>
+    <color name="i_am_color_1f1e">#00001f1e</color>
+    <color name="i_am_color_1f1f">#00001f1f</color>
+    <color name="i_am_color_1f20">#00001f20</color>
+    <color name="i_am_color_1f21">#00001f21</color>
+    <color name="i_am_color_1f22">#00001f22</color>
+    <color name="i_am_color_1f23">#00001f23</color>
+    <color name="i_am_color_1f24">#00001f24</color>
+    <color name="i_am_color_1f25">#00001f25</color>
+    <color name="i_am_color_1f26">#00001f26</color>
+    <color name="i_am_color_1f27">#00001f27</color>
+    <color name="i_am_color_1f28">#00001f28</color>
+    <color name="i_am_color_1f29">#00001f29</color>
+    <color name="i_am_color_1f2a">#00001f2a</color>
+    <color name="i_am_color_1f2b">#00001f2b</color>
+    <color name="i_am_color_1f2c">#00001f2c</color>
+    <color name="i_am_color_1f2d">#00001f2d</color>
+    <color name="i_am_color_1f2e">#00001f2e</color>
+    <color name="i_am_color_1f2f">#00001f2f</color>
+    <color name="i_am_color_1f30">#00001f30</color>
+    <color name="i_am_color_1f31">#00001f31</color>
+    <color name="i_am_color_1f32">#00001f32</color>
+    <color name="i_am_color_1f33">#00001f33</color>
+    <color name="i_am_color_1f34">#00001f34</color>
+    <color name="i_am_color_1f35">#00001f35</color>
+    <color name="i_am_color_1f36">#00001f36</color>
+    <color name="i_am_color_1f37">#00001f37</color>
+    <color name="i_am_color_1f38">#00001f38</color>
+    <color name="i_am_color_1f39">#00001f39</color>
+    <color name="i_am_color_1f3a">#00001f3a</color>
+    <color name="i_am_color_1f3b">#00001f3b</color>
+    <color name="i_am_color_1f3c">#00001f3c</color>
+    <color name="i_am_color_1f3d">#00001f3d</color>
+    <color name="i_am_color_1f3e">#00001f3e</color>
+    <color name="i_am_color_1f3f">#00001f3f</color>
+    <color name="i_am_color_1f40">#00001f40</color>
+    <color name="i_am_color_1f41">#00001f41</color>
+    <color name="i_am_color_1f42">#00001f42</color>
+    <color name="i_am_color_1f43">#00001f43</color>
+    <color name="i_am_color_1f44">#00001f44</color>
+    <color name="i_am_color_1f45">#00001f45</color>
+    <color name="i_am_color_1f46">#00001f46</color>
+    <color name="i_am_color_1f47">#00001f47</color>
+    <color name="i_am_color_1f48">#00001f48</color>
+    <color name="i_am_color_1f49">#00001f49</color>
+    <color name="i_am_color_1f4a">#00001f4a</color>
+    <color name="i_am_color_1f4b">#00001f4b</color>
+    <color name="i_am_color_1f4c">#00001f4c</color>
+    <color name="i_am_color_1f4d">#00001f4d</color>
+    <color name="i_am_color_1f4e">#00001f4e</color>
+    <color name="i_am_color_1f4f">#00001f4f</color>
+    <color name="i_am_color_1f50">#00001f50</color>
+    <color name="i_am_color_1f51">#00001f51</color>
+    <color name="i_am_color_1f52">#00001f52</color>
+    <color name="i_am_color_1f53">#00001f53</color>
+    <color name="i_am_color_1f54">#00001f54</color>
+    <color name="i_am_color_1f55">#00001f55</color>
+    <color name="i_am_color_1f56">#00001f56</color>
+    <color name="i_am_color_1f57">#00001f57</color>
+    <color name="i_am_color_1f58">#00001f58</color>
+    <color name="i_am_color_1f59">#00001f59</color>
+    <color name="i_am_color_1f5a">#00001f5a</color>
+    <color name="i_am_color_1f5b">#00001f5b</color>
+    <color name="i_am_color_1f5c">#00001f5c</color>
+    <color name="i_am_color_1f5d">#00001f5d</color>
+    <color name="i_am_color_1f5e">#00001f5e</color>
+    <color name="i_am_color_1f5f">#00001f5f</color>
+    <color name="i_am_color_1f60">#00001f60</color>
+    <color name="i_am_color_1f61">#00001f61</color>
+    <color name="i_am_color_1f62">#00001f62</color>
+    <color name="i_am_color_1f63">#00001f63</color>
+    <color name="i_am_color_1f64">#00001f64</color>
+    <color name="i_am_color_1f65">#00001f65</color>
+    <color name="i_am_color_1f66">#00001f66</color>
+    <color name="i_am_color_1f67">#00001f67</color>
+    <color name="i_am_color_1f68">#00001f68</color>
+    <color name="i_am_color_1f69">#00001f69</color>
+    <color name="i_am_color_1f6a">#00001f6a</color>
+    <color name="i_am_color_1f6b">#00001f6b</color>
+    <color name="i_am_color_1f6c">#00001f6c</color>
+    <color name="i_am_color_1f6d">#00001f6d</color>
+    <color name="i_am_color_1f6e">#00001f6e</color>
+    <color name="i_am_color_1f6f">#00001f6f</color>
+    <color name="i_am_color_1f70">#00001f70</color>
+    <color name="i_am_color_1f71">#00001f71</color>
+    <color name="i_am_color_1f72">#00001f72</color>
+    <color name="i_am_color_1f73">#00001f73</color>
+    <color name="i_am_color_1f74">#00001f74</color>
+    <color name="i_am_color_1f75">#00001f75</color>
+    <color name="i_am_color_1f76">#00001f76</color>
+    <color name="i_am_color_1f77">#00001f77</color>
+    <color name="i_am_color_1f78">#00001f78</color>
+    <color name="i_am_color_1f79">#00001f79</color>
+    <color name="i_am_color_1f7a">#00001f7a</color>
+    <color name="i_am_color_1f7b">#00001f7b</color>
+    <color name="i_am_color_1f7c">#00001f7c</color>
+    <color name="i_am_color_1f7d">#00001f7d</color>
+    <color name="i_am_color_1f7e">#00001f7e</color>
+    <color name="i_am_color_1f7f">#00001f7f</color>
+    <color name="i_am_color_1f80">#00001f80</color>
+    <color name="i_am_color_1f81">#00001f81</color>
+    <color name="i_am_color_1f82">#00001f82</color>
+    <color name="i_am_color_1f83">#00001f83</color>
+    <color name="i_am_color_1f84">#00001f84</color>
+    <color name="i_am_color_1f85">#00001f85</color>
+    <color name="i_am_color_1f86">#00001f86</color>
+    <color name="i_am_color_1f87">#00001f87</color>
+    <color name="i_am_color_1f88">#00001f88</color>
+    <color name="i_am_color_1f89">#00001f89</color>
+    <color name="i_am_color_1f8a">#00001f8a</color>
+    <color name="i_am_color_1f8b">#00001f8b</color>
+    <color name="i_am_color_1f8c">#00001f8c</color>
+    <color name="i_am_color_1f8d">#00001f8d</color>
+    <color name="i_am_color_1f8e">#00001f8e</color>
+    <color name="i_am_color_1f8f">#00001f8f</color>
+    <color name="i_am_color_1f90">#00001f90</color>
+    <color name="i_am_color_1f91">#00001f91</color>
+    <color name="i_am_color_1f92">#00001f92</color>
+    <color name="i_am_color_1f93">#00001f93</color>
+    <color name="i_am_color_1f94">#00001f94</color>
+    <color name="i_am_color_1f95">#00001f95</color>
+    <color name="i_am_color_1f96">#00001f96</color>
+    <color name="i_am_color_1f97">#00001f97</color>
+    <color name="i_am_color_1f98">#00001f98</color>
+    <color name="i_am_color_1f99">#00001f99</color>
+    <color name="i_am_color_1f9a">#00001f9a</color>
+    <color name="i_am_color_1f9b">#00001f9b</color>
+    <color name="i_am_color_1f9c">#00001f9c</color>
+    <color name="i_am_color_1f9d">#00001f9d</color>
+    <color name="i_am_color_1f9e">#00001f9e</color>
+    <color name="i_am_color_1f9f">#00001f9f</color>
+    <color name="i_am_color_1fa0">#00001fa0</color>
+    <color name="i_am_color_1fa1">#00001fa1</color>
+    <color name="i_am_color_1fa2">#00001fa2</color>
+    <color name="i_am_color_1fa3">#00001fa3</color>
+    <color name="i_am_color_1fa4">#00001fa4</color>
+    <color name="i_am_color_1fa5">#00001fa5</color>
+    <color name="i_am_color_1fa6">#00001fa6</color>
+    <color name="i_am_color_1fa7">#00001fa7</color>
+    <color name="i_am_color_1fa8">#00001fa8</color>
+    <color name="i_am_color_1fa9">#00001fa9</color>
+    <color name="i_am_color_1faa">#00001faa</color>
+    <color name="i_am_color_1fab">#00001fab</color>
+    <color name="i_am_color_1fac">#00001fac</color>
+    <color name="i_am_color_1fad">#00001fad</color>
+    <color name="i_am_color_1fae">#00001fae</color>
+    <color name="i_am_color_1faf">#00001faf</color>
+    <color name="i_am_color_1fb0">#00001fb0</color>
+    <color name="i_am_color_1fb1">#00001fb1</color>
+    <color name="i_am_color_1fb2">#00001fb2</color>
+    <color name="i_am_color_1fb3">#00001fb3</color>
+    <color name="i_am_color_1fb4">#00001fb4</color>
+    <color name="i_am_color_1fb5">#00001fb5</color>
+    <color name="i_am_color_1fb6">#00001fb6</color>
+    <color name="i_am_color_1fb7">#00001fb7</color>
+    <color name="i_am_color_1fb8">#00001fb8</color>
+    <color name="i_am_color_1fb9">#00001fb9</color>
+    <color name="i_am_color_1fba">#00001fba</color>
+    <color name="i_am_color_1fbb">#00001fbb</color>
+    <color name="i_am_color_1fbc">#00001fbc</color>
+    <color name="i_am_color_1fbd">#00001fbd</color>
+    <color name="i_am_color_1fbe">#00001fbe</color>
+    <color name="i_am_color_1fbf">#00001fbf</color>
+    <color name="i_am_color_1fc0">#00001fc0</color>
+    <color name="i_am_color_1fc1">#00001fc1</color>
+    <color name="i_am_color_1fc2">#00001fc2</color>
+    <color name="i_am_color_1fc3">#00001fc3</color>
+    <color name="i_am_color_1fc4">#00001fc4</color>
+    <color name="i_am_color_1fc5">#00001fc5</color>
+    <color name="i_am_color_1fc6">#00001fc6</color>
+    <color name="i_am_color_1fc7">#00001fc7</color>
+    <color name="i_am_color_1fc8">#00001fc8</color>
+    <color name="i_am_color_1fc9">#00001fc9</color>
+    <color name="i_am_color_1fca">#00001fca</color>
+    <color name="i_am_color_1fcb">#00001fcb</color>
+    <color name="i_am_color_1fcc">#00001fcc</color>
+    <color name="i_am_color_1fcd">#00001fcd</color>
+    <color name="i_am_color_1fce">#00001fce</color>
+    <color name="i_am_color_1fcf">#00001fcf</color>
+    <color name="i_am_color_1fd0">#00001fd0</color>
+    <color name="i_am_color_1fd1">#00001fd1</color>
+    <color name="i_am_color_1fd2">#00001fd2</color>
+    <color name="i_am_color_1fd3">#00001fd3</color>
+    <color name="i_am_color_1fd4">#00001fd4</color>
+    <color name="i_am_color_1fd5">#00001fd5</color>
+    <color name="i_am_color_1fd6">#00001fd6</color>
+    <color name="i_am_color_1fd7">#00001fd7</color>
+    <color name="i_am_color_1fd8">#00001fd8</color>
+    <color name="i_am_color_1fd9">#00001fd9</color>
+    <color name="i_am_color_1fda">#00001fda</color>
+    <color name="i_am_color_1fdb">#00001fdb</color>
+    <color name="i_am_color_1fdc">#00001fdc</color>
+    <color name="i_am_color_1fdd">#00001fdd</color>
+    <color name="i_am_color_1fde">#00001fde</color>
+    <color name="i_am_color_1fdf">#00001fdf</color>
+    <color name="i_am_color_1fe0">#00001fe0</color>
+    <color name="i_am_color_1fe1">#00001fe1</color>
+    <color name="i_am_color_1fe2">#00001fe2</color>
+    <color name="i_am_color_1fe3">#00001fe3</color>
+    <color name="i_am_color_1fe4">#00001fe4</color>
+    <color name="i_am_color_1fe5">#00001fe5</color>
+    <color name="i_am_color_1fe6">#00001fe6</color>
+    <color name="i_am_color_1fe7">#00001fe7</color>
+    <color name="i_am_color_1fe8">#00001fe8</color>
+    <color name="i_am_color_1fe9">#00001fe9</color>
+    <color name="i_am_color_1fea">#00001fea</color>
+    <color name="i_am_color_1feb">#00001feb</color>
+    <color name="i_am_color_1fec">#00001fec</color>
+    <color name="i_am_color_1fed">#00001fed</color>
+    <color name="i_am_color_1fee">#00001fee</color>
+    <color name="i_am_color_1fef">#00001fef</color>
+    <color name="i_am_color_1ff0">#00001ff0</color>
+    <color name="i_am_color_1ff1">#00001ff1</color>
+    <color name="i_am_color_1ff2">#00001ff2</color>
+    <color name="i_am_color_1ff3">#00001ff3</color>
+    <color name="i_am_color_1ff4">#00001ff4</color>
+    <color name="i_am_color_1ff5">#00001ff5</color>
+    <color name="i_am_color_1ff6">#00001ff6</color>
+    <color name="i_am_color_1ff7">#00001ff7</color>
+    <color name="i_am_color_1ff8">#00001ff8</color>
+    <color name="i_am_color_1ff9">#00001ff9</color>
+    <color name="i_am_color_1ffa">#00001ffa</color>
+    <color name="i_am_color_1ffb">#00001ffb</color>
+    <color name="i_am_color_1ffc">#00001ffc</color>
+    <color name="i_am_color_1ffd">#00001ffd</color>
+    <color name="i_am_color_1ffe">#00001ffe</color>
+    <color name="i_am_color_1fff">#00001fff</color>
+    <color name="i_am_color_2000">#00002000</color>
+    <color name="i_am_color_2001">#00002001</color>
+    <color name="i_am_color_2002">#00002002</color>
+    <color name="i_am_color_2003">#00002003</color>
+    <color name="i_am_color_2004">#00002004</color>
+    <color name="i_am_color_2005">#00002005</color>
+    <color name="i_am_color_2006">#00002006</color>
+    <color name="i_am_color_2007">#00002007</color>
+    <color name="i_am_color_2008">#00002008</color>
+    <color name="i_am_color_2009">#00002009</color>
+    <color name="i_am_color_200a">#0000200a</color>
+    <color name="i_am_color_200b">#0000200b</color>
+    <color name="i_am_color_200c">#0000200c</color>
+    <color name="i_am_color_200d">#0000200d</color>
+    <color name="i_am_color_200e">#0000200e</color>
+    <color name="i_am_color_200f">#0000200f</color>
+    <color name="i_am_color_2010">#00002010</color>
+    <color name="i_am_color_2011">#00002011</color>
+    <color name="i_am_color_2012">#00002012</color>
+    <color name="i_am_color_2013">#00002013</color>
+    <color name="i_am_color_2014">#00002014</color>
+    <color name="i_am_color_2015">#00002015</color>
+    <color name="i_am_color_2016">#00002016</color>
+    <color name="i_am_color_2017">#00002017</color>
+    <color name="i_am_color_2018">#00002018</color>
+    <color name="i_am_color_2019">#00002019</color>
+    <color name="i_am_color_201a">#0000201a</color>
+    <color name="i_am_color_201b">#0000201b</color>
+    <color name="i_am_color_201c">#0000201c</color>
+    <color name="i_am_color_201d">#0000201d</color>
+    <color name="i_am_color_201e">#0000201e</color>
+    <color name="i_am_color_201f">#0000201f</color>
+    <color name="i_am_color_2020">#00002020</color>
+    <color name="i_am_color_2021">#00002021</color>
+    <color name="i_am_color_2022">#00002022</color>
+    <color name="i_am_color_2023">#00002023</color>
+    <color name="i_am_color_2024">#00002024</color>
+    <color name="i_am_color_2025">#00002025</color>
+    <color name="i_am_color_2026">#00002026</color>
+    <color name="i_am_color_2027">#00002027</color>
+    <color name="i_am_color_2028">#00002028</color>
+    <color name="i_am_color_2029">#00002029</color>
+    <color name="i_am_color_202a">#0000202a</color>
+    <color name="i_am_color_202b">#0000202b</color>
+    <color name="i_am_color_202c">#0000202c</color>
+    <color name="i_am_color_202d">#0000202d</color>
+    <color name="i_am_color_202e">#0000202e</color>
+    <color name="i_am_color_202f">#0000202f</color>
+    <color name="i_am_color_2030">#00002030</color>
+    <color name="i_am_color_2031">#00002031</color>
+    <color name="i_am_color_2032">#00002032</color>
+    <color name="i_am_color_2033">#00002033</color>
+    <color name="i_am_color_2034">#00002034</color>
+    <color name="i_am_color_2035">#00002035</color>
+    <color name="i_am_color_2036">#00002036</color>
+    <color name="i_am_color_2037">#00002037</color>
+    <color name="i_am_color_2038">#00002038</color>
+    <color name="i_am_color_2039">#00002039</color>
+    <color name="i_am_color_203a">#0000203a</color>
+    <color name="i_am_color_203b">#0000203b</color>
+    <color name="i_am_color_203c">#0000203c</color>
+    <color name="i_am_color_203d">#0000203d</color>
+    <color name="i_am_color_203e">#0000203e</color>
+    <color name="i_am_color_203f">#0000203f</color>
+    <color name="i_am_color_2040">#00002040</color>
+    <color name="i_am_color_2041">#00002041</color>
+    <color name="i_am_color_2042">#00002042</color>
+    <color name="i_am_color_2043">#00002043</color>
+    <color name="i_am_color_2044">#00002044</color>
+    <color name="i_am_color_2045">#00002045</color>
+    <color name="i_am_color_2046">#00002046</color>
+    <color name="i_am_color_2047">#00002047</color>
+    <color name="i_am_color_2048">#00002048</color>
+    <color name="i_am_color_2049">#00002049</color>
+    <color name="i_am_color_204a">#0000204a</color>
+    <color name="i_am_color_204b">#0000204b</color>
+    <color name="i_am_color_204c">#0000204c</color>
+    <color name="i_am_color_204d">#0000204d</color>
+    <color name="i_am_color_204e">#0000204e</color>
+    <color name="i_am_color_204f">#0000204f</color>
+    <color name="i_am_color_2050">#00002050</color>
+    <color name="i_am_color_2051">#00002051</color>
+    <color name="i_am_color_2052">#00002052</color>
+    <color name="i_am_color_2053">#00002053</color>
+    <color name="i_am_color_2054">#00002054</color>
+    <color name="i_am_color_2055">#00002055</color>
+    <color name="i_am_color_2056">#00002056</color>
+    <color name="i_am_color_2057">#00002057</color>
+    <color name="i_am_color_2058">#00002058</color>
+    <color name="i_am_color_2059">#00002059</color>
+    <color name="i_am_color_205a">#0000205a</color>
+    <color name="i_am_color_205b">#0000205b</color>
+    <color name="i_am_color_205c">#0000205c</color>
+    <color name="i_am_color_205d">#0000205d</color>
+    <color name="i_am_color_205e">#0000205e</color>
+    <color name="i_am_color_205f">#0000205f</color>
+    <color name="i_am_color_2060">#00002060</color>
+    <color name="i_am_color_2061">#00002061</color>
+    <color name="i_am_color_2062">#00002062</color>
+    <color name="i_am_color_2063">#00002063</color>
+    <color name="i_am_color_2064">#00002064</color>
+    <color name="i_am_color_2065">#00002065</color>
+    <color name="i_am_color_2066">#00002066</color>
+    <color name="i_am_color_2067">#00002067</color>
+    <color name="i_am_color_2068">#00002068</color>
+    <color name="i_am_color_2069">#00002069</color>
+    <color name="i_am_color_206a">#0000206a</color>
+    <color name="i_am_color_206b">#0000206b</color>
+    <color name="i_am_color_206c">#0000206c</color>
+    <color name="i_am_color_206d">#0000206d</color>
+    <color name="i_am_color_206e">#0000206e</color>
+    <color name="i_am_color_206f">#0000206f</color>
+    <color name="i_am_color_2070">#00002070</color>
+    <color name="i_am_color_2071">#00002071</color>
+    <color name="i_am_color_2072">#00002072</color>
+    <color name="i_am_color_2073">#00002073</color>
+    <color name="i_am_color_2074">#00002074</color>
+    <color name="i_am_color_2075">#00002075</color>
+    <color name="i_am_color_2076">#00002076</color>
+    <color name="i_am_color_2077">#00002077</color>
+    <color name="i_am_color_2078">#00002078</color>
+    <color name="i_am_color_2079">#00002079</color>
+    <color name="i_am_color_207a">#0000207a</color>
+    <color name="i_am_color_207b">#0000207b</color>
+    <color name="i_am_color_207c">#0000207c</color>
+    <color name="i_am_color_207d">#0000207d</color>
+    <color name="i_am_color_207e">#0000207e</color>
+    <color name="i_am_color_207f">#0000207f</color>
+    <color name="i_am_color_2080">#00002080</color>
+    <color name="i_am_color_2081">#00002081</color>
+    <color name="i_am_color_2082">#00002082</color>
+    <color name="i_am_color_2083">#00002083</color>
+    <color name="i_am_color_2084">#00002084</color>
+    <color name="i_am_color_2085">#00002085</color>
+    <color name="i_am_color_2086">#00002086</color>
+    <color name="i_am_color_2087">#00002087</color>
+    <color name="i_am_color_2088">#00002088</color>
+    <color name="i_am_color_2089">#00002089</color>
+    <color name="i_am_color_208a">#0000208a</color>
+    <color name="i_am_color_208b">#0000208b</color>
+    <color name="i_am_color_208c">#0000208c</color>
+    <color name="i_am_color_208d">#0000208d</color>
+    <color name="i_am_color_208e">#0000208e</color>
+    <color name="i_am_color_208f">#0000208f</color>
+    <color name="i_am_color_2090">#00002090</color>
+    <color name="i_am_color_2091">#00002091</color>
+    <color name="i_am_color_2092">#00002092</color>
+    <color name="i_am_color_2093">#00002093</color>
+    <color name="i_am_color_2094">#00002094</color>
+    <color name="i_am_color_2095">#00002095</color>
+    <color name="i_am_color_2096">#00002096</color>
+    <color name="i_am_color_2097">#00002097</color>
+    <color name="i_am_color_2098">#00002098</color>
+    <color name="i_am_color_2099">#00002099</color>
+    <color name="i_am_color_209a">#0000209a</color>
+    <color name="i_am_color_209b">#0000209b</color>
+    <color name="i_am_color_209c">#0000209c</color>
+    <color name="i_am_color_209d">#0000209d</color>
+    <color name="i_am_color_209e">#0000209e</color>
+    <color name="i_am_color_209f">#0000209f</color>
+    <color name="i_am_color_20a0">#000020a0</color>
+    <color name="i_am_color_20a1">#000020a1</color>
+    <color name="i_am_color_20a2">#000020a2</color>
+    <color name="i_am_color_20a3">#000020a3</color>
+    <color name="i_am_color_20a4">#000020a4</color>
+    <color name="i_am_color_20a5">#000020a5</color>
+    <color name="i_am_color_20a6">#000020a6</color>
+    <color name="i_am_color_20a7">#000020a7</color>
+    <color name="i_am_color_20a8">#000020a8</color>
+    <color name="i_am_color_20a9">#000020a9</color>
+    <color name="i_am_color_20aa">#000020aa</color>
+    <color name="i_am_color_20ab">#000020ab</color>
+    <color name="i_am_color_20ac">#000020ac</color>
+    <color name="i_am_color_20ad">#000020ad</color>
+    <color name="i_am_color_20ae">#000020ae</color>
+    <color name="i_am_color_20af">#000020af</color>
+    <color name="i_am_color_20b0">#000020b0</color>
+    <color name="i_am_color_20b1">#000020b1</color>
+    <color name="i_am_color_20b2">#000020b2</color>
+    <color name="i_am_color_20b3">#000020b3</color>
+    <color name="i_am_color_20b4">#000020b4</color>
+    <color name="i_am_color_20b5">#000020b5</color>
+    <color name="i_am_color_20b6">#000020b6</color>
+    <color name="i_am_color_20b7">#000020b7</color>
+    <color name="i_am_color_20b8">#000020b8</color>
+    <color name="i_am_color_20b9">#000020b9</color>
+    <color name="i_am_color_20ba">#000020ba</color>
+    <color name="i_am_color_20bb">#000020bb</color>
+    <color name="i_am_color_20bc">#000020bc</color>
+    <color name="i_am_color_20bd">#000020bd</color>
+    <color name="i_am_color_20be">#000020be</color>
+    <color name="i_am_color_20bf">#000020bf</color>
+    <color name="i_am_color_20c0">#000020c0</color>
+    <color name="i_am_color_20c1">#000020c1</color>
+    <color name="i_am_color_20c2">#000020c2</color>
+    <color name="i_am_color_20c3">#000020c3</color>
+    <color name="i_am_color_20c4">#000020c4</color>
+    <color name="i_am_color_20c5">#000020c5</color>
+    <color name="i_am_color_20c6">#000020c6</color>
+    <color name="i_am_color_20c7">#000020c7</color>
+    <color name="i_am_color_20c8">#000020c8</color>
+    <color name="i_am_color_20c9">#000020c9</color>
+    <color name="i_am_color_20ca">#000020ca</color>
+    <color name="i_am_color_20cb">#000020cb</color>
+    <color name="i_am_color_20cc">#000020cc</color>
+    <color name="i_am_color_20cd">#000020cd</color>
+    <color name="i_am_color_20ce">#000020ce</color>
+    <color name="i_am_color_20cf">#000020cf</color>
+    <color name="i_am_color_20d0">#000020d0</color>
+    <color name="i_am_color_20d1">#000020d1</color>
+    <color name="i_am_color_20d2">#000020d2</color>
+    <color name="i_am_color_20d3">#000020d3</color>
+    <color name="i_am_color_20d4">#000020d4</color>
+    <color name="i_am_color_20d5">#000020d5</color>
+    <color name="i_am_color_20d6">#000020d6</color>
+    <color name="i_am_color_20d7">#000020d7</color>
+    <color name="i_am_color_20d8">#000020d8</color>
+    <color name="i_am_color_20d9">#000020d9</color>
+    <color name="i_am_color_20da">#000020da</color>
+    <color name="i_am_color_20db">#000020db</color>
+    <color name="i_am_color_20dc">#000020dc</color>
+    <color name="i_am_color_20dd">#000020dd</color>
+    <color name="i_am_color_20de">#000020de</color>
+    <color name="i_am_color_20df">#000020df</color>
+    <color name="i_am_color_20e0">#000020e0</color>
+    <color name="i_am_color_20e1">#000020e1</color>
+    <color name="i_am_color_20e2">#000020e2</color>
+    <color name="i_am_color_20e3">#000020e3</color>
+    <color name="i_am_color_20e4">#000020e4</color>
+    <color name="i_am_color_20e5">#000020e5</color>
+    <color name="i_am_color_20e6">#000020e6</color>
+    <color name="i_am_color_20e7">#000020e7</color>
+    <color name="i_am_color_20e8">#000020e8</color>
+    <color name="i_am_color_20e9">#000020e9</color>
+    <color name="i_am_color_20ea">#000020ea</color>
+    <color name="i_am_color_20eb">#000020eb</color>
+    <color name="i_am_color_20ec">#000020ec</color>
+    <color name="i_am_color_20ed">#000020ed</color>
+    <color name="i_am_color_20ee">#000020ee</color>
+    <color name="i_am_color_20ef">#000020ef</color>
+    <color name="i_am_color_20f0">#000020f0</color>
+    <color name="i_am_color_20f1">#000020f1</color>
+    <color name="i_am_color_20f2">#000020f2</color>
+    <color name="i_am_color_20f3">#000020f3</color>
+    <color name="i_am_color_20f4">#000020f4</color>
+    <color name="i_am_color_20f5">#000020f5</color>
+    <color name="i_am_color_20f6">#000020f6</color>
+    <color name="i_am_color_20f7">#000020f7</color>
+    <color name="i_am_color_20f8">#000020f8</color>
+    <color name="i_am_color_20f9">#000020f9</color>
+    <color name="i_am_color_20fa">#000020fa</color>
+    <color name="i_am_color_20fb">#000020fb</color>
+    <color name="i_am_color_20fc">#000020fc</color>
+    <color name="i_am_color_20fd">#000020fd</color>
+    <color name="i_am_color_20fe">#000020fe</color>
+    <color name="i_am_color_20ff">#000020ff</color>
+    <color name="i_am_color_2100">#00002100</color>
+    <color name="i_am_color_2101">#00002101</color>
+    <color name="i_am_color_2102">#00002102</color>
+    <color name="i_am_color_2103">#00002103</color>
+    <color name="i_am_color_2104">#00002104</color>
+    <color name="i_am_color_2105">#00002105</color>
+    <color name="i_am_color_2106">#00002106</color>
+    <color name="i_am_color_2107">#00002107</color>
+    <color name="i_am_color_2108">#00002108</color>
+    <color name="i_am_color_2109">#00002109</color>
+    <color name="i_am_color_210a">#0000210a</color>
+    <color name="i_am_color_210b">#0000210b</color>
+    <color name="i_am_color_210c">#0000210c</color>
+    <color name="i_am_color_210d">#0000210d</color>
+    <color name="i_am_color_210e">#0000210e</color>
+    <color name="i_am_color_210f">#0000210f</color>
+    <color name="i_am_color_2110">#00002110</color>
+    <color name="i_am_color_2111">#00002111</color>
+    <color name="i_am_color_2112">#00002112</color>
+    <color name="i_am_color_2113">#00002113</color>
+    <color name="i_am_color_2114">#00002114</color>
+    <color name="i_am_color_2115">#00002115</color>
+    <color name="i_am_color_2116">#00002116</color>
+    <color name="i_am_color_2117">#00002117</color>
+    <color name="i_am_color_2118">#00002118</color>
+    <color name="i_am_color_2119">#00002119</color>
+    <color name="i_am_color_211a">#0000211a</color>
+    <color name="i_am_color_211b">#0000211b</color>
+    <color name="i_am_color_211c">#0000211c</color>
+    <color name="i_am_color_211d">#0000211d</color>
+    <color name="i_am_color_211e">#0000211e</color>
+    <color name="i_am_color_211f">#0000211f</color>
+    <color name="i_am_color_2120">#00002120</color>
+    <color name="i_am_color_2121">#00002121</color>
+    <color name="i_am_color_2122">#00002122</color>
+    <color name="i_am_color_2123">#00002123</color>
+    <color name="i_am_color_2124">#00002124</color>
+    <color name="i_am_color_2125">#00002125</color>
+    <color name="i_am_color_2126">#00002126</color>
+    <color name="i_am_color_2127">#00002127</color>
+    <color name="i_am_color_2128">#00002128</color>
+    <color name="i_am_color_2129">#00002129</color>
+    <color name="i_am_color_212a">#0000212a</color>
+    <color name="i_am_color_212b">#0000212b</color>
+    <color name="i_am_color_212c">#0000212c</color>
+    <color name="i_am_color_212d">#0000212d</color>
+    <color name="i_am_color_212e">#0000212e</color>
+    <color name="i_am_color_212f">#0000212f</color>
+    <color name="i_am_color_2130">#00002130</color>
+    <color name="i_am_color_2131">#00002131</color>
+    <color name="i_am_color_2132">#00002132</color>
+    <color name="i_am_color_2133">#00002133</color>
+    <color name="i_am_color_2134">#00002134</color>
+    <color name="i_am_color_2135">#00002135</color>
+    <color name="i_am_color_2136">#00002136</color>
+    <color name="i_am_color_2137">#00002137</color>
+    <color name="i_am_color_2138">#00002138</color>
+    <color name="i_am_color_2139">#00002139</color>
+    <color name="i_am_color_213a">#0000213a</color>
+    <color name="i_am_color_213b">#0000213b</color>
+    <color name="i_am_color_213c">#0000213c</color>
+    <color name="i_am_color_213d">#0000213d</color>
+    <color name="i_am_color_213e">#0000213e</color>
+    <color name="i_am_color_213f">#0000213f</color>
+    <color name="i_am_color_2140">#00002140</color>
+    <color name="i_am_color_2141">#00002141</color>
+    <color name="i_am_color_2142">#00002142</color>
+    <color name="i_am_color_2143">#00002143</color>
+    <color name="i_am_color_2144">#00002144</color>
+    <color name="i_am_color_2145">#00002145</color>
+    <color name="i_am_color_2146">#00002146</color>
+    <color name="i_am_color_2147">#00002147</color>
+    <color name="i_am_color_2148">#00002148</color>
+    <color name="i_am_color_2149">#00002149</color>
+    <color name="i_am_color_214a">#0000214a</color>
+    <color name="i_am_color_214b">#0000214b</color>
+    <color name="i_am_color_214c">#0000214c</color>
+    <color name="i_am_color_214d">#0000214d</color>
+    <color name="i_am_color_214e">#0000214e</color>
+    <color name="i_am_color_214f">#0000214f</color>
+    <color name="i_am_color_2150">#00002150</color>
+    <color name="i_am_color_2151">#00002151</color>
+    <color name="i_am_color_2152">#00002152</color>
+    <color name="i_am_color_2153">#00002153</color>
+    <color name="i_am_color_2154">#00002154</color>
+    <color name="i_am_color_2155">#00002155</color>
+    <color name="i_am_color_2156">#00002156</color>
+    <color name="i_am_color_2157">#00002157</color>
+    <color name="i_am_color_2158">#00002158</color>
+    <color name="i_am_color_2159">#00002159</color>
+    <color name="i_am_color_215a">#0000215a</color>
+    <color name="i_am_color_215b">#0000215b</color>
+    <color name="i_am_color_215c">#0000215c</color>
+    <color name="i_am_color_215d">#0000215d</color>
+    <color name="i_am_color_215e">#0000215e</color>
+    <color name="i_am_color_215f">#0000215f</color>
+    <color name="i_am_color_2160">#00002160</color>
+    <color name="i_am_color_2161">#00002161</color>
+    <color name="i_am_color_2162">#00002162</color>
+    <color name="i_am_color_2163">#00002163</color>
+    <color name="i_am_color_2164">#00002164</color>
+    <color name="i_am_color_2165">#00002165</color>
+    <color name="i_am_color_2166">#00002166</color>
+    <color name="i_am_color_2167">#00002167</color>
+    <color name="i_am_color_2168">#00002168</color>
+    <color name="i_am_color_2169">#00002169</color>
+    <color name="i_am_color_216a">#0000216a</color>
+    <color name="i_am_color_216b">#0000216b</color>
+    <color name="i_am_color_216c">#0000216c</color>
+    <color name="i_am_color_216d">#0000216d</color>
+    <color name="i_am_color_216e">#0000216e</color>
+    <color name="i_am_color_216f">#0000216f</color>
+    <color name="i_am_color_2170">#00002170</color>
+    <color name="i_am_color_2171">#00002171</color>
+    <color name="i_am_color_2172">#00002172</color>
+    <color name="i_am_color_2173">#00002173</color>
+    <color name="i_am_color_2174">#00002174</color>
+    <color name="i_am_color_2175">#00002175</color>
+    <color name="i_am_color_2176">#00002176</color>
+    <color name="i_am_color_2177">#00002177</color>
+    <color name="i_am_color_2178">#00002178</color>
+    <color name="i_am_color_2179">#00002179</color>
+    <color name="i_am_color_217a">#0000217a</color>
+    <color name="i_am_color_217b">#0000217b</color>
+    <color name="i_am_color_217c">#0000217c</color>
+    <color name="i_am_color_217d">#0000217d</color>
+    <color name="i_am_color_217e">#0000217e</color>
+    <color name="i_am_color_217f">#0000217f</color>
+    <color name="i_am_color_2180">#00002180</color>
+    <color name="i_am_color_2181">#00002181</color>
+    <color name="i_am_color_2182">#00002182</color>
+    <color name="i_am_color_2183">#00002183</color>
+    <color name="i_am_color_2184">#00002184</color>
+    <color name="i_am_color_2185">#00002185</color>
+    <color name="i_am_color_2186">#00002186</color>
+    <color name="i_am_color_2187">#00002187</color>
+    <color name="i_am_color_2188">#00002188</color>
+    <color name="i_am_color_2189">#00002189</color>
+    <color name="i_am_color_218a">#0000218a</color>
+    <color name="i_am_color_218b">#0000218b</color>
+    <color name="i_am_color_218c">#0000218c</color>
+    <color name="i_am_color_218d">#0000218d</color>
+    <color name="i_am_color_218e">#0000218e</color>
+    <color name="i_am_color_218f">#0000218f</color>
+    <color name="i_am_color_2190">#00002190</color>
+    <color name="i_am_color_2191">#00002191</color>
+    <color name="i_am_color_2192">#00002192</color>
+    <color name="i_am_color_2193">#00002193</color>
+    <color name="i_am_color_2194">#00002194</color>
+    <color name="i_am_color_2195">#00002195</color>
+    <color name="i_am_color_2196">#00002196</color>
+    <color name="i_am_color_2197">#00002197</color>
+    <color name="i_am_color_2198">#00002198</color>
+    <color name="i_am_color_2199">#00002199</color>
+    <color name="i_am_color_219a">#0000219a</color>
+    <color name="i_am_color_219b">#0000219b</color>
+    <color name="i_am_color_219c">#0000219c</color>
+    <color name="i_am_color_219d">#0000219d</color>
+    <color name="i_am_color_219e">#0000219e</color>
+    <color name="i_am_color_219f">#0000219f</color>
+    <color name="i_am_color_21a0">#000021a0</color>
+    <color name="i_am_color_21a1">#000021a1</color>
+    <color name="i_am_color_21a2">#000021a2</color>
+    <color name="i_am_color_21a3">#000021a3</color>
+    <color name="i_am_color_21a4">#000021a4</color>
+    <color name="i_am_color_21a5">#000021a5</color>
+    <color name="i_am_color_21a6">#000021a6</color>
+    <color name="i_am_color_21a7">#000021a7</color>
+    <color name="i_am_color_21a8">#000021a8</color>
+    <color name="i_am_color_21a9">#000021a9</color>
+    <color name="i_am_color_21aa">#000021aa</color>
+    <color name="i_am_color_21ab">#000021ab</color>
+    <color name="i_am_color_21ac">#000021ac</color>
+    <color name="i_am_color_21ad">#000021ad</color>
+    <color name="i_am_color_21ae">#000021ae</color>
+    <color name="i_am_color_21af">#000021af</color>
+    <color name="i_am_color_21b0">#000021b0</color>
+    <color name="i_am_color_21b1">#000021b1</color>
+    <color name="i_am_color_21b2">#000021b2</color>
+    <color name="i_am_color_21b3">#000021b3</color>
+    <color name="i_am_color_21b4">#000021b4</color>
+    <color name="i_am_color_21b5">#000021b5</color>
+    <color name="i_am_color_21b6">#000021b6</color>
+    <color name="i_am_color_21b7">#000021b7</color>
+    <color name="i_am_color_21b8">#000021b8</color>
+    <color name="i_am_color_21b9">#000021b9</color>
+    <color name="i_am_color_21ba">#000021ba</color>
+    <color name="i_am_color_21bb">#000021bb</color>
+    <color name="i_am_color_21bc">#000021bc</color>
+    <color name="i_am_color_21bd">#000021bd</color>
+    <color name="i_am_color_21be">#000021be</color>
+    <color name="i_am_color_21bf">#000021bf</color>
+    <color name="i_am_color_21c0">#000021c0</color>
+    <color name="i_am_color_21c1">#000021c1</color>
+    <color name="i_am_color_21c2">#000021c2</color>
+    <color name="i_am_color_21c3">#000021c3</color>
+    <color name="i_am_color_21c4">#000021c4</color>
+    <color name="i_am_color_21c5">#000021c5</color>
+    <color name="i_am_color_21c6">#000021c6</color>
+    <color name="i_am_color_21c7">#000021c7</color>
+    <color name="i_am_color_21c8">#000021c8</color>
+    <color name="i_am_color_21c9">#000021c9</color>
+    <color name="i_am_color_21ca">#000021ca</color>
+    <color name="i_am_color_21cb">#000021cb</color>
+    <color name="i_am_color_21cc">#000021cc</color>
+    <color name="i_am_color_21cd">#000021cd</color>
+    <color name="i_am_color_21ce">#000021ce</color>
+    <color name="i_am_color_21cf">#000021cf</color>
+    <color name="i_am_color_21d0">#000021d0</color>
+    <color name="i_am_color_21d1">#000021d1</color>
+    <color name="i_am_color_21d2">#000021d2</color>
+    <color name="i_am_color_21d3">#000021d3</color>
+    <color name="i_am_color_21d4">#000021d4</color>
+    <color name="i_am_color_21d5">#000021d5</color>
+    <color name="i_am_color_21d6">#000021d6</color>
+    <color name="i_am_color_21d7">#000021d7</color>
+    <color name="i_am_color_21d8">#000021d8</color>
+    <color name="i_am_color_21d9">#000021d9</color>
+    <color name="i_am_color_21da">#000021da</color>
+    <color name="i_am_color_21db">#000021db</color>
+    <color name="i_am_color_21dc">#000021dc</color>
+    <color name="i_am_color_21dd">#000021dd</color>
+    <color name="i_am_color_21de">#000021de</color>
+    <color name="i_am_color_21df">#000021df</color>
+    <color name="i_am_color_21e0">#000021e0</color>
+    <color name="i_am_color_21e1">#000021e1</color>
+    <color name="i_am_color_21e2">#000021e2</color>
+    <color name="i_am_color_21e3">#000021e3</color>
+    <color name="i_am_color_21e4">#000021e4</color>
+    <color name="i_am_color_21e5">#000021e5</color>
+    <color name="i_am_color_21e6">#000021e6</color>
+    <color name="i_am_color_21e7">#000021e7</color>
+    <color name="i_am_color_21e8">#000021e8</color>
+    <color name="i_am_color_21e9">#000021e9</color>
+    <color name="i_am_color_21ea">#000021ea</color>
+    <color name="i_am_color_21eb">#000021eb</color>
+    <color name="i_am_color_21ec">#000021ec</color>
+    <color name="i_am_color_21ed">#000021ed</color>
+    <color name="i_am_color_21ee">#000021ee</color>
+    <color name="i_am_color_21ef">#000021ef</color>
+    <color name="i_am_color_21f0">#000021f0</color>
+    <color name="i_am_color_21f1">#000021f1</color>
+    <color name="i_am_color_21f2">#000021f2</color>
+    <color name="i_am_color_21f3">#000021f3</color>
+    <color name="i_am_color_21f4">#000021f4</color>
+    <color name="i_am_color_21f5">#000021f5</color>
+    <color name="i_am_color_21f6">#000021f6</color>
+    <color name="i_am_color_21f7">#000021f7</color>
+    <color name="i_am_color_21f8">#000021f8</color>
+    <color name="i_am_color_21f9">#000021f9</color>
+    <color name="i_am_color_21fa">#000021fa</color>
+    <color name="i_am_color_21fb">#000021fb</color>
+    <color name="i_am_color_21fc">#000021fc</color>
+    <color name="i_am_color_21fd">#000021fd</color>
+    <color name="i_am_color_21fe">#000021fe</color>
+    <color name="i_am_color_21ff">#000021ff</color>
+    <color name="i_am_color_2200">#00002200</color>
+    <color name="i_am_color_2201">#00002201</color>
+    <color name="i_am_color_2202">#00002202</color>
+    <color name="i_am_color_2203">#00002203</color>
+    <color name="i_am_color_2204">#00002204</color>
+    <color name="i_am_color_2205">#00002205</color>
+    <color name="i_am_color_2206">#00002206</color>
+    <color name="i_am_color_2207">#00002207</color>
+    <color name="i_am_color_2208">#00002208</color>
+    <color name="i_am_color_2209">#00002209</color>
+    <color name="i_am_color_220a">#0000220a</color>
+    <color name="i_am_color_220b">#0000220b</color>
+    <color name="i_am_color_220c">#0000220c</color>
+    <color name="i_am_color_220d">#0000220d</color>
+    <color name="i_am_color_220e">#0000220e</color>
+    <color name="i_am_color_220f">#0000220f</color>
+    <color name="i_am_color_2210">#00002210</color>
+    <color name="i_am_color_2211">#00002211</color>
+    <color name="i_am_color_2212">#00002212</color>
+    <color name="i_am_color_2213">#00002213</color>
+    <color name="i_am_color_2214">#00002214</color>
+    <color name="i_am_color_2215">#00002215</color>
+    <color name="i_am_color_2216">#00002216</color>
+    <color name="i_am_color_2217">#00002217</color>
+    <color name="i_am_color_2218">#00002218</color>
+    <color name="i_am_color_2219">#00002219</color>
+    <color name="i_am_color_221a">#0000221a</color>
+    <color name="i_am_color_221b">#0000221b</color>
+    <color name="i_am_color_221c">#0000221c</color>
+    <color name="i_am_color_221d">#0000221d</color>
+    <color name="i_am_color_221e">#0000221e</color>
+    <color name="i_am_color_221f">#0000221f</color>
+    <color name="i_am_color_2220">#00002220</color>
+    <color name="i_am_color_2221">#00002221</color>
+    <color name="i_am_color_2222">#00002222</color>
+    <color name="i_am_color_2223">#00002223</color>
+    <color name="i_am_color_2224">#00002224</color>
+    <color name="i_am_color_2225">#00002225</color>
+    <color name="i_am_color_2226">#00002226</color>
+    <color name="i_am_color_2227">#00002227</color>
+    <color name="i_am_color_2228">#00002228</color>
+    <color name="i_am_color_2229">#00002229</color>
+    <color name="i_am_color_222a">#0000222a</color>
+    <color name="i_am_color_222b">#0000222b</color>
+    <color name="i_am_color_222c">#0000222c</color>
+    <color name="i_am_color_222d">#0000222d</color>
+    <color name="i_am_color_222e">#0000222e</color>
+    <color name="i_am_color_222f">#0000222f</color>
+    <color name="i_am_color_2230">#00002230</color>
+    <color name="i_am_color_2231">#00002231</color>
+    <color name="i_am_color_2232">#00002232</color>
+    <color name="i_am_color_2233">#00002233</color>
+    <color name="i_am_color_2234">#00002234</color>
+    <color name="i_am_color_2235">#00002235</color>
+    <color name="i_am_color_2236">#00002236</color>
+    <color name="i_am_color_2237">#00002237</color>
+    <color name="i_am_color_2238">#00002238</color>
+    <color name="i_am_color_2239">#00002239</color>
+    <color name="i_am_color_223a">#0000223a</color>
+    <color name="i_am_color_223b">#0000223b</color>
+    <color name="i_am_color_223c">#0000223c</color>
+    <color name="i_am_color_223d">#0000223d</color>
+    <color name="i_am_color_223e">#0000223e</color>
+    <color name="i_am_color_223f">#0000223f</color>
+    <color name="i_am_color_2240">#00002240</color>
+    <color name="i_am_color_2241">#00002241</color>
+    <color name="i_am_color_2242">#00002242</color>
+    <color name="i_am_color_2243">#00002243</color>
+    <color name="i_am_color_2244">#00002244</color>
+    <color name="i_am_color_2245">#00002245</color>
+    <color name="i_am_color_2246">#00002246</color>
+    <color name="i_am_color_2247">#00002247</color>
+    <color name="i_am_color_2248">#00002248</color>
+    <color name="i_am_color_2249">#00002249</color>
+    <color name="i_am_color_224a">#0000224a</color>
+    <color name="i_am_color_224b">#0000224b</color>
+    <color name="i_am_color_224c">#0000224c</color>
+    <color name="i_am_color_224d">#0000224d</color>
+    <color name="i_am_color_224e">#0000224e</color>
+    <color name="i_am_color_224f">#0000224f</color>
+    <color name="i_am_color_2250">#00002250</color>
+    <color name="i_am_color_2251">#00002251</color>
+    <color name="i_am_color_2252">#00002252</color>
+    <color name="i_am_color_2253">#00002253</color>
+    <color name="i_am_color_2254">#00002254</color>
+    <color name="i_am_color_2255">#00002255</color>
+    <color name="i_am_color_2256">#00002256</color>
+    <color name="i_am_color_2257">#00002257</color>
+    <color name="i_am_color_2258">#00002258</color>
+    <color name="i_am_color_2259">#00002259</color>
+    <color name="i_am_color_225a">#0000225a</color>
+    <color name="i_am_color_225b">#0000225b</color>
+    <color name="i_am_color_225c">#0000225c</color>
+    <color name="i_am_color_225d">#0000225d</color>
+    <color name="i_am_color_225e">#0000225e</color>
+    <color name="i_am_color_225f">#0000225f</color>
+    <color name="i_am_color_2260">#00002260</color>
+    <color name="i_am_color_2261">#00002261</color>
+    <color name="i_am_color_2262">#00002262</color>
+    <color name="i_am_color_2263">#00002263</color>
+    <color name="i_am_color_2264">#00002264</color>
+    <color name="i_am_color_2265">#00002265</color>
+    <color name="i_am_color_2266">#00002266</color>
+    <color name="i_am_color_2267">#00002267</color>
+    <color name="i_am_color_2268">#00002268</color>
+    <color name="i_am_color_2269">#00002269</color>
+    <color name="i_am_color_226a">#0000226a</color>
+    <color name="i_am_color_226b">#0000226b</color>
+    <color name="i_am_color_226c">#0000226c</color>
+    <color name="i_am_color_226d">#0000226d</color>
+    <color name="i_am_color_226e">#0000226e</color>
+    <color name="i_am_color_226f">#0000226f</color>
+    <color name="i_am_color_2270">#00002270</color>
+    <color name="i_am_color_2271">#00002271</color>
+    <color name="i_am_color_2272">#00002272</color>
+    <color name="i_am_color_2273">#00002273</color>
+    <color name="i_am_color_2274">#00002274</color>
+    <color name="i_am_color_2275">#00002275</color>
+    <color name="i_am_color_2276">#00002276</color>
+    <color name="i_am_color_2277">#00002277</color>
+    <color name="i_am_color_2278">#00002278</color>
+    <color name="i_am_color_2279">#00002279</color>
+    <color name="i_am_color_227a">#0000227a</color>
+    <color name="i_am_color_227b">#0000227b</color>
+    <color name="i_am_color_227c">#0000227c</color>
+    <color name="i_am_color_227d">#0000227d</color>
+    <color name="i_am_color_227e">#0000227e</color>
+    <color name="i_am_color_227f">#0000227f</color>
+    <color name="i_am_color_2280">#00002280</color>
+    <color name="i_am_color_2281">#00002281</color>
+    <color name="i_am_color_2282">#00002282</color>
+    <color name="i_am_color_2283">#00002283</color>
+    <color name="i_am_color_2284">#00002284</color>
+    <color name="i_am_color_2285">#00002285</color>
+    <color name="i_am_color_2286">#00002286</color>
+    <color name="i_am_color_2287">#00002287</color>
+    <color name="i_am_color_2288">#00002288</color>
+    <color name="i_am_color_2289">#00002289</color>
+    <color name="i_am_color_228a">#0000228a</color>
+    <color name="i_am_color_228b">#0000228b</color>
+    <color name="i_am_color_228c">#0000228c</color>
+    <color name="i_am_color_228d">#0000228d</color>
+    <color name="i_am_color_228e">#0000228e</color>
+    <color name="i_am_color_228f">#0000228f</color>
+    <color name="i_am_color_2290">#00002290</color>
+    <color name="i_am_color_2291">#00002291</color>
+    <color name="i_am_color_2292">#00002292</color>
+    <color name="i_am_color_2293">#00002293</color>
+    <color name="i_am_color_2294">#00002294</color>
+    <color name="i_am_color_2295">#00002295</color>
+    <color name="i_am_color_2296">#00002296</color>
+    <color name="i_am_color_2297">#00002297</color>
+    <color name="i_am_color_2298">#00002298</color>
+    <color name="i_am_color_2299">#00002299</color>
+    <color name="i_am_color_229a">#0000229a</color>
+    <color name="i_am_color_229b">#0000229b</color>
+    <color name="i_am_color_229c">#0000229c</color>
+    <color name="i_am_color_229d">#0000229d</color>
+    <color name="i_am_color_229e">#0000229e</color>
+    <color name="i_am_color_229f">#0000229f</color>
+    <color name="i_am_color_22a0">#000022a0</color>
+    <color name="i_am_color_22a1">#000022a1</color>
+    <color name="i_am_color_22a2">#000022a2</color>
+    <color name="i_am_color_22a3">#000022a3</color>
+    <color name="i_am_color_22a4">#000022a4</color>
+    <color name="i_am_color_22a5">#000022a5</color>
+    <color name="i_am_color_22a6">#000022a6</color>
+    <color name="i_am_color_22a7">#000022a7</color>
+    <color name="i_am_color_22a8">#000022a8</color>
+    <color name="i_am_color_22a9">#000022a9</color>
+    <color name="i_am_color_22aa">#000022aa</color>
+    <color name="i_am_color_22ab">#000022ab</color>
+    <color name="i_am_color_22ac">#000022ac</color>
+    <color name="i_am_color_22ad">#000022ad</color>
+    <color name="i_am_color_22ae">#000022ae</color>
+    <color name="i_am_color_22af">#000022af</color>
+    <color name="i_am_color_22b0">#000022b0</color>
+    <color name="i_am_color_22b1">#000022b1</color>
+    <color name="i_am_color_22b2">#000022b2</color>
+    <color name="i_am_color_22b3">#000022b3</color>
+    <color name="i_am_color_22b4">#000022b4</color>
+    <color name="i_am_color_22b5">#000022b5</color>
+    <color name="i_am_color_22b6">#000022b6</color>
+    <color name="i_am_color_22b7">#000022b7</color>
+    <color name="i_am_color_22b8">#000022b8</color>
+    <color name="i_am_color_22b9">#000022b9</color>
+    <color name="i_am_color_22ba">#000022ba</color>
+    <color name="i_am_color_22bb">#000022bb</color>
+    <color name="i_am_color_22bc">#000022bc</color>
+    <color name="i_am_color_22bd">#000022bd</color>
+    <color name="i_am_color_22be">#000022be</color>
+    <color name="i_am_color_22bf">#000022bf</color>
+    <color name="i_am_color_22c0">#000022c0</color>
+    <color name="i_am_color_22c1">#000022c1</color>
+    <color name="i_am_color_22c2">#000022c2</color>
+    <color name="i_am_color_22c3">#000022c3</color>
+    <color name="i_am_color_22c4">#000022c4</color>
+    <color name="i_am_color_22c5">#000022c5</color>
+    <color name="i_am_color_22c6">#000022c6</color>
+    <color name="i_am_color_22c7">#000022c7</color>
+    <color name="i_am_color_22c8">#000022c8</color>
+    <color name="i_am_color_22c9">#000022c9</color>
+    <color name="i_am_color_22ca">#000022ca</color>
+    <color name="i_am_color_22cb">#000022cb</color>
+    <color name="i_am_color_22cc">#000022cc</color>
+    <color name="i_am_color_22cd">#000022cd</color>
+    <color name="i_am_color_22ce">#000022ce</color>
+    <color name="i_am_color_22cf">#000022cf</color>
+    <color name="i_am_color_22d0">#000022d0</color>
+    <color name="i_am_color_22d1">#000022d1</color>
+    <color name="i_am_color_22d2">#000022d2</color>
+    <color name="i_am_color_22d3">#000022d3</color>
+    <color name="i_am_color_22d4">#000022d4</color>
+    <color name="i_am_color_22d5">#000022d5</color>
+    <color name="i_am_color_22d6">#000022d6</color>
+    <color name="i_am_color_22d7">#000022d7</color>
+    <color name="i_am_color_22d8">#000022d8</color>
+    <color name="i_am_color_22d9">#000022d9</color>
+    <color name="i_am_color_22da">#000022da</color>
+    <color name="i_am_color_22db">#000022db</color>
+    <color name="i_am_color_22dc">#000022dc</color>
+    <color name="i_am_color_22dd">#000022dd</color>
+    <color name="i_am_color_22de">#000022de</color>
+    <color name="i_am_color_22df">#000022df</color>
+    <color name="i_am_color_22e0">#000022e0</color>
+    <color name="i_am_color_22e1">#000022e1</color>
+    <color name="i_am_color_22e2">#000022e2</color>
+    <color name="i_am_color_22e3">#000022e3</color>
+    <color name="i_am_color_22e4">#000022e4</color>
+    <color name="i_am_color_22e5">#000022e5</color>
+    <color name="i_am_color_22e6">#000022e6</color>
+    <color name="i_am_color_22e7">#000022e7</color>
+    <color name="i_am_color_22e8">#000022e8</color>
+    <color name="i_am_color_22e9">#000022e9</color>
+    <color name="i_am_color_22ea">#000022ea</color>
+    <color name="i_am_color_22eb">#000022eb</color>
+    <color name="i_am_color_22ec">#000022ec</color>
+    <color name="i_am_color_22ed">#000022ed</color>
+    <color name="i_am_color_22ee">#000022ee</color>
+    <color name="i_am_color_22ef">#000022ef</color>
+    <color name="i_am_color_22f0">#000022f0</color>
+    <color name="i_am_color_22f1">#000022f1</color>
+    <color name="i_am_color_22f2">#000022f2</color>
+    <color name="i_am_color_22f3">#000022f3</color>
+    <color name="i_am_color_22f4">#000022f4</color>
+    <color name="i_am_color_22f5">#000022f5</color>
+    <color name="i_am_color_22f6">#000022f6</color>
+    <color name="i_am_color_22f7">#000022f7</color>
+    <color name="i_am_color_22f8">#000022f8</color>
+    <color name="i_am_color_22f9">#000022f9</color>
+    <color name="i_am_color_22fa">#000022fa</color>
+    <color name="i_am_color_22fb">#000022fb</color>
+    <color name="i_am_color_22fc">#000022fc</color>
+    <color name="i_am_color_22fd">#000022fd</color>
+    <color name="i_am_color_22fe">#000022fe</color>
+    <color name="i_am_color_22ff">#000022ff</color>
+    <color name="i_am_color_2300">#00002300</color>
+    <color name="i_am_color_2301">#00002301</color>
+    <color name="i_am_color_2302">#00002302</color>
+    <color name="i_am_color_2303">#00002303</color>
+    <color name="i_am_color_2304">#00002304</color>
+    <color name="i_am_color_2305">#00002305</color>
+    <color name="i_am_color_2306">#00002306</color>
+    <color name="i_am_color_2307">#00002307</color>
+    <color name="i_am_color_2308">#00002308</color>
+    <color name="i_am_color_2309">#00002309</color>
+    <color name="i_am_color_230a">#0000230a</color>
+    <color name="i_am_color_230b">#0000230b</color>
+    <color name="i_am_color_230c">#0000230c</color>
+    <color name="i_am_color_230d">#0000230d</color>
+    <color name="i_am_color_230e">#0000230e</color>
+    <color name="i_am_color_230f">#0000230f</color>
+    <color name="i_am_color_2310">#00002310</color>
+    <color name="i_am_color_2311">#00002311</color>
+    <color name="i_am_color_2312">#00002312</color>
+    <color name="i_am_color_2313">#00002313</color>
+    <color name="i_am_color_2314">#00002314</color>
+    <color name="i_am_color_2315">#00002315</color>
+    <color name="i_am_color_2316">#00002316</color>
+    <color name="i_am_color_2317">#00002317</color>
+    <color name="i_am_color_2318">#00002318</color>
+    <color name="i_am_color_2319">#00002319</color>
+    <color name="i_am_color_231a">#0000231a</color>
+    <color name="i_am_color_231b">#0000231b</color>
+    <color name="i_am_color_231c">#0000231c</color>
+    <color name="i_am_color_231d">#0000231d</color>
+    <color name="i_am_color_231e">#0000231e</color>
+    <color name="i_am_color_231f">#0000231f</color>
+    <color name="i_am_color_2320">#00002320</color>
+    <color name="i_am_color_2321">#00002321</color>
+    <color name="i_am_color_2322">#00002322</color>
+    <color name="i_am_color_2323">#00002323</color>
+    <color name="i_am_color_2324">#00002324</color>
+    <color name="i_am_color_2325">#00002325</color>
+    <color name="i_am_color_2326">#00002326</color>
+    <color name="i_am_color_2327">#00002327</color>
+    <color name="i_am_color_2328">#00002328</color>
+    <color name="i_am_color_2329">#00002329</color>
+    <color name="i_am_color_232a">#0000232a</color>
+    <color name="i_am_color_232b">#0000232b</color>
+    <color name="i_am_color_232c">#0000232c</color>
+    <color name="i_am_color_232d">#0000232d</color>
+    <color name="i_am_color_232e">#0000232e</color>
+    <color name="i_am_color_232f">#0000232f</color>
+    <color name="i_am_color_2330">#00002330</color>
+    <color name="i_am_color_2331">#00002331</color>
+    <color name="i_am_color_2332">#00002332</color>
+    <color name="i_am_color_2333">#00002333</color>
+    <color name="i_am_color_2334">#00002334</color>
+    <color name="i_am_color_2335">#00002335</color>
+    <color name="i_am_color_2336">#00002336</color>
+    <color name="i_am_color_2337">#00002337</color>
+    <color name="i_am_color_2338">#00002338</color>
+    <color name="i_am_color_2339">#00002339</color>
+    <color name="i_am_color_233a">#0000233a</color>
+    <color name="i_am_color_233b">#0000233b</color>
+    <color name="i_am_color_233c">#0000233c</color>
+    <color name="i_am_color_233d">#0000233d</color>
+    <color name="i_am_color_233e">#0000233e</color>
+    <color name="i_am_color_233f">#0000233f</color>
+    <color name="i_am_color_2340">#00002340</color>
+    <color name="i_am_color_2341">#00002341</color>
+    <color name="i_am_color_2342">#00002342</color>
+    <color name="i_am_color_2343">#00002343</color>
+    <color name="i_am_color_2344">#00002344</color>
+    <color name="i_am_color_2345">#00002345</color>
+    <color name="i_am_color_2346">#00002346</color>
+    <color name="i_am_color_2347">#00002347</color>
+    <color name="i_am_color_2348">#00002348</color>
+    <color name="i_am_color_2349">#00002349</color>
+    <color name="i_am_color_234a">#0000234a</color>
+    <color name="i_am_color_234b">#0000234b</color>
+    <color name="i_am_color_234c">#0000234c</color>
+    <color name="i_am_color_234d">#0000234d</color>
+    <color name="i_am_color_234e">#0000234e</color>
+    <color name="i_am_color_234f">#0000234f</color>
+    <color name="i_am_color_2350">#00002350</color>
+    <color name="i_am_color_2351">#00002351</color>
+    <color name="i_am_color_2352">#00002352</color>
+    <color name="i_am_color_2353">#00002353</color>
+    <color name="i_am_color_2354">#00002354</color>
+    <color name="i_am_color_2355">#00002355</color>
+    <color name="i_am_color_2356">#00002356</color>
+    <color name="i_am_color_2357">#00002357</color>
+    <color name="i_am_color_2358">#00002358</color>
+    <color name="i_am_color_2359">#00002359</color>
+    <color name="i_am_color_235a">#0000235a</color>
+    <color name="i_am_color_235b">#0000235b</color>
+    <color name="i_am_color_235c">#0000235c</color>
+    <color name="i_am_color_235d">#0000235d</color>
+    <color name="i_am_color_235e">#0000235e</color>
+    <color name="i_am_color_235f">#0000235f</color>
+    <color name="i_am_color_2360">#00002360</color>
+    <color name="i_am_color_2361">#00002361</color>
+    <color name="i_am_color_2362">#00002362</color>
+    <color name="i_am_color_2363">#00002363</color>
+    <color name="i_am_color_2364">#00002364</color>
+    <color name="i_am_color_2365">#00002365</color>
+    <color name="i_am_color_2366">#00002366</color>
+    <color name="i_am_color_2367">#00002367</color>
+    <color name="i_am_color_2368">#00002368</color>
+    <color name="i_am_color_2369">#00002369</color>
+    <color name="i_am_color_236a">#0000236a</color>
+    <color name="i_am_color_236b">#0000236b</color>
+    <color name="i_am_color_236c">#0000236c</color>
+    <color name="i_am_color_236d">#0000236d</color>
+    <color name="i_am_color_236e">#0000236e</color>
+    <color name="i_am_color_236f">#0000236f</color>
+    <color name="i_am_color_2370">#00002370</color>
+    <color name="i_am_color_2371">#00002371</color>
+    <color name="i_am_color_2372">#00002372</color>
+    <color name="i_am_color_2373">#00002373</color>
+    <color name="i_am_color_2374">#00002374</color>
+    <color name="i_am_color_2375">#00002375</color>
+    <color name="i_am_color_2376">#00002376</color>
+    <color name="i_am_color_2377">#00002377</color>
+    <color name="i_am_color_2378">#00002378</color>
+    <color name="i_am_color_2379">#00002379</color>
+    <color name="i_am_color_237a">#0000237a</color>
+    <color name="i_am_color_237b">#0000237b</color>
+    <color name="i_am_color_237c">#0000237c</color>
+    <color name="i_am_color_237d">#0000237d</color>
+    <color name="i_am_color_237e">#0000237e</color>
+    <color name="i_am_color_237f">#0000237f</color>
+    <color name="i_am_color_2380">#00002380</color>
+    <color name="i_am_color_2381">#00002381</color>
+    <color name="i_am_color_2382">#00002382</color>
+    <color name="i_am_color_2383">#00002383</color>
+    <color name="i_am_color_2384">#00002384</color>
+    <color name="i_am_color_2385">#00002385</color>
+    <color name="i_am_color_2386">#00002386</color>
+    <color name="i_am_color_2387">#00002387</color>
+    <color name="i_am_color_2388">#00002388</color>
+    <color name="i_am_color_2389">#00002389</color>
+    <color name="i_am_color_238a">#0000238a</color>
+    <color name="i_am_color_238b">#0000238b</color>
+    <color name="i_am_color_238c">#0000238c</color>
+    <color name="i_am_color_238d">#0000238d</color>
+    <color name="i_am_color_238e">#0000238e</color>
+    <color name="i_am_color_238f">#0000238f</color>
+    <color name="i_am_color_2390">#00002390</color>
+    <color name="i_am_color_2391">#00002391</color>
+    <color name="i_am_color_2392">#00002392</color>
+    <color name="i_am_color_2393">#00002393</color>
+    <color name="i_am_color_2394">#00002394</color>
+    <color name="i_am_color_2395">#00002395</color>
+    <color name="i_am_color_2396">#00002396</color>
+    <color name="i_am_color_2397">#00002397</color>
+    <color name="i_am_color_2398">#00002398</color>
+    <color name="i_am_color_2399">#00002399</color>
+    <color name="i_am_color_239a">#0000239a</color>
+    <color name="i_am_color_239b">#0000239b</color>
+    <color name="i_am_color_239c">#0000239c</color>
+    <color name="i_am_color_239d">#0000239d</color>
+    <color name="i_am_color_239e">#0000239e</color>
+    <color name="i_am_color_239f">#0000239f</color>
+    <color name="i_am_color_23a0">#000023a0</color>
+    <color name="i_am_color_23a1">#000023a1</color>
+    <color name="i_am_color_23a2">#000023a2</color>
+    <color name="i_am_color_23a3">#000023a3</color>
+    <color name="i_am_color_23a4">#000023a4</color>
+    <color name="i_am_color_23a5">#000023a5</color>
+    <color name="i_am_color_23a6">#000023a6</color>
+    <color name="i_am_color_23a7">#000023a7</color>
+    <color name="i_am_color_23a8">#000023a8</color>
+    <color name="i_am_color_23a9">#000023a9</color>
+    <color name="i_am_color_23aa">#000023aa</color>
+    <color name="i_am_color_23ab">#000023ab</color>
+    <color name="i_am_color_23ac">#000023ac</color>
+    <color name="i_am_color_23ad">#000023ad</color>
+    <color name="i_am_color_23ae">#000023ae</color>
+    <color name="i_am_color_23af">#000023af</color>
+    <color name="i_am_color_23b0">#000023b0</color>
+    <color name="i_am_color_23b1">#000023b1</color>
+    <color name="i_am_color_23b2">#000023b2</color>
+    <color name="i_am_color_23b3">#000023b3</color>
+    <color name="i_am_color_23b4">#000023b4</color>
+    <color name="i_am_color_23b5">#000023b5</color>
+    <color name="i_am_color_23b6">#000023b6</color>
+    <color name="i_am_color_23b7">#000023b7</color>
+    <color name="i_am_color_23b8">#000023b8</color>
+    <color name="i_am_color_23b9">#000023b9</color>
+    <color name="i_am_color_23ba">#000023ba</color>
+    <color name="i_am_color_23bb">#000023bb</color>
+    <color name="i_am_color_23bc">#000023bc</color>
+    <color name="i_am_color_23bd">#000023bd</color>
+    <color name="i_am_color_23be">#000023be</color>
+    <color name="i_am_color_23bf">#000023bf</color>
+    <color name="i_am_color_23c0">#000023c0</color>
+    <color name="i_am_color_23c1">#000023c1</color>
+    <color name="i_am_color_23c2">#000023c2</color>
+    <color name="i_am_color_23c3">#000023c3</color>
+    <color name="i_am_color_23c4">#000023c4</color>
+    <color name="i_am_color_23c5">#000023c5</color>
+    <color name="i_am_color_23c6">#000023c6</color>
+    <color name="i_am_color_23c7">#000023c7</color>
+    <color name="i_am_color_23c8">#000023c8</color>
+    <color name="i_am_color_23c9">#000023c9</color>
+    <color name="i_am_color_23ca">#000023ca</color>
+    <color name="i_am_color_23cb">#000023cb</color>
+    <color name="i_am_color_23cc">#000023cc</color>
+    <color name="i_am_color_23cd">#000023cd</color>
+    <color name="i_am_color_23ce">#000023ce</color>
+    <color name="i_am_color_23cf">#000023cf</color>
+    <color name="i_am_color_23d0">#000023d0</color>
+    <color name="i_am_color_23d1">#000023d1</color>
+    <color name="i_am_color_23d2">#000023d2</color>
+    <color name="i_am_color_23d3">#000023d3</color>
+    <color name="i_am_color_23d4">#000023d4</color>
+    <color name="i_am_color_23d5">#000023d5</color>
+    <color name="i_am_color_23d6">#000023d6</color>
+    <color name="i_am_color_23d7">#000023d7</color>
+    <color name="i_am_color_23d8">#000023d8</color>
+    <color name="i_am_color_23d9">#000023d9</color>
+    <color name="i_am_color_23da">#000023da</color>
+    <color name="i_am_color_23db">#000023db</color>
+    <color name="i_am_color_23dc">#000023dc</color>
+    <color name="i_am_color_23dd">#000023dd</color>
+    <color name="i_am_color_23de">#000023de</color>
+    <color name="i_am_color_23df">#000023df</color>
+    <color name="i_am_color_23e0">#000023e0</color>
+    <color name="i_am_color_23e1">#000023e1</color>
+    <color name="i_am_color_23e2">#000023e2</color>
+    <color name="i_am_color_23e3">#000023e3</color>
+    <color name="i_am_color_23e4">#000023e4</color>
+    <color name="i_am_color_23e5">#000023e5</color>
+    <color name="i_am_color_23e6">#000023e6</color>
+    <color name="i_am_color_23e7">#000023e7</color>
+    <color name="i_am_color_23e8">#000023e8</color>
+    <color name="i_am_color_23e9">#000023e9</color>
+    <color name="i_am_color_23ea">#000023ea</color>
+    <color name="i_am_color_23eb">#000023eb</color>
+    <color name="i_am_color_23ec">#000023ec</color>
+    <color name="i_am_color_23ed">#000023ed</color>
+    <color name="i_am_color_23ee">#000023ee</color>
+    <color name="i_am_color_23ef">#000023ef</color>
+    <color name="i_am_color_23f0">#000023f0</color>
+    <color name="i_am_color_23f1">#000023f1</color>
+    <color name="i_am_color_23f2">#000023f2</color>
+    <color name="i_am_color_23f3">#000023f3</color>
+    <color name="i_am_color_23f4">#000023f4</color>
+    <color name="i_am_color_23f5">#000023f5</color>
+    <color name="i_am_color_23f6">#000023f6</color>
+    <color name="i_am_color_23f7">#000023f7</color>
+    <color name="i_am_color_23f8">#000023f8</color>
+    <color name="i_am_color_23f9">#000023f9</color>
+    <color name="i_am_color_23fa">#000023fa</color>
+    <color name="i_am_color_23fb">#000023fb</color>
+    <color name="i_am_color_23fc">#000023fc</color>
+    <color name="i_am_color_23fd">#000023fd</color>
+    <color name="i_am_color_23fe">#000023fe</color>
+    <color name="i_am_color_23ff">#000023ff</color>
+    <color name="i_am_color_2400">#00002400</color>
+    <color name="i_am_color_2401">#00002401</color>
+    <color name="i_am_color_2402">#00002402</color>
+    <color name="i_am_color_2403">#00002403</color>
+    <color name="i_am_color_2404">#00002404</color>
+    <color name="i_am_color_2405">#00002405</color>
+    <color name="i_am_color_2406">#00002406</color>
+    <color name="i_am_color_2407">#00002407</color>
+    <color name="i_am_color_2408">#00002408</color>
+    <color name="i_am_color_2409">#00002409</color>
+    <color name="i_am_color_240a">#0000240a</color>
+    <color name="i_am_color_240b">#0000240b</color>
+    <color name="i_am_color_240c">#0000240c</color>
+    <color name="i_am_color_240d">#0000240d</color>
+    <color name="i_am_color_240e">#0000240e</color>
+    <color name="i_am_color_240f">#0000240f</color>
+    <color name="i_am_color_2410">#00002410</color>
+    <color name="i_am_color_2411">#00002411</color>
+    <color name="i_am_color_2412">#00002412</color>
+    <color name="i_am_color_2413">#00002413</color>
+    <color name="i_am_color_2414">#00002414</color>
+    <color name="i_am_color_2415">#00002415</color>
+    <color name="i_am_color_2416">#00002416</color>
+    <color name="i_am_color_2417">#00002417</color>
+    <color name="i_am_color_2418">#00002418</color>
+    <color name="i_am_color_2419">#00002419</color>
+    <color name="i_am_color_241a">#0000241a</color>
+    <color name="i_am_color_241b">#0000241b</color>
+    <color name="i_am_color_241c">#0000241c</color>
+    <color name="i_am_color_241d">#0000241d</color>
+    <color name="i_am_color_241e">#0000241e</color>
+    <color name="i_am_color_241f">#0000241f</color>
+    <color name="i_am_color_2420">#00002420</color>
+    <color name="i_am_color_2421">#00002421</color>
+    <color name="i_am_color_2422">#00002422</color>
+    <color name="i_am_color_2423">#00002423</color>
+    <color name="i_am_color_2424">#00002424</color>
+    <color name="i_am_color_2425">#00002425</color>
+    <color name="i_am_color_2426">#00002426</color>
+    <color name="i_am_color_2427">#00002427</color>
+    <color name="i_am_color_2428">#00002428</color>
+    <color name="i_am_color_2429">#00002429</color>
+    <color name="i_am_color_242a">#0000242a</color>
+    <color name="i_am_color_242b">#0000242b</color>
+    <color name="i_am_color_242c">#0000242c</color>
+    <color name="i_am_color_242d">#0000242d</color>
+    <color name="i_am_color_242e">#0000242e</color>
+    <color name="i_am_color_242f">#0000242f</color>
+    <color name="i_am_color_2430">#00002430</color>
+    <color name="i_am_color_2431">#00002431</color>
+    <color name="i_am_color_2432">#00002432</color>
+    <color name="i_am_color_2433">#00002433</color>
+    <color name="i_am_color_2434">#00002434</color>
+    <color name="i_am_color_2435">#00002435</color>
+    <color name="i_am_color_2436">#00002436</color>
+    <color name="i_am_color_2437">#00002437</color>
+    <color name="i_am_color_2438">#00002438</color>
+    <color name="i_am_color_2439">#00002439</color>
+    <color name="i_am_color_243a">#0000243a</color>
+    <color name="i_am_color_243b">#0000243b</color>
+    <color name="i_am_color_243c">#0000243c</color>
+    <color name="i_am_color_243d">#0000243d</color>
+    <color name="i_am_color_243e">#0000243e</color>
+    <color name="i_am_color_243f">#0000243f</color>
+    <color name="i_am_color_2440">#00002440</color>
+    <color name="i_am_color_2441">#00002441</color>
+    <color name="i_am_color_2442">#00002442</color>
+    <color name="i_am_color_2443">#00002443</color>
+    <color name="i_am_color_2444">#00002444</color>
+    <color name="i_am_color_2445">#00002445</color>
+    <color name="i_am_color_2446">#00002446</color>
+    <color name="i_am_color_2447">#00002447</color>
+    <color name="i_am_color_2448">#00002448</color>
+    <color name="i_am_color_2449">#00002449</color>
+    <color name="i_am_color_244a">#0000244a</color>
+    <color name="i_am_color_244b">#0000244b</color>
+    <color name="i_am_color_244c">#0000244c</color>
+    <color name="i_am_color_244d">#0000244d</color>
+    <color name="i_am_color_244e">#0000244e</color>
+    <color name="i_am_color_244f">#0000244f</color>
+    <color name="i_am_color_2450">#00002450</color>
+    <color name="i_am_color_2451">#00002451</color>
+    <color name="i_am_color_2452">#00002452</color>
+    <color name="i_am_color_2453">#00002453</color>
+    <color name="i_am_color_2454">#00002454</color>
+    <color name="i_am_color_2455">#00002455</color>
+    <color name="i_am_color_2456">#00002456</color>
+    <color name="i_am_color_2457">#00002457</color>
+    <color name="i_am_color_2458">#00002458</color>
+    <color name="i_am_color_2459">#00002459</color>
+    <color name="i_am_color_245a">#0000245a</color>
+    <color name="i_am_color_245b">#0000245b</color>
+    <color name="i_am_color_245c">#0000245c</color>
+    <color name="i_am_color_245d">#0000245d</color>
+    <color name="i_am_color_245e">#0000245e</color>
+    <color name="i_am_color_245f">#0000245f</color>
+    <color name="i_am_color_2460">#00002460</color>
+    <color name="i_am_color_2461">#00002461</color>
+    <color name="i_am_color_2462">#00002462</color>
+    <color name="i_am_color_2463">#00002463</color>
+    <color name="i_am_color_2464">#00002464</color>
+    <color name="i_am_color_2465">#00002465</color>
+    <color name="i_am_color_2466">#00002466</color>
+    <color name="i_am_color_2467">#00002467</color>
+    <color name="i_am_color_2468">#00002468</color>
+    <color name="i_am_color_2469">#00002469</color>
+    <color name="i_am_color_246a">#0000246a</color>
+    <color name="i_am_color_246b">#0000246b</color>
+    <color name="i_am_color_246c">#0000246c</color>
+    <color name="i_am_color_246d">#0000246d</color>
+    <color name="i_am_color_246e">#0000246e</color>
+    <color name="i_am_color_246f">#0000246f</color>
+    <color name="i_am_color_2470">#00002470</color>
+    <color name="i_am_color_2471">#00002471</color>
+    <color name="i_am_color_2472">#00002472</color>
+    <color name="i_am_color_2473">#00002473</color>
+    <color name="i_am_color_2474">#00002474</color>
+    <color name="i_am_color_2475">#00002475</color>
+    <color name="i_am_color_2476">#00002476</color>
+    <color name="i_am_color_2477">#00002477</color>
+    <color name="i_am_color_2478">#00002478</color>
+    <color name="i_am_color_2479">#00002479</color>
+    <color name="i_am_color_247a">#0000247a</color>
+    <color name="i_am_color_247b">#0000247b</color>
+    <color name="i_am_color_247c">#0000247c</color>
+    <color name="i_am_color_247d">#0000247d</color>
+    <color name="i_am_color_247e">#0000247e</color>
+    <color name="i_am_color_247f">#0000247f</color>
+    <color name="i_am_color_2480">#00002480</color>
+    <color name="i_am_color_2481">#00002481</color>
+    <color name="i_am_color_2482">#00002482</color>
+    <color name="i_am_color_2483">#00002483</color>
+    <color name="i_am_color_2484">#00002484</color>
+    <color name="i_am_color_2485">#00002485</color>
+    <color name="i_am_color_2486">#00002486</color>
+    <color name="i_am_color_2487">#00002487</color>
+    <color name="i_am_color_2488">#00002488</color>
+    <color name="i_am_color_2489">#00002489</color>
+    <color name="i_am_color_248a">#0000248a</color>
+    <color name="i_am_color_248b">#0000248b</color>
+    <color name="i_am_color_248c">#0000248c</color>
+    <color name="i_am_color_248d">#0000248d</color>
+    <color name="i_am_color_248e">#0000248e</color>
+    <color name="i_am_color_248f">#0000248f</color>
+    <color name="i_am_color_2490">#00002490</color>
+    <color name="i_am_color_2491">#00002491</color>
+    <color name="i_am_color_2492">#00002492</color>
+    <color name="i_am_color_2493">#00002493</color>
+    <color name="i_am_color_2494">#00002494</color>
+    <color name="i_am_color_2495">#00002495</color>
+    <color name="i_am_color_2496">#00002496</color>
+    <color name="i_am_color_2497">#00002497</color>
+    <color name="i_am_color_2498">#00002498</color>
+    <color name="i_am_color_2499">#00002499</color>
+    <color name="i_am_color_249a">#0000249a</color>
+    <color name="i_am_color_249b">#0000249b</color>
+    <color name="i_am_color_249c">#0000249c</color>
+    <color name="i_am_color_249d">#0000249d</color>
+    <color name="i_am_color_249e">#0000249e</color>
+    <color name="i_am_color_249f">#0000249f</color>
+    <color name="i_am_color_24a0">#000024a0</color>
+    <color name="i_am_color_24a1">#000024a1</color>
+    <color name="i_am_color_24a2">#000024a2</color>
+    <color name="i_am_color_24a3">#000024a3</color>
+    <color name="i_am_color_24a4">#000024a4</color>
+    <color name="i_am_color_24a5">#000024a5</color>
+    <color name="i_am_color_24a6">#000024a6</color>
+    <color name="i_am_color_24a7">#000024a7</color>
+    <color name="i_am_color_24a8">#000024a8</color>
+    <color name="i_am_color_24a9">#000024a9</color>
+    <color name="i_am_color_24aa">#000024aa</color>
+    <color name="i_am_color_24ab">#000024ab</color>
+    <color name="i_am_color_24ac">#000024ac</color>
+    <color name="i_am_color_24ad">#000024ad</color>
+    <color name="i_am_color_24ae">#000024ae</color>
+    <color name="i_am_color_24af">#000024af</color>
+    <color name="i_am_color_24b0">#000024b0</color>
+    <color name="i_am_color_24b1">#000024b1</color>
+    <color name="i_am_color_24b2">#000024b2</color>
+    <color name="i_am_color_24b3">#000024b3</color>
+    <color name="i_am_color_24b4">#000024b4</color>
+    <color name="i_am_color_24b5">#000024b5</color>
+    <color name="i_am_color_24b6">#000024b6</color>
+    <color name="i_am_color_24b7">#000024b7</color>
+    <color name="i_am_color_24b8">#000024b8</color>
+    <color name="i_am_color_24b9">#000024b9</color>
+    <color name="i_am_color_24ba">#000024ba</color>
+    <color name="i_am_color_24bb">#000024bb</color>
+    <color name="i_am_color_24bc">#000024bc</color>
+    <color name="i_am_color_24bd">#000024bd</color>
+    <color name="i_am_color_24be">#000024be</color>
+    <color name="i_am_color_24bf">#000024bf</color>
+    <color name="i_am_color_24c0">#000024c0</color>
+    <color name="i_am_color_24c1">#000024c1</color>
+    <color name="i_am_color_24c2">#000024c2</color>
+    <color name="i_am_color_24c3">#000024c3</color>
+    <color name="i_am_color_24c4">#000024c4</color>
+    <color name="i_am_color_24c5">#000024c5</color>
+    <color name="i_am_color_24c6">#000024c6</color>
+    <color name="i_am_color_24c7">#000024c7</color>
+    <color name="i_am_color_24c8">#000024c8</color>
+    <color name="i_am_color_24c9">#000024c9</color>
+    <color name="i_am_color_24ca">#000024ca</color>
+    <color name="i_am_color_24cb">#000024cb</color>
+    <color name="i_am_color_24cc">#000024cc</color>
+    <color name="i_am_color_24cd">#000024cd</color>
+    <color name="i_am_color_24ce">#000024ce</color>
+    <color name="i_am_color_24cf">#000024cf</color>
+    <color name="i_am_color_24d0">#000024d0</color>
+    <color name="i_am_color_24d1">#000024d1</color>
+    <color name="i_am_color_24d2">#000024d2</color>
+    <color name="i_am_color_24d3">#000024d3</color>
+    <color name="i_am_color_24d4">#000024d4</color>
+    <color name="i_am_color_24d5">#000024d5</color>
+    <color name="i_am_color_24d6">#000024d6</color>
+    <color name="i_am_color_24d7">#000024d7</color>
+    <color name="i_am_color_24d8">#000024d8</color>
+    <color name="i_am_color_24d9">#000024d9</color>
+    <color name="i_am_color_24da">#000024da</color>
+    <color name="i_am_color_24db">#000024db</color>
+    <color name="i_am_color_24dc">#000024dc</color>
+    <color name="i_am_color_24dd">#000024dd</color>
+    <color name="i_am_color_24de">#000024de</color>
+    <color name="i_am_color_24df">#000024df</color>
+    <color name="i_am_color_24e0">#000024e0</color>
+    <color name="i_am_color_24e1">#000024e1</color>
+    <color name="i_am_color_24e2">#000024e2</color>
+    <color name="i_am_color_24e3">#000024e3</color>
+    <color name="i_am_color_24e4">#000024e4</color>
+    <color name="i_am_color_24e5">#000024e5</color>
+    <color name="i_am_color_24e6">#000024e6</color>
+    <color name="i_am_color_24e7">#000024e7</color>
+    <color name="i_am_color_24e8">#000024e8</color>
+    <color name="i_am_color_24e9">#000024e9</color>
+    <color name="i_am_color_24ea">#000024ea</color>
+    <color name="i_am_color_24eb">#000024eb</color>
+    <color name="i_am_color_24ec">#000024ec</color>
+    <color name="i_am_color_24ed">#000024ed</color>
+    <color name="i_am_color_24ee">#000024ee</color>
+    <color name="i_am_color_24ef">#000024ef</color>
+    <color name="i_am_color_24f0">#000024f0</color>
+    <color name="i_am_color_24f1">#000024f1</color>
+    <color name="i_am_color_24f2">#000024f2</color>
+    <color name="i_am_color_24f3">#000024f3</color>
+    <color name="i_am_color_24f4">#000024f4</color>
+    <color name="i_am_color_24f5">#000024f5</color>
+    <color name="i_am_color_24f6">#000024f6</color>
+    <color name="i_am_color_24f7">#000024f7</color>
+    <color name="i_am_color_24f8">#000024f8</color>
+    <color name="i_am_color_24f9">#000024f9</color>
+    <color name="i_am_color_24fa">#000024fa</color>
+    <color name="i_am_color_24fb">#000024fb</color>
+    <color name="i_am_color_24fc">#000024fc</color>
+    <color name="i_am_color_24fd">#000024fd</color>
+    <color name="i_am_color_24fe">#000024fe</color>
+    <color name="i_am_color_24ff">#000024ff</color>
+    <color name="i_am_color_2500">#00002500</color>
+    <color name="i_am_color_2501">#00002501</color>
+    <color name="i_am_color_2502">#00002502</color>
+    <color name="i_am_color_2503">#00002503</color>
+    <color name="i_am_color_2504">#00002504</color>
+    <color name="i_am_color_2505">#00002505</color>
+    <color name="i_am_color_2506">#00002506</color>
+    <color name="i_am_color_2507">#00002507</color>
+    <color name="i_am_color_2508">#00002508</color>
+    <color name="i_am_color_2509">#00002509</color>
+    <color name="i_am_color_250a">#0000250a</color>
+    <color name="i_am_color_250b">#0000250b</color>
+    <color name="i_am_color_250c">#0000250c</color>
+    <color name="i_am_color_250d">#0000250d</color>
+    <color name="i_am_color_250e">#0000250e</color>
+    <color name="i_am_color_250f">#0000250f</color>
+    <color name="i_am_color_2510">#00002510</color>
+    <color name="i_am_color_2511">#00002511</color>
+    <color name="i_am_color_2512">#00002512</color>
+    <color name="i_am_color_2513">#00002513</color>
+    <color name="i_am_color_2514">#00002514</color>
+    <color name="i_am_color_2515">#00002515</color>
+    <color name="i_am_color_2516">#00002516</color>
+    <color name="i_am_color_2517">#00002517</color>
+    <color name="i_am_color_2518">#00002518</color>
+    <color name="i_am_color_2519">#00002519</color>
+    <color name="i_am_color_251a">#0000251a</color>
+    <color name="i_am_color_251b">#0000251b</color>
+    <color name="i_am_color_251c">#0000251c</color>
+    <color name="i_am_color_251d">#0000251d</color>
+    <color name="i_am_color_251e">#0000251e</color>
+    <color name="i_am_color_251f">#0000251f</color>
+    <color name="i_am_color_2520">#00002520</color>
+    <color name="i_am_color_2521">#00002521</color>
+    <color name="i_am_color_2522">#00002522</color>
+    <color name="i_am_color_2523">#00002523</color>
+    <color name="i_am_color_2524">#00002524</color>
+    <color name="i_am_color_2525">#00002525</color>
+    <color name="i_am_color_2526">#00002526</color>
+    <color name="i_am_color_2527">#00002527</color>
+    <color name="i_am_color_2528">#00002528</color>
+    <color name="i_am_color_2529">#00002529</color>
+    <color name="i_am_color_252a">#0000252a</color>
+    <color name="i_am_color_252b">#0000252b</color>
+    <color name="i_am_color_252c">#0000252c</color>
+    <color name="i_am_color_252d">#0000252d</color>
+    <color name="i_am_color_252e">#0000252e</color>
+    <color name="i_am_color_252f">#0000252f</color>
+    <color name="i_am_color_2530">#00002530</color>
+    <color name="i_am_color_2531">#00002531</color>
+    <color name="i_am_color_2532">#00002532</color>
+    <color name="i_am_color_2533">#00002533</color>
+    <color name="i_am_color_2534">#00002534</color>
+    <color name="i_am_color_2535">#00002535</color>
+    <color name="i_am_color_2536">#00002536</color>
+    <color name="i_am_color_2537">#00002537</color>
+    <color name="i_am_color_2538">#00002538</color>
+    <color name="i_am_color_2539">#00002539</color>
+    <color name="i_am_color_253a">#0000253a</color>
+    <color name="i_am_color_253b">#0000253b</color>
+    <color name="i_am_color_253c">#0000253c</color>
+    <color name="i_am_color_253d">#0000253d</color>
+    <color name="i_am_color_253e">#0000253e</color>
+    <color name="i_am_color_253f">#0000253f</color>
+    <color name="i_am_color_2540">#00002540</color>
+    <color name="i_am_color_2541">#00002541</color>
+    <color name="i_am_color_2542">#00002542</color>
+    <color name="i_am_color_2543">#00002543</color>
+    <color name="i_am_color_2544">#00002544</color>
+    <color name="i_am_color_2545">#00002545</color>
+    <color name="i_am_color_2546">#00002546</color>
+    <color name="i_am_color_2547">#00002547</color>
+    <color name="i_am_color_2548">#00002548</color>
+    <color name="i_am_color_2549">#00002549</color>
+    <color name="i_am_color_254a">#0000254a</color>
+    <color name="i_am_color_254b">#0000254b</color>
+    <color name="i_am_color_254c">#0000254c</color>
+    <color name="i_am_color_254d">#0000254d</color>
+    <color name="i_am_color_254e">#0000254e</color>
+    <color name="i_am_color_254f">#0000254f</color>
+    <color name="i_am_color_2550">#00002550</color>
+    <color name="i_am_color_2551">#00002551</color>
+    <color name="i_am_color_2552">#00002552</color>
+    <color name="i_am_color_2553">#00002553</color>
+    <color name="i_am_color_2554">#00002554</color>
+    <color name="i_am_color_2555">#00002555</color>
+    <color name="i_am_color_2556">#00002556</color>
+    <color name="i_am_color_2557">#00002557</color>
+    <color name="i_am_color_2558">#00002558</color>
+    <color name="i_am_color_2559">#00002559</color>
+    <color name="i_am_color_255a">#0000255a</color>
+    <color name="i_am_color_255b">#0000255b</color>
+    <color name="i_am_color_255c">#0000255c</color>
+    <color name="i_am_color_255d">#0000255d</color>
+    <color name="i_am_color_255e">#0000255e</color>
+    <color name="i_am_color_255f">#0000255f</color>
+    <color name="i_am_color_2560">#00002560</color>
+    <color name="i_am_color_2561">#00002561</color>
+    <color name="i_am_color_2562">#00002562</color>
+    <color name="i_am_color_2563">#00002563</color>
+    <color name="i_am_color_2564">#00002564</color>
+    <color name="i_am_color_2565">#00002565</color>
+    <color name="i_am_color_2566">#00002566</color>
+    <color name="i_am_color_2567">#00002567</color>
+    <color name="i_am_color_2568">#00002568</color>
+    <color name="i_am_color_2569">#00002569</color>
+    <color name="i_am_color_256a">#0000256a</color>
+    <color name="i_am_color_256b">#0000256b</color>
+    <color name="i_am_color_256c">#0000256c</color>
+    <color name="i_am_color_256d">#0000256d</color>
+    <color name="i_am_color_256e">#0000256e</color>
+    <color name="i_am_color_256f">#0000256f</color>
+    <color name="i_am_color_2570">#00002570</color>
+    <color name="i_am_color_2571">#00002571</color>
+    <color name="i_am_color_2572">#00002572</color>
+    <color name="i_am_color_2573">#00002573</color>
+    <color name="i_am_color_2574">#00002574</color>
+    <color name="i_am_color_2575">#00002575</color>
+    <color name="i_am_color_2576">#00002576</color>
+    <color name="i_am_color_2577">#00002577</color>
+    <color name="i_am_color_2578">#00002578</color>
+    <color name="i_am_color_2579">#00002579</color>
+    <color name="i_am_color_257a">#0000257a</color>
+    <color name="i_am_color_257b">#0000257b</color>
+    <color name="i_am_color_257c">#0000257c</color>
+    <color name="i_am_color_257d">#0000257d</color>
+    <color name="i_am_color_257e">#0000257e</color>
+    <color name="i_am_color_257f">#0000257f</color>
+    <color name="i_am_color_2580">#00002580</color>
+    <color name="i_am_color_2581">#00002581</color>
+    <color name="i_am_color_2582">#00002582</color>
+    <color name="i_am_color_2583">#00002583</color>
+    <color name="i_am_color_2584">#00002584</color>
+    <color name="i_am_color_2585">#00002585</color>
+    <color name="i_am_color_2586">#00002586</color>
+    <color name="i_am_color_2587">#00002587</color>
+    <color name="i_am_color_2588">#00002588</color>
+    <color name="i_am_color_2589">#00002589</color>
+    <color name="i_am_color_258a">#0000258a</color>
+    <color name="i_am_color_258b">#0000258b</color>
+    <color name="i_am_color_258c">#0000258c</color>
+    <color name="i_am_color_258d">#0000258d</color>
+    <color name="i_am_color_258e">#0000258e</color>
+    <color name="i_am_color_258f">#0000258f</color>
+    <color name="i_am_color_2590">#00002590</color>
+    <color name="i_am_color_2591">#00002591</color>
+    <color name="i_am_color_2592">#00002592</color>
+    <color name="i_am_color_2593">#00002593</color>
+    <color name="i_am_color_2594">#00002594</color>
+    <color name="i_am_color_2595">#00002595</color>
+    <color name="i_am_color_2596">#00002596</color>
+    <color name="i_am_color_2597">#00002597</color>
+    <color name="i_am_color_2598">#00002598</color>
+    <color name="i_am_color_2599">#00002599</color>
+    <color name="i_am_color_259a">#0000259a</color>
+    <color name="i_am_color_259b">#0000259b</color>
+    <color name="i_am_color_259c">#0000259c</color>
+    <color name="i_am_color_259d">#0000259d</color>
+    <color name="i_am_color_259e">#0000259e</color>
+    <color name="i_am_color_259f">#0000259f</color>
+    <color name="i_am_color_25a0">#000025a0</color>
+    <color name="i_am_color_25a1">#000025a1</color>
+    <color name="i_am_color_25a2">#000025a2</color>
+    <color name="i_am_color_25a3">#000025a3</color>
+    <color name="i_am_color_25a4">#000025a4</color>
+    <color name="i_am_color_25a5">#000025a5</color>
+    <color name="i_am_color_25a6">#000025a6</color>
+    <color name="i_am_color_25a7">#000025a7</color>
+    <color name="i_am_color_25a8">#000025a8</color>
+    <color name="i_am_color_25a9">#000025a9</color>
+    <color name="i_am_color_25aa">#000025aa</color>
+    <color name="i_am_color_25ab">#000025ab</color>
+    <color name="i_am_color_25ac">#000025ac</color>
+    <color name="i_am_color_25ad">#000025ad</color>
+    <color name="i_am_color_25ae">#000025ae</color>
+    <color name="i_am_color_25af">#000025af</color>
+    <color name="i_am_color_25b0">#000025b0</color>
+    <color name="i_am_color_25b1">#000025b1</color>
+    <color name="i_am_color_25b2">#000025b2</color>
+    <color name="i_am_color_25b3">#000025b3</color>
+    <color name="i_am_color_25b4">#000025b4</color>
+    <color name="i_am_color_25b5">#000025b5</color>
+    <color name="i_am_color_25b6">#000025b6</color>
+    <color name="i_am_color_25b7">#000025b7</color>
+    <color name="i_am_color_25b8">#000025b8</color>
+    <color name="i_am_color_25b9">#000025b9</color>
+    <color name="i_am_color_25ba">#000025ba</color>
+    <color name="i_am_color_25bb">#000025bb</color>
+    <color name="i_am_color_25bc">#000025bc</color>
+    <color name="i_am_color_25bd">#000025bd</color>
+    <color name="i_am_color_25be">#000025be</color>
+    <color name="i_am_color_25bf">#000025bf</color>
+    <color name="i_am_color_25c0">#000025c0</color>
+    <color name="i_am_color_25c1">#000025c1</color>
+    <color name="i_am_color_25c2">#000025c2</color>
+    <color name="i_am_color_25c3">#000025c3</color>
+    <color name="i_am_color_25c4">#000025c4</color>
+    <color name="i_am_color_25c5">#000025c5</color>
+    <color name="i_am_color_25c6">#000025c6</color>
+    <color name="i_am_color_25c7">#000025c7</color>
+    <color name="i_am_color_25c8">#000025c8</color>
+    <color name="i_am_color_25c9">#000025c9</color>
+    <color name="i_am_color_25ca">#000025ca</color>
+    <color name="i_am_color_25cb">#000025cb</color>
+    <color name="i_am_color_25cc">#000025cc</color>
+    <color name="i_am_color_25cd">#000025cd</color>
+    <color name="i_am_color_25ce">#000025ce</color>
+    <color name="i_am_color_25cf">#000025cf</color>
+    <color name="i_am_color_25d0">#000025d0</color>
+    <color name="i_am_color_25d1">#000025d1</color>
+    <color name="i_am_color_25d2">#000025d2</color>
+    <color name="i_am_color_25d3">#000025d3</color>
+    <color name="i_am_color_25d4">#000025d4</color>
+    <color name="i_am_color_25d5">#000025d5</color>
+    <color name="i_am_color_25d6">#000025d6</color>
+    <color name="i_am_color_25d7">#000025d7</color>
+    <color name="i_am_color_25d8">#000025d8</color>
+    <color name="i_am_color_25d9">#000025d9</color>
+    <color name="i_am_color_25da">#000025da</color>
+    <color name="i_am_color_25db">#000025db</color>
+    <color name="i_am_color_25dc">#000025dc</color>
+    <color name="i_am_color_25dd">#000025dd</color>
+    <color name="i_am_color_25de">#000025de</color>
+    <color name="i_am_color_25df">#000025df</color>
+    <color name="i_am_color_25e0">#000025e0</color>
+    <color name="i_am_color_25e1">#000025e1</color>
+    <color name="i_am_color_25e2">#000025e2</color>
+    <color name="i_am_color_25e3">#000025e3</color>
+    <color name="i_am_color_25e4">#000025e4</color>
+    <color name="i_am_color_25e5">#000025e5</color>
+    <color name="i_am_color_25e6">#000025e6</color>
+    <color name="i_am_color_25e7">#000025e7</color>
+    <color name="i_am_color_25e8">#000025e8</color>
+    <color name="i_am_color_25e9">#000025e9</color>
+    <color name="i_am_color_25ea">#000025ea</color>
+    <color name="i_am_color_25eb">#000025eb</color>
+    <color name="i_am_color_25ec">#000025ec</color>
+    <color name="i_am_color_25ed">#000025ed</color>
+    <color name="i_am_color_25ee">#000025ee</color>
+    <color name="i_am_color_25ef">#000025ef</color>
+    <color name="i_am_color_25f0">#000025f0</color>
+    <color name="i_am_color_25f1">#000025f1</color>
+    <color name="i_am_color_25f2">#000025f2</color>
+    <color name="i_am_color_25f3">#000025f3</color>
+    <color name="i_am_color_25f4">#000025f4</color>
+    <color name="i_am_color_25f5">#000025f5</color>
+    <color name="i_am_color_25f6">#000025f6</color>
+    <color name="i_am_color_25f7">#000025f7</color>
+    <color name="i_am_color_25f8">#000025f8</color>
+    <color name="i_am_color_25f9">#000025f9</color>
+    <color name="i_am_color_25fa">#000025fa</color>
+    <color name="i_am_color_25fb">#000025fb</color>
+    <color name="i_am_color_25fc">#000025fc</color>
+    <color name="i_am_color_25fd">#000025fd</color>
+    <color name="i_am_color_25fe">#000025fe</color>
+    <color name="i_am_color_25ff">#000025ff</color>
+    <color name="i_am_color_2600">#00002600</color>
+    <color name="i_am_color_2601">#00002601</color>
+    <color name="i_am_color_2602">#00002602</color>
+    <color name="i_am_color_2603">#00002603</color>
+    <color name="i_am_color_2604">#00002604</color>
+    <color name="i_am_color_2605">#00002605</color>
+    <color name="i_am_color_2606">#00002606</color>
+    <color name="i_am_color_2607">#00002607</color>
+    <color name="i_am_color_2608">#00002608</color>
+    <color name="i_am_color_2609">#00002609</color>
+    <color name="i_am_color_260a">#0000260a</color>
+    <color name="i_am_color_260b">#0000260b</color>
+    <color name="i_am_color_260c">#0000260c</color>
+    <color name="i_am_color_260d">#0000260d</color>
+    <color name="i_am_color_260e">#0000260e</color>
+    <color name="i_am_color_260f">#0000260f</color>
+    <color name="i_am_color_2610">#00002610</color>
+    <color name="i_am_color_2611">#00002611</color>
+    <color name="i_am_color_2612">#00002612</color>
+    <color name="i_am_color_2613">#00002613</color>
+    <color name="i_am_color_2614">#00002614</color>
+    <color name="i_am_color_2615">#00002615</color>
+    <color name="i_am_color_2616">#00002616</color>
+    <color name="i_am_color_2617">#00002617</color>
+    <color name="i_am_color_2618">#00002618</color>
+    <color name="i_am_color_2619">#00002619</color>
+    <color name="i_am_color_261a">#0000261a</color>
+    <color name="i_am_color_261b">#0000261b</color>
+    <color name="i_am_color_261c">#0000261c</color>
+    <color name="i_am_color_261d">#0000261d</color>
+    <color name="i_am_color_261e">#0000261e</color>
+    <color name="i_am_color_261f">#0000261f</color>
+    <color name="i_am_color_2620">#00002620</color>
+    <color name="i_am_color_2621">#00002621</color>
+    <color name="i_am_color_2622">#00002622</color>
+    <color name="i_am_color_2623">#00002623</color>
+    <color name="i_am_color_2624">#00002624</color>
+    <color name="i_am_color_2625">#00002625</color>
+    <color name="i_am_color_2626">#00002626</color>
+    <color name="i_am_color_2627">#00002627</color>
+    <color name="i_am_color_2628">#00002628</color>
+    <color name="i_am_color_2629">#00002629</color>
+    <color name="i_am_color_262a">#0000262a</color>
+    <color name="i_am_color_262b">#0000262b</color>
+    <color name="i_am_color_262c">#0000262c</color>
+    <color name="i_am_color_262d">#0000262d</color>
+    <color name="i_am_color_262e">#0000262e</color>
+    <color name="i_am_color_262f">#0000262f</color>
+    <color name="i_am_color_2630">#00002630</color>
+    <color name="i_am_color_2631">#00002631</color>
+    <color name="i_am_color_2632">#00002632</color>
+    <color name="i_am_color_2633">#00002633</color>
+    <color name="i_am_color_2634">#00002634</color>
+    <color name="i_am_color_2635">#00002635</color>
+    <color name="i_am_color_2636">#00002636</color>
+    <color name="i_am_color_2637">#00002637</color>
+    <color name="i_am_color_2638">#00002638</color>
+    <color name="i_am_color_2639">#00002639</color>
+    <color name="i_am_color_263a">#0000263a</color>
+    <color name="i_am_color_263b">#0000263b</color>
+    <color name="i_am_color_263c">#0000263c</color>
+    <color name="i_am_color_263d">#0000263d</color>
+    <color name="i_am_color_263e">#0000263e</color>
+    <color name="i_am_color_263f">#0000263f</color>
+    <color name="i_am_color_2640">#00002640</color>
+    <color name="i_am_color_2641">#00002641</color>
+    <color name="i_am_color_2642">#00002642</color>
+    <color name="i_am_color_2643">#00002643</color>
+    <color name="i_am_color_2644">#00002644</color>
+    <color name="i_am_color_2645">#00002645</color>
+    <color name="i_am_color_2646">#00002646</color>
+    <color name="i_am_color_2647">#00002647</color>
+    <color name="i_am_color_2648">#00002648</color>
+    <color name="i_am_color_2649">#00002649</color>
+    <color name="i_am_color_264a">#0000264a</color>
+    <color name="i_am_color_264b">#0000264b</color>
+    <color name="i_am_color_264c">#0000264c</color>
+    <color name="i_am_color_264d">#0000264d</color>
+    <color name="i_am_color_264e">#0000264e</color>
+    <color name="i_am_color_264f">#0000264f</color>
+    <color name="i_am_color_2650">#00002650</color>
+    <color name="i_am_color_2651">#00002651</color>
+    <color name="i_am_color_2652">#00002652</color>
+    <color name="i_am_color_2653">#00002653</color>
+    <color name="i_am_color_2654">#00002654</color>
+    <color name="i_am_color_2655">#00002655</color>
+    <color name="i_am_color_2656">#00002656</color>
+    <color name="i_am_color_2657">#00002657</color>
+    <color name="i_am_color_2658">#00002658</color>
+    <color name="i_am_color_2659">#00002659</color>
+    <color name="i_am_color_265a">#0000265a</color>
+    <color name="i_am_color_265b">#0000265b</color>
+    <color name="i_am_color_265c">#0000265c</color>
+    <color name="i_am_color_265d">#0000265d</color>
+    <color name="i_am_color_265e">#0000265e</color>
+    <color name="i_am_color_265f">#0000265f</color>
+    <color name="i_am_color_2660">#00002660</color>
+    <color name="i_am_color_2661">#00002661</color>
+    <color name="i_am_color_2662">#00002662</color>
+    <color name="i_am_color_2663">#00002663</color>
+    <color name="i_am_color_2664">#00002664</color>
+    <color name="i_am_color_2665">#00002665</color>
+    <color name="i_am_color_2666">#00002666</color>
+    <color name="i_am_color_2667">#00002667</color>
+    <color name="i_am_color_2668">#00002668</color>
+    <color name="i_am_color_2669">#00002669</color>
+    <color name="i_am_color_266a">#0000266a</color>
+    <color name="i_am_color_266b">#0000266b</color>
+    <color name="i_am_color_266c">#0000266c</color>
+    <color name="i_am_color_266d">#0000266d</color>
+    <color name="i_am_color_266e">#0000266e</color>
+    <color name="i_am_color_266f">#0000266f</color>
+    <color name="i_am_color_2670">#00002670</color>
+    <color name="i_am_color_2671">#00002671</color>
+    <color name="i_am_color_2672">#00002672</color>
+    <color name="i_am_color_2673">#00002673</color>
+    <color name="i_am_color_2674">#00002674</color>
+    <color name="i_am_color_2675">#00002675</color>
+    <color name="i_am_color_2676">#00002676</color>
+    <color name="i_am_color_2677">#00002677</color>
+    <color name="i_am_color_2678">#00002678</color>
+    <color name="i_am_color_2679">#00002679</color>
+    <color name="i_am_color_267a">#0000267a</color>
+    <color name="i_am_color_267b">#0000267b</color>
+    <color name="i_am_color_267c">#0000267c</color>
+    <color name="i_am_color_267d">#0000267d</color>
+    <color name="i_am_color_267e">#0000267e</color>
+    <color name="i_am_color_267f">#0000267f</color>
+    <color name="i_am_color_2680">#00002680</color>
+    <color name="i_am_color_2681">#00002681</color>
+    <color name="i_am_color_2682">#00002682</color>
+    <color name="i_am_color_2683">#00002683</color>
+    <color name="i_am_color_2684">#00002684</color>
+    <color name="i_am_color_2685">#00002685</color>
+    <color name="i_am_color_2686">#00002686</color>
+    <color name="i_am_color_2687">#00002687</color>
+    <color name="i_am_color_2688">#00002688</color>
+    <color name="i_am_color_2689">#00002689</color>
+    <color name="i_am_color_268a">#0000268a</color>
+    <color name="i_am_color_268b">#0000268b</color>
+    <color name="i_am_color_268c">#0000268c</color>
+    <color name="i_am_color_268d">#0000268d</color>
+    <color name="i_am_color_268e">#0000268e</color>
+    <color name="i_am_color_268f">#0000268f</color>
+    <color name="i_am_color_2690">#00002690</color>
+    <color name="i_am_color_2691">#00002691</color>
+    <color name="i_am_color_2692">#00002692</color>
+    <color name="i_am_color_2693">#00002693</color>
+    <color name="i_am_color_2694">#00002694</color>
+    <color name="i_am_color_2695">#00002695</color>
+    <color name="i_am_color_2696">#00002696</color>
+    <color name="i_am_color_2697">#00002697</color>
+    <color name="i_am_color_2698">#00002698</color>
+    <color name="i_am_color_2699">#00002699</color>
+    <color name="i_am_color_269a">#0000269a</color>
+    <color name="i_am_color_269b">#0000269b</color>
+    <color name="i_am_color_269c">#0000269c</color>
+    <color name="i_am_color_269d">#0000269d</color>
+    <color name="i_am_color_269e">#0000269e</color>
+    <color name="i_am_color_269f">#0000269f</color>
+    <color name="i_am_color_26a0">#000026a0</color>
+    <color name="i_am_color_26a1">#000026a1</color>
+    <color name="i_am_color_26a2">#000026a2</color>
+    <color name="i_am_color_26a3">#000026a3</color>
+    <color name="i_am_color_26a4">#000026a4</color>
+    <color name="i_am_color_26a5">#000026a5</color>
+    <color name="i_am_color_26a6">#000026a6</color>
+    <color name="i_am_color_26a7">#000026a7</color>
+    <color name="i_am_color_26a8">#000026a8</color>
+    <color name="i_am_color_26a9">#000026a9</color>
+    <color name="i_am_color_26aa">#000026aa</color>
+    <color name="i_am_color_26ab">#000026ab</color>
+    <color name="i_am_color_26ac">#000026ac</color>
+    <color name="i_am_color_26ad">#000026ad</color>
+    <color name="i_am_color_26ae">#000026ae</color>
+    <color name="i_am_color_26af">#000026af</color>
+    <color name="i_am_color_26b0">#000026b0</color>
+    <color name="i_am_color_26b1">#000026b1</color>
+    <color name="i_am_color_26b2">#000026b2</color>
+    <color name="i_am_color_26b3">#000026b3</color>
+    <color name="i_am_color_26b4">#000026b4</color>
+    <color name="i_am_color_26b5">#000026b5</color>
+    <color name="i_am_color_26b6">#000026b6</color>
+    <color name="i_am_color_26b7">#000026b7</color>
+    <color name="i_am_color_26b8">#000026b8</color>
+    <color name="i_am_color_26b9">#000026b9</color>
+    <color name="i_am_color_26ba">#000026ba</color>
+    <color name="i_am_color_26bb">#000026bb</color>
+    <color name="i_am_color_26bc">#000026bc</color>
+    <color name="i_am_color_26bd">#000026bd</color>
+    <color name="i_am_color_26be">#000026be</color>
+    <color name="i_am_color_26bf">#000026bf</color>
+    <color name="i_am_color_26c0">#000026c0</color>
+    <color name="i_am_color_26c1">#000026c1</color>
+    <color name="i_am_color_26c2">#000026c2</color>
+    <color name="i_am_color_26c3">#000026c3</color>
+    <color name="i_am_color_26c4">#000026c4</color>
+    <color name="i_am_color_26c5">#000026c5</color>
+    <color name="i_am_color_26c6">#000026c6</color>
+    <color name="i_am_color_26c7">#000026c7</color>
+    <color name="i_am_color_26c8">#000026c8</color>
+    <color name="i_am_color_26c9">#000026c9</color>
+    <color name="i_am_color_26ca">#000026ca</color>
+    <color name="i_am_color_26cb">#000026cb</color>
+    <color name="i_am_color_26cc">#000026cc</color>
+    <color name="i_am_color_26cd">#000026cd</color>
+    <color name="i_am_color_26ce">#000026ce</color>
+    <color name="i_am_color_26cf">#000026cf</color>
+    <color name="i_am_color_26d0">#000026d0</color>
+    <color name="i_am_color_26d1">#000026d1</color>
+    <color name="i_am_color_26d2">#000026d2</color>
+    <color name="i_am_color_26d3">#000026d3</color>
+    <color name="i_am_color_26d4">#000026d4</color>
+    <color name="i_am_color_26d5">#000026d5</color>
+    <color name="i_am_color_26d6">#000026d6</color>
+    <color name="i_am_color_26d7">#000026d7</color>
+    <color name="i_am_color_26d8">#000026d8</color>
+    <color name="i_am_color_26d9">#000026d9</color>
+    <color name="i_am_color_26da">#000026da</color>
+    <color name="i_am_color_26db">#000026db</color>
+    <color name="i_am_color_26dc">#000026dc</color>
+    <color name="i_am_color_26dd">#000026dd</color>
+    <color name="i_am_color_26de">#000026de</color>
+    <color name="i_am_color_26df">#000026df</color>
+    <color name="i_am_color_26e0">#000026e0</color>
+    <color name="i_am_color_26e1">#000026e1</color>
+    <color name="i_am_color_26e2">#000026e2</color>
+    <color name="i_am_color_26e3">#000026e3</color>
+    <color name="i_am_color_26e4">#000026e4</color>
+    <color name="i_am_color_26e5">#000026e5</color>
+    <color name="i_am_color_26e6">#000026e6</color>
+    <color name="i_am_color_26e7">#000026e7</color>
+    <color name="i_am_color_26e8">#000026e8</color>
+    <color name="i_am_color_26e9">#000026e9</color>
+    <color name="i_am_color_26ea">#000026ea</color>
+    <color name="i_am_color_26eb">#000026eb</color>
+    <color name="i_am_color_26ec">#000026ec</color>
+    <color name="i_am_color_26ed">#000026ed</color>
+    <color name="i_am_color_26ee">#000026ee</color>
+    <color name="i_am_color_26ef">#000026ef</color>
+    <color name="i_am_color_26f0">#000026f0</color>
+    <color name="i_am_color_26f1">#000026f1</color>
+    <color name="i_am_color_26f2">#000026f2</color>
+    <color name="i_am_color_26f3">#000026f3</color>
+    <color name="i_am_color_26f4">#000026f4</color>
+    <color name="i_am_color_26f5">#000026f5</color>
+    <color name="i_am_color_26f6">#000026f6</color>
+    <color name="i_am_color_26f7">#000026f7</color>
+    <color name="i_am_color_26f8">#000026f8</color>
+    <color name="i_am_color_26f9">#000026f9</color>
+    <color name="i_am_color_26fa">#000026fa</color>
+    <color name="i_am_color_26fb">#000026fb</color>
+    <color name="i_am_color_26fc">#000026fc</color>
+    <color name="i_am_color_26fd">#000026fd</color>
+    <color name="i_am_color_26fe">#000026fe</color>
+    <color name="i_am_color_26ff">#000026ff</color>
+    <color name="i_am_color_2700">#00002700</color>
+    <color name="i_am_color_2701">#00002701</color>
+    <color name="i_am_color_2702">#00002702</color>
+    <color name="i_am_color_2703">#00002703</color>
+    <color name="i_am_color_2704">#00002704</color>
+    <color name="i_am_color_2705">#00002705</color>
+    <color name="i_am_color_2706">#00002706</color>
+    <color name="i_am_color_2707">#00002707</color>
+    <color name="i_am_color_2708">#00002708</color>
+    <color name="i_am_color_2709">#00002709</color>
+    <color name="i_am_color_270a">#0000270a</color>
+    <color name="i_am_color_270b">#0000270b</color>
+    <color name="i_am_color_270c">#0000270c</color>
+    <color name="i_am_color_270d">#0000270d</color>
+    <color name="i_am_color_270e">#0000270e</color>
+    <color name="i_am_color_270f">#0000270f</color>
+    <color name="i_am_color_2710">#00002710</color>
+</resources>
diff --git a/apct-tests/perftests/core/src/android/app/ResourcesPerfTest.java b/apct-tests/perftests/core/src/android/app/ResourcesPerfTest.java
index 7216244..54b79b4 100644
--- a/apct-tests/perftests/core/src/android/app/ResourcesPerfTest.java
+++ b/apct-tests/perftests/core/src/android/app/ResourcesPerfTest.java
@@ -37,6 +37,7 @@
 import org.xmlpull.v1.XmlPullParserException;
 
 import java.io.IOException;
+import java.util.Random;
 
 /**
  * Benchmarks for {@link android.content.res.Resources}.
@@ -222,4 +223,24 @@
             state.resumeTiming();
         }
     }
-}
\ No newline at end of file
+
+    @Test
+    public void getIdentifier() {
+        final BenchmarkState state = mPerfStatusReporter.getBenchmarkState();
+        final Random random = new Random(System.currentTimeMillis());
+        final Context context = InstrumentationRegistry.getTargetContext();
+        final String packageName = context.getPackageName();
+        while (state.keepRunning()) {
+            state.pauseTiming();
+            final int expectedInteger = random.nextInt(10001);
+            final String expectedString = Integer.toHexString(expectedInteger);
+            final String entryName = "i_am_color_" + expectedString;
+            state.resumeTiming();
+
+            final int resIdentifier = mRes.getIdentifier(entryName, "color", packageName);
+            if (resIdentifier == 0) {
+                fail("Color \"" + entryName + "\" is not found");
+            }
+        }
+    }
+}
diff --git a/api/Android.bp b/api/Android.bp
index d57f5db..e902530 100644
--- a/api/Android.bp
+++ b/api/Android.bp
@@ -116,6 +116,7 @@
         "framework-graphics",
         "framework-media",
         "framework-mediaprovider",
+        "framework-ondevicepersonalization",
         "framework-permission",
         "framework-permission-s",
         "framework-scheduling",
diff --git a/boot/Android.bp b/boot/Android.bp
index 55ffe7c..aa22532 100644
--- a/boot/Android.bp
+++ b/boot/Android.bp
@@ -80,6 +80,10 @@
             module: "com.android.mediaprovider-bootclasspath-fragment",
         },
         {
+            apex: "com.android.ondevicepersonalization",
+            module: "com.android.ondevicepersonalization-bootclasspath-fragment",
+        },
+        {
             apex: "com.android.os.statsd",
             module: "com.android.os.statsd-bootclasspath-fragment",
         },
diff --git a/core/api/current.txt b/core/api/current.txt
index ea3830f..4d1e280 100644
--- a/core/api/current.txt
+++ b/core/api/current.txt
@@ -17124,12 +17124,17 @@
     field public static final int MICROPHONE = 1; // 0x1
   }
 
-  public final class SyncFence implements java.io.Closeable android.os.Parcelable {
-    method public void close() throws java.io.IOException;
+  public final class SyncFence implements java.lang.AutoCloseable android.os.Parcelable {
+    method public boolean await(@NonNull java.time.Duration);
+    method public boolean awaitForever();
+    method public void close();
     method public int describeContents();
+    method public long getSignalTime();
     method public boolean isValid();
     method public void writeToParcel(@NonNull android.os.Parcel, int);
     field @NonNull public static final android.os.Parcelable.Creator<android.hardware.SyncFence> CREATOR;
+    field public static final long SIGNAL_TIME_INVALID = -1L; // 0xffffffffffffffffL
+    field public static final long SIGNAL_TIME_PENDING = 9223372036854775807L; // 0x7fffffffffffffffL
   }
 
   public final class TriggerEvent {
@@ -27879,12 +27884,17 @@
 
   public class EGLExt {
     ctor public EGLExt();
+    method @NonNull public static android.hardware.SyncFence eglDupNativeFenceFDANDROID(@NonNull android.opengl.EGLDisplay, @NonNull android.opengl.EGLSync);
     method public static boolean eglPresentationTimeANDROID(android.opengl.EGLDisplay, android.opengl.EGLSurface, long);
     field public static final int EGL_CONTEXT_FLAGS_KHR = 12540; // 0x30fc
     field public static final int EGL_CONTEXT_MAJOR_VERSION_KHR = 12440; // 0x3098
     field public static final int EGL_CONTEXT_MINOR_VERSION_KHR = 12539; // 0x30fb
+    field public static final int EGL_NO_NATIVE_FENCE_FD_ANDROID = -1; // 0xffffffff
     field public static final int EGL_OPENGL_ES3_BIT_KHR = 64; // 0x40
     field public static final int EGL_RECORDABLE_ANDROID = 12610; // 0x3142
+    field public static final int EGL_SYNC_NATIVE_FENCE_ANDROID = 12612; // 0x3144
+    field public static final int EGL_SYNC_NATIVE_FENCE_FD_ANDROID = 12613; // 0x3145
+    field public static final int EGL_SYNC_NATIVE_FENCE_SIGNALED_ANDROID = 12614; // 0x3146
   }
 
   public class EGLImage extends android.opengl.EGLObjectHandle {
@@ -42724,16 +42734,16 @@
     ctor @Deprecated public ServiceState(android.os.Parcel);
     method protected void copyFrom(android.telephony.ServiceState);
     method public int describeContents();
-    method public int getCdmaNetworkId();
-    method public int getCdmaSystemId();
+    method @RequiresPermission(anyOf={android.Manifest.permission.ACCESS_FINE_LOCATION, android.Manifest.permission.ACCESS_COARSE_LOCATION}) public int getCdmaNetworkId();
+    method @RequiresPermission(anyOf={android.Manifest.permission.ACCESS_FINE_LOCATION, android.Manifest.permission.ACCESS_COARSE_LOCATION}) public int getCdmaSystemId();
     method public int[] getCellBandwidths();
     method public int getChannelNumber();
     method public int getDuplexMode();
     method public boolean getIsManualSelection();
     method @NonNull public java.util.List<android.telephony.NetworkRegistrationInfo> getNetworkRegistrationInfoList();
-    method public String getOperatorAlphaLong();
-    method public String getOperatorAlphaShort();
-    method public String getOperatorNumeric();
+    method @RequiresPermission(anyOf={android.Manifest.permission.ACCESS_FINE_LOCATION, android.Manifest.permission.ACCESS_COARSE_LOCATION}) public String getOperatorAlphaLong();
+    method @RequiresPermission(anyOf={android.Manifest.permission.ACCESS_FINE_LOCATION, android.Manifest.permission.ACCESS_COARSE_LOCATION}) public String getOperatorAlphaShort();
+    method @RequiresPermission(anyOf={android.Manifest.permission.ACCESS_FINE_LOCATION, android.Manifest.permission.ACCESS_COARSE_LOCATION}) public String getOperatorNumeric();
     method public boolean getRoaming();
     method public int getState();
     method public boolean isSearching();
diff --git a/core/api/system-current.txt b/core/api/system-current.txt
index 297239a..b1f0b54 100644
--- a/core/api/system-current.txt
+++ b/core/api/system-current.txt
@@ -917,8 +917,10 @@
   public class StatusBarManager {
     method @NonNull @RequiresPermission(android.Manifest.permission.STATUS_BAR) public android.app.StatusBarManager.DisableInfo getDisableInfo();
     method @RequiresPermission(android.Manifest.permission.STATUS_BAR) public int getNavBarModeOverride();
+    method @RequiresPermission(android.Manifest.permission.MEDIA_CONTENT_CONTROL) public void registerNearbyMediaDevicesProvider(@NonNull android.media.NearbyMediaDevicesProvider);
     method @RequiresPermission(android.Manifest.permission.STATUS_BAR) public void setDisabledForSetup(boolean);
     method @RequiresPermission(android.Manifest.permission.STATUS_BAR) public void setNavBarModeOverride(int);
+    method @RequiresPermission(android.Manifest.permission.MEDIA_CONTENT_CONTROL) public void unregisterNearbyMediaDevicesProvider(@NonNull android.media.NearbyMediaDevicesProvider);
     method @RequiresPermission(android.Manifest.permission.MEDIA_CONTENT_CONTROL) public void updateMediaTapToTransferReceiverDisplay(int, @NonNull android.media.MediaRoute2Info, @Nullable android.graphics.drawable.Icon, @Nullable CharSequence);
     method @RequiresPermission(android.Manifest.permission.MEDIA_CONTENT_CONTROL) public void updateMediaTapToTransferSenderDisplay(int, @NonNull android.media.MediaRoute2Info, @Nullable java.util.concurrent.Executor, @Nullable Runnable);
     field public static final int MEDIA_TRANSFER_RECEIVER_STATE_CLOSE_TO_SENDER = 0; // 0x0
@@ -2162,7 +2164,7 @@
     method @Nullable public android.net.Uri getSliceUri();
     method @NonNull public String getSmartspaceTargetId();
     method @Nullable public String getSourceNotificationKey();
-    method @Nullable public android.app.smartspace.uitemplatedata.SmartspaceDefaultUiTemplateData getTemplateData();
+    method @Nullable public android.app.smartspace.uitemplatedata.BaseTemplateData getTemplateData();
     method @NonNull public android.os.UserHandle getUserHandle();
     method @Nullable public android.appwidget.AppWidgetProviderInfo getWidget();
     method public boolean isSensitive();
@@ -2219,7 +2221,7 @@
     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 setTemplateData(@Nullable android.app.smartspace.uitemplatedata.SmartspaceDefaultUiTemplateData);
+    method @NonNull public android.app.smartspace.SmartspaceTarget.Builder setTemplateData(@Nullable android.app.smartspace.uitemplatedata.BaseTemplateData);
     method @NonNull public android.app.smartspace.SmartspaceTarget.Builder setWidget(@NonNull android.appwidget.AppWidgetProviderInfo);
   }
 
@@ -2250,156 +2252,156 @@
 
 package android.app.smartspace.uitemplatedata {
 
-  public final class SmartspaceCarouselUiTemplateData extends android.app.smartspace.uitemplatedata.SmartspaceDefaultUiTemplateData {
-    method @Nullable public android.app.smartspace.uitemplatedata.SmartspaceTapAction getCarouselAction();
-    method @NonNull public java.util.List<android.app.smartspace.uitemplatedata.SmartspaceCarouselUiTemplateData.CarouselItem> getCarouselItems();
-    field @NonNull public static final android.os.Parcelable.Creator<android.app.smartspace.uitemplatedata.SmartspaceCarouselUiTemplateData> CREATOR;
-  }
-
-  public static final class SmartspaceCarouselUiTemplateData.Builder extends android.app.smartspace.uitemplatedata.SmartspaceDefaultUiTemplateData.Builder {
-    ctor public SmartspaceCarouselUiTemplateData.Builder(@NonNull java.util.List<android.app.smartspace.uitemplatedata.SmartspaceCarouselUiTemplateData.CarouselItem>);
-    method @NonNull public android.app.smartspace.uitemplatedata.SmartspaceCarouselUiTemplateData build();
-    method @NonNull public android.app.smartspace.uitemplatedata.SmartspaceCarouselUiTemplateData.Builder setCarouselAction(@NonNull android.app.smartspace.uitemplatedata.SmartspaceTapAction);
-  }
-
-  public static final class SmartspaceCarouselUiTemplateData.CarouselItem implements android.os.Parcelable {
+  public class BaseTemplateData implements android.os.Parcelable {
     method public int describeContents();
-    method @Nullable public android.app.smartspace.uitemplatedata.SmartspaceIcon getImage();
-    method @Nullable public android.app.smartspace.uitemplatedata.SmartspaceText getLowerText();
-    method @Nullable public android.app.smartspace.uitemplatedata.SmartspaceTapAction getTapAction();
-    method @Nullable public android.app.smartspace.uitemplatedata.SmartspaceText getUpperText();
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.app.smartspace.uitemplatedata.SmartspaceCarouselUiTemplateData.CarouselItem> CREATOR;
-  }
-
-  public static final class SmartspaceCarouselUiTemplateData.CarouselItem.Builder {
-    ctor public SmartspaceCarouselUiTemplateData.CarouselItem.Builder();
-    method @NonNull public android.app.smartspace.uitemplatedata.SmartspaceCarouselUiTemplateData.CarouselItem build();
-    method @NonNull public android.app.smartspace.uitemplatedata.SmartspaceCarouselUiTemplateData.CarouselItem.Builder setImage(@Nullable android.app.smartspace.uitemplatedata.SmartspaceIcon);
-    method @NonNull public android.app.smartspace.uitemplatedata.SmartspaceCarouselUiTemplateData.CarouselItem.Builder setLowerText(@Nullable android.app.smartspace.uitemplatedata.SmartspaceText);
-    method @NonNull public android.app.smartspace.uitemplatedata.SmartspaceCarouselUiTemplateData.CarouselItem.Builder setTapAction(@Nullable android.app.smartspace.uitemplatedata.SmartspaceTapAction);
-    method @NonNull public android.app.smartspace.uitemplatedata.SmartspaceCarouselUiTemplateData.CarouselItem.Builder setUpperText(@Nullable android.app.smartspace.uitemplatedata.SmartspaceText);
-  }
-
-  public final class SmartspaceCombinedCardsUiTemplateData extends android.app.smartspace.uitemplatedata.SmartspaceDefaultUiTemplateData {
-    method @NonNull public java.util.List<android.app.smartspace.uitemplatedata.SmartspaceDefaultUiTemplateData> getCombinedCardDataList();
-    field @NonNull public static final android.os.Parcelable.Creator<android.app.smartspace.uitemplatedata.SmartspaceCombinedCardsUiTemplateData> CREATOR;
-  }
-
-  public static final class SmartspaceCombinedCardsUiTemplateData.Builder extends android.app.smartspace.uitemplatedata.SmartspaceDefaultUiTemplateData.Builder {
-    ctor public SmartspaceCombinedCardsUiTemplateData.Builder(@NonNull java.util.List<android.app.smartspace.uitemplatedata.SmartspaceDefaultUiTemplateData>);
-    method @NonNull public android.app.smartspace.uitemplatedata.SmartspaceCombinedCardsUiTemplateData build();
-  }
-
-  public class SmartspaceDefaultUiTemplateData implements android.os.Parcelable {
-    method public int describeContents();
-    method @Nullable public android.app.smartspace.uitemplatedata.SmartspaceTapAction getPrimaryTapAction();
-    method @Nullable public android.app.smartspace.uitemplatedata.SmartspaceIcon getSubtitleIcon();
-    method @Nullable public android.app.smartspace.uitemplatedata.SmartspaceText getSubtitleText();
-    method @Nullable public android.app.smartspace.uitemplatedata.SmartspaceText getSupplementalAlarmText();
-    method @Nullable public android.app.smartspace.uitemplatedata.SmartspaceIcon getSupplementalSubtitleIcon();
-    method @Nullable public android.app.smartspace.uitemplatedata.SmartspaceTapAction getSupplementalSubtitleTapAction();
-    method @Nullable public android.app.smartspace.uitemplatedata.SmartspaceText getSupplementalSubtitleText();
+    method @Nullable public android.app.smartspace.uitemplatedata.TapAction getPrimaryTapAction();
+    method @Nullable public android.app.smartspace.uitemplatedata.Icon getSubtitleIcon();
+    method @Nullable public android.app.smartspace.uitemplatedata.Text getSubtitleText();
+    method @Nullable public android.app.smartspace.uitemplatedata.Text getSupplementalAlarmText();
+    method @Nullable public android.app.smartspace.uitemplatedata.Icon getSupplementalSubtitleIcon();
+    method @Nullable public android.app.smartspace.uitemplatedata.TapAction getSupplementalSubtitleTapAction();
+    method @Nullable public android.app.smartspace.uitemplatedata.Text getSupplementalSubtitleText();
     method public int getTemplateType();
-    method @Nullable public android.app.smartspace.uitemplatedata.SmartspaceIcon getTitleIcon();
-    method @Nullable public android.app.smartspace.uitemplatedata.SmartspaceText getTitleText();
+    method @Nullable public android.app.smartspace.uitemplatedata.Icon getTitleIcon();
+    method @Nullable public android.app.smartspace.uitemplatedata.Text getTitleText();
     method public void writeToParcel(@NonNull android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.app.smartspace.uitemplatedata.SmartspaceDefaultUiTemplateData> CREATOR;
+    field @NonNull public static final android.os.Parcelable.Creator<android.app.smartspace.uitemplatedata.BaseTemplateData> CREATOR;
   }
 
-  public static class SmartspaceDefaultUiTemplateData.Builder {
-    ctor public SmartspaceDefaultUiTemplateData.Builder(int);
-    method @NonNull public android.app.smartspace.uitemplatedata.SmartspaceDefaultUiTemplateData build();
-    method @NonNull public android.app.smartspace.uitemplatedata.SmartspaceDefaultUiTemplateData.Builder setPrimaryTapAction(@NonNull android.app.smartspace.uitemplatedata.SmartspaceTapAction);
-    method @NonNull public android.app.smartspace.uitemplatedata.SmartspaceDefaultUiTemplateData.Builder setSubtitleIcon(@NonNull android.app.smartspace.uitemplatedata.SmartspaceIcon);
-    method @NonNull public android.app.smartspace.uitemplatedata.SmartspaceDefaultUiTemplateData.Builder setSubtitleText(@NonNull android.app.smartspace.uitemplatedata.SmartspaceText);
-    method @NonNull public android.app.smartspace.uitemplatedata.SmartspaceDefaultUiTemplateData.Builder setSupplementalAlarmText(@NonNull android.app.smartspace.uitemplatedata.SmartspaceText);
-    method @NonNull public android.app.smartspace.uitemplatedata.SmartspaceDefaultUiTemplateData.Builder setSupplementalSubtitleIcon(@NonNull android.app.smartspace.uitemplatedata.SmartspaceIcon);
-    method @NonNull public android.app.smartspace.uitemplatedata.SmartspaceDefaultUiTemplateData.Builder setSupplementalSubtitleTapAction(@NonNull android.app.smartspace.uitemplatedata.SmartspaceTapAction);
-    method @NonNull public android.app.smartspace.uitemplatedata.SmartspaceDefaultUiTemplateData.Builder setSupplementalSubtitleText(@NonNull android.app.smartspace.uitemplatedata.SmartspaceText);
-    method @NonNull public android.app.smartspace.uitemplatedata.SmartspaceDefaultUiTemplateData.Builder setTitleIcon(@NonNull android.app.smartspace.uitemplatedata.SmartspaceIcon);
-    method @NonNull public android.app.smartspace.uitemplatedata.SmartspaceDefaultUiTemplateData.Builder setTitleText(@NonNull android.app.smartspace.uitemplatedata.SmartspaceText);
+  public static class BaseTemplateData.Builder {
+    ctor public BaseTemplateData.Builder(int);
+    method @NonNull public android.app.smartspace.uitemplatedata.BaseTemplateData build();
+    method @NonNull public android.app.smartspace.uitemplatedata.BaseTemplateData.Builder setPrimaryTapAction(@NonNull android.app.smartspace.uitemplatedata.TapAction);
+    method @NonNull public android.app.smartspace.uitemplatedata.BaseTemplateData.Builder setSubtitleIcon(@NonNull android.app.smartspace.uitemplatedata.Icon);
+    method @NonNull public android.app.smartspace.uitemplatedata.BaseTemplateData.Builder setSubtitleText(@NonNull android.app.smartspace.uitemplatedata.Text);
+    method @NonNull public android.app.smartspace.uitemplatedata.BaseTemplateData.Builder setSupplementalAlarmText(@NonNull android.app.smartspace.uitemplatedata.Text);
+    method @NonNull public android.app.smartspace.uitemplatedata.BaseTemplateData.Builder setSupplementalSubtitleIcon(@NonNull android.app.smartspace.uitemplatedata.Icon);
+    method @NonNull public android.app.smartspace.uitemplatedata.BaseTemplateData.Builder setSupplementalSubtitleTapAction(@NonNull android.app.smartspace.uitemplatedata.TapAction);
+    method @NonNull public android.app.smartspace.uitemplatedata.BaseTemplateData.Builder setSupplementalSubtitleText(@NonNull android.app.smartspace.uitemplatedata.Text);
+    method @NonNull public android.app.smartspace.uitemplatedata.BaseTemplateData.Builder setTitleIcon(@NonNull android.app.smartspace.uitemplatedata.Icon);
+    method @NonNull public android.app.smartspace.uitemplatedata.BaseTemplateData.Builder setTitleText(@NonNull android.app.smartspace.uitemplatedata.Text);
   }
 
-  public final class SmartspaceHeadToHeadUiTemplateData extends android.app.smartspace.uitemplatedata.SmartspaceDefaultUiTemplateData {
-    method @Nullable public android.app.smartspace.uitemplatedata.SmartspaceTapAction getHeadToHeadAction();
-    method @Nullable public android.app.smartspace.uitemplatedata.SmartspaceIcon getHeadToHeadFirstCompetitorIcon();
-    method @Nullable public android.app.smartspace.uitemplatedata.SmartspaceText getHeadToHeadFirstCompetitorText();
-    method @Nullable public android.app.smartspace.uitemplatedata.SmartspaceIcon getHeadToHeadSecondCompetitorIcon();
-    method @Nullable public android.app.smartspace.uitemplatedata.SmartspaceText getHeadToHeadSecondCompetitorText();
-    method @Nullable public android.app.smartspace.uitemplatedata.SmartspaceText getHeadToHeadTitle();
-    field @NonNull public static final android.os.Parcelable.Creator<android.app.smartspace.uitemplatedata.SmartspaceHeadToHeadUiTemplateData> CREATOR;
+  public final class CarouselTemplateData extends android.app.smartspace.uitemplatedata.BaseTemplateData {
+    method @Nullable public android.app.smartspace.uitemplatedata.TapAction getCarouselAction();
+    method @NonNull public java.util.List<android.app.smartspace.uitemplatedata.CarouselTemplateData.CarouselItem> getCarouselItems();
+    field @NonNull public static final android.os.Parcelable.Creator<android.app.smartspace.uitemplatedata.CarouselTemplateData> CREATOR;
   }
 
-  public static final class SmartspaceHeadToHeadUiTemplateData.Builder extends android.app.smartspace.uitemplatedata.SmartspaceDefaultUiTemplateData.Builder {
-    ctor public SmartspaceHeadToHeadUiTemplateData.Builder();
-    method @NonNull public android.app.smartspace.uitemplatedata.SmartspaceHeadToHeadUiTemplateData build();
-    method @NonNull public android.app.smartspace.uitemplatedata.SmartspaceHeadToHeadUiTemplateData.Builder setHeadToHeadAction(@Nullable android.app.smartspace.uitemplatedata.SmartspaceTapAction);
-    method @NonNull public android.app.smartspace.uitemplatedata.SmartspaceHeadToHeadUiTemplateData.Builder setHeadToHeadFirstCompetitorIcon(@Nullable android.app.smartspace.uitemplatedata.SmartspaceIcon);
-    method @NonNull public android.app.smartspace.uitemplatedata.SmartspaceHeadToHeadUiTemplateData.Builder setHeadToHeadFirstCompetitorText(@Nullable android.app.smartspace.uitemplatedata.SmartspaceText);
-    method @NonNull public android.app.smartspace.uitemplatedata.SmartspaceHeadToHeadUiTemplateData.Builder setHeadToHeadSecondCompetitorIcon(@Nullable android.app.smartspace.uitemplatedata.SmartspaceIcon);
-    method @NonNull public android.app.smartspace.uitemplatedata.SmartspaceHeadToHeadUiTemplateData.Builder setHeadToHeadSecondCompetitorText(@Nullable android.app.smartspace.uitemplatedata.SmartspaceText);
-    method @NonNull public android.app.smartspace.uitemplatedata.SmartspaceHeadToHeadUiTemplateData.Builder setHeadToHeadTitle(@Nullable android.app.smartspace.uitemplatedata.SmartspaceText);
+  public static final class CarouselTemplateData.Builder extends android.app.smartspace.uitemplatedata.BaseTemplateData.Builder {
+    ctor public CarouselTemplateData.Builder(@NonNull java.util.List<android.app.smartspace.uitemplatedata.CarouselTemplateData.CarouselItem>);
+    method @NonNull public android.app.smartspace.uitemplatedata.CarouselTemplateData build();
+    method @NonNull public android.app.smartspace.uitemplatedata.CarouselTemplateData.Builder setCarouselAction(@NonNull android.app.smartspace.uitemplatedata.TapAction);
   }
 
-  public final class SmartspaceIcon implements android.os.Parcelable {
+  public static final class CarouselTemplateData.CarouselItem implements android.os.Parcelable {
+    method public int describeContents();
+    method @Nullable public android.app.smartspace.uitemplatedata.Icon getImage();
+    method @Nullable public android.app.smartspace.uitemplatedata.Text getLowerText();
+    method @Nullable public android.app.smartspace.uitemplatedata.TapAction getTapAction();
+    method @Nullable public android.app.smartspace.uitemplatedata.Text getUpperText();
+    method public void writeToParcel(@NonNull android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.app.smartspace.uitemplatedata.CarouselTemplateData.CarouselItem> CREATOR;
+  }
+
+  public static final class CarouselTemplateData.CarouselItem.Builder {
+    ctor public CarouselTemplateData.CarouselItem.Builder();
+    method @NonNull public android.app.smartspace.uitemplatedata.CarouselTemplateData.CarouselItem build();
+    method @NonNull public android.app.smartspace.uitemplatedata.CarouselTemplateData.CarouselItem.Builder setImage(@Nullable android.app.smartspace.uitemplatedata.Icon);
+    method @NonNull public android.app.smartspace.uitemplatedata.CarouselTemplateData.CarouselItem.Builder setLowerText(@Nullable android.app.smartspace.uitemplatedata.Text);
+    method @NonNull public android.app.smartspace.uitemplatedata.CarouselTemplateData.CarouselItem.Builder setTapAction(@Nullable android.app.smartspace.uitemplatedata.TapAction);
+    method @NonNull public android.app.smartspace.uitemplatedata.CarouselTemplateData.CarouselItem.Builder setUpperText(@Nullable android.app.smartspace.uitemplatedata.Text);
+  }
+
+  public final class CombinedCardsTemplateData extends android.app.smartspace.uitemplatedata.BaseTemplateData {
+    method @NonNull public java.util.List<android.app.smartspace.uitemplatedata.BaseTemplateData> getCombinedCardDataList();
+    field @NonNull public static final android.os.Parcelable.Creator<android.app.smartspace.uitemplatedata.CombinedCardsTemplateData> CREATOR;
+  }
+
+  public static final class CombinedCardsTemplateData.Builder extends android.app.smartspace.uitemplatedata.BaseTemplateData.Builder {
+    ctor public CombinedCardsTemplateData.Builder(@NonNull java.util.List<android.app.smartspace.uitemplatedata.BaseTemplateData>);
+    method @NonNull public android.app.smartspace.uitemplatedata.CombinedCardsTemplateData build();
+  }
+
+  public final class HeadToHeadTemplateData extends android.app.smartspace.uitemplatedata.BaseTemplateData {
+    method @Nullable public android.app.smartspace.uitemplatedata.TapAction getHeadToHeadAction();
+    method @Nullable public android.app.smartspace.uitemplatedata.Icon getHeadToHeadFirstCompetitorIcon();
+    method @Nullable public android.app.smartspace.uitemplatedata.Text getHeadToHeadFirstCompetitorText();
+    method @Nullable public android.app.smartspace.uitemplatedata.Icon getHeadToHeadSecondCompetitorIcon();
+    method @Nullable public android.app.smartspace.uitemplatedata.Text getHeadToHeadSecondCompetitorText();
+    method @Nullable public android.app.smartspace.uitemplatedata.Text getHeadToHeadTitle();
+    field @NonNull public static final android.os.Parcelable.Creator<android.app.smartspace.uitemplatedata.HeadToHeadTemplateData> CREATOR;
+  }
+
+  public static final class HeadToHeadTemplateData.Builder extends android.app.smartspace.uitemplatedata.BaseTemplateData.Builder {
+    ctor public HeadToHeadTemplateData.Builder();
+    method @NonNull public android.app.smartspace.uitemplatedata.HeadToHeadTemplateData build();
+    method @NonNull public android.app.smartspace.uitemplatedata.HeadToHeadTemplateData.Builder setHeadToHeadAction(@Nullable android.app.smartspace.uitemplatedata.TapAction);
+    method @NonNull public android.app.smartspace.uitemplatedata.HeadToHeadTemplateData.Builder setHeadToHeadFirstCompetitorIcon(@Nullable android.app.smartspace.uitemplatedata.Icon);
+    method @NonNull public android.app.smartspace.uitemplatedata.HeadToHeadTemplateData.Builder setHeadToHeadFirstCompetitorText(@Nullable android.app.smartspace.uitemplatedata.Text);
+    method @NonNull public android.app.smartspace.uitemplatedata.HeadToHeadTemplateData.Builder setHeadToHeadSecondCompetitorIcon(@Nullable android.app.smartspace.uitemplatedata.Icon);
+    method @NonNull public android.app.smartspace.uitemplatedata.HeadToHeadTemplateData.Builder setHeadToHeadSecondCompetitorText(@Nullable android.app.smartspace.uitemplatedata.Text);
+    method @NonNull public android.app.smartspace.uitemplatedata.HeadToHeadTemplateData.Builder setHeadToHeadTitle(@Nullable android.app.smartspace.uitemplatedata.Text);
+  }
+
+  public final class Icon implements android.os.Parcelable {
     method public int describeContents();
     method @Nullable public CharSequence getContentDescription();
     method @NonNull public android.graphics.drawable.Icon getIcon();
     method public boolean shouldTint();
     method public void writeToParcel(@NonNull android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.app.smartspace.uitemplatedata.SmartspaceIcon> CREATOR;
+    field @NonNull public static final android.os.Parcelable.Creator<android.app.smartspace.uitemplatedata.Icon> CREATOR;
   }
 
-  public static final class SmartspaceIcon.Builder {
-    ctor public SmartspaceIcon.Builder(@NonNull android.graphics.drawable.Icon);
-    method @NonNull public android.app.smartspace.uitemplatedata.SmartspaceIcon build();
-    method @NonNull public android.app.smartspace.uitemplatedata.SmartspaceIcon.Builder setContentDescription(@NonNull CharSequence);
-    method @NonNull public android.app.smartspace.uitemplatedata.SmartspaceIcon.Builder setShouldTint(boolean);
+  public static final class Icon.Builder {
+    ctor public Icon.Builder(@NonNull android.graphics.drawable.Icon);
+    method @NonNull public android.app.smartspace.uitemplatedata.Icon build();
+    method @NonNull public android.app.smartspace.uitemplatedata.Icon.Builder setContentDescription(@NonNull CharSequence);
+    method @NonNull public android.app.smartspace.uitemplatedata.Icon.Builder setShouldTint(boolean);
   }
 
-  public final class SmartspaceSubCardUiTemplateData extends android.app.smartspace.uitemplatedata.SmartspaceDefaultUiTemplateData {
-    method @Nullable public android.app.smartspace.uitemplatedata.SmartspaceTapAction getSubCardAction();
-    method @NonNull public android.app.smartspace.uitemplatedata.SmartspaceIcon getSubCardIcon();
-    method @Nullable public android.app.smartspace.uitemplatedata.SmartspaceText getSubCardText();
-    field @NonNull public static final android.os.Parcelable.Creator<android.app.smartspace.uitemplatedata.SmartspaceSubCardUiTemplateData> CREATOR;
+  public final class SubCardTemplateData extends android.app.smartspace.uitemplatedata.BaseTemplateData {
+    method @Nullable public android.app.smartspace.uitemplatedata.TapAction getSubCardAction();
+    method @NonNull public android.app.smartspace.uitemplatedata.Icon getSubCardIcon();
+    method @Nullable public android.app.smartspace.uitemplatedata.Text getSubCardText();
+    field @NonNull public static final android.os.Parcelable.Creator<android.app.smartspace.uitemplatedata.SubCardTemplateData> CREATOR;
   }
 
-  public static final class SmartspaceSubCardUiTemplateData.Builder extends android.app.smartspace.uitemplatedata.SmartspaceDefaultUiTemplateData.Builder {
-    ctor public SmartspaceSubCardUiTemplateData.Builder(@NonNull android.app.smartspace.uitemplatedata.SmartspaceIcon);
-    method @NonNull public android.app.smartspace.uitemplatedata.SmartspaceSubCardUiTemplateData build();
-    method @NonNull public android.app.smartspace.uitemplatedata.SmartspaceSubCardUiTemplateData.Builder setSubCardAction(@NonNull android.app.smartspace.uitemplatedata.SmartspaceTapAction);
-    method @NonNull public android.app.smartspace.uitemplatedata.SmartspaceSubCardUiTemplateData.Builder setSubCardText(@NonNull android.app.smartspace.uitemplatedata.SmartspaceText);
+  public static final class SubCardTemplateData.Builder extends android.app.smartspace.uitemplatedata.BaseTemplateData.Builder {
+    ctor public SubCardTemplateData.Builder(@NonNull android.app.smartspace.uitemplatedata.Icon);
+    method @NonNull public android.app.smartspace.uitemplatedata.SubCardTemplateData build();
+    method @NonNull public android.app.smartspace.uitemplatedata.SubCardTemplateData.Builder setSubCardAction(@NonNull android.app.smartspace.uitemplatedata.TapAction);
+    method @NonNull public android.app.smartspace.uitemplatedata.SubCardTemplateData.Builder setSubCardText(@NonNull android.app.smartspace.uitemplatedata.Text);
   }
 
-  public final class SmartspaceSubImageUiTemplateData extends android.app.smartspace.uitemplatedata.SmartspaceDefaultUiTemplateData {
-    method @Nullable public android.app.smartspace.uitemplatedata.SmartspaceTapAction getSubImageAction();
-    method @NonNull public java.util.List<android.app.smartspace.uitemplatedata.SmartspaceText> getSubImageTexts();
-    method @NonNull public java.util.List<android.app.smartspace.uitemplatedata.SmartspaceIcon> getSubImages();
-    field @NonNull public static final android.os.Parcelable.Creator<android.app.smartspace.uitemplatedata.SmartspaceSubImageUiTemplateData> CREATOR;
+  public final class SubImageTemplateData extends android.app.smartspace.uitemplatedata.BaseTemplateData {
+    method @Nullable public android.app.smartspace.uitemplatedata.TapAction getSubImageAction();
+    method @NonNull public java.util.List<android.app.smartspace.uitemplatedata.Text> getSubImageTexts();
+    method @NonNull public java.util.List<android.app.smartspace.uitemplatedata.Icon> getSubImages();
+    field @NonNull public static final android.os.Parcelable.Creator<android.app.smartspace.uitemplatedata.SubImageTemplateData> CREATOR;
   }
 
-  public static final class SmartspaceSubImageUiTemplateData.Builder extends android.app.smartspace.uitemplatedata.SmartspaceDefaultUiTemplateData.Builder {
-    ctor public SmartspaceSubImageUiTemplateData.Builder(@NonNull java.util.List<android.app.smartspace.uitemplatedata.SmartspaceText>, @NonNull java.util.List<android.app.smartspace.uitemplatedata.SmartspaceIcon>);
-    method @NonNull public android.app.smartspace.uitemplatedata.SmartspaceSubImageUiTemplateData build();
-    method @NonNull public android.app.smartspace.uitemplatedata.SmartspaceSubImageUiTemplateData.Builder setSubImageAction(@NonNull android.app.smartspace.uitemplatedata.SmartspaceTapAction);
+  public static final class SubImageTemplateData.Builder extends android.app.smartspace.uitemplatedata.BaseTemplateData.Builder {
+    ctor public SubImageTemplateData.Builder(@NonNull java.util.List<android.app.smartspace.uitemplatedata.Text>, @NonNull java.util.List<android.app.smartspace.uitemplatedata.Icon>);
+    method @NonNull public android.app.smartspace.uitemplatedata.SubImageTemplateData build();
+    method @NonNull public android.app.smartspace.uitemplatedata.SubImageTemplateData.Builder setSubImageAction(@NonNull android.app.smartspace.uitemplatedata.TapAction);
   }
 
-  public final class SmartspaceSubListUiTemplateData extends android.app.smartspace.uitemplatedata.SmartspaceDefaultUiTemplateData {
-    method @Nullable public android.app.smartspace.uitemplatedata.SmartspaceTapAction getSubListAction();
-    method @Nullable public android.app.smartspace.uitemplatedata.SmartspaceIcon getSubListIcon();
-    method @NonNull public java.util.List<android.app.smartspace.uitemplatedata.SmartspaceText> getSubListTexts();
-    field @NonNull public static final android.os.Parcelable.Creator<android.app.smartspace.uitemplatedata.SmartspaceSubListUiTemplateData> CREATOR;
+  public final class SubListTemplateData extends android.app.smartspace.uitemplatedata.BaseTemplateData {
+    method @Nullable public android.app.smartspace.uitemplatedata.TapAction getSubListAction();
+    method @Nullable public android.app.smartspace.uitemplatedata.Icon getSubListIcon();
+    method @NonNull public java.util.List<android.app.smartspace.uitemplatedata.Text> getSubListTexts();
+    field @NonNull public static final android.os.Parcelable.Creator<android.app.smartspace.uitemplatedata.SubListTemplateData> CREATOR;
   }
 
-  public static final class SmartspaceSubListUiTemplateData.Builder extends android.app.smartspace.uitemplatedata.SmartspaceDefaultUiTemplateData.Builder {
-    ctor public SmartspaceSubListUiTemplateData.Builder(@NonNull java.util.List<android.app.smartspace.uitemplatedata.SmartspaceText>);
-    method @NonNull public android.app.smartspace.uitemplatedata.SmartspaceSubListUiTemplateData build();
-    method @NonNull public android.app.smartspace.uitemplatedata.SmartspaceSubListUiTemplateData.Builder setSubListAction(@NonNull android.app.smartspace.uitemplatedata.SmartspaceTapAction);
-    method @NonNull public android.app.smartspace.uitemplatedata.SmartspaceSubListUiTemplateData.Builder setSubListIcon(@NonNull android.app.smartspace.uitemplatedata.SmartspaceIcon);
+  public static final class SubListTemplateData.Builder extends android.app.smartspace.uitemplatedata.BaseTemplateData.Builder {
+    ctor public SubListTemplateData.Builder(@NonNull java.util.List<android.app.smartspace.uitemplatedata.Text>);
+    method @NonNull public android.app.smartspace.uitemplatedata.SubListTemplateData build();
+    method @NonNull public android.app.smartspace.uitemplatedata.SubListTemplateData.Builder setSubListAction(@NonNull android.app.smartspace.uitemplatedata.TapAction);
+    method @NonNull public android.app.smartspace.uitemplatedata.SubListTemplateData.Builder setSubListIcon(@NonNull android.app.smartspace.uitemplatedata.Icon);
   }
 
-  public final class SmartspaceTapAction implements android.os.Parcelable {
+  public final class TapAction implements android.os.Parcelable {
     method public int describeContents();
     method @Nullable public android.os.Bundle getExtras();
     method @Nullable public CharSequence getId();
@@ -2407,31 +2409,33 @@
     method @Nullable public android.app.PendingIntent getPendingIntent();
     method @Nullable 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.uitemplatedata.SmartspaceTapAction> CREATOR;
+    field @NonNull public static final android.os.Parcelable.Creator<android.app.smartspace.uitemplatedata.TapAction> CREATOR;
   }
 
-  public static final class SmartspaceTapAction.Builder {
-    ctor public SmartspaceTapAction.Builder(@NonNull CharSequence);
-    method @NonNull public android.app.smartspace.uitemplatedata.SmartspaceTapAction build();
-    method @NonNull public android.app.smartspace.uitemplatedata.SmartspaceTapAction.Builder setExtras(@NonNull android.os.Bundle);
-    method @NonNull public android.app.smartspace.uitemplatedata.SmartspaceTapAction.Builder setIntent(@NonNull android.content.Intent);
-    method @NonNull public android.app.smartspace.uitemplatedata.SmartspaceTapAction.Builder setPendingIntent(@NonNull android.app.PendingIntent);
-    method @NonNull public android.app.smartspace.uitemplatedata.SmartspaceTapAction.Builder setUserHandle(@Nullable android.os.UserHandle);
+  public static final class TapAction.Builder {
+    ctor public TapAction.Builder(@NonNull CharSequence);
+    method @NonNull public android.app.smartspace.uitemplatedata.TapAction build();
+    method @NonNull public android.app.smartspace.uitemplatedata.TapAction.Builder setExtras(@NonNull android.os.Bundle);
+    method @NonNull public android.app.smartspace.uitemplatedata.TapAction.Builder setIntent(@NonNull android.content.Intent);
+    method @NonNull public android.app.smartspace.uitemplatedata.TapAction.Builder setPendingIntent(@NonNull android.app.PendingIntent);
+    method @NonNull public android.app.smartspace.uitemplatedata.TapAction.Builder setUserHandle(@Nullable android.os.UserHandle);
   }
 
-  public final class SmartspaceText implements android.os.Parcelable {
+  public final class Text implements android.os.Parcelable {
     method public int describeContents();
+    method public int getMaxLines();
     method @NonNull public CharSequence getText();
     method @NonNull public android.text.TextUtils.TruncateAt getTruncateAtType();
     method public void writeToParcel(@NonNull android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.app.smartspace.uitemplatedata.SmartspaceText> CREATOR;
+    field @NonNull public static final android.os.Parcelable.Creator<android.app.smartspace.uitemplatedata.Text> CREATOR;
   }
 
-  public static final class SmartspaceText.Builder {
-    ctor public SmartspaceText.Builder(@NonNull CharSequence);
-    ctor public SmartspaceText.Builder(@NonNull CharSequence, @NonNull android.text.TextUtils.TruncateAt);
-    method @NonNull public android.app.smartspace.uitemplatedata.SmartspaceText build();
-    method @NonNull public android.app.smartspace.uitemplatedata.SmartspaceText.Builder setTruncateAtType(@NonNull android.text.TextUtils.TruncateAt);
+  public static final class Text.Builder {
+    ctor public Text.Builder(@NonNull CharSequence);
+    ctor public Text.Builder(@NonNull CharSequence, @NonNull android.text.TextUtils.TruncateAt);
+    method @NonNull public android.app.smartspace.uitemplatedata.Text build();
+    method @NonNull public android.app.smartspace.uitemplatedata.Text.Builder setMaxLines(int);
+    method @NonNull public android.app.smartspace.uitemplatedata.Text.Builder setTruncateAtType(@NonNull android.text.TextUtils.TruncateAt);
   }
 
 }
@@ -2743,7 +2747,7 @@
 package android.companion.virtual {
 
   public final class VirtualDeviceManager {
-    method @Nullable @RequiresPermission(android.Manifest.permission.CREATE_VIRTUAL_DEVICE) public android.companion.virtual.VirtualDeviceManager.VirtualDevice createVirtualDevice(int, @NonNull android.companion.virtual.VirtualDeviceParams);
+    method @NonNull @RequiresPermission(android.Manifest.permission.CREATE_VIRTUAL_DEVICE) public android.companion.virtual.VirtualDeviceManager.VirtualDevice createVirtualDevice(int, @NonNull android.companion.virtual.VirtualDeviceParams);
   }
 
   public static interface VirtualDeviceManager.ActivityListener {
@@ -6257,6 +6261,26 @@
     field public static final int SYNC_EVENT_SHARE_AUDIO_HISTORY = 100; // 0x64
   }
 
+  public final class NearbyDevice implements android.os.Parcelable {
+    ctor public NearbyDevice(@NonNull String, int);
+    method public int describeContents();
+    method @NonNull public String getMediaRoute2Id();
+    method public int getRangeZone();
+    method @NonNull public static String rangeZoneToString(int);
+    method public void writeToParcel(@NonNull android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.media.NearbyDevice> CREATOR;
+    field public static final int RANGE_CLOSE = 3; // 0x3
+    field public static final int RANGE_FAR = 1; // 0x1
+    field public static final int RANGE_LONG = 2; // 0x2
+    field public static final int RANGE_UNKNOWN = 0; // 0x0
+    field public static final int RANGE_WITHIN_REACH = 4; // 0x4
+  }
+
+  public interface NearbyMediaDevicesProvider {
+    method public void registerNearbyDevicesCallback(@NonNull java.util.function.Consumer<java.util.List<android.media.NearbyDevice>>);
+    method public void unregisterNearbyDevicesCallback(@NonNull java.util.function.Consumer<java.util.List<android.media.NearbyDevice>>);
+  }
+
   public class PlayerProxy {
     method public void pause();
     method public void setPan(float);
diff --git a/core/api/test-current.txt b/core/api/test-current.txt
index 84b393a..239bba5 100644
--- a/core/api/test-current.txt
+++ b/core/api/test-current.txt
@@ -107,6 +107,8 @@
     method public final boolean addDumpable(@NonNull android.util.Dumpable);
     method public void dumpInternal(@NonNull String, @Nullable java.io.FileDescriptor, @NonNull java.io.PrintWriter, @Nullable String[]);
     method public void onMovedToDisplay(int, android.content.res.Configuration);
+    field public static final String DUMP_ARG_DUMP_DUMPABLE = "--dump-dumpable";
+    field public static final String DUMP_ARG_LIST_DUMPABLES = "--list-dumpables";
   }
 
   public class ActivityManager {
@@ -1200,7 +1202,6 @@
     field public static final int SWITCHING_TYPE_NONE = 0; // 0x0
     field public static final int SWITCHING_TYPE_WITHIN_GROUPS = 1; // 0x1
     field public static final int VIRTUAL_DISPLAY_FLAG_SHOULD_SHOW_SYSTEM_DECORATIONS = 512; // 0x200
-    field public static final int VIRTUAL_DISPLAY_FLAG_TRUSTED = 1024; // 0x400
   }
 
 }
@@ -2983,6 +2984,7 @@
     field public static final String DEVICE_CONFIG_PROPERTY_MAX_BUFFER_SIZE = "max_buffer_size";
     field public static final String DEVICE_CONFIG_PROPERTY_SERVICE_EXPLICITLY_ENABLED = "service_explicitly_enabled";
     field public static final String DEVICE_CONFIG_PROPERTY_TEXT_CHANGE_FLUSH_FREQUENCY = "text_change_flush_frequency";
+    field public static final String DUMPABLE_NAME = "ContentCaptureManager";
     field public static final int LOGGING_LEVEL_DEBUG = 1; // 0x1
     field public static final int LOGGING_LEVEL_OFF = 0; // 0x0
     field public static final int LOGGING_LEVEL_VERBOSE = 2; // 0x2
diff --git a/core/java/android/app/Activity.java b/core/java/android/app/Activity.java
index 983dde3..d190982 100644
--- a/core/java/android/app/Activity.java
+++ b/core/java/android/app/Activity.java
@@ -814,6 +814,13 @@
         Dialog mDialog;
         Bundle mArgs;
     }
+
+    /** @hide */ public static final String DUMP_ARG_AUTOFILL = "--autofill";
+    /** @hide */ public static final String DUMP_ARG_CONTENT_CAPTURE = "--contentcapture";
+    /** @hide */ public static final String DUMP_ARG_TRANSLATION = "--translation";
+    /** @hide */ @TestApi public static final String DUMP_ARG_LIST_DUMPABLES = "--list-dumpables";
+    /** @hide */ @TestApi public static final String DUMP_ARG_DUMP_DUMPABLE = "--dump-dumpable";
+
     private SparseArray<ManagedDialog> mManagedDialogs;
 
     // set by the thread after the constructor and before onCreate(Bundle savedInstanceState) is called.
@@ -7348,43 +7355,72 @@
     public void dumpInternal(@NonNull String prefix,
             @SuppressLint("UseParcelFileDescriptor") @Nullable FileDescriptor fd,
             @NonNull PrintWriter writer, @Nullable String[] args) {
-        if (args != null && args.length > 0
-                && CompatChanges.isChangeEnabled(DUMP_IGNORES_SPECIAL_ARGS)) {
+
+        // Lazy-load mDumpableContainer with Dumpables activity might already have a reference to
+        if (mAutofillClientController != null) {
+            addDumpable(mAutofillClientController);
+        }
+        if (mUiTranslationController != null) {
+            addDumpable(mUiTranslationController);
+        }
+        if (mContentCaptureManager != null) {
+            mContentCaptureManager.addDumpable(this);
+        }
+
+        boolean dumpInternalState = true;
+        String arg = null;
+        if (args != null && args.length > 0) {
+            arg = args[0];
+            boolean isSpecialCase = true;
             // Handle special cases
-            switch (args[0]) {
-                case "--autofill":
-                    dumpAutofillManager(prefix, writer, args);
+            switch (arg) {
+                case DUMP_ARG_AUTOFILL:
+                    dumpLegacyDumpable(prefix, writer, arg,
+                            AutofillClientController.DUMPABLE_NAME);
                     return;
-                case "--contentcapture":
-                    dumpContentCaptureManager(prefix, writer);
+                case DUMP_ARG_CONTENT_CAPTURE:
+                    dumpLegacyDumpable(prefix, writer, arg,
+                            ContentCaptureManager.DUMPABLE_NAME);
                     return;
-                case "--translation":
-                    dumpUiTranslation(prefix, writer);
+                case DUMP_ARG_TRANSLATION:
+                    dumpLegacyDumpable(prefix, writer, arg,
+                            UiTranslationController.DUMPABLE_NAME);
                     return;
-                case "--list-dumpables":
+                case DUMP_ARG_LIST_DUMPABLES:
                     if (mDumpableContainer == null) {
                         writer.print(prefix); writer.println("No dumpables");
-                        return;
+                    } else {
+                        mDumpableContainer.listDumpables(prefix, writer);
                     }
                     mDumpableContainer.listDumpables(prefix, writer);
                     return;
-                case "--dump-dumpable":
+                case DUMP_ARG_DUMP_DUMPABLE:
                     if (args.length == 1) {
-                        writer.println("--dump-dumpable requires the dumpable name");
-                        return;
-                    }
-                    if (mDumpableContainer == null) {
+                        writer.print(DUMP_ARG_DUMP_DUMPABLE);
+                        writer.println(" requires the dumpable name");
+                    } else if (mDumpableContainer == null) {
                         writer.println("no dumpables");
-                        return;
+                    } else {
+                        // Strips --dump-dumpable NAME
+                        String[] prunedArgs = new String[args.length - 2];
+                        System.arraycopy(args, 2, prunedArgs, 0, prunedArgs.length);
+                        mDumpableContainer.dumpOneDumpable(prefix, writer, args[1], prunedArgs);
                     }
-                    // Strips --dump-dumpable NAME
-                    String[] prunedArgs = new String[args.length - 2];
-                    System.arraycopy(args, 2, prunedArgs, 0, prunedArgs.length);
-                    mDumpableContainer.dumpOneDumpable(prefix, writer, args[1], prunedArgs);
-                    return;
+                    break;
+                default:
+                    isSpecialCase = false;
+                    break;
+            }
+            if (isSpecialCase) {
+                dumpInternalState = !CompatChanges.isChangeEnabled(DUMP_IGNORES_SPECIAL_ARGS);
             }
         }
-        dump(prefix, fd, writer, args);
+
+        if (dumpInternalState) {
+            dump(prefix, fd, writer, args);
+        } else {
+            Log.i(TAG, "Not calling dump() on " + this + " because of special argument " + arg);
+        }
     }
 
     void dumpInner(@NonNull String prefix, @Nullable FileDescriptor fd,
@@ -7428,26 +7464,10 @@
         }
     }
 
-    private void dumpContentCaptureManager(String prefix, PrintWriter writer) {
-        getContentCaptureManager();
-        dumpLegacyDumpable(prefix, writer, ContentCaptureManager.DUMPABLE_NAME, /* args= */ null);
-    }
-
-    private void dumpUiTranslation(String prefix, PrintWriter writer) {
-        dumpLegacyDumpable(prefix, writer, UiTranslationController.DUMPABLE_NAME, /* args= */ null);
-    }
-
-    private void dumpAutofillManager(String prefix, PrintWriter writer, String[] args) {
-        dumpLegacyDumpable(prefix, writer, AutofillClientController.DUMPABLE_NAME, args);
-    }
-
-    private void dumpLegacyDumpable(@NonNull String prefix, @NonNull PrintWriter writer,
-            @NonNull String dumpableName, @Nullable String[] args) {
-        if (mDumpableContainer == null) {
-            writer.print(prefix); writer.print("no "); writer.println(dumpableName);
-            return;
-        }
-        mDumpableContainer.dumpOneDumpable(prefix, writer, dumpableName, args);
+    private void dumpLegacyDumpable(String prefix, PrintWriter writer, String legacyOption,
+            String dumpableName) {
+        writer.printf("%s%s option deprecated. Use %s %s instead\n", prefix, legacyOption,
+                DUMP_ARG_DUMP_DUMPABLE, dumpableName);
     }
 
     /**
diff --git a/core/java/android/app/ActivityManagerInternal.java b/core/java/android/app/ActivityManagerInternal.java
index 294621e..d29d3d4 100644
--- a/core/java/android/app/ActivityManagerInternal.java
+++ b/core/java/android/app/ActivityManagerInternal.java
@@ -826,4 +826,9 @@
      * Register the bind service event listener callback.
      */
     public abstract void addBindServiceEventListener(@NonNull BindServiceEventListener listener);
+
+    /**
+     * Restart android.
+     */
+    public abstract void restart();
 }
diff --git a/core/java/android/app/StatusBarManager.java b/core/java/android/app/StatusBarManager.java
index 5f00342..0326e11 100644
--- a/core/java/android/app/StatusBarManager.java
+++ b/core/java/android/app/StatusBarManager.java
@@ -28,7 +28,11 @@
 import android.content.ComponentName;
 import android.content.Context;
 import android.graphics.drawable.Icon;
+import android.media.INearbyMediaDevicesProvider;
+import android.media.INearbyMediaDevicesUpdateCallback;
 import android.media.MediaRoute2Info;
+import android.media.NearbyDevice;
+import android.media.NearbyMediaDevicesProvider;
 import android.os.Binder;
 import android.os.Build;
 import android.os.Bundle;
@@ -46,6 +50,9 @@
 
 import java.lang.annotation.Retention;
 import java.lang.annotation.RetentionPolicy;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
 import java.util.Objects;
 import java.util.Set;
 import java.util.concurrent.Executor;
@@ -503,6 +510,16 @@
     @Retention(RetentionPolicy.SOURCE)
     public @interface MediaTransferReceiverState {}
 
+    /**
+     * A map from a provider registered in
+     * {@link #registerNearbyMediaDevicesProvider(NearbyMediaDevicesProvider)} to the wrapper
+     * around the provider that was created internally. We need the wrapper to make the provider
+     * binder-compatible, and we need to store a reference to the wrapper so that when the provider
+     * is un-registered, we un-register the saved wrapper instance.
+     */
+    private final Map<NearbyMediaDevicesProvider, NearbyMediaDevicesProviderWrapper>
+            nearbyMediaDevicesProviderMap = new HashMap<>();
+
     @UnsupportedAppUsage
     private Context mContext;
     private IStatusBarService mService;
@@ -1033,6 +1050,67 @@
         }
     }
 
+    /**
+     * Registers a provider that notifies callbacks about the status of nearby devices that are able
+     * to play media.
+     * <p>
+     * If multiple providers are registered, all the providers will be used for nearby device
+     * information.
+     * <p>
+     * @param provider the nearby device information provider to register
+     * <p>
+     * @hide
+     */
+    @SystemApi
+    @RequiresPermission(android.Manifest.permission.MEDIA_CONTENT_CONTROL)
+    public void registerNearbyMediaDevicesProvider(
+            @NonNull NearbyMediaDevicesProvider provider
+    ) {
+        Objects.requireNonNull(provider);
+        if (nearbyMediaDevicesProviderMap.containsKey(provider)) {
+            return;
+        }
+        try {
+            final IStatusBarService svc = getService();
+            NearbyMediaDevicesProviderWrapper providerWrapper =
+                    new NearbyMediaDevicesProviderWrapper(provider);
+            nearbyMediaDevicesProviderMap.put(provider, providerWrapper);
+            svc.registerNearbyMediaDevicesProvider(providerWrapper);
+        } catch (RemoteException e) {
+            throw e.rethrowFromSystemServer();
+        }
+    }
+
+   /**
+     * Unregisters a provider that gives information about nearby devices that are able to play
+     * media.
+     * <p>
+     * See {@link registerNearbyMediaDevicesProvider}.
+     * <p>
+     * @param provider the nearby device information provider to unregister
+     * <p>
+     * @hide
+     */
+    @SystemApi
+    @RequiresPermission(android.Manifest.permission.MEDIA_CONTENT_CONTROL)
+    public void unregisterNearbyMediaDevicesProvider(
+            @NonNull NearbyMediaDevicesProvider provider
+    ) {
+        Objects.requireNonNull(provider);
+        if (!nearbyMediaDevicesProviderMap.containsKey(provider)) {
+            return;
+        }
+        try {
+            final IStatusBarService svc = getService();
+            NearbyMediaDevicesProviderWrapper providerWrapper =
+                    nearbyMediaDevicesProviderMap.get(provider);
+            nearbyMediaDevicesProviderMap.remove(provider);
+            svc.unregisterNearbyMediaDevicesProvider(providerWrapper);
+        } catch (RemoteException e) {
+            throw e.rethrowFromSystemServer();
+        }
+    }
+
     /** @hide */
     public static String windowStateToString(int state) {
         if (state == WINDOW_STATE_HIDING) return "WINDOW_STATE_HIDING";
@@ -1340,4 +1418,48 @@
             }
         }
     }
+
+    /**
+     * @hide
+     */
+    static final class NearbyMediaDevicesProviderWrapper extends INearbyMediaDevicesProvider.Stub {
+        @NonNull
+        private final NearbyMediaDevicesProvider mProvider;
+        // Because we're wrapping a {@link NearbyMediaDevicesProvider} in a binder-compatible
+        // interface, we also need to wrap the callbacks that the provider receives. We use
+        // this map to keep track of the original callback and the wrapper callback so that
+        // unregistering the callback works correctly.
+        @NonNull
+        private final Map<INearbyMediaDevicesUpdateCallback, Consumer<List<NearbyDevice>>>
+                mRegisteredCallbacks = new HashMap<>();
+
+        NearbyMediaDevicesProviderWrapper(@NonNull NearbyMediaDevicesProvider provider) {
+            mProvider = provider;
+        }
+
+        @Override
+        public void registerNearbyDevicesCallback(
+                @NonNull INearbyMediaDevicesUpdateCallback callback) {
+            Consumer<List<NearbyDevice>> callbackAsConsumer = nearbyDevices -> {
+                try {
+                    callback.onDevicesUpdated(nearbyDevices);
+                } catch (RemoteException ex) {
+                    throw ex.rethrowFromSystemServer();
+                }
+            };
+
+            mRegisteredCallbacks.put(callback, callbackAsConsumer);
+            mProvider.registerNearbyDevicesCallback(callbackAsConsumer);
+        }
+
+        @Override
+        public void unregisterNearbyDevicesCallback(
+                @NonNull INearbyMediaDevicesUpdateCallback callback) {
+            if (!mRegisteredCallbacks.containsKey(callback)) {
+                return;
+            }
+            mProvider.unregisterNearbyDevicesCallback(mRegisteredCallbacks.get(callback));
+            mRegisteredCallbacks.remove(callback);
+        }
+    }
 }
diff --git a/core/java/android/app/smartspace/SmartspaceTarget.java b/core/java/android/app/smartspace/SmartspaceTarget.java
index 78f51be..fd7088f 100644
--- a/core/java/android/app/smartspace/SmartspaceTarget.java
+++ b/core/java/android/app/smartspace/SmartspaceTarget.java
@@ -20,7 +20,7 @@
 import android.annotation.NonNull;
 import android.annotation.Nullable;
 import android.annotation.SystemApi;
-import android.app.smartspace.uitemplatedata.SmartspaceDefaultUiTemplateData;
+import android.app.smartspace.uitemplatedata.BaseTemplateData;
 import android.appwidget.AppWidgetProviderInfo;
 import android.content.ComponentName;
 import android.net.Uri;
@@ -133,7 +133,7 @@
     private final AppWidgetProviderInfo mWidget;
 
     @Nullable
-    private final SmartspaceDefaultUiTemplateData mTemplateData;
+    private final BaseTemplateData mTemplateData;
 
     public static final int FEATURE_UNDEFINED = 0;
     public static final int FEATURE_WEATHER = 1;
@@ -194,15 +194,25 @@
     }
 
     public static final int UI_TEMPLATE_UNDEFINED = 0;
+    // Default template whose data is represented by {@link BaseTemplateData}. The default
+    // template is also a base card for the other types of templates.
     public static final int UI_TEMPLATE_DEFAULT = 1;
+    // Sub-image template whose data is represented by {@link SubImageTemplateData}
     public static final int UI_TEMPLATE_SUB_IMAGE = 2;
+    // Sub-list template whose data is represented by {@link SubListTemplateData}
     public static final int UI_TEMPLATE_SUB_LIST = 3;
+    // Carousel template whose data is represented by {@link CarouselTemplateData}
     public static final int UI_TEMPLATE_CAROUSEL = 4;
+    // Head-to-head template whose data is represented by {@link HeadToHeadTemplateData}
     public static final int UI_TEMPLATE_HEAD_TO_HEAD = 5;
+    // Combined-cards template whose data is represented by {@link CombinedCardsTemplateData}
     public static final int UI_TEMPLATE_COMBINED_CARDS = 6;
+    // Sub-card template whose data is represented by {@link SubCardTemplateData}
     public static final int UI_TEMPLATE_SUB_CARD = 7;
 
     /**
+     * The types of the Smartspace ui templates.
+     *
      * @hide
      */
     @IntDef(prefix = {"UI_TEMPLATE_"}, value = {
@@ -237,7 +247,7 @@
         this.mAssociatedSmartspaceTargetId = in.readString();
         this.mSliceUri = in.readTypedObject(Uri.CREATOR);
         this.mWidget = in.readTypedObject(AppWidgetProviderInfo.CREATOR);
-        this.mTemplateData = in.readTypedObject(SmartspaceDefaultUiTemplateData.CREATOR);
+        this.mTemplateData = in.readTypedObject(BaseTemplateData.CREATOR);
     }
 
     private SmartspaceTarget(String smartspaceTargetId,
@@ -248,7 +258,7 @@
             boolean shouldShowExpanded, String sourceNotificationKey,
             ComponentName componentName, UserHandle userHandle,
             String associatedSmartspaceTargetId, Uri sliceUri,
-            AppWidgetProviderInfo widget, SmartspaceDefaultUiTemplateData templateData) {
+            AppWidgetProviderInfo widget, BaseTemplateData templateData) {
         mSmartspaceTargetId = smartspaceTargetId;
         mHeaderAction = headerAction;
         mBaseAction = baseAction;
@@ -406,7 +416,7 @@
      * Returns the UI template data.
      */
     @Nullable
-    public SmartspaceDefaultUiTemplateData getTemplateData() {
+    public BaseTemplateData getTemplateData() {
         return mTemplateData;
     }
 
@@ -536,7 +546,7 @@
         private String mAssociatedSmartspaceTargetId;
         private Uri mSliceUri;
         private AppWidgetProviderInfo mWidget;
-        private SmartspaceDefaultUiTemplateData mTemplateData;
+        private BaseTemplateData mTemplateData;
 
         /**
          * A builder for {@link SmartspaceTarget}.
@@ -689,7 +699,7 @@
          */
         @NonNull
         public Builder setTemplateData(
-                @Nullable SmartspaceDefaultUiTemplateData templateData) {
+                @Nullable BaseTemplateData templateData) {
             mTemplateData = templateData;
             return this;
         }
diff --git a/core/java/android/app/smartspace/SmartspaceUtils.java b/core/java/android/app/smartspace/SmartspaceUtils.java
index 4545f43..cad4453 100644
--- a/core/java/android/app/smartspace/SmartspaceUtils.java
+++ b/core/java/android/app/smartspace/SmartspaceUtils.java
@@ -17,7 +17,7 @@
 package android.app.smartspace;
 
 import android.annotation.Nullable;
-import android.app.smartspace.uitemplatedata.SmartspaceText;
+import android.app.smartspace.uitemplatedata.Text;
 import android.text.TextUtils;
 
 /**
@@ -30,13 +30,13 @@
     private SmartspaceUtils() {
     }
 
-    /** Returns true if the passed in {@link SmartspaceText} is null or its content is empty. */
-    public static boolean isEmpty(@Nullable SmartspaceText text) {
+    /** Returns true if the passed in {@link Text} is null or its content is empty. */
+    public static boolean isEmpty(@Nullable Text text) {
         return text == null || TextUtils.isEmpty(text.getText());
     }
 
-    /** Returns true if the passed-in {@link SmartspaceText}s are equal. */
-    public static boolean isEqual(@Nullable SmartspaceText text1, @Nullable SmartspaceText text2) {
+    /** Returns true if the passed-in {@link Text}s are equal. */
+    public static boolean isEqual(@Nullable Text text1, @Nullable Text text2) {
         if (text1 == null && text2 == null) return true;
         if (text1 == null || text2 == null) return false;
         return text1.equals(text2);
diff --git a/core/java/android/app/smartspace/uitemplatedata/SmartspaceDefaultUiTemplateData.java b/core/java/android/app/smartspace/uitemplatedata/BaseTemplateData.java
similarity index 69%
rename from core/java/android/app/smartspace/uitemplatedata/SmartspaceDefaultUiTemplateData.java
rename to core/java/android/app/smartspace/uitemplatedata/BaseTemplateData.java
index a7ac9c7..a07af68 100644
--- a/core/java/android/app/smartspace/uitemplatedata/SmartspaceDefaultUiTemplateData.java
+++ b/core/java/android/app/smartspace/uitemplatedata/BaseTemplateData.java
@@ -29,12 +29,19 @@
 
 /**
  * Holds all the relevant data needed to render a Smartspace card with the default Ui Template.
+ * <ul>
+ *     <li> title_text (may contain a start drawable) </li>
+ *     <li> subtitle_text (may contain a start drawable) . supplemental_subtitle_text (may
+ *     contain a start drawable) </li>
+ *     <li> next_alarm_text (contain a start drawable) + supplemental_alarm_text .
+ *     do_not_disturb_view </li>
+ * </ul>
  *
  * @hide
  */
 @SystemApi
 @SuppressLint("ParcelNotFinal")
-public class SmartspaceDefaultUiTemplateData implements Parcelable {
+public class BaseTemplateData implements Parcelable {
 
     /**
      * {@link UiTemplateType} indicating the template type of this template data.
@@ -49,17 +56,17 @@
      * will be used, which has its own tap action applied to the title area.
      */
     @Nullable
-    private final SmartspaceText mTitleText;
+    private final Text mTitleText;
 
     @Nullable
-    private final SmartspaceIcon mTitleIcon;
+    private final Icon mTitleIcon;
 
     /** Subtitle text and icon are shown at the second row. */
     @Nullable
-    private final SmartspaceText mSubtitleText;
+    private final Text mSubtitleText;
 
     @Nullable
-    private final SmartspaceIcon mSubtitleIcon;
+    private final Icon mSubtitleIcon;
 
     /**
      * Primary tap action for the entire card, including the blank spaces, except: 1. When title is
@@ -67,59 +74,59 @@
      * action if being set; 3. Secondary card uses its own tap action if being set.
      */
     @Nullable
-    private final SmartspaceTapAction mPrimaryTapAction;
+    private final TapAction mPrimaryTapAction;
 
     /**
      * Supplemental subtitle text and icon are shown at the second row following the subtitle text.
      * Mainly used for weather info on non-weather card.
      */
     @Nullable
-    private final SmartspaceText mSupplementalSubtitleText;
+    private final Text mSupplementalSubtitleText;
 
     @Nullable
-    private final SmartspaceIcon mSupplementalSubtitleIcon;
+    private final Icon mSupplementalSubtitleIcon;
 
     /**
      * Tap action for the supplemental subtitle's text and icon. Will use the primary tap action if
      * not being set.
      */
     @Nullable
-    private final SmartspaceTapAction mSupplementalSubtitleTapAction;
+    private final TapAction mSupplementalSubtitleTapAction;
 
     /**
      * Supplemental alarm text is specifically used for holiday alarm, which is appended to "next
      * alarm".
      */
     @Nullable
-    private final SmartspaceText mSupplementalAlarmText;
+    private final Text mSupplementalAlarmText;
 
-    SmartspaceDefaultUiTemplateData(@NonNull Parcel in) {
+    BaseTemplateData(@NonNull Parcel in) {
         mTemplateType = in.readInt();
-        mTitleText = in.readTypedObject(SmartspaceText.CREATOR);
-        mTitleIcon = in.readTypedObject(SmartspaceIcon.CREATOR);
-        mSubtitleText = in.readTypedObject(SmartspaceText.CREATOR);
-        mSubtitleIcon = in.readTypedObject(SmartspaceIcon.CREATOR);
-        mPrimaryTapAction = in.readTypedObject(SmartspaceTapAction.CREATOR);
-        mSupplementalSubtitleText = in.readTypedObject(SmartspaceText.CREATOR);
-        mSupplementalSubtitleIcon = in.readTypedObject(SmartspaceIcon.CREATOR);
-        mSupplementalSubtitleTapAction = in.readTypedObject(SmartspaceTapAction.CREATOR);
-        mSupplementalAlarmText = in.readTypedObject(SmartspaceText.CREATOR);
+        mTitleText = in.readTypedObject(Text.CREATOR);
+        mTitleIcon = in.readTypedObject(Icon.CREATOR);
+        mSubtitleText = in.readTypedObject(Text.CREATOR);
+        mSubtitleIcon = in.readTypedObject(Icon.CREATOR);
+        mPrimaryTapAction = in.readTypedObject(TapAction.CREATOR);
+        mSupplementalSubtitleText = in.readTypedObject(Text.CREATOR);
+        mSupplementalSubtitleIcon = in.readTypedObject(Icon.CREATOR);
+        mSupplementalSubtitleTapAction = in.readTypedObject(TapAction.CREATOR);
+        mSupplementalAlarmText = in.readTypedObject(Text.CREATOR);
     }
 
     /**
      * Should ONLY used by subclasses. For the general instance creation, please use
      * SmartspaceDefaultUiTemplateData.Builder.
      */
-    SmartspaceDefaultUiTemplateData(@UiTemplateType int templateType,
-            @Nullable SmartspaceText titleText,
-            @Nullable SmartspaceIcon titleIcon,
-            @Nullable SmartspaceText subtitleText,
-            @Nullable SmartspaceIcon subtitleIcon,
-            @Nullable SmartspaceTapAction primaryTapAction,
-            @Nullable SmartspaceText supplementalSubtitleText,
-            @Nullable SmartspaceIcon supplementalSubtitleIcon,
-            @Nullable SmartspaceTapAction supplementalSubtitleTapAction,
-            @Nullable SmartspaceText supplementalAlarmText) {
+    BaseTemplateData(@UiTemplateType int templateType,
+            @Nullable Text titleText,
+            @Nullable Icon titleIcon,
+            @Nullable Text subtitleText,
+            @Nullable Icon subtitleIcon,
+            @Nullable TapAction primaryTapAction,
+            @Nullable Text supplementalSubtitleText,
+            @Nullable Icon supplementalSubtitleIcon,
+            @Nullable TapAction supplementalSubtitleTapAction,
+            @Nullable Text supplementalAlarmText) {
         mTemplateType = templateType;
         mTitleText = titleText;
         mTitleIcon = titleIcon;
@@ -132,53 +139,63 @@
         mSupplementalAlarmText = supplementalAlarmText;
     }
 
+    /** Returns the template type. By default is UNDEFINED. */
     @UiTemplateType
     public int getTemplateType() {
         return mTemplateType;
     }
 
+    /** Returns the title's text. */
     @Nullable
-    public SmartspaceText getTitleText() {
+    public Text getTitleText() {
         return mTitleText;
     }
 
+    /** Returns the title's icon. */
     @Nullable
-    public SmartspaceIcon getTitleIcon() {
+    public Icon getTitleIcon() {
         return mTitleIcon;
     }
 
+    /** Returns the subtitle's text. */
     @Nullable
-    public SmartspaceText getSubtitleText() {
+    public Text getSubtitleText() {
         return mSubtitleText;
     }
 
+    /** Returns the subtitle's icon. */
     @Nullable
-    public SmartspaceIcon getSubtitleIcon() {
+    public Icon getSubtitleIcon() {
         return mSubtitleIcon;
     }
 
+    /** Returns the card's primary tap action. */
     @Nullable
-    public SmartspaceTapAction getPrimaryTapAction() {
+    public TapAction getPrimaryTapAction() {
         return mPrimaryTapAction;
     }
 
+    /** Returns the supplemental subtitle's text. */
     @Nullable
-    public SmartspaceText getSupplementalSubtitleText() {
+    public Text getSupplementalSubtitleText() {
         return mSupplementalSubtitleText;
     }
 
+    /** Returns the supplemental subtitle's icon. */
     @Nullable
-    public SmartspaceIcon getSupplementalSubtitleIcon() {
+    public Icon getSupplementalSubtitleIcon() {
         return mSupplementalSubtitleIcon;
     }
 
+    /** Returns the supplemental subtitle's tap action. Can be null if not being set. */
     @Nullable
-    public SmartspaceTapAction getSupplementalSubtitleTapAction() {
+    public TapAction getSupplementalSubtitleTapAction() {
         return mSupplementalSubtitleTapAction;
     }
 
+    /** Returns the supplemental alarm text. */
     @Nullable
-    public SmartspaceText getSupplementalAlarmText() {
+    public Text getSupplementalAlarmText() {
         return mSupplementalAlarmText;
     }
 
@@ -186,16 +203,16 @@
      * @see Parcelable.Creator
      */
     @NonNull
-    public static final Creator<SmartspaceDefaultUiTemplateData> CREATOR =
-            new Creator<SmartspaceDefaultUiTemplateData>() {
+    public static final Creator<BaseTemplateData> CREATOR =
+            new Creator<BaseTemplateData>() {
                 @Override
-                public SmartspaceDefaultUiTemplateData createFromParcel(Parcel in) {
-                    return new SmartspaceDefaultUiTemplateData(in);
+                public BaseTemplateData createFromParcel(Parcel in) {
+                    return new BaseTemplateData(in);
                 }
 
                 @Override
-                public SmartspaceDefaultUiTemplateData[] newArray(int size) {
-                    return new SmartspaceDefaultUiTemplateData[size];
+                public BaseTemplateData[] newArray(int size) {
+                    return new BaseTemplateData[size];
                 }
             };
 
@@ -221,8 +238,8 @@
     @Override
     public boolean equals(Object o) {
         if (this == o) return true;
-        if (!(o instanceof SmartspaceDefaultUiTemplateData)) return false;
-        SmartspaceDefaultUiTemplateData that = (SmartspaceDefaultUiTemplateData) o;
+        if (!(o instanceof BaseTemplateData)) return false;
+        BaseTemplateData that = (BaseTemplateData) o;
         return mTemplateType == that.mTemplateType && SmartspaceUtils.isEqual(mTitleText,
                 that.mTitleText)
                 && Objects.equals(mTitleIcon, that.mTitleIcon)
@@ -261,7 +278,7 @@
     }
 
     /**
-     * A builder for {@link SmartspaceDefaultUiTemplateData} object.
+     * A builder for {@link BaseTemplateData} object.
      *
      * @hide
      */
@@ -270,18 +287,18 @@
     public static class Builder {
         @UiTemplateType
         private final int mTemplateType;
-        private SmartspaceText mTitleText;
-        private SmartspaceIcon mTitleIcon;
-        private SmartspaceText mSubtitleText;
-        private SmartspaceIcon mSubtitleIcon;
-        private SmartspaceTapAction mPrimaryTapAction;
-        private SmartspaceText mSupplementalSubtitleText;
-        private SmartspaceIcon mSupplementalSubtitleIcon;
-        private SmartspaceTapAction mSupplementalSubtitleTapAction;
-        private SmartspaceText mSupplementalAlarmText;
+        private Text mTitleText;
+        private Icon mTitleIcon;
+        private Text mSubtitleText;
+        private Icon mSubtitleIcon;
+        private TapAction mPrimaryTapAction;
+        private Text mSupplementalSubtitleText;
+        private Icon mSupplementalSubtitleIcon;
+        private TapAction mSupplementalSubtitleTapAction;
+        private Text mSupplementalAlarmText;
 
         /**
-         * A builder for {@link SmartspaceDefaultUiTemplateData}.
+         * A builder for {@link BaseTemplateData}.
          *
          * @param templateType the {@link UiTemplateType} of this template data.
          */
@@ -299,63 +316,63 @@
         /** Should ONLY be used by the subclasses */
         @Nullable
         @SuppressLint("GetterOnBuilder")
-        SmartspaceText getTitleText() {
+        Text getTitleText() {
             return mTitleText;
         }
 
         /** Should ONLY be used by the subclasses */
         @Nullable
         @SuppressLint("GetterOnBuilder")
-        SmartspaceIcon getTitleIcon() {
+        Icon getTitleIcon() {
             return mTitleIcon;
         }
 
         /** Should ONLY be used by the subclasses */
         @Nullable
         @SuppressLint("GetterOnBuilder")
-        SmartspaceText getSubtitleText() {
+        Text getSubtitleText() {
             return mSubtitleText;
         }
 
         /** Should ONLY be used by the subclasses */
         @Nullable
         @SuppressLint("GetterOnBuilder")
-        SmartspaceIcon getSubtitleIcon() {
+        Icon getSubtitleIcon() {
             return mSubtitleIcon;
         }
 
         /** Should ONLY be used by the subclasses */
         @Nullable
         @SuppressLint("GetterOnBuilder")
-        SmartspaceTapAction getPrimaryTapAction() {
+        TapAction getPrimaryTapAction() {
             return mPrimaryTapAction;
         }
 
         /** Should ONLY be used by the subclasses */
         @Nullable
         @SuppressLint("GetterOnBuilder")
-        SmartspaceText getSupplementalSubtitleText() {
+        Text getSupplementalSubtitleText() {
             return mSupplementalSubtitleText;
         }
 
         /** Should ONLY be used by the subclasses */
         @Nullable
         @SuppressLint("GetterOnBuilder")
-        SmartspaceIcon getSupplementalSubtitleIcon() {
+        Icon getSupplementalSubtitleIcon() {
             return mSupplementalSubtitleIcon;
         }
 
         /** Should ONLY be used by the subclasses */
         @Nullable
         @SuppressLint("GetterOnBuilder")
-        SmartspaceTapAction getSupplementalSubtitleTapAction() {
+        TapAction getSupplementalSubtitleTapAction() {
             return mSupplementalSubtitleTapAction;
         }
 
         /** Should ONLY be used by the subclasses */
         @Nullable
         @SuppressLint("GetterOnBuilder")
-        SmartspaceText getSupplementalAlarmText() {
+        Text getSupplementalAlarmText() {
             return mSupplementalAlarmText;
         }
 
@@ -363,7 +380,7 @@
          * Sets the card title.
          */
         @NonNull
-        public Builder setTitleText(@NonNull SmartspaceText titleText) {
+        public Builder setTitleText(@NonNull Text titleText) {
             mTitleText = titleText;
             return this;
         }
@@ -372,7 +389,7 @@
          * Sets the card title icon.
          */
         @NonNull
-        public Builder setTitleIcon(@NonNull SmartspaceIcon titleIcon) {
+        public Builder setTitleIcon(@NonNull Icon titleIcon) {
             mTitleIcon = titleIcon;
             return this;
         }
@@ -381,7 +398,7 @@
          * Sets the card subtitle.
          */
         @NonNull
-        public Builder setSubtitleText(@NonNull SmartspaceText subtitleText) {
+        public Builder setSubtitleText(@NonNull Text subtitleText) {
             mSubtitleText = subtitleText;
             return this;
         }
@@ -390,7 +407,7 @@
          * Sets the card subtitle icon.
          */
         @NonNull
-        public Builder setSubtitleIcon(@NonNull SmartspaceIcon subtitleIcon) {
+        public Builder setSubtitleIcon(@NonNull Icon subtitleIcon) {
             mSubtitleIcon = subtitleIcon;
             return this;
         }
@@ -399,7 +416,7 @@
          * Sets the card primary tap action.
          */
         @NonNull
-        public Builder setPrimaryTapAction(@NonNull SmartspaceTapAction primaryTapAction) {
+        public Builder setPrimaryTapAction(@NonNull TapAction primaryTapAction) {
             mPrimaryTapAction = primaryTapAction;
             return this;
         }
@@ -409,7 +426,7 @@
          */
         @NonNull
         public Builder setSupplementalSubtitleText(
-                @NonNull SmartspaceText supplementalSubtitleText) {
+                @NonNull Text supplementalSubtitleText) {
             mSupplementalSubtitleText = supplementalSubtitleText;
             return this;
         }
@@ -419,7 +436,7 @@
          */
         @NonNull
         public Builder setSupplementalSubtitleIcon(
-                @NonNull SmartspaceIcon supplementalSubtitleIcon) {
+                @NonNull Icon supplementalSubtitleIcon) {
             mSupplementalSubtitleIcon = supplementalSubtitleIcon;
             return this;
         }
@@ -431,7 +448,7 @@
          */
         @NonNull
         public Builder setSupplementalSubtitleTapAction(
-                @NonNull SmartspaceTapAction supplementalSubtitleTapAction) {
+                @NonNull TapAction supplementalSubtitleTapAction) {
             mSupplementalSubtitleTapAction = supplementalSubtitleTapAction;
             return this;
         }
@@ -440,7 +457,7 @@
          * Sets the supplemental alarm text.
          */
         @NonNull
-        public Builder setSupplementalAlarmText(@NonNull SmartspaceText supplementalAlarmText) {
+        public Builder setSupplementalAlarmText(@NonNull Text supplementalAlarmText) {
             mSupplementalAlarmText = supplementalAlarmText;
             return this;
         }
@@ -449,8 +466,8 @@
          * Builds a new SmartspaceDefaultUiTemplateData instance.
          */
         @NonNull
-        public SmartspaceDefaultUiTemplateData build() {
-            return new SmartspaceDefaultUiTemplateData(mTemplateType, mTitleText, mTitleIcon,
+        public BaseTemplateData build() {
+            return new BaseTemplateData(mTemplateType, mTitleText, mTitleIcon,
                     mSubtitleText, mSubtitleIcon, mPrimaryTapAction, mSupplementalSubtitleText,
                     mSupplementalSubtitleIcon, mSupplementalSubtitleTapAction,
                     mSupplementalAlarmText);
diff --git a/core/java/android/app/smartspace/uitemplatedata/SmartspaceCarouselUiTemplateData.java b/core/java/android/app/smartspace/uitemplatedata/CarouselTemplateData.java
similarity index 69%
rename from core/java/android/app/smartspace/uitemplatedata/SmartspaceCarouselUiTemplateData.java
rename to core/java/android/app/smartspace/uitemplatedata/CarouselTemplateData.java
index e996056..feb1c34 100644
--- a/core/java/android/app/smartspace/uitemplatedata/SmartspaceCarouselUiTemplateData.java
+++ b/core/java/android/app/smartspace/uitemplatedata/CarouselTemplateData.java
@@ -30,10 +30,16 @@
 /**
  * Holds all the relevant data needed to render a Smartspace card with the carousel Ui Template.
  *
+ * This template will add a sub-card displaying a list of carousel items within the default-template
+ * card:
+ * <ul>
+ *     <li> carouselItem1, carouselItem2, carouselItem3... </li>
+ * </ul>
+ *
  * @hide
  */
 @SystemApi
-public final class SmartspaceCarouselUiTemplateData extends SmartspaceDefaultUiTemplateData {
+public final class CarouselTemplateData extends BaseTemplateData {
 
     /** Lists of {@link CarouselItem}. */
     @NonNull
@@ -41,26 +47,26 @@
 
     /** Tap action for the entire carousel secondary card, including the blank space */
     @Nullable
-    private final SmartspaceTapAction mCarouselAction;
+    private final TapAction mCarouselAction;
 
-    SmartspaceCarouselUiTemplateData(@NonNull Parcel in) {
+    CarouselTemplateData(@NonNull Parcel in) {
         super(in);
         mCarouselItems = in.createTypedArrayList(CarouselItem.CREATOR);
-        mCarouselAction = in.readTypedObject(SmartspaceTapAction.CREATOR);
+        mCarouselAction = in.readTypedObject(TapAction.CREATOR);
     }
 
-    private SmartspaceCarouselUiTemplateData(@SmartspaceTarget.UiTemplateType int templateType,
-            @Nullable SmartspaceText titleText,
-            @Nullable SmartspaceIcon titleIcon,
-            @Nullable SmartspaceText subtitleText,
-            @Nullable SmartspaceIcon subTitleIcon,
-            @Nullable SmartspaceTapAction primaryTapAction,
-            @Nullable SmartspaceText supplementalSubtitleText,
-            @Nullable SmartspaceIcon supplementalSubtitleIcon,
-            @Nullable SmartspaceTapAction supplementalSubtitleTapAction,
-            @Nullable SmartspaceText supplementalAlarmText,
+    private CarouselTemplateData(@SmartspaceTarget.UiTemplateType int templateType,
+            @Nullable Text titleText,
+            @Nullable Icon titleIcon,
+            @Nullable Text subtitleText,
+            @Nullable Icon subTitleIcon,
+            @Nullable TapAction primaryTapAction,
+            @Nullable Text supplementalSubtitleText,
+            @Nullable Icon supplementalSubtitleIcon,
+            @Nullable TapAction supplementalSubtitleTapAction,
+            @Nullable Text supplementalAlarmText,
             @NonNull List<CarouselItem> carouselItems,
-            @Nullable SmartspaceTapAction carouselAction) {
+            @Nullable TapAction carouselAction) {
         super(templateType, titleText, titleIcon, subtitleText, subTitleIcon, primaryTapAction,
                 supplementalSubtitleText, supplementalSubtitleIcon, supplementalSubtitleTapAction,
                 supplementalAlarmText);
@@ -68,13 +74,15 @@
         mCarouselAction = carouselAction;
     }
 
+    /** Returns the list of {@link CarouselItem}. Can be empty if not being set. */
     @NonNull
     public List<CarouselItem> getCarouselItems() {
         return mCarouselItems;
     }
 
+    /** Returns the card's tap action. */
     @Nullable
-    public SmartspaceTapAction getCarouselAction() {
+    public TapAction getCarouselAction() {
         return mCarouselAction;
     }
 
@@ -82,16 +90,16 @@
      * @see Parcelable.Creator
      */
     @NonNull
-    public static final Creator<SmartspaceCarouselUiTemplateData> CREATOR =
-            new Creator<SmartspaceCarouselUiTemplateData>() {
+    public static final Creator<CarouselTemplateData> CREATOR =
+            new Creator<CarouselTemplateData>() {
                 @Override
-                public SmartspaceCarouselUiTemplateData createFromParcel(Parcel in) {
-                    return new SmartspaceCarouselUiTemplateData(in);
+                public CarouselTemplateData createFromParcel(Parcel in) {
+                    return new CarouselTemplateData(in);
                 }
 
                 @Override
-                public SmartspaceCarouselUiTemplateData[] newArray(int size) {
-                    return new SmartspaceCarouselUiTemplateData[size];
+                public CarouselTemplateData[] newArray(int size) {
+                    return new CarouselTemplateData[size];
                 }
             };
 
@@ -111,9 +119,9 @@
     @Override
     public boolean equals(Object o) {
         if (this == o) return true;
-        if (!(o instanceof SmartspaceCarouselUiTemplateData)) return false;
+        if (!(o instanceof CarouselTemplateData)) return false;
         if (!super.equals(o)) return false;
-        SmartspaceCarouselUiTemplateData that = (SmartspaceCarouselUiTemplateData) o;
+        CarouselTemplateData that = (CarouselTemplateData) o;
         return mCarouselItems.equals(that.mCarouselItems) && Objects.equals(mCarouselAction,
                 that.mCarouselAction);
     }
@@ -132,18 +140,18 @@
     }
 
     /**
-     * A builder for {@link SmartspaceCarouselUiTemplateData} object.
+     * A builder for {@link CarouselTemplateData} object.
      *
      * @hide
      */
     @SystemApi
-    public static final class Builder extends SmartspaceDefaultUiTemplateData.Builder {
+    public static final class Builder extends BaseTemplateData.Builder {
 
         private final List<CarouselItem> mCarouselItems;
-        private SmartspaceTapAction mCarouselAction;
+        private TapAction mCarouselAction;
 
         /**
-         * A builder for {@link SmartspaceCarouselUiTemplateData}.
+         * A builder for {@link CarouselTemplateData}.
          */
         public Builder(@NonNull List<CarouselItem> carouselItems) {
             super(SmartspaceTarget.UI_TEMPLATE_CAROUSEL);
@@ -154,23 +162,23 @@
          * Sets the card tap action.
          */
         @NonNull
-        public Builder setCarouselAction(@NonNull SmartspaceTapAction carouselAction) {
+        public Builder setCarouselAction(@NonNull TapAction carouselAction) {
             mCarouselAction = carouselAction;
             return this;
         }
 
         /**
-         * Builds a new SmartspaceCarouselUiTemplateData instance.
+         * Builds a new {@link CarouselTemplateData} instance.
          *
          * @throws IllegalStateException if the carousel data is invalid.
          */
         @NonNull
-        public SmartspaceCarouselUiTemplateData build() {
+        public CarouselTemplateData build() {
             if (mCarouselItems.isEmpty()) {
                 throw new IllegalStateException("Carousel data is empty");
             }
 
-            return new SmartspaceCarouselUiTemplateData(getTemplateType(), getTitleText(),
+            return new CarouselTemplateData(getTemplateType(), getTitleText(),
                     getTitleIcon(), getSubtitleText(), getSubtitleIcon(), getPrimaryTapAction(),
                     getSupplementalSubtitleText(), getSupplementalSubtitleIcon(),
                     getSupplementalSubtitleTapAction(), getSupplementalAlarmText(), mCarouselItems,
@@ -178,37 +186,45 @@
         }
     }
 
-    /** Holds all the relevant data needed to render a carousel item. */
+    /**
+     * Holds all the relevant data needed to render a carousel item.
+     *
+     * <ul>
+     *     <li> upper text </li>
+     *     <li> image </li>
+     *     <li> lower text </li>
+     * </ul>
+     */
     public static final class CarouselItem implements Parcelable {
 
         /** Text which is above the image item. */
         @Nullable
-        private final SmartspaceText mUpperText;
+        private final Text mUpperText;
 
         /** Image item. Can be empty. */
         @Nullable
-        private final SmartspaceIcon mImage;
+        private final Icon mImage;
 
         /** Text which is under the image item. */
         @Nullable
-        private final SmartspaceText mLowerText;
+        private final Text mLowerText;
 
         /**
          * Tap action for this {@link CarouselItem} instance. {@code mCarouselAction} is used if not
          * being set.
          */
         @Nullable
-        private final SmartspaceTapAction mTapAction;
+        private final TapAction mTapAction;
 
         CarouselItem(@NonNull Parcel in) {
-            mUpperText = in.readTypedObject(SmartspaceText.CREATOR);
-            mImage = in.readTypedObject(SmartspaceIcon.CREATOR);
-            mLowerText = in.readTypedObject(SmartspaceText.CREATOR);
-            mTapAction = in.readTypedObject(SmartspaceTapAction.CREATOR);
+            mUpperText = in.readTypedObject(Text.CREATOR);
+            mImage = in.readTypedObject(Icon.CREATOR);
+            mLowerText = in.readTypedObject(Text.CREATOR);
+            mTapAction = in.readTypedObject(TapAction.CREATOR);
         }
 
-        private CarouselItem(@Nullable SmartspaceText upperText, @Nullable SmartspaceIcon image,
-                @Nullable SmartspaceText lowerText, @Nullable SmartspaceTapAction tapAction) {
+        private CarouselItem(@Nullable Text upperText, @Nullable Icon image,
+                @Nullable Text lowerText, @Nullable TapAction tapAction) {
             mUpperText = upperText;
             mImage = image;
             mLowerText = lowerText;
@@ -216,22 +232,22 @@
         }
 
         @Nullable
-        public SmartspaceText getUpperText() {
+        public Text getUpperText() {
             return mUpperText;
         }
 
         @Nullable
-        public SmartspaceIcon getImage() {
+        public Icon getImage() {
             return mImage;
         }
 
         @Nullable
-        public SmartspaceText getLowerText() {
+        public Text getLowerText() {
             return mLowerText;
         }
 
         @Nullable
-        public SmartspaceTapAction getTapAction() {
+        public TapAction getTapAction() {
             return mTapAction;
         }
 
@@ -299,16 +315,16 @@
         @SystemApi
         public static final class Builder {
 
-            private SmartspaceText mUpperText;
-            private SmartspaceIcon mImage;
-            private SmartspaceText mLowerText;
-            private SmartspaceTapAction mTapAction;
+            private Text mUpperText;
+            private Icon mImage;
+            private Text mLowerText;
+            private TapAction mTapAction;
 
             /**
              * Sets the upper text.
              */
             @NonNull
-            public Builder setUpperText(@Nullable SmartspaceText upperText) {
+            public Builder setUpperText(@Nullable Text upperText) {
                 mUpperText = upperText;
                 return this;
             }
@@ -317,7 +333,7 @@
              * Sets the image.
              */
             @NonNull
-            public Builder setImage(@Nullable SmartspaceIcon image) {
+            public Builder setImage(@Nullable Icon image) {
                 mImage = image;
                 return this;
             }
@@ -327,7 +343,7 @@
              * Sets the lower text.
              */
             @NonNull
-            public Builder setLowerText(@Nullable SmartspaceText lowerText) {
+            public Builder setLowerText(@Nullable Text lowerText) {
                 mLowerText = lowerText;
                 return this;
             }
@@ -336,7 +352,7 @@
              * Sets the tap action.
              */
             @NonNull
-            public Builder setTapAction(@Nullable SmartspaceTapAction tapAction) {
+            public Builder setTapAction(@Nullable TapAction tapAction) {
                 mTapAction = tapAction;
                 return this;
             }
diff --git a/core/java/android/app/smartspace/uitemplatedata/CombinedCardsTemplateData.java b/core/java/android/app/smartspace/uitemplatedata/CombinedCardsTemplateData.java
new file mode 100644
index 0000000..13091e2
--- /dev/null
+++ b/core/java/android/app/smartspace/uitemplatedata/CombinedCardsTemplateData.java
@@ -0,0 +1,160 @@
+/*
+ * Copyright (C) 2022 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.smartspace.uitemplatedata;
+
+import android.annotation.NonNull;
+import android.annotation.Nullable;
+import android.annotation.SystemApi;
+import android.app.smartspace.SmartspaceTarget;
+import android.os.Parcel;
+
+import java.util.List;
+import java.util.Objects;
+
+/**
+ * Holds all the relevant data needed to render a Smartspace card with the combined-card Ui
+ * Template.
+ *
+ * We only support adding a 1 sub-list card combined with 1 sub-card card (may expand our supported
+ * combinations in the future) within the default-template card:
+ *
+ * <ul>
+ *     <li> sub-list card, sub-card card </li>
+ * </ul>
+ *
+ * @hide
+ */
+@SystemApi
+public final class CombinedCardsTemplateData extends BaseTemplateData {
+
+    /** A list of secondary cards. */
+    @NonNull
+    private final List<BaseTemplateData> mCombinedCardDataList;
+
+    CombinedCardsTemplateData(@NonNull Parcel in) {
+        super(in);
+        mCombinedCardDataList = in.createTypedArrayList(BaseTemplateData.CREATOR);
+    }
+
+    private CombinedCardsTemplateData(@SmartspaceTarget.UiTemplateType int templateType,
+            @Nullable Text titleText,
+            @Nullable Icon titleIcon,
+            @Nullable Text subtitleText,
+            @Nullable Icon subTitleIcon,
+            @Nullable TapAction primaryTapAction,
+            @Nullable Text supplementalSubtitleText,
+            @Nullable Icon supplementalSubtitleIcon,
+            @Nullable TapAction supplementalSubtitleTapAction,
+            @Nullable Text supplementalAlarmText,
+            @NonNull List<BaseTemplateData> combinedCardDataList) {
+        super(templateType, titleText, titleIcon, subtitleText, subTitleIcon, primaryTapAction,
+                supplementalSubtitleText, supplementalSubtitleIcon, supplementalSubtitleTapAction,
+                supplementalAlarmText);
+        mCombinedCardDataList = combinedCardDataList;
+    }
+
+    /** Returns the list of secondary cards. Can be null if not being set. */
+    @NonNull
+    public List<BaseTemplateData> getCombinedCardDataList() {
+        return mCombinedCardDataList;
+    }
+
+    /**
+     * @see Parcelable.Creator
+     */
+    @NonNull
+    public static final Creator<CombinedCardsTemplateData> CREATOR =
+            new Creator<CombinedCardsTemplateData>() {
+                @Override
+                public CombinedCardsTemplateData createFromParcel(Parcel in) {
+                    return new CombinedCardsTemplateData(in);
+                }
+
+                @Override
+                public CombinedCardsTemplateData[] newArray(int size) {
+                    return new CombinedCardsTemplateData[size];
+                }
+            };
+
+    @Override
+    public int describeContents() {
+        return 0;
+    }
+
+    @Override
+    public void writeToParcel(@NonNull Parcel out, int flags) {
+        super.writeToParcel(out, flags);
+        out.writeTypedList(mCombinedCardDataList);
+    }
+
+    @Override
+    public boolean equals(Object o) {
+        if (this == o) return true;
+        if (!(o instanceof CombinedCardsTemplateData)) return false;
+        if (!super.equals(o)) return false;
+        CombinedCardsTemplateData that = (CombinedCardsTemplateData) o;
+        return mCombinedCardDataList.equals(that.mCombinedCardDataList);
+    }
+
+    @Override
+    public int hashCode() {
+        return Objects.hash(super.hashCode(), mCombinedCardDataList);
+    }
+
+    @Override
+    public String toString() {
+        return super.toString() + " + SmartspaceCombinedCardsUiTemplateData{"
+                + "mCombinedCardDataList=" + mCombinedCardDataList
+                + '}';
+    }
+
+    /**
+     * A builder for {@link CombinedCardsTemplateData} object.
+     *
+     * @hide
+     */
+    @SystemApi
+    public static final class Builder extends BaseTemplateData.Builder {
+
+        private final List<BaseTemplateData> mCombinedCardDataList;
+
+        /**
+         * A builder for {@link CombinedCardsTemplateData}.
+         */
+        public Builder(@NonNull List<BaseTemplateData> combinedCardDataList) {
+            super(SmartspaceTarget.UI_TEMPLATE_COMBINED_CARDS);
+            mCombinedCardDataList = Objects.requireNonNull(combinedCardDataList);
+        }
+
+        /**
+         * Builds a new SmartspaceCombinedCardsUiTemplateData instance.
+         *
+         * @throws IllegalStateException if any required non-null field is null
+         */
+        @NonNull
+        public CombinedCardsTemplateData build() {
+            if (mCombinedCardDataList == null) {
+                throw new IllegalStateException("Please assign a value to all @NonNull args.");
+            }
+            return new CombinedCardsTemplateData(getTemplateType(), getTitleText(),
+                    getTitleIcon(), getSubtitleText(), getSubtitleIcon(), getPrimaryTapAction(),
+                    getSupplementalSubtitleText(), getSupplementalSubtitleIcon(),
+                    getSupplementalSubtitleTapAction(), getSupplementalAlarmText(),
+                    mCombinedCardDataList);
+        }
+    }
+}
diff --git a/core/java/android/app/smartspace/uitemplatedata/SmartspaceHeadToHeadUiTemplateData.java b/core/java/android/app/smartspace/uitemplatedata/HeadToHeadTemplateData.java
similarity index 62%
rename from core/java/android/app/smartspace/uitemplatedata/SmartspaceHeadToHeadUiTemplateData.java
rename to core/java/android/app/smartspace/uitemplatedata/HeadToHeadTemplateData.java
index bcd12eb..eb56e93 100644
--- a/core/java/android/app/smartspace/uitemplatedata/SmartspaceHeadToHeadUiTemplateData.java
+++ b/core/java/android/app/smartspace/uitemplatedata/HeadToHeadTemplateData.java
@@ -28,52 +28,59 @@
 /**
  * Holds all the relevant data needed to render a Smartspace card with the head-to-head Ui Template.
  *
+ * This template will add a head-to-head card within the default-template card:
+ * <ul>
+ *                     <li> head-to-head title </li>
+ *     <li> first-competitor icon       second-competitor icon </li>
+ *     <li> first-competitor text       second-competitor text </li>
+ * </ul>
+ *
  * @hide
  */
 @SystemApi
-public final class SmartspaceHeadToHeadUiTemplateData extends SmartspaceDefaultUiTemplateData {
+public final class HeadToHeadTemplateData extends BaseTemplateData {
 
     @Nullable
-    private final SmartspaceText mHeadToHeadTitle;
+    private final Text mHeadToHeadTitle;
     @Nullable
-    private final SmartspaceIcon mHeadToHeadFirstCompetitorIcon;
+    private final Icon mHeadToHeadFirstCompetitorIcon;
     @Nullable
-    private final SmartspaceIcon mHeadToHeadSecondCompetitorIcon;
+    private final Icon mHeadToHeadSecondCompetitorIcon;
     @Nullable
-    private final SmartspaceText mHeadToHeadFirstCompetitorText;
+    private final Text mHeadToHeadFirstCompetitorText;
     @Nullable
-    private final SmartspaceText mHeadToHeadSecondCompetitorText;
+    private final Text mHeadToHeadSecondCompetitorText;
 
     /** Tap action for the head-to-head secondary card. */
     @Nullable
-    private final SmartspaceTapAction mHeadToHeadAction;
+    private final TapAction mHeadToHeadAction;
 
-    SmartspaceHeadToHeadUiTemplateData(@NonNull Parcel in) {
+    HeadToHeadTemplateData(@NonNull Parcel in) {
         super(in);
-        mHeadToHeadTitle = in.readTypedObject(SmartspaceText.CREATOR);
-        mHeadToHeadFirstCompetitorIcon = in.readTypedObject(SmartspaceIcon.CREATOR);
-        mHeadToHeadSecondCompetitorIcon = in.readTypedObject(SmartspaceIcon.CREATOR);
-        mHeadToHeadFirstCompetitorText = in.readTypedObject(SmartspaceText.CREATOR);
-        mHeadToHeadSecondCompetitorText = in.readTypedObject(SmartspaceText.CREATOR);
-        mHeadToHeadAction = in.readTypedObject(SmartspaceTapAction.CREATOR);
+        mHeadToHeadTitle = in.readTypedObject(Text.CREATOR);
+        mHeadToHeadFirstCompetitorIcon = in.readTypedObject(Icon.CREATOR);
+        mHeadToHeadSecondCompetitorIcon = in.readTypedObject(Icon.CREATOR);
+        mHeadToHeadFirstCompetitorText = in.readTypedObject(Text.CREATOR);
+        mHeadToHeadSecondCompetitorText = in.readTypedObject(Text.CREATOR);
+        mHeadToHeadAction = in.readTypedObject(TapAction.CREATOR);
     }
 
-    private SmartspaceHeadToHeadUiTemplateData(@SmartspaceTarget.UiTemplateType int templateType,
-            @Nullable SmartspaceText titleText,
-            @Nullable SmartspaceIcon titleIcon,
-            @Nullable SmartspaceText subtitleText,
-            @Nullable SmartspaceIcon subTitleIcon,
-            @Nullable SmartspaceTapAction primaryTapAction,
-            @Nullable SmartspaceText supplementalSubtitleText,
-            @Nullable SmartspaceIcon supplementalSubtitleIcon,
-            @Nullable SmartspaceTapAction supplementalSubtitleTapAction,
-            @Nullable SmartspaceText supplementalAlarmText,
-            @Nullable SmartspaceText headToHeadTitle,
-            @Nullable SmartspaceIcon headToHeadFirstCompetitorIcon,
-            @Nullable SmartspaceIcon headToHeadSecondCompetitorIcon,
-            @Nullable SmartspaceText headToHeadFirstCompetitorText,
-            @Nullable SmartspaceText headToHeadSecondCompetitorText,
-            @Nullable SmartspaceTapAction headToHeadAction) {
+    private HeadToHeadTemplateData(@SmartspaceTarget.UiTemplateType int templateType,
+            @Nullable Text titleText,
+            @Nullable Icon titleIcon,
+            @Nullable Text subtitleText,
+            @Nullable Icon subTitleIcon,
+            @Nullable TapAction primaryTapAction,
+            @Nullable Text supplementalSubtitleText,
+            @Nullable Icon supplementalSubtitleIcon,
+            @Nullable TapAction supplementalSubtitleTapAction,
+            @Nullable Text supplementalAlarmText,
+            @Nullable Text headToHeadTitle,
+            @Nullable Icon headToHeadFirstCompetitorIcon,
+            @Nullable Icon headToHeadSecondCompetitorIcon,
+            @Nullable Text headToHeadFirstCompetitorText,
+            @Nullable Text headToHeadSecondCompetitorText,
+            @Nullable TapAction headToHeadAction) {
         super(templateType, titleText, titleIcon, subtitleText, subTitleIcon, primaryTapAction,
                 supplementalSubtitleText, supplementalSubtitleIcon, supplementalSubtitleTapAction,
                 supplementalAlarmText);
@@ -85,33 +92,39 @@
         mHeadToHeadAction = headToHeadAction;
     }
 
+    /** Returns the head-to-head card's title. */
     @Nullable
-    public SmartspaceText getHeadToHeadTitle() {
+    public Text getHeadToHeadTitle() {
         return mHeadToHeadTitle;
     }
 
+    /** Returns the first competitor's icon. */
     @Nullable
-    public SmartspaceIcon getHeadToHeadFirstCompetitorIcon() {
+    public Icon getHeadToHeadFirstCompetitorIcon() {
         return mHeadToHeadFirstCompetitorIcon;
     }
 
+    /** Returns the second competitor's icon. */
     @Nullable
-    public SmartspaceIcon getHeadToHeadSecondCompetitorIcon() {
+    public Icon getHeadToHeadSecondCompetitorIcon() {
         return mHeadToHeadSecondCompetitorIcon;
     }
 
+    /** Returns the first competitor's text. */
     @Nullable
-    public SmartspaceText getHeadToHeadFirstCompetitorText() {
+    public Text getHeadToHeadFirstCompetitorText() {
         return mHeadToHeadFirstCompetitorText;
     }
 
+    /** Returns the second competitor's text. */
     @Nullable
-    public SmartspaceText getHeadToHeadSecondCompetitorText() {
+    public Text getHeadToHeadSecondCompetitorText() {
         return mHeadToHeadSecondCompetitorText;
     }
 
+    /** Returns the head-to-head card's tap action. */
     @Nullable
-    public SmartspaceTapAction getHeadToHeadAction() {
+    public TapAction getHeadToHeadAction() {
         return mHeadToHeadAction;
     }
 
@@ -119,16 +132,16 @@
      * @see Parcelable.Creator
      */
     @NonNull
-    public static final Creator<SmartspaceHeadToHeadUiTemplateData> CREATOR =
-            new Creator<SmartspaceHeadToHeadUiTemplateData>() {
+    public static final Creator<HeadToHeadTemplateData> CREATOR =
+            new Creator<HeadToHeadTemplateData>() {
                 @Override
-                public SmartspaceHeadToHeadUiTemplateData createFromParcel(Parcel in) {
-                    return new SmartspaceHeadToHeadUiTemplateData(in);
+                public HeadToHeadTemplateData createFromParcel(Parcel in) {
+                    return new HeadToHeadTemplateData(in);
                 }
 
                 @Override
-                public SmartspaceHeadToHeadUiTemplateData[] newArray(int size) {
-                    return new SmartspaceHeadToHeadUiTemplateData[size];
+                public HeadToHeadTemplateData[] newArray(int size) {
+                    return new HeadToHeadTemplateData[size];
                 }
             };
 
@@ -151,9 +164,9 @@
     @Override
     public boolean equals(Object o) {
         if (this == o) return true;
-        if (!(o instanceof SmartspaceHeadToHeadUiTemplateData)) return false;
+        if (!(o instanceof HeadToHeadTemplateData)) return false;
         if (!super.equals(o)) return false;
-        SmartspaceHeadToHeadUiTemplateData that = (SmartspaceHeadToHeadUiTemplateData) o;
+        HeadToHeadTemplateData that = (HeadToHeadTemplateData) o;
         return SmartspaceUtils.isEqual(mHeadToHeadTitle, that.mHeadToHeadTitle) && Objects.equals(
                 mHeadToHeadFirstCompetitorIcon, that.mHeadToHeadFirstCompetitorIcon)
                 && Objects.equals(
@@ -187,22 +200,22 @@
     }
 
     /**
-     * A builder for {@link SmartspaceHeadToHeadUiTemplateData} object.
+     * A builder for {@link HeadToHeadTemplateData} object.
      *
      * @hide
      */
     @SystemApi
-    public static final class Builder extends SmartspaceDefaultUiTemplateData.Builder {
+    public static final class Builder extends BaseTemplateData.Builder {
 
-        private SmartspaceText mHeadToHeadTitle;
-        private SmartspaceIcon mHeadToHeadFirstCompetitorIcon;
-        private SmartspaceIcon mHeadToHeadSecondCompetitorIcon;
-        private SmartspaceText mHeadToHeadFirstCompetitorText;
-        private SmartspaceText mHeadToHeadSecondCompetitorText;
-        private SmartspaceTapAction mHeadToHeadAction;
+        private Text mHeadToHeadTitle;
+        private Icon mHeadToHeadFirstCompetitorIcon;
+        private Icon mHeadToHeadSecondCompetitorIcon;
+        private Text mHeadToHeadFirstCompetitorText;
+        private Text mHeadToHeadSecondCompetitorText;
+        private TapAction mHeadToHeadAction;
 
         /**
-         * A builder for {@link SmartspaceHeadToHeadUiTemplateData}.
+         * A builder for {@link HeadToHeadTemplateData}.
          */
         public Builder() {
             super(SmartspaceTarget.UI_TEMPLATE_HEAD_TO_HEAD);
@@ -212,7 +225,7 @@
          * Sets the head-to-head card's title
          */
         @NonNull
-        public Builder setHeadToHeadTitle(@Nullable SmartspaceText headToHeadTitle) {
+        public Builder setHeadToHeadTitle(@Nullable Text headToHeadTitle) {
             mHeadToHeadTitle = headToHeadTitle;
             return this;
         }
@@ -222,7 +235,7 @@
          */
         @NonNull
         public Builder setHeadToHeadFirstCompetitorIcon(
-                @Nullable SmartspaceIcon headToHeadFirstCompetitorIcon) {
+                @Nullable Icon headToHeadFirstCompetitorIcon) {
             mHeadToHeadFirstCompetitorIcon = headToHeadFirstCompetitorIcon;
             return this;
         }
@@ -232,7 +245,7 @@
          */
         @NonNull
         public Builder setHeadToHeadSecondCompetitorIcon(
-                @Nullable SmartspaceIcon headToHeadSecondCompetitorIcon) {
+                @Nullable Icon headToHeadSecondCompetitorIcon) {
             mHeadToHeadSecondCompetitorIcon = headToHeadSecondCompetitorIcon;
             return this;
         }
@@ -242,7 +255,7 @@
          */
         @NonNull
         public Builder setHeadToHeadFirstCompetitorText(
-                @Nullable SmartspaceText headToHeadFirstCompetitorText) {
+                @Nullable Text headToHeadFirstCompetitorText) {
             mHeadToHeadFirstCompetitorText = headToHeadFirstCompetitorText;
             return this;
         }
@@ -252,7 +265,7 @@
          */
         @NonNull
         public Builder setHeadToHeadSecondCompetitorText(
-                @Nullable SmartspaceText headToHeadSecondCompetitorText) {
+                @Nullable Text headToHeadSecondCompetitorText) {
             mHeadToHeadSecondCompetitorText = headToHeadSecondCompetitorText;
             return this;
         }
@@ -261,7 +274,7 @@
          * Sets the head-to-head card's tap action
          */
         @NonNull
-        public Builder setHeadToHeadAction(@Nullable SmartspaceTapAction headToHeadAction) {
+        public Builder setHeadToHeadAction(@Nullable TapAction headToHeadAction) {
             mHeadToHeadAction = headToHeadAction;
             return this;
         }
@@ -270,8 +283,8 @@
          * Builds a new SmartspaceHeadToHeadUiTemplateData instance.
          */
         @NonNull
-        public SmartspaceHeadToHeadUiTemplateData build() {
-            return new SmartspaceHeadToHeadUiTemplateData(getTemplateType(), getTitleText(),
+        public HeadToHeadTemplateData build() {
+            return new HeadToHeadTemplateData(getTemplateType(), getTitleText(),
                     getTitleIcon(), getSubtitleText(), getSubtitleIcon(), getPrimaryTapAction(),
                     getSupplementalSubtitleText(), getSupplementalSubtitleIcon(),
                     getSupplementalSubtitleTapAction(), getSupplementalAlarmText(),
diff --git a/core/java/android/app/smartspace/uitemplatedata/SmartspaceIcon.java b/core/java/android/app/smartspace/uitemplatedata/Icon.java
similarity index 75%
rename from core/java/android/app/smartspace/uitemplatedata/SmartspaceIcon.java
rename to core/java/android/app/smartspace/uitemplatedata/Icon.java
index 1efbaeb..2b1f420 100644
--- a/core/java/android/app/smartspace/uitemplatedata/SmartspaceIcon.java
+++ b/core/java/android/app/smartspace/uitemplatedata/Icon.java
@@ -20,7 +20,6 @@
 import android.annotation.Nullable;
 import android.annotation.SystemApi;
 import android.app.smartspace.SmartspaceUtils;
-import android.graphics.drawable.Icon;
 import android.os.Parcel;
 import android.os.Parcelable;
 import android.text.TextUtils;
@@ -34,34 +33,37 @@
  * @hide
  */
 @SystemApi
-public final class SmartspaceIcon implements Parcelable {
+public final class Icon implements Parcelable {
 
     @NonNull
-    private final Icon mIcon;
+    private final android.graphics.drawable.Icon mIcon;
 
     @Nullable
     private final CharSequence mContentDescription;
 
     private final boolean mShouldTint;
 
-    SmartspaceIcon(@NonNull Parcel in) {
-        mIcon = in.readTypedObject(Icon.CREATOR);
+    Icon(@NonNull Parcel in) {
+        mIcon = in.readTypedObject(android.graphics.drawable.Icon.CREATOR);
         mContentDescription = TextUtils.CHAR_SEQUENCE_CREATOR.createFromParcel(in);
         mShouldTint = in.readBoolean();
     }
 
-    private SmartspaceIcon(@NonNull Icon icon, @Nullable CharSequence contentDescription,
+    private Icon(@NonNull android.graphics.drawable.Icon icon,
+            @Nullable CharSequence contentDescription,
             boolean shouldTint) {
         mIcon = icon;
         mContentDescription = contentDescription;
         mShouldTint = shouldTint;
     }
 
+    /** Returns the icon image. */
     @NonNull
-    public Icon getIcon() {
+    public android.graphics.drawable.Icon getIcon() {
         return mIcon;
     }
 
+    /** Returns the content description of the icon image. */
     @Nullable
     public CharSequence getContentDescription() {
         return mContentDescription;
@@ -73,23 +75,23 @@
     }
 
     @NonNull
-    public static final Creator<SmartspaceIcon> CREATOR = new Creator<SmartspaceIcon>() {
+    public static final Creator<Icon> CREATOR = new Creator<Icon>() {
         @Override
-        public SmartspaceIcon createFromParcel(Parcel in) {
-            return new SmartspaceIcon(in);
+        public Icon createFromParcel(Parcel in) {
+            return new Icon(in);
         }
 
         @Override
-        public SmartspaceIcon[] newArray(int size) {
-            return new SmartspaceIcon[size];
+        public Icon[] newArray(int size) {
+            return new Icon[size];
         }
     };
 
     @Override
     public boolean equals(Object o) {
         if (this == o) return true;
-        if (!(o instanceof SmartspaceIcon)) return false;
-        SmartspaceIcon that = (SmartspaceIcon) o;
+        if (!(o instanceof Icon)) return false;
+        Icon that = (Icon) o;
         return mIcon.toString().equals(that.mIcon.toString()) && SmartspaceUtils.isEqual(
                 mContentDescription,
                 that.mContentDescription) && mShouldTint == that.mShouldTint;
@@ -122,23 +124,23 @@
     }
 
     /**
-     * A builder for {@link SmartspaceIcon} object.
+     * A builder for {@link Icon} object.
      *
      * @hide
      */
     @SystemApi
     public static final class Builder {
 
-        private Icon mIcon;
+        private android.graphics.drawable.Icon mIcon;
         private CharSequence mContentDescription;
         private boolean mShouldTint;
 
         /**
-         * A builder for {@link SmartspaceIcon}, which sets shouldTint to true by default.
+         * A builder for {@link Icon}, which sets shouldTint to true by default.
          *
-         * @param icon the icon image of this {@link SmartspaceIcon} instance.
+         * @param icon the icon image of this {@link Icon} instance.
          */
-        public Builder(@NonNull Icon icon) {
+        public Builder(@NonNull android.graphics.drawable.Icon icon) {
             mIcon = Objects.requireNonNull(icon);
             mShouldTint = true;
         }
@@ -165,8 +167,8 @@
          * Builds a new SmartspaceIcon instance.
          */
         @NonNull
-        public SmartspaceIcon build() {
-            return new SmartspaceIcon(mIcon, mContentDescription, mShouldTint);
+        public Icon build() {
+            return new Icon(mIcon, mContentDescription, mShouldTint);
         }
     }
 }
diff --git a/core/java/android/app/smartspace/uitemplatedata/SmartspaceCombinedCardsUiTemplateData.java b/core/java/android/app/smartspace/uitemplatedata/SmartspaceCombinedCardsUiTemplateData.java
deleted file mode 100644
index 9d4c8e2..0000000
--- a/core/java/android/app/smartspace/uitemplatedata/SmartspaceCombinedCardsUiTemplateData.java
+++ /dev/null
@@ -1,155 +0,0 @@
-/*
- * Copyright (C) 2022 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.smartspace.uitemplatedata;
-
-import android.annotation.NonNull;
-import android.annotation.Nullable;
-import android.annotation.SystemApi;
-import android.app.smartspace.SmartspaceTarget;
-import android.os.Parcel;
-
-import java.util.List;
-import java.util.Objects;
-
-/**
- * Holds all the relevant data needed to render a Smartspace card with the combined-card Ui
- * Template.
- *
- * We only support 1 sub-list card combined with 1 carousel card. And we may expand our supported
- * combinations in the future.
- *
- * @hide
- */
-@SystemApi
-public final class SmartspaceCombinedCardsUiTemplateData extends SmartspaceDefaultUiTemplateData {
-
-    /** A list of secondary cards. */
-    @NonNull
-    private final List<SmartspaceDefaultUiTemplateData> mCombinedCardDataList;
-
-    SmartspaceCombinedCardsUiTemplateData(@NonNull Parcel in) {
-        super(in);
-        mCombinedCardDataList = in.createTypedArrayList(SmartspaceDefaultUiTemplateData.CREATOR);
-    }
-
-    private SmartspaceCombinedCardsUiTemplateData(@SmartspaceTarget.UiTemplateType int templateType,
-            @Nullable SmartspaceText titleText,
-            @Nullable SmartspaceIcon titleIcon,
-            @Nullable SmartspaceText subtitleText,
-            @Nullable SmartspaceIcon subTitleIcon,
-            @Nullable SmartspaceTapAction primaryTapAction,
-            @Nullable SmartspaceText supplementalSubtitleText,
-            @Nullable SmartspaceIcon supplementalSubtitleIcon,
-            @Nullable SmartspaceTapAction supplementalSubtitleTapAction,
-            @Nullable SmartspaceText supplementalAlarmText,
-            @NonNull List<SmartspaceDefaultUiTemplateData> combinedCardDataList) {
-        super(templateType, titleText, titleIcon, subtitleText, subTitleIcon, primaryTapAction,
-                supplementalSubtitleText, supplementalSubtitleIcon, supplementalSubtitleTapAction,
-                supplementalAlarmText);
-        mCombinedCardDataList = combinedCardDataList;
-    }
-
-    @NonNull
-    public List<SmartspaceDefaultUiTemplateData> getCombinedCardDataList() {
-        return mCombinedCardDataList;
-    }
-
-    /**
-     * @see Parcelable.Creator
-     */
-    @NonNull
-    public static final Creator<SmartspaceCombinedCardsUiTemplateData> CREATOR =
-            new Creator<SmartspaceCombinedCardsUiTemplateData>() {
-                @Override
-                public SmartspaceCombinedCardsUiTemplateData createFromParcel(Parcel in) {
-                    return new SmartspaceCombinedCardsUiTemplateData(in);
-                }
-
-                @Override
-                public SmartspaceCombinedCardsUiTemplateData[] newArray(int size) {
-                    return new SmartspaceCombinedCardsUiTemplateData[size];
-                }
-            };
-
-    @Override
-    public int describeContents() {
-        return 0;
-    }
-
-    @Override
-    public void writeToParcel(@NonNull Parcel out, int flags) {
-        super.writeToParcel(out, flags);
-        out.writeTypedList(mCombinedCardDataList);
-    }
-
-    @Override
-    public boolean equals(Object o) {
-        if (this == o) return true;
-        if (!(o instanceof SmartspaceCombinedCardsUiTemplateData)) return false;
-        if (!super.equals(o)) return false;
-        SmartspaceCombinedCardsUiTemplateData that = (SmartspaceCombinedCardsUiTemplateData) o;
-        return mCombinedCardDataList.equals(that.mCombinedCardDataList);
-    }
-
-    @Override
-    public int hashCode() {
-        return Objects.hash(super.hashCode(), mCombinedCardDataList);
-    }
-
-    @Override
-    public String toString() {
-        return super.toString() + " + SmartspaceCombinedCardsUiTemplateData{"
-                + "mCombinedCardDataList=" + mCombinedCardDataList
-                + '}';
-    }
-
-    /**
-     * A builder for {@link SmartspaceCombinedCardsUiTemplateData} object.
-     *
-     * @hide
-     */
-    @SystemApi
-    public static final class Builder extends SmartspaceDefaultUiTemplateData.Builder {
-
-        private final List<SmartspaceDefaultUiTemplateData> mCombinedCardDataList;
-
-        /**
-         * A builder for {@link SmartspaceCombinedCardsUiTemplateData}.
-         */
-        public Builder(@NonNull List<SmartspaceDefaultUiTemplateData> combinedCardDataList) {
-            super(SmartspaceTarget.UI_TEMPLATE_COMBINED_CARDS);
-            mCombinedCardDataList = Objects.requireNonNull(combinedCardDataList);
-        }
-
-        /**
-         * Builds a new SmartspaceCombinedCardsUiTemplateData instance.
-         *
-         * @throws IllegalStateException if any required non-null field is null
-         */
-        @NonNull
-        public SmartspaceCombinedCardsUiTemplateData build() {
-            if (mCombinedCardDataList == null) {
-                throw new IllegalStateException("Please assign a value to all @NonNull args.");
-            }
-            return new SmartspaceCombinedCardsUiTemplateData(getTemplateType(), getTitleText(),
-                    getTitleIcon(), getSubtitleText(), getSubtitleIcon(), getPrimaryTapAction(),
-                    getSupplementalSubtitleText(), getSupplementalSubtitleIcon(),
-                    getSupplementalSubtitleTapAction(), getSupplementalAlarmText(),
-                    mCombinedCardDataList);
-        }
-    }
-}
diff --git a/core/java/android/app/smartspace/uitemplatedata/SmartspaceSubImageUiTemplateData.java b/core/java/android/app/smartspace/uitemplatedata/SmartspaceSubImageUiTemplateData.java
deleted file mode 100644
index 2fe4cf8..0000000
--- a/core/java/android/app/smartspace/uitemplatedata/SmartspaceSubImageUiTemplateData.java
+++ /dev/null
@@ -1,190 +0,0 @@
-/*
- * Copyright (C) 2022 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.smartspace.uitemplatedata;
-
-import android.annotation.NonNull;
-import android.annotation.Nullable;
-import android.annotation.SystemApi;
-import android.app.smartspace.SmartspaceTarget;
-import android.os.Parcel;
-
-import java.util.List;
-import java.util.Objects;
-
-/**
- * Holds all the relevant data needed to render a Smartspace card with the sub-image Ui Template.
- *
- * @hide
- */
-@SystemApi
-public final class SmartspaceSubImageUiTemplateData extends SmartspaceDefaultUiTemplateData {
-
-    /** Texts are shown next to the image as a vertical list */
-    @NonNull
-    private final List<SmartspaceText> mSubImageTexts;
-
-    /** If multiple images are passed in, they will be rendered as GIF. */
-    @NonNull
-    private final List<SmartspaceIcon> mSubImages;
-
-    /** Tap action for the sub-image secondary card. */
-    @Nullable
-    private final SmartspaceTapAction mSubImageAction;
-
-    SmartspaceSubImageUiTemplateData(@NonNull Parcel in) {
-        super(in);
-        mSubImageTexts = in.createTypedArrayList(SmartspaceText.CREATOR);
-        mSubImages = in.createTypedArrayList(SmartspaceIcon.CREATOR);
-        mSubImageAction = in.readTypedObject(SmartspaceTapAction.CREATOR);
-    }
-
-    private SmartspaceSubImageUiTemplateData(@SmartspaceTarget.UiTemplateType int templateType,
-            @Nullable SmartspaceText titleText,
-            @Nullable SmartspaceIcon titleIcon,
-            @Nullable SmartspaceText subtitleText,
-            @Nullable SmartspaceIcon subTitleIcon,
-            @Nullable SmartspaceTapAction primaryTapAction,
-            @Nullable SmartspaceText supplementalSubtitleText,
-            @Nullable SmartspaceIcon supplementalSubtitleIcon,
-            @Nullable SmartspaceTapAction supplementalSubtitleTapAction,
-            @Nullable SmartspaceText supplementalAlarmText,
-            @NonNull List<SmartspaceText> subImageTexts,
-            @NonNull List<SmartspaceIcon> subImages,
-            @Nullable SmartspaceTapAction subImageAction) {
-        super(templateType, titleText, titleIcon, subtitleText, subTitleIcon, primaryTapAction,
-                supplementalSubtitleText, supplementalSubtitleIcon, supplementalSubtitleTapAction,
-                supplementalAlarmText);
-        mSubImageTexts = subImageTexts;
-        mSubImages = subImages;
-        mSubImageAction = subImageAction;
-    }
-
-    @NonNull
-    public List<SmartspaceText> getSubImageTexts() {
-        return mSubImageTexts;
-    }
-
-    @NonNull
-    public List<SmartspaceIcon> getSubImages() {
-        return mSubImages;
-    }
-
-    @Nullable
-    public SmartspaceTapAction getSubImageAction() {
-        return mSubImageAction;
-    }
-
-    /**
-     * @see Parcelable.Creator
-     */
-    @NonNull
-    public static final Creator<SmartspaceSubImageUiTemplateData> CREATOR =
-            new Creator<SmartspaceSubImageUiTemplateData>() {
-                @Override
-                public SmartspaceSubImageUiTemplateData createFromParcel(Parcel in) {
-                    return new SmartspaceSubImageUiTemplateData(in);
-                }
-
-                @Override
-                public SmartspaceSubImageUiTemplateData[] newArray(int size) {
-                    return new SmartspaceSubImageUiTemplateData[size];
-                }
-            };
-
-    @Override
-    public int describeContents() {
-        return 0;
-    }
-
-    @Override
-    public void writeToParcel(@NonNull Parcel out, int flags) {
-        super.writeToParcel(out, flags);
-        out.writeTypedList(mSubImageTexts);
-        out.writeTypedList(mSubImages);
-        out.writeTypedObject(mSubImageAction, flags);
-    }
-
-    @Override
-    public boolean equals(Object o) {
-        if (this == o) return true;
-        if (!(o instanceof SmartspaceSubImageUiTemplateData)) return false;
-        if (!super.equals(o)) return false;
-        SmartspaceSubImageUiTemplateData that = (SmartspaceSubImageUiTemplateData) o;
-        return Objects.equals(mSubImageTexts, that.mSubImageTexts)
-                && Objects.equals(mSubImages, that.mSubImages) && Objects.equals(
-                mSubImageAction, that.mSubImageAction);
-    }
-
-    @Override
-    public int hashCode() {
-        return Objects.hash(super.hashCode(), mSubImageTexts, mSubImages, mSubImageAction);
-    }
-
-    @Override
-    public String toString() {
-        return super.toString() + " + SmartspaceSubImageUiTemplateData{"
-                + "mSubImageTexts=" + mSubImageTexts
-                + ", mSubImages=" + mSubImages
-                + ", mSubImageAction=" + mSubImageAction
-                + '}';
-    }
-
-    /**
-     * A builder for {@link SmartspaceSubImageUiTemplateData} object.
-     *
-     * @hide
-     */
-    @SystemApi
-    public static final class Builder extends SmartspaceDefaultUiTemplateData.Builder {
-
-        private final List<SmartspaceText> mSubImageTexts;
-        private final List<SmartspaceIcon> mSubImages;
-        private SmartspaceTapAction mSubImageAction;
-
-        /**
-         * A builder for {@link SmartspaceSubImageUiTemplateData}.
-         */
-        public Builder(@NonNull List<SmartspaceText> subImageTexts,
-                @NonNull List<SmartspaceIcon> subImages) {
-            super(SmartspaceTarget.UI_TEMPLATE_SUB_IMAGE);
-            mSubImageTexts = Objects.requireNonNull(subImageTexts);
-            mSubImages = Objects.requireNonNull(subImages);
-        }
-
-        /**
-         * Sets the card tap action.
-         */
-        @NonNull
-        public Builder setSubImageAction(@NonNull SmartspaceTapAction subImageAction) {
-            mSubImageAction = subImageAction;
-            return this;
-        }
-
-        /**
-         * Builds a new SmartspaceSubImageUiTemplateData instance.
-         */
-        @NonNull
-        public SmartspaceSubImageUiTemplateData build() {
-            return new SmartspaceSubImageUiTemplateData(getTemplateType(), getTitleText(),
-                    getTitleIcon(), getSubtitleText(), getSubtitleIcon(), getPrimaryTapAction(),
-                    getSupplementalSubtitleText(), getSupplementalSubtitleIcon(),
-                    getSupplementalSubtitleTapAction(), getSupplementalAlarmText(), mSubImageTexts,
-                    mSubImages,
-                    mSubImageAction);
-        }
-    }
-}
diff --git a/core/java/android/app/smartspace/uitemplatedata/SmartspaceSubListUiTemplateData.java b/core/java/android/app/smartspace/uitemplatedata/SmartspaceSubListUiTemplateData.java
deleted file mode 100644
index 9512c7f..0000000
--- a/core/java/android/app/smartspace/uitemplatedata/SmartspaceSubListUiTemplateData.java
+++ /dev/null
@@ -1,195 +0,0 @@
-/*
- * Copyright (C) 2022 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.smartspace.uitemplatedata;
-
-import android.annotation.NonNull;
-import android.annotation.Nullable;
-import android.annotation.SystemApi;
-import android.app.smartspace.SmartspaceTarget;
-import android.os.Parcel;
-
-import java.util.List;
-import java.util.Objects;
-
-
-/**
- * Holds all the relevant data needed to render a Smartspace card with the sub-list Ui Template.
- *
- * @hide
- */
-@SystemApi
-public final class SmartspaceSubListUiTemplateData extends SmartspaceDefaultUiTemplateData {
-
-    @Nullable
-    private final SmartspaceIcon mSubListIcon;
-    @NonNull
-    private final List<SmartspaceText> mSubListTexts;
-
-    /** Tap action for the sub-list secondary card. */
-    @Nullable
-    private final SmartspaceTapAction mSubListAction;
-
-    SmartspaceSubListUiTemplateData(@NonNull Parcel in) {
-        super(in);
-        mSubListIcon = in.readTypedObject(SmartspaceIcon.CREATOR);
-        mSubListTexts = in.createTypedArrayList(SmartspaceText.CREATOR);
-        mSubListAction = in.readTypedObject(SmartspaceTapAction.CREATOR);
-    }
-
-    private SmartspaceSubListUiTemplateData(@SmartspaceTarget.UiTemplateType int templateType,
-            @Nullable SmartspaceText titleText,
-            @Nullable SmartspaceIcon titleIcon,
-            @Nullable SmartspaceText subtitleText,
-            @Nullable SmartspaceIcon subTitleIcon,
-            @Nullable SmartspaceTapAction primaryTapAction,
-            @Nullable SmartspaceText supplementalSubtitleText,
-            @Nullable SmartspaceIcon supplementalSubtitleIcon,
-            @Nullable SmartspaceTapAction supplementalSubtitleTapAction,
-            @Nullable SmartspaceText supplementalAlarmText,
-            @Nullable SmartspaceIcon subListIcon,
-            @NonNull List<SmartspaceText> subListTexts,
-            @Nullable SmartspaceTapAction subListAction) {
-        super(templateType, titleText, titleIcon, subtitleText, subTitleIcon, primaryTapAction,
-                supplementalSubtitleText, supplementalSubtitleIcon, supplementalSubtitleTapAction,
-                supplementalAlarmText);
-        mSubListIcon = subListIcon;
-        mSubListTexts = subListTexts;
-        mSubListAction = subListAction;
-    }
-
-    @Nullable
-    public SmartspaceIcon getSubListIcon() {
-        return mSubListIcon;
-    }
-
-    @NonNull
-    public List<SmartspaceText> getSubListTexts() {
-        return mSubListTexts;
-    }
-
-    @Nullable
-    public SmartspaceTapAction getSubListAction() {
-        return mSubListAction;
-    }
-
-    /**
-     * @see Parcelable.Creator
-     */
-    @NonNull
-    public static final Creator<SmartspaceSubListUiTemplateData> CREATOR =
-            new Creator<SmartspaceSubListUiTemplateData>() {
-                @Override
-                public SmartspaceSubListUiTemplateData createFromParcel(Parcel in) {
-                    return new SmartspaceSubListUiTemplateData(in);
-                }
-
-                @Override
-                public SmartspaceSubListUiTemplateData[] newArray(int size) {
-                    return new SmartspaceSubListUiTemplateData[size];
-                }
-            };
-
-    @Override
-    public int describeContents() {
-        return 0;
-    }
-
-    @Override
-    public void writeToParcel(@NonNull Parcel out, int flags) {
-        super.writeToParcel(out, flags);
-        out.writeTypedObject(mSubListIcon, flags);
-        out.writeTypedList(mSubListTexts);
-        out.writeTypedObject(mSubListAction, flags);
-    }
-
-    @Override
-    public boolean equals(Object o) {
-        if (this == o) return true;
-        if (!(o instanceof SmartspaceSubListUiTemplateData)) return false;
-        if (!super.equals(o)) return false;
-        SmartspaceSubListUiTemplateData that = (SmartspaceSubListUiTemplateData) o;
-        return Objects.equals(mSubListIcon, that.mSubListIcon) && Objects.equals(
-                mSubListTexts, that.mSubListTexts) && Objects.equals(mSubListAction,
-                that.mSubListAction);
-    }
-
-    @Override
-    public int hashCode() {
-        return Objects.hash(super.hashCode(), mSubListIcon, mSubListTexts, mSubListAction);
-    }
-
-    @Override
-    public String toString() {
-        return super.toString() + " + SmartspaceSubListUiTemplateData{"
-                + "mSubListIcon=" + mSubListIcon
-                + ", mSubListTexts=" + mSubListTexts
-                + ", mSubListAction=" + mSubListAction
-                + '}';
-    }
-
-    /**
-     * A builder for {@link SmartspaceSubListUiTemplateData} object.
-     *
-     * @hide
-     */
-    @SystemApi
-    public static final class Builder extends SmartspaceDefaultUiTemplateData.Builder {
-
-        private SmartspaceIcon mSubListIcon;
-        private final List<SmartspaceText> mSubListTexts;
-        private SmartspaceTapAction mSubListAction;
-
-        /**
-         * A builder for {@link SmartspaceSubListUiTemplateData}.
-         */
-        public Builder(@NonNull List<SmartspaceText> subListTexts) {
-            super(SmartspaceTarget.UI_TEMPLATE_SUB_LIST);
-            mSubListTexts = Objects.requireNonNull(subListTexts);
-        }
-
-        /**
-         * Sets the sub-list card icon.
-         */
-        @NonNull
-        public Builder setSubListIcon(@NonNull SmartspaceIcon subListIcon) {
-            mSubListIcon = subListIcon;
-            return this;
-        }
-
-        /**
-         * Sets the card tap action.
-         */
-        @NonNull
-        public Builder setSubListAction(@NonNull SmartspaceTapAction subListAction) {
-            mSubListAction = subListAction;
-            return this;
-        }
-
-        /**
-         * Builds a new SmartspaceSubListUiTemplateData instance.
-         */
-        @NonNull
-        public SmartspaceSubListUiTemplateData build() {
-            return new SmartspaceSubListUiTemplateData(getTemplateType(), getTitleText(),
-                    getTitleIcon(), getSubtitleText(), getSubtitleIcon(), getPrimaryTapAction(),
-                    getSupplementalSubtitleText(), getSupplementalSubtitleIcon(),
-                    getSupplementalSubtitleTapAction(), getSupplementalAlarmText(), mSubListIcon,
-                    mSubListTexts,
-                    mSubListAction);
-        }
-    }
-}
diff --git a/core/java/android/app/smartspace/uitemplatedata/SmartspaceSubCardUiTemplateData.java b/core/java/android/app/smartspace/uitemplatedata/SubCardTemplateData.java
similarity index 60%
rename from core/java/android/app/smartspace/uitemplatedata/SmartspaceSubCardUiTemplateData.java
rename to core/java/android/app/smartspace/uitemplatedata/SubCardTemplateData.java
index 2db13d31..9c8330d 100644
--- a/core/java/android/app/smartspace/uitemplatedata/SmartspaceSubCardUiTemplateData.java
+++ b/core/java/android/app/smartspace/uitemplatedata/SubCardTemplateData.java
@@ -28,43 +28,49 @@
 /**
  * Holds all the relevant data needed to render a Smartspace card with the sub-card Ui Template.
  *
+ * This template will add a sub-card card within the default-template card:
+ * <ul>
+ *     <li> sub-card icon </li>
+ *     <li> sub-card text </li>
+ * </ul>
+ *
  * @hide
  */
 @SystemApi
-public final class SmartspaceSubCardUiTemplateData extends SmartspaceDefaultUiTemplateData {
+public final class SubCardTemplateData extends BaseTemplateData {
 
     /** Icon for the sub-card. */
     @NonNull
-    private final SmartspaceIcon mSubCardIcon;
+    private final Icon mSubCardIcon;
 
     /** Text for the sub-card, which shows below the icon when being set. */
     @Nullable
-    private final SmartspaceText mSubCardText;
+    private final Text mSubCardText;
 
     /** Tap action for the sub-card secondary card. */
     @Nullable
-    private final SmartspaceTapAction mSubCardAction;
+    private final TapAction mSubCardAction;
 
-    SmartspaceSubCardUiTemplateData(@NonNull Parcel in) {
+    SubCardTemplateData(@NonNull Parcel in) {
         super(in);
-        mSubCardIcon = in.readTypedObject(SmartspaceIcon.CREATOR);
-        mSubCardText = in.readTypedObject(SmartspaceText.CREATOR);
-        mSubCardAction = in.readTypedObject(SmartspaceTapAction.CREATOR);
+        mSubCardIcon = in.readTypedObject(Icon.CREATOR);
+        mSubCardText = in.readTypedObject(Text.CREATOR);
+        mSubCardAction = in.readTypedObject(TapAction.CREATOR);
     }
 
-    private SmartspaceSubCardUiTemplateData(int templateType,
-            @Nullable SmartspaceText titleText,
-            @Nullable SmartspaceIcon titleIcon,
-            @Nullable SmartspaceText subtitleText,
-            @Nullable SmartspaceIcon subTitleIcon,
-            @Nullable SmartspaceTapAction primaryTapAction,
-            @Nullable SmartspaceText supplementalSubtitleText,
-            @Nullable SmartspaceIcon supplementalSubtitleIcon,
-            @Nullable SmartspaceTapAction supplementalSubtitleTapAction,
-            @Nullable SmartspaceText supplementalAlarmText,
-            @NonNull SmartspaceIcon subCardIcon,
-            @Nullable SmartspaceText subCardText,
-            @Nullable SmartspaceTapAction subCardAction) {
+    private SubCardTemplateData(int templateType,
+            @Nullable Text titleText,
+            @Nullable Icon titleIcon,
+            @Nullable Text subtitleText,
+            @Nullable Icon subTitleIcon,
+            @Nullable TapAction primaryTapAction,
+            @Nullable Text supplementalSubtitleText,
+            @Nullable Icon supplementalSubtitleIcon,
+            @Nullable TapAction supplementalSubtitleTapAction,
+            @Nullable Text supplementalAlarmText,
+            @NonNull Icon subCardIcon,
+            @Nullable Text subCardText,
+            @Nullable TapAction subCardAction) {
         super(templateType, titleText, titleIcon, subtitleText, subTitleIcon, primaryTapAction,
                 supplementalSubtitleText, supplementalSubtitleIcon, supplementalSubtitleTapAction,
                 supplementalAlarmText);
@@ -73,18 +79,21 @@
         mSubCardAction = subCardAction;
     }
 
+    /** Returns the sub-card card's icon. */
     @NonNull
-    public SmartspaceIcon getSubCardIcon() {
+    public Icon getSubCardIcon() {
         return mSubCardIcon;
     }
 
+    /** Returns the sub-card card's text. */
     @Nullable
-    public SmartspaceText getSubCardText() {
+    public Text getSubCardText() {
         return mSubCardText;
     }
 
+    /** Returns the sub-card card's tap action. */
     @Nullable
-    public SmartspaceTapAction getSubCardAction() {
+    public TapAction getSubCardAction() {
         return mSubCardAction;
     }
 
@@ -92,16 +101,16 @@
      * @see Parcelable.Creator
      */
     @NonNull
-    public static final Creator<SmartspaceSubCardUiTemplateData> CREATOR =
-            new Creator<SmartspaceSubCardUiTemplateData>() {
+    public static final Creator<SubCardTemplateData> CREATOR =
+            new Creator<SubCardTemplateData>() {
                 @Override
-                public SmartspaceSubCardUiTemplateData createFromParcel(Parcel in) {
-                    return new SmartspaceSubCardUiTemplateData(in);
+                public SubCardTemplateData createFromParcel(Parcel in) {
+                    return new SubCardTemplateData(in);
                 }
 
                 @Override
-                public SmartspaceSubCardUiTemplateData[] newArray(int size) {
-                    return new SmartspaceSubCardUiTemplateData[size];
+                public SubCardTemplateData[] newArray(int size) {
+                    return new SubCardTemplateData[size];
                 }
             };
 
@@ -121,9 +130,9 @@
     @Override
     public boolean equals(Object o) {
         if (this == o) return true;
-        if (!(o instanceof SmartspaceSubCardUiTemplateData)) return false;
+        if (!(o instanceof SubCardTemplateData)) return false;
         if (!super.equals(o)) return false;
-        SmartspaceSubCardUiTemplateData that = (SmartspaceSubCardUiTemplateData) o;
+        SubCardTemplateData that = (SubCardTemplateData) o;
         return mSubCardIcon.equals(that.mSubCardIcon) && SmartspaceUtils.isEqual(mSubCardText,
                 that.mSubCardText) && Objects.equals(mSubCardAction,
                 that.mSubCardAction);
@@ -144,21 +153,21 @@
     }
 
     /**
-     * A builder for {@link SmartspaceSubCardUiTemplateData} object.
+     * A builder for {@link SubCardTemplateData} object.
      *
      * @hide
      */
     @SystemApi
-    public static final class Builder extends SmartspaceDefaultUiTemplateData.Builder {
+    public static final class Builder extends BaseTemplateData.Builder {
 
-        private final SmartspaceIcon mSubCardIcon;
-        private SmartspaceText mSubCardText;
-        private SmartspaceTapAction mSubCardAction;
+        private final Icon mSubCardIcon;
+        private Text mSubCardText;
+        private TapAction mSubCardAction;
 
         /**
-         * A builder for {@link SmartspaceSubCardUiTemplateData}.
+         * A builder for {@link SubCardTemplateData}.
          */
-        public Builder(@NonNull SmartspaceIcon subCardIcon) {
+        public Builder(@NonNull Icon subCardIcon) {
             super(SmartspaceTarget.UI_TEMPLATE_SUB_CARD);
             mSubCardIcon = Objects.requireNonNull(subCardIcon);
         }
@@ -167,7 +176,7 @@
          * Sets the card text.
          */
         @NonNull
-        public Builder setSubCardText(@NonNull SmartspaceText subCardText) {
+        public Builder setSubCardText(@NonNull Text subCardText) {
             mSubCardText = subCardText;
             return this;
         }
@@ -176,7 +185,7 @@
          * Sets the card tap action.
          */
         @NonNull
-        public Builder setSubCardAction(@NonNull SmartspaceTapAction subCardAction) {
+        public Builder setSubCardAction(@NonNull TapAction subCardAction) {
             mSubCardAction = subCardAction;
             return this;
         }
@@ -185,8 +194,8 @@
          * Builds a new SmartspaceSubCardUiTemplateData instance.
          */
         @NonNull
-        public SmartspaceSubCardUiTemplateData build() {
-            return new SmartspaceSubCardUiTemplateData(getTemplateType(), getTitleText(),
+        public SubCardTemplateData build() {
+            return new SubCardTemplateData(getTemplateType(), getTitleText(),
                     getTitleIcon(), getSubtitleText(), getSubtitleIcon(), getPrimaryTapAction(),
                     getSupplementalSubtitleText(), getSupplementalSubtitleIcon(),
                     getSupplementalSubtitleTapAction(), getSupplementalAlarmText(), mSubCardIcon,
diff --git a/core/java/android/app/smartspace/uitemplatedata/SubImageTemplateData.java b/core/java/android/app/smartspace/uitemplatedata/SubImageTemplateData.java
new file mode 100644
index 0000000..7df5238
--- /dev/null
+++ b/core/java/android/app/smartspace/uitemplatedata/SubImageTemplateData.java
@@ -0,0 +1,203 @@
+/*
+ * Copyright (C) 2022 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.smartspace.uitemplatedata;
+
+import android.annotation.NonNull;
+import android.annotation.Nullable;
+import android.annotation.SystemApi;
+import android.app.smartspace.SmartspaceTarget;
+import android.os.Parcel;
+
+import java.util.List;
+import java.util.Objects;
+
+/**
+ * Holds all the relevant data needed to render a Smartspace card with the sub-image Ui Template.
+ *
+ * This template will add a sub-image card within the default-template card:
+ * <ul>
+ *     <li> sub-image text1 </li>   <ul>
+ *     <li> sub-image text2 </li>        image (can be a GIF)
+ *     ...                          </ul>
+ * </ul>
+ *
+ * @hide
+ */
+@SystemApi
+public final class SubImageTemplateData extends BaseTemplateData {
+
+    /** Texts are shown next to the image as a vertical list */
+    @NonNull
+    private final List<Text> mSubImageTexts;
+
+    /** If multiple images are passed in, they will be rendered as GIF. */
+    @NonNull
+    private final List<Icon> mSubImages;
+
+    /** Tap action for the sub-image secondary card. */
+    @Nullable
+    private final TapAction mSubImageAction;
+
+    SubImageTemplateData(@NonNull Parcel in) {
+        super(in);
+        mSubImageTexts = in.createTypedArrayList(Text.CREATOR);
+        mSubImages = in.createTypedArrayList(Icon.CREATOR);
+        mSubImageAction = in.readTypedObject(TapAction.CREATOR);
+    }
+
+    private SubImageTemplateData(@SmartspaceTarget.UiTemplateType int templateType,
+            @Nullable Text titleText,
+            @Nullable Icon titleIcon,
+            @Nullable Text subtitleText,
+            @Nullable Icon subTitleIcon,
+            @Nullable TapAction primaryTapAction,
+            @Nullable Text supplementalSubtitleText,
+            @Nullable Icon supplementalSubtitleIcon,
+            @Nullable TapAction supplementalSubtitleTapAction,
+            @Nullable Text supplementalAlarmText,
+            @NonNull List<Text> subImageTexts,
+            @NonNull List<Icon> subImages,
+            @Nullable TapAction subImageAction) {
+        super(templateType, titleText, titleIcon, subtitleText, subTitleIcon, primaryTapAction,
+                supplementalSubtitleText, supplementalSubtitleIcon, supplementalSubtitleTapAction,
+                supplementalAlarmText);
+        mSubImageTexts = subImageTexts;
+        mSubImages = subImages;
+        mSubImageAction = subImageAction;
+    }
+
+    /** Returns the list of sub-image card's texts. Can be empty if not being set. */
+    @NonNull
+    public List<Text> getSubImageTexts() {
+        return mSubImageTexts;
+    }
+
+    /**
+     * Returns the list of sub-image card's image. It's a single-element list if it's a static
+     * image, or a multi-elements list if it's a GIF.
+     */
+    @NonNull
+    public List<Icon> getSubImages() {
+        return mSubImages;
+    }
+
+    /** Returns the sub-image card's tap action. */
+    @Nullable
+    public TapAction getSubImageAction() {
+        return mSubImageAction;
+    }
+
+    /**
+     * @see Parcelable.Creator
+     */
+    @NonNull
+    public static final Creator<SubImageTemplateData> CREATOR =
+            new Creator<SubImageTemplateData>() {
+                @Override
+                public SubImageTemplateData createFromParcel(Parcel in) {
+                    return new SubImageTemplateData(in);
+                }
+
+                @Override
+                public SubImageTemplateData[] newArray(int size) {
+                    return new SubImageTemplateData[size];
+                }
+            };
+
+    @Override
+    public int describeContents() {
+        return 0;
+    }
+
+    @Override
+    public void writeToParcel(@NonNull Parcel out, int flags) {
+        super.writeToParcel(out, flags);
+        out.writeTypedList(mSubImageTexts);
+        out.writeTypedList(mSubImages);
+        out.writeTypedObject(mSubImageAction, flags);
+    }
+
+    @Override
+    public boolean equals(Object o) {
+        if (this == o) return true;
+        if (!(o instanceof SubImageTemplateData)) return false;
+        if (!super.equals(o)) return false;
+        SubImageTemplateData that = (SubImageTemplateData) o;
+        return Objects.equals(mSubImageTexts, that.mSubImageTexts)
+                && Objects.equals(mSubImages, that.mSubImages) && Objects.equals(
+                mSubImageAction, that.mSubImageAction);
+    }
+
+    @Override
+    public int hashCode() {
+        return Objects.hash(super.hashCode(), mSubImageTexts, mSubImages, mSubImageAction);
+    }
+
+    @Override
+    public String toString() {
+        return super.toString() + " + SmartspaceSubImageUiTemplateData{"
+                + "mSubImageTexts=" + mSubImageTexts
+                + ", mSubImages=" + mSubImages
+                + ", mSubImageAction=" + mSubImageAction
+                + '}';
+    }
+
+    /**
+     * A builder for {@link SubImageTemplateData} object.
+     *
+     * @hide
+     */
+    @SystemApi
+    public static final class Builder extends BaseTemplateData.Builder {
+
+        private final List<Text> mSubImageTexts;
+        private final List<Icon> mSubImages;
+        private TapAction mSubImageAction;
+
+        /**
+         * A builder for {@link SubImageTemplateData}.
+         */
+        public Builder(@NonNull List<Text> subImageTexts,
+                @NonNull List<Icon> subImages) {
+            super(SmartspaceTarget.UI_TEMPLATE_SUB_IMAGE);
+            mSubImageTexts = Objects.requireNonNull(subImageTexts);
+            mSubImages = Objects.requireNonNull(subImages);
+        }
+
+        /**
+         * Sets the card tap action.
+         */
+        @NonNull
+        public Builder setSubImageAction(@NonNull TapAction subImageAction) {
+            mSubImageAction = subImageAction;
+            return this;
+        }
+
+        /**
+         * Builds a new SmartspaceSubImageUiTemplateData instance.
+         */
+        @NonNull
+        public SubImageTemplateData build() {
+            return new SubImageTemplateData(getTemplateType(), getTitleText(),
+                    getTitleIcon(), getSubtitleText(), getSubtitleIcon(), getPrimaryTapAction(),
+                    getSupplementalSubtitleText(), getSupplementalSubtitleIcon(),
+                    getSupplementalSubtitleTapAction(), getSupplementalAlarmText(), mSubImageTexts,
+                    mSubImages,
+                    mSubImageAction);
+        }
+    }
+}
diff --git a/core/java/android/app/smartspace/uitemplatedata/SubListTemplateData.java b/core/java/android/app/smartspace/uitemplatedata/SubListTemplateData.java
new file mode 100644
index 0000000..6f6034d
--- /dev/null
+++ b/core/java/android/app/smartspace/uitemplatedata/SubListTemplateData.java
@@ -0,0 +1,206 @@
+/*
+ * Copyright (C) 2022 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.smartspace.uitemplatedata;
+
+import android.annotation.NonNull;
+import android.annotation.Nullable;
+import android.annotation.SystemApi;
+import android.app.smartspace.SmartspaceTarget;
+import android.os.Parcel;
+
+import java.util.List;
+import java.util.Objects;
+
+
+/**
+ * Holds all the relevant data needed to render a Smartspace card with the sub-list Ui Template.
+ *
+ * This template will add a sub-list card within the default-template card:
+ * <ul>
+ *     <li> sub-list text1       sub-list icon </li>
+ *     <li> sub-list text2 </li>
+ *     <li> sub-list text3 </li>
+ *     ...
+ * </ul>
+ *
+ * @hide
+ */
+@SystemApi
+public final class SubListTemplateData extends BaseTemplateData {
+
+    @Nullable
+    private final Icon mSubListIcon;
+    @NonNull
+    private final List<Text> mSubListTexts;
+
+    /** Tap action for the sub-list secondary card. */
+    @Nullable
+    private final TapAction mSubListAction;
+
+    SubListTemplateData(@NonNull Parcel in) {
+        super(in);
+        mSubListIcon = in.readTypedObject(Icon.CREATOR);
+        mSubListTexts = in.createTypedArrayList(Text.CREATOR);
+        mSubListAction = in.readTypedObject(TapAction.CREATOR);
+    }
+
+    private SubListTemplateData(@SmartspaceTarget.UiTemplateType int templateType,
+            @Nullable Text titleText,
+            @Nullable Icon titleIcon,
+            @Nullable Text subtitleText,
+            @Nullable Icon subTitleIcon,
+            @Nullable TapAction primaryTapAction,
+            @Nullable Text supplementalSubtitleText,
+            @Nullable Icon supplementalSubtitleIcon,
+            @Nullable TapAction supplementalSubtitleTapAction,
+            @Nullable Text supplementalAlarmText,
+            @Nullable Icon subListIcon,
+            @NonNull List<Text> subListTexts,
+            @Nullable TapAction subListAction) {
+        super(templateType, titleText, titleIcon, subtitleText, subTitleIcon, primaryTapAction,
+                supplementalSubtitleText, supplementalSubtitleIcon, supplementalSubtitleTapAction,
+                supplementalAlarmText);
+        mSubListIcon = subListIcon;
+        mSubListTexts = subListTexts;
+        mSubListAction = subListAction;
+    }
+
+    /** Returns the sub-list card's icon. */
+    @Nullable
+    public Icon getSubListIcon() {
+        return mSubListIcon;
+    }
+
+    /** Returns the sub-list card's texts list. */
+    @NonNull
+    public List<Text> getSubListTexts() {
+        return mSubListTexts;
+    }
+
+    /** Returns the sub-list card's tap action. */
+    @Nullable
+    public TapAction getSubListAction() {
+        return mSubListAction;
+    }
+
+    /**
+     * @see Parcelable.Creator
+     */
+    @NonNull
+    public static final Creator<SubListTemplateData> CREATOR =
+            new Creator<SubListTemplateData>() {
+                @Override
+                public SubListTemplateData createFromParcel(Parcel in) {
+                    return new SubListTemplateData(in);
+                }
+
+                @Override
+                public SubListTemplateData[] newArray(int size) {
+                    return new SubListTemplateData[size];
+                }
+            };
+
+    @Override
+    public int describeContents() {
+        return 0;
+    }
+
+    @Override
+    public void writeToParcel(@NonNull Parcel out, int flags) {
+        super.writeToParcel(out, flags);
+        out.writeTypedObject(mSubListIcon, flags);
+        out.writeTypedList(mSubListTexts);
+        out.writeTypedObject(mSubListAction, flags);
+    }
+
+    @Override
+    public boolean equals(Object o) {
+        if (this == o) return true;
+        if (!(o instanceof SubListTemplateData)) return false;
+        if (!super.equals(o)) return false;
+        SubListTemplateData that = (SubListTemplateData) o;
+        return Objects.equals(mSubListIcon, that.mSubListIcon) && Objects.equals(
+                mSubListTexts, that.mSubListTexts) && Objects.equals(mSubListAction,
+                that.mSubListAction);
+    }
+
+    @Override
+    public int hashCode() {
+        return Objects.hash(super.hashCode(), mSubListIcon, mSubListTexts, mSubListAction);
+    }
+
+    @Override
+    public String toString() {
+        return super.toString() + " + SmartspaceSubListUiTemplateData{"
+                + "mSubListIcon=" + mSubListIcon
+                + ", mSubListTexts=" + mSubListTexts
+                + ", mSubListAction=" + mSubListAction
+                + '}';
+    }
+
+    /**
+     * A builder for {@link SubListTemplateData} object.
+     *
+     * @hide
+     */
+    @SystemApi
+    public static final class Builder extends BaseTemplateData.Builder {
+
+        private Icon mSubListIcon;
+        private final List<Text> mSubListTexts;
+        private TapAction mSubListAction;
+
+        /**
+         * A builder for {@link SubListTemplateData}.
+         */
+        public Builder(@NonNull List<Text> subListTexts) {
+            super(SmartspaceTarget.UI_TEMPLATE_SUB_LIST);
+            mSubListTexts = Objects.requireNonNull(subListTexts);
+        }
+
+        /**
+         * Sets the sub-list card icon.
+         */
+        @NonNull
+        public Builder setSubListIcon(@NonNull Icon subListIcon) {
+            mSubListIcon = subListIcon;
+            return this;
+        }
+
+        /**
+         * Sets the card tap action.
+         */
+        @NonNull
+        public Builder setSubListAction(@NonNull TapAction subListAction) {
+            mSubListAction = subListAction;
+            return this;
+        }
+
+        /**
+         * Builds a new SmartspaceSubListUiTemplateData instance.
+         */
+        @NonNull
+        public SubListTemplateData build() {
+            return new SubListTemplateData(getTemplateType(), getTitleText(),
+                    getTitleIcon(), getSubtitleText(), getSubtitleIcon(), getPrimaryTapAction(),
+                    getSupplementalSubtitleText(), getSupplementalSubtitleIcon(),
+                    getSupplementalSubtitleTapAction(), getSupplementalAlarmText(), mSubListIcon,
+                    mSubListTexts,
+                    mSubListAction);
+        }
+    }
+}
diff --git a/core/java/android/app/smartspace/uitemplatedata/SmartspaceTapAction.java b/core/java/android/app/smartspace/uitemplatedata/TapAction.java
similarity index 81%
rename from core/java/android/app/smartspace/uitemplatedata/SmartspaceTapAction.java
rename to core/java/android/app/smartspace/uitemplatedata/TapAction.java
index 27d8e5f..83ff6ab 100644
--- a/core/java/android/app/smartspace/uitemplatedata/SmartspaceTapAction.java
+++ b/core/java/android/app/smartspace/uitemplatedata/TapAction.java
@@ -33,7 +33,7 @@
 import java.util.Objects;
 
 /**
- * A {@link SmartspaceTapAction} represents an action which can be taken by a user by tapping on
+ * A {@link TapAction} represents an action which can be taken by a user by tapping on
  * either the title, the subtitle or on the icon. Supported instances are Intents and
  * PendingIntents. These actions can be called from another process or within the client process.
  *
@@ -42,9 +42,9 @@
  * @hide
  */
 @SystemApi
-public final class SmartspaceTapAction implements Parcelable {
+public final class TapAction implements Parcelable {
 
-    /** A unique Id of this {@link SmartspaceTapAction}. */
+    /** A unique Id of this {@link TapAction}. */
     @Nullable
     private final CharSequence mId;
 
@@ -60,7 +60,7 @@
     @Nullable
     private Bundle mExtras;
 
-    SmartspaceTapAction(@NonNull Parcel in) {
+    TapAction(@NonNull Parcel in) {
         mId = TextUtils.CHAR_SEQUENCE_CREATOR.createFromParcel(in);
         mIntent = in.readTypedObject(Intent.CREATOR);
         mPendingIntent = in.readTypedObject(PendingIntent.CREATOR);
@@ -68,7 +68,7 @@
         mExtras = in.readBundle();
     }
 
-    private SmartspaceTapAction(@Nullable CharSequence id, @Nullable Intent intent,
+    private TapAction(@Nullable CharSequence id, @Nullable Intent intent,
             @Nullable PendingIntent pendingIntent, @Nullable UserHandle userHandle,
             @Nullable Bundle extras) {
         mId = id;
@@ -78,27 +78,32 @@
         mExtras = extras;
     }
 
+    /** Returns the unique id of the tap action. */
     @Nullable
     public CharSequence getId() {
         return mId;
     }
 
+    /** Returns the intent of the tap action. */
     @SuppressLint("IntentBuilderName")
     @Nullable
     public Intent getIntent() {
         return mIntent;
     }
 
+    /** Returns the pending intent of the tap action. */
     @Nullable
     public PendingIntent getPendingIntent() {
         return mPendingIntent;
     }
 
+    /** Returns the user handle of the tap action. */
     @Nullable
     public UserHandle getUserHandle() {
         return mUserHandle;
     }
 
+    /** Returns the extras bundle of the tap action. */
     @Nullable
     @SuppressLint("NullableCollection")
     public Bundle getExtras() {
@@ -120,23 +125,23 @@
     }
 
     @NonNull
-    public static final Creator<SmartspaceTapAction> CREATOR = new Creator<SmartspaceTapAction>() {
+    public static final Creator<TapAction> CREATOR = new Creator<TapAction>() {
         @Override
-        public SmartspaceTapAction createFromParcel(Parcel in) {
-            return new SmartspaceTapAction(in);
+        public TapAction createFromParcel(Parcel in) {
+            return new TapAction(in);
         }
 
         @Override
-        public SmartspaceTapAction[] newArray(int size) {
-            return new SmartspaceTapAction[size];
+        public TapAction[] newArray(int size) {
+            return new TapAction[size];
         }
     };
 
     @Override
     public boolean equals(Object o) {
         if (this == o) return true;
-        if (!(o instanceof SmartspaceTapAction)) return false;
-        SmartspaceTapAction that = (SmartspaceTapAction) o;
+        if (!(o instanceof TapAction)) return false;
+        TapAction that = (TapAction) o;
         return SmartspaceUtils.isEqual(mId, that.mId);
     }
 
@@ -157,7 +162,7 @@
     }
 
     /**
-     * A builder for {@link SmartspaceTapAction} object.
+     * A builder for {@link TapAction} object.
      *
      * @hide
      */
@@ -171,9 +176,9 @@
         private Bundle mExtras;
 
         /**
-         * A builder for {@link SmartspaceTapAction}.
+         * A builder for {@link TapAction}.
          *
-         * @param id A unique Id of this {@link SmartspaceTapAction}.
+         * @param id A unique Id of this {@link TapAction}.
          */
         public Builder(@NonNull CharSequence id) {
             mId = Objects.requireNonNull(id);
@@ -222,11 +227,11 @@
          * @throws IllegalStateException if the tap action is empty.
          */
         @NonNull
-        public SmartspaceTapAction build() {
+        public TapAction build() {
             if (mIntent == null && mPendingIntent == null && mExtras == null) {
                 throw new IllegalStateException("Please assign at least 1 valid tap field");
             }
-            return new SmartspaceTapAction(mId, mIntent, mPendingIntent, mUserHandle, mExtras);
+            return new TapAction(mId, mIntent, mPendingIntent, mUserHandle, mExtras);
         }
     }
 }
diff --git a/core/java/android/app/smartspace/uitemplatedata/SmartspaceText.java b/core/java/android/app/smartspace/uitemplatedata/Text.java
similarity index 63%
rename from core/java/android/app/smartspace/uitemplatedata/SmartspaceText.java
rename to core/java/android/app/smartspace/uitemplatedata/Text.java
index 25d13e6..b733394 100644
--- a/core/java/android/app/smartspace/uitemplatedata/SmartspaceText.java
+++ b/core/java/android/app/smartspace/uitemplatedata/Text.java
@@ -32,43 +32,54 @@
  * @hide
  */
 @SystemApi
-public final class SmartspaceText implements Parcelable {
+public final class Text implements Parcelable {
 
     @NonNull
     private final CharSequence mText;
 
     private final TextUtils.TruncateAt mTruncateAtType;
 
-    SmartspaceText(Parcel in) {
+    private final int mMaxLines;
+
+    Text(Parcel in) {
         mText = TextUtils.CHAR_SEQUENCE_CREATOR.createFromParcel(in);
         mTruncateAtType = TextUtils.TruncateAt.valueOf(in.readString());
+        mMaxLines = in.readInt();
     }
 
-    private SmartspaceText(@NonNull CharSequence text, TextUtils.TruncateAt truncateAtType) {
+    private Text(@NonNull CharSequence text, TextUtils.TruncateAt truncateAtType, int maxLines) {
         mText = text;
         mTruncateAtType = truncateAtType;
+        mMaxLines = maxLines;
     }
 
+    /** Returns the text content. */
     @NonNull
     public CharSequence getText() {
         return mText;
     }
 
+    /** Returns the {@link TextUtils.TruncateAt} type of the text content. */
     @NonNull
     public TextUtils.TruncateAt getTruncateAtType() {
         return mTruncateAtType;
     }
 
+    /** Returns the allowed max lines for presenting the text content. */
+    public int getMaxLines() {
+        return mMaxLines;
+    }
+
     @NonNull
-    public static final Creator<SmartspaceText> CREATOR = new Creator<SmartspaceText>() {
+    public static final Creator<Text> CREATOR = new Creator<Text>() {
         @Override
-        public SmartspaceText createFromParcel(Parcel in) {
-            return new SmartspaceText(in);
+        public Text createFromParcel(Parcel in) {
+            return new Text(in);
         }
 
         @Override
-        public SmartspaceText[] newArray(int size) {
-            return new SmartspaceText[size];
+        public Text[] newArray(int size) {
+            return new Text[size];
         }
     };
 
@@ -80,25 +91,26 @@
     @Override
     public boolean equals(Object o) {
         if (this == o) return true;
-        if (!(o instanceof SmartspaceText)) return false;
-        SmartspaceText that = (SmartspaceText) o;
+        if (!(o instanceof Text)) return false;
+        Text that = (Text) o;
         return mTruncateAtType == that.mTruncateAtType && SmartspaceUtils.isEqual(mText,
-                that.mText);
+                that.mText) && mMaxLines == that.mMaxLines;
     }
 
     @Override
     public int hashCode() {
-        return Objects.hash(mText, mTruncateAtType);
+        return Objects.hash(mText, mTruncateAtType, mMaxLines);
     }
 
     @Override
     public void writeToParcel(@NonNull Parcel out, int flags) {
         TextUtils.writeToParcel(mText, out, flags);
         out.writeString(mTruncateAtType.name());
+        out.writeInt(mMaxLines);
     }
 
     /**
-     * A builder for {@link SmartspaceText} object.
+     * A builder for {@link Text} object.
      *
      * @hide
      */
@@ -106,25 +118,31 @@
     public static final class Builder {
         private final CharSequence mText;
         private TextUtils.TruncateAt mTruncateAtType;
+        private int mMaxLines;
 
         /**
-         * A builder for {@link SmartspaceText}, which sets TruncateAtType to AT_END by default.
+         * A builder for {@link Text}, which by default sets TruncateAtType to AT_END, and the max
+         * lines to 1.
          */
         public Builder(@NonNull CharSequence text) {
             mText = Objects.requireNonNull(text);
             mTruncateAtType = TextUtils.TruncateAt.END;
+            mMaxLines = 1;
         }
 
         /**
-         * A builder for {@link SmartspaceText}.
+         * A builder for {@link Text} with specifying {@link TextUtils.TruncateAt} type, and by
+         * default set the max lines to 1.
          */
         public Builder(@NonNull CharSequence text, @NonNull TextUtils.TruncateAt truncateAtType) {
             mText = Objects.requireNonNull(text);
             mTruncateAtType = Objects.requireNonNull(truncateAtType);
+            mMaxLines = 1;
         }
 
         /**
-         * Sets truncateAtType.
+         * Sets truncateAtType, where the text content should be truncated if not all the content
+         * can be presented.
          */
         @NonNull
         public Builder setTruncateAtType(@NonNull TextUtils.TruncateAt truncateAtType) {
@@ -133,11 +151,20 @@
         }
 
         /**
+         * Sets the allowed max lines for the text content.
+         */
+        @NonNull
+        public Builder setMaxLines(int maxLines) {
+            mMaxLines = maxLines;
+            return this;
+        }
+
+        /**
          * Builds a new SmartspaceText instance.
          */
         @NonNull
-        public SmartspaceText build() {
-            return new SmartspaceText(mText, mTruncateAtType);
+        public Text build() {
+            return new Text(mText, mTruncateAtType, mMaxLines);
         }
     }
 }
diff --git a/core/java/android/app/time/ExternalTimeSuggestion.java b/core/java/android/app/time/ExternalTimeSuggestion.java
index 0f98b44..c118558 100644
--- a/core/java/android/app/time/ExternalTimeSuggestion.java
+++ b/core/java/android/app/time/ExternalTimeSuggestion.java
@@ -50,16 +50,17 @@
  * <p>The creator of an external suggestion is expected to be separate Android process, e.g. a
  * process integrating with the external time source via a HAL or local network. The creator must
  * capture the elapsed realtime reference clock, e.g. via {@link SystemClock#elapsedRealtime()},
- * when the UTC time is first obtained (usually under a wakelock). This enables Android to adjust
- * for latency introduced between suggestion creation and eventual use. Adjustments for other
+ * when the Unix epoch time is first obtained (usually under a wakelock). This enables Android to
+ * adjust for latency introduced between suggestion creation and eventual use. Adjustments for other
  * sources of latency, i.e. those before the external time suggestion is created, must be handled by
  * the creator.
  *
  * <p>{@code elapsedRealtimeMillis} and {@code suggestionMillis} represent the suggested time.
- * {@code suggestionMillis} is the number of milliseconds elapsed since 1/1/1970 00:00:00 UTC.
- * {@code elapsedRealtimeMillis} is the value of the elapsed realtime clock when {@code
- * suggestionMillis} was established. Note that the elapsed realtime clock is considered accurate
- * but it is volatile, so time suggestions cannot be persisted across device resets.
+ * {@code suggestionMillis} is the number of milliseconds elapsed since 1/1/1970 00:00:00 UTC
+ * according to the Unix time scale. {@code elapsedRealtimeMillis} is the value of the elapsed
+ * realtime clock when {@code suggestionMillis} was established. Note that the elapsed realtime
+ * clock is considered accurate but it is volatile, so time suggestions cannot be persisted across
+ * device resets.
  *
  * <p>{@code debugInfo} contains debugging metadata associated with the suggestion. This is used to
  * record why the suggestion exists and how it was entered. This information exists only to aid in
@@ -83,7 +84,7 @@
             };
 
     @NonNull
-    private final TimestampedValue<Long> mUtcTime;
+    private final TimestampedValue<Long> mUnixEpochTime;
     @Nullable
     private ArrayList<String> mDebugInfo;
 
@@ -92,12 +93,12 @@
      * ExternalTimeSuggestion} for more details.
      *
      * @param elapsedRealtimeMillis the elapsed realtime clock reference for the suggestion
-     * @param suggestionMillis      the suggested UTC time in milliseconds since the start of the
+     * @param suggestionMillis      the suggested time in milliseconds since the start of the
      *                              Unix epoch
      */
     public ExternalTimeSuggestion(@ElapsedRealtimeLong long elapsedRealtimeMillis,
             @CurrentTimeMillisLong long suggestionMillis) {
-        mUtcTime = new TimestampedValue(elapsedRealtimeMillis, suggestionMillis);
+        mUnixEpochTime = new TimestampedValue(elapsedRealtimeMillis, suggestionMillis);
     }
 
     private static ExternalTimeSuggestion createFromParcel(Parcel in) {
@@ -117,7 +118,7 @@
 
     @Override
     public void writeToParcel(@NonNull Parcel dest, int flags) {
-        dest.writeParcelable(mUtcTime, 0);
+        dest.writeParcelable(mUnixEpochTime, 0);
         dest.writeList(mDebugInfo);
     }
 
@@ -125,8 +126,8 @@
      * {@hide}
      */
     @NonNull
-    public TimestampedValue<Long> getUtcTime() {
-        return mUtcTime;
+    public TimestampedValue<Long> getUnixEpochTime() {
+        return mUnixEpochTime;
     }
 
     /**
@@ -160,17 +161,18 @@
             return false;
         }
         ExternalTimeSuggestion that = (ExternalTimeSuggestion) o;
-        return Objects.equals(mUtcTime, that.mUtcTime);
+        return Objects.equals(mUnixEpochTime, that.mUnixEpochTime);
     }
 
     @Override
     public int hashCode() {
-        return Objects.hash(mUtcTime);
+        return Objects.hash(mUnixEpochTime);
     }
 
     @Override
     public String toString() {
-        return "ExternalTimeSuggestion{" + "mUtcTime=" + mUtcTime + ", mDebugInfo=" + mDebugInfo
+        return "ExternalTimeSuggestion{" + "mUnixEpochTime=" + mUnixEpochTime
+                + ", mDebugInfo=" + mDebugInfo
                 + '}';
     }
 }
diff --git a/core/java/android/app/timedetector/GnssTimeSuggestion.java b/core/java/android/app/timedetector/GnssTimeSuggestion.java
index 8ccff62..463e5f0 100644
--- a/core/java/android/app/timedetector/GnssTimeSuggestion.java
+++ b/core/java/android/app/timedetector/GnssTimeSuggestion.java
@@ -31,11 +31,11 @@
 /**
  * A time signal from a GNSS source.
  *
- * <p>{@code utcTime} is the suggested time. The {@code utcTime.value} is the number of milliseconds
- * elapsed since 1/1/1970 00:00:00 UTC. The {@code utcTime.referenceTimeMillis} is the value of the
- * elapsed realtime clock when the {@code utcTime.value} was established.
- * Note that the elapsed realtime clock is considered accurate but it is volatile, so time
- * suggestions cannot be persisted across device resets.
+ * <p>{@code unixEpochTime} is the suggested time. The {@code unixEpochTime.value} is the number of
+ * milliseconds elapsed since 1/1/1970 00:00:00 UTC according to the Unix time system. The {@code
+ * unixEpochTime.referenceTimeMillis} is the value of the elapsed realtime clock when the {@code
+ * unixEpochTime.value} was established. Note that the elapsed realtime clock is considered accurate
+ * but it is volatile, so time suggestions cannot be persisted across device resets.
  *
  * <p>{@code debugInfo} contains debugging metadata associated with the suggestion. This is used to
  * record why the suggestion exists and how it was entered. This information exists only to aid in
@@ -57,19 +57,21 @@
                 }
             };
 
-    @NonNull private final TimestampedValue<Long> mUtcTime;
+    @NonNull private final TimestampedValue<Long> mUnixEpochTime;
     @Nullable private ArrayList<String> mDebugInfo;
 
-    public GnssTimeSuggestion(@NonNull TimestampedValue<Long> utcTime) {
-        mUtcTime = Objects.requireNonNull(utcTime);
-        Objects.requireNonNull(utcTime.getValue());
+    public GnssTimeSuggestion(@NonNull TimestampedValue<Long> unixEpochTime) {
+        mUnixEpochTime = Objects.requireNonNull(unixEpochTime);
+        Objects.requireNonNull(unixEpochTime.getValue());
     }
 
     private static GnssTimeSuggestion createFromParcel(Parcel in) {
-        TimestampedValue<Long> utcTime = in.readParcelable(null /* classLoader */, android.os.TimestampedValue.class);
-        GnssTimeSuggestion suggestion = new GnssTimeSuggestion(utcTime);
+        TimestampedValue<Long> unixEpochTime =
+                in.readParcelable(null /* classLoader */, android.os.TimestampedValue.class);
+        GnssTimeSuggestion suggestion = new GnssTimeSuggestion(unixEpochTime);
         @SuppressWarnings("unchecked")
-        ArrayList<String> debugInfo = (ArrayList<String>) in.readArrayList(null /* classLoader */, java.lang.String.class);
+        ArrayList<String> debugInfo = (ArrayList<String>) in.readArrayList(
+                null /* classLoader */, java.lang.String.class);
         suggestion.mDebugInfo = debugInfo;
         return suggestion;
     }
@@ -81,13 +83,13 @@
 
     @Override
     public void writeToParcel(@NonNull Parcel dest, int flags) {
-        dest.writeParcelable(mUtcTime, 0);
+        dest.writeParcelable(mUnixEpochTime, 0);
         dest.writeList(mDebugInfo);
     }
 
     @NonNull
-    public TimestampedValue<Long> getUtcTime() {
-        return mUtcTime;
+    public TimestampedValue<Long> getUnixEpochTime() {
+        return mUnixEpochTime;
     }
 
     @NonNull
@@ -117,18 +119,18 @@
             return false;
         }
         GnssTimeSuggestion that = (GnssTimeSuggestion) o;
-        return Objects.equals(mUtcTime, that.mUtcTime);
+        return Objects.equals(mUnixEpochTime, that.mUnixEpochTime);
     }
 
     @Override
     public int hashCode() {
-        return Objects.hash(mUtcTime);
+        return Objects.hash(mUnixEpochTime);
     }
 
     @Override
     public String toString() {
         return "GnssTimeSuggestion{"
-                + "mUtcTime=" + mUtcTime
+                + "mUnixEpochTime=" + mUnixEpochTime
                 + ", mDebugInfo=" + mDebugInfo
                 + '}';
     }
diff --git a/core/java/android/app/timedetector/ManualTimeSuggestion.java b/core/java/android/app/timedetector/ManualTimeSuggestion.java
index 1699a5f..247d971 100644
--- a/core/java/android/app/timedetector/ManualTimeSuggestion.java
+++ b/core/java/android/app/timedetector/ManualTimeSuggestion.java
@@ -31,9 +31,9 @@
 /**
  * A time signal from a manual (user provided) source.
  *
- * <p>{@code utcTime} is the suggested time. The {@code utcTime.value} is the number of milliseconds
- * elapsed since 1/1/1970 00:00:00 UTC. The {@code utcTime.referenceTimeMillis} is the value of the
- * elapsed realtime clock when the {@code utcTime.value} was established.
+ * <p>{@code unixEpochTime} is the suggested time. The {@code unixEpochTime.value} is the number of
+ * milliseconds elapsed since 1/1/1970 00:00:00 UTC. The {@code unixEpochTime.referenceTimeMillis}
+ * is the value of the elapsed realtime clock when the {@code unixEpochTime.value} was established.
  * Note that the elapsed realtime clock is considered accurate but it is volatile, so time
  * suggestions cannot be persisted across device resets.
  *
@@ -57,19 +57,21 @@
                 }
             };
 
-    @NonNull private final TimestampedValue<Long> mUtcTime;
+    @NonNull private final TimestampedValue<Long> mUnixEpochTime;
     @Nullable private ArrayList<String> mDebugInfo;
 
-    public ManualTimeSuggestion(@NonNull TimestampedValue<Long> utcTime) {
-        mUtcTime = Objects.requireNonNull(utcTime);
-        Objects.requireNonNull(utcTime.getValue());
+    public ManualTimeSuggestion(@NonNull TimestampedValue<Long> unixEpochTime) {
+        mUnixEpochTime = Objects.requireNonNull(unixEpochTime);
+        Objects.requireNonNull(unixEpochTime.getValue());
     }
 
     private static ManualTimeSuggestion createFromParcel(Parcel in) {
-        TimestampedValue<Long> utcTime = in.readParcelable(null /* classLoader */, android.os.TimestampedValue.class);
-        ManualTimeSuggestion suggestion = new ManualTimeSuggestion(utcTime);
+        TimestampedValue<Long> unixEpochTime =
+                in.readParcelable(null /* classLoader */, android.os.TimestampedValue.class);
+        ManualTimeSuggestion suggestion = new ManualTimeSuggestion(unixEpochTime);
         @SuppressWarnings("unchecked")
-        ArrayList<String> debugInfo = (ArrayList<String>) in.readArrayList(null /* classLoader */, java.lang.String.class);
+        ArrayList<String> debugInfo = (ArrayList<String>) in.readArrayList(
+                null /* classLoader */, java.lang.String.class);
         suggestion.mDebugInfo = debugInfo;
         return suggestion;
     }
@@ -81,13 +83,13 @@
 
     @Override
     public void writeToParcel(@NonNull Parcel dest, int flags) {
-        dest.writeParcelable(mUtcTime, 0);
+        dest.writeParcelable(mUnixEpochTime, 0);
         dest.writeList(mDebugInfo);
     }
 
     @NonNull
-    public TimestampedValue<Long> getUtcTime() {
-        return mUtcTime;
+    public TimestampedValue<Long> getUnixEpochTime() {
+        return mUnixEpochTime;
     }
 
     @NonNull
@@ -117,18 +119,18 @@
             return false;
         }
         ManualTimeSuggestion that = (ManualTimeSuggestion) o;
-        return Objects.equals(mUtcTime, that.mUtcTime);
+        return Objects.equals(mUnixEpochTime, that.mUnixEpochTime);
     }
 
     @Override
     public int hashCode() {
-        return Objects.hash(mUtcTime);
+        return Objects.hash(mUnixEpochTime);
     }
 
     @Override
     public String toString() {
         return "ManualTimeSuggestion{"
-                + "mUtcTime=" + mUtcTime
+                + "mUnixEpochTime=" + mUnixEpochTime
                 + ", mDebugInfo=" + mDebugInfo
                 + '}';
     }
diff --git a/core/java/android/app/timedetector/NetworkTimeSuggestion.java b/core/java/android/app/timedetector/NetworkTimeSuggestion.java
index 2030083..f620bc9 100644
--- a/core/java/android/app/timedetector/NetworkTimeSuggestion.java
+++ b/core/java/android/app/timedetector/NetworkTimeSuggestion.java
@@ -31,11 +31,12 @@
 /**
  * A time signal from a network time source like NTP.
  *
- * <p>{@code utcTime} contains the suggested time. The {@code utcTime.value} is the number of
- * milliseconds elapsed since 1/1/1970 00:00:00 UTC. The {@code utcTime.referenceTimeMillis} is the
- * value of the elapsed realtime clock when the {@code utcTime.value} was established.
- * Note that the elapsed realtime clock is considered accurate but it is volatile, so time
- * suggestions cannot be persisted across device resets.
+ * <p>{@code unixEpochTime} contains the suggested time. The {@code unixEpochTime.value} is the
+ * number of milliseconds elapsed since 1/1/1970 00:00:00 UTC according to the Unix time system.
+ * The {@code unixEpochTime.referenceTimeMillis} is the value of the elapsed realtime clock when
+ * the {@code unixEpochTime.value} was established. Note that the elapsed realtime clock is
+ * considered accurate but it is volatile, so time suggestions cannot be persisted across device
+ * resets.
  *
  * <p>{@code debugInfo} contains debugging metadata associated with the suggestion. This is used to
  * record why the suggestion exists and how it was determined. This information exists only to aid
@@ -57,19 +58,21 @@
                 }
             };
 
-    @NonNull private final TimestampedValue<Long> mUtcTime;
+    @NonNull private final TimestampedValue<Long> mUnixEpochTime;
     @Nullable private ArrayList<String> mDebugInfo;
 
-    public NetworkTimeSuggestion(@NonNull TimestampedValue<Long> utcTime) {
-        mUtcTime = Objects.requireNonNull(utcTime);
-        Objects.requireNonNull(utcTime.getValue());
+    public NetworkTimeSuggestion(@NonNull TimestampedValue<Long> unixEpochTime) {
+        mUnixEpochTime = Objects.requireNonNull(unixEpochTime);
+        Objects.requireNonNull(unixEpochTime.getValue());
     }
 
     private static NetworkTimeSuggestion createFromParcel(Parcel in) {
-        TimestampedValue<Long> utcTime = in.readParcelable(null /* classLoader */, android.os.TimestampedValue.class);
-        NetworkTimeSuggestion suggestion = new NetworkTimeSuggestion(utcTime);
+        TimestampedValue<Long> unixEpochTime =
+                in.readParcelable(null /* classLoader */, android.os.TimestampedValue.class);
+        NetworkTimeSuggestion suggestion = new NetworkTimeSuggestion(unixEpochTime);
         @SuppressWarnings("unchecked")
-        ArrayList<String> debugInfo = (ArrayList<String>) in.readArrayList(null /* classLoader */, java.lang.String.class);
+        ArrayList<String> debugInfo = (ArrayList<String>) in.readArrayList(
+                null /* classLoader */, java.lang.String.class);
         suggestion.mDebugInfo = debugInfo;
         return suggestion;
     }
@@ -81,13 +84,13 @@
 
     @Override
     public void writeToParcel(@NonNull Parcel dest, int flags) {
-        dest.writeParcelable(mUtcTime, 0);
+        dest.writeParcelable(mUnixEpochTime, 0);
         dest.writeList(mDebugInfo);
     }
 
     @NonNull
-    public TimestampedValue<Long> getUtcTime() {
-        return mUtcTime;
+    public TimestampedValue<Long> getUnixEpochTime() {
+        return mUnixEpochTime;
     }
 
     @NonNull
@@ -117,18 +120,18 @@
             return false;
         }
         NetworkTimeSuggestion that = (NetworkTimeSuggestion) o;
-        return Objects.equals(mUtcTime, that.mUtcTime);
+        return Objects.equals(mUnixEpochTime, that.mUnixEpochTime);
     }
 
     @Override
     public int hashCode() {
-        return Objects.hash(mUtcTime);
+        return Objects.hash(mUnixEpochTime);
     }
 
     @Override
     public String toString() {
         return "NetworkTimeSuggestion{"
-                + "mUtcTime=" + mUtcTime
+                + "mUnixEpochTime=" + mUnixEpochTime
                 + ", mDebugInfo=" + mDebugInfo
                 + '}';
     }
diff --git a/core/java/android/app/timedetector/TelephonyTimeSuggestion.java b/core/java/android/app/timedetector/TelephonyTimeSuggestion.java
index 52d0bbe..1fa392a 100644
--- a/core/java/android/app/timedetector/TelephonyTimeSuggestion.java
+++ b/core/java/android/app/timedetector/TelephonyTimeSuggestion.java
@@ -34,12 +34,12 @@
  * <p>{@code slotIndex} identifies the suggestion source. This enables detection logic to identify
  * suggestions from the same source when there are several in use.
  *
- * <p>{@code utcTime}. When not {@code null}, the {@code utcTime.value} is the number of
- * milliseconds elapsed since 1/1/1970 00:00:00 UTC. The {@code utcTime.referenceTimeMillis} is the
- * value of the elapsed realtime clock when the {@code utcTime.value} was established.
+ * <p>{@code unixEpochTime}. When not {@code null}, the {@code unixEpochTime.value} is the number of
+ * milliseconds elapsed since 1/1/1970 00:00:00 UTC. The {@code unixEpochTime.referenceTimeMillis}
+ * is the value of the elapsed realtime clock when the {@code unixEpochTime.value} was established.
  * Note that the elapsed realtime clock is considered accurate but it is volatile, so time
- * suggestions cannot be persisted across device resets. {@code utcTime} can be {@code null} to
- * indicate that the telephony source has entered an "un-opinionated" state and any previous
+ * suggestions cannot be persisted across device resets. {@code unixEpochTime} can be {@code null}
+ * to indicate that the telephony source has entered an "un-opinionated" state and any previous
  * suggestion from the source is being withdrawn.
  *
  * <p>{@code debugInfo} contains debugging metadata associated with the suggestion. This is used to
@@ -65,22 +65,25 @@
             };
 
     private final int mSlotIndex;
-    @Nullable private final TimestampedValue<Long> mUtcTime;
+    @Nullable private final TimestampedValue<Long> mUnixEpochTime;
     @Nullable private ArrayList<String> mDebugInfo;
 
     private TelephonyTimeSuggestion(Builder builder) {
         mSlotIndex = builder.mSlotIndex;
-        mUtcTime = builder.mUtcTime;
+        mUnixEpochTime = builder.mUnixEpochTime;
         mDebugInfo = builder.mDebugInfo != null ? new ArrayList<>(builder.mDebugInfo) : null;
     }
 
     private static TelephonyTimeSuggestion createFromParcel(Parcel in) {
         int slotIndex = in.readInt();
+        TimestampedValue<Long> unixEpochTime =
+                in.readParcelable(null /* classLoader */, android.os.TimestampedValue.class);
         TelephonyTimeSuggestion suggestion = new TelephonyTimeSuggestion.Builder(slotIndex)
-                .setUtcTime(in.readParcelable(null /* classLoader */, android.os.TimestampedValue.class))
+                .setUnixEpochTime(unixEpochTime)
                 .build();
         @SuppressWarnings("unchecked")
-        ArrayList<String> debugInfo = (ArrayList<String>) in.readArrayList(null /* classLoader */, java.lang.String.class);
+        ArrayList<String> debugInfo = (ArrayList<String>) in.readArrayList(
+                null /* classLoader */, java.lang.String.class);
         if (debugInfo != null) {
             suggestion.addDebugInfo(debugInfo);
         }
@@ -95,7 +98,7 @@
     @Override
     public void writeToParcel(@NonNull Parcel dest, int flags) {
         dest.writeInt(mSlotIndex);
-        dest.writeParcelable(mUtcTime, 0);
+        dest.writeParcelable(mUnixEpochTime, 0);
         dest.writeList(mDebugInfo);
     }
 
@@ -111,11 +114,11 @@
     /**
      * Returns the suggested time or {@code null} if there isn't one.
      *
-     * <p>See {@link TelephonyTimeSuggestion} for more information about {@code utcTime}.
+     * <p>See {@link TelephonyTimeSuggestion} for more information about {@code unixEpochTime}.
      */
     @Nullable
-    public TimestampedValue<Long> getUtcTime() {
-        return mUtcTime;
+    public TimestampedValue<Long> getUnixEpochTime() {
+        return mUnixEpochTime;
     }
 
     /**
@@ -163,19 +166,19 @@
         }
         TelephonyTimeSuggestion that = (TelephonyTimeSuggestion) o;
         return mSlotIndex == that.mSlotIndex
-                && Objects.equals(mUtcTime, that.mUtcTime);
+                && Objects.equals(mUnixEpochTime, that.mUnixEpochTime);
     }
 
     @Override
     public int hashCode() {
-        return Objects.hash(mSlotIndex, mUtcTime);
+        return Objects.hash(mSlotIndex, mUnixEpochTime);
     }
 
     @Override
     public String toString() {
         return "TelephonyTimeSuggestion{"
                 + "mSlotIndex='" + mSlotIndex + '\''
-                + ", mUtcTime=" + mUtcTime
+                + ", mUnixEpochTime=" + mUnixEpochTime
                 + ", mDebugInfo=" + mDebugInfo
                 + '}';
     }
@@ -187,7 +190,7 @@
      */
     public static final class Builder {
         private final int mSlotIndex;
-        @Nullable private TimestampedValue<Long> mUtcTime;
+        @Nullable private TimestampedValue<Long> mUnixEpochTime;
         @Nullable private List<String> mDebugInfo;
 
         /**
@@ -202,16 +205,16 @@
         /**
          * Returns the builder for call chaining.
          *
-         * <p>See {@link TelephonyTimeSuggestion} for more information about {@code utcTime}.
+         * <p>See {@link TelephonyTimeSuggestion} for more information about {@code unixEpochTime}.
          */
         @NonNull
-        public Builder setUtcTime(@Nullable TimestampedValue<Long> utcTime) {
-            if (utcTime != null) {
-                // utcTime can be null, but the value it holds cannot.
-                Objects.requireNonNull(utcTime.getValue());
+        public Builder setUnixEpochTime(@Nullable TimestampedValue<Long> unixEpochTime) {
+            if (unixEpochTime != null) {
+                // unixEpochTime can be null, but the value it holds cannot.
+                Objects.requireNonNull(unixEpochTime.getValue());
             }
 
-            mUtcTime = utcTime;
+            mUnixEpochTime = unixEpochTime;
             return this;
         }
 
diff --git a/core/java/android/companion/virtual/VirtualDeviceManager.java b/core/java/android/companion/virtual/VirtualDeviceManager.java
index f1abb05..d50a6ba 100644
--- a/core/java/android/companion/virtual/VirtualDeviceManager.java
+++ b/core/java/android/companion/virtual/VirtualDeviceManager.java
@@ -82,14 +82,21 @@
     }
 
     /**
-     * Creates a virtual device.
+     * Creates a virtual device where applications can launch and receive input events injected by
+     * the creator.
+     *
+     * <p>The {@link android.Manifest.permission#CREATE_VIRTUAL_DEVICE} permission is required to
+     * create virtual devices, which is only available to system apps holding specific roles.
      *
      * @param associationId The association ID as returned by {@link AssociationInfo#getId()} from
      *   Companion Device Manager. Virtual devices must have a corresponding association with CDM in
      *   order to be created.
+     * @param params The parameters for creating virtual devices. See {@link VirtualDeviceParams}
+     *   for the available options.
+     * @return The created virtual device.
      */
     @RequiresPermission(android.Manifest.permission.CREATE_VIRTUAL_DEVICE)
-    @Nullable
+    @NonNull
     public VirtualDevice createVirtualDevice(
             int associationId,
             @NonNull VirtualDeviceParams params) {
diff --git a/core/java/android/hardware/SyncFence.java b/core/java/android/hardware/SyncFence.java
index b0a6f51..693cda7 100644
--- a/core/java/android/hardware/SyncFence.java
+++ b/core/java/android/hardware/SyncFence.java
@@ -17,12 +17,17 @@
 package android.hardware;
 
 import android.annotation.NonNull;
+import android.opengl.EGLDisplay;
+import android.opengl.EGLSync;
 import android.os.Parcel;
 import android.os.ParcelFileDescriptor;
 import android.os.Parcelable;
 
-import java.io.Closeable;
+import libcore.util.NativeAllocationRegistry;
+
+import java.io.FileDescriptor;
 import java.io.IOException;
+import java.time.Duration;
 
 /**
  * A SyncFence represents a synchronization primitive which signals when hardware buffers have
@@ -34,19 +39,57 @@
  * Once the fence signals, then the backing storage for the framebuffer may be safely read from,
  * such as for display or for media encoding.</p>
  *
- * @see <a href="https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkCreateFence.html">
- * VkFence</a>
+ * @see android.opengl.EGLExt#eglDupNativeFenceFDANDROID(EGLDisplay, EGLSync)
+ * @see android.media.Image#getFence()
  */
-public final class SyncFence implements Closeable, Parcelable {
-    private static final String TAG = "SyncFence";
+public final class SyncFence implements AutoCloseable, Parcelable {
 
     /**
-     * Wrapped {@link android.os.ParcelFileDescriptor}.
+     * An invalid signal time. Represents either the signal time for a SyncFence that isn't valid
+     * (that is, {@link #isValid()} is false), or if an error occurred while attempting to retrieve
+     * the signal time.
      */
-    private ParcelFileDescriptor mWrapped;
+    public static final long SIGNAL_TIME_INVALID = -1;
+
+    /**
+     * A pending signal time. This is equivalent to the max value of a long, representing an
+     * infinitely far point in the future.
+     */
+    public static final long SIGNAL_TIME_PENDING = Long.MAX_VALUE;
+
+    private static final NativeAllocationRegistry sRegistry =
+            NativeAllocationRegistry.createNonmalloced(SyncFence.class.getClassLoader(),
+                    nGetDestructor(), 4);
+
+    private long mNativePtr;
+
+    // The destructor for this object
+    // This is also used as our internal lock object. Although SyncFence doesn't claim to be
+    // thread-safe, the cost of doing so to avoid issues around double-close or similar issues
+    // is well worth making.
+    private final Runnable mCloser;
 
     private SyncFence(@NonNull ParcelFileDescriptor wrapped) {
-        mWrapped = wrapped;
+        mNativePtr = nCreate(wrapped.detachFd());
+        mCloser = sRegistry.registerNativeAllocation(this, mNativePtr);
+    }
+
+    private SyncFence(@NonNull Parcel parcel) {
+        boolean valid = parcel.readBoolean();
+        FileDescriptor fileDescriptor = null;
+        if (valid) {
+            fileDescriptor = parcel.readRawFileDescriptor();
+        }
+        if (fileDescriptor != null) {
+            mNativePtr = nCreate(fileDescriptor.getInt$());
+            mCloser = sRegistry.registerNativeAllocation(this, mNativePtr);
+        } else {
+            mCloser = () -> {};
+        }
+    }
+
+    private SyncFence() {
+        mCloser = () -> {};
     }
 
     /***
@@ -56,7 +99,7 @@
      * @hide
      */
     public static @NonNull SyncFence createEmpty() {
-        return new SyncFence(ParcelFileDescriptor.adoptFd(-1));
+        return new SyncFence();
     }
 
     /**
@@ -75,7 +118,13 @@
      * @hide
      */
     public @NonNull ParcelFileDescriptor getFdDup() throws IOException {
-        return mWrapped.dup();
+        synchronized (mCloser) {
+            final int fd = mNativePtr != 0 ? nGetFd(mNativePtr) : -1;
+            if (fd == -1) {
+                throw new IllegalStateException("Cannot dup the FD of an invalid SyncFence");
+            }
+            return ParcelFileDescriptor.fromFd(fd);
+        }
     }
 
     /**
@@ -85,29 +134,84 @@
      *         {@code false} otherwise.
      */
     public boolean isValid() {
-        return mWrapped.getFileDescriptor().valid();
+        synchronized (mCloser) {
+            return mNativePtr != 0 && nIsValid(mNativePtr);
+        }
+    }
+
+    /**
+     * Waits for a SyncFence to signal for up to the timeout duration.
+     *
+     * An invalid SyncFence, that is if {@link #isValid()} is false, is treated equivalently
+     * to a SyncFence that has already signaled. That is, wait() will immediately return true.
+     *
+     * @param timeout The timeout duration. If the duration is negative, then this waits forever.
+     * @return true if the fence signaled or isn't valid, false otherwise.
+     */
+    public boolean await(@NonNull Duration timeout) {
+        final long timeoutNanos;
+        if (timeout.isNegative()) {
+            timeoutNanos = -1;
+        } else {
+            timeoutNanos = timeout.toNanos();
+        }
+        return await(timeoutNanos);
+    }
+
+    /**
+     * Waits forever for a SyncFence to signal.
+     *
+     * An invalid SyncFence, that is if {@link #isValid()} is false, is treated equivalently
+     * to a SyncFence that has already signaled. That is, wait() will immediately return true.
+     *
+     * @return true if the fence signaled or isn't valid, false otherwise.
+     */
+    public boolean awaitForever() {
+        return await(-1);
+    }
+
+    private boolean await(long timeoutNanos) {
+        synchronized (mCloser) {
+            return mNativePtr != 0 && nWait(mNativePtr, timeoutNanos);
+        }
+    }
+
+    /**
+     * Returns the time that the fence signaled in the CLOCK_MONOTONIC time domain.
+     *
+     * If the fence isn't valid, that is if {@link #isValid()} is false, then this returns
+     * {@link #SIGNAL_TIME_INVALID}. Similarly, if an error occurs while trying to access the
+     * signal time, then {@link #SIGNAL_TIME_INVALID} is also returned.
+     *
+     * If the fence hasn't yet signaled, then {@link #SIGNAL_TIME_PENDING} is returned.
+     *
+     * @return The time the fence signaled, {@link #SIGNAL_TIME_INVALID} if there's an error,
+     *         or {@link #SIGNAL_TIME_PENDING} if the fence hasn't signaled yet.
+     */
+    public long getSignalTime() {
+        synchronized (mCloser) {
+            return mNativePtr != 0 ? nGetSignalTime(mNativePtr) : SIGNAL_TIME_INVALID;
+        }
     }
 
     /**
      * Close the SyncFence. This implementation closes the underlying OS resources allocated
      * this stream.
-     *
-     * @throws IOException If an error occurs attempting to close this SyncFence.
      */
     @Override
-    public void close() throws IOException {
-        if (mWrapped != null) {
-            try {
-                mWrapped.close();
-            } finally {
-                // success
+    public void close() {
+        synchronized (mCloser) {
+            if (mNativePtr == 0) {
+                return;
             }
+            mNativePtr = 0;
+            mCloser.run();
         }
     }
 
     @Override
     public int describeContents() {
-        return mWrapped.describeContents();
+        return CONTENTS_FILE_DESCRIPTOR;
     }
 
     /**
@@ -119,23 +223,36 @@
      */
     @Override
     public void writeToParcel(@NonNull Parcel out, int flags) {
-        try {
-            mWrapped.writeToParcel(out, flags);
-        } finally {
-            // success
+        synchronized (mCloser) {
+            final int fd = mNativePtr != 0 ? nGetFd(mNativePtr) : -1;
+            if (fd == -1) {
+                out.writeBoolean(false);
+            } else {
+                out.writeBoolean(true);
+                FileDescriptor temp = new FileDescriptor();
+                temp.setInt$(fd);
+                out.writeFileDescriptor(temp);
+            }
         }
     }
 
     public static final @NonNull Parcelable.Creator<SyncFence> CREATOR =
             new Parcelable.Creator<SyncFence>() {
-        @Override
-        public SyncFence createFromParcel(Parcel in) {
-            return new SyncFence(ParcelFileDescriptor.CREATOR.createFromParcel(in));
-        }
+                @Override
+                public SyncFence createFromParcel(Parcel in) {
+                    return new SyncFence(in);
+                }
 
-        @Override
-        public SyncFence[] newArray(int size) {
-            return new SyncFence[size];
-        }
-    };
+                @Override
+                public SyncFence[] newArray(int size) {
+                    return new SyncFence[size];
+                }
+            };
+
+    private static native long nGetDestructor();
+    private static native long nCreate(int fd);
+    private static native boolean nIsValid(long nPtr);
+    private static native int nGetFd(long nPtr);
+    private static native boolean nWait(long nPtr, long timeout);
+    private static native long nGetSignalTime(long nPtr);
 }
diff --git a/core/java/android/hardware/display/DisplayManager.java b/core/java/android/hardware/display/DisplayManager.java
index 971b61b..c053c92 100644
--- a/core/java/android/hardware/display/DisplayManager.java
+++ b/core/java/android/hardware/display/DisplayManager.java
@@ -356,7 +356,6 @@
      * @see #VIRTUAL_DISPLAY_FLAG_SHOULD_SHOW_SYSTEM_DECORATIONS
      * @hide
      */
-    @TestApi
     @SystemApi
     public static final int VIRTUAL_DISPLAY_FLAG_TRUSTED = 1 << 10;
 
diff --git a/core/java/android/media/NearbyMediaDevicesProvider.java b/core/java/android/media/NearbyMediaDevicesProvider.java
new file mode 100644
index 0000000..7cc799b
--- /dev/null
+++ b/core/java/android/media/NearbyMediaDevicesProvider.java
@@ -0,0 +1,55 @@
+/*
+ * Copyright (C) 2022 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.media;
+
+import android.annotation.NonNull;
+import android.annotation.SystemApi;
+import android.app.StatusBarManager;
+
+import java.util.List;
+import java.util.function.Consumer;
+
+/**
+ * An interface that provides information about nearby devices that are able to play media.
+ * <p>
+ * External clients can implement this interface and pass it to the system via
+ * {@link StatusBarManager#registerNearbyMediaDevicesProvider} to inform the system of nearby media
+ * devices.
+ * <p>
+ * @hide
+ */
+@SystemApi
+public interface NearbyMediaDevicesProvider {
+    /**
+     * Registers a callback that should be notified each time nearby media device(s) change.
+     * <p>
+     * When a callback is newly registered, it should be immediately notified of the current nearby
+     * media devices. Afterwards, the list of devices passed to the callback should always contain
+     * the full set of nearby media devices any time you get an update. If a device is no longer
+     * valid (went offline, e.g.) then it should be omitted from the list in the next update.
+     * <p>
+     * @param callback the callback that will consume updates to the nearby media devices.
+     */
+    void registerNearbyDevicesCallback(@NonNull Consumer<List<NearbyDevice>> callback);
+
+    /**
+     * Unregisters a callback. @see #registerNearbyDevicesCallback.
+     * <p>
+     * @param callback the callback to unregister.
+     */
+    void unregisterNearbyDevicesCallback(@NonNull Consumer<List<NearbyDevice>> callback);
+}
diff --git a/core/java/android/os/Build.java b/core/java/android/os/Build.java
index 1d39089..1d1f17d 100755
--- a/core/java/android/os/Build.java
+++ b/core/java/android/os/Build.java
@@ -412,7 +412,7 @@
          */
         @SystemApi
         @NonNull public static final Set<String> KNOWN_CODENAMES =
-                new ArraySet<>(new String[]{"Q", "R", "S", "Sv2", "Tiramisu"});
+                new ArraySet<>(getStringList("ro.build.version.known_codenames", ","));
 
         private static final String[] ALL_CODENAMES
                 = getStringList("ro.build.version.all_codenames", ",");
diff --git a/core/java/android/provider/Settings.java b/core/java/android/provider/Settings.java
index ea20ed4..23e02e9 100644
--- a/core/java/android/provider/Settings.java
+++ b/core/java/android/provider/Settings.java
@@ -11720,8 +11720,8 @@
                 "night_display_forced_auto_mode_available";
 
         /**
-         * If UTC time between two NITZ signals is greater than this value then the second signal
-         * cannot be ignored.
+         * If Unix epoch time between two NITZ signals is greater than this value then the second
+         * signal cannot be ignored.
          *
          * <p>This value is in milliseconds. It is used for telephony-based time and time zone
          * detection.
@@ -16865,6 +16865,14 @@
                 "system_server_watchdog_timeout_ms";
 
         /**
+         * Whether to enable managed device provisioning via the role holder.
+         *
+         * @hide
+         */
+        public static final String MANAGED_PROVISIONING_DEFER_PROVISIONING_TO_ROLE_HOLDER =
+                "managed_provisioning_defer_provisioning_to_role_holder";
+
+        /**
          * Settings migrated from Wear OS settings provider.
          * @hide
          */
diff --git a/core/java/android/util/OWNERS b/core/java/android/util/OWNERS
index 28c078e..d4cf6e6 100644
--- a/core/java/android/util/OWNERS
+++ b/core/java/android/util/OWNERS
@@ -6,3 +6,7 @@
 per-file TypedValue.java = file:/core/java/android/content/res/OWNERS
 
 per-file PackageUtils.java = file:/core/java/android/content/pm/OWNERS
+
+per-file NtpTrustedTime.java = file:/services/core/java/com/android/server/timezonedetector/OWNERS
+per-file TimeUtils.java = file:/services/core/java/com/android/server/timezonedetector/OWNERS
+per-file TrustedTime.java = file:/services/core/java/com/android/server/timezonedetector/OWNERS
diff --git a/core/java/android/util/TimeUtils.java b/core/java/android/util/TimeUtils.java
index 5fd0c33..9a93e1b 100644
--- a/core/java/android/util/TimeUtils.java
+++ b/core/java/android/util/TimeUtils.java
@@ -153,8 +153,8 @@
      *
      * <p>Time zone database updates should be expected to occur periodically due to
      * political and legal changes that cannot be anticipated in advance.  Therefore,
-     * when computing the UTC time for a future event, applications should be aware that
-     * the results may differ following a time zone database update.  This method allows
+     * when computing the time for a future event, applications should be aware that the
+     * results may differ following a time zone database update.  This method allows
      * applications to detect that a database change has occurred, and to recalculate any
      * cached times accordingly.
      *
diff --git a/core/java/android/view/IPinnedTaskListener.aidl b/core/java/android/view/IPinnedTaskListener.aidl
index c31e67e..7d39ffe 100644
--- a/core/java/android/view/IPinnedTaskListener.aidl
+++ b/core/java/android/view/IPinnedTaskListener.aidl
@@ -61,4 +61,9 @@
      * Called by the window manager when the aspect ratio is reset.
      */
     void onAspectRatioChanged(float aspectRatio);
+
+    /**
+      * Called by the window manager when the expanded aspect ratio is reset.
+    */
+    void onExpandedAspectRatioChanged(float aspectRatio);
 }
diff --git a/core/java/android/view/IWindowSession.aidl b/core/java/android/view/IWindowSession.aidl
index 1ed35f7..a266a28 100644
--- a/core/java/android/view/IWindowSession.aidl
+++ b/core/java/android/view/IWindowSession.aidl
@@ -337,8 +337,10 @@
      *
      * @param window The token for the window to set the callback to.
      * @param callback The {@link IOnBackInvokedCallback} to set.
+     * @param priority The priority of the callback.
      */
-    oneway void setOnBackInvokedCallback(IWindow window, IOnBackInvokedCallback callback);
+    oneway void setOnBackInvokedCallback(
+            IWindow window, IOnBackInvokedCallback callback, int priority);
 
     /**
      * Clears a touchable region set by {@link #setInsets}.
diff --git a/core/java/android/view/WindowlessWindowManager.java b/core/java/android/view/WindowlessWindowManager.java
index 2122152..c81b8cc 100644
--- a/core/java/android/view/WindowlessWindowManager.java
+++ b/core/java/android/view/WindowlessWindowManager.java
@@ -27,8 +27,6 @@
 import android.os.RemoteException;
 import android.util.Log;
 import android.util.MergedConfiguration;
-import android.view.InsetsState;
-import android.view.IWindow;
 import android.window.ClientWindowFrames;
 import android.window.IOnBackInvokedCallback;
 
@@ -511,7 +509,7 @@
 
     @Override
     public void setOnBackInvokedCallback(IWindow iWindow,
-            IOnBackInvokedCallback iOnBackInvokedCallback) throws RemoteException { }
+            IOnBackInvokedCallback iOnBackInvokedCallback, int priority) throws RemoteException { }
 
     @Override
     public boolean dropForAccessibility(IWindow window, int x, int y) {
diff --git a/core/java/android/view/animation/Transformation.java b/core/java/android/view/animation/Transformation.java
index bd62308..de31667 100644
--- a/core/java/android/view/animation/Transformation.java
+++ b/core/java/android/view/animation/Transformation.java
@@ -158,7 +158,7 @@
     }
 
     /**
-     * @return The 3x3 Matrix representing the trnasformation to apply to the
+     * @return The 3x3 Matrix representing the transformation to apply to the
      * coordinates of the object being animated
      */
     public Matrix getMatrix() {
@@ -167,7 +167,7 @@
 
     /**
      * Sets the degree of transparency
-     * @param alpha 1.0 means fully opaqe and 0.0 means fully transparent
+     * @param alpha 1.0 means fully opaque and 0.0 means fully transparent
      */
     public void setAlpha(@FloatRange(from=0.0, to=1.0) float alpha) {
         mAlpha = alpha;
diff --git a/core/java/android/view/autofill/AutofillClientController.java b/core/java/android/view/autofill/AutofillClientController.java
index 0f0fa4a..93d98ac 100644
--- a/core/java/android/view/autofill/AutofillClientController.java
+++ b/core/java/android/view/autofill/AutofillClientController.java
@@ -76,7 +76,6 @@
      */
     public AutofillClientController(Activity activity) {
         mActivity = activity;
-        activity.addDumpable(this);
     }
 
     private AutofillManager getAutofillManager() {
diff --git a/core/java/android/view/contentcapture/ContentCaptureManager.java b/core/java/android/view/contentcapture/ContentCaptureManager.java
index 54bd9e7..48d2970 100644
--- a/core/java/android/view/contentcapture/ContentCaptureManager.java
+++ b/core/java/android/view/contentcapture/ContentCaptureManager.java
@@ -218,6 +218,7 @@
     public static final boolean DEBUG = false;
 
     /** @hide */
+    @TestApi
     public static final String DUMPABLE_NAME = "ContentCaptureManager";
 
     /** Error happened during the data sharing session. */
@@ -391,6 +392,9 @@
     @GuardedBy("mLock")
     private MainContentCaptureSession mMainSession;
 
+    @Nullable // set on-demand by addDumpable()
+    private Dumper mDumpable;
+
     /** @hide */
     public interface ContentCaptureClient {
         /**
@@ -407,9 +411,6 @@
         mService = Objects.requireNonNull(service, "service cannot be null");
         mOptions = Objects.requireNonNull(options, "options cannot be null");
 
-        if (context instanceof Activity) {
-            ((Activity) context).addDumpable(new Dumper());
-        }
         ContentCaptureHelper.setLoggingLevel(mOptions.loggingLevel);
 
         if (sVerbose) Log.v(TAG, "Constructor for " + context.getPackageName());
@@ -748,6 +749,14 @@
         return resultReceiver;
     }
 
+    /** @hide */
+    public void addDumpable(Activity activity) {
+        if (mDumpable == null) {
+            mDumpable = new Dumper();
+        }
+        activity.addDumpable(mDumpable);
+    }
+
     // NOTE: ContentCaptureManager cannot implement it directly as it would be exposed as public API
     private final class Dumper implements Dumpable {
         @Override
diff --git a/core/java/android/window/BackNavigationInfo.java b/core/java/android/window/BackNavigationInfo.java
index 18c20e2..1e922d9 100644
--- a/core/java/android/window/BackNavigationInfo.java
+++ b/core/java/android/window/BackNavigationInfo.java
@@ -21,9 +21,11 @@
 import android.annotation.Nullable;
 import android.app.WindowConfiguration;
 import android.hardware.HardwareBuffer;
+import android.os.Bundle;
 import android.os.Parcel;
 import android.os.Parcelable;
 import android.os.RemoteCallback;
+import android.view.RemoteAnimationTarget;
 import android.view.SurfaceControl;
 
 /**
@@ -65,6 +67,12 @@
     public static final int TYPE_CALLBACK = 4;
 
     /**
+     * Key to access the boolean value passed in {#mOnBackNavigationDone} result bundle
+     * that represents if back navigation has been triggered.
+     */
+    public static final String KEY_TRIGGER_BACK = "TriggerBack";
+
+    /**
      * Defines the type of back destinations a back even can lead to. This is used to define the
      * type of animation that need to be run on SystemUI.
      */
@@ -79,13 +87,13 @@
 
     private final int mType;
     @Nullable
-    private final SurfaceControl mDepartingWindowContainer;
+    private final RemoteAnimationTarget mDepartingAnimationTarget;
     @Nullable
     private final SurfaceControl mScreenshotSurface;
     @Nullable
     private final HardwareBuffer mScreenshotBuffer;
     @Nullable
-    private final RemoteCallback mRemoteCallback;
+    private final RemoteCallback mOnBackNavigationDone;
     @Nullable
     private final WindowConfiguration mTaskWindowConfiguration;
     @Nullable
@@ -96,8 +104,9 @@
      *
      * @param type                    The {@link BackTargetType} of the destination (what will be
      *                                displayed after the back action).
-     * @param topWindowLeash          The leash to animate away the current topWindow. The consumer
-     *                                of the leash is responsible for removing it.
+     * @param departingAnimationTarget  The remote animation target, containing a leash to animate
+     *                                  away the departing window. The consumer of the leash is
+     *                                  responsible for removing it.
      * @param screenshotSurface       The screenshot of the previous activity to be displayed.
      * @param screenshotBuffer        A buffer containing a screenshot used to display the activity.
      *                                See {@link  #getScreenshotHardwareBuffer()} for information
@@ -108,39 +117,39 @@
      * @param onBackInvokedCallback   The back callback registered by the current top level window.
      */
     public BackNavigationInfo(@BackTargetType int type,
-            @Nullable SurfaceControl topWindowLeash,
+            @Nullable RemoteAnimationTarget departingAnimationTarget,
             @Nullable SurfaceControl screenshotSurface,
             @Nullable HardwareBuffer screenshotBuffer,
             @Nullable WindowConfiguration taskWindowConfiguration,
-            @Nullable RemoteCallback onBackNavigationDone,
-            @Nullable IOnBackInvokedCallback onBackInvokedCallback) {
+            @NonNull RemoteCallback onBackNavigationDone,
+            @NonNull IOnBackInvokedCallback onBackInvokedCallback) {
         mType = type;
-        mDepartingWindowContainer = topWindowLeash;
+        mDepartingAnimationTarget = departingAnimationTarget;
         mScreenshotSurface = screenshotSurface;
         mScreenshotBuffer = screenshotBuffer;
         mTaskWindowConfiguration = taskWindowConfiguration;
-        mRemoteCallback = onBackNavigationDone;
+        mOnBackNavigationDone = onBackNavigationDone;
         mOnBackInvokedCallback = onBackInvokedCallback;
     }
 
     private BackNavigationInfo(@NonNull Parcel in) {
         mType = in.readInt();
-        mDepartingWindowContainer = in.readTypedObject(SurfaceControl.CREATOR);
+        mDepartingAnimationTarget = in.readTypedObject(RemoteAnimationTarget.CREATOR);
         mScreenshotSurface = in.readTypedObject(SurfaceControl.CREATOR);
         mScreenshotBuffer = in.readTypedObject(HardwareBuffer.CREATOR);
         mTaskWindowConfiguration = in.readTypedObject(WindowConfiguration.CREATOR);
-        mRemoteCallback = in.readTypedObject(RemoteCallback.CREATOR);
+        mOnBackNavigationDone = in.readTypedObject(RemoteCallback.CREATOR);
         mOnBackInvokedCallback = IOnBackInvokedCallback.Stub.asInterface(in.readStrongBinder());
     }
 
     @Override
     public void writeToParcel(@NonNull Parcel dest, int flags) {
         dest.writeInt(mType);
-        dest.writeTypedObject(mDepartingWindowContainer, flags);
+        dest.writeTypedObject(mDepartingAnimationTarget, flags);
         dest.writeTypedObject(mScreenshotSurface, flags);
         dest.writeTypedObject(mScreenshotBuffer, flags);
         dest.writeTypedObject(mTaskWindowConfiguration, flags);
-        dest.writeTypedObject(mRemoteCallback, flags);
+        dest.writeTypedObject(mOnBackNavigationDone, flags);
         dest.writeStrongInterface(mOnBackInvokedCallback);
     }
 
@@ -154,12 +163,13 @@
     }
 
     /**
-     * Returns a leash to the top window container that needs to be animated. This can be null if
-     * the back animation is controlled by the application.
+     * Returns a {@link RemoteAnimationTarget}, containing a leash to the top window container
+     * that needs to be animated. This can be null if the back animation is controlled by
+     * the application.
      */
     @Nullable
-    public SurfaceControl getDepartingWindowContainer() {
-        return mDepartingWindowContainer;
+    public RemoteAnimationTarget getDepartingAnimationTarget() {
+        return mDepartingAnimationTarget;
     }
 
     /**
@@ -212,10 +222,14 @@
     /**
      * Callback to be called when the back preview is finished in order to notify the server that
      * it can clean up the resources created for the animation.
+     *
+     * @param triggerBack Boolean indicating if back navigation has been triggered.
      */
-    public void onBackNavigationFinished() {
-        if (mRemoteCallback != null) {
-            mRemoteCallback.sendResult(null);
+    public void onBackNavigationFinished(boolean triggerBack) {
+        if (mOnBackNavigationDone != null) {
+            Bundle result = new Bundle();
+            result.putBoolean(KEY_TRIGGER_BACK, triggerBack);
+            mOnBackNavigationDone.sendResult(result);
         }
     }
 
@@ -240,11 +254,11 @@
     public String toString() {
         return "BackNavigationInfo{"
                 + "mType=" + typeToString(mType) + " (" + mType + ")"
-                + ", mDepartingWindowContainer=" + mDepartingWindowContainer
+                + ", mDepartingAnimationTarget=" + mDepartingAnimationTarget
                 + ", mScreenshotSurface=" + mScreenshotSurface
                 + ", mTaskWindowConfiguration= " + mTaskWindowConfiguration
                 + ", mScreenshotBuffer=" + mScreenshotBuffer
-                + ", mRemoteCallback=" + mRemoteCallback
+                + ", mOnBackNavigationDone=" + mOnBackNavigationDone
                 + ", mOnBackInvokedCallback=" + mOnBackInvokedCallback
                 + '}';
     }
diff --git a/core/java/android/window/TransitionInfo.java b/core/java/android/window/TransitionInfo.java
index 5ca29e6..aaaf729 100644
--- a/core/java/android/window/TransitionInfo.java
+++ b/core/java/android/window/TransitionInfo.java
@@ -650,7 +650,7 @@
             return options;
         }
 
-        public static AnimationOptions makeThumnbnailAnimOptions(HardwareBuffer srcThumb,
+        public static AnimationOptions makeThumbnailAnimOptions(HardwareBuffer srcThumb,
                 int startX, int startY, boolean scaleUp) {
             AnimationOptions options = new AnimationOptions(
                     scaleUp ? ANIM_THUMBNAIL_SCALE_UP : ANIM_THUMBNAIL_SCALE_DOWN);
diff --git a/core/java/android/window/WindowOnBackInvokedDispatcher.java b/core/java/android/window/WindowOnBackInvokedDispatcher.java
index 03de479..62292f97 100644
--- a/core/java/android/window/WindowOnBackInvokedDispatcher.java
+++ b/core/java/android/window/WindowOnBackInvokedDispatcher.java
@@ -160,11 +160,11 @@
         }
         try {
             if (callback == null) {
-                mWindowSession.setOnBackInvokedCallback(mWindow, null);
+                mWindowSession.setOnBackInvokedCallback(mWindow, null, PRIORITY_DEFAULT);
             } else {
                 int priority = mAllCallbacks.get(callback);
                 mWindowSession.setOnBackInvokedCallback(
-                        mWindow, new OnBackInvokedCallbackWrapper(callback, priority));
+                        mWindow, new OnBackInvokedCallbackWrapper(callback, priority), priority);
             }
         } catch (RemoteException e) {
             Log.e(TAG, "Failed to set OnBackInvokedCallback to WM. Error: " + e);
diff --git a/core/java/com/android/internal/statusbar/IStatusBar.aidl b/core/java/com/android/internal/statusbar/IStatusBar.aidl
index 46f54ce..099d1fc 100644
--- a/core/java/com/android/internal/statusbar/IStatusBar.aidl
+++ b/core/java/com/android/internal/statusbar/IStatusBar.aidl
@@ -24,6 +24,7 @@
 import android.hardware.biometrics.IBiometricSysuiReceiver;
 import android.hardware.biometrics.PromptInfo;
 import android.hardware.fingerprint.IUdfpsHbmListener;
+import android.media.INearbyMediaDevicesProvider;
 import android.media.MediaRoute2Info;
 import android.os.Bundle;
 import android.os.ParcelFileDescriptor;
@@ -311,4 +312,10 @@
         in MediaRoute2Info routeInfo,
         in Icon appIcon,
         in CharSequence appName);
+
+    /** Registers a nearby media devices provider. */
+    void registerNearbyMediaDevicesProvider(in INearbyMediaDevicesProvider provider);
+
+    /** Unregisters a nearby media devices provider. */
+    void unregisterNearbyMediaDevicesProvider(in INearbyMediaDevicesProvider provider);
 }
diff --git a/core/java/com/android/internal/statusbar/IStatusBarService.aidl b/core/java/com/android/internal/statusbar/IStatusBarService.aidl
index 6c17df1..9e70392 100644
--- a/core/java/com/android/internal/statusbar/IStatusBarService.aidl
+++ b/core/java/com/android/internal/statusbar/IStatusBarService.aidl
@@ -24,6 +24,7 @@
 import android.hardware.biometrics.IBiometricSysuiReceiver;
 import android.hardware.biometrics.PromptInfo;
 import android.hardware.fingerprint.IUdfpsHbmListener;
+import android.media.INearbyMediaDevicesProvider;
 import android.media.MediaRoute2Info;
 import android.net.Uri;
 import android.os.Bundle;
@@ -102,6 +103,9 @@
     void shutdown();
     void reboot(boolean safeMode);
 
+    /** just restarts android without rebooting device. Used for some feature flags. */
+    void restart();
+
     void addTile(in ComponentName tile);
     void remTile(in ComponentName tile);
     void clickTile(in ComponentName tile);
@@ -211,4 +215,10 @@
         in MediaRoute2Info routeInfo,
         in Icon appIcon,
         in CharSequence appName);
+
+    /** Registers a nearby media devices provider. */
+    void registerNearbyMediaDevicesProvider(in INearbyMediaDevicesProvider provider);
+
+    /** Unregisters a nearby media devices provider. */
+    void unregisterNearbyMediaDevicesProvider(in INearbyMediaDevicesProvider provider);
 }
diff --git a/core/java/com/android/internal/util/dump/DumpableContainerImpl.java b/core/java/com/android/internal/util/dump/DumpableContainerImpl.java
index 2e56ebf..ccec6c6 100644
--- a/core/java/com/android/internal/util/dump/DumpableContainerImpl.java
+++ b/core/java/com/android/internal/util/dump/DumpableContainerImpl.java
@@ -47,8 +47,10 @@
         Objects.requireNonNull(name, () -> "name of" + dumpable);
 
         if (mDumpables.containsKey(name)) {
-            Log.e(TAG, "addDumpable(): ignoring " + dumpable + " as there is already a dumpable"
-                    + " with that name (" + name + "): " + mDumpables.get(name));
+            if (DEBUG) {
+                Log.d(TAG, "addDumpable(): ignoring " + dumpable + " as there is already a dumpable"
+                        + " with that name (" + name + "): " + mDumpables.get(name));
+            }
             return false;
         }
 
diff --git a/core/jni/Android.bp b/core/jni/Android.bp
index 63b704c..47cb754 100644
--- a/core/jni/Android.bp
+++ b/core/jni/Android.bp
@@ -188,6 +188,7 @@
                 "android_hardware_HardwareBuffer.cpp",
                 "android_hardware_SensorManager.cpp",
                 "android_hardware_SerialPort.cpp",
+                "android_hardware_SyncFence.cpp",
                 "android_hardware_UsbDevice.cpp",
                 "android_hardware_UsbDeviceConnection.cpp",
                 "android_hardware_UsbRequest.cpp",
diff --git a/core/jni/AndroidRuntime.cpp b/core/jni/AndroidRuntime.cpp
index cde71cf..eedf7fa 100644
--- a/core/jni/AndroidRuntime.cpp
+++ b/core/jni/AndroidRuntime.cpp
@@ -82,6 +82,7 @@
 extern int register_android_hardware_HardwareBuffer(JNIEnv *env);
 extern int register_android_hardware_SensorManager(JNIEnv *env);
 extern int register_android_hardware_SerialPort(JNIEnv *env);
+extern int register_android_hardware_SyncFence(JNIEnv* env);
 extern int register_android_hardware_UsbDevice(JNIEnv *env);
 extern int register_android_hardware_UsbDeviceConnection(JNIEnv *env);
 extern int register_android_hardware_UsbRequest(JNIEnv *env);
@@ -1601,6 +1602,7 @@
         REG_JNI(register_android_hardware_HardwareBuffer),
         REG_JNI(register_android_hardware_SensorManager),
         REG_JNI(register_android_hardware_SerialPort),
+        REG_JNI(register_android_hardware_SyncFence),
         REG_JNI(register_android_hardware_UsbDevice),
         REG_JNI(register_android_hardware_UsbDeviceConnection),
         REG_JNI(register_android_hardware_UsbRequest),
diff --git a/core/jni/android_hardware_SyncFence.cpp b/core/jni/android_hardware_SyncFence.cpp
new file mode 100644
index 0000000..b996653
--- /dev/null
+++ b/core/jni/android_hardware_SyncFence.cpp
@@ -0,0 +1,89 @@
+/*
+ * Copyright (C) 2022 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 "SyncFence"
+
+#include <nativehelper/JNIHelp.h>
+#include <ui/Fence.h>
+
+#include "core_jni_helpers.h"
+#include "jni.h"
+
+using namespace android;
+
+template <typename T>
+jlong toJlong(T* ptr) {
+    return static_cast<jlong>(reinterpret_cast<uintptr_t>(ptr));
+}
+
+template <typename T>
+T* fromJlong(jlong jPtr) {
+    return reinterpret_cast<T*>(static_cast<uintptr_t>(jPtr));
+}
+
+static void destroyFence(Fence* fence) {
+    fence->decStrong(0);
+}
+
+static jlong SyncFence_getDestructor(JNIEnv*, jobject) {
+    return toJlong(&destroyFence);
+}
+
+static jlong SyncFence_create(JNIEnv*, jobject, int fd) {
+    Fence* fence = new Fence(fd);
+    fence->incStrong(0);
+    return toJlong(fence);
+}
+
+static jboolean SyncFence_isValid(JNIEnv*, jobject, jlong jPtr) {
+    return fromJlong<Fence>(jPtr)->isValid();
+}
+
+static jint SyncFence_getFd(JNIEnv*, jobject, jlong jPtr) {
+    return fromJlong<Fence>(jPtr)->get();
+}
+
+static jboolean SyncFence_wait(JNIEnv* env, jobject, jlong jPtr, jlong timeoutNanos) {
+    Fence* fence = fromJlong<Fence>(jPtr);
+    int err = fence->wait(timeoutNanos);
+    return err == OK;
+}
+
+static jlong SyncFence_getSignalTime(JNIEnv* env, jobject, jlong jPtr) {
+    return fromJlong<Fence>(jPtr)->getSignalTime();
+}
+
+// ----------------------------------------------------------------------------
+// JNI Glue
+// ----------------------------------------------------------------------------
+
+const char* const kClassPathName = "android/hardware/SyncFence";
+
+// clang-format off
+static const JNINativeMethod gMethods[] = {
+        { "nGetDestructor", "()J", (void*) SyncFence_getDestructor },
+        { "nCreate", "(I)J", (void*) SyncFence_create },
+        { "nIsValid", "(J)Z", (void*) SyncFence_isValid },
+        { "nGetFd", "(J)I", (void*) SyncFence_getFd },
+        { "nWait",  "(JJ)Z", (void*) SyncFence_wait },
+        { "nGetSignalTime", "(J)J", (void*) SyncFence_getSignalTime },
+};
+// clang-format on
+
+int register_android_hardware_SyncFence(JNIEnv* env) {
+    int err = RegisterMethodsOrDie(env, kClassPathName, gMethods, NELEM(gMethods));
+    return err;
+}
\ No newline at end of file
diff --git a/core/jni/android_media_AudioTrack.cpp b/core/jni/android_media_AudioTrack.cpp
index 73d2d8d..8c33e07 100644
--- a/core/jni/android_media_AudioTrack.cpp
+++ b/core/jni/android_media_AudioTrack.cpp
@@ -63,12 +63,94 @@
 static PlaybackParams::fields_t gPlaybackParamsFields;
 static VolumeShaperHelper::fields_t gVolumeShaperFields;
 
-struct audiotrack_callback_cookie {
-    jclass      audioTrack_class;
-    jobject     audioTrack_ref;
-    bool        busy;
-    Condition   cond;
-    bool        isOffload;
+class AudioTrackCallbackImpl : public AudioTrack::IAudioTrackCallback {
+  public:
+    enum event_type {
+    // Keep in sync with java
+        EVENT_MORE_DATA = 0,
+        EVENT_UNDERRUN = 1,
+        EVENT_LOOP_END = 2,
+        EVENT_MARKER = 3,
+        EVENT_NEW_POS = 4,
+        EVENT_BUFFER_END = 5,
+        EVENT_NEW_IAUDIOTRACK = 6,
+        EVENT_STREAM_END = 7,
+        // 8 is reserved for future use
+        EVENT_CAN_WRITE_MORE_DATA = 9
+    };
+
+    AudioTrackCallbackImpl(jclass audioTrackClass, jobject audioTrackWeakRef, bool isOffload)
+          : mIsOffload(isOffload)
+    {
+      const auto env = getJNIEnv();
+      mAudioTrackClass = (jclass)env->NewGlobalRef(audioTrackClass);
+      // we use a weak reference so the AudioTrack object can be garbage collected.
+      mAudioTrackWeakRef = env->NewGlobalRef(audioTrackWeakRef);
+
+    }
+
+    AudioTrackCallbackImpl(const AudioTrackCallbackImpl&) = delete;
+    AudioTrackCallbackImpl& operator=(const AudioTrackCallbackImpl&) = delete;
+    ~AudioTrackCallbackImpl() {
+        const auto env = getJNIEnv();
+        env->DeleteGlobalRef(mAudioTrackClass);
+        env->DeleteGlobalRef(mAudioTrackWeakRef);
+    }
+
+    size_t onCanWriteMoreData(const AudioTrack::Buffer& buffer) override {
+      if (!mIsOffload) {
+          LOG_FATAL("Received canWrite callback for non-offload track");
+          return 0;
+      }
+      const size_t availableForWrite = buffer.size();
+      const int arg = availableForWrite > INT32_MAX ? INT32_MAX : (int) availableForWrite;
+      postEvent(EVENT_CAN_WRITE_MORE_DATA, arg);
+      return 0;
+    }
+
+    void onMarker([[maybe_unused]] uint32_t markerPosition) override {
+        postEvent(EVENT_MARKER);
+    }
+    void onNewPos([[maybe_unused]] uint32_t newPos) override {
+        postEvent(EVENT_NEW_POS);
+    }
+
+
+    void onNewIAudioTrack() override {
+        if (!mIsOffload) return;
+        postEvent(EVENT_NEW_IAUDIOTRACK);
+    }
+
+    void onStreamEnd() override {
+        if (!mIsOffload) return;
+        postEvent(EVENT_STREAM_END);
+    }
+
+  protected:
+    jobject     mAudioTrackWeakRef;
+  private:
+     JNIEnv* getJNIEnv() {
+          auto jni = AndroidRuntime::getJNIEnv();
+          if (jni == nullptr) {
+              LOG_ALWAYS_FATAL("AudioTrackCallback thread JNI reference is null");
+          }
+          return jni;
+     }
+
+     void postEvent(int event, int arg = 0) {
+        auto env = getJNIEnv();
+        env->CallStaticVoidMethod(
+                mAudioTrackClass,
+                javaAudioTrackFields.postNativeEventInJava,
+                mAudioTrackWeakRef, event, arg, 0, NULL);
+        if (env->ExceptionCheck()) {
+            env->ExceptionDescribe();
+            env->ExceptionClear();
+        }
+    }
+
+    jclass      mAudioTrackClass;
+    const bool  mIsOffload;
 };
 
 // keep these values in sync with AudioTrack.java
@@ -76,22 +158,21 @@
 #define MODE_STREAM 1
 
 // ----------------------------------------------------------------------------
-class AudioTrackJniStorage {
+class AudioTrackJniStorage : public virtual RefBase,
+                             public AudioTrackCallbackImpl
+{
 public:
-    sp<MemoryHeapBase> mMemHeap;
-    sp<MemoryBase> mMemBase;
-    audiotrack_callback_cookie mCallbackData{};
+    // TODO do we always want to initialize the callback implementation?
+    AudioTrackJniStorage(jclass audioTrackClass, jobject audioTrackRef, bool isOffload = false)
+          : AudioTrackCallbackImpl(audioTrackClass, audioTrackRef, isOffload) {}
+
     sp<JNIDeviceCallback> mDeviceCallback;
     sp<JNIAudioTrackCallback> mAudioTrackCallback;
 
-    bool allocSharedMem(int sizeInBytes) {
-        mMemHeap = new MemoryHeapBase(sizeInBytes, 0, "AudioTrack Heap Base");
-        if (mMemHeap->getHeapID() < 0) {
-            return false;
-        }
-        mMemBase = new MemoryBase(mMemHeap, 0, sizeInBytes);
-        return true;
+    jobject getAudioTrackWeakRef() const {
+        return mAudioTrackWeakRef;
     }
+
 };
 
 class TunerConfigurationHelper {
@@ -136,7 +217,6 @@
 };
 
 static Mutex sLock;
-static SortedVector <audiotrack_callback_cookie *> sAudioTrackCallBackCookies;
 
 // ----------------------------------------------------------------------------
 #define DEFAULT_OUTPUT_SAMPLE_RATE   44100
@@ -147,102 +227,49 @@
 #define AUDIOTRACK_ERROR_SETUP_INVALIDSTREAMTYPE   (-19)
 #define AUDIOTRACK_ERROR_SETUP_NATIVEINITFAILED    (-20)
 
-// ----------------------------------------------------------------------------
-static void audioCallback(int event, void* user, void *info) {
-
-    audiotrack_callback_cookie *callbackInfo = (audiotrack_callback_cookie *)user;
-    {
-        Mutex::Autolock l(sLock);
-        if (sAudioTrackCallBackCookies.indexOf(callbackInfo) < 0) {
-            return;
-        }
-        callbackInfo->busy = true;
+namespace {
+sp<IMemory> allocSharedMem(int sizeInBytes) {
+    const auto heap = sp<MemoryHeapBase>::make(sizeInBytes, 0, "AudioTrack Heap Base");
+    if (heap->getBase() == MAP_FAILED || heap->getBase() == nullptr) {
+        return nullptr;
     }
-
-    // used as default argument when event callback doesn't have any, or number of
-    // frames for EVENT_CAN_WRITE_MORE_DATA
-    int arg = 0;
-    bool postEvent = false;
-    switch (event) {
-    // Offload only events
-    case AudioTrack::EVENT_CAN_WRITE_MORE_DATA:
-        // this event will read the info return parameter of the callback:
-        // for JNI offload, use the returned size to indicate:
-        // 1/ no data is returned through callback, as it's all done through write()
-        // 2/ do not wait as AudioTrack does when it receives 0 bytes
-        if (callbackInfo->isOffload) {
-            AudioTrack::Buffer* pBuffer = (AudioTrack::Buffer*) info;
-            const size_t availableForWrite = pBuffer->size;
-            arg = availableForWrite > INT32_MAX ? INT32_MAX : (int) availableForWrite;
-            pBuffer->size = 0;
-        }
-        FALLTHROUGH_INTENDED;
-    case AudioTrack::EVENT_STREAM_END:
-    case AudioTrack::EVENT_NEW_IAUDIOTRACK: // a.k.a. tear down
-        if (callbackInfo->isOffload) {
-            postEvent = true;
-        }
-        break;
-
-    // PCM and offload events
-    case AudioTrack::EVENT_MARKER:
-    case AudioTrack::EVENT_NEW_POS:
-        postEvent = true;
-        break;
-    default:
-        // event will not be posted
-        break;
-    }
-
-    if (postEvent) {
-        JNIEnv *env = AndroidRuntime::getJNIEnv();
-        if (env != NULL) {
-            env->CallStaticVoidMethod(
-                    callbackInfo->audioTrack_class,
-                    javaAudioTrackFields.postNativeEventInJava,
-                    callbackInfo->audioTrack_ref, event, arg, 0, NULL);
-            if (env->ExceptionCheck()) {
-                env->ExceptionDescribe();
-                env->ExceptionClear();
-            }
-        }
-    }
-
-    {
-        Mutex::Autolock l(sLock);
-        callbackInfo->busy = false;
-        callbackInfo->cond.broadcast();
-    }
+    return sp<MemoryBase>::make(heap, 0, sizeInBytes);
+}
+// TODO(b/218351957) move somewhere?
+template<typename T>
+sp<T> getFieldSp(JNIEnv* env, jobject thiz, jfieldID id)
+{
+    // make these fields atomic longs on the java side
+    Mutex::Autolock l(sLock);
+    return sp<T>::fromExisting(reinterpret_cast<T*>(env->GetLongField(thiz, id)));
 }
 
-
-// ----------------------------------------------------------------------------
-static sp<AudioTrack> getAudioTrack(JNIEnv* env, jobject thiz)
+// This (semantically) should only be called on AudioTrack creation and release
+template <typename T>
+sp<T> setFieldSp(JNIEnv* env, jobject thiz, const sp<T>& at, jfieldID id)
 {
     Mutex::Autolock l(sLock);
-    AudioTrack* const at =
-            (AudioTrack*)env->GetLongField(thiz, javaAudioTrackFields.nativeTrackInJavaObj);
-    return sp<AudioTrack>(at);
-}
-
-static sp<AudioTrack> setAudioTrack(JNIEnv* env, jobject thiz, const sp<AudioTrack>& at)
-{
-    Mutex::Autolock l(sLock);
-    sp<AudioTrack> old =
-            (AudioTrack*)env->GetLongField(thiz, javaAudioTrackFields.nativeTrackInJavaObj);
+    // I don't think this synchronization actually prevents a race
+    // We can still invalidate under our feet in release
+    sp<T> old = sp<T>::fromExisting(reinterpret_cast<T*>(env->GetLongField(thiz, id)));
     if (at.get()) {
-        at->incStrong((void*)setAudioTrack);
+        at->incStrong((void*)setFieldSp<T>);
     }
     if (old != 0) {
-        old->decStrong((void*)setAudioTrack);
+        old->decStrong((void*)setFieldSp<T>);
     }
-    env->SetLongField(thiz, javaAudioTrackFields.nativeTrackInJavaObj, (jlong)at.get());
+    env->SetLongField(thiz, id, (jlong)at.get());
     return old;
 }
 
+sp<AudioTrack> getAudioTrack(JNIEnv* env, jobject thiz) {
+    return getFieldSp<AudioTrack>(env, thiz, javaAudioTrackFields.nativeTrackInJavaObj);
+}
+
+} // anonymous
 // ----------------------------------------------------------------------------
 sp<AudioTrack> android_media_AudioTrack_getAudioTrack(JNIEnv* env, jobject audioTrackObj) {
-    return getAudioTrack(env, audioTrackObj);
+    return getFieldSp<AudioTrack>(env, audioTrackObj, javaAudioTrackFields.nativeTrackInJavaObj);
 }
 
 // ----------------------------------------------------------------------------
@@ -274,7 +301,6 @@
     env->ReleasePrimitiveArrayCritical(jSession, nSession, 0);
     nSession = NULL;
 
-    AudioTrackJniStorage* lpJniStorage = NULL;
 
     jclass clazz = env->GetObjectClass(thiz);
     if (clazz == NULL) {
@@ -284,6 +310,7 @@
 
     // if we pass in an existing *Native* AudioTrack, we don't need to create/initialize one.
     sp<AudioTrack> lpTrack;
+    const auto lpJniStorage = sp<AudioTrackJniStorage>::make(clazz, weak_this, offload);
     if (nativeAudioTrack == 0) {
         if (jaa == 0) {
             ALOGE("Error creating AudioTrack: invalid audio attributes");
@@ -332,7 +359,7 @@
         AttributionSourceState attributionSource;
         attributionSource.packageName = std::string(opPackageNameStr.c_str());
         attributionSource.token = sp<BBinder>::make();
-        lpTrack = new AudioTrack(attributionSource);
+        lpTrack = sp<AudioTrack>::make(attributionSource);
 
         // read the AudioAttributes values
         auto paa = JNIAudioAttributeHelper::makeUnique();
@@ -345,13 +372,6 @@
 
         // initialize the callback information:
         // this data will be passed with every AudioTrack callback
-        lpJniStorage = new AudioTrackJniStorage();
-        lpJniStorage->mCallbackData.audioTrack_class = (jclass)env->NewGlobalRef(clazz);
-        // we use a weak reference so the AudioTrack object can be garbage collected.
-        lpJniStorage->mCallbackData.audioTrack_ref = env->NewGlobalRef(weak_this);
-        lpJniStorage->mCallbackData.isOffload = offload;
-        lpJniStorage->mCallbackData.busy = false;
-
         audio_offload_info_t offloadInfo;
         if (offload == JNI_TRUE) {
             offloadInfo = AUDIO_INFO_INITIALIZER;
@@ -385,8 +405,7 @@
                                   nativeChannelMask, offload ? 0 : frameCount,
                                   offload ? AUDIO_OUTPUT_FLAG_COMPRESS_OFFLOAD
                                           : AUDIO_OUTPUT_FLAG_NONE,
-                                  audioCallback,
-                                  &(lpJniStorage->mCallbackData), // callback, callback data (user)
+                                  lpJniStorage,
                                   0,    // notificationFrames == 0 since not using EVENT_MORE_DATA
                                         // to feed the AudioTrack
                                   0,    // shared mem
@@ -400,9 +419,10 @@
             break;
 
         case MODE_STATIC:
+        {
             // AudioTrack is using shared memory
-
-            if (!lpJniStorage->allocSharedMem(buffSizeInBytes)) {
+            const auto iMem = allocSharedMem(buffSizeInBytes);
+            if (iMem == nullptr) {
                 ALOGE("Error creating AudioTrack in static mode: error creating mem heap base");
                 goto native_init_failure;
             }
@@ -412,19 +432,18 @@
                                   sampleRateInHertz,
                                   format, // word length, PCM
                                   nativeChannelMask, frameCount, AUDIO_OUTPUT_FLAG_NONE,
-                                  audioCallback,
-                                  &(lpJniStorage->mCallbackData), // callback, callback data (user)
+                                  lpJniStorage,
                                   0, // notificationFrames == 0 since not using EVENT_MORE_DATA
                                      // to feed the AudioTrack
-                                  lpJniStorage->mMemBase, // shared mem
+                                  iMem,                   // shared mem
                                   true,                   // thread can call Java
                                   sessionId,              // audio session ID
                                   AudioTrack::TRANSFER_SHARED,
-                                  NULL,       // default offloadInfo
+                                  nullptr ,               // default offloadInfo
                                   AttributionSourceState(), // default uid, pid values
                                   paa.get());
             break;
-
+        }
         default:
             ALOGE("Unknown mode %d", memoryMode);
             goto native_init_failure;
@@ -438,7 +457,7 @@
         // MediaMetricsConstants.h: AMEDIAMETRICS_PROP_CALLERNAME_VALUE_JAVA
         lpTrack->setCallerName("java");
     } else {  // end if (nativeAudioTrack == 0)
-        lpTrack = (AudioTrack*)nativeAudioTrack;
+        lpTrack = sp<AudioTrack>::fromExisting(reinterpret_cast<AudioTrack*>(nativeAudioTrack));
         // TODO: We need to find out which members of the Java AudioTrack might
         // need to be initialized from the Native AudioTrack
         // these are directly returned from getters:
@@ -456,15 +475,19 @@
 
         // initialize the callback information:
         // this data will be passed with every AudioTrack callback
-        lpJniStorage = new AudioTrackJniStorage();
+
+        // TODO this callback information is useless, it isn't passed to the
+        // native AudioTrack object
+        /*
         lpJniStorage->mCallbackData.audioTrack_class = (jclass)env->NewGlobalRef(clazz);
         // we use a weak reference so the AudioTrack object can be garbage collected.
         lpJniStorage->mCallbackData.audioTrack_ref = env->NewGlobalRef(weak_this);
         lpJniStorage->mCallbackData.busy = false;
+        */
     }
     lpJniStorage->mAudioTrackCallback =
-            new JNIAudioTrackCallback(env, thiz, lpJniStorage->mCallbackData.audioTrack_ref,
-                                      javaAudioTrackFields.postNativeEventInJava);
+            sp<JNIAudioTrackCallback>::make(env, thiz, lpJniStorage->getAudioTrackWeakRef(),
+                                            javaAudioTrackFields.postNativeEventInJava);
     lpTrack->setAudioTrackCallback(lpJniStorage->mAudioTrackCallback);
 
     nSession = (jint *) env->GetPrimitiveArrayCritical(jSession, NULL);
@@ -482,17 +505,13 @@
         env->SetIntArrayRegion(jSampleRate, 0, 1, elements);
     }
 
-    {   // scope for the lock
-        Mutex::Autolock l(sLock);
-        sAudioTrackCallBackCookies.add(&lpJniStorage->mCallbackData);
-    }
     // save our newly created C++ AudioTrack in the "nativeTrackInJavaObj" field
     // of the Java object (in mNativeTrackInJavaObj)
-    setAudioTrack(env, thiz, lpTrack);
+    setFieldSp(env, thiz, lpTrack, javaAudioTrackFields.nativeTrackInJavaObj);
 
     // save the JNI resources so we can free them later
     //ALOGV("storing lpJniStorage: %x\n", (long)lpJniStorage);
-    env->SetLongField(thiz, javaAudioTrackFields.jniData, (jlong)lpJniStorage);
+    setFieldSp(env, thiz, lpJniStorage, javaAudioTrackFields.jniData);
 
     // since we had audio attributes, the stream type was derived from them during the
     // creation of the native AudioTrack: push the same value to the Java object
@@ -505,9 +524,6 @@
     if (nSession != NULL) {
         env->ReleasePrimitiveArrayCritical(jSession, nSession, 0);
     }
-    env->DeleteGlobalRef(lpJniStorage->mCallbackData.audioTrack_class);
-    env->DeleteGlobalRef(lpJniStorage->mCallbackData.audioTrack_ref);
-    delete lpJniStorage;
     env->SetLongField(thiz, javaAudioTrackFields.jniData, 0);
 
     // lpTrack goes out of scope, so reference count drops to zero
@@ -607,38 +623,9 @@
 
 // ----------------------------------------------------------------------------
 
-#define CALLBACK_COND_WAIT_TIMEOUT_MS 1000
 static void android_media_AudioTrack_release(JNIEnv *env,  jobject thiz) {
-    sp<AudioTrack> lpTrack = setAudioTrack(env, thiz, 0);
-    if (lpTrack == NULL) {
-        return;
-    }
-    //ALOGV("deleting lpTrack: %x\n", (int)lpTrack);
-
-    // delete the JNI data
-    AudioTrackJniStorage* pJniStorage = (AudioTrackJniStorage *)env->GetLongField(
-        thiz, javaAudioTrackFields.jniData);
-    // reset the native resources in the Java object so any attempt to access
-    // them after a call to release fails.
-    env->SetLongField(thiz, javaAudioTrackFields.jniData, 0);
-
-    if (pJniStorage) {
-        Mutex::Autolock l(sLock);
-        audiotrack_callback_cookie *lpCookie = &pJniStorage->mCallbackData;
-        //ALOGV("deleting pJniStorage: %x\n", (int)pJniStorage);
-        while (lpCookie->busy) {
-            if (lpCookie->cond.waitRelative(sLock,
-                                            milliseconds(CALLBACK_COND_WAIT_TIMEOUT_MS)) !=
-                                                    NO_ERROR) {
-                break;
-            }
-        }
-        sAudioTrackCallBackCookies.remove(lpCookie);
-        // delete global refs created in native_setup
-        env->DeleteGlobalRef(lpCookie->audioTrack_class);
-        env->DeleteGlobalRef(lpCookie->audioTrack_ref);
-        delete pJniStorage;
-    }
+    setFieldSp(env, thiz, sp<AudioTrack>(nullptr), javaAudioTrackFields.nativeTrackInJavaObj);
+    setFieldSp(env, thiz, sp<AudioTrackJniStorage>(nullptr), javaAudioTrackFields.jniData);
 }
 
 
@@ -1249,17 +1236,18 @@
                 JNIEnv *env,  jobject thiz) {
 
     sp<AudioTrack> lpTrack = getAudioTrack(env, thiz);
-    if (lpTrack == NULL) {
+    if (lpTrack == nullptr) {
         return;
     }
-    AudioTrackJniStorage* pJniStorage = (AudioTrackJniStorage *)env->GetLongField(
-        thiz, javaAudioTrackFields.jniData);
-    if (pJniStorage == NULL || pJniStorage->mDeviceCallback != 0) {
+    const auto pJniStorage =
+            getFieldSp<AudioTrackJniStorage>(env, thiz, javaAudioTrackFields.jniData);
+    if (pJniStorage == nullptr || pJniStorage->mDeviceCallback != nullptr) {
         return;
     }
+
     pJniStorage->mDeviceCallback =
-    new JNIDeviceCallback(env, thiz, pJniStorage->mCallbackData.audioTrack_ref,
-                          javaAudioTrackFields.postNativeEventInJava);
+            sp<JNIDeviceCallback>::make(env, thiz, pJniStorage->getAudioTrackWeakRef(),
+                                        javaAudioTrackFields.postNativeEventInJava);
     lpTrack->addAudioDeviceCallback(pJniStorage->mDeviceCallback);
 }
 
@@ -1267,12 +1255,13 @@
                 JNIEnv *env,  jobject thiz) {
 
     sp<AudioTrack> lpTrack = getAudioTrack(env, thiz);
-    if (lpTrack == NULL) {
+    if (lpTrack == nullptr) {
         return;
     }
-    AudioTrackJniStorage* pJniStorage = (AudioTrackJniStorage *)env->GetLongField(
-        thiz, javaAudioTrackFields.jniData);
-    if (pJniStorage == NULL || pJniStorage->mDeviceCallback == 0) {
+    const auto pJniStorage =
+            getFieldSp<AudioTrackJniStorage>(env, thiz, javaAudioTrackFields.jniData);
+
+    if (pJniStorage == nullptr || pJniStorage->mDeviceCallback == nullptr) {
         return;
     }
     lpTrack->removeAudioDeviceCallback(pJniStorage->mDeviceCallback);
diff --git a/core/jni/android_media_AudioTrack.h b/core/jni/android_media_AudioTrack.h
index ef2aa66..d5b858c 100644
--- a/core/jni/android_media_AudioTrack.h
+++ b/core/jni/android_media_AudioTrack.h
@@ -18,15 +18,9 @@
 #define ANDROID_MEDIA_AUDIOTRACK_H
 
 #include "jni.h"
-
+#include <media/AudioTrack.h>
 #include <utils/StrongPointer.h>
 
-namespace android {
-
-class AudioTrack;
-
-}; // namespace android
-
 /* Gets the underlying AudioTrack from an AudioTrack Java object. */
 extern android::sp<android::AudioTrack> android_media_AudioTrack_getAudioTrack(
         JNIEnv* env, jobject audioTrackObj);
diff --git a/core/jni/android_opengl_EGLExt.cpp b/core/jni/android_opengl_EGLExt.cpp
index 1758807..cdc9852 100644
--- a/core/jni/android_opengl_EGLExt.cpp
+++ b/core/jni/android_opengl_EGLExt.cpp
@@ -37,25 +37,12 @@
 #include <ui/ANativeObjectBase.h>
 
 static jclass egldisplayClass;
-static jclass eglcontextClass;
 static jclass eglsurfaceClass;
-static jclass eglconfigClass;
+static jclass eglsyncClass;
 
 static jmethodID egldisplayGetHandleID;
-static jmethodID eglcontextGetHandleID;
 static jmethodID eglsurfaceGetHandleID;
-static jmethodID eglconfigGetHandleID;
-
-static jmethodID egldisplayConstructor;
-static jmethodID eglcontextConstructor;
-static jmethodID eglsurfaceConstructor;
-static jmethodID eglconfigConstructor;
-
-static jobject eglNoContextObject;
-static jobject eglNoDisplayObject;
-static jobject eglNoSurfaceObject;
-
-
+static jmethodID eglsyncGetHandleID;
 
 /* Cache method IDs each time the class is loaded. */
 
@@ -64,37 +51,14 @@
 {
     jclass egldisplayClassLocal = _env->FindClass("android/opengl/EGLDisplay");
     egldisplayClass = (jclass) _env->NewGlobalRef(egldisplayClassLocal);
-    jclass eglcontextClassLocal = _env->FindClass("android/opengl/EGLContext");
-    eglcontextClass = (jclass) _env->NewGlobalRef(eglcontextClassLocal);
     jclass eglsurfaceClassLocal = _env->FindClass("android/opengl/EGLSurface");
     eglsurfaceClass = (jclass) _env->NewGlobalRef(eglsurfaceClassLocal);
-    jclass eglconfigClassLocal = _env->FindClass("android/opengl/EGLConfig");
-    eglconfigClass = (jclass) _env->NewGlobalRef(eglconfigClassLocal);
+    jclass eglsyncClassLocal = _env->FindClass("android/opengl/EGLSync");
+    eglsyncClass = (jclass)_env->NewGlobalRef(eglsyncClassLocal);
 
     egldisplayGetHandleID = _env->GetMethodID(egldisplayClass, "getNativeHandle", "()J");
-    eglcontextGetHandleID = _env->GetMethodID(eglcontextClass, "getNativeHandle", "()J");
     eglsurfaceGetHandleID = _env->GetMethodID(eglsurfaceClass, "getNativeHandle", "()J");
-    eglconfigGetHandleID = _env->GetMethodID(eglconfigClass, "getNativeHandle", "()J");
-
-
-    egldisplayConstructor = _env->GetMethodID(egldisplayClass, "<init>", "(J)V");
-    eglcontextConstructor = _env->GetMethodID(eglcontextClass, "<init>", "(J)V");
-    eglsurfaceConstructor = _env->GetMethodID(eglsurfaceClass, "<init>", "(J)V");
-    eglconfigConstructor = _env->GetMethodID(eglconfigClass, "<init>", "(J)V");
-
-
-    jclass eglClass = _env->FindClass("android/opengl/EGL14");
-    jfieldID noContextFieldID = _env->GetStaticFieldID(eglClass, "EGL_NO_CONTEXT", "Landroid/opengl/EGLContext;");
-    jobject localeglNoContextObject = _env->GetStaticObjectField(eglClass, noContextFieldID);
-    eglNoContextObject = _env->NewGlobalRef(localeglNoContextObject);
-
-    jfieldID noDisplayFieldID = _env->GetStaticFieldID(eglClass, "EGL_NO_DISPLAY", "Landroid/opengl/EGLDisplay;");
-    jobject localeglNoDisplayObject = _env->GetStaticObjectField(eglClass, noDisplayFieldID);
-    eglNoDisplayObject = _env->NewGlobalRef(localeglNoDisplayObject);
-
-    jfieldID noSurfaceFieldID = _env->GetStaticFieldID(eglClass, "EGL_NO_SURFACE", "Landroid/opengl/EGLSurface;");
-    jobject localeglNoSurfaceObject = _env->GetStaticObjectField(eglClass, noSurfaceFieldID);
-    eglNoSurfaceObject = _env->NewGlobalRef(localeglNoSurfaceObject);
+    eglsyncGetHandleID = _env->GetMethodID(eglsyncClassLocal, "getNativeHandle", "()J");
 }
 
 static void *
@@ -108,26 +72,6 @@
     return reinterpret_cast<void*>(_env->CallLongMethod(obj, mid));
 }
 
-static jobject
-toEGLHandle(JNIEnv *_env, jclass cls, jmethodID con, void * handle) {
-    if (cls == eglcontextClass &&
-       (EGLContext)handle == EGL_NO_CONTEXT) {
-           return eglNoContextObject;
-    }
-
-    if (cls == egldisplayClass &&
-       (EGLDisplay)handle == EGL_NO_DISPLAY) {
-           return eglNoDisplayObject;
-    }
-
-    if (cls == eglsurfaceClass &&
-       (EGLSurface)handle == EGL_NO_SURFACE) {
-           return eglNoSurfaceObject;
-    }
-
-    return _env->NewObject(cls, con, reinterpret_cast<jlong>(handle));
-}
-
 // --------------------------------------------------------------------------
 /* EGLBoolean eglPresentationTimeANDROID ( EGLDisplay dpy, EGLSurface sur, EGLnsecsANDROID time ) */
 static jboolean
@@ -145,11 +89,21 @@
     return (jboolean)_returnValue;
 }
 
+static jint android_eglDupNativeFenceFDANDROID(JNIEnv *env, jobject, jobject dpy, jobject sync) {
+    EGLDisplay dpy_native = (EGLDisplay)fromEGLHandle(env, egldisplayGetHandleID, dpy);
+    EGLSync sync_native = (EGLSync)fromEGLHandle(env, eglsyncGetHandleID, sync);
+
+    return eglDupNativeFenceFDANDROID(dpy_native, sync_native);
+}
+
 static const char *classPathName = "android/opengl/EGLExt";
 
 static const JNINativeMethod methods[] = {
-{"_nativeClassInit", "()V", (void*)nativeClassInit },
-{"eglPresentationTimeANDROID", "(Landroid/opengl/EGLDisplay;Landroid/opengl/EGLSurface;J)Z", (void *) android_eglPresentationTimeANDROID },
+        {"_nativeClassInit", "()V", (void *)nativeClassInit},
+        {"eglPresentationTimeANDROID", "(Landroid/opengl/EGLDisplay;Landroid/opengl/EGLSurface;J)Z",
+         (void *)android_eglPresentationTimeANDROID},
+        {"eglDupNativeFenceFDANDROIDImpl", "(Landroid/opengl/EGLDisplay;Landroid/opengl/EGLSync;)I",
+         (void *)android_eglDupNativeFenceFDANDROID},
 };
 
 int register_android_opengl_jni_EGLExt(JNIEnv *_env)
diff --git a/core/jni/com_android_internal_os_Zygote.cpp b/core/jni/com_android_internal_os_Zygote.cpp
index 5efc4db..5971670 100644
--- a/core/jni/com_android_internal_os_Zygote.cpp
+++ b/core/jni/com_android_internal_os_Zygote.cpp
@@ -1626,7 +1626,7 @@
         }
         // Also prefetch standalone system server jars. The reason for doing this here is the same
         // as above.
-        env->CallStaticObjectMethod(gZygoteInitClass, gPrefetchStandaloneSystemServerJars);
+        env->CallStaticVoidMethod(gZygoteInitClass, gPrefetchStandaloneSystemServerJars);
         if (env->ExceptionCheck()) {
             env->ExceptionClear();
         }
diff --git a/core/proto/android/providers/settings/global.proto b/core/proto/android/providers/settings/global.proto
index f76b211..3c2a48a 100644
--- a/core/proto/android/providers/settings/global.proto
+++ b/core/proto/android/providers/settings/global.proto
@@ -574,6 +574,12 @@
 
     optional SettingProto lte_service_forced = 71 [ (android.privacy).dest = DEST_AUTOMATIC ];
     repeated SettingProto max_error_bytes = 151;
+
+    message ManagedDeviceProvisioning {
+        optional SettingProto managed_provisioning_defer_provisioning_to_role_holder = 1;
+    }
+    optional ManagedDeviceProvisioning managed_device_provisioning = 156;
+
     optional SettingProto mdc_initial_max_retry = 72 [ (android.privacy).dest = DEST_AUTOMATIC ];
 
     message Mhl {
@@ -1077,5 +1083,5 @@
 
     // Please insert fields in alphabetical order and group them into messages
     // if possible (to avoid reaching the method limit).
-    // Next tag = 156;
+    // Next tag = 157;
 }
diff --git a/core/res/res/values-television/config.xml b/core/res/res/values-television/config.xml
index 92bea34..009df4a 100644
--- a/core/res/res/values-television/config.xml
+++ b/core/res/res/values-television/config.xml
@@ -37,6 +37,14 @@
          Currently, this maps to Gravity.BOTTOM | Gravity.RIGHT -->
     <integer name="config_defaultPictureInPictureGravity">0x55</integer>
 
+    <!-- The maximum height of the expanded horizontal picture-in-picture window -->
+    <item name="config_pictureInPictureExpandedHorizontalHeight"
+          format="dimension" type="dimen">110dp</item>
+
+    <!-- The maximum width of the expanded vertical picture-in-picture window -->
+    <item name="config_pictureInPictureExpandedVerticalWidth"
+          format="dimension" type="dimen">110dp</item>
+
     <!-- Whether the device uses the default focus highlight when focus state isn't specified. -->
     <bool name="config_useDefaultFocusHighlight">false</bool>
 
diff --git a/core/res/res/values/config.xml b/core/res/res/values/config.xml
index 5e6d05a..fdb85a9 100644
--- a/core/res/res/values/config.xml
+++ b/core/res/res/values/config.xml
@@ -3663,6 +3663,9 @@
     <!-- Controls whether the navigation bar lets through taps. -->
     <bool name="config_navBarTapThrough">false</bool>
 
+    <!-- Controls whether the IME renders the back and IME switcher buttons or not. -->
+    <bool name="config_imeDrawsImeNavBar">false</bool>
+
     <!-- Controls whether the side edge gestures can always trigger the transient nav bar to
          show. -->
     <bool name="config_navBarAlwaysShowOnSideEdgeGesture">false</bool>
diff --git a/core/res/res/values/symbols.xml b/core/res/res/values/symbols.xml
index ff1c70a..db66777 100644
--- a/core/res/res/values/symbols.xml
+++ b/core/res/res/values/symbols.xml
@@ -415,6 +415,8 @@
   <java-symbol type="dimen" name="config_pictureInPictureMinAspectRatio" />
   <java-symbol type="dimen" name="config_pictureInPictureMaxAspectRatio" />
   <java-symbol type="integer" name="config_pictureInPictureMaxNumberOfActions" />
+  <java-symbol type="dimen" name="config_pictureInPictureExpandedHorizontalHeight" />
+  <java-symbol type="dimen" name="config_pictureInPictureExpandedVerticalWidth" />
   <java-symbol type="dimen" name="config_closeToSquareDisplayMaxAspectRatio" />
   <java-symbol type="integer" name="config_burnInProtectionMinHorizontalOffset" />
   <java-symbol type="integer" name="config_burnInProtectionMaxHorizontalOffset" />
@@ -2994,6 +2996,7 @@
   <java-symbol type="integer" name="config_navBarInteractionMode" />
   <java-symbol type="bool" name="config_navBarCanMove" />
   <java-symbol type="bool" name="config_navBarTapThrough" />
+  <java-symbol type="bool" name="config_imeDrawsImeNavBar" />
   <java-symbol type="bool" name="config_navBarAlwaysShowOnSideEdgeGesture" />
   <java-symbol type="bool" name="config_navBarNeedsScrim" />
   <java-symbol type="bool" name="config_allowSeamlessRotationDespiteNavBarMoving" />
diff --git a/core/tests/coretests/src/android/app/timedetector/TelephonyTimeSuggestionTest.java b/core/tests/coretests/src/android/app/timedetector/TelephonyTimeSuggestionTest.java
index 4b64dfc..cc75579 100644
--- a/core/tests/coretests/src/android/app/timedetector/TelephonyTimeSuggestionTest.java
+++ b/core/tests/coretests/src/android/app/timedetector/TelephonyTimeSuggestionTest.java
@@ -45,13 +45,13 @@
             assertEquals(two, one);
         }
 
-        builder1.setUtcTime(new TimestampedValue<>(1111L, 2222L));
+        builder1.setUnixEpochTime(new TimestampedValue<>(1111L, 2222L));
         {
             TelephonyTimeSuggestion one = builder1.build();
             assertEquals(one, one);
         }
 
-        builder2.setUtcTime(new TimestampedValue<>(1111L, 2222L));
+        builder2.setUnixEpochTime(new TimestampedValue<>(1111L, 2222L));
         {
             TelephonyTimeSuggestion one = builder1.build();
             TelephonyTimeSuggestion two = builder2.build();
@@ -61,7 +61,7 @@
 
         TelephonyTimeSuggestion.Builder builder3 =
                 new TelephonyTimeSuggestion.Builder(SLOT_INDEX + 1);
-        builder3.setUtcTime(new TimestampedValue<>(1111L, 2222L));
+        builder3.setUnixEpochTime(new TimestampedValue<>(1111L, 2222L));
         {
             TelephonyTimeSuggestion one = builder1.build();
             TelephonyTimeSuggestion three = builder3.build();
@@ -84,7 +84,7 @@
         TelephonyTimeSuggestion.Builder builder = new TelephonyTimeSuggestion.Builder(SLOT_INDEX);
         assertRoundTripParcelable(builder.build());
 
-        builder.setUtcTime(new TimestampedValue<>(1111L, 2222L));
+        builder.setUnixEpochTime(new TimestampedValue<>(1111L, 2222L));
         assertRoundTripParcelable(builder.build());
 
         // DebugInfo should also be stored (but is not checked by equals()
diff --git a/core/tests/coretests/src/android/widget/OWNERS b/core/tests/coretests/src/android/widget/OWNERS
new file mode 100644
index 0000000..5a9aed3
--- /dev/null
+++ b/core/tests/coretests/src/android/widget/OWNERS
@@ -0,0 +1,5 @@
+include /core/java/android/widget/OWNERS
+
+per-file *SuggestionsPopup* = file:/core/java/android/text/OWNERS
+
+per-file *FloatingToolbar*, *SelectionToolbar* = file:/core/java/android/view/textclassifier/OWNERS
\ No newline at end of file
diff --git a/core/tests/coretests/src/android/window/WindowOnBackInvokedDispatcherTest.java b/core/tests/coretests/src/android/window/WindowOnBackInvokedDispatcherTest.java
index a1a1e20..1f2bcfb 100644
--- a/core/tests/coretests/src/android/window/WindowOnBackInvokedDispatcherTest.java
+++ b/core/tests/coretests/src/android/window/WindowOnBackInvokedDispatcherTest.java
@@ -83,8 +83,10 @@
         mDispatcher.registerOnBackInvokedCallback(
                 mCallback2, OnBackInvokedDispatcher.PRIORITY_DEFAULT);
 
-        verify(mWindowSession, times(2))
-                .setOnBackInvokedCallback(Mockito.eq(mWindow), captor.capture());
+        verify(mWindowSession, times(2)).setOnBackInvokedCallback(
+                Mockito.eq(mWindow),
+                captor.capture(),
+                Mockito.eq(OnBackInvokedDispatcher.PRIORITY_DEFAULT));
         captor.getAllValues().get(0).onBackStarted();
         waitForIdle();
         verify(mCallback1).onBackStarted();
@@ -106,8 +108,9 @@
         mDispatcher.registerOnBackInvokedCallback(
                 mCallback2, OnBackInvokedDispatcher.PRIORITY_DEFAULT);
 
-        verify(mWindowSession)
-                .setOnBackInvokedCallback(Mockito.eq(mWindow), captor.capture());
+        verify(mWindowSession).setOnBackInvokedCallback(
+                Mockito.eq(mWindow), captor.capture(),
+                Mockito.eq(OnBackInvokedDispatcher.PRIORITY_OVERLAY));
         verifyNoMoreInteractions(mWindowSession);
         captor.getValue().onBackStarted();
         waitForIdle();
@@ -126,7 +129,10 @@
         verifyZeroInteractions(mWindowSession);
 
         mDispatcher.unregisterOnBackInvokedCallback(mCallback2);
-        verify(mWindowSession).setOnBackInvokedCallback(Mockito.eq(mWindow), isNull());
+        verify(mWindowSession).setOnBackInvokedCallback(
+                Mockito.eq(mWindow),
+                isNull(),
+                Mockito.eq(OnBackInvokedDispatcher.PRIORITY_DEFAULT));
     }
 
 
@@ -145,8 +151,10 @@
         reset(mWindowSession);
         mDispatcher.registerOnBackInvokedCallback(
                 mCallback2, OnBackInvokedDispatcher.PRIORITY_OVERLAY);
-        verify(mWindowSession)
-                .setOnBackInvokedCallback(Mockito.eq(mWindow), captor.capture());
+        verify(mWindowSession).setOnBackInvokedCallback(
+                Mockito.eq(mWindow),
+                captor.capture(),
+                Mockito.eq(OnBackInvokedDispatcher.PRIORITY_OVERLAY));
         captor.getValue().onBackStarted();
         waitForIdle();
         verify(mCallback2).onBackStarted();
diff --git a/data/etc/services.core.protolog.json b/data/etc/services.core.protolog.json
index f2a875c7..4aa0f07 100644
--- a/data/etc/services.core.protolog.json
+++ b/data/etc/services.core.protolog.json
@@ -1567,6 +1567,12 @@
       "group": "WM_DEBUG_STATES",
       "at": "com\/android\/server\/wm\/RootWindowContainer.java"
     },
+    "-432881038": {
+      "message": "startBackNavigation task=%s, topRunningActivity=%s, applicationBackCallback=%s, systemBackCallback=%s",
+      "level": "DEBUG",
+      "group": "WM_DEBUG_BACK_PREVIEW",
+      "at": "com\/android\/server\/wm\/BackNavigationController.java"
+    },
     "-415865166": {
       "message": "findFocusedWindow: Found new focus @ %s",
       "level": "VERBOSE",
@@ -3691,12 +3697,6 @@
       "group": "WM_DEBUG_REMOTE_ANIMATIONS",
       "at": "com\/android\/server\/wm\/RemoteAnimationController.java"
     },
-    "1898905572": {
-      "message": "startBackNavigation task=%s, topRunningActivity=%s, topWindow=%s backCallback=%s",
-      "level": "DEBUG",
-      "group": "WM_DEBUG_BACK_PREVIEW",
-      "at": "com\/android\/server\/wm\/BackNavigationController.java"
-    },
     "1903353011": {
       "message": "notifyAppStopped: %s",
       "level": "VERBOSE",
diff --git a/libs/WindowManager/Shell/res/drawable/pip_ic_collapse.xml b/libs/WindowManager/Shell/res/drawable/pip_ic_collapse.xml
new file mode 100644
index 0000000..63e2a40
--- /dev/null
+++ b/libs/WindowManager/Shell/res/drawable/pip_ic_collapse.xml
@@ -0,0 +1,25 @@
+<!--
+  ~ Copyright (C) 2022 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.
+  -->
+
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+        android:width="24dp"
+        android:height="24dp"
+        android:viewportWidth="24"
+        android:viewportHeight="24">
+    <path
+        android:fillColor="@color/tv_pip_menu_focus_border"
+        android:pathData="M12,12V4h2v4.6L20.6,2 22,3.4 15.4,10H20v2zM3.4,22L2,20.6 8.6,14H4v-2h8v8h-2v-4.6z"/>
+</vector>
diff --git a/libs/WindowManager/Shell/res/drawable/pip_ic_expand.xml b/libs/WindowManager/Shell/res/drawable/pip_ic_expand.xml
new file mode 100644
index 0000000..758b92c
--- /dev/null
+++ b/libs/WindowManager/Shell/res/drawable/pip_ic_expand.xml
@@ -0,0 +1,25 @@
+<!--
+  ~ Copyright (C) 2022 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.
+  -->
+
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+        android:width="24dp"
+        android:height="24dp"
+        android:viewportWidth="24"
+        android:viewportHeight="24">
+    <path
+        android:fillColor="@color/tv_pip_menu_focus_border"
+        android:pathData="M3,21v-8h2v4.6L17.6,5H13V3h8v8h-2V6.4L6.4,19H11v2z"/>
+</vector>
diff --git a/libs/WindowManager/Shell/res/layout/letterbox_education_dialog_layout.xml b/libs/WindowManager/Shell/res/layout/letterbox_education_dialog_layout.xml
index 5beaa87..9592376 100644
--- a/libs/WindowManager/Shell/res/layout/letterbox_education_dialog_layout.xml
+++ b/libs/WindowManager/Shell/res/layout/letterbox_education_dialog_layout.xml
@@ -22,81 +22,101 @@
 
     <!-- The background of the top-level layout acts as the background dim. -->
 
-    <!-- Setting the alpha of the dialog container to 0, since it shouldn't be visible until the
+    <!-- Vertical margin will be set dynamically since it depends on task bounds.
+         Setting the alpha of the dialog container to 0, since it shouldn't be visible until the
          enter animation starts. -->
-    <LinearLayout
+    <FrameLayout
         android:id="@+id/letterbox_education_dialog_container"
-        android:layout_width="wrap_content"
+        android:layout_width="0dp"
         android:layout_height="wrap_content"
-        android:layout_gravity="center"
-        android:gravity="center_horizontal"
-        android:orientation="vertical"
+        android:layout_marginHorizontal="@dimen/letterbox_education_dialog_margin"
         android:background="@drawable/letterbox_education_dialog_background"
-        android:padding="24dp"
-        android:alpha="0">
+        android:alpha="0"
+        app:layout_constraintTop_toTopOf="parent"
+        app:layout_constraintBottom_toBottomOf="parent"
+        app:layout_constraintStart_toStartOf="parent"
+        app:layout_constraintEnd_toEndOf="parent"
+        app:layout_constraintWidth_max="@dimen/letterbox_education_dialog_width"
+        app:layout_constrainedHeight="true">
 
-        <ImageView
-            android:id="@+id/letterbox_education_icon"
-            android:layout_width="@dimen/letterbox_education_dialog_icon_size"
-            android:layout_height="@dimen/letterbox_education_dialog_icon_size"
-            android:layout_marginBottom="12dp"
-            android:src="@drawable/letterbox_education_ic_letterboxed_app"/>
-
-        <TextView
-            android:id="@+id/letterbox_education_dialog_title"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:maxWidth="@dimen/letterbox_education_dialog_title_max_width"
-            android:lineSpacingExtra="4sp"
-            android:text="@string/letterbox_education_dialog_title"
-            android:textAlignment="center"
-            android:textColor="@color/compat_controls_text"
-            android:textSize="24sp"/>
-
-        <TextView
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:layout_marginTop="8dp"
-            android:maxWidth="@dimen/letterbox_education_dialog_title_max_width"
-            android:lineSpacingExtra="4sp"
-            android:text="@string/letterbox_education_dialog_subtext"
-            android:textAlignment="center"
-            android:textColor="@color/letterbox_education_text_secondary"
-            android:textSize="14sp"/>
-
-        <LinearLayout
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:gravity="top"
-            android:orientation="horizontal"
-            android:paddingTop="48dp">
-
-            <com.android.wm.shell.compatui.letterboxedu.LetterboxEduDialogActionLayout
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
-                app:icon="@drawable/letterbox_education_ic_screen_rotation"
-                app:text="@string/letterbox_education_screen_rotation_text"/>
-
-            <com.android.wm.shell.compatui.letterboxedu.LetterboxEduDialogActionLayout
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
-                android:layout_marginStart="@dimen/letterbox_education_dialog_space_between_actions"
-                app:icon="@drawable/letterbox_education_ic_reposition"
-                app:text="@string/letterbox_education_reposition_text"/>
-
-        </LinearLayout>
-
-        <Button
-            android:id="@+id/letterbox_education_dialog_dismiss_button"
+        <!-- The ScrollView should only wrap the content of the dialog, otherwise the background
+             corner radius will be cut off when scrolling to the top/bottom. -->
+        <ScrollView
             android:layout_width="match_parent"
-            android:layout_height="56dp"
-            android:layout_marginTop="48dp"
-            android:background="@drawable/letterbox_education_dismiss_button_background_ripple"
-            android:text="@string/letterbox_education_got_it"
-            android:textColor="@android:color/system_neutral1_900"
-            android:textAlignment="center"
-            android:contentDescription="@string/letterbox_education_got_it"/>
+            android:layout_height="wrap_content">
 
-    </LinearLayout>
+            <LinearLayout
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:gravity="center_horizontal"
+                android:orientation="vertical"
+                android:padding="24dp">
+
+                <ImageView
+                    android:layout_width="@dimen/letterbox_education_dialog_icon_size"
+                    android:layout_height="@dimen/letterbox_education_dialog_icon_size"
+                    android:layout_marginBottom="12dp"
+                    android:src="@drawable/letterbox_education_ic_letterboxed_app"/>
+
+                <TextView
+                    android:id="@+id/letterbox_education_dialog_title"
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:lineSpacingExtra="4sp"
+                    android:text="@string/letterbox_education_dialog_title"
+                    android:textAlignment="center"
+                    android:textColor="@color/compat_controls_text"
+                    android:textSize="24sp"/>
+
+                <TextView
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:layout_marginTop="8dp"
+                    android:lineSpacingExtra="4sp"
+                    android:text="@string/letterbox_education_dialog_subtext"
+                    android:textAlignment="center"
+                    android:textColor="@color/letterbox_education_text_secondary"
+                    android:textSize="14sp"/>
+
+                <LinearLayout
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:gravity="top"
+                    android:orientation="horizontal"
+                    android:paddingTop="48dp">
+
+                    <com.android.wm.shell.compatui.letterboxedu.LetterboxEduDialogActionLayout
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        app:icon="@drawable/letterbox_education_ic_screen_rotation"
+                        app:text="@string/letterbox_education_screen_rotation_text"/>
+
+                    <com.android.wm.shell.compatui.letterboxedu.LetterboxEduDialogActionLayout
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:layout_marginStart=
+                            "@dimen/letterbox_education_dialog_space_between_actions"
+                        app:icon="@drawable/letterbox_education_ic_reposition"
+                        app:text="@string/letterbox_education_reposition_text"/>
+
+                </LinearLayout>
+
+                <Button
+                    android:id="@+id/letterbox_education_dialog_dismiss_button"
+                    android:layout_width="match_parent"
+                    android:layout_height="56dp"
+                    android:layout_marginTop="48dp"
+                    android:background=
+                        "@drawable/letterbox_education_dismiss_button_background_ripple"
+                    android:text="@string/letterbox_education_got_it"
+                    android:textColor="@android:color/system_neutral1_900"
+                    android:textAlignment="center"
+                    android:contentDescription="@string/letterbox_education_got_it"/>
+
+            </LinearLayout>
+
+        </ScrollView>
+
+    </FrameLayout>
 
 </com.android.wm.shell.compatui.letterboxedu.LetterboxEduDialogLayout>
diff --git a/libs/WindowManager/Shell/res/layout/tv_pip_menu.xml b/libs/WindowManager/Shell/res/layout/tv_pip_menu.xml
index b56b114..b826d03 100644
--- a/libs/WindowManager/Shell/res/layout/tv_pip_menu.xml
+++ b/libs/WindowManager/Shell/res/layout/tv_pip_menu.xml
@@ -20,25 +20,36 @@
              android:layout_width="match_parent"
              android:layout_height="match_parent">
 
-    <HorizontalScrollView
+    <ScrollView
+        android:id="@+id/tv_pip_menu_scroll"
         android:layout_width="match_parent"
         android:layout_height="match_parent"
-        android:layout_centerHorizontal="true"
-        android:gravity="center"
+        android:gravity="center_horizontal"
         android:scrollbars="none"
-        android:layout_centerInParent="true"
+        android:layout_margin="@dimen/pip_menu_outer_space"
+        android:visibility="gone"/>
+
+    <HorizontalScrollView
+        android:id="@+id/tv_pip_menu_horizontal_scroll"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:gravity="center_vertical"
+        android:scrollbars="none"
         android:layout_margin="@dimen/pip_menu_outer_space">
 
         <LinearLayout
             android:id="@+id/tv_pip_menu_action_buttons"
             android:layout_width="wrap_content"
             android:layout_height="match_parent"
-            android:paddingStart="@dimen/pip_menu_button_wrapper_margin"
-            android:paddingEnd="@dimen/pip_menu_button_wrapper_margin"
             android:gravity="center"
+            android:layout_gravity="center"
             android:orientation="horizontal"
             android:alpha="0">
 
+            <Space
+                android:layout_width="@dimen/pip_menu_button_wrapper_margin"
+                android:layout_height="@dimen/pip_menu_button_wrapper_margin"/>
+
             <com.android.wm.shell.pip.tv.TvPipMenuActionButton
                 android:id="@+id/tv_pip_menu_fullscreen_button"
                 android:layout_width="wrap_content"
@@ -54,6 +65,14 @@
                 android:text="@String/pip_move" />
 
             <com.android.wm.shell.pip.tv.TvPipMenuActionButton
+                android:id="@+id/tv_pip_menu_expand_button"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:src="@drawable/pip_ic_collapse"
+                android:visibility="gone"
+                android:text="@string/pip_collapse" />
+
+            <com.android.wm.shell.pip.tv.TvPipMenuActionButton
                 android:id="@+id/tv_pip_menu_close_button"
                 android:layout_width="wrap_content"
                 android:layout_height="wrap_content"
@@ -62,6 +81,10 @@
 
             <!-- More TvPipMenuActionButtons may be added here at runtime. -->
 
+            <Space
+                android:layout_width="@dimen/pip_menu_button_wrapper_margin"
+                android:layout_height="@dimen/pip_menu_button_wrapper_margin"/>
+
         </LinearLayout>
     </HorizontalScrollView>
 
diff --git a/libs/WindowManager/Shell/res/layout/tv_pip_menu_action_button.xml b/libs/WindowManager/Shell/res/layout/tv_pip_menu_action_button.xml
index f9d0968..a86a145 100644
--- a/libs/WindowManager/Shell/res/layout/tv_pip_menu_action_button.xml
+++ b/libs/WindowManager/Shell/res/layout/tv_pip_menu_action_button.xml
@@ -20,8 +20,7 @@
         android:id="@+id/button"
         android:layout_width="@dimen/pip_menu_button_size"
         android:layout_height="@dimen/pip_menu_button_size"
-        android:layout_marginStart="@dimen/pip_menu_button_margin"
-        android:layout_marginEnd="@dimen/pip_menu_button_margin"
+        android:layout_margin="@dimen/pip_menu_button_margin"
         android:background="@drawable/tv_pip_button_bg"
         android:focusable="true">
 
diff --git a/libs/WindowManager/Shell/res/values/dimen.xml b/libs/WindowManager/Shell/res/values/dimen.xml
index 7a398c5..8a8231d 100644
--- a/libs/WindowManager/Shell/res/values/dimen.xml
+++ b/libs/WindowManager/Shell/res/values/dimen.xml
@@ -225,15 +225,18 @@
     <!-- The size of an icon in the letterbox education dialog. -->
     <dimen name="letterbox_education_dialog_icon_size">48dp</dimen>
 
+    <!-- The fixed width of the dialog if there is enough space in the parent. -->
+    <dimen name="letterbox_education_dialog_width">472dp</dimen>
+
+    <!-- The margin between the dialog container and its parent. -->
+    <dimen name="letterbox_education_dialog_margin">16dp</dimen>
+
     <!-- The width of each action container in the letterbox education dialog -->
     <dimen name="letterbox_education_dialog_action_width">140dp</dimen>
 
     <!-- The space between two actions in the letterbox education dialog -->
     <dimen name="letterbox_education_dialog_space_between_actions">24dp</dimen>
 
-    <!-- The maximum width of the title and subtitle in the letterbox education dialog. -->
-    <dimen name="letterbox_education_dialog_title_max_width">444dp</dimen>
-
     <!-- The width of the brand image on staring surface. -->
     <dimen name="starting_surface_brand_image_width">200dp</dimen>
 
diff --git a/libs/WindowManager/Shell/res/values/strings_tv.xml b/libs/WindowManager/Shell/res/values/strings_tv.xml
index 730d808..c7b8a13 100644
--- a/libs/WindowManager/Shell/res/values/strings_tv.xml
+++ b/libs/WindowManager/Shell/res/values/strings_tv.xml
@@ -33,5 +33,11 @@
 
     <!-- Button to move picture-in-picture (PIP) via DPAD in the PIP menu [CHAR LIMIT=30] -->
     <string name="pip_move">Move PIP</string>
+
+    <!-- Button to expand the picture-in-picture (PIP) window [CHAR LIMIT=30] -->
+    <string name="pip_expand">Expand PIP</string>
+
+    <!-- Button to collapse/shrink the picture-in-picture (PIP) window [CHAR LIMIT=30] -->
+    <string name="pip_collapse">Collapse PIP</string>
 </resources>
 
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/back/BackAnimation.java b/libs/WindowManager/Shell/src/com/android/wm/shell/back/BackAnimation.java
index 4c505f6..7cf3597 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/back/BackAnimation.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/back/BackAnimation.java
@@ -43,4 +43,11 @@
     default IBackAnimation createExternalInterface() {
         return null;
     }
+
+    /**
+     * Sets the threshold values that defining edge swipe behavior.
+     * @param triggerThreshold the min threshold to trigger back.
+     * @param progressThreshold the max threshold to keep progressing back animation.
+     */
+    void setSwipeThresholds(float triggerThreshold, float progressThreshold);
 }
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/back/BackAnimationController.java b/libs/WindowManager/Shell/src/com/android/wm/shell/back/BackAnimationController.java
index 32ac43d..8d5fdfb 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/back/BackAnimationController.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/back/BackAnimationController.java
@@ -35,6 +35,7 @@
 import android.os.SystemProperties;
 import android.util.Log;
 import android.view.MotionEvent;
+import android.view.RemoteAnimationTarget;
 import android.view.SurfaceControl;
 import android.window.BackEvent;
 import android.window.BackNavigationInfo;
@@ -54,6 +55,10 @@
     private static final String BACK_PREDICTABILITY_PROP = "persist.debug.back_predictability";
     public static final boolean IS_ENABLED = SystemProperties
             .getInt(BACK_PREDICTABILITY_PROP, 0) > 0;
+    private static final String BACK_PREDICTABILITY_PROGRESS_THRESHOLD_PROP =
+            "persist.debug.back_predictability_progress_threshold";
+    private static final int PROGRESS_THRESHOLD = SystemProperties
+            .getInt(BACK_PREDICTABILITY_PROGRESS_THRESHOLD_PROP, -1);
     private static final String TAG = "BackAnimationController";
 
     /**
@@ -80,6 +85,8 @@
     private final Context mContext;
     @Nullable
     private IOnBackInvokedCallback mBackToLauncherCallback;
+    private float mTriggerThreshold;
+    private float mProgressThreshold;
 
     public BackAnimationController(
             @ShellMainThread ShellExecutor shellExecutor,
@@ -136,6 +143,12 @@
         public void setTriggerBack(boolean triggerBack) {
             mShellExecutor.execute(() -> BackAnimationController.this.setTriggerBack(triggerBack));
         }
+
+        @Override
+        public void setSwipeThresholds(float triggerThreshold, float progressThreshold) {
+            mShellExecutor.execute(() -> BackAnimationController.this.setSwipeThresholds(
+                    triggerThreshold, progressThreshold));
+        }
     }
 
     private static class IBackAnimationImpl extends IBackAnimation.Stub {
@@ -168,7 +181,8 @@
         }
     }
 
-    private void setBackToLauncherCallback(IOnBackInvokedCallback callback) {
+    @VisibleForTesting
+    void setBackToLauncherCallback(IOnBackInvokedCallback callback) {
         mBackToLauncherCallback = callback;
     }
 
@@ -177,6 +191,14 @@
     }
 
     private void onBackToLauncherAnimationFinished() {
+        if (mBackNavigationInfo != null) {
+            IOnBackInvokedCallback callback = mBackNavigationInfo.getOnBackInvokedCallback();
+            if (mTriggerBack) {
+                dispatchOnBackInvoked(callback);
+            } else {
+                dispatchOnBackCancelled(callback);
+            }
+        }
         finishAnimation();
     }
 
@@ -218,19 +240,27 @@
     }
 
     private void onBackNavigationInfoReceived(@Nullable BackNavigationInfo backNavigationInfo) {
-        if (backNavigationInfo == null
-                || backNavigationInfo.getDepartingWindowContainer() == null) {
+        ProtoLog.d(WM_SHELL_BACK_PREVIEW, "Received backNavigationInfo:%s", backNavigationInfo);
+        if (backNavigationInfo == null) {
             Log.e(TAG, "Received BackNavigationInfo is null.");
             finishAnimation();
             return;
         }
-
-        HardwareBuffer hardwareBuffer = backNavigationInfo.getScreenshotHardwareBuffer();
-        if (hardwareBuffer != null) {
-            displayTargetScreenshot(hardwareBuffer,
-                    backNavigationInfo.getTaskWindowConfiguration());
+        int backType = backNavigationInfo.getType();
+        IOnBackInvokedCallback targetCallback = null;
+        if (backType == BackNavigationInfo.TYPE_CROSS_ACTIVITY) {
+            HardwareBuffer hardwareBuffer = backNavigationInfo.getScreenshotHardwareBuffer();
+            if (hardwareBuffer != null) {
+                displayTargetScreenshot(hardwareBuffer,
+                        backNavigationInfo.getTaskWindowConfiguration());
+            }
+            mTransaction.apply();
+        } else if (backType == BackNavigationInfo.TYPE_RETURN_TO_HOME) {
+            targetCallback = mBackToLauncherCallback;
+        } else if (backType == BackNavigationInfo.TYPE_CALLBACK) {
+            targetCallback = mBackNavigationInfo.getOnBackInvokedCallback();
         }
-        mTransaction.apply();
+        dispatchOnBackStarted(targetCallback);
     }
 
     /**
@@ -272,23 +302,103 @@
         int deltaX = Math.round(event.getX() - mInitTouchLocation.x);
         int deltaY = Math.round(event.getY() - mInitTouchLocation.y);
         ProtoLog.v(WM_SHELL_BACK_PREVIEW, "Runner move: %d %d", deltaX, deltaY);
-        SurfaceControl topWindowLeash = mBackNavigationInfo.getDepartingWindowContainer();
-        mTransaction.setPosition(topWindowLeash, deltaX, deltaY);
-        mTouchEventDelta.set(deltaX, deltaY);
-        mTransaction.apply();
+        float progressThreshold = PROGRESS_THRESHOLD >= 0 ? PROGRESS_THRESHOLD : mProgressThreshold;
+        float progress = Math.min(Math.max(Math.abs(deltaX) / progressThreshold, 0), 1);
+        int backType = mBackNavigationInfo.getType();
+        RemoteAnimationTarget animationTarget = mBackNavigationInfo.getDepartingAnimationTarget();
+
+        BackEvent backEvent = new BackEvent(0, 0, progress, swipeEdge, animationTarget);
+        IOnBackInvokedCallback targetCallback = null;
+        if (backType == BackNavigationInfo.TYPE_RETURN_TO_HOME) {
+            targetCallback = mBackToLauncherCallback;
+        } else if (backType == BackNavigationInfo.TYPE_CROSS_TASK
+                || backType == BackNavigationInfo.TYPE_CROSS_ACTIVITY) {
+            if (animationTarget != null) {
+                mTransaction.setPosition(animationTarget.leash, deltaX, deltaY);
+                mTouchEventDelta.set(deltaX, deltaY);
+                mTransaction.apply();
+            }
+        } else if (backType == BackNavigationInfo.TYPE_CALLBACK) {
+            targetCallback = mBackNavigationInfo.getOnBackInvokedCallback();
+        }
+        dispatchOnBackProgressed(targetCallback, backEvent);
     }
 
     private void onGestureFinished() {
         ProtoLog.d(WM_SHELL_BACK_PREVIEW, "onGestureFinished() mTriggerBack == %s", mTriggerBack);
-        if (mBackGestureStarted) {
+        if (!mBackGestureStarted || mBackNavigationInfo == null) {
+            return;
+        }
+        int backType = mBackNavigationInfo.getType();
+        boolean shouldDispatchToLauncher = backType == BackNavigationInfo.TYPE_RETURN_TO_HOME
+                && mBackToLauncherCallback != null;
+        IOnBackInvokedCallback targetCallback = shouldDispatchToLauncher
+                ? mBackToLauncherCallback
+                : mBackNavigationInfo.getOnBackInvokedCallback();
+        if (mTriggerBack) {
+            dispatchOnBackInvoked(targetCallback);
+        } else {
+            dispatchOnBackCancelled(targetCallback);
+        }
+        if (backType == BackNavigationInfo.TYPE_CALLBACK) {
+            finishAnimation();
+        } else if (backType == BackNavigationInfo.TYPE_RETURN_TO_HOME
+                && !shouldDispatchToLauncher) {
+            // Launcher callback missing. Simply finish animation.
+            finishAnimation();
+        } else if (backType == BackNavigationInfo.TYPE_CROSS_ACTIVITY
+                || backType == BackNavigationInfo.TYPE_CROSS_TASK) {
             if (mTriggerBack) {
                 prepareTransition();
             } else {
                 resetPositionAnimated();
             }
         }
-        mBackGestureStarted = false;
-        mTriggerBack = false;
+    }
+
+    private static void dispatchOnBackStarted(IOnBackInvokedCallback callback) {
+        if (callback == null) {
+            return;
+        }
+        try {
+            callback.onBackStarted();
+        } catch (RemoteException e) {
+            Log.e(TAG, "dispatchOnBackStarted error: ", e);
+        }
+    }
+
+    private static void dispatchOnBackInvoked(IOnBackInvokedCallback callback) {
+        if (callback == null) {
+            return;
+        }
+        try {
+            callback.onBackInvoked();
+        } catch (RemoteException e) {
+            Log.e(TAG, "dispatchOnBackInvoked error: ", e);
+        }
+    }
+
+    private static void dispatchOnBackCancelled(IOnBackInvokedCallback callback) {
+        if (callback == null) {
+            return;
+        }
+        try {
+            callback.onBackCancelled();
+        } catch (RemoteException e) {
+            Log.e(TAG, "dispatchOnBackCancelled error: ", e);
+        }
+    }
+
+    private static void dispatchOnBackProgressed(
+            IOnBackInvokedCallback callback, BackEvent backEvent) {
+        if (callback == null) {
+            return;
+        }
+        try {
+            callback.onBackProgressed(backEvent);
+        } catch (RemoteException e) {
+            Log.e(TAG, "dispatchOnBackProgressed error: ", e);
+        }
     }
 
     /**
@@ -309,9 +419,12 @@
             float fraction = animation1.getAnimatedFraction();
             int deltaX = Math.round(mTouchEventDelta.x - (mTouchEventDelta.x * fraction));
             int deltaY = Math.round(mTouchEventDelta.y - (mTouchEventDelta.y * fraction));
-            mTransaction.setPosition(mBackNavigationInfo.getDepartingWindowContainer(),
-                    deltaX, deltaY);
-            mTransaction.apply();
+            RemoteAnimationTarget animationTarget =
+                    mBackNavigationInfo.getDepartingAnimationTarget();
+            if (animationTarget != null) {
+                mTransaction.setPosition(animationTarget.leash, deltaX, deltaY);
+                mTransaction.apply();
+            }
         });
 
         animation.addListener(new AnimatorListenerAdapter() {
@@ -337,25 +450,34 @@
         mTriggerBack = triggerBack;
     }
 
+    private void setSwipeThresholds(float triggerThreshold, float progressThreshold) {
+        mProgressThreshold = progressThreshold;
+        mTriggerThreshold = triggerThreshold;
+    }
+
     private void finishAnimation() {
         ProtoLog.d(WM_SHELL_BACK_PREVIEW, "BackAnimationController: finishAnimation()");
         mBackGestureStarted = false;
         mTouchEventDelta.set(0, 0);
         mInitTouchLocation.set(0, 0);
         BackNavigationInfo backNavigationInfo = mBackNavigationInfo;
+        boolean triggerBack = mTriggerBack;
         mBackNavigationInfo = null;
+        mTriggerBack = false;
         if (backNavigationInfo == null) {
             return;
         }
-        SurfaceControl topWindowLeash = backNavigationInfo.getDepartingWindowContainer();
-        if (topWindowLeash != null && topWindowLeash.isValid()) {
-            mTransaction.remove(topWindowLeash);
+        RemoteAnimationTarget animationTarget = backNavigationInfo.getDepartingAnimationTarget();
+        if (animationTarget != null && mTriggerBack) {
+            if (animationTarget.leash != null && animationTarget.leash.isValid()) {
+                mTransaction.remove(animationTarget.leash);
+            }
         }
         SurfaceControl screenshotSurface = backNavigationInfo.getScreenshotSurface();
         if (screenshotSurface != null && screenshotSurface.isValid()) {
             mTransaction.remove(screenshotSurface);
         }
         mTransaction.apply();
-        backNavigationInfo.onBackNavigationFinished();
+        backNavigationInfo.onBackNavigationFinished(triggerBack);
     }
 }
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/compatui/CompatUIWindowManager.java b/libs/WindowManager/Shell/src/com/android/wm/shell/compatui/CompatUIWindowManager.java
index 3a37b5e..7c6780a 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/compatui/CompatUIWindowManager.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/compatui/CompatUIWindowManager.java
@@ -189,15 +189,18 @@
     }
 
     @Override
-    protected void updateSurfacePosition(Rect taskBounds, Rect stableBounds) {
+    @VisibleForTesting
+    public void updateSurfacePosition() {
         if (mLayout == null) {
             return;
         }
         // Position of the button in the container coordinate.
+        final Rect taskBounds = getTaskBounds();
+        final Rect taskStableBounds = getTaskStableBounds();
         final int positionX = getLayoutDirection() == View.LAYOUT_DIRECTION_RTL
-                ? stableBounds.left - taskBounds.left
-                : stableBounds.right - taskBounds.left - mLayout.getMeasuredWidth();
-        final int positionY = stableBounds.bottom - taskBounds.top
+                ? taskStableBounds.left - taskBounds.left
+                : taskStableBounds.right - taskBounds.left - mLayout.getMeasuredWidth();
+        final int positionY = taskStableBounds.bottom - taskBounds.top
                 - mLayout.getMeasuredHeight();
 
         updateSurfacePosition(positionX, positionY);
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/compatui/CompatUIWindowManagerAbstract.java b/libs/WindowManager/Shell/src/com/android/wm/shell/compatui/CompatUIWindowManagerAbstract.java
index 7014fcc..5679bc4 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/compatui/CompatUIWindowManagerAbstract.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/compatui/CompatUIWindowManagerAbstract.java
@@ -51,15 +51,15 @@
  */
 public abstract class CompatUIWindowManagerAbstract extends WindowlessWindowManager {
 
-    protected final SyncTransactionQueue mSyncQueue;
-    protected final int mDisplayId;
     protected final int mTaskId;
-
     protected Context mContext;
-    protected Configuration mTaskConfig;
-    protected ShellTaskOrganizer.TaskListener mTaskListener;
-    protected DisplayLayout mDisplayLayout;
-    protected final Rect mStableBounds;
+
+    private final SyncTransactionQueue mSyncQueue;
+    private final int mDisplayId;
+    private Configuration mTaskConfig;
+    private ShellTaskOrganizer.TaskListener mTaskListener;
+    private DisplayLayout mDisplayLayout;
+    private final Rect mStableBounds;
 
     /**
      * Utility class for adding and releasing a View hierarchy for this {@link
@@ -211,7 +211,7 @@
         boolean layoutDirectionUpdated =
                 mTaskConfig.getLayoutDirection() != prevTaskConfig.getLayoutDirection();
         if (boundsUpdated || layoutDirectionUpdated) {
-            updateSurface();
+            onParentBoundsChanged();
         }
 
         if (layout != null && layoutDirectionUpdated) {
@@ -248,8 +248,9 @@
         displayLayout.getStableBounds(curStableBounds);
         mDisplayLayout = displayLayout;
         if (!prevStableBounds.equals(curStableBounds)) {
-            updateSurface();
+            // mStableBounds should be updated before we call onParentBoundsChanged.
             mStableBounds.set(curStableBounds);
+            onParentBoundsChanged();
         }
     }
 
@@ -289,51 +290,39 @@
     }
 
     /** Re-layouts the view host and updates the surface position. */
-    public void relayout() {
+    void relayout() {
+        relayout(getWindowLayoutParams());
+    }
+
+    protected void relayout(WindowManager.LayoutParams windowLayoutParams) {
         if (mViewHost == null) {
             return;
         }
-        mViewHost.relayout(getWindowLayoutParams());
+        mViewHost.relayout(windowLayoutParams);
         updateSurfacePosition();
     }
 
     /**
-     * Updates the surface following a change in the task bounds, display layout stable bounds,
-     * or the layout direction.
+     * Called following a change in the task bounds, display layout stable bounds, or the layout
+     * direction.
      */
-    protected void updateSurface() {
+    protected void onParentBoundsChanged() {
         updateSurfacePosition();
     }
 
     /**
-     * Updates the position of the surface with respect to the task bounds and display layout
-     * stable bounds.
+     * Updates the position of the surface with respect to the parent bounds.
      */
-    @VisibleForTesting
-    void updateSurfacePosition() {
-        if (mLeash == null) {
-            return;
-        }
-        // Use stable bounds to prevent controls from overlapping with system bars.
-        final Rect taskBounds = mTaskConfig.windowConfiguration.getBounds();
-        final Rect stableBounds = new Rect();
-        mDisplayLayout.getStableBounds(stableBounds);
-        stableBounds.intersect(taskBounds);
-
-        updateSurfacePosition(taskBounds, stableBounds);
-    }
-
-    /**
-     * Updates the position of the surface with respect to the given {@code taskBounds} and {@code
-     * stableBounds}.
-     */
-    protected abstract void updateSurfacePosition(Rect taskBounds, Rect stableBounds);
+    protected abstract void updateSurfacePosition();
 
     /**
      * Updates the position of the surface with respect to the given {@code positionX} and {@code
      * positionY}.
      */
     protected void updateSurfacePosition(int positionX, int positionY) {
+        if (mLeash == null) {
+            return;
+        }
         mSyncQueue.runInSync(t -> {
             if (mLeash == null || !mLeash.isValid()) {
                 Log.w(getTag(), "The leash has been released.");
@@ -347,6 +336,17 @@
         return mContext.getResources().getConfiguration().getLayoutDirection();
     }
 
+    protected Rect getTaskBounds() {
+        return mTaskConfig.windowConfiguration.getBounds();
+    }
+
+    /** Returns the intersection between the task bounds and the display layout stable bounds. */
+    protected Rect getTaskStableBounds() {
+        final Rect result = new Rect(mStableBounds);
+        result.intersect(getTaskBounds());
+        return result;
+    }
+
     @VisibleForTesting
     SurfaceControlViewHost createSurfaceViewHost() {
         return new SurfaceControlViewHost(mContext, mContext.getDisplay(), this);
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/compatui/letterboxedu/LetterboxEduAnimationController.java b/libs/WindowManager/Shell/src/com/android/wm/shell/compatui/letterboxedu/LetterboxEduAnimationController.java
index eff2602..3810eca 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/compatui/letterboxedu/LetterboxEduAnimationController.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/compatui/letterboxedu/LetterboxEduAnimationController.java
@@ -43,6 +43,8 @@
 class LetterboxEduAnimationController {
     private static final String TAG = "LetterboxEduAnimation";
 
+    private static final int ENTER_ANIM_START_DELAY_MILLIS = 500;
+
     private final TransitionAnimation mTransitionAnimation;
     private final String mPackageName;
     @AnyRes
@@ -87,6 +89,9 @@
                 mDialogAnimation.getDuration());
         mBackgroundDimAnimator.addListener(getDimAnimatorListener());
 
+        mDialogAnimation.setStartOffset(ENTER_ANIM_START_DELAY_MILLIS);
+        mBackgroundDimAnimator.setStartDelay(ENTER_ANIM_START_DELAY_MILLIS);
+
         dialogContainer.startAnimation(mDialogAnimation);
         mBackgroundDimAnimator.start();
     }
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/compatui/letterboxedu/LetterboxEduDialogLayout.java b/libs/WindowManager/Shell/src/com/android/wm/shell/compatui/letterboxedu/LetterboxEduDialogLayout.java
index bc1d19b..bb6fe98 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/compatui/letterboxedu/LetterboxEduDialogLayout.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/compatui/letterboxedu/LetterboxEduDialogLayout.java
@@ -20,7 +20,8 @@
 import android.graphics.drawable.Drawable;
 import android.util.AttributeSet;
 import android.view.View;
-import android.widget.FrameLayout;
+
+import androidx.constraintlayout.widget.ConstraintLayout;
 
 import com.android.wm.shell.R;
 
@@ -31,7 +32,7 @@
  * background dim which dismisses the dialog when clicked.
  */
 // TODO(b/215316431): Add tests
-class LetterboxEduDialogLayout extends FrameLayout {
+class LetterboxEduDialogLayout extends ConstraintLayout {
 
     // The alpha of a background is a number between 0 (fully transparent) to 255 (fully opaque).
     // 204 is simply 255 * 0.8.
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/compatui/letterboxedu/LetterboxEduWindowManager.java b/libs/WindowManager/Shell/src/com/android/wm/shell/compatui/letterboxedu/LetterboxEduWindowManager.java
index 074610b..bb4d427 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/compatui/letterboxedu/LetterboxEduWindowManager.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/compatui/letterboxedu/LetterboxEduWindowManager.java
@@ -26,6 +26,7 @@
 import android.provider.Settings;
 import android.view.LayoutInflater;
 import android.view.View;
+import android.view.ViewGroup.MarginLayoutParams;
 import android.view.WindowManager;
 
 import com.android.wm.shell.R;
@@ -109,6 +110,7 @@
     protected View createLayout() {
         setSeenLetterboxEducation();
         mLayout = inflateLayout();
+        updateDialogMargins();
 
         mAnimationController.startEnterAnimation(mLayout, /* endCallback= */
                 this::setDismissOnClickListener);
@@ -116,6 +118,22 @@
         return mLayout;
     }
 
+    private void updateDialogMargins() {
+        if (mLayout == null) {
+            return;
+        }
+        final View dialogContainer = mLayout.getDialogContainer();
+        MarginLayoutParams marginParams = (MarginLayoutParams) dialogContainer.getLayoutParams();
+        int verticalMargin = (int) mContext.getResources().getDimension(
+                R.dimen.letterbox_education_dialog_margin);
+
+        final Rect taskBounds = getTaskBounds();
+        final Rect taskStableBounds = getTaskStableBounds();
+        marginParams.topMargin = taskStableBounds.top - taskBounds.top + verticalMargin;
+        marginParams.bottomMargin = taskBounds.bottom - taskStableBounds.bottom + verticalMargin;
+        dialogContainer.setLayoutParams(marginParams);
+    }
+
     private LetterboxEduDialogLayout inflateLayout() {
         return (LetterboxEduDialogLayout) LayoutInflater.from(mContext).inflate(
                 R.layout.letterbox_education_dialog_layout, null);
@@ -150,20 +168,26 @@
     }
 
     @Override
-    protected void updateSurface() {
-        // We need to relayout because the layout dimensions depend on the task bounds.
-        relayout();
+    protected void onParentBoundsChanged() {
+        if (mLayout == null) {
+            return;
+        }
+        // Both the layout dimensions and dialog margins depend on the parent bounds.
+        WindowManager.LayoutParams windowLayoutParams = getWindowLayoutParams();
+        mLayout.setLayoutParams(windowLayoutParams);
+        updateDialogMargins();
+        relayout(windowLayoutParams);
     }
 
     @Override
-    protected void updateSurfacePosition(Rect taskBounds, Rect stableBounds) {
+    protected void updateSurfacePosition() {
         // Nothing to do, since the position of the surface is fixed to the top left corner (0,0)
         // of the task (parent surface), which is the default position of a surface.
     }
 
     @Override
     protected WindowManager.LayoutParams getWindowLayoutParams() {
-        final Rect taskBounds = mTaskConfig.windowConfiguration.getBounds();
+        final Rect taskBounds = getTaskBounds();
         return getWindowLayoutParams(/* width= */ taskBounds.width(), /* height= */
                 taskBounds.height());
     }
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/dagger/TvPipModule.java b/libs/WindowManager/Shell/src/com/android/wm/shell/dagger/TvPipModule.java
index f91d7e2..4f16042 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/dagger/TvPipModule.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/dagger/TvPipModule.java
@@ -30,7 +30,6 @@
 import com.android.wm.shell.legacysplitscreen.LegacySplitScreenController;
 import com.android.wm.shell.pip.Pip;
 import com.android.wm.shell.pip.PipAnimationController;
-import com.android.wm.shell.pip.PipBoundsState;
 import com.android.wm.shell.pip.PipMediaController;
 import com.android.wm.shell.pip.PipSnapAlgorithm;
 import com.android.wm.shell.pip.PipSurfaceTransactionHelper;
@@ -39,6 +38,7 @@
 import com.android.wm.shell.pip.PipTransitionState;
 import com.android.wm.shell.pip.PipUiEventLogger;
 import com.android.wm.shell.pip.tv.TvPipBoundsAlgorithm;
+import com.android.wm.shell.pip.tv.TvPipBoundsState;
 import com.android.wm.shell.pip.tv.TvPipController;
 import com.android.wm.shell.pip.tv.TvPipMenuController;
 import com.android.wm.shell.pip.tv.TvPipNotificationController;
@@ -60,7 +60,7 @@
     @Provides
     static Optional<Pip> providePip(
             Context context,
-            PipBoundsState pipBoundsState,
+            TvPipBoundsState tvPipBoundsState,
             TvPipBoundsAlgorithm tvPipBoundsAlgorithm,
             PipTaskOrganizer pipTaskOrganizer,
             TvPipMenuController tvPipMenuController,
@@ -73,7 +73,7 @@
         return Optional.of(
                 TvPipController.create(
                         context,
-                        pipBoundsState,
+                        tvPipBoundsState,
                         tvPipBoundsAlgorithm,
                         pipTaskOrganizer,
                         pipTransitionController,
@@ -94,14 +94,14 @@
     @WMSingleton
     @Provides
     static TvPipBoundsAlgorithm provideTvPipBoundsAlgorithm(Context context,
-            PipBoundsState pipBoundsState, PipSnapAlgorithm pipSnapAlgorithm) {
-        return new TvPipBoundsAlgorithm(context, pipBoundsState, pipSnapAlgorithm);
+            TvPipBoundsState tvPipBoundsState, PipSnapAlgorithm pipSnapAlgorithm) {
+        return new TvPipBoundsAlgorithm(context, tvPipBoundsState, pipSnapAlgorithm);
     }
 
     @WMSingleton
     @Provides
-    static PipBoundsState providePipBoundsState(Context context) {
-        return new PipBoundsState(context);
+    static TvPipBoundsState provideTvPipBoundsState(Context context) {
+        return new TvPipBoundsState(context);
     }
 
     // Handler needed for loadDrawableAsync() in PipControlsViewController
@@ -111,8 +111,8 @@
             Transitions transitions, ShellTaskOrganizer shellTaskOrganizer,
             PipAnimationController pipAnimationController,
             TvPipBoundsAlgorithm tvPipBoundsAlgorithm,
-            PipBoundsState pipBoundsState, TvPipMenuController pipMenuController) {
-        return new TvPipTransition(pipBoundsState, pipMenuController,
+            TvPipBoundsState tvPipBoundsState, TvPipMenuController pipMenuController) {
+        return new TvPipTransition(tvPipBoundsState, pipMenuController,
                 tvPipBoundsAlgorithm, pipAnimationController, transitions, shellTaskOrganizer);
     }
 
@@ -120,11 +120,11 @@
     @Provides
     static TvPipMenuController providesTvPipMenuController(
             Context context,
-            PipBoundsState pipBoundsState,
+            TvPipBoundsState tvPipBoundsState,
             SystemWindows systemWindows,
             PipMediaController pipMediaController,
             @ShellMainThread Handler mainHandler) {
-        return new TvPipMenuController(context, pipBoundsState, systemWindows, pipMediaController,
+        return new TvPipMenuController(context, tvPipBoundsState, systemWindows, pipMediaController,
                 mainHandler);
     }
 
@@ -155,7 +155,7 @@
     static PipTaskOrganizer providePipTaskOrganizer(Context context,
             TvPipMenuController tvPipMenuController,
             SyncTransactionQueue syncTransactionQueue,
-            PipBoundsState pipBoundsState,
+            TvPipBoundsState tvPipBoundsState,
             PipTransitionState pipTransitionState,
             TvPipBoundsAlgorithm tvPipBoundsAlgorithm,
             PipAnimationController pipAnimationController,
@@ -167,7 +167,7 @@
             PipUiEventLogger pipUiEventLogger, ShellTaskOrganizer shellTaskOrganizer,
             @ShellMainThread ShellExecutor mainExecutor) {
         return new PipTaskOrganizer(context,
-                syncTransactionQueue, pipTransitionState, pipBoundsState, tvPipBoundsAlgorithm,
+                syncTransactionQueue, pipTransitionState, tvPipBoundsState, tvPipBoundsAlgorithm,
                 tvPipMenuController, pipAnimationController, pipSurfaceTransactionHelper,
                 pipTransitionController, splitScreenOptional, newSplitScreenOptional,
                 displayController, pipUiEventLogger, shellTaskOrganizer, mainExecutor);
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/PinnedStackListenerForwarder.java b/libs/WindowManager/Shell/src/com/android/wm/shell/pip/PinnedStackListenerForwarder.java
index b3b1ba7..3fefc4a 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/PinnedStackListenerForwarder.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/pip/PinnedStackListenerForwarder.java
@@ -90,6 +90,12 @@
         }
     }
 
+    private void onExpandedAspectRatioChanged(float aspectRatio) {
+        for (PinnedTaskListener listener : mListeners) {
+            listener.onExpandedAspectRatioChanged(aspectRatio);
+        }
+    }
+
     @BinderThread
     private class PinnedTaskListenerImpl extends IPinnedTaskListener.Stub {
         @Override
@@ -126,6 +132,15 @@
                 PinnedStackListenerForwarder.this.onAspectRatioChanged(aspectRatio);
             });
         }
+
+        @Override
+        public void onExpandedAspectRatioChanged(float aspectRatio) {
+            mMainExecutor.execute(() -> {
+                PinnedStackListenerForwarder.this.onExpandedAspectRatioChanged(aspectRatio);
+            });
+        }
+
+
     }
 
     /**
@@ -142,5 +157,7 @@
         public void onActivityHidden(ComponentName componentName) {}
 
         public void onAspectRatioChanged(float aspectRatio) {}
+
+        public void onExpandedAspectRatioChanged(float aspectRatio) {}
     }
 }
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/PipBoundsAlgorithm.java b/libs/WindowManager/Shell/src/com/android/wm/shell/pip/PipBoundsAlgorithm.java
index 1a3c51e..e29dde2 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/PipBoundsAlgorithm.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/pip/PipBoundsAlgorithm.java
@@ -44,7 +44,7 @@
     private static final String TAG = PipBoundsAlgorithm.class.getSimpleName();
     private static final float INVALID_SNAP_FRACTION = -1f;
 
-    protected final @NonNull PipBoundsState mPipBoundsState;
+    private final @NonNull PipBoundsState mPipBoundsState;
     private final PipSnapAlgorithm mSnapAlgorithm;
 
     private float mDefaultSizePercent;
@@ -56,7 +56,7 @@
     private int mDefaultStackGravity;
     private int mDefaultMinSize;
     private int mOverridableMinSize;
-    private Point mScreenEdgeInsets;
+    protected Point mScreenEdgeInsets;
 
     public PipBoundsAlgorithm(Context context, @NonNull PipBoundsState pipBoundsState,
             @NonNull PipSnapAlgorithm pipSnapAlgorithm) {
@@ -73,7 +73,7 @@
     /**
      * TODO: move the resources to SysUI package.
      */
-    private void reloadResources(Context context) {
+    protected void reloadResources(Context context) {
         final Resources res = context.getResources();
         mDefaultAspectRatio = res.getFloat(
                 com.android.internal.R.dimen.config_pictureInPictureDefaultAspectRatio);
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 b3558ad..bebf2ca 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
@@ -20,9 +20,11 @@
 import android.annotation.NonNull;
 import android.annotation.Nullable;
 import android.app.ActivityTaskManager;
+import android.app.PictureInPictureParams;
 import android.app.PictureInPictureUiState;
 import android.content.ComponentName;
 import android.content.Context;
+import android.content.pm.ActivityInfo;
 import android.graphics.Point;
 import android.graphics.Rect;
 import android.os.RemoteException;
@@ -46,7 +48,7 @@
 /**
  * Singleton source of truth for the current state of PIP bounds.
  */
-public final class PipBoundsState {
+public class PipBoundsState {
     public static final int STASH_TYPE_NONE = 0;
     public static final int STASH_TYPE_LEFT = 1;
     public static final int STASH_TYPE_RIGHT = 2;
@@ -368,11 +370,11 @@
     /**
      * Initialize states when first entering PiP.
      */
-    public void setBoundsStateForEntry(ComponentName componentName, float aspectRatio,
-            Size overrideMinSize) {
+    public void setBoundsStateForEntry(ComponentName componentName, ActivityInfo activityInfo,
+            PictureInPictureParams params, PipBoundsAlgorithm pipBoundsAlgorithm) {
         setLastPipComponentName(componentName);
-        setAspectRatio(aspectRatio);
-        setOverrideMinSize(overrideMinSize);
+        setAspectRatio(pipBoundsAlgorithm.getAspectRatioOrDefault(params));
+        setOverrideMinSize(pipBoundsAlgorithm.getMinimalSize(activityInfo));
     }
 
     /** Returns whether the shelf is currently showing. */
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/PipTaskOrganizer.java b/libs/WindowManager/Shell/src/com/android/wm/shell/pip/PipTaskOrganizer.java
index 6b0d7f5..67b3983 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/PipTaskOrganizer.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/pip/PipTaskOrganizer.java
@@ -369,11 +369,10 @@
         return mLeash;
     }
 
-    private void setBoundsStateForEntry(ComponentName componentName, PictureInPictureParams params,
-            ActivityInfo activityInfo) {
-        mPipBoundsState.setBoundsStateForEntry(componentName,
-                mPipBoundsAlgorithm.getAspectRatioOrDefault(params),
-                mPipBoundsAlgorithm.getMinimalSize(activityInfo));
+    private void setBoundsStateForEntry(ComponentName componentName,
+            PictureInPictureParams params, ActivityInfo activityInfo) {
+        mPipBoundsState.setBoundsStateForEntry(componentName, activityInfo, params,
+                mPipBoundsAlgorithm);
     }
 
     /**
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/PipTransitionController.java b/libs/WindowManager/Shell/src/com/android/wm/shell/pip/PipTransitionController.java
index 22b3ef3..3403fb5 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/PipTransitionController.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/pip/PipTransitionController.java
@@ -187,9 +187,8 @@
     protected void setBoundsStateForEntry(ComponentName componentName,
             PictureInPictureParams params,
             ActivityInfo activityInfo) {
-        mPipBoundsState.setBoundsStateForEntry(componentName,
-                mPipBoundsAlgorithm.getAspectRatioOrDefault(params),
-                mPipBoundsAlgorithm.getMinimalSize(activityInfo));
+        mPipBoundsState.setBoundsStateForEntry(componentName, activityInfo, params,
+                mPipBoundsAlgorithm);
     }
 
     /**
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/tv/TvPipBoundsAlgorithm.java b/libs/WindowManager/Shell/src/com/android/wm/shell/pip/tv/TvPipBoundsAlgorithm.java
index 33f3bfb..8ab78e6 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/tv/TvPipBoundsAlgorithm.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/pip/tv/TvPipBoundsAlgorithm.java
@@ -16,15 +16,26 @@
 
 package com.android.wm.shell.pip.tv;
 
+import static android.view.KeyEvent.KEYCODE_DPAD_DOWN;
+import static android.view.KeyEvent.KEYCODE_DPAD_LEFT;
+import static android.view.KeyEvent.KEYCODE_DPAD_RIGHT;
+import static android.view.KeyEvent.KEYCODE_DPAD_UP;
+
+import static com.android.wm.shell.pip.tv.TvPipBoundsState.ORIENTATION_HORIZONTAL;
+import static com.android.wm.shell.pip.tv.TvPipBoundsState.ORIENTATION_UNDETERMINED;
+import static com.android.wm.shell.pip.tv.TvPipBoundsState.ORIENTATION_VERTICAL;
+
 import android.content.Context;
+import android.content.res.Resources;
 import android.graphics.Rect;
 import android.util.Log;
+import android.util.Size;
 import android.view.Gravity;
 
 import androidx.annotation.NonNull;
 
+import com.android.wm.shell.common.DisplayLayout;
 import com.android.wm.shell.pip.PipBoundsAlgorithm;
-import com.android.wm.shell.pip.PipBoundsState;
 import com.android.wm.shell.pip.PipSnapAlgorithm;
 
 /**
@@ -33,37 +44,282 @@
 public class TvPipBoundsAlgorithm extends PipBoundsAlgorithm {
 
     private static final String TAG = TvPipBoundsAlgorithm.class.getSimpleName();
-    private static final boolean DEBUG = false;
+    private static final boolean DEBUG = TvPipController.DEBUG;
+
+    private final @android.annotation.NonNull TvPipBoundsState mTvPipBoundsState;
+
+    private int mFixedExpandedHeightInPx;
+    private int mFixedExpandedWidthInPx;
 
     public TvPipBoundsAlgorithm(Context context,
-            @NonNull PipBoundsState pipBoundsState,
+            @NonNull TvPipBoundsState tvPipBoundsState,
             @NonNull PipSnapAlgorithm pipSnapAlgorithm) {
-        super(context, pipBoundsState, pipSnapAlgorithm);
+        super(context, tvPipBoundsState, pipSnapAlgorithm);
+        this.mTvPipBoundsState = tvPipBoundsState;
+    }
+
+    @Override
+    protected void reloadResources(Context context) {
+        super.reloadResources(context);
+        final Resources res = context.getResources();
+        mFixedExpandedHeightInPx = res.getDimensionPixelSize(
+                com.android.internal.R.dimen.config_pictureInPictureExpandedHorizontalHeight);
+        mFixedExpandedWidthInPx = res.getDimensionPixelSize(
+                com.android.internal.R.dimen.config_pictureInPictureExpandedVerticalWidth);
+    }
+
+    /** Returns the destination bounds to place the PIP window on entry. */
+    @Override
+    public Rect getEntryDestinationBounds() {
+        if (DEBUG) Log.d(TAG, "getEntryDestinationBounds()");
+        if (mTvPipBoundsState.getTvExpandedAspectRatio() != 0
+                && !mTvPipBoundsState.isTvPipManuallyCollapsed()) {
+            updatePositionOnExpandToggled(Gravity.NO_GRAVITY, true);
+        }
+        return getTvPipBounds(true);
+    }
+
+    /** Returns the current bounds adjusted to the new aspect ratio, if valid. */
+    @Override
+    public Rect getAdjustedDestinationBounds(Rect currentBounds, float newAspectRatio) {
+        if (DEBUG) Log.d(TAG, "getAdjustedDestinationBounds: " + newAspectRatio);
+        return getTvPipBounds(mTvPipBoundsState.isTvPipExpanded());
     }
 
     /**
      * The normal bounds at a different position on the screen.
      */
-    public Rect getTvNormalBounds(int gravity) {
+    public Rect getTvNormalBounds() {
         Rect normalBounds = getNormalBounds();
         Rect insetBounds = new Rect();
         getInsetBounds(insetBounds);
 
-        if (mPipBoundsState.isImeShowing()) {
-            if (DEBUG) Log.d(TAG, "IME showing, height: " + mPipBoundsState.getImeHeight());
-            insetBounds.bottom -= mPipBoundsState.getImeHeight();
+        if (mTvPipBoundsState.isImeShowing()) {
+            if (DEBUG) Log.d(TAG, "IME showing, height: " + mTvPipBoundsState.getImeHeight());
+            insetBounds.bottom -= mTvPipBoundsState.getImeHeight();
         }
 
         Rect result = new Rect();
-        Gravity.apply(gravity, normalBounds.width(), normalBounds.height(), insetBounds, result);
+        Gravity.apply(mTvPipBoundsState.getTvPipGravity(), normalBounds.width(),
+                normalBounds.height(), insetBounds, result);
 
         if (DEBUG) {
             Log.d(TAG, "normalBounds: " + normalBounds.toShortString());
             Log.d(TAG, "insetBounds: " + insetBounds.toShortString());
-            Log.d(TAG, "gravity: " + Gravity.toString(gravity));
+            Log.d(TAG, "gravity: " + Gravity.toString(mTvPipBoundsState.getTvPipGravity()));
             Log.d(TAG, "resultBounds: " + result.toShortString());
         }
 
+        mTvPipBoundsState.setTvPipExpanded(false);
+
         return result;
     }
+
+    /**
+     * @return previous gravity if it is to be saved, or Gravity.NO_GRAVITY if not.
+     */
+    int updatePositionOnExpandToggled(int previousGravity, boolean expanding) {
+        if (DEBUG) {
+            Log.d(TAG, "updatePositionOnExpandToggle(), expanding: " + expanding
+                    + ", mOrientation: " + mTvPipBoundsState.getTvFixedPipOrientation()
+                    + ", previous gravity: " + Gravity.toString(previousGravity));
+        }
+
+        if (!mTvPipBoundsState.isTvExpandedPipEnabled()) {
+            return Gravity.NO_GRAVITY;
+        }
+
+        if (expanding && mTvPipBoundsState.getTvFixedPipOrientation() == ORIENTATION_UNDETERMINED) {
+            float expandedRatio = mTvPipBoundsState.getTvExpandedAspectRatio();
+            if (expandedRatio == 0) {
+                return Gravity.NO_GRAVITY;
+            }
+            if (expandedRatio < 1) {
+                mTvPipBoundsState.setTvFixedPipOrientation(ORIENTATION_VERTICAL);
+            } else {
+                mTvPipBoundsState.setTvFixedPipOrientation(ORIENTATION_HORIZONTAL);
+            }
+
+        }
+
+        int gravityToSave = Gravity.NO_GRAVITY;
+        int currentGravity = mTvPipBoundsState.getTvPipGravity();
+        int updatedGravity;
+
+        if (expanding) {
+            // save collapsed gravity
+            gravityToSave = mTvPipBoundsState.getTvPipGravity();
+
+            if (mTvPipBoundsState.getTvFixedPipOrientation() == ORIENTATION_HORIZONTAL) {
+                updatedGravity =
+                        Gravity.CENTER_HORIZONTAL | (currentGravity
+                                & Gravity.VERTICAL_GRAVITY_MASK);
+            } else {
+                updatedGravity =
+                        Gravity.CENTER_VERTICAL | (currentGravity
+                                & Gravity.HORIZONTAL_GRAVITY_MASK);
+            }
+        } else {
+            if (previousGravity != Gravity.NO_GRAVITY) {
+                // The pip hasn't been moved since expanding,
+                // go back to previous collapsed position.
+                updatedGravity = previousGravity;
+            } else {
+                if (mTvPipBoundsState.getTvFixedPipOrientation() == ORIENTATION_HORIZONTAL) {
+                    updatedGravity =
+                            Gravity.RIGHT | (currentGravity & Gravity.VERTICAL_GRAVITY_MASK);
+                } else {
+                    updatedGravity =
+                            Gravity.BOTTOM | (currentGravity & Gravity.HORIZONTAL_GRAVITY_MASK);
+                }
+            }
+        }
+        mTvPipBoundsState.setTvPipGravity(updatedGravity);
+        if (DEBUG) Log.d(TAG, "new gravity: " + Gravity.toString(updatedGravity));
+
+        return gravityToSave;
+    }
+
+    /**
+     * @return true if position changed
+     */
+    boolean updatePosition(int keycode) {
+        if (DEBUG) Log.d(TAG, "updatePosition, keycode: " + keycode);
+
+        // Check if position change is valid
+        if (mTvPipBoundsState.isTvPipExpanded()) {
+            int mOrientation = mTvPipBoundsState.getTvFixedPipOrientation();
+            if (mOrientation == ORIENTATION_VERTICAL
+                    && (keycode == KEYCODE_DPAD_UP || keycode == KEYCODE_DPAD_DOWN)
+                    || mOrientation == ORIENTATION_HORIZONTAL
+                    && (keycode == KEYCODE_DPAD_RIGHT || keycode == KEYCODE_DPAD_LEFT)) {
+                return false;
+            }
+        }
+
+        int currentGravity = mTvPipBoundsState.getTvPipGravity();
+        int updatedGravity;
+        // First axis
+        switch (keycode) {
+            case KEYCODE_DPAD_UP:
+                updatedGravity = Gravity.TOP;
+                break;
+            case KEYCODE_DPAD_DOWN:
+                updatedGravity = Gravity.BOTTOM;
+                break;
+            case KEYCODE_DPAD_LEFT:
+                updatedGravity = Gravity.LEFT;
+                break;
+            case KEYCODE_DPAD_RIGHT:
+                updatedGravity = Gravity.RIGHT;
+                break;
+            default:
+                updatedGravity = currentGravity;
+        }
+
+        // Second axis
+        switch (keycode) {
+            case KEYCODE_DPAD_UP:
+            case KEYCODE_DPAD_DOWN:
+                if (mTvPipBoundsState.isTvPipExpanded()) {
+                    updatedGravity |= Gravity.CENTER_HORIZONTAL;
+                } else {
+                    updatedGravity |= (currentGravity & Gravity.HORIZONTAL_GRAVITY_MASK);
+                }
+                break;
+            case KEYCODE_DPAD_LEFT:
+            case KEYCODE_DPAD_RIGHT:
+                if (mTvPipBoundsState.isTvPipExpanded()) {
+                    updatedGravity |= Gravity.CENTER_VERTICAL;
+                } else {
+                    updatedGravity |= (currentGravity & Gravity.VERTICAL_GRAVITY_MASK);
+                }
+                break;
+            default:
+                break;
+        }
+
+        if (updatedGravity != currentGravity) {
+            mTvPipBoundsState.setTvPipGravity(updatedGravity);
+            if (DEBUG) Log.d(TAG, "new gravity: " + Gravity.toString(updatedGravity));
+            return true;
+        }
+        return false;
+    }
+
+    /**
+     * Calculates the PiP bounds.
+     */
+    public Rect getTvPipBounds(boolean expandedIfPossible) {
+        if (DEBUG) {
+            Log.d(TAG, "getExpandedBoundsIfPossible with gravity "
+                    + Gravity.toString(mTvPipBoundsState.getTvPipGravity())
+                    + ", fixed orientation: " + mTvPipBoundsState.getTvFixedPipOrientation());
+        }
+
+        if (!mTvPipBoundsState.isTvExpandedPipEnabled() || !expandedIfPossible) {
+            return getTvNormalBounds();
+        }
+
+        DisplayLayout displayLayout = mTvPipBoundsState.getDisplayLayout();
+        float expandedRatio = mTvPipBoundsState.getTvExpandedAspectRatio(); // width / height
+        Size expandedSize;
+        if (expandedRatio == 0) {
+            Log.d(TAG, "Expanded mode not supported");
+            return getTvNormalBounds();
+        } else if (expandedRatio < 1) {
+            // vertical
+            if (mTvPipBoundsState.getTvFixedPipOrientation() == ORIENTATION_HORIZONTAL) {
+                expandedSize = mTvPipBoundsState.getTvExpandedSize();
+            } else {
+                int maxHeight = displayLayout.height() - (2 * mScreenEdgeInsets.y);
+                float aspectRatioHeight = mFixedExpandedWidthInPx / expandedRatio;
+
+                if (maxHeight > aspectRatioHeight) {
+                    if (DEBUG) Log.d(TAG, "Accommodate aspect ratio");
+                    expandedSize = new Size(mFixedExpandedWidthInPx, (int) aspectRatioHeight);
+                } else {
+                    if (DEBUG) Log.d(TAG, "Aspect ratio is too extreme, use max size");
+                    expandedSize = new Size(mFixedExpandedWidthInPx, maxHeight);
+                }
+            }
+        } else {
+            // horizontal
+            if (mTvPipBoundsState.getTvFixedPipOrientation() == ORIENTATION_VERTICAL) {
+                expandedSize = mTvPipBoundsState.getTvExpandedSize();
+            } else {
+                int maxWidth = displayLayout.width() - (2 * mScreenEdgeInsets.x);
+                float aspectRatioWidth = mFixedExpandedHeightInPx * expandedRatio;
+                if (maxWidth > aspectRatioWidth) {
+                    if (DEBUG) Log.d(TAG, "Accommodate aspect ratio");
+                    expandedSize = new Size((int) aspectRatioWidth, mFixedExpandedHeightInPx);
+                } else {
+                    if (DEBUG) Log.d(TAG, "Aspect ratio is too extreme, use max size");
+                    expandedSize = new Size(maxWidth, mFixedExpandedHeightInPx);
+                }
+            }
+        }
+
+        if (expandedSize == null) {
+            return getTvNormalBounds();
+        }
+
+        if (DEBUG) {
+            Log.d(TAG, "expanded size, width: " + expandedSize.getWidth()
+                    + ", height: " + expandedSize.getHeight());
+        }
+
+        Rect insetBounds = new Rect();
+        getInsetBounds(insetBounds);
+
+        Rect expandedBounds = new Rect();
+        Gravity.apply(mTvPipBoundsState.getTvPipGravity(), expandedSize.getWidth(),
+                expandedSize.getHeight(), insetBounds, expandedBounds);
+        if (DEBUG) Log.d(TAG, "expanded bounds: " + expandedBounds.toShortString());
+
+        mTvPipBoundsState.setTvExpandedSize(expandedSize);
+        mTvPipBoundsState.setTvPipExpanded(true);
+        return expandedBounds;
+    }
+
 }
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/tv/TvPipBoundsState.java b/libs/WindowManager/Shell/src/com/android/wm/shell/pip/tv/TvPipBoundsState.java
new file mode 100644
index 0000000..9370e33
--- /dev/null
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/pip/tv/TvPipBoundsState.java
@@ -0,0 +1,166 @@
+/*
+ * Copyright (C) 2022 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.wm.shell.pip.tv;
+
+import android.annotation.IntDef;
+import android.annotation.NonNull;
+import android.annotation.Nullable;
+import android.app.PictureInPictureParams;
+import android.content.ComponentName;
+import android.content.Context;
+import android.content.pm.ActivityInfo;
+import android.content.pm.PackageManager;
+import android.util.Size;
+import android.view.Gravity;
+
+import com.android.wm.shell.pip.PipBoundsAlgorithm;
+import com.android.wm.shell.pip.PipBoundsState;
+
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+
+/**
+ * TV specific values of the current state of the PIP bounds.
+ */
+public class TvPipBoundsState extends PipBoundsState {
+
+    public static final int ORIENTATION_UNDETERMINED = 0;
+    public static final int ORIENTATION_VERTICAL = 1;
+    public static final int ORIENTATION_HORIZONTAL = 2;
+
+    @Retention(RetentionPolicy.SOURCE)
+    @IntDef(prefix = {"ORIENTATION_"}, value = {
+            ORIENTATION_UNDETERMINED,
+            ORIENTATION_VERTICAL,
+            ORIENTATION_HORIZONTAL
+    })
+    public @interface Orientation {
+    }
+
+    public static final int DEFAULT_TV_GRAVITY = Gravity.BOTTOM | Gravity.RIGHT;
+
+    private boolean mIsTvExpandedPipEnabled;
+    private boolean mIsTvPipExpanded;
+    private boolean mTvPipManuallyCollapsed;
+    private float mTvExpandedAspectRatio;
+    private @Orientation int mTvFixedPipOrientation;
+    private int mTvPipGravity;
+    private @Nullable Size mTvExpandedSize;
+
+
+    public TvPipBoundsState(@NonNull Context context) {
+        super(context);
+        setIsTvExpandedPipEnabled(context.getPackageManager().hasSystemFeature(
+                PackageManager.FEATURE_EXPANDED_PICTURE_IN_PICTURE));
+    }
+
+    /**
+     * Initialize states when first entering PiP.
+     */
+    @Override
+    public void setBoundsStateForEntry(ComponentName componentName, ActivityInfo activityInfo,
+            PictureInPictureParams params, PipBoundsAlgorithm pipBoundsAlgorithm) {
+        super.setBoundsStateForEntry(componentName, activityInfo, params, pipBoundsAlgorithm);
+        setTvExpandedAspectRatio(params.getExpandedAspectRatio(), true);
+    }
+
+    /** Resets the TV PiP state for a new activity. */
+    public void resetTvPipState() {
+        mTvFixedPipOrientation = ORIENTATION_UNDETERMINED;
+        mTvPipGravity = DEFAULT_TV_GRAVITY;
+    }
+
+    /** Set the tv expanded bounds of PIP */
+    public void setTvExpandedSize(@Nullable Size bounds) {
+        mTvExpandedSize = bounds;
+    }
+
+    /** Get the PIP tv expanded bounds. */
+    @Nullable
+    public Size getTvExpandedSize() {
+        return mTvExpandedSize;
+    }
+
+    /** Set the PIP aspect ratio for the expanded PIP (TV) that is desired by the app. */
+    public void setTvExpandedAspectRatio(float aspectRatio, boolean override) {
+        if (override || mTvFixedPipOrientation == ORIENTATION_UNDETERMINED || aspectRatio == 0) {
+            mTvExpandedAspectRatio = aspectRatio;
+            resetTvPipState();
+            return;
+        }
+        if ((aspectRatio > 1 && mTvFixedPipOrientation == ORIENTATION_HORIZONTAL)
+                || (aspectRatio <= 1 && mTvFixedPipOrientation == ORIENTATION_VERTICAL)) {
+            mTvExpandedAspectRatio = aspectRatio;
+        }
+    }
+
+    /** Get the PIP aspect ratio for the expanded PIP (TV) that is desired by the app. */
+    public float getTvExpandedAspectRatio() {
+        return mTvExpandedAspectRatio;
+    }
+
+    /** Sets the orientation the expanded TV PiP activity has been fixed to. */
+    public void setTvFixedPipOrientation(@Orientation int orientation) {
+        mTvFixedPipOrientation = orientation;
+    }
+
+    /** Returns the fixed orientation of the expanded PiP on TV. */
+    @Orientation
+    public int getTvFixedPipOrientation() {
+        return mTvFixedPipOrientation;
+    }
+
+    /** Sets the current gravity of the TV PiP. */
+    public void setTvPipGravity(int gravity) {
+        mTvPipGravity = gravity;
+    }
+
+    /** Returns the current gravity of the TV PiP. */
+    public int getTvPipGravity() {
+        return mTvPipGravity;
+    }
+
+    /** Sets whether the TV PiP is currently expanded. */
+    public void setTvPipExpanded(boolean expanded) {
+        mIsTvPipExpanded = expanded;
+    }
+
+    /** Returns whether the TV PiP is currently expanded. */
+    public boolean isTvPipExpanded() {
+        return mIsTvPipExpanded;
+    }
+
+    /** Sets whether the user has manually collapsed the TV PiP. */
+    public void setTvPipManuallyCollapsed(boolean collapsed) {
+        mTvPipManuallyCollapsed = collapsed;
+    }
+
+    /** Returns whether the user has manually collapsed the TV PiP. */
+    public boolean isTvPipManuallyCollapsed() {
+        return mTvPipManuallyCollapsed;
+    }
+
+    /** Sets whether expanded PiP is supported by the device. */
+    public void setIsTvExpandedPipEnabled(boolean enabled) {
+        mIsTvExpandedPipEnabled = enabled;
+    }
+
+    /** Returns whether expanded PiP is supported by the device. */
+    public boolean isTvExpandedPipEnabled() {
+        return mIsTvExpandedPipEnabled;
+    }
+}
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/tv/TvPipController.java b/libs/WindowManager/Shell/src/com/android/wm/shell/pip/tv/TvPipController.java
index de53939..5996acd 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/tv/TvPipController.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/pip/tv/TvPipController.java
@@ -18,10 +18,6 @@
 
 import static android.app.WindowConfiguration.ACTIVITY_TYPE_UNDEFINED;
 import static android.app.WindowConfiguration.WINDOWING_MODE_PINNED;
-import static android.view.KeyEvent.KEYCODE_DPAD_DOWN;
-import static android.view.KeyEvent.KEYCODE_DPAD_LEFT;
-import static android.view.KeyEvent.KEYCODE_DPAD_RIGHT;
-import static android.view.KeyEvent.KEYCODE_DPAD_UP;
 
 import android.annotation.IntDef;
 import android.app.ActivityManager;
@@ -47,7 +43,6 @@
 import com.android.wm.shell.common.TaskStackListenerImpl;
 import com.android.wm.shell.pip.PinnedStackListenerForwarder;
 import com.android.wm.shell.pip.Pip;
-import com.android.wm.shell.pip.PipBoundsState;
 import com.android.wm.shell.pip.PipMediaController;
 import com.android.wm.shell.pip.PipTaskOrganizer;
 import com.android.wm.shell.pip.PipTransitionController;
@@ -69,7 +64,7 @@
     @IntDef(prefix = { "STATE_" }, value = {
             STATE_NO_PIP,
             STATE_PIP,
-            STATE_PIP_MENU
+            STATE_PIP_MENU,
     })
     public @interface State {}
 
@@ -89,11 +84,9 @@
      */
     private static final int STATE_PIP_MENU = 2;
 
-    private static final int DEFAULT_GRAVITY = Gravity.BOTTOM | Gravity.RIGHT;
-
     private final Context mContext;
 
-    private final PipBoundsState mPipBoundsState;
+    private final TvPipBoundsState mTvPipBoundsState;
     private final TvPipBoundsAlgorithm mTvPipBoundsAlgorithm;
     private final PipTaskOrganizer mPipTaskOrganizer;
     private final PipMediaController mPipMediaController;
@@ -103,14 +96,14 @@
     private final TvPipImpl mImpl = new TvPipImpl();
 
     private @State int mState = STATE_NO_PIP;
-    private @Gravity.GravityFlags int mGravity = DEFAULT_GRAVITY;
+    private int mPreviousGravity = TvPipBoundsState.DEFAULT_TV_GRAVITY;
     private int mPinnedTaskId = NONEXISTENT_TASK_ID;
 
     private int mResizeAnimationDuration;
 
     public static Pip create(
             Context context,
-            PipBoundsState pipBoundsState,
+            TvPipBoundsState tvPipBoundsState,
             TvPipBoundsAlgorithm tvPipBoundsAlgorithm,
             PipTaskOrganizer pipTaskOrganizer,
             PipTransitionController pipTransitionController,
@@ -122,7 +115,7 @@
             ShellExecutor mainExecutor) {
         return new TvPipController(
                 context,
-                pipBoundsState,
+                tvPipBoundsState,
                 tvPipBoundsAlgorithm,
                 pipTaskOrganizer,
                 pipTransitionController,
@@ -136,7 +129,7 @@
 
     private TvPipController(
             Context context,
-            PipBoundsState pipBoundsState,
+            TvPipBoundsState tvPipBoundsState,
             TvPipBoundsAlgorithm tvPipBoundsAlgorithm,
             PipTaskOrganizer pipTaskOrganizer,
             PipTransitionController pipTransitionController,
@@ -149,9 +142,9 @@
         mContext = context;
         mMainExecutor = mainExecutor;
 
-        mPipBoundsState = pipBoundsState;
-        mPipBoundsState.setDisplayId(context.getDisplayId());
-        mPipBoundsState.setDisplayLayout(new DisplayLayout(context, context.getDisplay()));
+        mTvPipBoundsState = tvPipBoundsState;
+        mTvPipBoundsState.setDisplayId(context.getDisplayId());
+        mTvPipBoundsState.setDisplayLayout(new DisplayLayout(context, context.getDisplay()));
         mTvPipBoundsAlgorithm = tvPipBoundsAlgorithm;
 
         mPipMediaController = pipMediaController;
@@ -226,10 +219,24 @@
     }
 
     @Override
+    public void togglePipExpansion() {
+        if (DEBUG) Log.d(TAG, "togglePipExpansion()");
+        boolean expanding = !mTvPipBoundsState.isTvPipExpanded();
+        int saveGravity = mTvPipBoundsAlgorithm
+                .updatePositionOnExpandToggled(mPreviousGravity, expanding);
+        if (saveGravity != Gravity.NO_GRAVITY) {
+            mPreviousGravity = saveGravity;
+        }
+        mTvPipBoundsState.setTvPipManuallyCollapsed(!expanding);
+        mTvPipBoundsState.setTvPipExpanded(expanding);
+        movePinnedStack();
+    }
+
+    @Override
     public void movePip(int keycode) {
-        if (updatePosition(keycode)) {
-            if (DEBUG) Log.d(TAG, "New gravity: " + Gravity.toString(mGravity));
-            mTvPipMenuController.updateMenu(mGravity);
+        if (mTvPipBoundsAlgorithm.updatePosition(keycode)) {
+            mTvPipMenuController.updateGravity(mTvPipBoundsState.getTvPipGravity());
+            mPreviousGravity = Gravity.NO_GRAVITY;
             movePinnedStack();
         } else {
             if (DEBUG) Log.d(TAG, "Position hasn't changed");
@@ -238,38 +245,11 @@
 
     @Override
     public int getPipGravity() {
-        return mGravity;
+        return mTvPipBoundsState.getTvPipGravity();
     }
 
-    /**
-     * @return true if position changed
-     */
-    private boolean updatePosition(int keycode) {
-        if (DEBUG) Log.d(TAG, "updatePosition, keycode: " + keycode);
-
-        int updatedGravity;
-        switch (keycode) {
-            case KEYCODE_DPAD_UP:
-                updatedGravity = (mGravity & (~Gravity.BOTTOM)) | Gravity.TOP;
-                break;
-            case KEYCODE_DPAD_DOWN:
-                updatedGravity =  (mGravity & (~Gravity.TOP)) | Gravity.BOTTOM;
-                break;
-            case KEYCODE_DPAD_LEFT:
-                updatedGravity = (mGravity & (~Gravity.RIGHT)) | Gravity.LEFT;
-                break;
-            case KEYCODE_DPAD_RIGHT:
-                updatedGravity = (mGravity & (~Gravity.LEFT)) | Gravity.RIGHT;
-                break;
-            default:
-                updatedGravity = mGravity;
-        }
-
-        if (updatedGravity != mGravity) {
-            mGravity = updatedGravity;
-            return true;
-        }
-        return false;
+    public int getOrientation() {
+        return mTvPipBoundsState.getTvFixedPipOrientation();
     }
 
     /**
@@ -280,11 +260,12 @@
             return;
         }
 
-        Rect bounds = mTvPipBoundsAlgorithm.getTvNormalBounds(mGravity);
+        Rect bounds = mTvPipBoundsAlgorithm.getTvPipBounds(mTvPipBoundsState.isTvPipExpanded());
         if (DEBUG) Log.d(TAG, "movePinnedStack() - new pip bounds: " + bounds.toShortString());
         mPipTaskOrganizer.scheduleAnimateResizePip(bounds,
                 mResizeAnimationDuration, rect -> {
                     if (DEBUG) Log.d(TAG, "movePinnedStack() animation done");
+                    mTvPipMenuController.updateExpansionState();
                 });
     }
 
@@ -328,7 +309,7 @@
 
         mPipNotificationController.dismiss();
         mTvPipMenuController.hideMenu();
-        mGravity = DEFAULT_GRAVITY;
+        mTvPipBoundsState.resetTvPipState();
         setState(STATE_NO_PIP);
         mPinnedTaskId = NONEXISTENT_TASK_ID;
     }
@@ -346,11 +327,6 @@
     @Override
     public void onPipTransitionFinished(int direction) {
         if (DEBUG) Log.d(TAG, "onPipTransition_Finished(), state=" + stateToName(mState));
-
-        if (mState == STATE_PIP_MENU) {
-            if (DEBUG) Log.d(TAG, "  > show menu");
-            mTvPipMenuController.showMenu();
-        }
     }
 
     private void setState(@State int state) {
@@ -359,6 +335,11 @@
                     + stateToName(mState));
         }
         mState = state;
+
+        if (mState == STATE_PIP_MENU) {
+            if (DEBUG) Log.d(TAG, "  > show menu");
+            mTvPipMenuController.showMenu();
+        }
     }
 
     private void loadConfigurations() {
@@ -408,13 +389,13 @@
                                 + ", height=" + imeHeight);
                     }
 
-                    if (imeVisible == mPipBoundsState.isImeShowing()
-                            && (!imeVisible || imeHeight == mPipBoundsState.getImeHeight())) {
+                    if (imeVisible == mTvPipBoundsState.isImeShowing()
+                            && (!imeVisible || imeHeight == mTvPipBoundsState.getImeHeight())) {
                         // Nothing changed: either IME has been and remains invisible, or remains
                         // visible with the same height.
                         return;
                     }
-                    mPipBoundsState.setImeVisibility(imeVisible, imeHeight);
+                    mTvPipBoundsState.setImeVisibility(imeVisible, imeHeight);
 
                     if (mState != STATE_NO_PIP) {
                         movePinnedStack();
@@ -422,6 +403,61 @@
                 }
 
                 @Override
+                public void onAspectRatioChanged(float ratio) {
+                    if (DEBUG) Log.d(TAG, "onAspectRatioChanged: " + ratio);
+
+                    boolean ratioChanged = mTvPipBoundsState.getAspectRatio() != ratio;
+                    mTvPipBoundsState.setAspectRatio(ratio);
+
+                    if (!mTvPipBoundsState.isTvPipExpanded() && ratioChanged) {
+                        movePinnedStack();
+                    }
+                }
+
+                @Override
+                public void onExpandedAspectRatioChanged(float ratio) {
+                    if (DEBUG) Log.d(TAG, "onExpandedAspectRatioChanged: " + ratio);
+
+                    // 0) No update to the ratio --> don't do anything
+                    if (mTvPipBoundsState.getTvExpandedAspectRatio() == ratio) {
+                        return;
+                    }
+
+                    mTvPipBoundsState.setTvExpandedAspectRatio(ratio, false);
+
+                    // 1) PiP is expanded and only aspect ratio changed, but wasn't disabled
+                    // --> update bounds, but don't toggle
+                    if (mTvPipBoundsState.isTvPipExpanded() && ratio != 0) {
+                        movePinnedStack();
+                    }
+
+                    // 2) PiP is expanded, but expanded PiP was disabled
+                    // --> collapse PiP
+                    if (mTvPipBoundsState.isTvPipExpanded() && ratio == 0) {
+                        int saveGravity = mTvPipBoundsAlgorithm
+                                .updatePositionOnExpandToggled(mPreviousGravity, false);
+                        if (saveGravity != Gravity.NO_GRAVITY) {
+                            mPreviousGravity = saveGravity;
+                        }
+                        mTvPipBoundsState.setTvPipExpanded(false);
+                        movePinnedStack();
+                    }
+
+                    // 3) PiP not expanded and not manually collapsed and expand was enabled
+                    // --> expand to new ratio
+                    if (!mTvPipBoundsState.isTvPipExpanded() && ratio != 0
+                            && !mTvPipBoundsState.isTvPipManuallyCollapsed()) {
+                        int saveGravity = mTvPipBoundsAlgorithm
+                                .updatePositionOnExpandToggled(mPreviousGravity, true);
+                        if (saveGravity != Gravity.NO_GRAVITY) {
+                            mPreviousGravity = saveGravity;
+                        }
+                        mTvPipBoundsState.setTvPipExpanded(true);
+                        movePinnedStack();
+                    }
+                }
+
+                @Override
                 public void onMovementBoundsChanged(boolean fromImeAdjustment) {}
 
                 @Override
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/tv/TvPipMenuActionButton.java b/libs/WindowManager/Shell/src/com/android/wm/shell/pip/tv/TvPipMenuActionButton.java
index bda685e..4eb46d9 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/tv/TvPipMenuActionButton.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/pip/tv/TvPipMenuActionButton.java
@@ -65,7 +65,7 @@
         setImageResource(typedArray.getResourceId(0, 0));
         final int textResId = typedArray.getResourceId(1, 0);
         if (textResId != 0) {
-            setTextAndDescription(getContext().getString(textResId));
+            setTextAndDescription(textResId);
         }
         typedArray.recycle();
     }
@@ -110,6 +110,13 @@
         mButtonView.setContentDescription(text);
     }
 
+    /**
+     * Sets the text and description with the given string resource id.
+     */
+    public void setTextAndDescription(int resId) {
+        setTextAndDescription(getContext().getString(resId));
+    }
+
     @Override
     public void setEnabled(boolean enabled) {
         mButtonView.setEnabled(enabled);
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/tv/TvPipMenuController.java b/libs/WindowManager/Shell/src/com/android/wm/shell/pip/tv/TvPipMenuController.java
index f838a0b..69d6c9e 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/tv/TvPipMenuController.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/pip/tv/TvPipMenuController.java
@@ -18,6 +18,7 @@
 
 import static android.view.WindowManager.SHELL_ROOT_LAYER_PIP;
 
+import android.app.ActivityManager;
 import android.app.RemoteAction;
 import android.content.BroadcastReceiver;
 import android.content.Context;
@@ -37,7 +38,6 @@
 
 import com.android.wm.shell.R;
 import com.android.wm.shell.common.SystemWindows;
-import com.android.wm.shell.pip.PipBoundsState;
 import com.android.wm.shell.pip.PipMediaController;
 import com.android.wm.shell.pip.PipMenuController;
 
@@ -53,7 +53,7 @@
 
     private final Context mContext;
     private final SystemWindows mSystemWindows;
-    private final PipBoundsState mPipBoundsState;
+    private final TvPipBoundsState mTvPipBoundsState;
     private final Handler mMainHandler;
 
     private Delegate mDelegate;
@@ -85,11 +85,11 @@
         }
     };
 
-    public TvPipMenuController(Context context, PipBoundsState pipBoundsState,
+    public TvPipMenuController(Context context, TvPipBoundsState tvPipBoundsState,
             SystemWindows systemWindows, PipMediaController pipMediaController,
             Handler mainHandler) {
         mContext = context;
-        mPipBoundsState = pipBoundsState;
+        mTvPipBoundsState = tvPipBoundsState;
         mSystemWindows = systemWindows;
         mMainHandler = mainHandler;
 
@@ -151,12 +151,13 @@
         if (DEBUG) Log.d(TAG, "showMenu()");
 
         if (mPipMenuView != null) {
-            Rect menuBounds = getMenuBounds(mPipBoundsState.getBounds());
+            Rect menuBounds = getMenuBounds(mTvPipBoundsState.getBounds());
             mSystemWindows.updateViewLayout(mPipMenuView, getPipMenuLayoutParams(
                     MENU_WINDOW_TITLE, menuBounds.width(), menuBounds.height()));
             maybeUpdateMenuViewActions();
+            updateExpansionState();
 
-            SurfaceControl menuSurfaceControl = mSystemWindows.getViewSurface(mPipMenuView);
+            SurfaceControl menuSurfaceControl = getSurfaceControl();
             if (menuSurfaceControl != null) {
                 SurfaceControl.Transaction t = new SurfaceControl.Transaction();
                 t.setRelativeLayer(mPipMenuView.getWindowSurfaceControl(), mLeash, 1);
@@ -167,10 +168,16 @@
         }
     }
 
-    void updateMenu(int gravity) {
+    void updateGravity(int gravity) {
         mPipMenuView.showMovementHints(gravity);
     }
 
+    void updateExpansionState() {
+        mPipMenuView.setExpandedModeEnabled(mTvPipBoundsState.isTvExpandedPipEnabled()
+                && mTvPipBoundsState.getTvExpandedAspectRatio() != 0);
+        mPipMenuView.setIsExpanded(mTvPipBoundsState.isTvPipExpanded());
+    }
+
     private Rect getMenuBounds(Rect pipBounds) {
         int extraSpaceInPx = mContext.getResources()
                 .getDimensionPixelSize(R.dimen.pip_menu_outer_space);
@@ -350,7 +357,9 @@
         SurfaceControl surfaceControl = getSurfaceControl();
         SyncRtSurfaceTransactionApplier.SurfaceParams params =
                 new SyncRtSurfaceTransactionApplier.SurfaceParams.Builder(
-                        surfaceControl).withMatrix(mMoveTransform).build();
+                        surfaceControl)
+                        .withMatrix(mMoveTransform)
+                        .build();
 
         if (pipLeash != null && transaction != null) {
             SyncRtSurfaceTransactionApplier.SurfaceParams
@@ -366,6 +375,8 @@
             mPipMenuView.getHandler().removeCallbacks(mUpdateEmbeddedMatrix);
             mPipMenuView.getHandler().post(mUpdateEmbeddedMatrix);
         }
+
+        updateMenuBounds(pipDestBounds);
     }
 
     private boolean maybeCreateSyncApplier() {
@@ -397,6 +408,14 @@
         mSystemWindows.updateViewLayout(mPipMenuView,
                 getPipMenuLayoutParams(MENU_WINDOW_TITLE, menuBounds.width(),
                         menuBounds.height()));
+        if (mPipMenuView != null) {
+            mPipMenuView.updateLayout(destinationBounds);
+        }
+    }
+
+    @Override
+    public void onFocusTaskChanged(ActivityManager.RunningTaskInfo taskInfo) {
+        Log.d(TAG, "onFocusTaskChanged");
     }
 
     @Override
@@ -416,6 +435,11 @@
         mDelegate.movePipToFullscreen();
     }
 
+    @Override
+    public void onToggleExpandedMode() {
+        mDelegate.togglePipExpansion();
+    }
+
     interface Delegate {
         void movePipToFullscreen();
 
@@ -423,6 +447,8 @@
 
         int getPipGravity();
 
+        void togglePipExpansion();
+
         void closeMenu();
 
         void closePip();
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/tv/TvPipMenuView.java b/libs/WindowManager/Shell/src/com/android/wm/shell/pip/tv/TvPipMenuView.java
index 84eae9e..773e9bf 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/tv/TvPipMenuView.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/pip/tv/TvPipMenuView.java
@@ -23,19 +23,21 @@
 import static android.view.KeyEvent.KEYCODE_DPAD_LEFT;
 import static android.view.KeyEvent.KEYCODE_DPAD_RIGHT;
 import static android.view.KeyEvent.KEYCODE_DPAD_UP;
+import static android.view.KeyEvent.KEYCODE_ENTER;
 
 import android.app.PendingIntent;
 import android.app.RemoteAction;
 import android.content.Context;
+import android.graphics.Rect;
 import android.os.Handler;
 import android.os.IBinder;
 import android.util.AttributeSet;
 import android.util.Log;
 import android.view.Gravity;
 import android.view.KeyEvent;
-import android.view.LayoutInflater;
 import android.view.SurfaceControl;
 import android.view.View;
+import android.view.ViewGroup;
 import android.view.ViewRootImpl;
 import android.view.WindowManagerGlobal;
 import android.widget.FrameLayout;
@@ -72,6 +74,13 @@
     private final ImageView mArrowLeft;
     private IBinder mFocusGrantToken = null;
 
+    private final ViewGroup mScrollView;
+    private final ViewGroup mHorizontalScrollView;
+
+    private Rect mCurrentBounds;
+
+    private final TvPipMenuActionButton mExpandButton;
+
     public TvPipMenuView(@NonNull Context context) {
         this(context, null);
     }
@@ -97,6 +106,11 @@
                 .setOnClickListener(this);
         mActionButtonsContainer.findViewById(R.id.tv_pip_menu_move_button)
                 .setOnClickListener(this);
+        mExpandButton = findViewById(R.id.tv_pip_menu_expand_button);
+        mExpandButton.setOnClickListener(this);
+
+        mScrollView = findViewById(R.id.tv_pip_menu_scroll);
+        mHorizontalScrollView = findViewById(R.id.tv_pip_menu_horizontal_scroll);
 
         mMenuFrameView = findViewById(R.id.tv_pip_menu_frame);
 
@@ -106,6 +120,34 @@
         mArrowLeft = findViewById(R.id.tv_pip_menu_arrow_left);
     }
 
+    void updateLayout(Rect updatedBounds) {
+        Log.d(TAG, "update menu layout: " + updatedBounds.toShortString());
+        boolean previouslyVertical =
+                mCurrentBounds != null && mCurrentBounds.height() > mCurrentBounds.width();
+        boolean vertical = updatedBounds.height() > updatedBounds.width();
+
+        mCurrentBounds = updatedBounds;
+        if (previouslyVertical == vertical) {
+            if (DEBUG) Log.d(TAG, "no update for menu layout");
+            return;
+        } else {
+            if (DEBUG) Log.d(TAG, "change menu layout to vertical: " + vertical);
+        }
+
+        if (vertical) {
+            mHorizontalScrollView.removeView(mActionButtonsContainer);
+            mScrollView.addView(mActionButtonsContainer);
+        } else {
+            mScrollView.removeView(mActionButtonsContainer);
+            mHorizontalScrollView.addView(mActionButtonsContainer);
+        }
+        mActionButtonsContainer.setOrientation(vertical ? LinearLayout.VERTICAL
+                : LinearLayout.HORIZONTAL);
+
+        mScrollView.setVisibility(vertical ? VISIBLE : GONE);
+        mHorizontalScrollView.setVisibility(vertical ? GONE : VISIBLE);
+    }
+
     void setListener(@Nullable Listener listener) {
         mListener = listener;
     }
@@ -114,6 +156,18 @@
         mFocusGrantToken = token;
     }
 
+    void setExpandedModeEnabled(boolean enabled) {
+        mExpandButton.setVisibility(enabled ? VISIBLE : GONE);
+    }
+
+    void setIsExpanded(boolean expanded) {
+        if (DEBUG) Log.d(TAG, "setIsExpanded, expanded: " + expanded);
+        mExpandButton.setImageResource(
+                expanded ? R.drawable.pip_ic_collapse : R.drawable.pip_ic_expand);
+        mExpandButton.setTextAndDescription(
+                expanded ? R.string.pip_collapse : R.string.pip_expand);
+    }
+
     void show(boolean inMoveMode, int gravity) {
         if (DEBUG) Log.d(TAG, "show(), inMoveMode: " + inMoveMode);
         grantWindowFocus(true);
@@ -181,13 +235,13 @@
         final int actionsNumber = actions.size();
         int buttonsNumber = mAdditionalButtons.size();
         if (actionsNumber > buttonsNumber) {
-            final LayoutInflater layoutInflater = LayoutInflater.from(mContext);
             // Add buttons until we have enough to display all of the actions.
             while (actionsNumber > buttonsNumber) {
                 TvPipMenuActionButton button = new TvPipMenuActionButton(mContext);
                 button.setOnClickListener(this);
 
-                mActionButtonsContainer.addView(button);
+                mActionButtonsContainer.addView(button,
+                        mActionButtonsContainer.getChildCount() - 1);
                 mAdditionalButtons.add(button);
 
                 buttonsNumber++;
@@ -239,6 +293,8 @@
             mListener.onEnterMoveMode();
         } else if (id == R.id.tv_pip_menu_close_button) {
             mListener.onCloseButtonClick();
+        } else if (id == R.id.tv_pip_menu_expand_button) {
+            mListener.onToggleExpandedMode();
         } else {
             // This should be an "additional action"
             final RemoteAction action = (RemoteAction) v.getTag();
@@ -271,6 +327,7 @@
                 case KEYCODE_DPAD_RIGHT:
                     return mListener.onPipMovement(event.getKeyCode()) || super.dispatchKeyEvent(
                             event);
+                case KEYCODE_ENTER:
                 case KEYCODE_DPAD_CENTER:
                     return mListener.onExitMoveMode() || super.dispatchKeyEvent(event);
                 default:
@@ -286,10 +343,14 @@
     public void showMovementHints(int gravity) {
         if (DEBUG) Log.d(TAG, "showMovementHints(), position: " + Gravity.toString(gravity));
 
-        animateAlphaTo((gravity & Gravity.BOTTOM) == Gravity.BOTTOM ? 1f : 0f, mArrowUp);
-        animateAlphaTo((gravity & Gravity.TOP) == Gravity.TOP ? 1f : 0f, mArrowDown);
-        animateAlphaTo((gravity & Gravity.RIGHT) == Gravity.RIGHT ? 1f : 0f, mArrowLeft);
-        animateAlphaTo((gravity & Gravity.LEFT) == Gravity.LEFT ? 1f : 0f, mArrowRight);
+        animateAlphaTo(checkGravity(gravity, Gravity.BOTTOM) ? 1f : 0f, mArrowUp);
+        animateAlphaTo(checkGravity(gravity, Gravity.TOP) ? 1f : 0f, mArrowDown);
+        animateAlphaTo(checkGravity(gravity, Gravity.RIGHT) ? 1f : 0f, mArrowLeft);
+        animateAlphaTo(checkGravity(gravity, Gravity.LEFT) ? 1f : 0f, mArrowRight);
+    }
+
+    private boolean checkGravity(int gravity, int feature) {
+        return (gravity & feature) == feature;
     }
 
     /**
@@ -330,5 +391,7 @@
         void onCloseButtonClick();
 
         void onFullscreenButtonClick();
+
+        void onToggleExpandedMode();
     }
 }
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 e255e44..025bcad 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
@@ -22,6 +22,9 @@
 import static android.window.StartingWindowInfo.STARTING_WINDOW_TYPE_LEGACY_SPLASH_SCREEN;
 import static android.window.StartingWindowInfo.STARTING_WINDOW_TYPE_SPLASH_SCREEN;
 
+import static com.android.wm.shell.startingsurface.StartingSurfaceDrawer.MAX_ANIMATION_DURATION;
+import static com.android.wm.shell.startingsurface.StartingSurfaceDrawer.MINIMAL_ANIMATION_DURATION;
+
 import android.annotation.ColorInt;
 import android.annotation.IntDef;
 import android.annotation.NonNull;
@@ -46,6 +49,7 @@
 import android.net.Uri;
 import android.os.Handler;
 import android.os.HandlerThread;
+import android.os.SystemClock;
 import android.os.Trace;
 import android.os.UserHandle;
 import android.util.ArrayMap;
@@ -322,6 +326,33 @@
         private int mAnimationDuration = 0;
     }
 
+    /**
+     * Get an optimal animation duration to keep the splash screen from showing.
+     *
+     * @param animationDuration The animation duration defined from app.
+     * @param appReadyDuration The real duration from the starting the app to the first app window
+     *                         drawn.
+     */
+    @VisibleForTesting
+    static long getShowingDuration(long animationDuration, long appReadyDuration) {
+        if (animationDuration <= appReadyDuration) {
+            // app window ready took longer time than animation, it can be removed ASAP.
+            return appReadyDuration;
+        }
+        if (appReadyDuration < MAX_ANIMATION_DURATION) {
+            if (animationDuration > MAX_ANIMATION_DURATION
+                    || appReadyDuration < MINIMAL_ANIMATION_DURATION) {
+                // animation is too long or too short, cut off with minimal duration
+                return MINIMAL_ANIMATION_DURATION;
+            }
+            // animation is longer than dOpt but shorter than max, allow it to play till finish
+            return MAX_ANIMATION_DURATION;
+        }
+        // the shortest duration is longer than dMax, cut off no matter how long the animation
+        // will be.
+        return appReadyDuration;
+    }
+
     private class StartingWindowViewBuilder {
         private final Context mContext;
         private final ActivityInfo mActivityInfo;
@@ -977,9 +1008,27 @@
      * Create and play the default exit animation for splash screen view.
      */
     void applyExitAnimation(SplashScreenView view, SurfaceControl leash,
-            Rect frame, Runnable finishCallback) {
-        final SplashScreenExitAnimation animation = new SplashScreenExitAnimation(mContext, view,
-                leash, frame, mMainWindowShiftLength, mTransactionPool, finishCallback);
-        animation.startAnimations();
+            Rect frame, Runnable finishCallback, long createTime) {
+        final Runnable playAnimation = () -> {
+            final SplashScreenExitAnimation animation = new SplashScreenExitAnimation(mContext,
+                    view, leash, frame, mMainWindowShiftLength, mTransactionPool, finishCallback);
+            animation.startAnimations();
+        };
+        if (view.getIconView() == null) {
+            playAnimation.run();
+            return;
+        }
+        final long appReadyDuration = SystemClock.uptimeMillis() - createTime;
+        final long animDuration = view.getIconAnimationDuration() != null
+                ? view.getIconAnimationDuration().toMillis() : 0;
+        final long minimumShowingDuration = getShowingDuration(animDuration, appReadyDuration);
+        final long delayed = minimumShowingDuration - appReadyDuration;
+        ProtoLog.v(ShellProtoLogGroup.WM_SHELL_STARTING_WINDOW,
+                "applyExitAnimation delayed: %s", delayed);
+        if (delayed > 0) {
+            view.postDelayed(playAnimation, delayed);
+        } else {
+            playAnimation.run();
+        }
     }
 }
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 9a966b8..3442699 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
@@ -41,6 +41,7 @@
 import android.os.IBinder;
 import android.os.RemoteCallback;
 import android.os.RemoteException;
+import android.os.SystemClock;
 import android.os.Trace;
 import android.os.UserHandle;
 import android.util.Slog;
@@ -121,6 +122,25 @@
     private final StartingWindowRemovalInfo mTmpRemovalInfo = new StartingWindowRemovalInfo();
 
     /**
+     * The minimum duration during which the splash screen is shown when the splash screen icon is
+     * animated.
+     */
+    static final long MINIMAL_ANIMATION_DURATION = 400L;
+
+    /**
+     * Allow the icon style splash screen to be displayed for longer to give time for the animation
+     * to finish, i.e. the extra buffer time to keep the splash screen if the animation is slightly
+     * longer than the {@link #MINIMAL_ANIMATION_DURATION} duration.
+     */
+    static final long TIME_WINDOW_DURATION = 100L;
+
+    /**
+     * The maximum duration during which the splash screen will be shown if the application is ready
+     * to show before the icon animation finishes.
+     */
+    static final long MAX_ANIMATION_DURATION = MINIMAL_ANIMATION_DURATION + TIME_WINDOW_DURATION;
+
+    /**
      * @param splashScreenExecutor The thread used to control add and remove starting window.
      */
     public StartingSurfaceDrawer(Context context, ShellExecutor splashScreenExecutor,
@@ -593,7 +613,8 @@
                         if (removalInfo.playRevealAnimation) {
                             mSplashscreenContentDrawer.applyExitAnimation(record.mContentView,
                                     removalInfo.windowAnimationLeash, removalInfo.mainFrame,
-                                    () -> removeWindowInner(record.mDecorView, true));
+                                    () -> removeWindowInner(record.mDecorView, true),
+                                    record.mCreateTime);
                         } else {
                             // the SplashScreenView has been copied to client, hide the view to skip
                             // default exit animation
@@ -641,6 +662,7 @@
         private boolean mSetSplashScreen;
         private @StartingWindowType int mSuggestType;
         private int mBGColor;
+        private final long mCreateTime;
 
         StartingWindowRecord(IBinder appToken, View decorView,
                 TaskSnapshotWindow taskSnapshotWindow, @StartingWindowType int suggestType) {
@@ -651,6 +673,7 @@
                 mBGColor = mTaskSnapshotWindow.getBackgroundColor();
             }
             mSuggestType = suggestType;
+            mCreateTime = SystemClock.uptimeMillis();
         }
 
         private void setSplashScreenView(SplashScreenView splashScreenView) {
diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/back/BackAnimationControllerTest.java b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/back/BackAnimationControllerTest.java
index b11f910..9054685 100644
--- a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/back/BackAnimationControllerTest.java
+++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/back/BackAnimationControllerTest.java
@@ -16,6 +16,7 @@
 
 package com.android.wm.shell.back;
 
+import static org.junit.Assert.assertEquals;
 import static org.mockito.Mockito.atLeastOnce;
 import static org.mockito.Mockito.doReturn;
 import static org.mockito.Mockito.mock;
@@ -24,14 +25,18 @@
 import android.app.IActivityTaskManager;
 import android.app.WindowConfiguration;
 import android.content.Context;
+import android.graphics.Point;
+import android.graphics.Rect;
 import android.hardware.HardwareBuffer;
 import android.os.RemoteCallback;
 import android.os.RemoteException;
 import android.testing.AndroidTestingRunner;
 import android.view.MotionEvent;
+import android.view.RemoteAnimationTarget;
 import android.view.SurfaceControl;
 import android.window.BackEvent;
 import android.window.BackNavigationInfo;
+import android.window.IOnBackInvokedCallback;
 
 import androidx.test.filters.SmallTest;
 
@@ -41,6 +46,7 @@
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
+import org.mockito.ArgumentCaptor;
 import org.mockito.Mock;
 import org.mockito.MockitoAnnotations;
 
@@ -62,6 +68,9 @@
     @Mock
     private IActivityTaskManager mActivityTaskManager;
 
+    @Mock
+    private IOnBackInvokedCallback mIOnBackInvokedCallback;
+
     private BackAnimationController mController;
 
     @Before
@@ -71,12 +80,13 @@
                 mShellExecutor, mTransaction, mActivityTaskManager, mContext);
     }
 
-    private void createNavigationInfo(SurfaceControl topWindowLeash,
+    private void createNavigationInfo(RemoteAnimationTarget topAnimationTarget,
             SurfaceControl screenshotSurface,
-            HardwareBuffer hardwareBuffer) {
+            HardwareBuffer hardwareBuffer,
+            int backType) {
         BackNavigationInfo navigationInfo = new BackNavigationInfo(
-                BackNavigationInfo.TYPE_RETURN_TO_HOME,
-                topWindowLeash,
+                backType,
+                topAnimationTarget,
                 screenshotSurface,
                 hardwareBuffer,
                 new WindowConfiguration(),
@@ -89,12 +99,20 @@
         }
     }
 
-    @Test
-    public void screenshotAttachedAndVisible() {
+    RemoteAnimationTarget createAnimationTarget() {
         SurfaceControl topWindowLeash = new SurfaceControl();
+        return new RemoteAnimationTarget(-1, RemoteAnimationTarget.MODE_CLOSING, topWindowLeash,
+                false, new Rect(), new Rect(), -1,
+                new Point(0, 0), new Rect(), new Rect(), new WindowConfiguration(),
+                true, null, null, null, false, -1);
+    }
+
+    @Test
+    public void crossActivity_screenshotAttachedAndVisible() {
         SurfaceControl screenshotSurface = new SurfaceControl();
         HardwareBuffer hardwareBuffer = mock(HardwareBuffer.class);
-        createNavigationInfo(topWindowLeash, screenshotSurface, hardwareBuffer);
+        createNavigationInfo(createAnimationTarget(), screenshotSurface, hardwareBuffer,
+                BackNavigationInfo.TYPE_CROSS_ACTIVITY);
         mController.onMotionEvent(
                 MotionEvent.obtain(0, 0, MotionEvent.ACTION_DOWN, 0, 0, 0),
                 BackEvent.EDGE_LEFT);
@@ -104,18 +122,48 @@
     }
 
     @Test
-    public void surfaceMovesWithGesture() {
-        SurfaceControl topWindowLeash = new SurfaceControl();
+    public void crossActivity_surfaceMovesWithGesture() {
         SurfaceControl screenshotSurface = new SurfaceControl();
         HardwareBuffer hardwareBuffer = mock(HardwareBuffer.class);
-        createNavigationInfo(topWindowLeash, screenshotSurface, hardwareBuffer);
+        RemoteAnimationTarget animationTarget = createAnimationTarget();
+        createNavigationInfo(animationTarget, screenshotSurface, hardwareBuffer,
+                BackNavigationInfo.TYPE_CROSS_ACTIVITY);
         mController.onMotionEvent(
                 MotionEvent.obtain(0, 0, MotionEvent.ACTION_DOWN, 0, 0, 0),
                 BackEvent.EDGE_LEFT);
         mController.onMotionEvent(
                 MotionEvent.obtain(10, 0, MotionEvent.ACTION_MOVE, 100, 100, 0),
                 BackEvent.EDGE_LEFT);
-        verify(mTransaction).setPosition(topWindowLeash, 100, 100);
+        verify(mTransaction).setPosition(animationTarget.leash, 100, 100);
         verify(mTransaction, atLeastOnce()).apply();
     }
+
+    @Test
+    public void backToHome_dispatchesEvents() throws RemoteException {
+        mController.setBackToLauncherCallback(mIOnBackInvokedCallback);
+        RemoteAnimationTarget animationTarget = createAnimationTarget();
+        createNavigationInfo(animationTarget, null, null,
+                BackNavigationInfo.TYPE_RETURN_TO_HOME);
+
+        // Check that back start is dispatched.
+        mController.onMotionEvent(
+                MotionEvent.obtain(0, 0, MotionEvent.ACTION_DOWN, 0, 0, 0),
+                BackEvent.EDGE_LEFT);
+        verify(mIOnBackInvokedCallback).onBackStarted();
+
+        // Check that back progress is dispatched.
+        mController.onMotionEvent(
+                MotionEvent.obtain(10, 0, MotionEvent.ACTION_MOVE, 100, 100, 0),
+                BackEvent.EDGE_LEFT);
+        ArgumentCaptor<BackEvent> backEventCaptor = ArgumentCaptor.forClass(BackEvent.class);
+        verify(mIOnBackInvokedCallback).onBackProgressed(backEventCaptor.capture());
+        assertEquals(animationTarget, backEventCaptor.getValue().getDepartingAnimationTarget());
+
+        // Check that back invocation is dispatched.
+        mController.setTriggerBack(true);   // Fake trigger back
+        mController.onMotionEvent(
+                MotionEvent.obtain(0, 0, MotionEvent.ACTION_UP, 0, 0, 0),
+                BackEvent.EDGE_LEFT);
+        verify(mIOnBackInvokedCallback).onBackInvoked();
+    }
 }
diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/startingsurface/StartingSurfaceDrawerTests.java b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/startingsurface/StartingSurfaceDrawerTests.java
index d92b12e..630d0d2 100644
--- a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/startingsurface/StartingSurfaceDrawerTests.java
+++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/startingsurface/StartingSurfaceDrawerTests.java
@@ -24,6 +24,8 @@
 import static com.android.dx.mockito.inline.extended.ExtendedMockito.mockitoSession;
 import static com.android.dx.mockito.inline.extended.ExtendedMockito.spy;
 import static com.android.dx.mockito.inline.extended.ExtendedMockito.spyOn;
+import static com.android.wm.shell.startingsurface.StartingSurfaceDrawer.MAX_ANIMATION_DURATION;
+import static com.android.wm.shell.startingsurface.StartingSurfaceDrawer.MINIMAL_ANIMATION_DURATION;
 
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertNotEquals;
@@ -297,6 +299,56 @@
         assertEquals(mStartingSurfaceDrawer.mStartingWindowRecords.size(), 0);
     }
 
+    @Test
+    public void testMinimumAnimationDuration() {
+        final long maxDuration = MAX_ANIMATION_DURATION;
+        final long minDuration = MINIMAL_ANIMATION_DURATION;
+
+        final long shortDuration = minDuration - 1;
+        final long medianShortDuration = minDuration + 1;
+        final long medianLongDuration = maxDuration - 1;
+        final long longAppDuration = maxDuration + 1;
+
+        // static icon
+        assertEquals(shortDuration, SplashscreenContentDrawer.getShowingDuration(
+                0, shortDuration));
+        // median launch + static icon
+        assertEquals(medianShortDuration, SplashscreenContentDrawer.getShowingDuration(
+                0, medianShortDuration));
+        // long launch + static icon
+        assertEquals(longAppDuration, SplashscreenContentDrawer.getShowingDuration(
+                0, longAppDuration));
+
+        // fast launch + animatable icon
+        assertEquals(shortDuration, SplashscreenContentDrawer.getShowingDuration(
+                shortDuration, shortDuration));
+        assertEquals(minDuration, SplashscreenContentDrawer.getShowingDuration(
+                medianShortDuration, shortDuration));
+        assertEquals(minDuration, SplashscreenContentDrawer.getShowingDuration(
+                longAppDuration, shortDuration));
+
+        // median launch + animatable icon
+        assertEquals(medianShortDuration, SplashscreenContentDrawer.getShowingDuration(
+                shortDuration, medianShortDuration));
+        assertEquals(medianShortDuration, SplashscreenContentDrawer.getShowingDuration(
+                medianShortDuration, medianShortDuration));
+        assertEquals(minDuration, SplashscreenContentDrawer.getShowingDuration(
+                longAppDuration, medianShortDuration));
+        // between min < max launch + animatable icon
+        assertEquals(medianLongDuration, SplashscreenContentDrawer.getShowingDuration(
+                medianShortDuration, medianLongDuration));
+        assertEquals(maxDuration, SplashscreenContentDrawer.getShowingDuration(
+                medianLongDuration, medianShortDuration));
+
+        // long launch + animatable icon
+        assertEquals(longAppDuration, SplashscreenContentDrawer.getShowingDuration(
+                shortDuration, longAppDuration));
+        assertEquals(longAppDuration, SplashscreenContentDrawer.getShowingDuration(
+                medianShortDuration, longAppDuration));
+        assertEquals(longAppDuration, SplashscreenContentDrawer.getShowingDuration(
+                longAppDuration, longAppDuration));
+    }
+
     private StartingWindowInfo createWindowInfo(int taskId, int themeResId) {
         StartingWindowInfo windowInfo = new StartingWindowInfo();
         final ActivityInfo info = new ActivityInfo();
diff --git a/libs/androidfw/tests/BackupHelpers_test.cpp b/libs/androidfw/tests/BackupHelpers_test.cpp
index 86b7fb3..c2fcb69 100644
--- a/libs/androidfw/tests/BackupHelpers_test.cpp
+++ b/libs/androidfw/tests/BackupHelpers_test.cpp
@@ -50,7 +50,7 @@
 TEST_F(BackupHelpersTest, WriteTarFileWithSizeGreaterThan2GB) {
   TemporaryFile tf;
   // Allocate a 2 GB file.
-  off64_t fileSize = 2ll * 1024ll * 1024ll * 1024ll + 512ll;
+  off64_t fileSize = 2LL * 1024LL * 1024LL * 1024LL + 512LL;
   ASSERT_EQ(0, posix_fallocate64(tf.fd, 0, fileSize));
   off64_t tarSize = 0;
   int err = write_tarfile(/* packageName */ String8("test-pkg"), /* domain */ String8(""), /* rootpath */ String8(""), /* filePath */ String8(tf.path), /* outSize */ &tarSize, /* writer */ NULL);
diff --git a/location/java/android/location/GnssClock.java b/location/java/android/location/GnssClock.java
index ed4bf1b..62f50b5 100644
--- a/location/java/android/location/GnssClock.java
+++ b/location/java/android/location/GnssClock.java
@@ -23,9 +23,9 @@
 import android.os.Parcelable;
 
 /**
- * A class containing a GPS clock timestamp.
+ * A class containing a GNSS clock timestamp.
  *
- * <p>It represents a measurement of the GPS receiver's clock.
+ * <p>It represents a measurement of the GNSS receiver's clock.
  */
 public final class GnssClock implements Parcelable {
     // The following enumerations must be in sync with the values declared in gps.h
diff --git a/location/java/android/location/Location.java b/location/java/android/location/Location.java
index 1fcb194..f1605f1 100644
--- a/location/java/android/location/Location.java
+++ b/location/java/android/location/Location.java
@@ -45,8 +45,8 @@
  * timestamp, accuracy, and other information such as bearing, altitude and velocity.
  *
  * <p>All locations generated through {@link LocationManager} are guaranteed to have a valid
- * latitude, longitude, timestamp (both UTC time and elapsed real-time since boot), and accuracy.
- * All other parameters are optional.
+ * latitude, longitude, timestamp (both Unix epoch time and elapsed realtime since boot), and
+ * accuracy. All other parameters are optional.
  */
 public class Location implements Parcelable {
 
@@ -240,36 +240,39 @@
     }
 
     /**
-     * Return the UTC time of this location fix, in milliseconds since epoch (January 1, 1970).
+     * Returns the Unix epoch time of this location fix, in milliseconds since the start of the Unix
+     * epoch (00:00:00 January 1, 1970 UTC).
      *
      * <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.
+     * time originate 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).
+     * common to use the device's Unix epoch time system clock (which may be incorrect).
      *
-     * <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>Note that the device's Unix epoch time system clock 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 the elapsed realtime clock is guaranteed to be monotonic.
      *
      * <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
+     * <p>All locations generated by the {@link LocationManager} are guaranteed to have this time
+     * set, however remember that the device's system clock may have changed since the location was
      * generated.
      *
-     * @return UTC time of this location
+     * @return the Unix epoch time of this location
      */
     public @IntRange long getTime() {
         return mTimeMs;
     }
 
     /**
-     * Set the UTC time of this location, in milliseconds since epoch (January 1, 1970).
+     * Sets the Unix epoch time of this location fix, in milliseconds since the start of the Unix
+     * epoch (00:00:00 January 1, 1970 UTC).
      *
-     * @param timeMs UTC time of this location
+     * @param timeMs the Unix epoch time of this location
+     * @see #getTime for more information about times / clocks
      */
     public void setTime(@IntRange long timeMs) {
         mTimeMs = timeMs;
diff --git a/location/java/android/location/OnNmeaMessageListener.java b/location/java/android/location/OnNmeaMessageListener.java
index 1c02ebd..def688c 100644
--- a/location/java/android/location/OnNmeaMessageListener.java
+++ b/location/java/android/location/OnNmeaMessageListener.java
@@ -31,9 +31,8 @@
     /**
      * Called when an NMEA message is received.
      * @param message NMEA message
-     * @param timestamp Date and time of the location fix, as reported by the GNSS
-     *                  chipset. The value is specified in milliseconds since 0:00
-     *                  UTC 1 January 1970.
+     * @param timestamp Timestamp of the location fix, as reported by the GNSS chipset. The value
+     *                  is specified in Unix time milliseconds since 1st January 1970, 00:00:00 UTC
      */
     void onNmeaMessage(String message, long timestamp);
 }
diff --git a/media/java/android/media/INearbyMediaDevicesProvider.aidl b/media/java/android/media/INearbyMediaDevicesProvider.aidl
new file mode 100644
index 0000000..5330123
--- /dev/null
+++ b/media/java/android/media/INearbyMediaDevicesProvider.aidl
@@ -0,0 +1,38 @@
+/*
+ * Copyright (C) 2022 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.media;
+
+import android.media.INearbyMediaDevicesUpdateCallback;
+import android.media.NearbyDevice;
+
+/**
+ * A binder-compatible version of {@link android.media.NearbyMediaDevicesProvider}. See that class
+ * for more information.
+ *
+ * @hide
+ */
+interface INearbyMediaDevicesProvider {
+  /**
+   * Registers a callback that should be notified each time nearby media device(s) change.
+   */
+  oneway void registerNearbyDevicesCallback(in INearbyMediaDevicesUpdateCallback callback) = 2;
+
+  /**
+   * Unregisters a callback. See {@link registerNearbyDevicesCallback}.
+   */
+  oneway void unregisterNearbyDevicesCallback(in INearbyMediaDevicesUpdateCallback callback) = 3;
+}
diff --git a/media/java/android/media/INearbyMediaDevicesUpdateCallback.aidl b/media/java/android/media/INearbyMediaDevicesUpdateCallback.aidl
new file mode 100644
index 0000000..24397bb
--- /dev/null
+++ b/media/java/android/media/INearbyMediaDevicesUpdateCallback.aidl
@@ -0,0 +1,43 @@
+/*
+ * Copyright (C) 2022 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.media;
+
+import android.media.NearbyDevice;
+
+/**
+ * A callback used to receive updates about the status of nearby devices that are able to play
+ * media.
+ *
+ * External clients may allow registration of these callbacks and external clients will be
+ * responsible for notifying the callbacks appropriately.
+ *
+ * @hide
+ */
+oneway interface INearbyMediaDevicesUpdateCallback {
+    /**
+     * Invoked by external clients when changes in nearby media device(s) are detected.
+     *
+     * When a callback is newly registered, it should be immediately notified of the current nearby
+     * media devices. Afterwards, the list of devices passed to the callback should always contain
+     * the full set of nearby media devices any time you get an update. If a device is no longer
+     * valid (went offline, e.g.) then it should be omitted from the list in the next update.
+     *
+     * @param nearbyDevices the list of nearby devices that have changed status due to moving closer
+     *                      or further away.
+     */
+    void onDevicesUpdated(in List<NearbyDevice> nearbyDevices);
+}
diff --git a/packages/SystemUI/shared/src/com/android/systemui/shared/media/NearbyDevice.aidl b/media/java/android/media/NearbyDevice.aidl
similarity index 93%
rename from packages/SystemUI/shared/src/com/android/systemui/shared/media/NearbyDevice.aidl
rename to media/java/android/media/NearbyDevice.aidl
index 62b50ed..d6140a7 100644
--- a/packages/SystemUI/shared/src/com/android/systemui/shared/media/NearbyDevice.aidl
+++ b/media/java/android/media/NearbyDevice.aidl
@@ -14,6 +14,6 @@
  * limitations under the License.
  */
 
-package com.android.systemui.shared.media;
+package android.media;
 
 parcelable NearbyDevice;
diff --git a/media/java/android/media/NearbyDevice.java b/media/java/android/media/NearbyDevice.java
new file mode 100644
index 0000000..cb85109
--- /dev/null
+++ b/media/java/android/media/NearbyDevice.java
@@ -0,0 +1,161 @@
+/*
+ * Copyright (C) 2022 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.media;
+
+import android.annotation.IntDef;
+import android.annotation.NonNull;
+import android.annotation.SystemApi;
+import android.os.Parcel;
+import android.os.Parcelable;
+
+
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+
+/**
+ * A parcelable representing a nearby device that can be used for media transfer.
+ * <p>
+ * This class includes:
+ * <ul>
+ *   <li>an ID identifying the media route.</li>
+ *   <li>a range zone specifying how far away this device is from the device with the media route.
+ *   </li>
+ * </ul>
+ * @hide
+ */
+@SystemApi
+public final class NearbyDevice implements Parcelable {
+    /**
+     * Unknown distance range.
+     */
+    public static final int RANGE_UNKNOWN = 0;
+
+    /**
+     * Distance is very far away from the peer device.
+     */
+    public static final int RANGE_FAR = 1;
+
+    /**
+     * Distance is relatively long from the peer device, typically a few meters.
+     */
+    public static final int RANGE_LONG = 2;
+
+    /**
+     * Distance is close to the peer device, typically with one or two meter.
+     */
+    public static final int RANGE_CLOSE = 3;
+
+    /**
+     * Distance is very close to the peer device, typically within one meter or less.
+     */
+    public static final int RANGE_WITHIN_REACH = 4;
+
+    /**
+     * The various range zones a device can be in, in relation to the current device.
+     *
+     * @hide
+     */
+    @IntDef(prefix = { "RANGE_" }, value = {
+            RANGE_UNKNOWN,
+            RANGE_FAR,
+            RANGE_LONG,
+            RANGE_CLOSE,
+            RANGE_WITHIN_REACH
+    })
+    @Retention(RetentionPolicy.SOURCE)
+    public @interface RangeZone {}
+
+    /**
+     * Gets a human-readable string of the range zone.
+     */
+    @NonNull
+    public static String rangeZoneToString(@RangeZone int rangeZone) {
+        switch (rangeZone) {
+            case RANGE_UNKNOWN:
+                return "UNKNOWN";
+            case RANGE_FAR:
+                return "FAR";
+            case RANGE_LONG:
+                return "LONG";
+            case RANGE_CLOSE:
+                return "CLOSE";
+            case RANGE_WITHIN_REACH:
+                return "WITHIN_REACH";
+            default:
+                return "Invalid";
+        }
+    }
+
+    @NonNull private final String mMediaRoute2Id;
+    @RangeZone private final int mRangeZone;
+
+    public NearbyDevice(@NonNull String mediaRoute2Id, int rangeZone) {
+        mMediaRoute2Id = mediaRoute2Id;
+        mRangeZone = rangeZone;
+    }
+
+    private NearbyDevice(@NonNull Parcel in) {
+        mMediaRoute2Id = in.readString();
+        mRangeZone = in.readInt();
+    }
+
+    @NonNull
+    public static final Creator<NearbyDevice> CREATOR = new Creator<NearbyDevice>() {
+        @Override
+        public NearbyDevice createFromParcel(@NonNull Parcel in) {
+            return new NearbyDevice(in);
+        }
+
+        @Override
+        public NearbyDevice[] newArray(int size) {
+            return new NearbyDevice[size];
+        }
+    };
+
+    @Override
+    public int describeContents() {
+        return 0;
+    }
+
+    @Override
+    public String toString() {
+        return "NearbyDevice{mediaRoute2Id=" + mMediaRoute2Id
+                + " rangeZone=" + rangeZoneToString(mRangeZone) + "}";
+    }
+
+    @Override
+    public void writeToParcel(@NonNull Parcel dest, int flags) {
+        dest.writeString8(mMediaRoute2Id);
+        dest.writeInt(mRangeZone);
+    }
+
+    /**
+     * Returns the ID of the media route associated with the device.
+     *
+     * @see MediaRoute2Info#getId
+     */
+    @NonNull
+    public String getMediaRoute2Id() {
+        return mMediaRoute2Id;
+    }
+
+    /** Returns the range that the device is currently in. */
+    @RangeZone
+    public int getRangeZone() {
+        return mRangeZone;
+    }
+}
diff --git a/opengl/java/android/opengl/EGLExt.java b/opengl/java/android/opengl/EGLExt.java
index 74b64ea..1570e0e 100644
--- a/opengl/java/android/opengl/EGLExt.java
+++ b/opengl/java/android/opengl/EGLExt.java
@@ -18,6 +18,11 @@
 
 package android.opengl;
 
+import android.annotation.NonNull;
+import android.hardware.SyncFence;
+import android.os.ParcelFileDescriptor;
+import android.util.Log;
+
 /**
  * EGL Extensions
  */
@@ -30,6 +35,12 @@
     public static final int EGL_OPENGL_ES3_BIT_KHR          = 0x0040;
     public static final int EGL_RECORDABLE_ANDROID          = 0x3142;
 
+    // EGL_ANDROID_native_fence_sync
+    public static final int EGL_SYNC_NATIVE_FENCE_ANDROID     = 0x3144;
+    public static final int EGL_SYNC_NATIVE_FENCE_FD_ANDROID  = 0x3145;
+    public static final int EGL_SYNC_NATIVE_FENCE_SIGNALED_ANDROID = 0x3146;
+    public static final int EGL_NO_NATIVE_FENCE_FD_ANDROID    = -1;
+
     native private static void _nativeClassInit();
     static {
         _nativeClassInit();
@@ -43,4 +54,33 @@
         long time
     );
 
+    /**
+     * Retrieves the SyncFence for an EGLSync created with EGL_SYNC_NATIVE_FENCE_ANDROID
+     *
+     * See <a href="https://www.khronos.org/registry/EGL/extensions/ANDROID/EGL_ANDROID_native_fence_sync.txt">
+     *     EGL_ANDROID_native_fence_sync</a> extension for more details
+     * @param display The EGLDisplay connection
+     * @param sync The EGLSync to fetch the SyncFence from
+     * @return A SyncFence representing the native fence.
+     *       * If <sync> is not a valid sync object for <display>,
+     *         an {@link SyncFence#isValid() invalid} SyncFence is returned and an EGL_BAD_PARAMETER
+     *         error is generated.
+     *       * If the EGL_SYNC_NATIVE_FENCE_FD_ANDROID attribute of <sync> is
+     *         EGL_NO_NATIVE_FENCE_FD_ANDROID, an {@link SyncFence#isValid() invalid} SyncFence is
+     *         returned and an EGL_BAD_PARAMETER error is generated.
+     *       * If <display> does not match the display passed to eglCreateSync
+     *         when <sync> was created, the behaviour is undefined.
+     */
+    public static @NonNull SyncFence eglDupNativeFenceFDANDROID(@NonNull EGLDisplay display,
+            @NonNull EGLSync sync) {
+        int fd = eglDupNativeFenceFDANDROIDImpl(display, sync);
+        Log.d("EGL", "eglDupNativeFence returned " + fd);
+        if (fd >= 0) {
+            return SyncFence.create(ParcelFileDescriptor.adoptFd(fd));
+        } else {
+            return SyncFence.createEmpty();
+        }
+    }
+
+    private static native int eglDupNativeFenceFDANDROIDImpl(EGLDisplay display, EGLSync sync);
 }
diff --git a/packages/CompanionDeviceManager/src/com/android/companiondevicemanager/CompanionDeviceActivity.java b/packages/CompanionDeviceManager/src/com/android/companiondevicemanager/CompanionDeviceActivity.java
index 9d3fc7f..16e851b 100644
--- a/packages/CompanionDeviceManager/src/com/android/companiondevicemanager/CompanionDeviceActivity.java
+++ b/packages/CompanionDeviceManager/src/com/android/companiondevicemanager/CompanionDeviceActivity.java
@@ -51,6 +51,8 @@
 
 import androidx.appcompat.app.AppCompatActivity;
 
+import java.util.List;
+
 /**
  *  A CompanionDevice activity response for showing the available
  *  nearby devices to be associated with.
@@ -204,10 +206,7 @@
         if (mRequest.isSelfManaged()) {
             initUiForSelfManagedAssociation(appLabel);
         } else if (mRequest.isSingleDevice()) {
-            // TODO(b/211722613)
-            // Treat singleDevice as the multipleDevices for now
-            // initUiForSingleDevice(appLabel);
-            initUiForMultipleDevices(appLabel);
+            initUiForSingleDevice(appLabel);
         } else {
             initUiForMultipleDevices(appLabel);
         }
@@ -221,12 +220,6 @@
     }
 
     private void onUserSelectedDevice(@NonNull DeviceFilterPair<?> selectedDevice) {
-        if (mSelectedDevice != null) {
-            if (DEBUG) Log.w(TAG, "Already selected.");
-            return;
-        }
-        mSelectedDevice = requireNonNull(selectedDevice);
-
         final MacAddress macAddress = selectedDevice.getMacAddress();
         onAssociationApproved(macAddress);
     }
@@ -346,13 +339,26 @@
     private void initUiForSingleDevice(CharSequence appLabel) {
         if (DEBUG) Log.i(TAG, "initUiFor_SingleDevice()");
 
-        // TODO: use real name
-        final String deviceName = "<device>";
         final String deviceProfile = mRequest.getDeviceProfile();
 
+        CompanionDeviceDiscoveryService.getScanResult().observe(this,
+                deviceFilterPairs -> updateSingleDeviceUi(
+                        deviceFilterPairs, deviceProfile, appLabel));
+
+        mListView.setVisibility(View.GONE);
+    }
+
+    private void updateSingleDeviceUi(List<DeviceFilterPair<?>> deviceFilterPairs,
+            String deviceProfile, CharSequence appLabel) {
+        // Ignore "empty" scan repots.
+        if (deviceFilterPairs.isEmpty()) return;
+        mSelectedDevice = requireNonNull(deviceFilterPairs.get(0));
+
+        final String deviceName = mSelectedDevice.getDisplayName();
         final Spanned title = getHtmlFromResources(
                 this, R.string.confirmation_title, appLabel, deviceName);
         final Spanned summary;
+
         if (deviceProfile == null) {
             summary = getHtmlFromResources(this, R.string.summary_generic);
         } else if (deviceProfile.equals(DEVICE_PROFILE_WATCH)) {
@@ -363,8 +369,6 @@
 
         mTitle.setText(title);
         mSummary.setText(summary);
-
-        mListView.setVisibility(View.GONE);
     }
 
     private void initUiForMultipleDevices(CharSequence appLabel) {
@@ -405,6 +409,14 @@
         if (DEBUG) Log.d(TAG, "onListItemClick() " + position);
 
         final DeviceFilterPair<?> selectedDevice = mAdapter.getItem(position);
+
+        if (mSelectedDevice != null) {
+            if (DEBUG) Log.w(TAG, "Already selected.");
+            return;
+        }
+
+        mSelectedDevice = requireNonNull(selectedDevice);
+
         onUserSelectedDevice(selectedDevice);
     }
 
@@ -417,9 +429,7 @@
         if (mRequest.isSelfManaged()) {
             onAssociationApproved(null);
         } else {
-            // TODO(b/211722613): call onUserSelectedDevice().
-            throw new UnsupportedOperationException(
-                    "isSingleDevice() requests are not supported yet.");
+            onUserSelectedDevice(mSelectedDevice);
         }
     }
 
diff --git a/packages/CompanionDeviceManager/src/com/android/companiondevicemanager/CompanionDeviceDiscoveryService.java b/packages/CompanionDeviceManager/src/com/android/companiondevicemanager/CompanionDeviceDiscoveryService.java
index 5d48708..5f07fcf 100644
--- a/packages/CompanionDeviceManager/src/com/android/companiondevicemanager/CompanionDeviceDiscoveryService.java
+++ b/packages/CompanionDeviceManager/src/com/android/companiondevicemanager/CompanionDeviceDiscoveryService.java
@@ -103,6 +103,8 @@
 
     private final Runnable mTimeoutRunnable = this::timeout;
 
+    private boolean mStopAfterFirstMatch;;
+
     /**
      * A state enum for devices' discovery.
      */
@@ -163,8 +165,7 @@
                 break;
 
             case ACTION_STOP_DISCOVERY:
-                stopDiscoveryAndFinish();
-                sStateLiveData.setValue(DiscoveryState.FINISHED_STOPPED);
+                stopDiscoveryAndFinish(/* timeout */ false);
                 break;
         }
         return START_NOT_STICKY;
@@ -182,6 +183,7 @@
         requireNonNull(request);
 
         if (mDiscoveryStarted) throw new RuntimeException("Discovery in progress.");
+        mStopAfterFirstMatch = request.isSingleDevice();
         mDiscoveryStarted = true;
         sStateLiveData.setValue(DiscoveryState.DISCOVERY_IN_PROGRESS);
         sScanResultsLiveData.setValue(Collections.emptyList());
@@ -208,7 +210,7 @@
     }
 
     @MainThread
-    private void stopDiscoveryAndFinish() {
+    private void stopDiscoveryAndFinish(boolean timeout) {
         if (DEBUG) Log.i(TAG, "stopDiscovery()");
 
         if (!mDiscoveryStarted) {
@@ -243,6 +245,12 @@
 
         Handler.getMain().removeCallbacks(mTimeoutRunnable);
 
+        if (timeout) {
+            sStateLiveData.setValue(DiscoveryState.FINISHED_TIMEOUT);
+        } else {
+            sStateLiveData.setValue(DiscoveryState.FINISHED_STOPPED);
+        }
+
         // "Finish".
         stopSelf();
     }
@@ -332,6 +340,7 @@
     private void onDeviceFound(@NonNull DeviceFilterPair<?> device) {
         runOnMainThread(() -> {
             if (DEBUG) Log.v(TAG, "onDeviceFound() " + device);
+            if (mDiscoveryStopped) return;
             if (mDevicesFound.contains(device)) {
                 // TODO: update the device instead of ignoring (new found device may contain
                 //  additional/updated info, eg. name of the device).
@@ -347,6 +356,10 @@
             mDevicesFound.add(device);
             // Then: notify observers.
             sScanResultsLiveData.setValue(mDevicesFound);
+            // Stop discovery when there's one device found for singleDevice.
+            if (mStopAfterFirstMatch) {
+                stopDiscoveryAndFinish(/* timeout */ false);
+            }
         });
     }
 
@@ -378,8 +391,7 @@
 
     private void timeout() {
         if (DEBUG) Log.i(TAG, "timeout()");
-        stopDiscoveryAndFinish();
-        sStateLiveData.setValue(DiscoveryState.FINISHED_TIMEOUT);
+        stopDiscoveryAndFinish(/* timeout */ true);
     }
 
     @Override
diff --git a/packages/SettingsLib/Tile/src/com/android/settingslib/drawer/ActivityTile.java b/packages/SettingsLib/Tile/src/com/android/settingslib/drawer/ActivityTile.java
index b739ee6..98ea8b34 100644
--- a/packages/SettingsLib/Tile/src/com/android/settingslib/drawer/ActivityTile.java
+++ b/packages/SettingsLib/Tile/src/com/android/settingslib/drawer/ActivityTile.java
@@ -35,8 +35,7 @@
     private static final String TAG = "ActivityTile";
 
     public ActivityTile(ActivityInfo info, String category) {
-        super(info, category);
-        setMetaData(info.metaData);
+        super(info, category, info.metaData);
     }
 
     ActivityTile(Parcel in) {
diff --git a/packages/SettingsLib/Tile/src/com/android/settingslib/drawer/ProviderTile.java b/packages/SettingsLib/Tile/src/com/android/settingslib/drawer/ProviderTile.java
index 312d30e..54da585 100644
--- a/packages/SettingsLib/Tile/src/com/android/settingslib/drawer/ProviderTile.java
+++ b/packages/SettingsLib/Tile/src/com/android/settingslib/drawer/ProviderTile.java
@@ -43,8 +43,7 @@
     private String mKey;
 
     public ProviderTile(ProviderInfo info, String category, Bundle metaData) {
-        super(info, category);
-        setMetaData(metaData);
+        super(info, category, metaData);
         mAuthority = info.authority;
         mKey = metaData.getString(META_DATA_PREFERENCE_KEYHINT);
     }
diff --git a/packages/SettingsLib/Tile/src/com/android/settingslib/drawer/Tile.java b/packages/SettingsLib/Tile/src/com/android/settingslib/drawer/Tile.java
index 220cf6b..a0c8ac4 100644
--- a/packages/SettingsLib/Tile/src/com/android/settingslib/drawer/Tile.java
+++ b/packages/SettingsLib/Tile/src/com/android/settingslib/drawer/Tile.java
@@ -71,16 +71,19 @@
     private Bundle mMetaData;
     private String mCategory;
 
-    public Tile(ComponentInfo info, String category) {
+    public Tile(ComponentInfo info, String category, Bundle metaData) {
         mComponentInfo = info;
         mComponentPackage = mComponentInfo.packageName;
         mComponentName = mComponentInfo.name;
         mCategory = category;
+        mMetaData = metaData;
         mIntent = new Intent().setClassName(mComponentPackage, mComponentName);
+        if (isNewTask()) {
+            mIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+        }
     }
 
     Tile(Parcel in) {
-        final boolean isProviderTile = in.readBoolean();
         mComponentPackage = in.readString();
         mComponentName = in.readString();
         mIntent = new Intent().setClassName(mComponentPackage, mComponentName);
@@ -90,6 +93,9 @@
         }
         mCategory = in.readString();
         mMetaData = in.readBundle();
+        if (isNewTask()) {
+            mIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+        }
     }
 
     @Override
@@ -332,8 +338,7 @@
     /**
      * Whether the {@link Activity} should be launched in a separate task.
      */
-    public boolean isNewTask(Context context) {
-        ensureMetadataNotStale(context);
+    public boolean isNewTask() {
         if (mMetaData != null
                 && mMetaData.containsKey(META_DATA_NEW_TASK)) {
             return mMetaData.getBoolean(META_DATA_NEW_TASK);
diff --git a/packages/SettingsProvider/src/com/android/providers/settings/SettingsProtoDumpUtil.java b/packages/SettingsProvider/src/com/android/providers/settings/SettingsProtoDumpUtil.java
index 7381e05..a2b6992 100644
--- a/packages/SettingsProvider/src/com/android/providers/settings/SettingsProtoDumpUtil.java
+++ b/packages/SettingsProvider/src/com/android/providers/settings/SettingsProtoDumpUtil.java
@@ -696,6 +696,14 @@
                 Settings.Global.MAX_ERROR_BYTES_PREFIX,
                 GlobalSettingsProto.MAX_ERROR_BYTES);
 
+        final long managedDeviceProvisioningToken =
+                p.start(GlobalSettingsProto.MANAGED_DEVICE_PROVISIONING);
+        dumpSetting(s, p,
+                Settings.Global.MANAGED_PROVISIONING_DEFER_PROVISIONING_TO_ROLE_HOLDER,
+                GlobalSettingsProto.ManagedDeviceProvisioning
+                        .MANAGED_PROVISIONING_DEFER_PROVISIONING_TO_ROLE_HOLDER);
+        p.end(managedDeviceProvisioningToken);
+
         final long euiccToken = p.start(GlobalSettingsProto.EUICC);
         dumpSetting(s, p,
                 Settings.Global.EUICC_PROVISIONED,
diff --git a/packages/SettingsProvider/test/src/android/provider/SettingsBackupTest.java b/packages/SettingsProvider/test/src/android/provider/SettingsBackupTest.java
index 2905429..3f4372b 100644
--- a/packages/SettingsProvider/test/src/android/provider/SettingsBackupTest.java
+++ b/packages/SettingsProvider/test/src/android/provider/SettingsBackupTest.java
@@ -594,6 +594,7 @@
                     Settings.Global.KEY_CHORD_POWER_VOLUME_UP,
                     Settings.Global.CLOCKWORK_HOME_READY,
                     Settings.Global.WATCHDOG_TIMEOUT_MILLIS,
+                    Settings.Global.MANAGED_PROVISIONING_DEFER_PROVISIONING_TO_ROLE_HOLDER,
                     Settings.Global.Wearable.BATTERY_SAVER_MODE,
                     Settings.Global.Wearable.COMBINED_LOCATION_ENABLED,
                     Settings.Global.Wearable.HAS_PAY_TOKENS,
diff --git a/packages/SystemUI/AndroidManifest.xml b/packages/SystemUI/AndroidManifest.xml
index 6b6aa71..ad6074a 100644
--- a/packages/SystemUI/AndroidManifest.xml
+++ b/packages/SystemUI/AndroidManifest.xml
@@ -886,12 +886,6 @@
             android:singleUser="true"
             android:permission="android.permission.BIND_DREAM_SERVICE" />
 
-        <!-- Service for external clients to notify us of nearby media devices -->
-        <!-- TODO(b/216313420): Export and guard with a permission. -->
-        <service
-            android:name=".media.nearby.NearbyMediaDevicesService"
-            />
-
         <receiver
             android:name=".tuner.TunerService$ClearReceiver"
             android:exported="false">
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 ffee894..d4b4a74 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
@@ -20,7 +20,7 @@
 import android.app.smartspace.SmartspaceAction;
 import android.app.smartspace.SmartspaceTarget;
 import android.app.smartspace.SmartspaceTargetEvent;
-import android.app.smartspace.uitemplatedata.SmartspaceTapAction;
+import android.app.smartspace.uitemplatedata.TapAction;
 import android.content.ActivityNotFoundException;
 import android.content.Intent;
 import android.graphics.drawable.Drawable;
@@ -144,7 +144,7 @@
             }
         }
 
-        default void startFromAction(SmartspaceTapAction action, View v, boolean showOnLockscreen) {
+        default void startFromAction(TapAction action, View v, boolean showOnLockscreen) {
             try {
                 if (action.getIntent() != null) {
                     startIntent(v, action.getIntent(), showOnLockscreen);
diff --git a/packages/SystemUI/res-keyguard/layout/footer_actions.xml b/packages/SystemUI/res-keyguard/layout/footer_actions.xml
index 339cab4..fb401ee 100644
--- a/packages/SystemUI/res-keyguard/layout/footer_actions.xml
+++ b/packages/SystemUI/res-keyguard/layout/footer_actions.xml
@@ -77,16 +77,6 @@
             android:src="@drawable/ic_settings"
             android:tint="?android:attr/textColorPrimary" />
 
-        <com.android.systemui.statusbar.AlphaOptimizedImageView
-            android:id="@+id/tuner_icon"
-            android:layout_width="8dp"
-            android:layout_height="8dp"
-            android:layout_gravity="center_horizontal|bottom"
-            android:layout_marginBottom="@dimen/qs_footer_icon_padding"
-            android:src="@drawable/tuner"
-            android:tint="?android:attr/textColorTertiary"
-            android:visibility="invisible" />
-
     </com.android.systemui.statusbar.AlphaOptimizedFrameLayout>
 
 </com.android.systemui.qs.FooterActionsView>
\ No newline at end of file
diff --git a/packages/SystemUI/res-keyguard/layout/new_footer_actions.xml b/packages/SystemUI/res-keyguard/layout/new_footer_actions.xml
index 4884df7..59712c0 100644
--- a/packages/SystemUI/res-keyguard/layout/new_footer_actions.xml
+++ b/packages/SystemUI/res-keyguard/layout/new_footer_actions.xml
@@ -78,16 +78,6 @@
                 android:src="@drawable/ic_settings"
                 android:tint="?android:attr/textColorPrimary" />
 
-            <com.android.systemui.statusbar.AlphaOptimizedImageView
-                android:id="@+id/tuner_icon"
-                android:layout_width="8dp"
-                android:layout_height="8dp"
-                android:layout_gravity="center_horizontal|bottom"
-                android:layout_marginBottom="@dimen/qs_footer_icon_padding"
-                android:src="@drawable/tuner"
-                android:tint="?android:attr/textColorTertiary"
-                android:visibility="invisible" />
-
         </com.android.systemui.statusbar.AlphaOptimizedFrameLayout>
 
         <com.android.systemui.statusbar.AlphaOptimizedImageView
diff --git a/packages/SystemUI/res/layout/dream_overlay_complication_clock_time.xml b/packages/SystemUI/res/layout/dream_overlay_complication_clock_time.xml
index 4824f4c..e066d38 100644
--- a/packages/SystemUI/res/layout/dream_overlay_complication_clock_time.xml
+++ b/packages/SystemUI/res/layout/dream_overlay_complication_clock_time.xml
@@ -20,6 +20,7 @@
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
     android:fontFamily="@font/clock"
+    android:includeFontPadding="false"
     android:textColor="@android:color/white"
     android:format12Hour="h:mm"
     android:format24Hour="kk:mm"
diff --git a/packages/SystemUI/res/values/dimens.xml b/packages/SystemUI/res/values/dimens.xml
index d1f4f19..47ffb18 100644
--- a/packages/SystemUI/res/values/dimens.xml
+++ b/packages/SystemUI/res/values/dimens.xml
@@ -43,6 +43,8 @@
     <dimen name="navigation_edge_panel_height">96dp</dimen>
     <!-- The threshold to drag to trigger the edge action -->
     <dimen name="navigation_edge_action_drag_threshold">16dp</dimen>
+    <!-- The threshold to progress back animation for edge swipe -->
+    <dimen name="navigation_edge_action_progress_threshold">400dp</dimen>
     <!-- The minimum display position of the arrow on the screen -->
     <dimen name="navigation_edge_arrow_min_y">64dp</dimen>
     <!-- The amount by which the arrow is shifted to avoid the finger-->
diff --git a/packages/SystemUI/shared/src/com/android/systemui/shared/media/INearbyMediaDevicesProvider.aidl b/packages/SystemUI/shared/src/com/android/systemui/shared/media/INearbyMediaDevicesProvider.aidl
deleted file mode 100644
index 6db06f0..0000000
--- a/packages/SystemUI/shared/src/com/android/systemui/shared/media/INearbyMediaDevicesProvider.aidl
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- * Copyright (C) 2022 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.shared.media;
-
-import com.android.systemui.shared.media.INearbyMediaDevicesUpdateCallback;
-import com.android.systemui.shared.media.NearbyDevice;
-
-/**
- * An interface that provides information about nearby devices that are able to play media.
- *
- * External clients will implement this interface and System UI will invoke it if it's passed to
- * SystemUI via {@link INearbyMediaDevicesService.registerProvider}.
- */
-interface INearbyMediaDevicesProvider {
-  /**
-   * Returns a list of nearby devices that are able to play media.
-   */
-  List<NearbyDevice> getCurrentNearbyDevices() = 1;
-
-  /**
-   * Registers a callback that will be notified each time the status of a nearby device changes.
-   */
-  oneway void registerNearbyDevicesCallback(in INearbyMediaDevicesUpdateCallback callback) = 2;
-
-  /**
-   * Unregisters a callback. See {@link registerNearbyDevicesCallback}.
-   */
-  oneway void unregisterNearbyDevicesCallback(in INearbyMediaDevicesUpdateCallback callback) = 3;
-}
diff --git a/packages/SystemUI/shared/src/com/android/systemui/shared/media/INearbyMediaDevicesService.aidl b/packages/SystemUI/shared/src/com/android/systemui/shared/media/INearbyMediaDevicesService.aidl
deleted file mode 100644
index 4f3e10d..0000000
--- a/packages/SystemUI/shared/src/com/android/systemui/shared/media/INearbyMediaDevicesService.aidl
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * Copyright (C) 2022 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.shared.media;
-
-import com.android.systemui.shared.media.INearbyMediaDevicesProvider;
-
-/**
- * An interface that can be invoked to notify System UI of nearby media devices.
- *
- * External clients wanting to notify System UI about the status of nearby media devices should
- * implement {@link INearbyMediaDevicesProvider} and then register it with system UI using this
- * service.
- *
- * System UI will implement this interface and external clients will invoke it.
- */
-interface INearbyMediaDevicesService {
-  /** Registers a new provider. */
-  oneway void registerProvider(INearbyMediaDevicesProvider provider) = 1;
-}
diff --git a/packages/SystemUI/shared/src/com/android/systemui/shared/media/INearbyMediaDevicesUpdateCallback.aidl b/packages/SystemUI/shared/src/com/android/systemui/shared/media/INearbyMediaDevicesUpdateCallback.aidl
deleted file mode 100644
index a835f52..0000000
--- a/packages/SystemUI/shared/src/com/android/systemui/shared/media/INearbyMediaDevicesUpdateCallback.aidl
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- * Copyright (C) 2022 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.shared.media;
-
-/**
- * A callback used to notify implementors of changes in the status of nearby devices that are able
- * to play media.
- *
- * External clients may allow registration of these callbacks and external clients will be
- * responsible for notifying the callbacks appropriately. System UI is only a mediator between the
- * external client and these callbacks.
- */
-interface INearbyMediaDevicesUpdateCallback {
-    /** Unknown distance range. */
-    const int RANGE_UNKNOWN = 0;
-    /** Distance is very far away from the peer device. */
-    const int RANGE_FAR = 1;
-    /** Distance is relatively long from the peer device, typically a few meters. */
-    const int RANGE_LONG = 2;
-    /** Distance is close to the peer device, typically with one or two meter. */
-    const int RANGE_CLOSE = 3;
-    /** Distance is very close to the peer device, typically within one meter or less. */
-    const int RANGE_WITHIN_REACH = 4;
-
-    /** Invoked by external clients when media device changes are detected. */
-    oneway void nearbyDeviceUpdate(in String routeId, in int rangeZone) = 1;
-}
diff --git a/packages/SystemUI/shared/src/com/android/systemui/shared/media/NearbyDevice.kt b/packages/SystemUI/shared/src/com/android/systemui/shared/media/NearbyDevice.kt
deleted file mode 100644
index 9cab3ab..0000000
--- a/packages/SystemUI/shared/src/com/android/systemui/shared/media/NearbyDevice.kt
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
- * Copyright (C) 2022 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.shared.media
-
-import android.os.Parcel
-import android.os.Parcelable
-
-/**
- * A parcelable representing a nearby device that can be used for media transfer.
- *
- * This class includes:
- *   - [routeId] identifying the media route
- *   - [rangeZone] specifying how far away the device with the media route is from this device.
- */
-class NearbyDevice(
-    val routeId: String?,
-    @RangeZone val rangeZone: Int
-) : Parcelable {
-
-    private constructor(parcel: Parcel) : this(
-        routeId = parcel.readString() ?: null,
-        rangeZone = parcel.readInt()
-    )
-
-    override fun describeContents() = 0
-
-    override fun writeToParcel(out: Parcel, flags: Int) {
-        out.writeString(routeId)
-        out.writeInt(rangeZone)
-    }
-
-    companion object CREATOR : Parcelable.Creator<NearbyDevice?> {
-        override fun createFromParcel(parcel: Parcel) = NearbyDevice(parcel)
-        override fun newArray(size: Int) = arrayOfNulls<NearbyDevice?>(size)
-    }
-}
diff --git a/packages/SystemUI/shared/src/com/android/systemui/shared/media/RangeZone.kt b/packages/SystemUI/shared/src/com/android/systemui/shared/media/RangeZone.kt
deleted file mode 100644
index b5eaff6..0000000
--- a/packages/SystemUI/shared/src/com/android/systemui/shared/media/RangeZone.kt
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- * Copyright (C) 2022 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.shared.media
-
-import androidx.annotation.IntDef
-import kotlin.annotation.AnnotationRetention
-
-@IntDef(
-    INearbyMediaDevicesUpdateCallback.RANGE_UNKNOWN,
-    INearbyMediaDevicesUpdateCallback.RANGE_FAR,
-    INearbyMediaDevicesUpdateCallback.RANGE_LONG,
-    INearbyMediaDevicesUpdateCallback.RANGE_CLOSE,
-    INearbyMediaDevicesUpdateCallback.RANGE_WITHIN_REACH
-)
-@Retention(AnnotationRetention.SOURCE)
-/** The various range zones a device can be in, in relation to the current device. */
-annotation class RangeZone
diff --git a/packages/SystemUI/src/com/android/keyguard/KeyguardPasswordView.java b/packages/SystemUI/src/com/android/keyguard/KeyguardPasswordView.java
index bc366ab..5c9f5db 100644
--- a/packages/SystemUI/src/com/android/keyguard/KeyguardPasswordView.java
+++ b/packages/SystemUI/src/com/android/keyguard/KeyguardPasswordView.java
@@ -20,6 +20,7 @@
 
 import static com.android.keyguard.KeyguardSecurityView.PROMPT_REASON_DEVICE_ADMIN;
 import static com.android.keyguard.KeyguardSecurityView.PROMPT_REASON_NONE;
+import static com.android.keyguard.KeyguardSecurityView.PROMPT_REASON_NON_STRONG_BIOMETRIC_TIMEOUT;
 import static com.android.keyguard.KeyguardSecurityView.PROMPT_REASON_PREPARE_FOR_UPDATE;
 import static com.android.keyguard.KeyguardSecurityView.PROMPT_REASON_RESTART;
 import static com.android.keyguard.KeyguardSecurityView.PROMPT_REASON_TIMEOUT;
@@ -101,6 +102,8 @@
                 return R.string.kg_prompt_reason_user_request;
             case PROMPT_REASON_PREPARE_FOR_UPDATE:
                 return R.string.kg_prompt_reason_timeout_password;
+            case PROMPT_REASON_NON_STRONG_BIOMETRIC_TIMEOUT:
+                return R.string.kg_prompt_reason_timeout_password;
             case PROMPT_REASON_NONE:
                 return 0;
             default:
diff --git a/packages/SystemUI/src/com/android/keyguard/KeyguardPatternViewController.java b/packages/SystemUI/src/com/android/keyguard/KeyguardPatternViewController.java
index 0b4bc9e..41f9240 100644
--- a/packages/SystemUI/src/com/android/keyguard/KeyguardPatternViewController.java
+++ b/packages/SystemUI/src/com/android/keyguard/KeyguardPatternViewController.java
@@ -327,6 +327,9 @@
             case PROMPT_REASON_PREPARE_FOR_UPDATE:
                 mMessageAreaController.setMessage(R.string.kg_prompt_reason_timeout_pattern);
                 break;
+            case PROMPT_REASON_NON_STRONG_BIOMETRIC_TIMEOUT:
+                mMessageAreaController.setMessage(R.string.kg_prompt_reason_timeout_pattern);
+                break;
             case PROMPT_REASON_NONE:
                 break;
             default:
diff --git a/packages/SystemUI/src/com/android/keyguard/KeyguardPinBasedInputView.java b/packages/SystemUI/src/com/android/keyguard/KeyguardPinBasedInputView.java
index 0b8868f..4723af2 100644
--- a/packages/SystemUI/src/com/android/keyguard/KeyguardPinBasedInputView.java
+++ b/packages/SystemUI/src/com/android/keyguard/KeyguardPinBasedInputView.java
@@ -18,6 +18,7 @@
 
 import static com.android.keyguard.KeyguardSecurityView.PROMPT_REASON_DEVICE_ADMIN;
 import static com.android.keyguard.KeyguardSecurityView.PROMPT_REASON_NONE;
+import static com.android.keyguard.KeyguardSecurityView.PROMPT_REASON_NON_STRONG_BIOMETRIC_TIMEOUT;
 import static com.android.keyguard.KeyguardSecurityView.PROMPT_REASON_PREPARE_FOR_UPDATE;
 import static com.android.keyguard.KeyguardSecurityView.PROMPT_REASON_RESTART;
 import static com.android.keyguard.KeyguardSecurityView.PROMPT_REASON_TIMEOUT;
@@ -113,6 +114,8 @@
                 return R.string.kg_prompt_reason_user_request;
             case PROMPT_REASON_PREPARE_FOR_UPDATE:
                 return R.string.kg_prompt_reason_timeout_pin;
+            case PROMPT_REASON_NON_STRONG_BIOMETRIC_TIMEOUT:
+                return R.string.kg_prompt_reason_timeout_pin;
             case PROMPT_REASON_NONE:
                 return 0;
             default:
diff --git a/packages/SystemUI/src/com/android/keyguard/KeyguardUpdateMonitor.java b/packages/SystemUI/src/com/android/keyguard/KeyguardUpdateMonitor.java
index 99e0ec1..37f4564 100644
--- a/packages/SystemUI/src/com/android/keyguard/KeyguardUpdateMonitor.java
+++ b/packages/SystemUI/src/com/android/keyguard/KeyguardUpdateMonitor.java
@@ -2027,6 +2027,7 @@
         mAuthController.addCallback(new AuthController.Callback() {
             @Override
             public void onAllAuthenticatorsRegistered() {
+                mainExecutor.execute(() -> updateBiometricListeningState(BIOMETRIC_ACTION_UPDATE));
             }
 
             @Override
@@ -2156,6 +2157,10 @@
             return;
         }
 
+        // don't start running fingerprint until they're registered
+        if (!mAuthController.areAllAuthenticatorsRegistered()) {
+            return;
+        }
         final boolean shouldListenForFingerprint = shouldListenForFingerprint(isUdfpsSupported());
         final boolean runningOrRestarting = mFingerprintRunningState == BIOMETRIC_STATE_RUNNING
                 || mFingerprintRunningState == BIOMETRIC_STATE_CANCELLING_RESTARTING;
@@ -3523,6 +3528,8 @@
             final int strongAuthFlags = mStrongAuthTracker.getStrongAuthForUser(userId);
             BiometricAuthenticated fingerprint = mUserFingerprintAuthenticated.get(userId);
             pw.println("  Fingerprint state (user=" + userId + ")");
+            pw.println("    areAllAuthenticatorsRegistered="
+                    + mAuthController.areAllAuthenticatorsRegistered());
             pw.println("    allowed="
                     + (fingerprint != null
                             && isUnlockingWithBiometricAllowed(fingerprint.mIsStrongBiometric)));
diff --git a/packages/SystemUI/src/com/android/systemui/biometrics/AuthController.java b/packages/SystemUI/src/com/android/systemui/biometrics/AuthController.java
index fe5e36e..dfb8c18 100644
--- a/packages/SystemUI/src/com/android/systemui/biometrics/AuthController.java
+++ b/packages/SystemUI/src/com/android/systemui/biometrics/AuthController.java
@@ -136,6 +136,7 @@
     @NonNull private final SparseBooleanArray mUdfpsEnrolledForUser;
     @NonNull private final SensorPrivacyManager mSensorPrivacyManager;
     private final WakefulnessLifecycle mWakefulnessLifecycle;
+    private boolean mAllAuthenticatorsRegistered;
 
     private class BiometricTaskStackListener extends TaskStackListener {
         @Override
@@ -226,6 +227,13 @@
         }
     }
 
+    /**
+     * Whether all authentictors have been registered.
+     */
+    public boolean areAllAuthenticatorsRegistered() {
+        return mAllAuthenticatorsRegistered;
+    }
+
     private void handleAllAuthenticatorsRegistered(
             List<FingerprintSensorPropertiesInternal> sensors) {
         mExecution.assertIsMainThread();
@@ -233,6 +241,7 @@
             Log.d(TAG, "handleAllAuthenticatorsRegistered | sensors: " + Arrays.toString(
                     sensors.toArray()));
         }
+        mAllAuthenticatorsRegistered = true;
         mFpProps = sensors;
         List<FingerprintSensorPropertiesInternal> udfpsProps = new ArrayList<>();
         List<FingerprintSensorPropertiesInternal> sidefpsProps = new ArrayList<>();
diff --git a/packages/SystemUI/src/com/android/systemui/clipboardoverlay/ClipboardOverlayController.java b/packages/SystemUI/src/com/android/systemui/clipboardoverlay/ClipboardOverlayController.java
index 40689ee..a17ddc8 100644
--- a/packages/SystemUI/src/com/android/systemui/clipboardoverlay/ClipboardOverlayController.java
+++ b/packages/SystemUI/src/com/android/systemui/clipboardoverlay/ClipboardOverlayController.java
@@ -151,11 +151,7 @@
         mWindow = FloatingWindowUtil.getFloatingWindow(mContext);
         mWindow.setWindowManager(mWindowManager, null, null);
 
-        if (!mAccessibilityManager.isTouchExplorationEnabled()) {
-            setWindowFocusable(true);
-        } else {
-            setWindowFocusable(false);
-        }
+        setWindowFocusable(false);
 
         mContainer = (FrameLayout)
                 LayoutInflater.from(mContext).inflate(R.layout.clipboard_overlay, null);
diff --git a/packages/SystemUI/src/com/android/systemui/dagger/SysUIComponent.java b/packages/SystemUI/src/com/android/systemui/dagger/SysUIComponent.java
index 81fa99a..701972a 100644
--- a/packages/SystemUI/src/com/android/systemui/dagger/SysUIComponent.java
+++ b/packages/SystemUI/src/com/android/systemui/dagger/SysUIComponent.java
@@ -26,6 +26,7 @@
 import com.android.systemui.dump.DumpManager;
 import com.android.systemui.keyguard.KeyguardSliceProvider;
 import com.android.systemui.media.muteawait.MediaMuteAwaitConnectionCli;
+import com.android.systemui.media.nearby.NearbyMediaDevicesManager;
 import com.android.systemui.media.taptotransfer.MediaTttCommandLineHelper;
 import com.android.systemui.media.taptotransfer.receiver.MediaTttChipControllerReceiver;
 import com.android.systemui.media.taptotransfer.sender.MediaTttChipControllerSender;
@@ -152,6 +153,7 @@
         getMediaTttChipControllerReceiver();
         getMediaTttCommandLineHelper();
         getMediaMuteAwaitConnectionCli();
+        getNearbyMediaDevicesManager();
         getUnfoldLatencyTracker().init();
         getFoldStateLoggingProvider().ifPresent(FoldStateLoggingProvider::init);
         getFoldStateLogger().ifPresent(FoldStateLogger::init);
@@ -231,6 +233,9 @@
     /** */
     Optional<MediaMuteAwaitConnectionCli> getMediaMuteAwaitConnectionCli();
 
+    /** */
+    Optional<NearbyMediaDevicesManager> getNearbyMediaDevicesManager();
+
     /**
      * Returns {@link CoreStartable}s that should be started with the application.
      */
diff --git a/packages/SystemUI/src/com/android/systemui/dagger/SystemUIModule.java b/packages/SystemUI/src/com/android/systemui/dagger/SystemUIModule.java
index b96c5ae..13067bf 100644
--- a/packages/SystemUI/src/com/android/systemui/dagger/SystemUIModule.java
+++ b/packages/SystemUI/src/com/android/systemui/dagger/SystemUIModule.java
@@ -42,6 +42,7 @@
 import com.android.systemui.flags.FlagsModule;
 import com.android.systemui.fragments.FragmentService;
 import com.android.systemui.log.dagger.LogModule;
+import com.android.systemui.lowlightclock.LowLightClockController;
 import com.android.systemui.model.SysUiState;
 import com.android.systemui.plugins.BcSmartspaceDataPlugin;
 import com.android.systemui.plugins.statusbar.StatusBarStateController;
@@ -86,6 +87,7 @@
 import com.android.systemui.wallet.dagger.WalletModule;
 import com.android.systemui.wmshell.BubblesManager;
 import com.android.wm.shell.bubbles.Bubbles;
+import com.android.wm.shell.dagger.DynamicOverride;
 
 import java.util.Optional;
 import java.util.concurrent.Executor;
@@ -214,4 +216,19 @@
                 groupManager, entryManager, notifCollection, notifPipeline, sysUiState,
                 notifPipelineFlags, dumpManager, sysuiMainExecutor));
     }
+
+    @BindsOptionalOf
+    @DynamicOverride
+    abstract LowLightClockController optionalLowLightClockController();
+
+    @SysUISingleton
+    @Provides
+    static Optional<LowLightClockController> provideLowLightClockController(
+            @DynamicOverride Optional<LowLightClockController> optionalController) {
+        if (optionalController.isPresent() && optionalController.get().isLowLightClockEnabled()) {
+            return optionalController;
+        } else {
+            return Optional.empty();
+        }
+    }
 }
diff --git a/packages/SystemUI/src/com/android/systemui/flags/FeatureFlagsDebug.java b/packages/SystemUI/src/com/android/systemui/flags/FeatureFlagsDebug.java
index f3b721c..df60599 100644
--- a/packages/SystemUI/src/com/android/systemui/flags/FeatureFlagsDebug.java
+++ b/packages/SystemUI/src/com/android/systemui/flags/FeatureFlagsDebug.java
@@ -30,11 +30,13 @@
 import android.content.IntentFilter;
 import android.content.res.Resources;
 import android.os.Bundle;
+import android.os.RemoteException;
 import android.util.Log;
 
 import androidx.annotation.NonNull;
 import androidx.annotation.Nullable;
 
+import com.android.internal.statusbar.IStatusBarService;
 import com.android.systemui.Dumpable;
 import com.android.systemui.dagger.SysUISingleton;
 import com.android.systemui.dagger.qualifiers.Main;
@@ -70,6 +72,7 @@
     private final Supplier<Map<Integer, Flag<?>>> mFlagsCollector;
     private final Map<Integer, Boolean> mBooleanFlagCache = new TreeMap<>();
     private final Map<Integer, String> mStringFlagCache = new TreeMap<>();
+    private final IStatusBarService mBarService;
 
     @Inject
     public FeatureFlagsDebug(
@@ -78,7 +81,8 @@
             SecureSettings secureSettings,
             @Main Resources resources,
             DumpManager dumpManager,
-            @Nullable Supplier<Map<Integer, Flag<?>>> flagsCollector) {
+            @Nullable Supplier<Map<Integer, Flag<?>>> flagsCollector,
+            IStatusBarService barService) {
         mFlagManager = flagManager;
         mSecureSettings = secureSettings;
         mResources = resources;
@@ -91,6 +95,7 @@
         context.registerReceiver(mReceiver, filter, null, null,
                 Context.RECEIVER_EXPORTED_UNAUDITED);
         dumpManager.registerDumpable(TAG, this);
+        mBarService = barService;
     }
 
     @Override
@@ -212,6 +217,14 @@
         System.exit(0);
     }
 
+    private void restartAndroid() {
+        Log.i(TAG, "Restarting Android");
+        try {
+            mBarService.restart();
+        } catch (RemoteException e) {
+        }
+    }
+
     private final BroadcastReceiver mReceiver = new BroadcastReceiver() {
         @Override
         public void onReceive(Context context, Intent intent) {
diff --git a/packages/SystemUI/src/com/android/systemui/flags/Flags.java b/packages/SystemUI/src/com/android/systemui/flags/Flags.java
index 1ba6e34..55e48a7 100644
--- a/packages/SystemUI/src/com/android/systemui/flags/Flags.java
+++ b/packages/SystemUI/src/com/android/systemui/flags/Flags.java
@@ -146,6 +146,7 @@
     public static final BooleanFlag MEDIA_TAP_TO_TRANSFER = new BooleanFlag(900, true);
     public static final BooleanFlag MEDIA_SESSION_ACTIONS = new BooleanFlag(901, true);
     public static final BooleanFlag MEDIA_SESSION_LAYOUT = new BooleanFlag(902, false);
+    public static final BooleanFlag MEDIA_NEARBY_DEVICES = new BooleanFlag(903, true);
     public static final BooleanFlag MEDIA_MUTE_AWAIT = new BooleanFlag(904, true);
 
     // 1000 - dock
diff --git a/packages/SystemUI/src/com/android/systemui/lowlightclock/LowLightClockController.java b/packages/SystemUI/src/com/android/systemui/lowlightclock/LowLightClockController.java
new file mode 100644
index 0000000..0b15f4f
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/lowlightclock/LowLightClockController.java
@@ -0,0 +1,48 @@
+/*
+ * Copyright (C) 2022 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.lowlightclock;
+
+import android.view.ViewGroup;
+
+/**
+ * A controller responsible for attaching and showing an optional low-light clock while dozing.
+ */
+public interface LowLightClockController {
+    /**
+     * Returns {@code true} if the low-light clock is enabled.
+     */
+    boolean isLowLightClockEnabled();
+
+    /**
+     * Attach the low light-clock to the given parent {@link ViewGroup}.
+     * @param parent The parent {@link ViewGroup} to which the low-light clock view should be
+     *               attached.
+     */
+    void attachLowLightClockView(ViewGroup parent);
+
+    /**
+     * Show or hide the low-light clock.
+     * @param show Whether to show the low-light clock.
+     * @return {@code true} if the low-light clock was shown.
+     */
+    boolean showLowLightClock(boolean show);
+
+    /**
+     * An opportunity to perform burn-in prevention.
+     */
+    void dozeTimeTick();
+}
diff --git a/packages/SystemUI/src/com/android/systemui/media/MediaFlags.kt b/packages/SystemUI/src/com/android/systemui/media/MediaFlags.kt
index e146768..dd35a9a 100644
--- a/packages/SystemUI/src/com/android/systemui/media/MediaFlags.kt
+++ b/packages/SystemUI/src/com/android/systemui/media/MediaFlags.kt
@@ -42,4 +42,10 @@
      * Check whether we support displaying information about mute await connections.
      */
     fun areMuteAwaitConnectionsEnabled() = featureFlags.isEnabled(Flags.MEDIA_MUTE_AWAIT)
+
+    /**
+     * Check whether we enable support for nearby media devices. See
+     * [android.app.StatusBarManager.registerNearbyMediaDevicesProvider] for more information.
+     */
+    fun areNearbyMediaDevicesEnabled() = featureFlags.isEnabled(Flags.MEDIA_NEARBY_DEVICES)
 }
diff --git a/packages/SystemUI/src/com/android/systemui/media/MediaHierarchyManager.kt b/packages/SystemUI/src/com/android/systemui/media/MediaHierarchyManager.kt
index 6145f0f..eee3955 100644
--- a/packages/SystemUI/src/com/android/systemui/media/MediaHierarchyManager.kt
+++ b/packages/SystemUI/src/com/android/systemui/media/MediaHierarchyManager.kt
@@ -28,6 +28,7 @@
 import android.view.ViewGroup
 import android.view.ViewGroupOverlay
 import androidx.annotation.VisibleForTesting
+import com.android.keyguard.KeyguardViewController
 import com.android.systemui.R
 import com.android.systemui.animation.Interpolators
 import com.android.systemui.dagger.SysUISingleton
@@ -40,7 +41,6 @@
 import com.android.systemui.statusbar.SysuiStatusBarStateController
 import com.android.systemui.statusbar.notification.stack.StackStateAnimator
 import com.android.systemui.statusbar.phone.KeyguardBypassController
-import com.android.systemui.statusbar.phone.StatusBarKeyguardViewManager
 import com.android.systemui.statusbar.policy.ConfigurationController
 import com.android.systemui.statusbar.policy.KeyguardStateController
 import com.android.systemui.util.Utils
@@ -83,7 +83,7 @@
     private val notifLockscreenUserManager: NotificationLockscreenUserManager,
     configurationController: ConfigurationController,
     wakefulnessLifecycle: WakefulnessLifecycle,
-    private val statusBarKeyguardViewManager: StatusBarKeyguardViewManager,
+    private val keyguardViewController: KeyguardViewController,
     private val dreamOverlayStateController: DreamOverlayStateController
 ) {
 
@@ -1016,7 +1016,7 @@
 
     private fun isLockScreenVisibleToUser(): Boolean {
         return !statusBarStateController.isDozing &&
-                !statusBarKeyguardViewManager.isBouncerShowing &&
+                !keyguardViewController.isBouncerShowing &&
                 statusBarStateController.state == StatusBarState.KEYGUARD &&
                 notifLockscreenUserManager.shouldShowLockscreenNotifications() &&
                 statusBarStateController.isExpanded &&
@@ -1025,7 +1025,7 @@
 
     private fun isLockScreenShadeVisibleToUser(): Boolean {
         return !statusBarStateController.isDozing &&
-                !statusBarKeyguardViewManager.isBouncerShowing &&
+                !keyguardViewController.isBouncerShowing &&
                 (statusBarStateController.state == StatusBarState.SHADE_LOCKED ||
                         (statusBarStateController.state == StatusBarState.KEYGUARD && qsExpanded))
     }
diff --git a/packages/SystemUI/src/com/android/systemui/media/dagger/MediaModule.java b/packages/SystemUI/src/com/android/systemui/media/dagger/MediaModule.java
index 3225f73..2dff947 100644
--- a/packages/SystemUI/src/com/android/systemui/media/dagger/MediaModule.java
+++ b/packages/SystemUI/src/com/android/systemui/media/dagger/MediaModule.java
@@ -16,7 +16,6 @@
 
 package com.android.systemui.media.dagger;
 
-import android.app.Service;
 import android.content.Context;
 import android.os.Handler;
 import android.view.WindowManager;
@@ -30,7 +29,7 @@
 import com.android.systemui.media.MediaHostStatesManager;
 import com.android.systemui.media.dream.dagger.MediaComplicationComponent;
 import com.android.systemui.media.muteawait.MediaMuteAwaitConnectionCli;
-import com.android.systemui.media.nearby.NearbyMediaDevicesService;
+import com.android.systemui.media.nearby.NearbyMediaDevicesManager;
 import com.android.systemui.media.taptotransfer.MediaTttCommandLineHelper;
 import com.android.systemui.media.taptotransfer.MediaTttFlags;
 import com.android.systemui.media.taptotransfer.receiver.MediaTttChipControllerReceiver;
@@ -43,11 +42,9 @@
 
 import javax.inject.Named;
 
-import dagger.Binds;
+import dagger.Lazy;
 import dagger.Module;
 import dagger.Provides;
-import dagger.multibindings.ClassKey;
-import dagger.multibindings.IntoMap;
 
 /** Dagger module for the media package. */
 @Module(subcomponents = {
@@ -159,9 +156,15 @@
         return Optional.of(new MediaMuteAwaitConnectionCli(commandRegistry, context));
     }
 
-    /** Inject into NearbyMediaDevicesService. */
-    @Binds
-    @IntoMap
-    @ClassKey(NearbyMediaDevicesService.class)
-    Service bindMediaNearbyDevicesService(NearbyMediaDevicesService service);
+    /** */
+    @Provides
+    @SysUISingleton
+    static Optional<NearbyMediaDevicesManager> providesNearbyMediaDevicesManager(
+            MediaFlags mediaFlags,
+            Lazy<NearbyMediaDevicesManager> nearbyMediaDevicesManagerLazy) {
+        if (!mediaFlags.areNearbyMediaDevicesEnabled()) {
+            return Optional.empty();
+        }
+        return Optional.of(nearbyMediaDevicesManagerLazy.get());
+    }
 }
diff --git a/packages/SystemUI/src/com/android/systemui/media/nearby/NearbyMediaDevicesManager.kt b/packages/SystemUI/src/com/android/systemui/media/nearby/NearbyMediaDevicesManager.kt
new file mode 100644
index 0000000..9875ffb
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/media/nearby/NearbyMediaDevicesManager.kt
@@ -0,0 +1,107 @@
+/*
+ * Copyright (C) 2022 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.media.nearby
+
+import android.media.INearbyMediaDevicesProvider
+import android.media.INearbyMediaDevicesUpdateCallback
+import com.android.systemui.dagger.SysUISingleton
+import android.os.IBinder
+import com.android.systemui.statusbar.CommandQueue
+import javax.inject.Inject
+
+/**
+ * A service that acts as a bridge between (1) external clients that have data on nearby devices
+ * that are able to play media and (2) internal clients (like media Output Switcher) that need data
+ * on these nearby devices.
+ *
+ * TODO(b/216313420): Add logging to this class.
+ */
+@SysUISingleton
+class NearbyMediaDevicesManager @Inject constructor(
+    commandQueue: CommandQueue
+) {
+    private var providers: MutableList<INearbyMediaDevicesProvider> = mutableListOf()
+    private var activeCallbacks: MutableList<INearbyMediaDevicesUpdateCallback> = mutableListOf()
+
+    private val commandQueueCallbacks = object : CommandQueue.Callbacks {
+        override fun registerNearbyMediaDevicesProvider(newProvider: INearbyMediaDevicesProvider) {
+            if (providers.contains(newProvider)) {
+                return
+            }
+            activeCallbacks.forEach {
+                newProvider.registerNearbyDevicesCallback(it)
+            }
+            providers.add(newProvider)
+            newProvider.asBinder().linkToDeath(deathRecipient, /* flags= */ 0)
+        }
+
+        override fun unregisterNearbyMediaDevicesProvider(
+            newProvider: INearbyMediaDevicesProvider
+        ) {
+            providers.remove(newProvider)
+        }
+    }
+
+    private val deathRecipient = object : IBinder.DeathRecipient {
+        override fun binderDied() {
+            // Should not be used as binderDied(IBinder who) is overridden.
+        }
+
+        override fun binderDied(who: IBinder) {
+            binderDiedInternal(who)
+        }
+    }
+
+    init {
+        commandQueue.addCallback(commandQueueCallbacks)
+    }
+
+    /**
+     * Registers [callback] to be notified each time a device's range changes or when a new device
+     * comes within range.
+     *
+     * If a new provider is added, previously-registered callbacks will be registered with the
+     * new provider.
+     */
+    fun registerNearbyDevicesCallback(callback: INearbyMediaDevicesUpdateCallback) {
+        providers.forEach {
+            it.registerNearbyDevicesCallback(callback)
+        }
+        activeCallbacks.add(callback)
+    }
+
+    /**
+     * Un-registers [callback]. See [registerNearbyDevicesCallback].
+     */
+    fun unregisterNearbyDevicesCallback(callback: INearbyMediaDevicesUpdateCallback) {
+        activeCallbacks.remove(callback)
+        providers.forEach {
+            it.unregisterNearbyDevicesCallback(callback)
+        }
+    }
+
+    private fun binderDiedInternal(who: IBinder) {
+        synchronized(providers) {
+            for (i in providers.size - 1 downTo 0) {
+                if (providers[i].asBinder() == who) {
+                    providers.removeAt(i)
+                    break
+                }
+            }
+        }
+    }
+}
diff --git a/packages/SystemUI/src/com/android/systemui/media/nearby/NearbyMediaDevicesService.kt b/packages/SystemUI/src/com/android/systemui/media/nearby/NearbyMediaDevicesService.kt
deleted file mode 100644
index eaf2bd9..0000000
--- a/packages/SystemUI/src/com/android/systemui/media/nearby/NearbyMediaDevicesService.kt
+++ /dev/null
@@ -1,81 +0,0 @@
-/*
- * Copyright (C) 2022 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.media.nearby
-
-import android.app.Service
-import android.content.Intent
-import android.os.IBinder
-import com.android.systemui.dagger.SysUISingleton
-import com.android.systemui.shared.media.INearbyMediaDevicesProvider
-import com.android.systemui.shared.media.INearbyMediaDevicesService
-import com.android.systemui.shared.media.INearbyMediaDevicesUpdateCallback
-import com.android.systemui.shared.media.NearbyDevice
-import javax.inject.Inject
-
-/**
- * A service that acts as a bridge between (1) external clients that have data on nearby devices
- * that are able to play media and (2) internal clients (like media Output Switcher) that need data
- * on these nearby devices.
- *
- * TODO(b/216313420): Add logging to this class.
- */
-@SysUISingleton
-class NearbyMediaDevicesService @Inject constructor() : Service() {
-
-    private var provider: INearbyMediaDevicesProvider? = null
-
-    private val binder: IBinder = object : INearbyMediaDevicesService.Stub() {
-        override fun registerProvider(newProvider: INearbyMediaDevicesProvider) {
-            provider = newProvider
-            newProvider.asBinder().linkToDeath(
-                {
-                    // We might've gotten a new provider before the old provider died, so we only
-                    // need to clear our provider if the most recent provider died.
-                    if (provider == newProvider) {
-                        provider = null
-                    }
-                },
-                /* flags= */ 0
-            )
-        }
-    }
-
-    override fun onBind(intent: Intent?): IBinder = binder
-
-    /** Returns a list containing the current nearby devices. */
-    fun getCurrentNearbyDevices(): List<NearbyDevice> {
-        val currentProvider = provider ?: return emptyList()
-        return currentProvider.currentNearbyDevices
-    }
-
-    /**
-     * Registers [callback] to be notified each time a device's range changes or when a new device
-     * comes within range.
-     */
-    fun registerNearbyDevicesCallback(callback: INearbyMediaDevicesUpdateCallback) {
-        val currentProvider = provider ?: return
-        currentProvider.registerNearbyDevicesCallback(callback)
-    }
-
-    /**
-     * Un-registers [callback]. See [registerNearbyDevicesCallback].
-     */
-    fun unregisterNearbyDevicesCallback(callback: INearbyMediaDevicesUpdateCallback) {
-        val currentProvider = provider ?: return
-        currentProvider.unregisterNearbyDevicesCallback(callback)
-    }
-}
diff --git a/packages/SystemUI/src/com/android/systemui/navigationbar/gestural/NavigationBarEdgePanel.java b/packages/SystemUI/src/com/android/systemui/navigationbar/gestural/NavigationBarEdgePanel.java
index 4da574d..a6bad15 100644
--- a/packages/SystemUI/src/com/android/systemui/navigationbar/gestural/NavigationBarEdgePanel.java
+++ b/packages/SystemUI/src/com/android/systemui/navigationbar/gestural/NavigationBarEdgePanel.java
@@ -162,7 +162,8 @@
     // The amount the arrow is shifted to avoid the finger.
     private int mFingerOffset;
 
-    private final float mSwipeThreshold;
+    private final float mSwipeTriggerThreshold;
+    private final float mSwipeProgressThreshold;
     private final Path mArrowPath = new Path();
     private final Point mDisplaySize = new Point();
 
@@ -352,10 +353,15 @@
         loadColors(context);
         updateArrowDirection();
 
-        mSwipeThreshold = context.getResources()
+        mSwipeTriggerThreshold = context.getResources()
                 .getDimension(R.dimen.navigation_edge_action_drag_threshold);
-        setVisibility(GONE);
+        mSwipeProgressThreshold = context.getResources()
+                .getDimension(R.dimen.navigation_edge_action_progress_threshold);
+        if (mBackAnimation != null) {
+            mBackAnimation.setSwipeThresholds(mSwipeTriggerThreshold, mSwipeProgressThreshold);
+        }
 
+        setVisibility(GONE);
         Executor backgroundExecutor = Dependency.get(Dependency.BACKGROUND_EXECUTOR);
         boolean isPrimaryDisplay = mContext.getDisplayId() == DEFAULT_DISPLAY;
         mRegionSamplingHelper = new RegionSamplingHelper(this,
@@ -730,7 +736,7 @@
         mPreviousTouchTranslation = touchTranslation;
 
         // Apply a haptic on drag slop passed
-        if (!mDragSlopPassed && touchTranslation > mSwipeThreshold) {
+        if (!mDragSlopPassed && touchTranslation > mSwipeTriggerThreshold) {
             mDragSlopPassed = true;
             mVibratorHelper.vibrate(VibrationEffect.EFFECT_TICK);
             mVibrationTime = SystemClock.uptimeMillis();
diff --git a/packages/SystemUI/src/com/android/systemui/qs/FooterActionsController.kt b/packages/SystemUI/src/com/android/systemui/qs/FooterActionsController.kt
index 5df8b80..a262b8a 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/FooterActionsController.kt
+++ b/packages/SystemUI/src/com/android/systemui/qs/FooterActionsController.kt
@@ -24,7 +24,6 @@
 import android.view.View
 import android.view.ViewGroup
 import android.widget.LinearLayout
-import android.widget.Toast
 import androidx.annotation.VisibleForTesting
 import com.android.internal.jank.InteractionJankMonitor
 import com.android.internal.logging.MetricsLogger
@@ -46,7 +45,6 @@
 import com.android.systemui.statusbar.policy.DeviceProvisionedController
 import com.android.systemui.statusbar.policy.UserInfoController
 import com.android.systemui.statusbar.policy.UserInfoController.OnUserInfoChangedListener
-import com.android.systemui.tuner.TunerService
 import com.android.systemui.util.DualHeightHorizontalLinearLayout
 import com.android.systemui.util.ViewController
 import com.android.systemui.util.settings.GlobalSettings
@@ -71,7 +69,6 @@
     private val fgsManagerFooterController: QSFgsManagerFooter,
     private val falsingManager: FalsingManager,
     private val metricsLogger: MetricsLogger,
-    private val tunerService: TunerService,
     private val globalActionsDialog: GlobalActionsDialogLite,
     private val uiEventLogger: UiEventLogger,
     @Named(PM_LITE_ENABLED) private val showPMLiteButton: Boolean,
@@ -131,22 +128,7 @@
                 return@OnClickListener
             }
             metricsLogger.action(MetricsProto.MetricsEvent.ACTION_QS_EXPANDED_SETTINGS_LAUNCH)
-            if (settingsButton.isTunerClick) {
-                activityStarter.postQSRunnableDismissingKeyguard {
-                    if (isTunerEnabled()) {
-                        tunerService.showResetRequest {
-                            // Relaunch settings so that the tuner disappears.
-                            startSettingsActivity()
-                        }
-                    } else {
-                        Toast.makeText(context, R.string.tuner_toast, Toast.LENGTH_LONG).show()
-                        tunerService.isTunerEnabled = true
-                    }
-                    startSettingsActivity()
-                }
-            } else {
-                startSettingsActivity()
-            }
+            startSettingsActivity()
         } else if (v === powerMenuLite) {
             uiEventLogger.log(GlobalActionsDialogLite.GlobalActionsEvent.GA_OPEN_QS)
             globalActionsDialog.showOrHideDialog(false, true, v)
@@ -228,7 +210,7 @@
     }
 
     private fun updateView() {
-        mView.updateEverything(isTunerEnabled(), multiUserSwitchController.isMultiUserEnabled)
+        mView.updateEverything(multiUserSwitchController.isMultiUserEnabled)
     }
 
     override fun onViewDetached() {
@@ -254,7 +236,7 @@
     }
 
     fun disable(state2: Int) {
-        mView.disable(state2, isTunerEnabled(), multiUserSwitchController.isMultiUserEnabled)
+        mView.disable(state2, multiUserSwitchController.isMultiUserEnabled)
     }
 
     fun setExpansion(headerExpansionFraction: Float) {
@@ -275,6 +257,4 @@
     fun setKeyguardShowing(showing: Boolean) {
         setExpansion(lastExpansion)
     }
-
-    private fun isTunerEnabled() = tunerService.isTunerEnabled
 }
diff --git a/packages/SystemUI/src/com/android/systemui/qs/FooterActionsView.kt b/packages/SystemUI/src/com/android/systemui/qs/FooterActionsView.kt
index 18e0cfa..9413a90 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/FooterActionsView.kt
+++ b/packages/SystemUI/src/com/android/systemui/qs/FooterActionsView.kt
@@ -17,7 +17,6 @@
 
 import android.app.StatusBarManager
 import android.content.Context
-import android.content.res.Configuration
 import android.graphics.PorterDuff
 import android.graphics.drawable.Drawable
 import android.graphics.drawable.RippleDrawable
@@ -42,7 +41,6 @@
     private lateinit var settingsButton: SettingsButton
     private lateinit var multiUserSwitch: MultiUserSwitch
     private lateinit var multiUserAvatar: ImageView
-    private lateinit var tunerIcon: View
 
     private var qsDisabled = false
     private var expansionAmount = 0f
@@ -53,50 +51,30 @@
         settingsContainer = findViewById(R.id.settings_button_container)
         multiUserSwitch = findViewById(R.id.multi_user_switch)
         multiUserAvatar = multiUserSwitch.findViewById(R.id.multi_user_avatar)
-        tunerIcon = requireViewById(R.id.tuner_icon)
 
         // RenderThread is doing more harm than good when touching the header (to expand quick
         // settings), so disable it for this view
         if (settingsButton.background is RippleDrawable) {
             (settingsButton.background as RippleDrawable).setForceSoftware(true)
         }
-        updateResources()
         importantForAccessibility = View.IMPORTANT_FOR_ACCESSIBILITY_YES
     }
 
-    override fun onConfigurationChanged(newConfig: Configuration) {
-        super.onConfigurationChanged(newConfig)
-        updateResources()
-    }
-
-    override fun onRtlPropertiesChanged(layoutDirection: Int) {
-        super.onRtlPropertiesChanged(layoutDirection)
-        updateResources()
-    }
-
-    private fun updateResources() {
-        val tunerIconTranslation = mContext.resources
-                .getDimensionPixelOffset(R.dimen.qs_footer_tuner_icon_translation).toFloat()
-        tunerIcon.translationX = if (isLayoutRtl) (-tunerIconTranslation) else tunerIconTranslation
-    }
-
     fun disable(
         state2: Int,
-        isTunerEnabled: Boolean,
         multiUserEnabled: Boolean
     ) {
         val disabled = state2 and StatusBarManager.DISABLE2_QUICK_SETTINGS != 0
         if (disabled == qsDisabled) return
         qsDisabled = disabled
-        updateEverything(isTunerEnabled, multiUserEnabled)
+        updateEverything(multiUserEnabled)
     }
 
     fun updateEverything(
-        isTunerEnabled: Boolean,
         multiUserEnabled: Boolean
     ) {
         post {
-            updateVisibilities(isTunerEnabled, multiUserEnabled)
+            updateVisibilities(multiUserEnabled)
             updateClickabilities()
             isClickable = false
         }
@@ -108,11 +86,9 @@
     }
 
     private fun updateVisibilities(
-        isTunerEnabled: Boolean,
         multiUserEnabled: Boolean
     ) {
         settingsContainer.visibility = if (qsDisabled) GONE else VISIBLE
-        tunerIcon.visibility = if (isTunerEnabled) VISIBLE else INVISIBLE
         multiUserSwitch.visibility = if (multiUserEnabled) VISIBLE else GONE
         val isDemo = UserManager.isDeviceInDemoMode(context)
         settingsButton.visibility = if (isDemo) INVISIBLE else VISIBLE
diff --git a/packages/SystemUI/src/com/android/systemui/qs/QSPanelController.java b/packages/SystemUI/src/com/android/systemui/qs/QSPanelController.java
index 6a7f3c3..9834129 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/QSPanelController.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/QSPanelController.java
@@ -187,7 +187,9 @@
 
     /** */
     public void setListening(boolean listening, boolean expanded) {
-        setListening(listening && expanded);
+        // TODO(218268829): checking for split shade is workaround but when proper fix lands
+        //  "|| mShouldUseSplitNotificationShade" should be removed
+        setListening(listening && (expanded || mShouldUseSplitNotificationShade));
         if (mView.isListening()) {
             refreshAllTiles();
         }
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/CommandQueue.java b/packages/SystemUI/src/com/android/systemui/statusbar/CommandQueue.java
index b355b05..645c5ac 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/CommandQueue.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/CommandQueue.java
@@ -43,6 +43,7 @@
 import android.hardware.display.DisplayManager;
 import android.hardware.fingerprint.IUdfpsHbmListener;
 import android.inputmethodservice.InputMethodService.BackDispositionMode;
+import android.media.INearbyMediaDevicesProvider;
 import android.media.MediaRoute2Info;
 import android.os.Bundle;
 import android.os.Handler;
@@ -160,6 +161,8 @@
     private static final int MSG_SET_BIOMETRICS_LISTENER = 63 << MSG_SHIFT;
     private static final int MSG_MEDIA_TRANSFER_SENDER_STATE = 64 << MSG_SHIFT;
     private static final int MSG_MEDIA_TRANSFER_RECEIVER_STATE = 65 << MSG_SHIFT;
+    private static final int MSG_REGISTER_NEARBY_MEDIA_DEVICE_PROVIDER = 66 << MSG_SHIFT;
+    private static final int MSG_UNREGISTER_NEARBY_MEDIA_DEVICE_PROVIDER = 67 << MSG_SHIFT;
 
     public static final int FLAG_EXCLUDE_NONE = 0;
     public static final int FLAG_EXCLUDE_SEARCH_PANEL = 1 << 0;
@@ -456,6 +459,18 @@
                 @NonNull MediaRoute2Info routeInfo,
                 @Nullable Icon appIcon,
                 @Nullable CharSequence appName) {}
+
+        /**
+         * @see IStatusBar#registerNearbyMediaDevicesProvider
+         */
+        default void registerNearbyMediaDevicesProvider(
+                @NonNull INearbyMediaDevicesProvider provider) {}
+
+        /**
+         * @see IStatusBar#unregisterNearbyMediaDevicesProvider
+         */
+        default void unregisterNearbyMediaDevicesProvider(
+                @NonNull INearbyMediaDevicesProvider provider) {}
     }
 
     public CommandQueue(Context context) {
@@ -1221,6 +1236,18 @@
         mHandler.obtainMessage(MSG_MEDIA_TRANSFER_RECEIVER_STATE, args).sendToTarget();
     }
 
+    @Override
+    public void registerNearbyMediaDevicesProvider(@NonNull INearbyMediaDevicesProvider provider) {
+        mHandler.obtainMessage(MSG_REGISTER_NEARBY_MEDIA_DEVICE_PROVIDER, provider).sendToTarget();
+    }
+
+    @Override
+    public void unregisterNearbyMediaDevicesProvider(
+            @NonNull INearbyMediaDevicesProvider provider) {
+        mHandler.obtainMessage(MSG_UNREGISTER_NEARBY_MEDIA_DEVICE_PROVIDER, provider)
+                .sendToTarget();
+    }
+
     private final class H extends Handler {
         private H(Looper l) {
             super(l);
@@ -1643,6 +1670,18 @@
                     }
                     args.recycle();
                     break;
+                case MSG_REGISTER_NEARBY_MEDIA_DEVICE_PROVIDER:
+                    INearbyMediaDevicesProvider provider = (INearbyMediaDevicesProvider) msg.obj;
+                    for (int i = 0; i < mCallbacks.size(); i++) {
+                        mCallbacks.get(i).registerNearbyMediaDevicesProvider(provider);
+                    }
+                    break;
+                case MSG_UNREGISTER_NEARBY_MEDIA_DEVICE_PROVIDER:
+                    provider = (INearbyMediaDevicesProvider) msg.obj;
+                    for (int i = 0; i < mCallbacks.size(); i++) {
+                        mCallbacks.get(i).unregisterNearbyMediaDevicesProvider(provider);
+                    }
+                    break;
             }
         }
     }
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/InstantAppNotifier.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/InstantAppNotifier.java
index 60d1317..82b56cd 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/InstantAppNotifier.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/InstantAppNotifier.java
@@ -234,7 +234,7 @@
                 ApplicationInfo appInfo =
                         pm.getApplicationInfo(
                                 pkg, PackageManager.MATCH_UNINSTALLED_PACKAGES, info.userId);
-                if (appInfo.isInstantApp()) {
+                if (appInfo != null && appInfo.isInstantApp()) {
                     postInstantAppNotif(
                             pkg,
                             info.userId,
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/DozeParameters.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/DozeParameters.java
index d610b37..b141110 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/DozeParameters.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/DozeParameters.java
@@ -309,7 +309,12 @@
      * delayed for a few seconds. This might be useful to play animations without reducing FPS.
      */
     public boolean shouldDelayDisplayDozeTransition() {
-        return mScreenOffAnimationController.shouldDelayDisplayDozeTransition();
+        return willAnimateFromLockScreenToAod()
+                || mScreenOffAnimationController.shouldDelayDisplayDozeTransition();
+    }
+
+    private boolean willAnimateFromLockScreenToAod() {
+        return getAlwaysOn() && mKeyguardShowing;
     }
 
     /**
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/DozeServiceHost.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/DozeServiceHost.java
index b35e684..6d774838 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/DozeServiceHost.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/DozeServiceHost.java
@@ -214,6 +214,7 @@
         }
 
         mStatusBarStateController.setIsDozing(dozing);
+        mNotificationShadeWindowViewController.setDozing(dozing);
     }
 
     @Override
@@ -294,6 +295,7 @@
     public void dozeTimeTick() {
         mNotificationPanel.dozeTimeTick();
         mAuthController.dozeTimeTick();
+        mNotificationShadeWindowViewController.dozeTimeTick();
         if (mAmbientIndicationContainer instanceof DozeReceiver) {
             ((DozeReceiver) mAmbientIndicationContainer).dozeTimeTick();
         }
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 4e2eb6a..396703b 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationShadeWindowViewController.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationShadeWindowViewController.java
@@ -36,6 +36,7 @@
 import com.android.systemui.R;
 import com.android.systemui.classifier.FalsingCollector;
 import com.android.systemui.dock.DockManager;
+import com.android.systemui.lowlightclock.LowLightClockController;
 import com.android.systemui.statusbar.DragDownHelper;
 import com.android.systemui.statusbar.LockscreenShadeTransitionController;
 import com.android.systemui.statusbar.NotificationShadeDepthController;
@@ -49,6 +50,7 @@
 
 import java.io.FileDescriptor;
 import java.io.PrintWriter;
+import java.util.Optional;
 
 import javax.inject.Inject;
 
@@ -84,6 +86,7 @@
     private final DockManager mDockManager;
     private final NotificationPanelViewController mNotificationPanelViewController;
     private final PanelExpansionStateManager mPanelExpansionStateManager;
+    private final Optional<LowLightClockController> mLowLightClockController;
 
     private boolean mIsTrackingBarGesture = false;
 
@@ -101,7 +104,8 @@
             NotificationStackScrollLayoutController notificationStackScrollLayoutController,
             StatusBarKeyguardViewManager statusBarKeyguardViewManager,
             StatusBarWindowStateController statusBarWindowStateController,
-            LockIconViewController lockIconViewController) {
+            LockIconViewController lockIconViewController,
+            Optional<LowLightClockController> lowLightClockController) {
         mLockscreenShadeTransitionController = transitionController;
         mFalsingCollector = falsingCollector;
         mTunerService = tunerService;
@@ -115,6 +119,7 @@
         mStatusBarKeyguardViewManager = statusBarKeyguardViewManager;
         mStatusBarWindowStateController = statusBarWindowStateController;
         mLockIconViewController = lockIconViewController;
+        mLowLightClockController = lowLightClockController;
 
         // This view is not part of the newly inflated expanded status bar.
         mBrightnessMirror = mView.findViewById(R.id.brightness_mirror_container);
@@ -171,6 +176,8 @@
                 };
         mGestureDetector = new GestureDetector(mView.getContext(), gestureListener);
 
+        mLowLightClockController.ifPresent(controller -> controller.attachLowLightClockView(mView));
+
         mView.setInteractionEventHandler(new NotificationShadeWindowView.InteractionEventHandler() {
             @Override
             public Boolean handleDispatchTouchEvent(MotionEvent ev) {
@@ -450,6 +457,21 @@
         mNotificationShadeWindowController = controller;
     }
 
+    /**
+     * Tell the controller that dozing has begun or ended.
+     * @param dozing True if dozing has begun.
+     */
+    public void setDozing(boolean dozing) {
+        mLowLightClockController.ifPresent(controller -> controller.showLowLightClock(dozing));
+    }
+
+    /**
+     * Tell the controller to perform burn-in prevention.
+     */
+    public void dozeTimeTick() {
+        mLowLightClockController.ifPresent(LowLightClockController::dozeTimeTick);
+    }
+
     @VisibleForTesting
     void setDragDownHelper(DragDownHelper dragDownHelper) {
         mDragDownHelper = dragDownHelper;
diff --git a/packages/SystemUI/src/com/android/systemui/tuner/TunerServiceImpl.java b/packages/SystemUI/src/com/android/systemui/tuner/TunerServiceImpl.java
index d97815f..b23d870 100644
--- a/packages/SystemUI/src/com/android/systemui/tuner/TunerServiceImpl.java
+++ b/packages/SystemUI/src/com/android/systemui/tuner/TunerServiceImpl.java
@@ -34,6 +34,8 @@
 import android.util.ArrayMap;
 import android.util.ArraySet;
 
+import androidx.annotation.WorkerThread;
+
 import com.android.internal.util.ArrayUtils;
 import com.android.systemui.DejankUtils;
 import com.android.systemui.R;
@@ -287,6 +289,7 @@
     }
 
     @Override
+    @WorkerThread
     public boolean isTunerEnabled() {
         return mUserTracker.getUserContext().getPackageManager().getComponentEnabledSetting(
                 mTunerComponent) == PackageManager.COMPONENT_ENABLED_STATE_ENABLED;
diff --git a/packages/SystemUI/src/com/android/systemui/unfold/UnfoldLightRevealOverlayAnimation.kt b/packages/SystemUI/src/com/android/systemui/unfold/UnfoldLightRevealOverlayAnimation.kt
index 4b09a58..cbdf87e 100644
--- a/packages/SystemUI/src/com/android/systemui/unfold/UnfoldLightRevealOverlayAnimation.kt
+++ b/packages/SystemUI/src/com/android/systemui/unfold/UnfoldLightRevealOverlayAnimation.kt
@@ -22,11 +22,12 @@
 import android.hardware.devicestate.DeviceStateManager.FoldStateListener
 import android.hardware.display.DisplayManager
 import android.hardware.input.InputManager
-import android.os.Handler
 import android.os.Trace
 import android.view.Choreographer
 import android.view.Display
 import android.view.DisplayInfo
+import android.view.IRotationWatcher
+import android.view.IWindowManager
 import android.view.Surface
 import android.view.SurfaceControl
 import android.view.SurfaceControlViewHost
@@ -39,6 +40,7 @@
 import com.android.systemui.statusbar.LightRevealScrim
 import com.android.systemui.statusbar.LinearLightRevealEffect
 import com.android.systemui.unfold.UnfoldTransitionProgressProvider.TransitionProgressListener
+import com.android.systemui.util.traceSection
 import com.android.wm.shell.displayareahelper.DisplayAreaHelper
 import java.util.Optional
 import java.util.concurrent.Executor
@@ -55,12 +57,12 @@
     private val unfoldTransitionProgressProvider: UnfoldTransitionProgressProvider,
     private val displayAreaHelper: Optional<DisplayAreaHelper>,
     @Main private val executor: Executor,
-    @Main private val handler: Handler,
-    @UiBackground private val backgroundExecutor: Executor
+    @UiBackground private val backgroundExecutor: Executor,
+    private val windowManagerInterface: IWindowManager
 ) {
 
     private val transitionListener = TransitionListener()
-    private val displayListener = DisplayChangeListener()
+    private val rotationWatcher = RotationWatcher()
 
     private lateinit var wwm: WindowlessWindowManager
     private lateinit var unfoldedDisplayInfo: DisplayInfo
@@ -76,6 +78,7 @@
     fun init() {
         deviceStateManager.registerCallback(executor, FoldListener())
         unfoldTransitionProgressProvider.addCallback(transitionListener)
+        windowManagerInterface.watchRotation(rotationWatcher, context.display.displayId)
 
         val containerBuilder =
             SurfaceControl.Builder(SurfaceSession())
@@ -97,9 +100,6 @@
             }
         }
 
-        displayManager.registerDisplayListener(
-            displayListener, handler, DisplayManager.EVENT_FLAG_DISPLAY_CHANGED)
-
         // Get unfolded display size immediately as 'current display info' might be
         // not up-to-date during unfolding
         unfoldedDisplayInfo = getUnfoldedDisplayInfo()
@@ -180,7 +180,7 @@
     private fun getLayoutParams(): WindowManager.LayoutParams {
         val params: WindowManager.LayoutParams = WindowManager.LayoutParams()
 
-        val rotation = context.display!!.rotation
+        val rotation = currentRotation
         val isNatural = rotation == Surface.ROTATION_0 || rotation == Surface.ROTATION_180
 
         params.height =
@@ -243,20 +243,15 @@
         }
     }
 
-    private inner class DisplayChangeListener : DisplayManager.DisplayListener {
-
-        override fun onDisplayChanged(displayId: Int) {
-            val newRotation: Int = context.display!!.rotation
-            if (currentRotation != newRotation) {
-                currentRotation = newRotation
-                scrimView?.revealEffect = createLightRevealEffect()
-                root?.relayout(getLayoutParams())
+    private inner class RotationWatcher : IRotationWatcher.Stub() {
+        override fun onRotationChanged(newRotation: Int) =
+            traceSection("UnfoldLightRevealOverlayAnimation#onRotationChanged") {
+                if (currentRotation != newRotation) {
+                    currentRotation = newRotation
+                    scrimView?.revealEffect = createLightRevealEffect()
+                    root?.relayout(getLayoutParams())
+                }
             }
-        }
-
-        override fun onDisplayAdded(displayId: Int) {}
-
-        override fun onDisplayRemoved(displayId: Int) {}
     }
 
     private inner class FoldListener :
diff --git a/packages/SystemUI/tests/src/com/android/keyguard/KeyguardUpdateMonitorTest.java b/packages/SystemUI/tests/src/com/android/keyguard/KeyguardUpdateMonitorTest.java
index f71dd24..42e15c4 100644
--- a/packages/SystemUI/tests/src/com/android/keyguard/KeyguardUpdateMonitorTest.java
+++ b/packages/SystemUI/tests/src/com/android/keyguard/KeyguardUpdateMonitorTest.java
@@ -243,6 +243,9 @@
         verify(mStatusBarStateController).addCallback(mStatusBarStateListenerCaptor.capture());
         mStatusBarStateListener = mStatusBarStateListenerCaptor.getValue();
         mKeyguardUpdateMonitor.registerCallback(mTestCallback);
+
+        mTestableLooper.processAllMessages();
+        when(mAuthController.areAllAuthenticatorsRegistered()).thenReturn(true);
     }
 
     @After
@@ -471,6 +474,18 @@
     }
 
     @Test
+    public void test_doesNotTryToAuthenticateFingerprint_whenAuthenticatorsNotRegistered() {
+        when(mAuthController.areAllAuthenticatorsRegistered()).thenReturn(false);
+
+        mKeyguardUpdateMonitor.dispatchStartedGoingToSleep(0 /* why */);
+        mTestableLooper.processAllMessages();
+
+        verify(mFingerprintManager, never()).authenticate(any(), any(), any(), any(), anyInt(),
+                anyInt(), anyInt());
+        verify(mFingerprintManager, never()).detectFingerprint(any(), any(), anyInt());
+    }
+
+    @Test
     public void testFingerprintDoesNotAuth_whenEncrypted() {
         testFingerprintWhenStrongAuth(
                 STRONG_AUTH_REQUIRED_AFTER_BOOT);
diff --git a/packages/SystemUI/tests/src/com/android/systemui/flags/FeatureFlagsDebugTest.kt b/packages/SystemUI/tests/src/com/android/systemui/flags/FeatureFlagsDebugTest.kt
index 87bc732..4cc5673 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/flags/FeatureFlagsDebugTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/flags/FeatureFlagsDebugTest.kt
@@ -18,10 +18,10 @@
 import android.content.BroadcastReceiver
 import android.content.Context
 import android.content.Intent
-import android.content.pm.PackageManager
 import android.content.pm.PackageManager.NameNotFoundException
 import android.content.res.Resources
 import androidx.test.filters.SmallTest
+import com.android.internal.statusbar.IStatusBarService
 import com.android.systemui.SysuiTestCase
 import com.android.systemui.dump.DumpManager
 import com.android.systemui.util.mockito.any
@@ -59,6 +59,7 @@
     @Mock private lateinit var mSecureSettings: SecureSettings
     @Mock private lateinit var mResources: Resources
     @Mock private lateinit var mDumpManager: DumpManager
+    @Mock private lateinit var mBarService: IStatusBarService
     private val mFlagMap = mutableMapOf<Int, Flag<*>>()
     private lateinit var mBroadcastReceiver: BroadcastReceiver
     private lateinit var mClearCacheAction: Consumer<Int>
@@ -72,7 +73,8 @@
             mSecureSettings,
             mResources,
             mDumpManager,
-            { mFlagMap }
+            { mFlagMap },
+            mBarService
         )
         verify(mFlagManager).restartAction = any()
         mBroadcastReceiver = withArgCaptor {
diff --git a/packages/SystemUI/tests/src/com/android/systemui/media/MediaHierarchyManagerTest.kt b/packages/SystemUI/tests/src/com/android/systemui/media/MediaHierarchyManagerTest.kt
index 97b3b10..e606be1 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/media/MediaHierarchyManagerTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/media/MediaHierarchyManagerTest.kt
@@ -22,6 +22,7 @@
 import android.view.ViewGroup
 import android.widget.FrameLayout
 import androidx.test.filters.SmallTest
+import com.android.keyguard.KeyguardViewController
 import com.android.systemui.R
 import com.android.systemui.SysuiTestCase
 import com.android.systemui.controls.controller.ControlsControllerImplTest.Companion.eq
@@ -32,7 +33,6 @@
 import com.android.systemui.statusbar.StatusBarState
 import com.android.systemui.statusbar.SysuiStatusBarStateController
 import com.android.systemui.statusbar.phone.KeyguardBypassController
-import com.android.systemui.statusbar.phone.StatusBarKeyguardViewManager
 import com.android.systemui.statusbar.policy.ConfigurationController
 import com.android.systemui.statusbar.policy.KeyguardStateController
 import com.android.systemui.util.animation.UniqueObjectHostView
@@ -81,7 +81,7 @@
     @Mock
     private lateinit var wakefulnessLifecycle: WakefulnessLifecycle
     @Mock
-    private lateinit var statusBarKeyguardViewManager: StatusBarKeyguardViewManager
+    private lateinit var keyguardViewController: KeyguardViewController
     @Mock
     private lateinit var configurationController: ConfigurationController
     @Mock
@@ -113,7 +113,7 @@
                 notificationLockscreenUserManager,
                 configurationController,
                 wakefulnessLifecycle,
-                statusBarKeyguardViewManager,
+                keyguardViewController,
                 dreamOverlayStateController)
         verify(wakefulnessLifecycle).addObserver(wakefullnessObserver.capture())
         verify(statusBarStateController).addCallback(statusBarCallback.capture())
diff --git a/packages/SystemUI/tests/src/com/android/systemui/media/nearby/NearbyMediaDevicesManagerTest.kt b/packages/SystemUI/tests/src/com/android/systemui/media/nearby/NearbyMediaDevicesManagerTest.kt
new file mode 100644
index 0000000..f87a673
--- /dev/null
+++ b/packages/SystemUI/tests/src/com/android/systemui/media/nearby/NearbyMediaDevicesManagerTest.kt
@@ -0,0 +1,146 @@
+package com.android.systemui.media.nearby
+
+import android.media.INearbyMediaDevicesProvider
+import android.media.INearbyMediaDevicesUpdateCallback
+import androidx.test.filters.SmallTest
+import com.android.systemui.SysuiTestCase
+import android.media.NearbyDevice
+import com.android.systemui.statusbar.CommandQueue
+import com.google.common.truth.Truth.assertThat
+import org.junit.Before
+import org.junit.Test
+import org.mockito.ArgumentCaptor
+import org.mockito.Mock
+import org.mockito.Mockito
+import org.mockito.MockitoAnnotations
+
+@SmallTest
+class NearbyMediaDevicesManagerTest : SysuiTestCase() {
+
+    private lateinit var manager: NearbyMediaDevicesManager
+    @Mock
+    private lateinit var commandQueue: CommandQueue
+    private lateinit var commandQueueCallbacks: CommandQueue.Callbacks
+
+    @Before
+    fun setUp() {
+        MockitoAnnotations.initMocks(this)
+        manager = NearbyMediaDevicesManager(commandQueue)
+
+        val callbackCaptor = ArgumentCaptor.forClass(CommandQueue.Callbacks::class.java)
+        Mockito.verify(commandQueue).addCallback(callbackCaptor.capture())
+        commandQueueCallbacks = callbackCaptor.value!!
+    }
+
+    @Test
+    fun registerNearbyDevicesCallback_noProviderRegistered_noCrash() {
+        // No assert, just needs no crash
+        manager.registerNearbyDevicesCallback(object : INearbyMediaDevicesUpdateCallback.Stub() {
+            override fun onDevicesUpdated(nearbyDevices: List<NearbyDevice>) {}
+        })
+    }
+
+    @Test
+    fun registerNearbyDevicesCallback_providerRegistered_providerReceivesCallback() {
+        val provider = TestProvider()
+        commandQueueCallbacks.registerNearbyMediaDevicesProvider(provider)
+
+        val callback = object : INearbyMediaDevicesUpdateCallback.Stub() {
+            override fun onDevicesUpdated(nearbyDevices: List<NearbyDevice>) {}
+        }
+
+        manager.registerNearbyDevicesCallback(callback)
+
+        assertThat(provider.lastRegisteredCallback).isEqualTo(callback)
+    }
+
+    @Test
+    fun registerNearbyDevicesCallback_multipleProviders_allProvidersReceiveCallback() {
+        val provider1 = TestProvider()
+        val provider2 = TestProvider()
+        commandQueueCallbacks.registerNearbyMediaDevicesProvider(provider1)
+        commandQueueCallbacks.registerNearbyMediaDevicesProvider(provider2)
+
+        val callback = object : INearbyMediaDevicesUpdateCallback.Stub() {
+            override fun onDevicesUpdated(nearbyDevices: List<NearbyDevice>) {}
+        }
+
+        manager.registerNearbyDevicesCallback(callback)
+
+        assertThat(provider1.lastRegisteredCallback).isEqualTo(callback)
+        assertThat(provider2.lastRegisteredCallback).isEqualTo(callback)
+    }
+
+    @Test
+    fun unregisterNearbyDevicesCallback_noProviderRegistered_noCrash() {
+        // No assert, just needs no crash
+        manager.unregisterNearbyDevicesCallback(object : INearbyMediaDevicesUpdateCallback.Stub() {
+            override fun onDevicesUpdated(nearbyDevices: List<NearbyDevice>) {}
+        })
+    }
+
+    @Test
+    fun unregisterNearbyDevicesCallback_providerRegistered_providerReceivesCallback() {
+        val provider = TestProvider()
+        commandQueueCallbacks.registerNearbyMediaDevicesProvider(provider)
+
+        val callback = object : INearbyMediaDevicesUpdateCallback.Stub() {
+            override fun onDevicesUpdated(nearbyDevices: List<NearbyDevice>) {}
+        }
+
+        manager.unregisterNearbyDevicesCallback(callback)
+
+        assertThat(provider.lastUnregisteredCallback).isEqualTo(callback)
+    }
+
+    @Test
+    fun unregisterNearbyDevicesCallback_multipleProviders_allProvidersReceiveCallback() {
+        val provider1 = TestProvider()
+        val provider2 = TestProvider()
+        commandQueueCallbacks.registerNearbyMediaDevicesProvider(provider1)
+        commandQueueCallbacks.registerNearbyMediaDevicesProvider(provider2)
+
+        val callback = object : INearbyMediaDevicesUpdateCallback.Stub() {
+            override fun onDevicesUpdated(nearbyDevices: List<NearbyDevice>) {}
+        }
+
+        manager.unregisterNearbyDevicesCallback(callback)
+
+        assertThat(provider1.lastUnregisteredCallback).isEqualTo(callback)
+        assertThat(provider2.lastUnregisteredCallback).isEqualTo(callback)
+    }
+
+    @Test
+    fun newProviderRegisteredAfterCallbacksRegistered_providerGetsPreviouslyRegisteredCallbacks() {
+        // Start off with an existing provider and callback
+        val provider1 = TestProvider()
+        commandQueueCallbacks.registerNearbyMediaDevicesProvider(provider1)
+        val callback = object : INearbyMediaDevicesUpdateCallback.Stub() {
+            override fun onDevicesUpdated(nearbyDevices: List<NearbyDevice>) {}
+        }
+        manager.registerNearbyDevicesCallback(callback)
+
+        // Add a new provider
+        val provider2 = TestProvider()
+        commandQueueCallbacks.registerNearbyMediaDevicesProvider(provider2)
+
+        // Verify the new provider received the previously-registered callbacks
+        assertThat(provider2.lastRegisteredCallback).isEqualTo(callback)
+    }
+
+    private class TestProvider : INearbyMediaDevicesProvider.Stub() {
+        var lastRegisteredCallback: INearbyMediaDevicesUpdateCallback? = null
+        var lastUnregisteredCallback: INearbyMediaDevicesUpdateCallback? = null
+        override fun registerNearbyDevicesCallback(
+            callback: INearbyMediaDevicesUpdateCallback
+        ) {
+            lastRegisteredCallback = callback
+        }
+
+        override fun unregisterNearbyDevicesCallback(
+            callback: INearbyMediaDevicesUpdateCallback
+        ) {
+            lastUnregisteredCallback = callback
+        }
+    }
+}
diff --git a/packages/SystemUI/tests/src/com/android/systemui/media/nearby/NearbyMediaDevicesServiceTest.kt b/packages/SystemUI/tests/src/com/android/systemui/media/nearby/NearbyMediaDevicesServiceTest.kt
deleted file mode 100644
index c261086..0000000
--- a/packages/SystemUI/tests/src/com/android/systemui/media/nearby/NearbyMediaDevicesServiceTest.kt
+++ /dev/null
@@ -1,124 +0,0 @@
-package com.android.systemui.media.nearby
-
-import androidx.test.filters.SmallTest
-import com.android.systemui.SysuiTestCase
-import com.android.systemui.shared.media.INearbyMediaDevicesProvider
-import com.android.systemui.shared.media.INearbyMediaDevicesService
-import com.android.systemui.shared.media.INearbyMediaDevicesUpdateCallback
-import com.android.systemui.shared.media.INearbyMediaDevicesUpdateCallback.RANGE_LONG
-import com.android.systemui.shared.media.INearbyMediaDevicesUpdateCallback.RANGE_WITHIN_REACH
-import com.android.systemui.shared.media.NearbyDevice
-import com.google.common.truth.Truth.assertThat
-import org.junit.Before
-import org.junit.Test
-
-@SmallTest
-class NearbyMediaDevicesServiceTest : SysuiTestCase() {
-
-    private lateinit var service: NearbyMediaDevicesService
-    private lateinit var binderInterface: INearbyMediaDevicesService
-
-    @Before
-    fun setUp() {
-        service = NearbyMediaDevicesService()
-        binderInterface = INearbyMediaDevicesService.Stub.asInterface(service.onBind(null))
-    }
-
-    @Test
-    fun getCurrentNearbyDevices_noProviderRegistered_returnsEmptyList() {
-        assertThat(service.getCurrentNearbyDevices()).isEmpty()
-    }
-
-    @Test
-    fun getCurrentNearbyDevices_providerRegistered_returnsProviderInfo() {
-        val nearbyDevice1 = NearbyDevice("routeId1", RANGE_LONG)
-        val nearbyDevice2 = NearbyDevice("routeId2", RANGE_WITHIN_REACH)
-        val provider = object : INearbyMediaDevicesProvider.Stub() {
-            override fun getCurrentNearbyDevices(): List<NearbyDevice> {
-                return listOf(nearbyDevice1, nearbyDevice2)
-            }
-
-            override fun registerNearbyDevicesCallback(
-                callback: INearbyMediaDevicesUpdateCallback?
-            ) {}
-            override fun unregisterNearbyDevicesCallback(
-                callback: INearbyMediaDevicesUpdateCallback?
-            ) {}
-        }
-        binderInterface.registerProvider(provider)
-
-        val returnedNearbyDevices = service.getCurrentNearbyDevices()
-
-        assertThat(returnedNearbyDevices).isEqualTo(listOf(nearbyDevice1, nearbyDevice2))
-    }
-
-    @Test
-    fun registerNearbyDevicesCallback_noProviderRegistered_noCrash() {
-        // No assert, just needs no crash
-        service.registerNearbyDevicesCallback(object : INearbyMediaDevicesUpdateCallback.Stub() {
-            override fun nearbyDeviceUpdate(routeId: String?, rangeZone: Int) {}
-        })
-    }
-
-    @Test
-    fun registerNearbyDevicesCallback_providerRegistered_providerReceivesCallback() {
-        val provider = object : INearbyMediaDevicesProvider.Stub() {
-            var registeredCallback: INearbyMediaDevicesUpdateCallback? = null
-            override fun getCurrentNearbyDevices(): List<NearbyDevice> = listOf()
-
-            override fun registerNearbyDevicesCallback(
-                callback: INearbyMediaDevicesUpdateCallback?
-            ) {
-                registeredCallback = callback
-            }
-
-            override fun unregisterNearbyDevicesCallback(
-                callback: INearbyMediaDevicesUpdateCallback?
-            ) {}
-        }
-        binderInterface.registerProvider(provider)
-
-        val callback = object : INearbyMediaDevicesUpdateCallback.Stub() {
-            override fun nearbyDeviceUpdate(routeId: String?, rangeZone: Int) {}
-        }
-
-        service.registerNearbyDevicesCallback(callback)
-
-        assertThat(provider.registeredCallback).isEqualTo(callback)
-    }
-
-    @Test
-    fun unregisterNearbyDevicesCallback_noProviderRegistered_noCrash() {
-        // No assert, just needs no crash
-        service.unregisterNearbyDevicesCallback(object : INearbyMediaDevicesUpdateCallback.Stub() {
-            override fun nearbyDeviceUpdate(routeId: String?, rangeZone: Int) {}
-        })
-    }
-
-    @Test
-    fun unregisterNearbyDevicesCallback_providerRegistered_providerReceivesCallback() {
-        val provider = object : INearbyMediaDevicesProvider.Stub() {
-            var unregisteredCallback: INearbyMediaDevicesUpdateCallback? = null
-            override fun getCurrentNearbyDevices(): List<NearbyDevice> = listOf()
-
-            override fun registerNearbyDevicesCallback(
-                callback: INearbyMediaDevicesUpdateCallback?
-            ) {}
-
-            override fun unregisterNearbyDevicesCallback(
-                callback: INearbyMediaDevicesUpdateCallback?
-            ) {
-                unregisteredCallback = callback
-            }
-        }
-        binderInterface.registerProvider(provider)
-
-        val callback = object : INearbyMediaDevicesUpdateCallback.Stub() {
-            override fun nearbyDeviceUpdate(routeId: String?, rangeZone: Int) {}
-        }
-
-        service.unregisterNearbyDevicesCallback(callback)
-
-        assertThat(provider.unregisteredCallback).isEqualTo(callback)
-    }
-}
diff --git a/packages/SystemUI/tests/src/com/android/systemui/qs/FooterActionsControllerTest.kt b/packages/SystemUI/tests/src/com/android/systemui/qs/FooterActionsControllerTest.kt
index 91a9f9e..8ce50a6 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/qs/FooterActionsControllerTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/qs/FooterActionsControllerTest.kt
@@ -12,7 +12,6 @@
 import com.android.internal.logging.MetricsLogger
 import com.android.internal.logging.UiEventLogger
 import com.android.internal.logging.testing.FakeMetricsLogger
-import com.android.systemui.Dependency
 import com.android.systemui.R
 import com.android.systemui.classifier.FalsingManagerFake
 import com.android.systemui.flags.FeatureFlags
@@ -23,9 +22,7 @@
 import com.android.systemui.statusbar.phone.MultiUserSwitchController
 import com.android.systemui.statusbar.policy.DeviceProvisionedController
 import com.android.systemui.statusbar.policy.UserInfoController
-import com.android.systemui.tuner.TunerService
 import com.android.systemui.util.settings.FakeSettings
-import com.android.systemui.utils.leaks.FakeTunerService
 import com.android.systemui.utils.leaks.LeakCheckedTest
 import com.google.common.truth.Truth.assertThat
 import org.junit.After
@@ -82,8 +79,6 @@
         MockitoAnnotations.initMocks(this)
         testableLooper = TestableLooper.get(this)
         fakeSettings = FakeSettings()
-        injectLeakCheckedDependencies(*LeakCheckedTest.ALL_SUPPORTED_CLASSES)
-        val fakeTunerService = Dependency.get(TunerService::class.java) as FakeTunerService
 
         whenever(multiUserSwitchControllerFactory.create(any()))
                 .thenReturn(multiUserSwitchController)
@@ -95,9 +90,8 @@
         controller = FooterActionsController(view, multiUserSwitchControllerFactory,
                 activityStarter, userManager, userTracker, userInfoController,
                 deviceProvisionedController, securityFooterController, fgsManagerController,
-                falsingManager, metricsLogger, fakeTunerService,
-                globalActionsDialog, uiEventLogger, showPMLiteButton = true, fakeSettings,
-                Handler(testableLooper.looper), featureFlags)
+                falsingManager, metricsLogger, globalActionsDialog, uiEventLogger,
+                showPMLiteButton = true, fakeSettings, Handler(testableLooper.looper), featureFlags)
         controller.init()
         ViewUtils.attachView(view)
         // View looper is the testable looper associated with the test
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/NotificationShadeWindowViewControllerTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/NotificationShadeWindowViewControllerTest.kt
index 12e71af..34a5d4b 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/NotificationShadeWindowViewControllerTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/NotificationShadeWindowViewControllerTest.kt
@@ -24,6 +24,7 @@
 import com.android.systemui.SysuiTestCase
 import com.android.systemui.classifier.FalsingCollectorFake
 import com.android.systemui.dock.DockManager
+import com.android.systemui.lowlightclock.LowLightClockController
 import com.android.systemui.statusbar.LockscreenShadeTransitionController
 import com.android.systemui.statusbar.NotificationShadeDepthController
 import com.android.systemui.statusbar.NotificationShadeWindowController
@@ -38,11 +39,13 @@
 import org.junit.Test
 import org.junit.runner.RunWith
 import org.mockito.ArgumentCaptor
+import org.mockito.ArgumentMatchers
 import org.mockito.Mock
 import org.mockito.MockitoAnnotations
 import org.mockito.Mockito.anyFloat
 import org.mockito.Mockito.never
 import org.mockito.Mockito.verify
+import java.util.Optional
 import org.mockito.Mockito.`when` as whenever
 
 @RunWith(AndroidTestingRunner::class)
@@ -79,6 +82,8 @@
     private lateinit var mLockIconViewController: LockIconViewController
     @Mock
     private lateinit var mPhoneStatusBarViewController: PhoneStatusBarViewController
+    @Mock
+    private lateinit var mLowLightClockController: LowLightClockController
 
     private lateinit var mInteractionEventHandlerCaptor: ArgumentCaptor<InteractionEventHandler>
     private lateinit var mInteractionEventHandler: InteractionEventHandler
@@ -101,7 +106,8 @@
             stackScrollLayoutController,
             mStatusBarKeyguardViewManager,
             mStatusBarWindowStateController,
-            mLockIconViewController
+            mLockIconViewController,
+            Optional.of(mLowLightClockController)
         )
         mController.setupExpandedStatusBar()
         mController.setService(mStatusBar, mNotificationShadeWindowController)
@@ -235,6 +241,31 @@
         verify(mPhoneStatusBarViewController).sendTouchToView(nextEvent)
         assertThat(returnVal).isTrue()
     }
+
+    @Test
+    fun testLowLightClockAttachedWhenExpandedStatusBarSetup() {
+        verify(mLowLightClockController).attachLowLightClockView(ArgumentMatchers.any())
+    }
+
+    @Test
+    fun testLowLightClockShownWhenDozing() {
+        mController.setDozing(true)
+        verify(mLowLightClockController).showLowLightClock(true)
+    }
+
+    @Test
+    fun testLowLightClockDozeTimeTickCalled() {
+        mController.dozeTimeTick()
+        verify(mLowLightClockController).dozeTimeTick()
+    }
+
+    @Test
+    fun testLowLightClockHiddenWhenNotDozing() {
+        mController.setDozing(true)
+        verify(mLowLightClockController).showLowLightClock(true)
+        mController.setDozing(false)
+        verify(mLowLightClockController).showLowLightClock(false)
+    }
 }
 
 private val downEv = MotionEvent.obtain(0L, 0L, MotionEvent.ACTION_DOWN, 0f, 0f, 0)
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/NotificationShadeWindowViewTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/NotificationShadeWindowViewTest.java
index d885da8..6c33113 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/NotificationShadeWindowViewTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/NotificationShadeWindowViewTest.java
@@ -37,6 +37,7 @@
 import com.android.systemui.SysuiTestCase;
 import com.android.systemui.classifier.FalsingCollectorFake;
 import com.android.systemui.dock.DockManager;
+import com.android.systemui.lowlightclock.LowLightClockController;
 import com.android.systemui.statusbar.DragDownHelper;
 import com.android.systemui.statusbar.LockscreenShadeTransitionController;
 import com.android.systemui.statusbar.NotificationShadeDepthController;
@@ -56,6 +57,8 @@
 import org.mockito.Mock;
 import org.mockito.MockitoAnnotations;
 
+import java.util.Optional;
+
 @RunWith(AndroidTestingRunner.class)
 @TestableLooper.RunWithLooper(setAsMainLooper = true)
 @SmallTest
@@ -79,6 +82,7 @@
     @Mock private StatusBarWindowStateController mStatusBarWindowStateController;
     @Mock private LockscreenShadeTransitionController mLockscreenShadeTransitionController;
     @Mock private LockIconViewController mLockIconViewController;
+    @Mock private LowLightClockController mLowLightClockController;
 
     @Captor private ArgumentCaptor<NotificationShadeWindowView.InteractionEventHandler>
             mInteractionEventHandlerCaptor;
@@ -110,7 +114,8 @@
                 mNotificationStackScrollLayoutController,
                 mStatusBarKeyguardViewManager,
                 mStatusBarWindowStateController,
-                mLockIconViewController);
+                mLockIconViewController,
+                Optional.of(mLowLightClockController));
         mController.setupExpandedStatusBar();
         mController.setService(mStatusBar, mNotificationShadeWindowController);
         mController.setDragDownHelper(mDragDownHelper);
diff --git a/packages/overlays/NavigationBarModeGesturalOverlay/res/values/config.xml b/packages/overlays/NavigationBarModeGesturalOverlay/res/values/config.xml
index cd53227..66fc2ae 100644
--- a/packages/overlays/NavigationBarModeGesturalOverlay/res/values/config.xml
+++ b/packages/overlays/NavigationBarModeGesturalOverlay/res/values/config.xml
@@ -30,6 +30,9 @@
     <!-- Controls whether the navigation bar lets through taps. -->
     <bool name="config_navBarTapThrough">true</bool>
 
+    <!-- Controls whether the IME renders the back and IME switcher buttons or not. -->
+    <bool name="config_imeDrawsImeNavBar">true</bool>
+
     <!-- Controls the size of the back gesture inset. -->
     <dimen name="config_backGestureInset">30dp</dimen>
 
diff --git a/packages/overlays/NavigationBarModeGesturalOverlayExtraWideBack/res/values/config.xml b/packages/overlays/NavigationBarModeGesturalOverlayExtraWideBack/res/values/config.xml
index 88cb74d79..120a489 100644
--- a/packages/overlays/NavigationBarModeGesturalOverlayExtraWideBack/res/values/config.xml
+++ b/packages/overlays/NavigationBarModeGesturalOverlayExtraWideBack/res/values/config.xml
@@ -30,6 +30,9 @@
     <!-- Controls whether the navigation bar lets through taps. -->
     <bool name="config_navBarTapThrough">true</bool>
 
+    <!-- Controls whether the IME renders the back and IME switcher buttons or not. -->
+    <bool name="config_imeDrawsImeNavBar">true</bool>
+
     <!-- Controls the size of the back gesture inset. -->
     <dimen name="config_backGestureInset">40dp</dimen>
 
diff --git a/packages/overlays/NavigationBarModeGesturalOverlayNarrowBack/res/values/config.xml b/packages/overlays/NavigationBarModeGesturalOverlayNarrowBack/res/values/config.xml
index 70c41d0..c18d892 100644
--- a/packages/overlays/NavigationBarModeGesturalOverlayNarrowBack/res/values/config.xml
+++ b/packages/overlays/NavigationBarModeGesturalOverlayNarrowBack/res/values/config.xml
@@ -30,6 +30,9 @@
     <!-- Controls whether the navigation bar lets through taps. -->
     <bool name="config_navBarTapThrough">true</bool>
 
+    <!-- Controls whether the IME renders the back and IME switcher buttons or not. -->
+    <bool name="config_imeDrawsImeNavBar">true</bool>
+
     <!-- Controls the size of the back gesture inset. -->
     <dimen name="config_backGestureInset">18dp</dimen>
 
diff --git a/packages/overlays/NavigationBarModeGesturalOverlayWideBack/res/values/config.xml b/packages/overlays/NavigationBarModeGesturalOverlayWideBack/res/values/config.xml
index de26394..877b5f8 100644
--- a/packages/overlays/NavigationBarModeGesturalOverlayWideBack/res/values/config.xml
+++ b/packages/overlays/NavigationBarModeGesturalOverlayWideBack/res/values/config.xml
@@ -30,6 +30,9 @@
     <!-- Controls whether the navigation bar lets through taps. -->
     <bool name="config_navBarTapThrough">true</bool>
 
+    <!-- Controls whether the IME renders the back and IME switcher buttons or not. -->
+    <bool name="config_imeDrawsImeNavBar">true</bool>
+
     <!-- Controls the size of the back gesture inset. -->
     <dimen name="config_backGestureInset">32dp</dimen>
 
diff --git a/services/Android.bp b/services/Android.bp
index e010469..e0ca8a6 100644
--- a/services/Android.bp
+++ b/services/Android.bp
@@ -24,6 +24,7 @@
             "-Xep:ArrayHashCode:ERROR",
             "-Xep:SelfAssignment:ERROR",
             "-Xep:ArrayEquals:ERROR",
+            "-Xep:IdentityBinaryExpression:ERROR",
             // NOTE: only enable to generate local patchfiles
             // "-XepPatchChecks:refaster:frameworks/base/errorprone/refaster/EfficientXml.java.refaster",
             // "-XepPatchLocation:/tmp/refaster/",
diff --git a/services/accessibility/java/com/android/server/accessibility/magnification/MagnificationController.java b/services/accessibility/java/com/android/server/accessibility/magnification/MagnificationController.java
index b70ffb2..c376bf8 100644
--- a/services/accessibility/java/com/android/server/accessibility/magnification/MagnificationController.java
+++ b/services/accessibility/java/com/android/server/accessibility/magnification/MagnificationController.java
@@ -78,6 +78,7 @@
 
     private static final boolean DEBUG = false;
     private static final String TAG = "MagnificationController";
+
     private final AccessibilityManagerService mAms;
     private final PointF mTempPoint = new PointF();
     private final Object mLock;
@@ -194,11 +195,10 @@
      */
     public void transitionMagnificationModeLocked(int displayId, int targetMode,
             @NonNull TransitionCallBack transitionCallBack) {
-        final PointF magnificationCenter = getCurrentMagnificationBoundsCenterLocked(displayId,
-                targetMode);
+        final PointF currentCenter = getCurrentMagnificationCenterLocked(displayId, targetMode);
         final DisableMagnificationCallback animationCallback =
                 getDisableMagnificationEndRunnableLocked(displayId);
-        if (magnificationCenter == null && animationCallback == null) {
+        if (currentCenter == null && animationCallback == null) {
             transitionCallBack.onResult(displayId, true);
             return;
         }
@@ -213,7 +213,7 @@
             }
         }
 
-        if (magnificationCenter == null) {
+        if (currentCenter == null) {
             Slog.w(TAG, "Invalid center, ignore it");
             transitionCallBack.onResult(displayId, true);
             return;
@@ -221,10 +221,10 @@
         final FullScreenMagnificationController screenMagnificationController =
                 getFullScreenMagnificationController();
         final WindowMagnificationManager windowMagnificationMgr = getWindowMagnificationMgr();
-        final float scale = mScaleProvider.getScale(displayId);
+        final float scale = getTargetModeScaleFromCurrentMagnification(displayId, targetMode);
         final DisableMagnificationCallback animationEndCallback =
                 new DisableMagnificationCallback(transitionCallBack, displayId, targetMode,
-                        scale, magnificationCenter, true);
+                        scale, currentCenter, true);
         if (targetMode == ACCESSIBILITY_MAGNIFICATION_MODE_WINDOW) {
             screenMagnificationController.reset(displayId, animationEndCallback);
         } else {
@@ -247,17 +247,20 @@
      */
     public void transitionMagnificationConfigMode(int displayId, MagnificationConfig config,
             boolean animate, int id) {
+        if (DEBUG) {
+            Slog.d(TAG, "transitionMagnificationConfigMode displayId = " + displayId
+                    + ", config = " + config);
+        }
         synchronized (mLock) {
             final int targetMode = config.getMode();
-            final PointF currentBoundsCenter = getCurrentMagnificationBoundsCenterLocked(displayId,
-                    targetMode);
+            final PointF currentCenter = getCurrentMagnificationCenterLocked(displayId, targetMode);
             final PointF magnificationCenter = new PointF(config.getCenterX(), config.getCenterY());
-            if (currentBoundsCenter != null) {
+            if (currentCenter != null) {
                 final float centerX = Float.isNaN(config.getCenterX())
-                        ? currentBoundsCenter.x
+                        ? currentCenter.x
                         : config.getCenterX();
                 final float centerY = Float.isNaN(config.getCenterY())
-                        ? currentBoundsCenter.y
+                        ? currentCenter.y
                         : config.getCenterY();
                 magnificationCenter.set(centerX, centerY);
             }
@@ -272,24 +275,36 @@
             final FullScreenMagnificationController screenMagnificationController =
                     getFullScreenMagnificationController();
             final WindowMagnificationManager windowMagnificationMgr = getWindowMagnificationMgr();
-            final float scale = mScaleProvider.getScale(displayId);
+            final float targetScale = Float.isNaN(config.getScale())
+                    ? getTargetModeScaleFromCurrentMagnification(displayId, targetMode)
+                    : config.getScale();
             if (targetMode == ACCESSIBILITY_MAGNIFICATION_MODE_WINDOW) {
                 screenMagnificationController.reset(displayId, false);
                 windowMagnificationMgr.enableWindowMagnification(displayId,
-                        scale, magnificationCenter.x, magnificationCenter.y,
+                        targetScale, magnificationCenter.x, magnificationCenter.y,
                         animate ? STUB_ANIMATION_CALLBACK : null, id);
             } else if (targetMode == ACCESSIBILITY_MAGNIFICATION_MODE_FULLSCREEN) {
                 windowMagnificationMgr.disableWindowMagnification(displayId, false, null);
                 if (!screenMagnificationController.isRegistered(displayId)) {
                     screenMagnificationController.register(displayId);
                 }
-                screenMagnificationController.setScaleAndCenter(displayId, scale,
+                screenMagnificationController.setScaleAndCenter(displayId, targetScale,
                         magnificationCenter.x, magnificationCenter.y, animate,
                         id);
             }
         }
     }
 
+    // We assume the target mode is different from the current mode, and there is only
+    // two modes, so we get the target scale from another mode.
+    private float getTargetModeScaleFromCurrentMagnification(int displayId, int targetMode) {
+        if (targetMode == ACCESSIBILITY_MAGNIFICATION_MODE_WINDOW) {
+            return getFullScreenMagnificationController().getScale(displayId);
+        } else {
+            return getWindowMagnificationMgr().getScale(displayId);
+        }
+    }
+
     /**
      * Return {@code true} if disable magnification animation callback of the display is running.
      *
@@ -384,7 +399,7 @@
     public void onSourceBoundsChanged(int displayId, Rect bounds) {
         final MagnificationConfig config = new MagnificationConfig.Builder()
                 .setMode(MAGNIFICATION_MODE_WINDOW)
-                .setScale(mScaleProvider.getScale(displayId))
+                .setScale(getWindowMagnificationMgr().getScale(displayId))
                 .setCenterX(bounds.exactCenterX())
                 .setCenterY(bounds.exactCenterY()).build();
         mAms.notifyMagnificationChanged(displayId, new Region(bounds), config);
@@ -607,8 +622,7 @@
         }
     }
 
-    private @Nullable
-            PointF getCurrentMagnificationBoundsCenterLocked(int displayId, int targetMode) {
+    private @Nullable PointF getCurrentMagnificationCenterLocked(int displayId, int targetMode) {
         if (targetMode == ACCESSIBILITY_MAGNIFICATION_MODE_FULLSCREEN) {
             if (mWindowMagnificationMgr == null
                     || !mWindowMagnificationMgr.isWindowMagnifierEnabled(displayId)) {
diff --git a/services/accessibility/java/com/android/server/accessibility/magnification/MagnificationProcessor.java b/services/accessibility/java/com/android/server/accessibility/magnification/MagnificationProcessor.java
index 9eb77b4..175182c 100644
--- a/services/accessibility/java/com/android/server/accessibility/magnification/MagnificationProcessor.java
+++ b/services/accessibility/java/com/android/server/accessibility/magnification/MagnificationProcessor.java
@@ -26,6 +26,7 @@
 import android.accessibilityservice.MagnificationConfig;
 import android.annotation.NonNull;
 import android.graphics.Region;
+import android.util.Slog;
 import android.view.Display;
 
 import java.io.PrintWriter;
@@ -56,6 +57,9 @@
  */
 public class MagnificationProcessor {
 
+    private static final String TAG = "MagnificationProcessor";
+    private static final boolean DEBUG = false;
+
     private final MagnificationController mController;
 
     public MagnificationProcessor(MagnificationController controller) {
@@ -103,6 +107,9 @@
      */
     public boolean setMagnificationConfig(int displayId, @NonNull MagnificationConfig config,
             boolean animate, int id) {
+        if (DEBUG) {
+            Slog.d(TAG, "setMagnificationConfig config=" + config);
+        }
         if (transitionModeIfNeeded(displayId, config, animate, id)) {
             return true;
         }
@@ -125,15 +132,13 @@
     }
 
     private boolean setScaleAndCenterForFullScreenMagnification(int displayId, float scale,
-            float centerX, float centerY,
-            boolean animate, int id) {
+            float centerX, float centerY, boolean animate, int id) {
+
         if (!isRegistered(displayId)) {
             register(displayId);
         }
         return mController.getFullScreenMagnificationController().setScaleAndCenter(
-                displayId,
-                scale,
-                centerX, centerY, animate, id);
+                displayId, scale, centerX, centerY, animate, id);
     }
 
     /**
@@ -143,8 +148,12 @@
     private boolean transitionModeIfNeeded(int displayId, MagnificationConfig config,
             boolean animate, int id) {
         int currentMode = getControllingMode(displayId);
-        if (currentMode == config.getMode()
-                || !mController.hasDisableMagnificationCallback(displayId)) {
+        if (config.getMode() == MagnificationConfig.MAGNIFICATION_MODE_DEFAULT) {
+            return false;
+        }
+        // Target mode is as same as current mode and is not transitioning.
+        if (currentMode == config.getMode() && !mController.hasDisableMagnificationCallback(
+                displayId)) {
             return false;
         }
         mController.transitionMagnificationConfigMode(displayId, config, animate, id);
diff --git a/services/accessibility/java/com/android/server/accessibility/magnification/WindowMagnificationManager.java b/services/accessibility/java/com/android/server/accessibility/magnification/WindowMagnificationManager.java
index 278f3f9..89910ea 100644
--- a/services/accessibility/java/com/android/server/accessibility/magnification/WindowMagnificationManager.java
+++ b/services/accessibility/java/com/android/server/accessibility/magnification/WindowMagnificationManager.java
@@ -177,6 +177,9 @@
      * @param connection {@link IWindowMagnificationConnection}
      */
     public void setConnection(@Nullable IWindowMagnificationConnection connection) {
+        if (DBG) {
+            Slog.d(TAG, "setConnection :" + connection);
+        }
         synchronized (mLock) {
             // Reset connectionWrapper.
             if (mConnectionWrapper != null) {
@@ -223,6 +226,9 @@
      * @return {@code true} if {@link IWindowMagnificationConnection} state is going to change.
      */
     public boolean requestConnection(boolean connect) {
+        if (DBG) {
+            Slog.d(TAG, "requestConnection :" + connect);
+        }
         synchronized (mLock) {
             if (connect == isConnected()) {
                 return false;
@@ -485,10 +491,6 @@
         final boolean enabled;
         boolean previousEnabled;
         synchronized (mLock) {
-            if (mConnectionWrapper == null) {
-                Slog.w(TAG, "enableWindowMagnification failed: connection null");
-                return false;
-            }
             WindowMagnifier magnifier = mWindowMagnifiers.get(displayId);
             if (magnifier == null) {
                 magnifier = createWindowMagnifier(displayId);
@@ -528,10 +530,10 @@
         final boolean disabled;
         synchronized (mLock) {
             WindowMagnifier magnifier = mWindowMagnifiers.get(displayId);
-            if (magnifier == null || mConnectionWrapper == null) {
-                Slog.w(TAG, "disableWindowMagnification failed: connection " + mConnectionWrapper);
+            if (magnifier == null) {
                 return false;
             }
+
             disabled = magnifier.disableWindowMagnificationInternal(animationCallback);
             if (clear) {
                 mWindowMagnifiers.delete(displayId);
@@ -1018,25 +1020,33 @@
         }
     }
 
+    @GuardedBy("mLock")
     private boolean enableWindowMagnificationInternal(int displayId, float scale, float centerX,
             float centerY, float magnificationFrameOffsetRatioX,
             float magnificationFrameOffsetRatioY,
             MagnificationAnimationCallback animationCallback) {
-        synchronized (mLock) {
-            return mConnectionWrapper != null && mConnectionWrapper.enableWindowMagnification(
-                    displayId, scale, centerX, centerY,
-                    magnificationFrameOffsetRatioX, magnificationFrameOffsetRatioY,
-                    animationCallback);
+        if (mConnectionWrapper == null) {
+            Slog.w(TAG, "enableWindowMagnificationInternal mConnectionWrapper is null");
+            return false;
         }
+        return  mConnectionWrapper.enableWindowMagnification(
+                displayId, scale, centerX, centerY,
+                magnificationFrameOffsetRatioX, magnificationFrameOffsetRatioY,
+                animationCallback);
     }
 
     private boolean setScaleInternal(int displayId, float scale) {
         return mConnectionWrapper != null && mConnectionWrapper.setScale(displayId, scale);
     }
 
+    @GuardedBy("mLock")
     private boolean disableWindowMagnificationInternal(int displayId,
             MagnificationAnimationCallback animationCallback) {
-        return mConnectionWrapper != null && mConnectionWrapper.disableWindowMagnification(
+        if (mConnectionWrapper == null) {
+            Slog.w(TAG, "mConnectionWrapper is null");
+            return false;
+        }
+        return mConnectionWrapper.disableWindowMagnification(
                 displayId, animationCallback);
     }
 
diff --git a/services/core/java/com/android/server/BinaryTransparencyService.java b/services/core/java/com/android/server/BinaryTransparencyService.java
index 6c220f6..52a0aa7 100644
--- a/services/core/java/com/android/server/BinaryTransparencyService.java
+++ b/services/core/java/com/android/server/BinaryTransparencyService.java
@@ -261,7 +261,6 @@
                                 pw.println("");
                             }
                         } catch (PackageManager.NameNotFoundException e) {
-                            pw.println(packageName);
                             pw.println(packageName
                                     + ";ERROR:Unable to find PackageInfo for this module.");
                             if (verbose) {
diff --git a/services/core/java/com/android/server/am/ActivityManagerService.java b/services/core/java/com/android/server/am/ActivityManagerService.java
index 2371101..e56098c 100644
--- a/services/core/java/com/android/server/am/ActivityManagerService.java
+++ b/services/core/java/com/android/server/am/ActivityManagerService.java
@@ -17149,6 +17149,11 @@
             // It's a CopyOnWriteArrayList, so no lock is needed.
             mBindServiceEventListeners.add(listener);
         }
+
+        @Override
+        public void restart() {
+            ActivityManagerService.this.restart();
+        }
     }
 
     long inputDispatchingTimedOut(int pid, final boolean aboveSystem, String reason) {
diff --git a/services/core/java/com/android/server/notification/PermissionHelper.java b/services/core/java/com/android/server/notification/PermissionHelper.java
index d80d9f3..6b9e374 100644
--- a/services/core/java/com/android/server/notification/PermissionHelper.java
+++ b/services/core/java/com/android/server/notification/PermissionHelper.java
@@ -185,11 +185,13 @@
             return;
         }
         try {
-            if (grant && !reviewRequired) {
+            boolean currentlyGranted = mPmi.checkPermission(packageName, NOTIFICATION_PERMISSION,
+                    userId) != PackageManager.PERMISSION_DENIED;
+            if (grant && !reviewRequired && !currentlyGranted) {
                 mPermManager.grantRuntimePermission(packageName, NOTIFICATION_PERMISSION, userId);
-            } else {
-                mPermManager.revokeRuntimePermission(packageName, NOTIFICATION_PERMISSION, userId,
-                        TAG);
+            } else if (!grant && currentlyGranted) {
+                mPermManager.revokeRuntimePermission(packageName, NOTIFICATION_PERMISSION,
+                        userId, TAG);
             }
             if (userSet) {
                 mPermManager.updatePermissionFlags(packageName, NOTIFICATION_PERMISSION,
diff --git a/services/core/java/com/android/server/notification/ValidateNotificationPeople.java b/services/core/java/com/android/server/notification/ValidateNotificationPeople.java
index dc4d04f..bdc5711 100644
--- a/services/core/java/com/android/server/notification/ValidateNotificationPeople.java
+++ b/services/core/java/com/android/server/notification/ValidateNotificationPeople.java
@@ -70,11 +70,15 @@
             "validate_notification_people_enabled";
     private static final String[] LOOKUP_PROJECTION = { Contacts._ID, Contacts.LOOKUP_KEY,
             Contacts.STARRED, Contacts.HAS_PHONE_NUMBER };
-    private static final String[] PHONE_LOOKUP_PROJECTION =
-            { ContactsContract.CommonDataKinds.Phone.NORMALIZED_NUMBER };
     private static final int MAX_PEOPLE = 10;
     private static final int PEOPLE_CACHE_SIZE = 200;
 
+    /** Columns used to look up phone numbers for contacts. */
+    @VisibleForTesting
+    static final String[] PHONE_LOOKUP_PROJECTION =
+            { ContactsContract.CommonDataKinds.Phone.NORMALIZED_NUMBER,
+                    ContactsContract.CommonDataKinds.Phone.NUMBER };
+
     /** Indicates that the notification does not reference any valid contacts. */
     static final float NONE = 0f;
 
@@ -548,14 +552,21 @@
             return mPhoneLookupKey;
         }
 
-        // Merge phone number found in this lookup and store it in mPhoneNumbers.
+        // Merge phone numbers found in this lookup and store them in mPhoneNumbers.
         public void mergePhoneNumber(Cursor cursor) {
-            final int phoneNumIdx = cursor.getColumnIndex(
+            final int normalizedNumIdx = cursor.getColumnIndex(
                     ContactsContract.CommonDataKinds.Phone.NORMALIZED_NUMBER);
-            if (phoneNumIdx >= 0) {
-                mPhoneNumbers.add(cursor.getString(phoneNumIdx));
+            if (normalizedNumIdx >= 0) {
+                mPhoneNumbers.add(cursor.getString(normalizedNumIdx));
             } else {
-                if (DEBUG) Slog.d(TAG, "invalid cursor: no NORMALIZED_NUMBER");
+                if (DEBUG) Slog.d(TAG, "cursor data not found: no NORMALIZED_NUMBER");
+            }
+
+            final int numIdx = cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER);
+            if (numIdx >= 0) {
+                mPhoneNumbers.add(cursor.getString(numIdx));
+            } else {
+                if (DEBUG) Slog.d(TAG, "cursor data not found: no NUMBER");
             }
         }
 
diff --git a/services/core/java/com/android/server/notification/ZenModeFiltering.java b/services/core/java/com/android/server/notification/ZenModeFiltering.java
index d04b331..2a6dd84 100644
--- a/services/core/java/com/android/server/notification/ZenModeFiltering.java
+++ b/services/core/java/com/android/server/notification/ZenModeFiltering.java
@@ -40,8 +40,6 @@
 import com.android.internal.util.NotificationMessagingUtil;
 
 import java.io.PrintWriter;
-import java.io.UnsupportedEncodingException;
-import java.net.URLDecoder;
 import java.util.Date;
 
 public class ZenModeFiltering {
@@ -416,16 +414,10 @@
                 if (person == null) continue;
                 final Uri uri = Uri.parse(person);
                 if ("tel".equals(uri.getScheme())) {
-                    String tel = uri.getSchemeSpecificPart();
-                    // while ideally we should not need to do this, sometimes we have seen tel
-                    // numbers given in a url-encoded format
-                    try {
-                        tel = URLDecoder.decode(tel, "UTF-8");
-                    } catch (UnsupportedEncodingException e) {
-                        // ignore, keep the original tel string
-                        Slog.w(TAG, "unsupported encoding in tel: uri input");
-                    }
-                    mTelCalls.put(tel, now);
+                    // while ideally we should not need to decode this, sometimes we have seen tel
+                    // numbers given in an encoded format
+                    String tel = Uri.decode(uri.getSchemeSpecificPart());
+                    if (tel != null) mTelCalls.put(tel, now);
                 } else {
                     // for non-tel calls, store the entire string, uri-component and all
                     mOtherCalls.put(person, now);
@@ -436,7 +428,7 @@
             // provided; these are in the format of just a phone number string
             if (phoneNumbers != null) {
                 for (String num : phoneNumbers) {
-                    mTelCalls.put(num, now);
+                    if (num != null) mTelCalls.put(num, now);
                 }
             }
         }
@@ -456,17 +448,13 @@
                         return true;
                     } else {
                         // see if a number that matches via areSameNumber exists
-                        String numberToCheck = number;
-                        try {
-                            numberToCheck = URLDecoder.decode(number, "UTF-8");
-                        } catch (UnsupportedEncodingException e) {
-                            // ignore, continue to use the original string
-                            Slog.w(TAG, "unsupported encoding in tel: uri input");
-                        }
-                        for (String prev : mTelCalls.keySet()) {
-                            if (PhoneNumberUtils.areSamePhoneNumber(
-                                    numberToCheck, prev, defaultCountryCode)) {
-                                return true;
+                        String numberToCheck = Uri.decode(number);
+                        if (numberToCheck != null) {
+                            for (String prev : mTelCalls.keySet()) {
+                                if (PhoneNumberUtils.areSamePhoneNumber(
+                                        numberToCheck, prev, defaultCountryCode)) {
+                                    return true;
+                                }
                             }
                         }
                     }
diff --git a/services/core/java/com/android/server/pm/AppsFilter.java b/services/core/java/com/android/server/pm/AppsFilter.java
index 4f1a9e7..d117967 100644
--- a/services/core/java/com/android/server/pm/AppsFilter.java
+++ b/services/core/java/com/android/server/pm/AppsFilter.java
@@ -1382,7 +1382,7 @@
                 }
             } else {
                 callingPkgSetting = null;
-                callingSharedPkgSettings = ((SharedUserSetting) callingSetting).packages;
+                callingSharedPkgSettings = ((SharedUserSetting) callingSetting).getPackageStates();
             }
             if (DEBUG_TRACING) {
                 Trace.traceEnd(TRACE_TAG_PACKAGE_MANAGER);
diff --git a/services/core/java/com/android/server/pm/ComputerEngine.java b/services/core/java/com/android/server/pm/ComputerEngine.java
index 04f0aab..c437697 100644
--- a/services/core/java/com/android/server/pm/ComputerEngine.java
+++ b/services/core/java/com/android/server/pm/ComputerEngine.java
@@ -2176,11 +2176,13 @@
                 return null;
             }
             final SharedUserSetting sus = (SharedUserSetting) obj;
-            final int n = sus.packages.size();
+            final ArraySet<PackageStateInternal> packageStates =
+                    (ArraySet<PackageStateInternal>) sus.getPackageStates();
+            final int n = packageStates.size();
             String[] res = new String[n];
             int i = 0;
             for (int index = 0; index < n; index++) {
-                final PackageStateInternal ps = sus.packages.valueAt(index);
+                final PackageStateInternal ps = packageStates.valueAt(index);
                 if (ps.getUserStateOrDefault(userId).isInstalled()
                         && !shouldFilterApplication(ps, callingUid, userId)) {
                     res[i++] = ps.getPackageName();
@@ -2710,8 +2712,10 @@
     public final boolean shouldFilterApplication(@NonNull SharedUserSetting sus,
             int callingUid, int userId) {
         boolean filterApp = true;
-        for (int index = sus.packages.size() - 1; index >= 0 && filterApp; index--) {
-            filterApp &= shouldFilterApplication(sus.packages.valueAt(index),
+        final ArraySet<PackageStateInternal> packageStates =
+                (ArraySet<PackageStateInternal>) sus.getPackageStates();
+        for (int index = packageStates.size() - 1; index >= 0 && filterApp; index--) {
+            filterApp &= shouldFilterApplication(packageStates.valueAt(index),
                     callingUid, /* component */ null, TYPE_UNKNOWN, userId);
         }
         return filterApp;
@@ -4468,9 +4472,11 @@
         final Object obj = mSettings.getSettingBase(appId);
         if (obj instanceof SharedUserSetting) {
             final SharedUserSetting sus = (SharedUserSetting) obj;
-            final int numPackages = sus.packages.size();
+            final ArraySet<PackageStateInternal> packageStates =
+                    (ArraySet<PackageStateInternal>) sus.getPackageStates();
+            final int numPackages = packageStates.size();
             for (int index = 0; index < numPackages; index++) {
-                final PackageSetting ps = sus.packages.valueAt(index);
+                final PackageStateInternal ps = packageStates.valueAt(index);
                 if (ps.isPrivileged()) {
                     return true;
                 }
@@ -5290,8 +5296,9 @@
             final AndroidPackage pkg = ((PackageSetting) setting).getPkg();
             return pkg != null && mAppsFilter.canQueryPackage(pkg, targetPackageName);
         } else {
-            final ArraySet<PackageSetting> callingSharedPkgSettings =
-                    ((SharedUserSetting) setting).packages;
+            final ArraySet<PackageStateInternal> callingSharedPkgSettings =
+                    (ArraySet<PackageStateInternal>)
+                            ((SharedUserSetting) setting).getPackageStates();
             for (int i = callingSharedPkgSettings.size() - 1; i >= 0; i--) {
                 final AndroidPackage pkg = callingSharedPkgSettings.valueAt(i).getPkg();
                 if (pkg != null && mAppsFilter.canQueryPackage(pkg, targetPackageName)) {
@@ -5595,10 +5602,12 @@
         final SettingBase settingBase = mSettings.getSettingBase(appId);
         if (settingBase instanceof SharedUserSetting) {
             final SharedUserSetting sus = (SharedUserSetting) settingBase;
+            final ArraySet<PackageStateInternal> packageStates =
+                    (ArraySet<PackageStateInternal>) sus.getPackageStates();
             int vers = Build.VERSION_CODES.CUR_DEVELOPMENT;
-            final int numPackages = sus.packages.size();
+            final int numPackages = packageStates.size();
             for (int index = 0; index < numPackages; index++) {
-                final PackageSetting ps = sus.packages.valueAt(index);
+                final PackageStateInternal ps = packageStates.valueAt(index);
                 if (ps.getPkg() != null) {
                     int v = ps.getPkg().getTargetSdkVersion();
                     if (v < vers) vers = v;
diff --git a/services/core/java/com/android/server/pm/InstallPackageHelper.java b/services/core/java/com/android/server/pm/InstallPackageHelper.java
index 684e6ba..2ef092e 100644
--- a/services/core/java/com/android/server/pm/InstallPackageHelper.java
+++ b/services/core/java/com/android/server/pm/InstallPackageHelper.java
@@ -3701,7 +3701,7 @@
                     && sharedUserSetting != null) {
                 Log.d(TAG, "Shared UserID " + parsedPackage.getSharedUserId()
                         + " (uid=" + sharedUserSetting.mAppId + "):"
-                        + " packages=" + sharedUserSetting.packages);
+                        + " packages=" + sharedUserSetting.getPackageStates());
             }
             if (installedPkgSetting != null) {
                 oldSharedUserSetting = mPm.mSettings.getSharedUserSettingLPr(installedPkgSetting);
diff --git a/services/core/java/com/android/server/pm/PackageAbiHelper.java b/services/core/java/com/android/server/pm/PackageAbiHelper.java
index ca7c2db..1dbab90 100644
--- a/services/core/java/com/android/server/pm/PackageAbiHelper.java
+++ b/services/core/java/com/android/server/pm/PackageAbiHelper.java
@@ -18,15 +18,16 @@
 
 import android.annotation.NonNull;
 import android.annotation.Nullable;
+import android.util.ArraySet;
 import android.util.Pair;
 
 import com.android.internal.annotations.VisibleForTesting;
 import com.android.server.pm.parsing.pkg.AndroidPackage;
 import com.android.server.pm.parsing.pkg.AndroidPackageUtils;
 import com.android.server.pm.parsing.pkg.ParsedPackage;
+import com.android.server.pm.pkg.PackageStateInternal;
 
 import java.io.File;
-import java.util.Set;
 
 
 
@@ -74,8 +75,8 @@
      *         belonging to the shared user.
      */
     @Nullable
-    String getAdjustedAbiForSharedUser(
-            Set<PackageSetting> packagesForUser, AndroidPackage scannedPackage);
+    String getAdjustedAbiForSharedUser(ArraySet<? extends PackageStateInternal> packagesForUser,
+            AndroidPackage scannedPackage);
 
     /**
      * The native library paths and related properties that should be set on a
diff --git a/services/core/java/com/android/server/pm/PackageAbiHelperImpl.java b/services/core/java/com/android/server/pm/PackageAbiHelperImpl.java
index 1af508f..73d81ba 100644
--- a/services/core/java/com/android/server/pm/PackageAbiHelperImpl.java
+++ b/services/core/java/com/android/server/pm/PackageAbiHelperImpl.java
@@ -34,6 +34,7 @@
 import android.os.FileUtils;
 import android.os.Trace;
 import android.text.TextUtils;
+import android.util.ArraySet;
 import android.util.Pair;
 import android.util.Slog;
 
@@ -41,6 +42,7 @@
 import com.android.internal.util.ArrayUtils;
 import com.android.server.pm.parsing.pkg.AndroidPackage;
 import com.android.server.pm.parsing.pkg.AndroidPackageUtils;
+import com.android.server.pm.pkg.PackageStateInternal;
 
 import dalvik.system.VMRuntime;
 
@@ -48,7 +50,6 @@
 
 import java.io.File;
 import java.io.IOException;
-import java.util.Set;
 
 final class PackageAbiHelperImpl implements PackageAbiHelper {
 
@@ -496,7 +497,8 @@
     @Override
     @Nullable
     public String getAdjustedAbiForSharedUser(
-            Set<PackageSetting> packagesForUser, AndroidPackage scannedPackage) {
+            ArraySet<? extends PackageStateInternal> packagesForUser,
+            AndroidPackage scannedPackage) {
         String requiredInstructionSet = null;
         if (scannedPackage != null) {
             String pkgRawPrimaryCpuAbi = AndroidPackageUtils.getRawPrimaryCpuAbi(scannedPackage);
@@ -505,8 +507,8 @@
             }
         }
 
-        PackageSetting requirer = null;
-        for (PackageSetting ps : packagesForUser) {
+        PackageStateInternal requirer = null;
+        for (PackageStateInternal ps : packagesForUser) {
             // If packagesForUser contains scannedPackage, we skip it. This will happen
             // when scannedPackage is an update of an existing package. Without this check,
             // we will never be able to change the ABI of any package belonging to a shared
diff --git a/services/core/java/com/android/server/pm/PackageManagerService.java b/services/core/java/com/android/server/pm/PackageManagerService.java
index 5c68fac..8f4cef9 100644
--- a/services/core/java/com/android/server/pm/PackageManagerService.java
+++ b/services/core/java/com/android/server/pm/PackageManagerService.java
@@ -2005,7 +2005,7 @@
                         ScanPackageUtils.applyAdjustedAbiToSharedUser(
                                 setting, null /*scannedPackage*/,
                                 mInjector.getAbiHelper().getAdjustedAbiForSharedUser(
-                                setting.packages, null /*scannedPackage*/));
+                                        setting.getPackageStates(), null /*scannedPackage*/));
                 if (changedAbiCodePath != null && changedAbiCodePath.size() > 0) {
                     for (int i = changedAbiCodePath.size() - 1; i >= 0; --i) {
                         final String codePathString = changedAbiCodePath.get(i);
diff --git a/services/core/java/com/android/server/pm/PackageManagerServiceUtils.java b/services/core/java/com/android/server/pm/PackageManagerServiceUtils.java
index 0dae12f..2f56bfe 100644
--- a/services/core/java/com/android/server/pm/PackageManagerServiceUtils.java
+++ b/services/core/java/com/android/server/pm/PackageManagerServiceUtils.java
@@ -573,9 +573,10 @@
             // Special case: if the sharedUserId capability check failed it could be due to this
             // being the only package in the sharedUserId so far and the lineage being updated to
             // deny the sharedUserId capability of the previous key in the lineage.
-            if (!match && sharedUserSetting.packages.size() == 1
-                    && sharedUserSetting.packages
-                            .valueAt(0).getPackageName().equals(packageName)) {
+            final ArraySet<PackageStateInternal> susPackageStates =
+                    (ArraySet<PackageStateInternal>) sharedUserSetting.getPackageStates();
+            if (!match && susPackageStates.size() == 1
+                    && susPackageStates.valueAt(0).getPackageName().equals(packageName)) {
                 match = true;
             }
             if (!match && compareCompat) {
@@ -605,7 +606,8 @@
             // Iterate over all of the packages in the sharedUserId and ensure any that are signed
             // with a key in this package's lineage have the SHARED_USER_ID capability granted.
             if (parsedSignatures.hasPastSigningCertificates()) {
-                for (PackageSetting shUidPkgSetting : sharedUserSetting.packages) {
+                for (int i = 0; i < susPackageStates.size(); i++) {
+                    PackageStateInternal shUidPkgSetting = susPackageStates.valueAt(i);
                     // if the current package in the sharedUserId is the package being updated then
                     // skip this check as the update may revoke the sharedUserId capability from
                     // the key with which this app was previously signed.
diff --git a/services/core/java/com/android/server/pm/ScanPackageUtils.java b/services/core/java/com/android/server/pm/ScanPackageUtils.java
index 99d9d58..33f0b54 100644
--- a/services/core/java/com/android/server/pm/ScanPackageUtils.java
+++ b/services/core/java/com/android/server/pm/ScanPackageUtils.java
@@ -62,6 +62,7 @@
 import android.os.UserHandle;
 import android.text.TextUtils;
 import android.util.ArrayMap;
+import android.util.ArraySet;
 import android.util.Log;
 import android.util.Pair;
 import android.util.Slog;
@@ -85,6 +86,7 @@
 import com.android.server.pm.pkg.component.ParsedProvider;
 import com.android.server.pm.pkg.component.ParsedService;
 import com.android.server.pm.pkg.parsing.ParsingPackageUtils;
+import com.android.server.utils.WatchedArraySet;
 
 import dalvik.system.VMRuntime;
 
@@ -94,7 +96,6 @@
 import java.util.List;
 import java.util.Map;
 import java.util.Objects;
-import java.util.Set;
 import java.util.UUID;
 
 /**
@@ -400,7 +401,7 @@
             // code and package path correct.
             changedAbiCodePath = applyAdjustedAbiToSharedUser(oldSharedUserSetting,
                     parsedPackage, packageAbiHelper.getAdjustedAbiForSharedUser(
-                            oldSharedUserSetting.packages, parsedPackage));
+                            oldSharedUserSetting.getPackageStates(), parsedPackage));
         }
 
         parsedPackage.setFactoryTest(isUnderFactoryTest && parsedPackage.getRequestedPermissions()
@@ -891,7 +892,7 @@
 
     /**
      * Applies the adjusted ABI calculated by
-     * {@link PackageAbiHelper#getAdjustedAbiForSharedUser(Set, AndroidPackage)} to all
+     * {@link PackageAbiHelper#getAdjustedAbiForSharedUser(ArraySet, AndroidPackage)} to all
      * relevant packages and settings.
      * @param sharedUserSetting The {@code SharedUserSetting} to adjust
      * @param scannedPackage the package being scanned or null
@@ -904,7 +905,10 @@
             scannedPackage.setPrimaryCpuAbi(adjustedAbi);
         }
         List<String> changedAbiCodePath = null;
-        for (PackageSetting ps : sharedUserSetting.packages) {
+        final WatchedArraySet<PackageSetting> sharedUserPackageSettings =
+                sharedUserSetting.getPackageSettings();
+        for (int i = 0; i < sharedUserPackageSettings.size(); i++) {
+            PackageSetting ps = sharedUserPackageSettings.valueAt(i);
             if (scannedPackage == null
                     || !scannedPackage.getPackageName().equals(ps.getPackageName())) {
                 if (ps.getPrimaryCpuAbi() != null) {
@@ -912,6 +916,7 @@
                 }
 
                 ps.setPrimaryCpuAbi(adjustedAbi);
+                ps.onChanged();
                 if (ps.getPkg() != null) {
                     if (!TextUtils.equals(adjustedAbi,
                             AndroidPackageUtils.getRawPrimaryCpuAbi(ps.getPkg()))) {
diff --git a/services/core/java/com/android/server/pm/Settings.java b/services/core/java/com/android/server/pm/Settings.java
index 5966917..c19e758 100644
--- a/services/core/java/com/android/server/pm/Settings.java
+++ b/services/core/java/com/android/server/pm/Settings.java
@@ -923,11 +923,30 @@
                 removeKeys.add(entry.getKey());
                 continue;
             }
+            boolean changed = false;
             // remove packages that are no longer installed
-            sus.packages.removeIf(ps -> mPackages.get(ps.getPackageName()) == null);
-            sus.mDisabledPackages.removeIf(
-                    ps -> mDisabledSysPackages.get(ps.getPackageName()) == null);
-            if (sus.packages.isEmpty() && sus.mDisabledPackages.isEmpty()) {
+            WatchedArraySet<PackageSetting> sharedUserPackageSettings = sus.getPackageSettings();
+            for (int i = sharedUserPackageSettings.size() - 1; i >= 0; i--) {
+                PackageSetting ps = sharedUserPackageSettings.valueAt(i);
+                if (mPackages.get(ps.getPackageName()) == null) {
+                    sharedUserPackageSettings.removeAt(i);
+                    changed = true;
+                }
+            }
+            WatchedArraySet<PackageSetting> sharedUserDisabledPackageSettings =
+                    sus.getDisabledPackageSettings();
+            for (int i = sharedUserDisabledPackageSettings.size() - 1; i >= 0; i--) {
+                PackageSetting ps = sharedUserDisabledPackageSettings.valueAt(i);
+                if (mDisabledSysPackages.get(ps.getPackageName()) == null) {
+                    sharedUserDisabledPackageSettings.removeAt(i);
+                    changed = true;
+                }
+            }
+            if (changed) {
+                sus.onChanged();
+            }
+            if (sharedUserPackageSettings.isEmpty()
+                    && sharedUserDisabledPackageSettings.isEmpty()) {
                 removeValues.add(sus);
             }
         }
@@ -1289,7 +1308,8 @@
     }
 
     boolean checkAndPruneSharedUserLPw(SharedUserSetting s, boolean skipCheck) {
-        if (skipCheck || (s.packages.isEmpty() && s.mDisabledPackages.isEmpty())) {
+        if (skipCheck || (s.getPackageStates().isEmpty()
+                && s.getDisabledPackageStates().isEmpty())) {
             if (mSharedUsers.remove(s.name) != null) {
                 removeAppIdLPw(s.mAppId);
                 return true;
@@ -5136,11 +5156,13 @@
                 pw.print(prefix); pw.print("userId="); pw.println(su.mAppId);
 
                 pw.print(prefix); pw.println("Packages");
-                final int numPackages = su.packages.size();
+                final ArraySet<PackageStateInternal> susPackageStates =
+                        (ArraySet<PackageStateInternal>) su.getPackageStates();
+                final int numPackages = susPackageStates.size();
                 for (int i = 0; i < numPackages; i++) {
-                    final PackageSetting ps = su.packages.valueAt(i);
+                    final PackageStateInternal ps = susPackageStates.valueAt(i);
                     if (ps != null) {
-                        pw.print(prefix + "  "); pw.println(ps.toString());
+                        pw.print(prefix + "  "); pw.println(ps);
                     } else {
                         pw.print(prefix + "  "); pw.println("NULL?!");
                     }
diff --git a/services/core/java/com/android/server/pm/SharedUserSetting.java b/services/core/java/com/android/server/pm/SharedUserSetting.java
index d0e1e6c..4d0bbc6 100644
--- a/services/core/java/com/android/server/pm/SharedUserSetting.java
+++ b/services/core/java/com/android/server/pm/SharedUserSetting.java
@@ -33,6 +33,7 @@
 import com.android.server.pm.pkg.component.ParsedProcess;
 import com.android.server.pm.pkg.component.ParsedProcessImpl;
 import com.android.server.utils.SnapshotCache;
+import com.android.server.utils.WatchedArraySet;
 
 import libcore.util.EmptyArray;
 
@@ -56,14 +57,14 @@
     /** @see SharedUserApi#getSeInfoTargetSdkVersion() **/
     int seInfoTargetSdkVersion;
 
-    final ArraySet<PackageSetting> packages;
-    private ArraySet<PackageStateInternal> mPackagesSnapshot;
+    private final WatchedArraySet<PackageSetting> mPackages;
+    private final SnapshotCache<WatchedArraySet<PackageSetting>> mPackagesSnapshot;
 
     // It is possible for a system app to leave shared user ID by an update.
     // We need to keep track of the shadowed PackageSettings so that it is possible to uninstall
     // the update and revert the system app back into the original shared user ID.
-    final ArraySet<PackageSetting> mDisabledPackages;
-    private ArraySet<PackageStateInternal> mDisabledPackagesSnapshot;
+    final WatchedArraySet<PackageSetting> mDisabledPackages;
+    private final SnapshotCache<WatchedArraySet<PackageSetting>> mDisabledPackagesSnapshot;
 
     final PackageSignatures signatures = new PackageSignatures();
     Boolean signaturesChanged;
@@ -89,8 +90,12 @@
         uidPrivateFlags = _pkgPrivateFlags;
         name = _name;
         seInfoTargetSdkVersion = android.os.Build.VERSION_CODES.CUR_DEVELOPMENT;
-        packages = new ArraySet<>();
-        mDisabledPackages = new ArraySet<>();
+        mPackages = new WatchedArraySet<>();
+        mPackagesSnapshot = new SnapshotCache.Auto<>(mPackages, mPackages,
+                "SharedUserSetting.packages");
+        mDisabledPackages = new WatchedArraySet<>();
+        mDisabledPackagesSnapshot = new SnapshotCache.Auto<>(mDisabledPackages, mDisabledPackages,
+                "SharedUserSetting.mDisabledPackages");
         processes = new ArrayMap<>();
         mSnapshot = makeCache();
     }
@@ -102,20 +107,10 @@
         mAppId = orig.mAppId;
         uidFlags = orig.uidFlags;
         uidPrivateFlags = orig.uidPrivateFlags;
-        packages = new ArraySet<>(orig.packages);
-        if (!packages.isEmpty()) {
-            mPackagesSnapshot = new ArraySet<>();
-            for (int index = 0; index < packages.size(); index++) {
-                mPackagesSnapshot.add(new PackageSetting(packages.valueAt(index)));
-            }
-        }
-        mDisabledPackages = new ArraySet<>(orig.mDisabledPackages);
-        if (!mDisabledPackages.isEmpty()) {
-            mDisabledPackagesSnapshot = new ArraySet<>();
-            for (int index = 0; index < mDisabledPackages.size(); index++) {
-                mDisabledPackagesSnapshot.add(new PackageSetting(mDisabledPackages.valueAt(index)));
-            }
-        }
+        mPackages = orig.mPackagesSnapshot.snapshot();
+        mPackagesSnapshot = new SnapshotCache.Sealed<>();
+        mDisabledPackages = orig.mDisabledPackagesSnapshot.snapshot();
+        mDisabledPackagesSnapshot = new SnapshotCache.Sealed<>();
         // A SigningDetails seems to consist solely of final attributes, so
         // it is safe to copy the reference.
         signatures.mSigningDetails = orig.signatures.mSigningDetails;
@@ -161,20 +156,22 @@
     }
 
     boolean removePackage(PackageSetting packageSetting) {
-        if (!packages.remove(packageSetting)) {
+        if (!mPackages.remove(packageSetting)) {
             return false;
         }
         // recalculate the pkgFlags for this shared user if needed
         if ((this.getFlags() & packageSetting.getFlags()) != 0) {
             int aggregatedFlags = uidFlags;
-            for (PackageSetting ps : packages) {
+            for (int i = 0; i < mPackages.size(); i++) {
+                PackageSetting ps = mPackages.valueAt(i);
                 aggregatedFlags |= ps.getFlags();
             }
             setFlags(aggregatedFlags);
         }
         if ((this.getPrivateFlags() & packageSetting.getPrivateFlags()) != 0) {
             int aggregatedPrivateFlags = uidPrivateFlags;
-            for (PackageSetting ps : packages) {
+            for (int i = 0; i < mPackages.size(); i++) {
+                PackageSetting ps = mPackages.valueAt(i);
                 aggregatedPrivateFlags |= ps.getPrivateFlags();
             }
             setPrivateFlags(aggregatedPrivateFlags);
@@ -188,10 +185,10 @@
     void addPackage(PackageSetting packageSetting) {
         // If this is the first package added to this shared user, temporarily (until next boot) use
         // its targetSdkVersion when assigning seInfo for the shared user.
-        if ((packages.size() == 0) && (packageSetting.getPkg() != null)) {
+        if ((mPackages.size() == 0) && (packageSetting.getPkg() != null)) {
             seInfoTargetSdkVersion = packageSetting.getPkg().getTargetSdkVersion();
         }
-        if (packages.add(packageSetting)) {
+        if (mPackages.add(packageSetting)) {
             setFlags(this.getFlags() | packageSetting.getFlags());
             setPrivateFlags(this.getPrivateFlags() | packageSetting.getPrivateFlags());
             onChanged();
@@ -204,11 +201,12 @@
     @NonNull
     @Override
     public List<AndroidPackage> getPackages() {
-        if (packages == null || packages.size() == 0) {
+        if (mPackages == null || mPackages.size() == 0) {
             return Collections.emptyList();
         }
-        final ArrayList<AndroidPackage> pkgList = new ArrayList<>(packages.size());
-        for (PackageSetting ps : packages) {
+        final ArrayList<AndroidPackage> pkgList = new ArrayList<>(mPackages.size());
+        for (int i = 0; i < mPackages.size(); i++) {
+            PackageSetting ps = mPackages.valueAt(i);
             if ((ps == null) || (ps.getPkg() == null)) {
                 continue;
             }
@@ -229,10 +227,11 @@
      * restrictive selinux domain.
      */
     public void fixSeInfoLocked() {
-        if (packages == null || packages.size() == 0) {
+        if (mPackages == null || mPackages.size() == 0) {
             return;
         }
-        for (PackageSetting ps : packages) {
+        for (int i = 0; i < mPackages.size(); i++) {
+            PackageSetting ps = mPackages.valueAt(i);
             if ((ps == null) || (ps.getPkg() == null)) {
                 continue;
             }
@@ -242,7 +241,8 @@
             }
         }
 
-        for (PackageSetting ps : packages) {
+        for (int i = 0; i < mPackages.size(); i++) {
+            PackageSetting ps = mPackages.valueAt(i);
             if ((ps == null) || (ps.getPkg() == null)) {
                 continue;
             }
@@ -258,8 +258,8 @@
      */
     public void updateProcesses() {
         processes.clear();
-        for (int i = packages.size() - 1; i >= 0; i--) {
-            final AndroidPackage pkg = packages.valueAt(i).getPkg();
+        for (int i = mPackages.size() - 1; i >= 0; i--) {
+            final AndroidPackage pkg = mPackages.valueAt(i).getPkg();
             if (pkg != null) {
                 addProcesses(pkg.getProcesses());
             }
@@ -269,7 +269,8 @@
     /** Returns userIds which doesn't have any packages with this sharedUserId */
     public int[] getNotInstalledUserIds() {
         int[] excludedUserIds = null;
-        for (PackageSetting ps : packages) {
+        for (int i = 0; i < mPackages.size(); i++) {
+            PackageSetting ps = mPackages.valueAt(i);
             final int[] userIds = ps.getNotInstalledUserIds();
             if (excludedUserIds == null) {
                 excludedUserIds = userIds;
@@ -291,8 +292,8 @@
         this.uidFlags = sharedUser.uidFlags;
         this.uidPrivateFlags = sharedUser.uidPrivateFlags;
         this.seInfoTargetSdkVersion = sharedUser.seInfoTargetSdkVersion;
-        this.packages.clear();
-        this.packages.addAll(sharedUser.packages);
+        this.mPackages.clear();
+        this.mPackages.addAll(sharedUser.mPackages);
         this.signaturesChanged = sharedUser.signaturesChanged;
         if (sharedUser.processes != null) {
             final int numProcs = sharedUser.processes.size();
@@ -335,22 +336,24 @@
         return seInfoTargetSdkVersion;
     }
 
+    public WatchedArraySet<PackageSetting> getPackageSettings() {
+        return mPackages;
+    }
+
+    public WatchedArraySet<PackageSetting> getDisabledPackageSettings() {
+        return mDisabledPackages;
+    }
+
     @NonNull
     @Override
     public ArraySet<? extends PackageStateInternal> getPackageStates() {
-        if (mPackagesSnapshot != null) {
-            return mPackagesSnapshot;
-        }
-        return packages;
+        return mPackages.untrackedStorage();
     }
 
     @NonNull
     @Override
     public ArraySet<? extends PackageStateInternal> getDisabledPackageStates() {
-        if (mDisabledPackagesSnapshot != null) {
-            return mDisabledPackagesSnapshot;
-        }
-        return mDisabledPackages;
+        return mDisabledPackages.untrackedStorage();
     }
 
     @NonNull
diff --git a/services/core/java/com/android/server/statusbar/StatusBarManagerService.java b/services/core/java/com/android/server/statusbar/StatusBarManagerService.java
index 2049f3d..66904b1 100644
--- a/services/core/java/com/android/server/statusbar/StatusBarManagerService.java
+++ b/services/core/java/com/android/server/statusbar/StatusBarManagerService.java
@@ -53,6 +53,7 @@
 import android.hardware.display.DisplayManager;
 import android.hardware.display.DisplayManager.DisplayListener;
 import android.hardware.fingerprint.IUdfpsHbmListener;
+import android.media.INearbyMediaDevicesProvider;
 import android.media.MediaRoute2Info;
 import android.net.Uri;
 import android.os.Binder;
@@ -1432,6 +1433,22 @@
         }
     }
 
+    /**
+     * Allows the status bar to restart android (vs a full reboot).
+     */
+    @Override
+    public void restart() {
+        enforceStatusBarService();
+        final long identity = Binder.clearCallingIdentity();
+        try {
+            mHandler.post(() -> {
+                mActivityManagerInternal.restart();
+            });
+        } finally {
+            Binder.restoreCallingIdentity(identity);
+        }
+    }
+
     @Override
     public void onGlobalActionsShown() {
         enforceStatusBarService();
@@ -2045,6 +2062,56 @@
         }
     }
 
+    /**
+     * Registers a provider that gives information about nearby devices that are able to play media.
+     * See {@link StatusBarmanager.registerNearbyMediaDevicesProvider}.
+     *
+     * Requires the caller to have the {@link android.Manifest.permission.MEDIA_CONTENT_CONTROL}
+     * permission.
+     *
+     * @param provider the nearby device information provider to register
+     *
+     * @hide
+     */
+    @Override
+    public void registerNearbyMediaDevicesProvider(
+            @NonNull INearbyMediaDevicesProvider provider
+    ) {
+        enforceMediaContentControl();
+        if (mBar != null) {
+            try {
+                mBar.registerNearbyMediaDevicesProvider(provider);
+            } catch (RemoteException e) {
+                Slog.e(TAG, "registerNearbyMediaDevicesProvider", e);
+            }
+        }
+    }
+
+    /**
+     * Unregisters a provider that gives information about nearby devices that are able to play
+     * media. See {@link StatusBarmanager.unregisterNearbyMediaDevicesProvider}.
+     *
+     * Requires the caller to have the {@link android.Manifest.permission.MEDIA_CONTENT_CONTROL}
+     * permission.
+     *
+     * @param provider the nearby device information provider to unregister
+     *
+     * @hide
+     */
+    @Override
+    public void unregisterNearbyMediaDevicesProvider(
+            @NonNull INearbyMediaDevicesProvider provider
+    ) {
+        enforceMediaContentControl();
+        if (mBar != null) {
+            try {
+                mBar.unregisterNearbyMediaDevicesProvider(provider);
+            } catch (RemoteException e) {
+                Slog.e(TAG, "unregisterNearbyMediaDevicesProvider", e);
+            }
+        }
+    }
+
     /** @hide */
     public void passThroughShellCommand(String[] args, FileDescriptor fd) {
         enforceStatusBarOrShell();
diff --git a/services/core/java/com/android/server/timedetector/TimeDetectorStrategyImpl.java b/services/core/java/com/android/server/timedetector/TimeDetectorStrategyImpl.java
index e751a7b..7466001 100644
--- a/services/core/java/com/android/server/timedetector/TimeDetectorStrategyImpl.java
+++ b/services/core/java/com/android/server/timedetector/TimeDetectorStrategyImpl.java
@@ -70,7 +70,7 @@
      * Telephony and network suggestions older than this value are considered too old to be used.
      */
     @VisibleForTesting
-    static final long MAX_UTC_TIME_AGE_MILLIS =
+    static final long MAX_SUGGESTION_TIME_AGE_MILLIS =
             TELEPHONY_BUCKET_COUNT * TELEPHONY_BUCKET_SIZE_MILLIS;
 
     /**
@@ -205,9 +205,9 @@
 
     @Override
     public synchronized void suggestExternalTime(@NonNull ExternalTimeSuggestion timeSuggestion) {
-        final TimestampedValue<Long> newUtcTime = timeSuggestion.getUtcTime();
+        final TimestampedValue<Long> newUnixEpochTime = timeSuggestion.getUnixEpochTime();
 
-        if (!validateAutoSuggestionTime(newUtcTime, timeSuggestion)) {
+        if (!validateAutoSuggestionTime(newUnixEpochTime, timeSuggestion)) {
             return;
         }
 
@@ -219,9 +219,9 @@
 
     @Override
     public synchronized void suggestGnssTime(@NonNull GnssTimeSuggestion timeSuggestion) {
-        final TimestampedValue<Long> newUtcTime = timeSuggestion.getUtcTime();
+        final TimestampedValue<Long> newUnixEpochTime = timeSuggestion.getUnixEpochTime();
 
-        if (!validateAutoSuggestionTime(newUtcTime, timeSuggestion)) {
+        if (!validateAutoSuggestionTime(newUnixEpochTime, timeSuggestion)) {
             return;
         }
 
@@ -233,19 +233,19 @@
 
     @Override
     public synchronized boolean suggestManualTime(@NonNull ManualTimeSuggestion suggestion) {
-        final TimestampedValue<Long> newUtcTime = suggestion.getUtcTime();
+        final TimestampedValue<Long> newUnixEpochTime = suggestion.getUnixEpochTime();
 
-        if (!validateSuggestionTime(newUtcTime, suggestion)) {
+        if (!validateSuggestionTime(newUnixEpochTime, suggestion)) {
             return false;
         }
 
         String cause = "Manual time suggestion received: suggestion=" + suggestion;
-        return setSystemClockIfRequired(ORIGIN_MANUAL, newUtcTime, cause);
+        return setSystemClockIfRequired(ORIGIN_MANUAL, newUnixEpochTime, cause);
     }
 
     @Override
     public synchronized void suggestNetworkTime(@NonNull NetworkTimeSuggestion timeSuggestion) {
-        if (!validateAutoSuggestionTime(timeSuggestion.getUtcTime(), timeSuggestion)) {
+        if (!validateAutoSuggestionTime(timeSuggestion.getUnixEpochTime(), timeSuggestion)) {
             return;
         }
 
@@ -275,11 +275,11 @@
         // unlike time zone, where a user may lose connectivity when boarding a flight and where we
         // do want to "forget" old signals. Suggestions that are too old are discarded later in the
         // detection algorithm.
-        if (timeSuggestion.getUtcTime() == null) {
+        if (timeSuggestion.getUnixEpochTime() == null) {
             return;
         }
 
-        if (!validateAutoSuggestionTime(timeSuggestion.getUtcTime(), timeSuggestion)) {
+        if (!validateAutoSuggestionTime(timeSuggestion.getUnixEpochTime(), timeSuggestion)) {
             return;
         }
 
@@ -370,14 +370,14 @@
     @GuardedBy("this")
     private boolean storeTelephonySuggestion(
             @NonNull TelephonyTimeSuggestion suggestion) {
-        TimestampedValue<Long> newUtcTime = suggestion.getUtcTime();
+        TimestampedValue<Long> newUnixEpochTime = suggestion.getUnixEpochTime();
 
         int slotIndex = suggestion.getSlotIndex();
         TelephonyTimeSuggestion previousSuggestion = mSuggestionBySlotIndex.get(slotIndex);
         if (previousSuggestion != null) {
             // We can log / discard suggestions with obvious issues with the reference time clock.
-            if (previousSuggestion.getUtcTime() == null
-                    || previousSuggestion.getUtcTime().getValue() == null) {
+            if (previousSuggestion.getUnixEpochTime() == null
+                    || previousSuggestion.getUnixEpochTime().getValue() == null) {
                 // This should be impossible given we only store validated suggestions.
                 Slog.w(LOG_TAG, "Previous suggestion is null or has a null time."
                         + " previousSuggestion=" + previousSuggestion
@@ -386,7 +386,7 @@
             }
 
             long referenceTimeDifference = TimestampedValue.referenceTimeDifference(
-                    newUtcTime, previousSuggestion.getUtcTime());
+                    newUnixEpochTime, previousSuggestion.getUnixEpochTime());
             if (referenceTimeDifference < 0) {
                 // The reference time is before the previously received suggestion. Ignore it.
                 Slog.w(LOG_TAG, "Out of order telephony suggestion received."
@@ -403,15 +403,15 @@
     }
 
     private boolean validateSuggestionTime(
-            @NonNull TimestampedValue<Long> newUtcTime, @NonNull Object suggestion) {
-        if (newUtcTime.getValue() == null) {
+            @NonNull TimestampedValue<Long> newUnixEpochTime, @NonNull Object suggestion) {
+        if (newUnixEpochTime.getValue() == null) {
             Slog.w(LOG_TAG, "Suggested time value is null. suggestion=" + suggestion);
             return false;
         }
 
         // We can validate the suggestion against the reference time clock.
         long elapsedRealtimeMillis = mEnvironment.elapsedRealtimeMillis();
-        if (elapsedRealtimeMillis < newUtcTime.getReferenceTimeMillis()) {
+        if (elapsedRealtimeMillis < newUnixEpochTime.getReferenceTimeMillis()) {
             // elapsedRealtime clock went backwards?
             Slog.w(LOG_TAG, "New reference time is in the future? Ignoring."
                     + " elapsedRealtimeMillis=" + elapsedRealtimeMillis
@@ -422,17 +422,17 @@
     }
 
     private boolean validateAutoSuggestionTime(
-            @NonNull TimestampedValue<Long> newUtcTime, @NonNull Object suggestion)  {
-        return validateSuggestionTime(newUtcTime, suggestion)
-                && validateSuggestionAgainstLowerBound(newUtcTime, suggestion);
+            @NonNull TimestampedValue<Long> newUnixEpochTime, @NonNull Object suggestion)  {
+        return validateSuggestionTime(newUnixEpochTime, suggestion)
+                && validateSuggestionAgainstLowerBound(newUnixEpochTime, suggestion);
     }
 
     private boolean validateSuggestionAgainstLowerBound(
-            @NonNull TimestampedValue<Long> newUtcTime, @NonNull Object suggestion) {
+            @NonNull TimestampedValue<Long> newUnixEpochTime, @NonNull Object suggestion) {
         Instant lowerBound = mEnvironment.autoTimeLowerBound();
 
         // Suggestion is definitely wrong if it comes before lower time bound.
-        if (lowerBound.isAfter(Instant.ofEpochMilli(newUtcTime.getValue()))) {
+        if (lowerBound.isAfter(Instant.ofEpochMilli(newUnixEpochTime.getValue()))) {
             Slog.w(LOG_TAG, "Suggestion points to time before lower bound, skipping it. "
                     + "suggestion=" + suggestion + ", lower bound=" + lowerBound);
             return false;
@@ -451,12 +451,12 @@
         // Try the different origins one at a time.
         int[] originPriorities = mEnvironment.autoOriginPriorities();
         for (int origin : originPriorities) {
-            TimestampedValue<Long> newUtcTime = null;
+            TimestampedValue<Long> newUnixEpochTime = null;
             String cause = null;
             if (origin == ORIGIN_TELEPHONY) {
                 TelephonyTimeSuggestion bestTelephonySuggestion = findBestTelephonySuggestion();
                 if (bestTelephonySuggestion != null) {
-                    newUtcTime = bestTelephonySuggestion.getUtcTime();
+                    newUnixEpochTime = bestTelephonySuggestion.getUnixEpochTime();
                     cause = "Found good telephony suggestion."
                             + ", bestTelephonySuggestion=" + bestTelephonySuggestion
                             + ", detectionReason=" + detectionReason;
@@ -464,7 +464,7 @@
             } else if (origin == ORIGIN_NETWORK) {
                 NetworkTimeSuggestion networkSuggestion = findLatestValidNetworkSuggestion();
                 if (networkSuggestion != null) {
-                    newUtcTime = networkSuggestion.getUtcTime();
+                    newUnixEpochTime = networkSuggestion.getUnixEpochTime();
                     cause = "Found good network suggestion."
                             + ", networkSuggestion=" + networkSuggestion
                             + ", detectionReason=" + detectionReason;
@@ -472,7 +472,7 @@
             } else if (origin == ORIGIN_GNSS) {
                 GnssTimeSuggestion gnssTimeSuggestion = findLatestValidGnssSuggestion();
                 if (gnssTimeSuggestion != null) {
-                    newUtcTime = gnssTimeSuggestion.getUtcTime();
+                    newUnixEpochTime = gnssTimeSuggestion.getUnixEpochTime();
                     cause = "Found good gnss suggestion."
                             + ", gnssTimeSuggestion=" + gnssTimeSuggestion
                             + ", detectionReason=" + detectionReason;
@@ -480,7 +480,7 @@
             } else if (origin == ORIGIN_EXTERNAL) {
                 ExternalTimeSuggestion externalTimeSuggestion = findLatestValidExternalSuggestion();
                 if (externalTimeSuggestion != null) {
-                    newUtcTime = externalTimeSuggestion.getUtcTime();
+                    newUnixEpochTime = externalTimeSuggestion.getUnixEpochTime();
                     cause = "Found good external suggestion."
                             + ", externalTimeSuggestion=" + externalTimeSuggestion
                             + ", detectionReason=" + detectionReason;
@@ -492,8 +492,8 @@
             }
 
             // Update the system clock if a good suggestion has been found.
-            if (newUtcTime != null) {
-                setSystemClockIfRequired(origin, newUtcTime, cause);
+            if (newUnixEpochTime != null) {
+                setSystemClockIfRequired(origin, newUnixEpochTime, cause);
                 return;
             }
         }
@@ -550,7 +550,7 @@
                 Slog.w(LOG_TAG, "Latest suggestion unexpectedly null for slotIndex."
                         + " slotIndex=" + slotIndex);
                 continue;
-            } else if (candidateSuggestion.getUtcTime() == null) {
+            } else if (candidateSuggestion.getUnixEpochTime() == null) {
                 // Unexpected - we do not store empty suggestions.
                 Slog.w(LOG_TAG, "Latest suggestion unexpectedly empty. "
                         + " candidateSuggestion=" + candidateSuggestion);
@@ -584,8 +584,8 @@
             long elapsedRealtimeMillis, @NonNull TelephonyTimeSuggestion timeSuggestion) {
 
         // Validate first.
-        TimestampedValue<Long> utcTime = timeSuggestion.getUtcTime();
-        if (!validateSuggestionUtcTime(elapsedRealtimeMillis, utcTime)) {
+        TimestampedValue<Long> unixEpochTime = timeSuggestion.getUnixEpochTime();
+        if (!validateSuggestionUnixEpochTime(elapsedRealtimeMillis, unixEpochTime)) {
             Slog.w(LOG_TAG, "Existing suggestion found to be invalid"
                     + " elapsedRealtimeMillis=" + elapsedRealtimeMillis
                     + ", timeSuggestion=" + timeSuggestion);
@@ -594,7 +594,7 @@
 
         // The score is based on the age since receipt. Suggestions are bucketed so two
         // suggestions in the same bucket from different slotIndexs are scored the same.
-        long ageMillis = elapsedRealtimeMillis - utcTime.getReferenceTimeMillis();
+        long ageMillis = elapsedRealtimeMillis - unixEpochTime.getReferenceTimeMillis();
 
         // Turn the age into a discrete value: 0 <= bucketIndex < TELEPHONY_BUCKET_COUNT.
         int bucketIndex = (int) (ageMillis / TELEPHONY_BUCKET_SIZE_MILLIS);
@@ -616,9 +616,9 @@
             return null;
         }
 
-        TimestampedValue<Long> utcTime = networkSuggestion.getUtcTime();
+        TimestampedValue<Long> unixEpochTime = networkSuggestion.getUnixEpochTime();
         long elapsedRealTimeMillis = mEnvironment.elapsedRealtimeMillis();
-        if (!validateSuggestionUtcTime(elapsedRealTimeMillis, utcTime)) {
+        if (!validateSuggestionUnixEpochTime(elapsedRealTimeMillis, unixEpochTime)) {
             // The latest suggestion is not valid, usually due to its age.
             return null;
         }
@@ -636,9 +636,9 @@
             return null;
         }
 
-        TimestampedValue<Long> utcTime = gnssTimeSuggestion.getUtcTime();
+        TimestampedValue<Long> unixEpochTime = gnssTimeSuggestion.getUnixEpochTime();
         long elapsedRealTimeMillis = mEnvironment.elapsedRealtimeMillis();
-        if (!validateSuggestionUtcTime(elapsedRealTimeMillis, utcTime)) {
+        if (!validateSuggestionUnixEpochTime(elapsedRealTimeMillis, unixEpochTime)) {
             // The latest suggestion is not valid, usually due to its age.
             return null;
         }
@@ -656,9 +656,9 @@
             return null;
         }
 
-        TimestampedValue<Long> utcTime = externalTimeSuggestion.getUtcTime();
+        TimestampedValue<Long> unixEpochTime = externalTimeSuggestion.getUnixEpochTime();
         long elapsedRealTimeMillis = mEnvironment.elapsedRealtimeMillis();
-        if (!validateSuggestionUtcTime(elapsedRealTimeMillis, utcTime)) {
+        if (!validateSuggestionUnixEpochTime(elapsedRealTimeMillis, unixEpochTime)) {
             // The latest suggestion is not valid, usually due to its age.
             return null;
         }
@@ -849,9 +849,9 @@
         return mLastExternalSuggestion.get();
     }
 
-    private static boolean validateSuggestionUtcTime(
-            long elapsedRealtimeMillis, TimestampedValue<Long> utcTime) {
-        long referenceTimeMillis = utcTime.getReferenceTimeMillis();
+    private static boolean validateSuggestionUnixEpochTime(
+            long elapsedRealtimeMillis, TimestampedValue<Long> unixEpochTime) {
+        long referenceTimeMillis = unixEpochTime.getReferenceTimeMillis();
         if (referenceTimeMillis > elapsedRealtimeMillis) {
             // Future reference times are ignored. They imply the reference time was wrong, or the
             // elapsed realtime clock used to derive it has gone backwards, neither of which are
@@ -865,6 +865,6 @@
         // made and never replaced, it could also mean that the time detection code remains
         // opinionated using a bad invalid suggestion. This caps that edge case at MAX_AGE_MILLIS.
         long ageMillis = elapsedRealtimeMillis - referenceTimeMillis;
-        return ageMillis <= MAX_UTC_TIME_AGE_MILLIS;
+        return ageMillis <= MAX_SUGGESTION_TIME_AGE_MILLIS;
     }
 }
diff --git a/services/core/java/com/android/server/wm/ActivityClientController.java b/services/core/java/com/android/server/wm/ActivityClientController.java
index d526845..76e1c43 100644
--- a/services/core/java/com/android/server/wm/ActivityClientController.java
+++ b/services/core/java/com/android/server/wm/ActivityClientController.java
@@ -746,8 +746,8 @@
                     // if it is not already expanding to fullscreen. Otherwise, the arguments will
                     // be used the next time the activity enters PiP.
                     final Task rootTask = r.getRootTask();
-                    rootTask.setPictureInPictureAspectRatio(
-                            r.pictureInPictureArgs.getAspectRatio());
+                    rootTask.setPictureInPictureAspectRatio(r.pictureInPictureArgs.getAspectRatio(),
+                            r.pictureInPictureArgs.getExpandedAspectRatio());
                     rootTask.setPictureInPictureActions(r.pictureInPictureArgs.getActions());
                 }
             }
@@ -808,18 +808,28 @@
                     + ": Current activity does not support picture-in-picture.");
         }
 
+        final float minAspectRatio = mContext.getResources().getFloat(
+                com.android.internal.R.dimen.config_pictureInPictureMinAspectRatio);
+        final float maxAspectRatio = mContext.getResources().getFloat(
+                com.android.internal.R.dimen.config_pictureInPictureMaxAspectRatio);
+
         if (params.hasSetAspectRatio()
                 && !mService.mWindowManager.isValidPictureInPictureAspectRatio(
                 r.mDisplayContent, params.getAspectRatio())) {
-            final float minAspectRatio = mContext.getResources().getFloat(
-                    com.android.internal.R.dimen.config_pictureInPictureMinAspectRatio);
-            final float maxAspectRatio = mContext.getResources().getFloat(
-                    com.android.internal.R.dimen.config_pictureInPictureMaxAspectRatio);
             throw new IllegalArgumentException(String.format(caller
                             + ": Aspect ratio is too extreme (must be between %f and %f).",
                     minAspectRatio, maxAspectRatio));
         }
 
+        if (mService.mSupportsExpandedPictureInPicture && params.hasSetExpandedAspectRatio()
+                && !mService.mWindowManager.isValidExpandedPictureInPictureAspectRatio(
+                r.mDisplayContent, params.getExpandedAspectRatio())) {
+            throw new IllegalArgumentException(String.format(caller
+                            + ": Expanded aspect ratio is not extreme enough (must not be between"
+                            + " %f and %f).",
+                    minAspectRatio, maxAspectRatio));
+        }
+
         // Truncate the number of actions if necessary.
         params.truncateActions(ActivityTaskManager.getMaxNumPictureInPictureActions(mContext));
         return r;
diff --git a/services/core/java/com/android/server/wm/ActivityRecord.java b/services/core/java/com/android/server/wm/ActivityRecord.java
index 8fc3a87..dc53cc6 100644
--- a/services/core/java/com/android/server/wm/ActivityRecord.java
+++ b/services/core/java/com/android/server/wm/ActivityRecord.java
@@ -4536,7 +4536,7 @@
                         pendingOptions.getStartX(), pendingOptions.getStartY(),
                         pendingOptions.getAnimationStartedListener(),
                         scaleUp);
-                options = AnimationOptions.makeThumnbnailAnimOptions(buffer,
+                options = AnimationOptions.makeThumbnailAnimOptions(buffer,
                         pendingOptions.getStartX(), pendingOptions.getStartY(), scaleUp);
                 startCallback = pendingOptions.getAnimationStartedListener();
                 if (intent.getSourceBounds() == null && buffer != null) {
diff --git a/services/core/java/com/android/server/wm/ActivityTaskManagerService.java b/services/core/java/com/android/server/wm/ActivityTaskManagerService.java
index 193e476..8d99f07 100644
--- a/services/core/java/com/android/server/wm/ActivityTaskManagerService.java
+++ b/services/core/java/com/android/server/wm/ActivityTaskManagerService.java
@@ -44,6 +44,7 @@
 import static android.content.pm.ConfigurationInfo.GL_ES_VERSION_UNDEFINED;
 import static android.content.pm.PackageManager.FEATURE_ACTIVITIES_ON_SECONDARY_DISPLAYS;
 import static android.content.pm.PackageManager.FEATURE_CANT_SAVE_STATE;
+import static android.content.pm.PackageManager.FEATURE_EXPANDED_PICTURE_IN_PICTURE;
 import static android.content.pm.PackageManager.FEATURE_FREEFORM_WINDOW_MANAGEMENT;
 import static android.content.pm.PackageManager.FEATURE_LEANBACK;
 import static android.content.pm.PackageManager.FEATURE_PICTURE_IN_PICTURE;
@@ -591,6 +592,7 @@
     boolean mSupportsSplitScreenMultiWindow;
     boolean mSupportsFreeformWindowManagement;
     boolean mSupportsPictureInPicture;
+    boolean mSupportsExpandedPictureInPicture;
     boolean mSupportsMultiDisplay;
     boolean mForceResizableActivities;
 
@@ -884,6 +886,9 @@
         final boolean supportsMultiWindow = ActivityTaskManager.supportsMultiWindow(mContext);
         final boolean supportsPictureInPicture = supportsMultiWindow &&
                 mContext.getPackageManager().hasSystemFeature(FEATURE_PICTURE_IN_PICTURE);
+        final boolean supportsExpandedPictureInPicture =
+                supportsPictureInPicture && mContext.getPackageManager().hasSystemFeature(
+                        FEATURE_EXPANDED_PICTURE_IN_PICTURE);
         final boolean supportsSplitScreenMultiWindow =
                 ActivityTaskManager.supportsSplitScreenMultiWindow(mContext);
         final boolean supportsMultiDisplay = mContext.getPackageManager()
@@ -931,12 +936,14 @@
                 mSupportsFreeformWindowManagement = freeformWindowManagement;
                 mSupportsSplitScreenMultiWindow = supportsSplitScreenMultiWindow;
                 mSupportsPictureInPicture = supportsPictureInPicture;
+                mSupportsExpandedPictureInPicture = supportsExpandedPictureInPicture;
                 mSupportsMultiDisplay = supportsMultiDisplay;
             } else {
                 mSupportsMultiWindow = false;
                 mSupportsFreeformWindowManagement = false;
                 mSupportsSplitScreenMultiWindow = false;
                 mSupportsPictureInPicture = false;
+                mSupportsExpandedPictureInPicture = false;
                 mSupportsMultiDisplay = false;
             }
             mWindowManager.mRoot.onSettingsRetrieved();
@@ -3529,11 +3536,12 @@
                 // Only update the saved args from the args that are set
                 r.setPictureInPictureParams(params);
                 final float aspectRatio = r.pictureInPictureArgs.getAspectRatio();
+                final float expandedAspectRatio = r.pictureInPictureArgs.getExpandedAspectRatio();
                 final List<RemoteAction> actions = r.pictureInPictureArgs.getActions();
                 mRootWindowContainer.moveActivityToPinnedRootTask(
                         r, "enterPictureInPictureMode");
                 final Task task = r.getTask();
-                task.setPictureInPictureAspectRatio(aspectRatio);
+                task.setPictureInPictureAspectRatio(aspectRatio, expandedAspectRatio);
                 task.setPictureInPictureActions(actions);
 
                 // Continue the pausing process after entering pip.
diff --git a/services/core/java/com/android/server/wm/AppTransitionController.java b/services/core/java/com/android/server/wm/AppTransitionController.java
index 475a9fb..457ea13 100644
--- a/services/core/java/com/android/server/wm/AppTransitionController.java
+++ b/services/core/java/com/android/server/wm/AppTransitionController.java
@@ -249,7 +249,7 @@
             overrideWithRemoteAnimationIfSet(animLpActivity, transit, activityTypes);
         }
 
-        final boolean voiceInteraction = containsVoiceInteraction(mDisplayContent.mOpeningApps)
+        final boolean voiceInteraction = containsVoiceInteraction(mDisplayContent.mClosingApps)
                 || containsVoiceInteraction(mDisplayContent.mOpeningApps);
 
         final int layoutRedo;
diff --git a/services/core/java/com/android/server/wm/BackNavigationController.java b/services/core/java/com/android/server/wm/BackNavigationController.java
index 45a6cb9..e26748c 100644
--- a/services/core/java/com/android/server/wm/BackNavigationController.java
+++ b/services/core/java/com/android/server/wm/BackNavigationController.java
@@ -22,11 +22,14 @@
 import android.annotation.Nullable;
 import android.app.WindowConfiguration;
 import android.content.ComponentName;
+import android.graphics.Point;
+import android.graphics.Rect;
 import android.hardware.HardwareBuffer;
 import android.os.RemoteCallback;
 import android.os.RemoteException;
 import android.os.SystemProperties;
 import android.util.Slog;
+import android.view.RemoteAnimationTarget;
 import android.view.SurfaceControl;
 import android.window.BackNavigationInfo;
 import android.window.IOnBackInvokedCallback;
@@ -88,34 +91,39 @@
         ActivityRecord activityRecord;
         SurfaceControl animationLeashParent;
         WindowConfiguration taskWindowConfiguration;
-        SurfaceControl animLeash;
         HardwareBuffer screenshotBuffer = null;
         int prevTaskId;
         int prevUserId;
-        IOnBackInvokedCallback callback;
+        IOnBackInvokedCallback applicationCallback = null;
+        IOnBackInvokedCallback systemCallback = null;
+        RemoteAnimationTarget topAppTarget;
+        SurfaceControl animLeash;
 
         synchronized (task.mWmService.mGlobalLock) {
             activityRecord = task.topRunningActivity();
             removedWindowContainer = activityRecord;
             taskWindowConfiguration = task.getTaskInfo().configuration.windowConfiguration;
-
-            WindowState topChild = activityRecord.getTopChild();
-            callback = topChild.getOnBackInvokedCallback();
+            WindowState window = task.getWindow(WindowState::isFocused);
+            if (window != null) {
+                applicationCallback = window.getApplicationOnBackInvokedCallback();
+                systemCallback = window.getSystemOnBackInvokedCallback();
+            }
 
             ProtoLog.d(WM_DEBUG_BACK_PREVIEW, "startBackNavigation task=%s, "
-                            + "topRunningActivity=%s, topWindow=%s backCallback=%s",
-                    task, activityRecord, topChild,
-                    callback != null ? callback.getClass().getSimpleName() : null);
+                            + "topRunningActivity=%s, applicationBackCallback=%s, "
+                            + "systemBackCallback=%s",
+                    task, activityRecord, applicationCallback, systemCallback);
 
             // For IME and Home, either a callback is registered, or we do nothing. In both cases,
             // we don't need to pass the leashes below.
             if (task.getDisplayContent().getImeContainer().isVisible()
                     || activityRecord.isActivityTypeHome()) {
-                if (callback != null) {
+                if (applicationCallback != null) {
                     return new BackNavigationInfo(BackNavigationInfo.TYPE_CALLBACK,
                             null /* topWindowLeash */, null /* screenshotSurface */,
                             null /* screenshotBuffer */, null /* taskWindowConfiguration */,
-                            null /* onBackNavigationDone */, callback /* onBackInvokedCallback */);
+                            null /* onBackNavigationDone */,
+                            applicationCallback /* onBackInvokedCallback */);
                 } else {
                     return null;
                 }
@@ -124,8 +132,12 @@
             prev = task.getActivity(
                     (r) -> !r.finishing && r.getTask() == task && !r.isTopRunningActivity());
 
-            if (callback != null) {
-                backType = BackNavigationInfo.TYPE_CALLBACK;
+            if (applicationCallback != null) {
+                return new BackNavigationInfo(BackNavigationInfo.TYPE_CALLBACK,
+                        null /* topWindowLeash */, null /* screenshotSurface */,
+                        null /* screenshotBuffer */, null /* taskWindowConfiguration */,
+                        null /* onBackNavigationDone */,
+                        applicationCallback /* onBackInvokedCallback */);
             } else if (prev != null) {
                 backType = BackNavigationInfo.TYPE_CROSS_ACTIVITY;
             } else if (task.returnsToHomeRootTask()) {
@@ -159,6 +171,11 @@
                 screenshotBuffer = getActivitySnapshot(task, prev.mActivityComponent);
             }
 
+            // Only create a new leash if no leash has been created.
+            // Otherwise return null for animation target to avoid conflict.
+            if (removedWindowContainer.hasCommittedReparentToAnimationLeash()) {
+                return null;
+            }
             // Prepare a leash to animate the current top window
             animLeash = removedWindowContainer.makeAnimationLeash()
                     .setName("BackPreview Leash for " + removedWindowContainer)
@@ -166,8 +183,25 @@
                     .setBLASTLayer()
                     .build();
             removedWindowContainer.reparentSurfaceControl(tx, animLeash);
-
             animationLeashParent = removedWindowContainer.getAnimationLeashParent();
+            topAppTarget = new RemoteAnimationTarget(
+                    task.mTaskId,
+                    RemoteAnimationTarget.MODE_CLOSING,
+                    animLeash,
+                    false /* isTransluscent */,
+                    new Rect() /* clipRect */,
+                    new Rect() /* contentInsets */,
+                    activityRecord.getPrefixOrderIndex(),
+                    new Point(0, 0) /* position */,
+                    new Rect() /* localBounds */,
+                    new Rect() /* screenSpaceBounds */,
+                    removedWindowContainer.getWindowConfiguration(),
+                    true /* isNotInRecent */,
+                    null,
+                    null,
+                    task.getTaskInfo(),
+                    false,
+                    activityRecord.windowType);
         }
 
         SurfaceControl.Builder builder = new SurfaceControl.Builder()
@@ -187,7 +221,7 @@
 
         // The Animation leash needs to be above the screenshot surface, but the animation leash
         // needs to be added before to be in the synchronized block.
-        tx.setLayer(animLeash, 1);
+        tx.setLayer(topAppTarget.leash, 1);
         tx.apply();
 
         WindowContainer<?> finalRemovedWindowContainer = removedWindowContainer;
@@ -200,11 +234,13 @@
             return null;
         }
 
+        final IOnBackInvokedCallback callback =
+                applicationCallback != null ? applicationCallback : systemCallback;
         RemoteCallback onBackNavigationDone = new RemoteCallback(
                 result -> resetSurfaces(finalRemovedWindowContainer
                 ));
         return new BackNavigationInfo(backType,
-                animLeash,
+                topAppTarget,
                 screenshotSurface,
                 screenshotBuffer,
                 taskWindowConfiguration,
diff --git a/services/core/java/com/android/server/wm/PinnedTaskController.java b/services/core/java/com/android/server/wm/PinnedTaskController.java
index 1da0fe7..06e3a73 100644
--- a/services/core/java/com/android/server/wm/PinnedTaskController.java
+++ b/services/core/java/com/android/server/wm/PinnedTaskController.java
@@ -93,6 +93,7 @@
     // The set of actions and aspect-ratio for the that are currently allowed on the PiP activity
     private ArrayList<RemoteAction> mActions = new ArrayList<>();
     private float mAspectRatio = -1f;
+    private float mExpandedAspectRatio = 0f;
 
     // The aspect ratio bounds of the PIP.
     private float mMinAspectRatio;
@@ -160,7 +161,7 @@
     }
 
     /**
-     * @return whether the given {@param aspectRatio} is valid.
+     * @return whether the given {@param aspectRatio} is valid, i.e. min <= ratio <= max.
      */
     public boolean isValidPictureInPictureAspectRatio(float aspectRatio) {
         return Float.compare(mMinAspectRatio, aspectRatio) <= 0
@@ -168,6 +169,14 @@
     }
 
     /**
+     * @return whether the given {@param aspectRatio} is valid, i.e. ratio < min or ratio > max.
+     */
+    public boolean isValidExpandedPictureInPictureAspectRatio(float aspectRatio) {
+        return Float.compare(mMinAspectRatio, aspectRatio) > 0
+                || Float.compare(aspectRatio, mMaxAspectRatio) > 0;
+    }
+
+    /**
      * Called when a fullscreen task is entering PiP with display orientation change. This is used
      * to avoid flickering when running PiP animation across different orientations.
      */
@@ -378,6 +387,25 @@
     }
 
     /**
+     * Sets the current aspect ratio.
+     */
+    void setExpandedAspectRatio(float aspectRatio) {
+        if (Float.compare(mExpandedAspectRatio, aspectRatio) != 0) {
+            mExpandedAspectRatio = aspectRatio;
+            notifyExpandedAspectRatioChanged(aspectRatio);
+            notifyMovementBoundsChanged(false /* fromImeAdjustment */);
+        }
+    }
+
+    /**
+     * @return the current aspect ratio.
+     */
+    float getExpandedAspectRatio() {
+        return mExpandedAspectRatio;
+    }
+
+
+    /**
      * Sets the current set of actions.
      */
     void setActions(List<RemoteAction> actions) {
@@ -410,6 +438,15 @@
         }
     }
 
+    private void notifyExpandedAspectRatioChanged(float aspectRatio) {
+        if (mPinnedTaskListener == null) return;
+        try {
+            mPinnedTaskListener.onExpandedAspectRatioChanged(aspectRatio);
+        } catch (RemoteException e) {
+            Slog.e(TAG_WM, "Error delivering aspect ratio changed event.", e);
+        }
+    }
+
     /**
      * Notifies listeners that the PIP actions have changed.
      */
diff --git a/services/core/java/com/android/server/wm/Session.java b/services/core/java/com/android/server/wm/Session.java
index de8ea8c..cd8ddf4 100644
--- a/services/core/java/com/android/server/wm/Session.java
+++ b/services/core/java/com/android/server/wm/Session.java
@@ -69,6 +69,7 @@
 import android.view.InsetsSourceControl;
 import android.view.InsetsState;
 import android.view.InsetsVisibilities;
+import android.view.OnBackInvokedDispatcher;
 import android.view.SurfaceControl;
 import android.view.SurfaceSession;
 import android.view.View;
@@ -905,15 +906,17 @@
     }
 
     @Override
-    public void setOnBackInvokedCallback(IWindow window,
-            IOnBackInvokedCallback onBackInvokedCallback) throws RemoteException {
+    public void setOnBackInvokedCallback(
+            IWindow window,
+            IOnBackInvokedCallback onBackInvokedCallback,
+            @OnBackInvokedDispatcher.Priority int priority) throws RemoteException {
         synchronized (mService.mGlobalLock) {
             WindowState windowState = mService.windowForClientLocked(this, window, false);
             if (windowState == null) {
                 Slog.e(TAG_WM,
                         "setOnBackInvokedCallback(): Can't find window state for window:" + window);
             } else {
-                windowState.setOnBackInvokedCallback(onBackInvokedCallback);
+                windowState.setOnBackInvokedCallback(onBackInvokedCallback, priority);
             }
         }
     }
diff --git a/services/core/java/com/android/server/wm/Task.java b/services/core/java/com/android/server/wm/Task.java
index 6df54cd..f7c5b26 100644
--- a/services/core/java/com/android/server/wm/Task.java
+++ b/services/core/java/com/android/server/wm/Task.java
@@ -6013,9 +6013,9 @@
     }
 
     /**
-     * Sets the current picture-in-picture aspect ratio.
+     * Sets the current picture-in-picture aspect ratios.
      */
-    void setPictureInPictureAspectRatio(float aspectRatio) {
+    void setPictureInPictureAspectRatio(float aspectRatio, float expandedAspectRatio) {
         if (!mWmService.mAtmService.mSupportsPictureInPicture) {
             return;
         }
@@ -6032,16 +6032,21 @@
         final PinnedTaskController pinnedTaskController =
                 getDisplayContent().getPinnedTaskController();
 
-        if (Float.compare(aspectRatio, pinnedTaskController.getAspectRatio()) == 0) {
-            return;
-        }
-
         // Notify the pinned stack controller about aspect ratio change.
         // This would result a callback delivered from SystemUI to WM to start animation,
         // if the bounds are ought to be altered due to aspect ratio change.
-        pinnedTaskController.setAspectRatio(
-                pinnedTaskController.isValidPictureInPictureAspectRatio(aspectRatio)
-                        ? aspectRatio : -1f);
+        if (Float.compare(aspectRatio, pinnedTaskController.getAspectRatio()) != 0) {
+            pinnedTaskController.setAspectRatio(
+                    pinnedTaskController.isValidPictureInPictureAspectRatio(aspectRatio)
+                            ? aspectRatio : -1f);
+        }
+
+        if (mWmService.mAtmService.mSupportsExpandedPictureInPicture && Float.compare(
+                expandedAspectRatio, pinnedTaskController.getExpandedAspectRatio()) != 0) {
+            pinnedTaskController.setExpandedAspectRatio(pinnedTaskController
+                    .isValidExpandedPictureInPictureAspectRatio(expandedAspectRatio)
+                    ? expandedAspectRatio : 0f);
+        }
     }
 
     /**
diff --git a/services/core/java/com/android/server/wm/WindowManagerService.java b/services/core/java/com/android/server/wm/WindowManagerService.java
index 1a14727..af12c0b 100644
--- a/services/core/java/com/android/server/wm/WindowManagerService.java
+++ b/services/core/java/com/android/server/wm/WindowManagerService.java
@@ -2999,6 +2999,12 @@
                 aspectRatio);
     }
 
+    boolean isValidExpandedPictureInPictureAspectRatio(DisplayContent displayContent,
+            float aspectRatio) {
+        return displayContent.getPinnedTaskController().isValidExpandedPictureInPictureAspectRatio(
+                aspectRatio);
+    }
+
     @Override
     public void notifyKeyguardTrustedChanged() {
         synchronized (mGlobalLock) {
diff --git a/services/core/java/com/android/server/wm/WindowState.java b/services/core/java/com/android/server/wm/WindowState.java
index 83bcad3..e84a747 100644
--- a/services/core/java/com/android/server/wm/WindowState.java
+++ b/services/core/java/com/android/server/wm/WindowState.java
@@ -850,7 +850,8 @@
     /**
      * @see #setOnBackInvokedCallback(IOnBackInvokedCallback)
      */
-    private IOnBackInvokedCallback mOnBackInvokedCallback;
+    private IOnBackInvokedCallback mApplicationOnBackInvokedCallback;
+    private IOnBackInvokedCallback mSystemOnBackInvokedCallback;
 
     @Override
     WindowState asWindowState() {
@@ -1073,15 +1074,25 @@
      * called when a back navigation action is initiated.
      * @see BackNavigationController
      */
-    void setOnBackInvokedCallback(@Nullable IOnBackInvokedCallback onBackInvokedCallback) {
+    void setOnBackInvokedCallback(
+            @Nullable IOnBackInvokedCallback onBackInvokedCallback, int priority) {
         ProtoLog.d(WM_DEBUG_BACK_PREVIEW, "%s: Setting back callback %s",
                 this, onBackInvokedCallback);
-        mOnBackInvokedCallback = onBackInvokedCallback;
+        if (priority >= 0) {
+            mApplicationOnBackInvokedCallback = onBackInvokedCallback;
+        } else {
+            mSystemOnBackInvokedCallback = onBackInvokedCallback;
+        }
     }
 
     @Nullable
-    IOnBackInvokedCallback getOnBackInvokedCallback() {
-        return mOnBackInvokedCallback;
+    IOnBackInvokedCallback getApplicationOnBackInvokedCallback() {
+        return mApplicationOnBackInvokedCallback;
+    }
+
+    @Nullable
+    IOnBackInvokedCallback getSystemOnBackInvokedCallback() {
+        return mSystemOnBackInvokedCallback;
     }
 
     interface PowerManagerWrapper {
@@ -2385,7 +2396,8 @@
         dc.getDisplayPolicy().removeWindowLw(this);
 
         disposeInputChannel();
-        mOnBackInvokedCallback = null;
+        mSystemOnBackInvokedCallback = null;
+        mApplicationOnBackInvokedCallback = null;
 
         mSession.windowRemovedLocked();
         try {
@@ -2439,7 +2451,8 @@
 
         try {
             disposeInputChannel();
-            mOnBackInvokedCallback = null;
+            mSystemOnBackInvokedCallback = null;
+            mApplicationOnBackInvokedCallback = null;
 
             ProtoLog.v(WM_DEBUG_APP_TRANSITIONS,
                     "Remove %s: mSurfaceController=%s mAnimatingExit=%b mRemoveOnExit=%b "
diff --git a/services/core/jni/BroadcastRadio/types.h b/services/core/jni/BroadcastRadio/types.h
index 910bb7c..4d286bf 100644
--- a/services/core/jni/BroadcastRadio/types.h
+++ b/services/core/jni/BroadcastRadio/types.h
@@ -30,13 +30,13 @@
 // Keep in sync with STATUS_* constants from RadioManager.java.
 enum class Status : jint {
     OK = 0,
-    ERROR = -0x80000000ll,  // Integer.MIN_VALUE
+    ERROR = -0x80000000LL,   // Integer.MIN_VALUE
     PERMISSION_DENIED = -1,  // -EPERM
-    NO_INIT = -19,  // -ENODEV
-    BAD_VALUE = -22,  // -EINVAL
-    DEAD_OBJECT = -32,  // -EPIPE
-    INVALID_OPERATION = -38,  // -ENOSYS
-    TIMED_OUT = -110,  // -ETIMEDOUT
+    NO_INIT = -19,           // -ENODEV
+    BAD_VALUE = -22,         // -EINVAL
+    DEAD_OBJECT = -32,       // -EPIPE
+    INVALID_OPERATION = -38, // -ENOSYS
+    TIMED_OUT = -110,        // -ETIMEDOUT
 };
 
 // Keep in sync with REGION_* constants from RadioManager.java.
diff --git a/services/tests/servicestests/src/com/android/server/accessibility/MagnificationProcessorTest.java b/services/tests/servicestests/src/com/android/server/accessibility/MagnificationProcessorTest.java
index c4040b4..3c2fbd9 100644
--- a/services/tests/servicestests/src/com/android/server/accessibility/MagnificationProcessorTest.java
+++ b/services/tests/servicestests/src/com/android/server/accessibility/MagnificationProcessorTest.java
@@ -27,6 +27,7 @@
 import static org.mockito.ArgumentMatchers.anyInt;
 import static org.mockito.ArgumentMatchers.eq;
 import static org.mockito.Mockito.doAnswer;
+import static org.mockito.Mockito.never;
 import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.when;
 
@@ -342,9 +343,58 @@
     }
 
     @Test
-    public void setMagnificationConfig_controllingModeChangeAndAnimating_transitionConfigMode() {
+    public void setWindowModeConfig_fullScreenMode_transitionConfigMode() {
+        final int currentActivatedMode = MAGNIFICATION_MODE_FULLSCREEN;
+        final MagnificationConfig oldConfig = new MagnificationConfig.Builder()
+                .setMode(currentActivatedMode)
+                .setScale(TEST_SCALE)
+                .setCenterX(TEST_CENTER_X)
+                .setCenterY(TEST_CENTER_Y).build();
+        setMagnificationActivated(TEST_DISPLAY, oldConfig);
+        final MagnificationConfig targetConfig = new MagnificationConfig.Builder()
+                .setMode(MAGNIFICATION_MODE_WINDOW)
+                .setScale(TEST_SCALE)
+                .setCenterX(TEST_CENTER_X + 10)
+                .setCenterY(TEST_CENTER_Y + 10).build();
+
+        mMagnificationProcessor.setMagnificationConfig(TEST_DISPLAY, targetConfig, false,
+                SERVICE_ID);
+
+        verify(mMockMagnificationController).transitionMagnificationConfigMode(eq(TEST_DISPLAY),
+                eq(targetConfig), eq(false), eq(SERVICE_ID));
+    }
+
+    @Test
+    public void setConfigWithDefaultMode_fullScreenMode_expectedConfig() {
+        final MagnificationConfig oldConfig = new MagnificationConfig.Builder()
+                .setMode(MAGNIFICATION_MODE_FULLSCREEN)
+                .setScale(TEST_SCALE)
+                .setCenterX(TEST_CENTER_X)
+                .setCenterY(TEST_CENTER_Y).build();
+        setMagnificationActivated(TEST_DISPLAY, oldConfig);
+        final MagnificationConfig targetConfig = new MagnificationConfig.Builder()
+                .setScale(TEST_SCALE + 1)
+                .setCenterX(TEST_CENTER_X + 10)
+                .setCenterY(TEST_CENTER_Y + 10).build();
+
+        mMagnificationProcessor.setMagnificationConfig(TEST_DISPLAY, targetConfig, false,
+                SERVICE_ID);
+
+        verify(mMockMagnificationController, never()).transitionMagnificationConfigMode(
+                eq(TEST_DISPLAY), any(MagnificationConfig.class), eq(false), eq(SERVICE_ID));
+        final MagnificationConfig expectedConfig = new MagnificationConfig.Builder()
+                .setMode(MAGNIFICATION_MODE_FULLSCREEN)
+                .setScale(TEST_SCALE + 1)
+                .setCenterX(TEST_CENTER_X + 10)
+                .setCenterY(TEST_CENTER_Y + 10).build();
+        assertConfigEquals(expectedConfig,
+                mMagnificationProcessor.getMagnificationConfig(TEST_DISPLAY));
+    }
+
+    @Test
+    public void setWindowModeConfig_transitionToFullScreenModeWithAnimation_transitionConfigMode() {
         final int currentActivatedMode = MAGNIFICATION_MODE_WINDOW;
-        final int targetMode = MAGNIFICATION_MODE_FULLSCREEN;
+        final int targetMode = MAGNIFICATION_MODE_WINDOW;
         final MagnificationConfig oldConfig = new MagnificationConfig.Builder()
                 .setMode(currentActivatedMode)
                 .setScale(TEST_SCALE)
@@ -356,17 +406,14 @@
                 .setScale(TEST_SCALE)
                 .setCenterX(TEST_CENTER_X + 10)
                 .setCenterY(TEST_CENTER_Y + 10).build();
-
         // Has magnification animation running
         when(mMockMagnificationController.hasDisableMagnificationCallback(TEST_DISPLAY)).thenReturn(
                 true);
-        setMagnificationActivated(TEST_DISPLAY, newConfig);
 
-        final MagnificationConfig result = mMagnificationProcessor.getMagnificationConfig(
-                TEST_DISPLAY);
+        mMagnificationProcessor.setMagnificationConfig(TEST_DISPLAY, newConfig, false, SERVICE_ID);
+
         verify(mMockMagnificationController).transitionMagnificationConfigMode(eq(TEST_DISPLAY),
                 eq(newConfig), anyBoolean(), anyInt());
-        assertConfigEquals(newConfig, result);
     }
 
     private void setMagnificationActivated(int displayId, int configMode) {
@@ -383,7 +430,7 @@
                     MAGNIFICATION_MODE_WINDOW)).thenReturn(false);
             mFullScreenMagnificationControllerStub.resetAndStubMethods();
             mMockFullScreenMagnificationController.setScaleAndCenter(displayId, config.getScale(),
-                    config.getCenterX(), config.getCenterY(), true, SERVICE_ID);
+                    config.getCenterX(), config.getCenterY(), false, SERVICE_ID);
         } else if (config.getMode() == MAGNIFICATION_MODE_WINDOW) {
             when(mMockMagnificationController.isActivated(displayId,
                     MAGNIFICATION_MODE_FULLSCREEN)).thenReturn(false);
@@ -429,7 +476,7 @@
             };
             doAnswer(enableMagnificationStubAnswer).when(
                     mScreenMagnificationController).setScaleAndCenter(eq(TEST_DISPLAY), anyFloat(),
-                    anyFloat(), anyFloat(), eq(true), eq(SERVICE_ID));
+                    anyFloat(), anyFloat(), anyBoolean(), eq(SERVICE_ID));
 
             Answer registerStubAnswer = invocation -> {
                 mIsRegistered = true;
@@ -444,6 +491,8 @@
             };
             doAnswer(unregisterStubAnswer).when(
                     mScreenMagnificationController).unregister(eq(TEST_DISPLAY));
+            doAnswer(unregisterStubAnswer).when(
+                    mScreenMagnificationController).reset(eq(TEST_DISPLAY), anyBoolean());
         }
 
         public void resetAndStubMethods() {
diff --git a/services/tests/servicestests/src/com/android/server/accessibility/magnification/MagnificationControllerTest.java b/services/tests/servicestests/src/com/android/server/accessibility/magnification/MagnificationControllerTest.java
index 064b762..3fcce92 100644
--- a/services/tests/servicestests/src/com/android/server/accessibility/magnification/MagnificationControllerTest.java
+++ b/services/tests/servicestests/src/com/android/server/accessibility/magnification/MagnificationControllerTest.java
@@ -20,6 +20,7 @@
 import static android.provider.Settings.Secure.ACCESSIBILITY_MAGNIFICATION_MODE_WINDOW;
 
 import static com.android.server.accessibility.AccessibilityManagerService.MAGNIFICATION_GESTURE_HANDLER_ID;
+import static com.android.server.wm.WindowManagerInternal.AccessibilityControllerInternal.UiChangesForAccessibilityCallbacks;
 
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertFalse;
@@ -32,9 +33,9 @@
 import static org.mockito.ArgumentMatchers.eq;
 import static org.mockito.ArgumentMatchers.nullable;
 import static org.mockito.Mockito.doAnswer;
-import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.never;
 import static org.mockito.Mockito.spy;
+import static org.mockito.Mockito.times;
 import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.when;
 
@@ -80,7 +81,6 @@
 
     private static final int TEST_DISPLAY = Display.DEFAULT_DISPLAY;
     private static final int TEST_SERVICE_ID = 1;
-    private static final Region MAGNIFICATION_REGION = new Region(0, 0, 500, 600);
     private static final Rect TEST_RECT = new Rect(0, 50, 100, 51);
     private static final float MAGNIFIED_CENTER_X = 100;
     private static final float MAGNIFIED_CENTER_Y = 200;
@@ -109,7 +109,8 @@
     private WindowMagnificationManager mWindowMagnificationManager;
     private MockContentResolver mMockResolver;
     private MagnificationController mMagnificationController;
-    private FullScreenMagnificationControllerStubber mScreenMagnificationControllerStubber;
+    private final WindowMagnificationMgrCallbackDelegate mCallbackDelegate =
+            new WindowMagnificationMgrCallbackDelegate();
 
     @Mock
     private WindowManagerInternal mMockWindowManagerInternal;
@@ -141,17 +142,16 @@
         mScaleProvider = spy(new MagnificationScaleProvider(mContext));
         mWindowMagnificationManager = Mockito.spy(
                 new WindowMagnificationManager(mContext, globalLock,
-                        mock(WindowMagnificationManager.Callback.class), mTraceManager,
-                        mScaleProvider));
+                        mCallbackDelegate, mTraceManager, mScaleProvider));
         mMockConnection = new MockWindowMagnificationConnection(true);
         mWindowMagnificationManager.setConnection(mMockConnection.getConnection());
-        mScreenMagnificationControllerStubber = new FullScreenMagnificationControllerStubber(
-                mScreenMagnificationController);
+        new FullScreenMagnificationControllerStubber(mScreenMagnificationController);
         mMagnificationController = new MagnificationController(mService, globalLock, mContext,
                 mScreenMagnificationController, mWindowMagnificationManager, mScaleProvider);
 
         mMagnificationController.setMagnificationCapabilities(
                 Settings.Secure.ACCESSIBILITY_MAGNIFICATION_MODE_ALL);
+        mCallbackDelegate.setDelegate(mMagnificationController);
     }
 
     @After
@@ -222,8 +222,10 @@
                 MODE_WINDOW,
                 mTransitionCallBack);
 
-        mMockConnection.invokeCallbacks();
-        verify(mWindowMagnificationManager).showMagnificationButton(eq(TEST_DISPLAY),
+        // The first time is triggered when window mode is activated, the second time is triggered
+        // when activating the window mode again. The third time is triggered when the transition is
+        // completed.
+        verify(mWindowMagnificationManager, times(3)).showMagnificationButton(eq(TEST_DISPLAY),
                 eq(MODE_WINDOW));
     }
 
@@ -247,7 +249,8 @@
     @Test
     public void transitionToFullScreen_centerNotInTheBounds_magnifyBoundsCenter()
             throws RemoteException {
-        final Rect magnificationBounds = MAGNIFICATION_REGION.getBounds();
+        final Rect magnificationBounds =
+                FullScreenMagnificationControllerStubber.MAGNIFICATION_REGION.getBounds();
         final PointF magnifiedCenter = new PointF(magnificationBounds.right + 100,
                 magnificationBounds.bottom + 100);
         setMagnificationEnabled(MODE_WINDOW, magnifiedCenter.x, magnifiedCenter.y);
@@ -430,18 +433,21 @@
     }
 
     @Test
-    public void onSourceBoundsChanged_notifyMagnificationChanged() {
-        Rect rect = new Rect(0, 0, 100, 120);
-        Region region = new Region(rect);
-
-        mMagnificationController.onSourceBoundsChanged(TEST_DISPLAY, rect);
+    public void enableWindowMode_notifyMagnificationChanged() throws RemoteException {
+        setMagnificationEnabled(MODE_WINDOW);
 
         final ArgumentCaptor<MagnificationConfig> configCaptor = ArgumentCaptor.forClass(
                 MagnificationConfig.class);
-        verify(mService).notifyMagnificationChanged(eq(TEST_DISPLAY), eq(region),
+        final ArgumentCaptor<Region> regionCaptor = ArgumentCaptor.forClass(
+                Region.class);
+        verify(mService).notifyMagnificationChanged(eq(TEST_DISPLAY), regionCaptor.capture(),
                 configCaptor.capture());
-        assertEquals(rect.exactCenterX(), configCaptor.getValue().getCenterX(), 0);
-        assertEquals(rect.exactCenterY(), configCaptor.getValue().getCenterY(), 0);
+
+        final Rect actualRect = regionCaptor.getValue().getBounds();
+        final MagnificationConfig actualConfig = configCaptor.getValue();
+        assertEquals(actualRect.exactCenterX(), actualConfig.getCenterX(), 0);
+        assertEquals(actualRect.exactCenterY(), actualConfig.getCenterY(), 0);
+        assertEquals(DEFAULT_SCALE, actualConfig.getScale(), 0);
     }
 
     @Test
@@ -451,7 +457,8 @@
 
         mMagnificationController.onAccessibilityActionPerformed(TEST_DISPLAY);
 
-        verify(mWindowMagnificationManager).showMagnificationButton(eq(TEST_DISPLAY),
+        // The first time is triggered when window mode is activated.
+        verify(mWindowMagnificationManager, times(2)).showMagnificationButton(eq(TEST_DISPLAY),
                 eq(MODE_WINDOW));
     }
 
@@ -464,7 +471,8 @@
 
         mMagnificationController.onAccessibilityActionPerformed(TEST_DISPLAY);
 
-        verify(mWindowMagnificationManager).removeMagnificationButton(eq(TEST_DISPLAY));
+        // The first time is triggered when window mode is activated.
+        verify(mWindowMagnificationManager, times(2)).removeMagnificationButton(eq(TEST_DISPLAY));
     }
 
     @Test
@@ -490,8 +498,7 @@
     public void onRectangleOnScreenRequested_fullScreenIsActivated_fullScreenDispatchEvent() {
         mMagnificationController.onFullScreenMagnificationActivationState(TEST_DISPLAY,
                 true);
-        WindowManagerInternal.AccessibilityControllerInternal.UiChangesForAccessibilityCallbacks
-                callbacks = getUiChangesForAccessibilityCallbacks();
+        UiChangesForAccessibilityCallbacks callbacks = getUiChangesForAccessibilityCallbacks();
 
         callbacks.onRectangleOnScreenRequested(TEST_DISPLAY,
                 TEST_RECT.left, TEST_RECT.top, TEST_RECT.right, TEST_RECT.bottom);
@@ -508,8 +515,7 @@
                 true);
         mMagnificationController.onFullScreenMagnificationActivationState(TEST_DISPLAY,
                 false);
-        WindowManagerInternal.AccessibilityControllerInternal.UiChangesForAccessibilityCallbacks
-                callbacks = getUiChangesForAccessibilityCallbacks();
+        UiChangesForAccessibilityCallbacks callbacks = getUiChangesForAccessibilityCallbacks();
 
         callbacks.onRectangleOnScreenRequested(TEST_DISPLAY,
                 TEST_RECT.left, TEST_RECT.top, TEST_RECT.right, TEST_RECT.bottom);
@@ -522,8 +528,7 @@
 
     @Test
     public void onRectangleOnScreenRequested_NoneIsActivated_noneDispatchEvent() {
-        WindowManagerInternal.AccessibilityControllerInternal.UiChangesForAccessibilityCallbacks
-                callbacks = getUiChangesForAccessibilityCallbacks();
+        UiChangesForAccessibilityCallbacks callbacks = getUiChangesForAccessibilityCallbacks();
 
         callbacks.onRectangleOnScreenRequested(TEST_DISPLAY,
                 TEST_RECT.left, TEST_RECT.top, TEST_RECT.right, TEST_RECT.bottom);
@@ -546,8 +551,7 @@
     }
 
     @Test
-    public void
-            onFullScreenMagnificationActivationState_fullScreenActivated_logFullScreenDuration() {
+    public void onFullScreenMagnificationActivationState_fullScreenEnabled_logFullScreenDuration() {
         MagnificationController spyController = spy(mMagnificationController);
         spyController.onFullScreenMagnificationActivationState(TEST_DISPLAY, true);
 
@@ -596,7 +600,8 @@
 
         mMagnificationController.onTouchInteractionStart(TEST_DISPLAY, MODE_WINDOW);
 
-        verify(mWindowMagnificationManager).showMagnificationButton(eq(TEST_DISPLAY),
+        // The first time is triggered when the window mode is activated.
+        verify(mWindowMagnificationManager, times(2)).showMagnificationButton(eq(TEST_DISPLAY),
                 eq(MODE_WINDOW));
     }
 
@@ -607,7 +612,8 @@
 
         mMagnificationController.onTouchInteractionEnd(TEST_DISPLAY, MODE_WINDOW);
 
-        verify(mWindowMagnificationManager).showMagnificationButton(eq(TEST_DISPLAY),
+        // The first time is triggered when the window mode is activated.
+        verify(mWindowMagnificationManager, times(2)).showMagnificationButton(eq(TEST_DISPLAY),
                 eq(MODE_WINDOW));
     }
 
@@ -639,12 +645,10 @@
     }
 
     @Test
-    public void onWindowActivated_windowModeEnabledAndCapabilitiesAll_showMagnificationButton()
+    public void enableWindowMode_showMagnificationButton()
             throws RemoteException {
         setMagnificationEnabled(MODE_WINDOW);
 
-        mMagnificationController.onWindowMagnificationActivationState(TEST_DISPLAY, true);
-
         verify(mWindowMagnificationManager).showMagnificationButton(eq(TEST_DISPLAY),
                 eq(MODE_WINDOW));
     }
@@ -661,18 +665,17 @@
     }
 
     @Test
-    public void onWindowDeactivated_windowModeInactive_removeMagnificationButton()
+    public void disableWindowMode_windowModeInActive_removeMagnificationButton()
             throws RemoteException {
         setMagnificationEnabled(MODE_WINDOW);
-        mWindowMagnificationManager.disableWindowMagnification(TEST_DISPLAY, false);
 
-        mMagnificationController.onWindowMagnificationActivationState(TEST_DISPLAY, false);
+        mWindowMagnificationManager.disableWindowMagnification(TEST_DISPLAY, false);
 
         verify(mWindowMagnificationManager).removeMagnificationButton(eq(TEST_DISPLAY));
     }
 
     @Test
-    public void onFullScreenDeactivated_fullscreenModeInactive_removeMagnificationButton()
+    public void onFullScreenDeactivated_fullscreenModeInActive_removeMagnificationButton()
             throws RemoteException {
         setMagnificationEnabled(MODE_FULLSCREEN);
         mScreenMagnificationController.setScaleAndCenter(TEST_DISPLAY,
@@ -685,7 +688,7 @@
     }
 
     @Test
-    public void transitionToFullScreenMode_fullscreenModeActivated_showMagnificationButton()
+    public void transitionToFullScreenMode_fullscreenModeInActive_showMagnificationButton()
             throws RemoteException {
         setMagnificationEnabled(MODE_WINDOW);
 
@@ -698,7 +701,7 @@
     }
 
     @Test
-    public void transitionToWindow_windowModeActivated_showMagnificationButton()
+    public void transitionToWindow_fullscreenModeInActive_showMagnificationButton()
             throws RemoteException {
         setMagnificationEnabled(MODE_FULLSCREEN);
 
@@ -709,7 +712,10 @@
                 mCallbackArgumentCaptor.capture());
         mCallbackArgumentCaptor.getValue().onResult(true);
         mMockConnection.invokeCallbacks();
-        verify(mWindowMagnificationManager).showMagnificationButton(eq(TEST_DISPLAY),
+
+        // The first time is triggered when window mode is activated, the second time is triggered
+        // when the disable-magnification callback is triggered.
+        verify(mWindowMagnificationManager, times(2)).showMagnificationButton(eq(TEST_DISPLAY),
                 eq(MODE_WINDOW));
     }
 
@@ -784,7 +790,6 @@
     }
 
     private void activateMagnifier(int mode, float centerX, float centerY) throws RemoteException {
-        mScreenMagnificationControllerStubber.resetAndStubMethods();
         final boolean windowMagnifying = mWindowMagnificationManager.isWindowMagnifierEnabled(
                 TEST_DISPLAY);
         if (windowMagnifying) {
@@ -806,13 +811,20 @@
                 Settings.Secure.ACCESSIBILITY_MAGNIFICATION_MODE, mode, CURRENT_USER_ID);
     }
 
-    private MagnificationConfig obtainMagnificationConfig(int mode) {
-        return new MagnificationConfig.Builder().setMode(mode).setScale(DEFAULT_SCALE).setCenterX(
-                MAGNIFIED_CENTER_X).setCenterY(MAGNIFIED_CENTER_Y).build();
+    private static MagnificationConfig obtainMagnificationConfig(int mode) {
+        return obtainMagnificationConfig(mode, true);
     }
 
-    private WindowManagerInternal.AccessibilityControllerInternal.UiChangesForAccessibilityCallbacks
-            getUiChangesForAccessibilityCallbacks() {
+    private static MagnificationConfig obtainMagnificationConfig(int mode, boolean defaultScale) {
+        MagnificationConfig.Builder builder = new MagnificationConfig.Builder();
+        if (defaultScale) {
+            builder = builder.setScale(DEFAULT_SCALE);
+        }
+        return builder.setMode(mode).setCenterX(MAGNIFIED_CENTER_X)
+                .setCenterY(MAGNIFIED_CENTER_Y).build();
+    }
+
+    private UiChangesForAccessibilityCallbacks getUiChangesForAccessibilityCallbacks() {
         ArgumentCaptor<WindowManagerInternal.AccessibilityControllerInternal
                 .UiChangesForAccessibilityCallbacks> captor = ArgumentCaptor.forClass(
                 WindowManagerInternal.AccessibilityControllerInternal
@@ -822,21 +834,65 @@
         return captor.getValue();
     }
 
+    private static class WindowMagnificationMgrCallbackDelegate implements
+            WindowMagnificationManager.Callback {
+        private WindowMagnificationManager.Callback mCallback;
+
+        public void setDelegate(WindowMagnificationManager.Callback callback) {
+            mCallback = callback;
+        }
+
+        @Override
+        public void onPerformScaleAction(int displayId, float scale) {
+            if (mCallback != null) {
+                mCallback.onPerformScaleAction(displayId, scale);
+            }
+        }
+
+        @Override
+        public void onAccessibilityActionPerformed(int displayId) {
+            if (mCallback != null) {
+                mCallback.onAccessibilityActionPerformed(displayId);
+            }
+        }
+
+        @Override
+        public void onWindowMagnificationActivationState(int displayId, boolean activated) {
+            if (mCallback != null) {
+                mCallback.onWindowMagnificationActivationState(displayId, activated);
+            }
+        }
+
+        @Override
+        public void onSourceBoundsChanged(int displayId, Rect bounds) {
+            if (mCallback != null) {
+                mCallback.onSourceBoundsChanged(displayId, bounds);
+            }
+        }
+
+        @Override
+        public void onChangeMagnificationMode(int displayId, int magnificationMode) {
+            if (mCallback != null) {
+                mCallback.onChangeMagnificationMode(displayId, magnificationMode);
+            }
+        }
+    }
+
     /**
-     * Stubs public methods to simulate the real beahviours.
+     * Stubs public methods to simulate the real behaviours.
      */
     private static class FullScreenMagnificationControllerStubber {
+        private static final Region MAGNIFICATION_REGION = new Region(0, 0, 500, 600);
         private final FullScreenMagnificationController mScreenMagnificationController;
         private boolean mIsMagnifying = false;
         private float mScale = 1.0f;
-        private float mCenterX = 0;
-        private float mCenterY = 0;
+        private float mCenterX = MAGNIFICATION_REGION.getBounds().exactCenterX();
+        private float mCenterY = MAGNIFICATION_REGION.getBounds().exactCenterY();
         private int mServiceId = -1;
 
         FullScreenMagnificationControllerStubber(
                 FullScreenMagnificationController screenMagnificationController) {
             mScreenMagnificationController = screenMagnificationController;
-            resetCenter();
             stubMethods();
         }
 
@@ -872,8 +928,7 @@
                     mCenterY = invocation.getArgument(3);
                     mServiceId = invocation.getArgument(5);
                 } else {
-                    mServiceId = -1;
-                    resetCenter();
+                    reset();
                 }
                 return true;
             };
@@ -886,26 +941,21 @@
                     anyFloat(), anyFloat(), anyFloat(), anyBoolean(), anyInt());
 
             Answer resetStubAnswer = invocation -> {
-                mScale = 1.0f;
-                mIsMagnifying = false;
-                mServiceId = -1;
-                resetCenter();
+                reset();
                 return true;
             };
             doAnswer(resetStubAnswer).when(mScreenMagnificationController).reset(eq(TEST_DISPLAY),
-                    any());
+                    any(MagnificationAnimationCallback.class));
             doAnswer(resetStubAnswer).when(mScreenMagnificationController).reset(eq(TEST_DISPLAY),
                     anyBoolean());
         }
 
-        private void resetCenter() {
+        private void reset() {
+            mScale = 1.0f;
+            mIsMagnifying = false;
+            mServiceId = -1;
             mCenterX = MAGNIFICATION_REGION.getBounds().exactCenterX();
             mCenterY = MAGNIFICATION_REGION.getBounds().exactCenterY();
         }
-
-        public void resetAndStubMethods() {
-            Mockito.reset(mScreenMagnificationController);
-            stubMethods();
-        }
     }
 }
diff --git a/services/tests/servicestests/src/com/android/server/accessibility/magnification/WindowMagnificationManagerTest.java b/services/tests/servicestests/src/com/android/server/accessibility/magnification/WindowMagnificationManagerTest.java
index 8da513b..0742c09 100644
--- a/services/tests/servicestests/src/com/android/server/accessibility/magnification/WindowMagnificationManagerTest.java
+++ b/services/tests/servicestests/src/com/android/server/accessibility/magnification/WindowMagnificationManagerTest.java
@@ -62,6 +62,7 @@
 import org.junit.Before;
 import org.junit.Test;
 import org.mockito.Mock;
+import org.mockito.Mockito;
 import org.mockito.MockitoAnnotations;
 import org.mockito.invocation.InvocationOnMock;
 
@@ -633,9 +634,15 @@
     public void onWindowMagnificationActivationState_magnifierDisabled_notifyDeactivatedState() {
         mWindowMagnificationManager.setConnection(mMockConnection.getConnection());
         mWindowMagnificationManager.enableWindowMagnification(TEST_DISPLAY, 3.0f, NaN, NaN);
-        mWindowMagnificationManager.disableWindowMagnification(TEST_DISPLAY, true);
+        mWindowMagnificationManager.disableWindowMagnification(TEST_DISPLAY, false);
 
         verify(mMockCallback).onWindowMagnificationActivationState(TEST_DISPLAY, false);
+
+        Mockito.reset(mMockCallback);
+        mWindowMagnificationManager.disableWindowMagnification(TEST_DISPLAY, false);
+
+        verify(mMockCallback, never()).onWindowMagnificationActivationState(eq(TEST_DISPLAY),
+                anyBoolean());
     }
 
     private MotionEvent generatePointersDownEvent(PointF[] pointersLocation) {
diff --git a/services/tests/servicestests/src/com/android/server/adb/AdbDebuggingManagerTest.java b/services/tests/servicestests/src/com/android/server/adb/AdbDebuggingManagerTest.java
index 02cf971..b36aa06 100644
--- a/services/tests/servicestests/src/com/android/server/adb/AdbDebuggingManagerTest.java
+++ b/services/tests/servicestests/src/com/android/server/adb/AdbDebuggingManagerTest.java
@@ -635,7 +635,7 @@
         long time = System.currentTimeMillis();
         for (String key : testKeys) {
             long connectionTime = adbKeyStore.getLastConnectionTime(key);
-            if (Math.abs(connectionTime - connectionTime) > epsilon) {
+            if (Math.abs(time - connectionTime) > epsilon) {
                 fail("The connection time for a previously untracked key, " + connectionTime
                         + ", is beyond the current time of " + time);
             }
diff --git a/services/tests/servicestests/src/com/android/server/pm/BaseShortcutManagerTest.java b/services/tests/servicestests/src/com/android/server/pm/BaseShortcutManagerTest.java
index ea7804d..d99fbb1 100644
--- a/services/tests/servicestests/src/com/android/server/pm/BaseShortcutManagerTest.java
+++ b/services/tests/servicestests/src/com/android/server/pm/BaseShortcutManagerTest.java
@@ -2048,8 +2048,7 @@
 
     protected List<ShortcutInfo> getShortcutAsLauncher(int targetUserId) {
         final ShortcutQuery q = new ShortcutQuery();
-        q.setQueryFlags(ShortcutQuery.FLAG_MATCH_DYNAMIC | ShortcutQuery.FLAG_MATCH_DYNAMIC
-                | ShortcutQuery.FLAG_MATCH_PINNED);
+        q.setQueryFlags(ShortcutQuery.FLAG_MATCH_DYNAMIC | ShortcutQuery.FLAG_MATCH_PINNED);
         return mLauncherApps.getShortcuts(q, UserHandle.of(targetUserId));
     }
 
diff --git a/services/tests/servicestests/src/com/android/server/timedetector/TimeDetectorServiceTest.java b/services/tests/servicestests/src/com/android/server/timedetector/TimeDetectorServiceTest.java
index 32fed3b..4519890 100644
--- a/services/tests/servicestests/src/com/android/server/timedetector/TimeDetectorServiceTest.java
+++ b/services/tests/servicestests/src/com/android/server/timedetector/TimeDetectorServiceTest.java
@@ -252,7 +252,7 @@
         int slotIndex = 1234;
         TimestampedValue<Long> timeValue = new TimestampedValue<>(100L, 1_000_000L);
         return new TelephonyTimeSuggestion.Builder(slotIndex)
-                .setUtcTime(timeValue)
+                .setUnixEpochTime(timeValue)
                 .build();
     }
 
diff --git a/services/tests/servicestests/src/com/android/server/timedetector/TimeDetectorStrategyImplTest.java b/services/tests/servicestests/src/com/android/server/timedetector/TimeDetectorStrategyImplTest.java
index 0d5b5a5..2d9903f 100644
--- a/services/tests/servicestests/src/com/android/server/timedetector/TimeDetectorStrategyImplTest.java
+++ b/services/tests/servicestests/src/com/android/server/timedetector/TimeDetectorStrategyImplTest.java
@@ -52,12 +52,12 @@
 @RunWith(AndroidJUnit4.class)
 public class TimeDetectorStrategyImplTest {
 
-    private static final Instant TIME_LOWER_BOUND = createUtcTime(2009, 1, 1, 12, 0, 0);
+    private static final Instant TIME_LOWER_BOUND = createUnixEpochTime(2009, 1, 1, 12, 0, 0);
 
     private static final TimestampedValue<Instant> ARBITRARY_CLOCK_INITIALIZATION_INFO =
             new TimestampedValue<>(
                     123456789L /* realtimeClockMillis */,
-                    createUtcTime(2010, 5, 23, 12, 0, 0));
+                    createUnixEpochTime(2010, 5, 23, 12, 0, 0));
 
     // This is the traditional ordering for time detection on Android.
     private static final @Origin int [] PROVIDERS_PRIORITY = { ORIGIN_TELEPHONY, ORIGIN_NETWORK };
@@ -66,7 +66,7 @@
      * An arbitrary time, very different from the {@link #ARBITRARY_CLOCK_INITIALIZATION_INFO}
      * time. Can be used as the basis for time suggestions.
      */
-    private static final Instant ARBITRARY_TEST_TIME = createUtcTime(2018, 1, 1, 12, 0, 0);
+    private static final Instant ARBITRARY_TEST_TIME = createUnixEpochTime(2018, 1, 1, 12, 0, 0);
 
     private static final int ARBITRARY_SLOT_INDEX = 123456;
 
@@ -91,7 +91,7 @@
                 .simulateTelephonyTimeSuggestion(timeSuggestion);
 
         long expectedSystemClockMillis =
-                mScript.calculateTimeInMillisForNow(timeSuggestion.getUtcTime());
+                mScript.calculateTimeInMillisForNow(timeSuggestion.getUnixEpochTime());
         mScript.verifySystemClockWasSetAndResetCallTracking(expectedSystemClockMillis)
                 .assertLatestTelephonySuggestion(slotIndex, timeSuggestion);
     }
@@ -128,7 +128,7 @@
             mScript.simulateTimePassing(clockIncrementMillis);
 
             long expectedSystemClockMillis1 =
-                    mScript.calculateTimeInMillisForNow(timeSuggestion1.getUtcTime());
+                    mScript.calculateTimeInMillisForNow(timeSuggestion1.getUnixEpochTime());
 
             mScript.simulateTelephonyTimeSuggestion(timeSuggestion1)
                     .verifySystemClockWasSetAndResetCallTracking(expectedSystemClockMillis1)
@@ -155,7 +155,7 @@
             mScript.simulateTimePassing(clockIncrementMillis);
 
             long expectedSystemClockMillis3 =
-                    mScript.calculateTimeInMillisForNow(timeSuggestion3.getUtcTime());
+                    mScript.calculateTimeInMillisForNow(timeSuggestion3.getUnixEpochTime());
 
             mScript.simulateTelephonyTimeSuggestion(timeSuggestion3)
                     .verifySystemClockWasSetAndResetCallTracking(expectedSystemClockMillis3)
@@ -182,8 +182,8 @@
                     mScript.generateTelephonyTimeSuggestion(slotIndex2, slotIndex2Time);
             mScript.simulateTimePassing();
 
-            long expectedSystemClockMillis =
-                    mScript.calculateTimeInMillisForNow(slotIndex2TimeSuggestion.getUtcTime());
+            long expectedSystemClockMillis = mScript.calculateTimeInMillisForNow(
+                    slotIndex2TimeSuggestion.getUnixEpochTime());
 
             mScript.simulateTelephonyTimeSuggestion(slotIndex2TimeSuggestion)
                     .verifySystemClockWasSetAndResetCallTracking(expectedSystemClockMillis)
@@ -199,8 +199,8 @@
                     mScript.generateTelephonyTimeSuggestion(slotIndex1, slotIndex1Time);
             mScript.simulateTimePassing();
 
-            long expectedSystemClockMillis =
-                    mScript.calculateTimeInMillisForNow(slotIndex1TimeSuggestion.getUtcTime());
+            long expectedSystemClockMillis = mScript.calculateTimeInMillisForNow(
+                    slotIndex1TimeSuggestion.getUnixEpochTime());
 
             mScript.simulateTelephonyTimeSuggestion(slotIndex1TimeSuggestion)
                     .verifySystemClockWasSetAndResetCallTracking(expectedSystemClockMillis)
@@ -232,8 +232,8 @@
                     mScript.generateTelephonyTimeSuggestion(slotIndex2, slotIndex2Time);
             mScript.simulateTimePassing();
 
-            long expectedSystemClockMillis =
-                    mScript.calculateTimeInMillisForNow(slotIndex2TimeSuggestion.getUtcTime());
+            long expectedSystemClockMillis = mScript.calculateTimeInMillisForNow(
+                    slotIndex2TimeSuggestion.getUnixEpochTime());
 
             mScript.simulateTelephonyTimeSuggestion(slotIndex2TimeSuggestion)
                     .verifySystemClockWasSetAndResetCallTracking(expectedSystemClockMillis)
@@ -267,26 +267,27 @@
 
         TelephonyTimeSuggestion timeSuggestion1 =
                 mScript.generateTelephonyTimeSuggestion(slotIndex, testTime);
-        TimestampedValue<Long> utcTime1 = timeSuggestion1.getUtcTime();
+        TimestampedValue<Long> unixEpochTime1 = timeSuggestion1.getUnixEpochTime();
 
         // Initialize the strategy / device with a time set from a telephony suggestion.
         mScript.simulateTimePassing();
-        long expectedSystemClockMillis1 = mScript.calculateTimeInMillisForNow(utcTime1);
+        long expectedSystemClockMillis1 = mScript.calculateTimeInMillisForNow(unixEpochTime1);
         mScript.simulateTelephonyTimeSuggestion(timeSuggestion1)
                 .verifySystemClockWasSetAndResetCallTracking(expectedSystemClockMillis1)
                 .assertLatestTelephonySuggestion(slotIndex, timeSuggestion1);
 
-        // The UTC time increment should be larger than the system clock update threshold so we
-        // know it shouldn't be ignored for other reasons.
-        long validUtcTimeMillis = utcTime1.getValue() + (2 * systemClockUpdateThreshold);
+        // The Unix epoch time increment should be larger than the system clock update threshold so
+        // we know it shouldn't be ignored for other reasons.
+        long validUnixEpochTimeMillis = unixEpochTime1.getValue()
+                + (2 * systemClockUpdateThreshold);
 
         // Now supply a new signal that has an obviously bogus reference time : older than the last
         // one.
-        long referenceTimeBeforeLastSignalMillis = utcTime1.getReferenceTimeMillis() - 1;
-        TimestampedValue<Long> utcTime2 = new TimestampedValue<>(
-                referenceTimeBeforeLastSignalMillis, validUtcTimeMillis);
+        long referenceTimeBeforeLastSignalMillis = unixEpochTime1.getReferenceTimeMillis() - 1;
+        TimestampedValue<Long> unixEpochTime2 = new TimestampedValue<>(
+                referenceTimeBeforeLastSignalMillis, validUnixEpochTimeMillis);
         TelephonyTimeSuggestion timeSuggestion2 =
-                createTelephonyTimeSuggestion(slotIndex, utcTime2);
+                createTelephonyTimeSuggestion(slotIndex, unixEpochTime2);
         mScript.simulateTelephonyTimeSuggestion(timeSuggestion2)
                 .verifySystemClockWasNotSetAndResetCallTracking()
                 .assertLatestTelephonySuggestion(slotIndex, timeSuggestion1);
@@ -294,22 +295,22 @@
         // Now supply a new signal that has an obviously bogus reference time : substantially in the
         // future.
         long referenceTimeInFutureMillis =
-                utcTime1.getReferenceTimeMillis() + Integer.MAX_VALUE + 1;
-        TimestampedValue<Long> utcTime3 = new TimestampedValue<>(
-                referenceTimeInFutureMillis, validUtcTimeMillis);
+                unixEpochTime1.getReferenceTimeMillis() + Integer.MAX_VALUE + 1;
+        TimestampedValue<Long> unixEpochTime3 = new TimestampedValue<>(
+                referenceTimeInFutureMillis, validUnixEpochTimeMillis);
         TelephonyTimeSuggestion timeSuggestion3 =
-                createTelephonyTimeSuggestion(slotIndex, utcTime3);
+                createTelephonyTimeSuggestion(slotIndex, unixEpochTime3);
         mScript.simulateTelephonyTimeSuggestion(timeSuggestion3)
                 .verifySystemClockWasNotSetAndResetCallTracking()
                 .assertLatestTelephonySuggestion(slotIndex, timeSuggestion1);
 
-        // Just to prove validUtcTimeMillis is valid.
-        long validReferenceTimeMillis = utcTime1.getReferenceTimeMillis() + 100;
-        TimestampedValue<Long> utcTime4 = new TimestampedValue<>(
-                validReferenceTimeMillis, validUtcTimeMillis);
-        long expectedSystemClockMillis4 = mScript.calculateTimeInMillisForNow(utcTime4);
+        // Just to prove validUnixEpochTimeMillis is valid.
+        long validReferenceTimeMillis = unixEpochTime1.getReferenceTimeMillis() + 100;
+        TimestampedValue<Long> unixEpochTime4 = new TimestampedValue<>(
+                validReferenceTimeMillis, validUnixEpochTimeMillis);
+        long expectedSystemClockMillis4 = mScript.calculateTimeInMillisForNow(unixEpochTime4);
         TelephonyTimeSuggestion timeSuggestion4 =
-                createTelephonyTimeSuggestion(slotIndex, utcTime4);
+                createTelephonyTimeSuggestion(slotIndex, unixEpochTime4);
         mScript.simulateTelephonyTimeSuggestion(timeSuggestion4)
                 .verifySystemClockWasSetAndResetCallTracking(expectedSystemClockMillis4)
                 .assertLatestTelephonySuggestion(slotIndex, timeSuggestion4);
@@ -344,7 +345,7 @@
         Instant testTime = ARBITRARY_TEST_TIME;
         TelephonyTimeSuggestion timeSuggestion1 =
                 mScript.generateTelephonyTimeSuggestion(slotIndex, testTime);
-        TimestampedValue<Long> utcTime1 = timeSuggestion1.getUtcTime();
+        TimestampedValue<Long> unixEpochTime1 = timeSuggestion1.getUnixEpochTime();
 
         // Simulate time passing.
         mScript.simulateTimePassing(clockIncrementMillis);
@@ -358,7 +359,7 @@
         // Simulate more time passing.
         mScript.simulateTimePassing(clockIncrementMillis);
 
-        long expectedSystemClockMillis1 = mScript.calculateTimeInMillisForNow(utcTime1);
+        long expectedSystemClockMillis1 = mScript.calculateTimeInMillisForNow(unixEpochTime1);
 
         // Turn on auto time detection.
         mScript.simulateAutoTimeDetectionToggle()
@@ -379,7 +380,7 @@
         mScript.simulateTimePassing(clockIncrementMillis);
 
         long expectedSystemClockMillis2 =
-                mScript.calculateTimeInMillisForNow(timeSuggestion2.getUtcTime());
+                mScript.calculateTimeInMillisForNow(timeSuggestion2.getUnixEpochTime());
 
         // The new time, though valid, should not be set in the system clock because auto time is
         // disabled.
@@ -406,7 +407,7 @@
         mScript.simulateTimePassing();
 
         long expectedSystemClockMillis =
-                mScript.calculateTimeInMillisForNow(telephonySuggestion.getUtcTime());
+                mScript.calculateTimeInMillisForNow(telephonySuggestion.getUnixEpochTime());
         mScript.simulateTelephonyTimeSuggestion(telephonySuggestion)
                 .verifySystemClockWasSetAndResetCallTracking(
                         expectedSystemClockMillis  /* expectedNetworkBroadcast */)
@@ -416,7 +417,7 @@
         assertEquals(telephonySuggestion, mScript.peekBestTelephonySuggestion());
 
         // Simulate time passing, long enough that telephonySuggestion is now too old.
-        mScript.simulateTimePassing(TimeDetectorStrategyImpl.MAX_UTC_TIME_AGE_MILLIS);
+        mScript.simulateTimePassing(TimeDetectorStrategyImpl.MAX_SUGGESTION_TIME_AGE_MILLIS);
 
         // Look inside and check what the strategy considers the current best telephony suggestion.
         // It should still be the, it's just no longer used.
@@ -435,7 +436,7 @@
         mScript.simulateTimePassing();
 
         long expectedSystemClockMillis =
-                mScript.calculateTimeInMillisForNow(timeSuggestion.getUtcTime());
+                mScript.calculateTimeInMillisForNow(timeSuggestion.getUnixEpochTime());
         mScript.simulateManualTimeSuggestion(timeSuggestion, true /* expectedResult */)
                 .verifySystemClockWasSetAndResetCallTracking(expectedSystemClockMillis);
     }
@@ -457,7 +458,7 @@
         mScript.simulateTimePassing();
 
         long expectedAutoClockMillis =
-                mScript.calculateTimeInMillisForNow(telephonyTimeSuggestion.getUtcTime());
+                mScript.calculateTimeInMillisForNow(telephonyTimeSuggestion.getUnixEpochTime());
         mScript.simulateTelephonyTimeSuggestion(telephonyTimeSuggestion)
                 .verifySystemClockWasSetAndResetCallTracking(expectedAutoClockMillis)
                 .assertLatestTelephonySuggestion(slotIndex, telephonyTimeSuggestion);
@@ -480,7 +481,7 @@
         mScript.simulateTimePassing();
 
         long expectedManualClockMillis =
-                mScript.calculateTimeInMillisForNow(manualTimeSuggestion.getUtcTime());
+                mScript.calculateTimeInMillisForNow(manualTimeSuggestion.getUnixEpochTime());
         mScript.simulateManualTimeSuggestion(manualTimeSuggestion, true /* expectedResult */)
                 .verifySystemClockWasSetAndResetCallTracking(expectedManualClockMillis)
                 .assertLatestTelephonySuggestion(slotIndex, telephonyTimeSuggestion);
@@ -492,7 +493,7 @@
         mScript.simulateAutoTimeDetectionToggle();
 
         expectedAutoClockMillis =
-                mScript.calculateTimeInMillisForNow(telephonyTimeSuggestion.getUtcTime());
+                mScript.calculateTimeInMillisForNow(telephonyTimeSuggestion.getUnixEpochTime());
         mScript.verifySystemClockWasSetAndResetCallTracking(expectedAutoClockMillis)
                 .assertLatestTelephonySuggestion(slotIndex, telephonyTimeSuggestion);
 
@@ -540,7 +541,7 @@
         mScript.simulateTimePassing();
 
         long expectedSystemClockMillis =
-                mScript.calculateTimeInMillisForNow(timeSuggestion.getUtcTime());
+                mScript.calculateTimeInMillisForNow(timeSuggestion.getUnixEpochTime());
         mScript.simulateNetworkTimeSuggestion(timeSuggestion)
                 .verifySystemClockWasSetAndResetCallTracking(expectedSystemClockMillis);
     }
@@ -586,7 +587,7 @@
         mScript.simulateTimePassing();
 
         long expectedSystemClockMillis =
-                mScript.calculateTimeInMillisForNow(timeSuggestion.getUtcTime());
+                mScript.calculateTimeInMillisForNow(timeSuggestion.getUnixEpochTime());
         mScript.simulateGnssTimeSuggestion(timeSuggestion)
                 .verifySystemClockWasSetAndResetCallTracking(expectedSystemClockMillis);
     }
@@ -617,7 +618,7 @@
         mScript.simulateTimePassing();
 
         long expectedSystemClockMillis =
-                mScript.calculateTimeInMillisForNow(timeSuggestion.getUtcTime());
+                mScript.calculateTimeInMillisForNow(timeSuggestion.getUnixEpochTime());
         mScript.simulateExternalTimeSuggestion(timeSuggestion)
                 .verifySystemClockWasSetAndResetCallTracking(expectedSystemClockMillis);
     }
@@ -671,7 +672,8 @@
         mScript.simulateTimePassing(smallTimeIncrementMillis)
                 .simulateNetworkTimeSuggestion(networkTimeSuggestion1)
                 .verifySystemClockWasSetAndResetCallTracking(
-                        mScript.calculateTimeInMillisForNow(networkTimeSuggestion1.getUtcTime()));
+                        mScript.calculateTimeInMillisForNow(
+                                networkTimeSuggestion1.getUnixEpochTime()));
 
         // Check internal state.
         mScript.assertLatestTelephonySuggestion(ARBITRARY_SLOT_INDEX, null)
@@ -690,7 +692,8 @@
         mScript.simulateTimePassing(smallTimeIncrementMillis)
                 .simulateTelephonyTimeSuggestion(telephonyTimeSuggestion)
                 .verifySystemClockWasSetAndResetCallTracking(
-                        mScript.calculateTimeInMillisForNow(telephonyTimeSuggestion.getUtcTime()));
+                        mScript.calculateTimeInMillisForNow(
+                                telephonyTimeSuggestion.getUnixEpochTime()));
 
         // Check internal state.
         mScript.assertLatestTelephonySuggestion(ARBITRARY_SLOT_INDEX, telephonyTimeSuggestion)
@@ -700,7 +703,7 @@
 
         // Simulate some significant time passing: half the time allowed before a time signal
         // becomes "too old to use".
-        mScript.simulateTimePassing(TimeDetectorStrategyImpl.MAX_UTC_TIME_AGE_MILLIS / 2)
+        mScript.simulateTimePassing(TimeDetectorStrategyImpl.MAX_SUGGESTION_TIME_AGE_MILLIS / 2)
                 .verifySystemClockWasNotSetAndResetCallTracking();
 
         // Now another network suggestion is made. Telephony suggestions are prioritized over
@@ -720,7 +723,7 @@
         // Simulate some significant time passing: half the time allowed before a time signal
         // becomes "too old to use". This should mean that telephonyTimeSuggestion is now too old to
         // be used but networkTimeSuggestion2 is not.
-        mScript.simulateTimePassing(TimeDetectorStrategyImpl.MAX_UTC_TIME_AGE_MILLIS / 2);
+        mScript.simulateTimePassing(TimeDetectorStrategyImpl.MAX_SUGGESTION_TIME_AGE_MILLIS / 2);
 
         // NOTE: The TimeDetectorStrategyImpl doesn't set an alarm for the point when the last
         // suggestion it used becomes too old: it requires a new suggestion or an auto-time toggle
@@ -743,7 +746,7 @@
 
         // Verify the latest network time now wins.
         mScript.verifySystemClockWasSetAndResetCallTracking(
-                mScript.calculateTimeInMillisForNow(networkTimeSuggestion2.getUtcTime()));
+                mScript.calculateTimeInMillisForNow(networkTimeSuggestion2.getUnixEpochTime()));
 
         // Check internal state.
         mScript.assertLatestTelephonySuggestion(ARBITRARY_SLOT_INDEX, telephonyTimeSuggestion)
@@ -774,7 +777,8 @@
         mScript.simulateTimePassing(smallTimeIncrementMillis)
                 .simulateGnssTimeSuggestion(gnssTimeSuggestion1)
                 .verifySystemClockWasSetAndResetCallTracking(
-                        mScript.calculateTimeInMillisForNow(gnssTimeSuggestion1.getUtcTime()));
+                        mScript.calculateTimeInMillisForNow(
+                                gnssTimeSuggestion1.getUnixEpochTime()));
 
         // Check internal state.
         mScript.assertLatestNetworkSuggestion(null)
@@ -793,7 +797,8 @@
         mScript.simulateTimePassing(smallTimeIncrementMillis)
                 .simulateNetworkTimeSuggestion(networkTimeSuggestion)
                 .verifySystemClockWasSetAndResetCallTracking(
-                        mScript.calculateTimeInMillisForNow(networkTimeSuggestion.getUtcTime()));
+                        mScript.calculateTimeInMillisForNow(
+                                networkTimeSuggestion.getUnixEpochTime()));
 
         // Check internal state.
         mScript.assertLatestNetworkSuggestion(networkTimeSuggestion)
@@ -803,7 +808,7 @@
 
         // Simulate some significant time passing: half the time allowed before a time signal
         // becomes "too old to use".
-        mScript.simulateTimePassing(TimeDetectorStrategyImpl.MAX_UTC_TIME_AGE_MILLIS / 2)
+        mScript.simulateTimePassing(TimeDetectorStrategyImpl.MAX_SUGGESTION_TIME_AGE_MILLIS / 2)
                 .verifySystemClockWasNotSetAndResetCallTracking();
 
         // Now another gnss suggestion is made. Network suggestions are prioritized over
@@ -823,7 +828,7 @@
         // Simulate some significant time passing: half the time allowed before a time signal
         // becomes "too old to use". This should mean that telephonyTimeSuggestion is now too old to
         // be used but networkTimeSuggestion2 is not.
-        mScript.simulateTimePassing(TimeDetectorStrategyImpl.MAX_UTC_TIME_AGE_MILLIS / 2);
+        mScript.simulateTimePassing(TimeDetectorStrategyImpl.MAX_SUGGESTION_TIME_AGE_MILLIS / 2);
 
         // NOTE: The TimeDetectorStrategyImpl doesn't set an alarm for the point when the last
         // suggestion it used becomes too old: it requires a new suggestion or an auto-time toggle
@@ -846,7 +851,7 @@
 
         // Verify the latest gnss time now wins.
         mScript.verifySystemClockWasSetAndResetCallTracking(
-                mScript.calculateTimeInMillisForNow(gnssTimeSuggestion2.getUtcTime()));
+                mScript.calculateTimeInMillisForNow(gnssTimeSuggestion2.getUnixEpochTime()));
 
         // Check internal state.
         mScript.assertLatestNetworkSuggestion(networkTimeSuggestion)
@@ -877,7 +882,8 @@
         mScript.simulateTimePassing(smallTimeIncrementMillis)
                 .simulateExternalTimeSuggestion(externalTimeSuggestion1)
                 .verifySystemClockWasSetAndResetCallTracking(
-                        mScript.calculateTimeInMillisForNow(externalTimeSuggestion1.getUtcTime()));
+                        mScript.calculateTimeInMillisForNow(
+                                externalTimeSuggestion1.getUnixEpochTime()));
 
         // Check internal state.
         mScript.assertLatestNetworkSuggestion(null)
@@ -896,7 +902,8 @@
         mScript.simulateTimePassing(smallTimeIncrementMillis)
                 .simulateNetworkTimeSuggestion(networkTimeSuggestion)
                 .verifySystemClockWasSetAndResetCallTracking(
-                        mScript.calculateTimeInMillisForNow(networkTimeSuggestion.getUtcTime()));
+                        mScript.calculateTimeInMillisForNow(
+                                networkTimeSuggestion.getUnixEpochTime()));
 
         // Check internal state.
         mScript.assertLatestNetworkSuggestion(networkTimeSuggestion)
@@ -906,7 +913,7 @@
 
         // Simulate some significant time passing: half the time allowed before a time signal
         // becomes "too old to use".
-        mScript.simulateTimePassing(TimeDetectorStrategyImpl.MAX_UTC_TIME_AGE_MILLIS / 2)
+        mScript.simulateTimePassing(TimeDetectorStrategyImpl.MAX_SUGGESTION_TIME_AGE_MILLIS / 2)
                 .verifySystemClockWasNotSetAndResetCallTracking();
 
         // Now another external suggestion is made. Network suggestions are prioritized over
@@ -926,7 +933,7 @@
         // Simulate some significant time passing: half the time allowed before a time signal
         // becomes "too old to use". This should mean that networkTimeSuggestion is now too old to
         // be used but externalTimeSuggestion2 is not.
-        mScript.simulateTimePassing(TimeDetectorStrategyImpl.MAX_UTC_TIME_AGE_MILLIS / 2);
+        mScript.simulateTimePassing(TimeDetectorStrategyImpl.MAX_SUGGESTION_TIME_AGE_MILLIS / 2);
 
         // NOTE: The TimeDetectorStrategyImpl doesn't set an alarm for the point when the last
         // suggestion it used becomes too old: it requires a new suggestion or an auto-time toggle
@@ -949,7 +956,7 @@
 
         // Verify the latest external time now wins.
         mScript.verifySystemClockWasSetAndResetCallTracking(
-                mScript.calculateTimeInMillisForNow(externalTimeSuggestion2.getUtcTime()));
+                mScript.calculateTimeInMillisForNow(externalTimeSuggestion2.getUnixEpochTime()));
 
         // Check internal state.
         mScript.assertLatestNetworkSuggestion(networkTimeSuggestion)
@@ -1438,11 +1445,11 @@
          * reference time.
          */
         ManualTimeSuggestion generateManualTimeSuggestion(Instant suggestedTime) {
-            TimestampedValue<Long> utcTime =
+            TimestampedValue<Long> unixEpochTime =
                     new TimestampedValue<>(
                             mFakeEnvironment.peekElapsedRealtimeMillis(),
                             suggestedTime.toEpochMilli());
-            return new ManualTimeSuggestion(utcTime);
+            return new ManualTimeSuggestion(unixEpochTime);
         }
 
         /**
@@ -1472,11 +1479,11 @@
          * reference time.
          */
         NetworkTimeSuggestion generateNetworkTimeSuggestion(Instant suggestedTime) {
-            TimestampedValue<Long> utcTime =
+            TimestampedValue<Long> unixEpochTime =
                     new TimestampedValue<>(
                             mFakeEnvironment.peekElapsedRealtimeMillis(),
                             suggestedTime.toEpochMilli());
-            return new NetworkTimeSuggestion(utcTime);
+            return new NetworkTimeSuggestion(unixEpochTime);
         }
 
         /**
@@ -1484,11 +1491,11 @@
          * reference time.
          */
         GnssTimeSuggestion generateGnssTimeSuggestion(Instant suggestedTime) {
-            TimestampedValue<Long> utcTime =
+            TimestampedValue<Long> unixEpochTime =
                     new TimestampedValue<>(
                             mFakeEnvironment.peekElapsedRealtimeMillis(),
                             suggestedTime.toEpochMilli());
-            return new GnssTimeSuggestion(utcTime);
+            return new GnssTimeSuggestion(unixEpochTime);
         }
 
         /**
@@ -1504,19 +1511,19 @@
          * Calculates what the supplied time would be when adjusted for the movement of the fake
          * elapsed realtime clock.
          */
-        long calculateTimeInMillisForNow(TimestampedValue<Long> utcTime) {
-            return TimeDetectorStrategy.getTimeAt(utcTime, peekElapsedRealtimeMillis());
+        long calculateTimeInMillisForNow(TimestampedValue<Long> unixEpochTime) {
+            return TimeDetectorStrategy.getTimeAt(unixEpochTime, peekElapsedRealtimeMillis());
         }
     }
 
     private static TelephonyTimeSuggestion createTelephonyTimeSuggestion(int slotIndex,
-            TimestampedValue<Long> utcTime) {
+            TimestampedValue<Long> unixEpochTime) {
         return new TelephonyTimeSuggestion.Builder(slotIndex)
-                .setUtcTime(utcTime)
+                .setUnixEpochTime(unixEpochTime)
                 .build();
     }
 
-    private static Instant createUtcTime(int year, int monthInYear, int day, int hourOfDay,
+    private static Instant createUnixEpochTime(int year, int monthInYear, int day, int hourOfDay,
             int minute, int second) {
         return LocalDateTime.of(year, monthInYear, day, hourOfDay, minute, second)
                 .toInstant(ZoneOffset.UTC);
diff --git a/services/tests/uiservicestests/src/com/android/server/notification/PermissionHelperTest.java b/services/tests/uiservicestests/src/com/android/server/notification/PermissionHelperTest.java
index b71323b4..a24ba0d 100644
--- a/services/tests/uiservicestests/src/com/android/server/notification/PermissionHelperTest.java
+++ b/services/tests/uiservicestests/src/com/android/server/notification/PermissionHelperTest.java
@@ -221,6 +221,8 @@
 
     @Test
     public void testSetNotificationPermission_grantUserSet() throws Exception {
+        when(mPmi.checkPermission(anyString(), anyString(), anyInt()))
+                .thenReturn(PERMISSION_DENIED);
         mPermissionHelper.setNotificationPermission("pkg", 10, true, true);
 
         verify(mPermManager).grantRuntimePermission(
@@ -232,9 +234,12 @@
 
     @Test
     public void testSetNotificationPermission_grantReviewRequired() throws Exception {
+        when(mPmi.checkPermission(anyString(), anyString(), anyInt()))
+                .thenReturn(PERMISSION_DENIED);
+
         mPermissionHelper.setNotificationPermission("pkg", 10, true, false, true);
 
-        verify(mPermManager).revokeRuntimePermission(
+        verify(mPermManager, never()).revokeRuntimePermission(
                 "pkg", Manifest.permission.POST_NOTIFICATIONS, 10, "PermissionHelper");
         verify(mPermManager).updatePermissionFlags("pkg", Manifest.permission.POST_NOTIFICATIONS,
                 FLAG_PERMISSION_REVIEW_REQUIRED, FLAG_PERMISSION_REVIEW_REQUIRED, true, 10);
@@ -242,11 +247,14 @@
 
     @Test
     public void testSetNotificationPermission_pkgPerm_grantReviewRequired() throws Exception {
+        when(mPmi.checkPermission(anyString(), anyString(), anyInt()))
+                .thenReturn(PERMISSION_DENIED);
+
         PermissionHelper.PackagePermission pkgPerm = new PermissionHelper.PackagePermission(
                 "pkg", 10, true, false);
         mPermissionHelper.setNotificationPermission(pkgPerm);
 
-        verify(mPermManager).revokeRuntimePermission(
+        verify(mPermManager, never()).revokeRuntimePermission(
                 "pkg", Manifest.permission.POST_NOTIFICATIONS, 10, "PermissionHelper");
         verify(mPermManager).updatePermissionFlags("pkg", Manifest.permission.POST_NOTIFICATIONS,
                 FLAG_PERMISSION_REVIEW_REQUIRED, FLAG_PERMISSION_REVIEW_REQUIRED, true, 10);
@@ -255,6 +263,8 @@
     @Test
     public void testSetNotificationPermission_pkgPerm_notUserSet_grantedByDefaultPermNotSet()
             throws Exception {
+        when(mPmi.checkPermission(anyString(), anyString(), anyInt()))
+                .thenReturn(PERMISSION_DENIED);
         when(mPermManager.getPermissionFlags(anyString(),
                 eq(Manifest.permission.POST_NOTIFICATIONS),
                 anyInt())).thenReturn(FLAG_PERMISSION_GRANTED_BY_DEFAULT);
@@ -271,6 +281,8 @@
     @Test
     public void testSetNotificationPermission_pkgPerm_userSet_grantedByDefaultPermSet()
             throws Exception {
+        when(mPmi.checkPermission(anyString(), anyString(), anyInt()))
+                .thenReturn(PERMISSION_DENIED);
         when(mPermManager.getPermissionFlags(anyString(),
                 eq(Manifest.permission.POST_NOTIFICATIONS),
                 anyInt())).thenReturn(FLAG_PERMISSION_GRANTED_BY_DEFAULT);
@@ -287,6 +299,9 @@
 
     @Test
     public void testSetNotificationPermission_revokeUserSet() throws Exception {
+        when(mPmi.checkPermission(anyString(), anyString(), anyInt()))
+                .thenReturn(PERMISSION_GRANTED);
+
         mPermissionHelper.setNotificationPermission("pkg", 10, false, true);
 
         verify(mPermManager).revokeRuntimePermission(
@@ -298,6 +313,9 @@
 
     @Test
     public void testSetNotificationPermission_grantNotUserSet() throws Exception {
+        when(mPmi.checkPermission(anyString(), anyString(), anyInt()))
+                .thenReturn(PERMISSION_DENIED);
+
         mPermissionHelper.setNotificationPermission("pkg", 10, true, false);
 
         verify(mPermManager).grantRuntimePermission(
@@ -308,6 +326,9 @@
 
     @Test
     public void testSetNotificationPermission_revokeNotUserSet() throws Exception {
+        when(mPmi.checkPermission(anyString(), anyString(), anyInt()))
+                .thenReturn(PERMISSION_GRANTED);
+
         mPermissionHelper.setNotificationPermission("pkg", 10, false, false);
 
         verify(mPermManager).revokeRuntimePermission(
@@ -343,6 +364,26 @@
     }
 
     @Test
+    public void testSetNotificationPermission_alreadyGrantedNotRegranted() throws Exception {
+        when(mPmi.checkPermission(anyString(), anyString(), anyInt()))
+                .thenReturn(PERMISSION_GRANTED);
+        mPermissionHelper.setNotificationPermission("pkg", 10, true, false);
+
+        verify(mPermManager, never()).grantRuntimePermission(
+                "pkg", Manifest.permission.POST_NOTIFICATIONS, 10);
+    }
+
+    @Test
+    public void testSetNotificationPermission_alreadyRevokedNotRerevoked() throws Exception {
+        when(mPmi.checkPermission(anyString(), anyString(), anyInt()))
+                .thenReturn(PERMISSION_DENIED);
+        mPermissionHelper.setNotificationPermission("pkg", 10, false, false);
+
+        verify(mPermManager, never()).revokeRuntimePermission(
+                eq("pkg"), eq(Manifest.permission.POST_NOTIFICATIONS), eq(10), anyString());
+    }
+
+    @Test
     public void testIsPermissionFixed() throws Exception {
         when(mPermManager.getPermissionFlags(anyString(),
                 eq(Manifest.permission.POST_NOTIFICATIONS),
diff --git a/services/tests/uiservicestests/src/com/android/server/notification/ValidateNotificationPeopleTest.java b/services/tests/uiservicestests/src/com/android/server/notification/ValidateNotificationPeopleTest.java
index 0552a83..c12f0a9 100644
--- a/services/tests/uiservicestests/src/com/android/server/notification/ValidateNotificationPeopleTest.java
+++ b/services/tests/uiservicestests/src/com/android/server/notification/ValidateNotificationPeopleTest.java
@@ -274,7 +274,7 @@
         new ValidateNotificationPeople().searchContactsAndLookupNumbers(mockContext, lookupUri);
         verify(mockContentResolver, never()).query(
                 eq(ContactsContract.CommonDataKinds.Phone.CONTENT_URI),
-                eq(new String[] { ContactsContract.CommonDataKinds.Phone.NORMALIZED_NUMBER }),
+                eq(ValidateNotificationPeople.PHONE_LOOKUP_PROJECTION),
                 contains(ContactsContract.Contacts.LOOKUP_KEY),
                 any(),  // selection args
                 isNull());  // sort order
@@ -308,7 +308,7 @@
         // in the case of a phone lookup, return null cursor; that's not an error case
         // and we're not checking the actual storing of the phone data here.
         when(mockContentResolver.query(eq(ContactsContract.CommonDataKinds.Phone.CONTENT_URI),
-                eq(new String[] { ContactsContract.CommonDataKinds.Phone.NORMALIZED_NUMBER }),
+                eq(ValidateNotificationPeople.PHONE_LOOKUP_PROJECTION),
                 contains(ContactsContract.Contacts.LOOKUP_KEY),
                 any(), isNull())).thenReturn(null);
 
@@ -317,7 +317,7 @@
         new ValidateNotificationPeople().searchContactsAndLookupNumbers(mockContext, lookupUri);
         verify(mockContentResolver, times(1)).query(
                 eq(ContactsContract.CommonDataKinds.Phone.CONTENT_URI),
-                eq(new String[] { ContactsContract.CommonDataKinds.Phone.NORMALIZED_NUMBER }),
+                eq(ValidateNotificationPeople.PHONE_LOOKUP_PROJECTION),
                 contains(ContactsContract.Contacts.LOOKUP_KEY),
                 eq(new String[] { "testlookupkey" }),  // selection args
                 isNull());  // sort order
diff --git a/services/tests/wmtests/src/com/android/server/wm/BackNavigationControllerTests.java b/services/tests/wmtests/src/com/android/server/wm/BackNavigationControllerTests.java
index fb3a626..3d89805 100644
--- a/services/tests/wmtests/src/com/android/server/wm/BackNavigationControllerTests.java
+++ b/services/tests/wmtests/src/com/android/server/wm/BackNavigationControllerTests.java
@@ -97,7 +97,7 @@
         BackNavigationInfo backNavigationInfo =
                 mBackNavigationController.startBackNavigation(task, new StubTransaction());
         assertThat(backNavigationInfo).isNotNull();
-        assertThat(backNavigationInfo.getDepartingWindowContainer()).isNotNull();
+        assertThat(backNavigationInfo.getDepartingAnimationTarget()).isNotNull();
         assertThat(backNavigationInfo.getScreenshotSurface()).isNotNull();
         assertThat(backNavigationInfo.getScreenshotHardwareBuffer()).isNotNull();
         assertThat(backNavigationInfo.getTaskWindowConfiguration()).isNotNull();
diff --git a/services/tests/wmtests/src/com/android/server/wm/WindowManagerServiceTests.java b/services/tests/wmtests/src/com/android/server/wm/WindowManagerServiceTests.java
index 2dfc72b..68e90e1 100644
--- a/services/tests/wmtests/src/com/android/server/wm/WindowManagerServiceTests.java
+++ b/services/tests/wmtests/src/com/android/server/wm/WindowManagerServiceTests.java
@@ -46,6 +46,7 @@
 import static org.mockito.ArgumentMatchers.eq;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
 
 import android.content.pm.PackageManager;
 import android.os.Binder;
@@ -284,4 +285,32 @@
         verify(mWm.mWindowContextListenerController, never()).registerWindowContainerListener(any(),
                 any(), anyInt(), anyInt(), any());
     }
+
+    @Test
+    public void testSetInTouchMode_instrumentedProcessGetPermissionToSwitchTouchMode() {
+        boolean currentTouchMode = mWm.getInTouchMode();
+        int callingPid = Binder.getCallingPid();
+        int callingUid = Binder.getCallingUid();
+        doReturn(false).when(mWm).checkCallingPermission(anyString(), anyString());
+        when(mWm.mAtmService.isInstrumenting(callingPid)).thenReturn(true);
+
+        mWm.setInTouchMode(!currentTouchMode);
+
+        verify(mWm.mInputManager).setInTouchMode(
+                !currentTouchMode, callingPid, callingUid, /* hasPermission= */ true);
+    }
+
+    @Test
+    public void testSetInTouchMode_nonInstrumentedProcessDontGetPermissionToSwitchTouchMode() {
+        boolean currentTouchMode = mWm.getInTouchMode();
+        int callingPid = Binder.getCallingPid();
+        int callingUid = Binder.getCallingUid();
+        doReturn(false).when(mWm).checkCallingPermission(anyString(), anyString());
+        when(mWm.mAtmService.isInstrumenting(callingPid)).thenReturn(false);
+
+        mWm.setInTouchMode(!currentTouchMode);
+
+        verify(mWm.mInputManager).setInTouchMode(
+                !currentTouchMode, callingPid, callingUid, /* hasPermission= */ false);
+    }
 }
diff --git a/services/translation/java/com/android/server/translation/TranslationManagerServiceImpl.java b/services/translation/java/com/android/server/translation/TranslationManagerServiceImpl.java
index 9f4fee8..364d592 100644
--- a/services/translation/java/com/android/server/translation/TranslationManagerServiceImpl.java
+++ b/services/translation/java/com/android/server/translation/TranslationManagerServiceImpl.java
@@ -24,6 +24,7 @@
 
 import android.annotation.NonNull;
 import android.annotation.Nullable;
+import android.app.Activity;
 import android.content.ComponentName;
 import android.content.Context;
 import android.content.pm.PackageManager;
@@ -43,6 +44,7 @@
 import android.view.translation.TranslationCapability;
 import android.view.translation.TranslationContext;
 import android.view.translation.TranslationSpec;
+import android.view.translation.UiTranslationController;
 import android.view.translation.UiTranslationManager.UiTranslationState;
 import android.view.translation.UiTranslationSpec;
 
@@ -253,7 +255,10 @@
             try (TransferPipe tp = new TransferPipe()) {
                 activityTokens.getApplicationThread().dumpActivity(tp.getWriteFd(),
                         activityTokens.getActivityToken(), prefix,
-                        new String[]{"--translation"});
+                        new String[] {
+                                Activity.DUMP_ARG_DUMP_DUMPABLE,
+                                UiTranslationController.DUMPABLE_NAME
+                        });
                 tp.go(fd);
             } catch (IOException e) {
                 pw.println(prefix + "Failure while dumping the activity: " + e);
diff --git a/telephony/java/android/telephony/ServiceState.java b/telephony/java/android/telephony/ServiceState.java
index 70da9b9..65f5632 100644
--- a/telephony/java/android/telephony/ServiceState.java
+++ b/telephony/java/android/telephony/ServiceState.java
@@ -19,6 +19,7 @@
 import android.annotation.IntDef;
 import android.annotation.NonNull;
 import android.annotation.Nullable;
+import android.annotation.RequiresPermission;
 import android.annotation.SystemApi;
 import android.annotation.TestApi;
 import android.compat.annotation.UnsupportedAppUsage;
@@ -767,6 +768,10 @@
      *
      * @return long name of operator, null if unregistered or unknown
      */
+    @RequiresPermission(anyOf = {
+            android.Manifest.permission.ACCESS_FINE_LOCATION,
+            android.Manifest.permission.ACCESS_COARSE_LOCATION
+    })
     public String getOperatorAlphaLong() {
         return mOperatorAlphaLong;
     }
@@ -782,6 +787,10 @@
      * @return long name of operator
      * @hide
      */
+    @RequiresPermission(anyOf = {
+            android.Manifest.permission.ACCESS_FINE_LOCATION,
+            android.Manifest.permission.ACCESS_COARSE_LOCATION
+    })
     @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.Q,
             publicAlternatives = "Use {@link #getOperatorAlphaLong} instead.")
     public String getVoiceOperatorAlphaLong() {
@@ -800,6 +809,10 @@
      *
      * @return short name of operator, null if unregistered or unknown
      */
+    @RequiresPermission(anyOf = {
+            android.Manifest.permission.ACCESS_FINE_LOCATION,
+            android.Manifest.permission.ACCESS_COARSE_LOCATION
+    })
     public String getOperatorAlphaShort() {
         return mOperatorAlphaShort;
     }
@@ -815,6 +828,10 @@
      * @return short name of operator, null if unregistered or unknown
      * @hide
      */
+    @RequiresPermission(anyOf = {
+            android.Manifest.permission.ACCESS_FINE_LOCATION,
+            android.Manifest.permission.ACCESS_COARSE_LOCATION
+    })
     @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.Q,
             publicAlternatives = "Use {@link #getOperatorAlphaShort} instead.")
     public String getVoiceOperatorAlphaShort() {
@@ -832,6 +849,10 @@
      * @return short name of operator, null if unregistered or unknown
      * @hide
      */
+    @RequiresPermission(anyOf = {
+            android.Manifest.permission.ACCESS_FINE_LOCATION,
+            android.Manifest.permission.ACCESS_COARSE_LOCATION
+    })
     @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.Q,
             publicAlternatives = "Use {@link #getOperatorAlphaShort} instead.")
     public String getDataOperatorAlphaShort() {
@@ -853,6 +874,10 @@
      * @return name of operator, null if unregistered or unknown
      * @hide
      */
+    @RequiresPermission(anyOf = {
+            android.Manifest.permission.ACCESS_FINE_LOCATION,
+            android.Manifest.permission.ACCESS_COARSE_LOCATION
+    })
     public String getOperatorAlpha() {
         if (TextUtils.isEmpty(mOperatorAlphaLong)) {
             return mOperatorAlphaShort;
@@ -878,6 +903,10 @@
      * The country code can be decoded using
      * {@link com.android.internal.telephony.MccTable#countryCodeForMcc(int)}.
      */
+    @RequiresPermission(anyOf = {
+            android.Manifest.permission.ACCESS_FINE_LOCATION,
+            android.Manifest.permission.ACCESS_COARSE_LOCATION
+    })
     public String getOperatorNumeric() {
         return mOperatorNumeric;
     }
@@ -893,6 +922,10 @@
      * @return numeric format of operator, null if unregistered or unknown
      * @hide
      */
+    @RequiresPermission(anyOf = {
+            android.Manifest.permission.ACCESS_FINE_LOCATION,
+            android.Manifest.permission.ACCESS_COARSE_LOCATION
+    })
     @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.P)
     public String getVoiceOperatorNumeric() {
         return mOperatorNumeric;
@@ -909,6 +942,10 @@
      * @return numeric format of operator, null if unregistered or unknown
      * @hide
      */
+    @RequiresPermission(anyOf = {
+            android.Manifest.permission.ACCESS_FINE_LOCATION,
+            android.Manifest.permission.ACCESS_COARSE_LOCATION
+    })
     @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.Q,
             publicAlternatives = "Use {@link #getOperatorNumeric} instead.")
     public String getDataOperatorNumeric() {
@@ -1747,8 +1784,17 @@
     /**
      * Get the CDMA NID (Network Identification Number), a number uniquely identifying a network
      * within a wireless system. (Defined in 3GPP2 C.S0023 3.4.8)
+     *
+     * <p>Require at least {@link android.Manifest.permission#ACCESS_FINE_LOCATION} or
+     * {@link android.Manifest.permission#ACCESS_COARSE_LOCATION}. Otherwise return
+     * {@link #UNKNOWN_ID}.
+     *
      * @return The CDMA NID or {@link #UNKNOWN_ID} if not available.
      */
+    @RequiresPermission(anyOf = {
+            android.Manifest.permission.ACCESS_FINE_LOCATION,
+            android.Manifest.permission.ACCESS_COARSE_LOCATION
+    })
     public int getCdmaNetworkId() {
         return this.mNetworkId;
     }
@@ -1756,8 +1802,17 @@
     /**
      * Get the CDMA SID (System Identification Number), a number uniquely identifying a wireless
      * system. (Defined in 3GPP2 C.S0023 3.4.8)
+     *
+     * <p>Require at least {@link android.Manifest.permission#ACCESS_FINE_LOCATION} or
+     * {@link android.Manifest.permission#ACCESS_COARSE_LOCATION}. Otherwise return
+     * {@link #UNKNOWN_ID}.
+     *
      * @return The CDMA SID or {@link #UNKNOWN_ID} if not available.
      */
+    @RequiresPermission(anyOf = {
+            android.Manifest.permission.ACCESS_FINE_LOCATION,
+            android.Manifest.permission.ACCESS_COARSE_LOCATION
+    })
     public int getCdmaSystemId() {
         return this.mSystemId;
     }
@@ -2058,6 +2113,8 @@
         state.mOperatorAlphaLong = null;
         state.mOperatorAlphaShort = null;
         state.mOperatorNumeric = null;
+        state.mSystemId = UNKNOWN_ID;
+        state.mNetworkId = UNKNOWN_ID;
 
         return state;
     }