diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index 66d5767..e98eed4 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -67,8 +67,9 @@
     <application
         android:name="com.android.contacts.ContactsApplication"
         android:hardwareAccelerated="true"
-        android:icon="@mipmap/ic_contacts_launcher"
+        android:icon="@mipmap/ic_launcher"
         android:label="@string/applicationLabel"
+        android:appCategory="social"
         android:supportsRtl="true"
         android:taskAffinity="android.task.contacts"
         android:usesCleartextTraffic="false">
diff --git a/res/drawable-hdpi/product_logo_contacts_color_144.png b/res/drawable-hdpi/product_logo_contacts_color_144.png
index 293a85e..0a10e41 100644
--- a/res/drawable-hdpi/product_logo_contacts_color_144.png
+++ b/res/drawable-hdpi/product_logo_contacts_color_144.png
Binary files differ
diff --git a/res/drawable-hdpi/product_logo_contacts_color_192.png b/res/drawable-hdpi/product_logo_contacts_color_192.png
index 04a5a10..eb9744c 100644
--- a/res/drawable-hdpi/product_logo_contacts_color_192.png
+++ b/res/drawable-hdpi/product_logo_contacts_color_192.png
Binary files differ
diff --git a/res/drawable-mdpi/product_logo_contacts_color_144.png b/res/drawable-mdpi/product_logo_contacts_color_144.png
index 27c571e..bdbdc7f 100644
--- a/res/drawable-mdpi/product_logo_contacts_color_144.png
+++ b/res/drawable-mdpi/product_logo_contacts_color_144.png
Binary files differ
diff --git a/res/drawable-mdpi/product_logo_contacts_color_192.png b/res/drawable-mdpi/product_logo_contacts_color_192.png
index 6e79412..26980ae 100644
--- a/res/drawable-mdpi/product_logo_contacts_color_192.png
+++ b/res/drawable-mdpi/product_logo_contacts_color_192.png
Binary files differ
diff --git a/res/drawable-night/quantum_launchscreen_contacts.xml b/res/drawable-night/quantum_launchscreen_contacts.xml
new file mode 100644
index 0000000..14aaaf0
--- /dev/null
+++ b/res/drawable-night/quantum_launchscreen_contacts.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Copyright (C) 2017 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+
+<layer-list xmlns:android="http://schemas.android.com/apk/res/android"
+    android:opacity="opaque">
+  <item android:drawable="@android:color/system_neutral1_900" />
+  <item
+      android:id="@+id/launchscreens_product_logo"
+      android:bottom="@dimen/launchscreens_product_logo_bottom">
+    <bitmap
+        android:gravity="center"
+        android:src="@drawable/product_logo_contacts_color_144" />
+  </item>
+</layer-list>
diff --git a/res/drawable-sw600dp-night/quantum_launchscreen_contacts.xml b/res/drawable-sw600dp-night/quantum_launchscreen_contacts.xml
new file mode 100644
index 0000000..16ac0d7
--- /dev/null
+++ b/res/drawable-sw600dp-night/quantum_launchscreen_contacts.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Copyright (C) 2017 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+
+<layer-list xmlns:android="http://schemas.android.com/apk/res/android"
+    android:opacity="opaque">
+    <item android:drawable="@color/background_material_dark" />
+    <item
+        android:id="@+id/launchscreens_product_logo"
+        android:bottom="@dimen/launchscreens_product_logo_bottom">
+        <bitmap
+            android:gravity="center"
+            android:src="@drawable/product_logo_contacts_color_192" />
+    </item>
+</layer-list>
diff --git a/res/drawable-xhdpi/product_logo_contacts_color_144.png b/res/drawable-xhdpi/product_logo_contacts_color_144.png
index 04a5a10..eb9744c 100644
--- a/res/drawable-xhdpi/product_logo_contacts_color_144.png
+++ b/res/drawable-xhdpi/product_logo_contacts_color_144.png
Binary files differ
diff --git a/res/drawable-xhdpi/product_logo_contacts_color_192.png b/res/drawable-xhdpi/product_logo_contacts_color_192.png
index 35d80e4..f4e2fe6 100644
--- a/res/drawable-xhdpi/product_logo_contacts_color_192.png
+++ b/res/drawable-xhdpi/product_logo_contacts_color_192.png
Binary files differ
diff --git a/res/drawable-xxhdpi/product_logo_contacts_color_144.png b/res/drawable-xxhdpi/product_logo_contacts_color_144.png
index 12c582b..7f215c3 100644
--- a/res/drawable-xxhdpi/product_logo_contacts_color_144.png
+++ b/res/drawable-xxhdpi/product_logo_contacts_color_144.png
Binary files differ
diff --git a/res/drawable-xxhdpi/product_logo_contacts_color_192.png b/res/drawable-xxhdpi/product_logo_contacts_color_192.png
index baa0003..56150d5 100644
--- a/res/drawable-xxhdpi/product_logo_contacts_color_192.png
+++ b/res/drawable-xxhdpi/product_logo_contacts_color_192.png
Binary files differ
diff --git a/res/drawable-xxxhdpi/product_logo_contacts_color_144.png b/res/drawable-xxxhdpi/product_logo_contacts_color_144.png
index baa0003..8cced06 100644
--- a/res/drawable-xxxhdpi/product_logo_contacts_color_144.png
+++ b/res/drawable-xxxhdpi/product_logo_contacts_color_144.png
Binary files differ
diff --git a/res/drawable-xxxhdpi/product_logo_contacts_color_192.png b/res/drawable-xxxhdpi/product_logo_contacts_color_192.png
index f1a62e6..df9c41e 100644
--- a/res/drawable-xxxhdpi/product_logo_contacts_color_192.png
+++ b/res/drawable-xxxhdpi/product_logo_contacts_color_192.png
Binary files differ
diff --git a/res/drawable/dialog_background.xml b/res/drawable/dialog_background.xml
new file mode 100644
index 0000000..119b08b
--- /dev/null
+++ b/res/drawable/dialog_background.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+
+<!--
+  ~ Copyright (C) 2014 The Android Open Source Project
+  ~
+  ~ Licensed under the Apache License, Version 2.0 (the "License");
+  ~ you may not use this file except in compliance with the License.
+  ~ You may obtain a copy of the License at
+  ~
+  ~      http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License
+  -->
+<shape xmlns:android="http://schemas.android.com/apk/res/android"
+    android:shape="rectangle">
+    <solid android:color="?android:attr/colorBackgroundFloating"/>
+    <corners android:radius="16dp"/>
+</shape>
diff --git a/res/drawable/fab_bg.xml b/res/drawable/fab_bg.xml
new file mode 100644
index 0000000..a652678
--- /dev/null
+++ b/res/drawable/fab_bg.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  SPDX-FileCopyrightText: The LineageOS Project
+  SPDX-License-Identifier: Apache-2.0
+-->
+<shape xmlns:android="http://schemas.android.com/apk/res/android"
+    android:shape="oval">
+    <solid android:color="@color/fab_color"/>
+</shape>
diff --git a/res/drawable/ic_monochrome.xml b/res/drawable/ic_monochrome.xml
new file mode 100644
index 0000000..808ac99
--- /dev/null
+++ b/res/drawable/ic_monochrome.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<vector android:height="108.0dip" android:width="108.0dip" android:viewportWidth="108.0" android:viewportHeight="108.0"
+  xmlns:android="http://schemas.android.com/apk/res/android">
+    <path android:fillColor="#ff000000" android:pathData="M35.598,72.402C36.774,73.578 38.203,74.167 39.883,74.167H68.117C69.797,74.167 71.226,73.578 72.402,72.402C73.578,71.226 74.167,69.797 74.167,68.117V65.218C74.167,63.621 73.558,62.141 72.339,60.776C71.121,59.41 69.545,58.222 67.613,57.214C65.68,56.206 63.495,55.417 61.058,54.849C58.621,54.283 56.185,54 53.748,54C51.311,54 48.906,54.283 46.533,54.849C44.159,55.417 42.026,56.195 40.135,57.181C38.245,58.169 36.722,59.346 35.568,60.71C34.411,62.077 33.833,63.558 33.833,65.155V68.117C33.833,69.797 34.422,71.226 35.598,72.402Z" />
+    <path android:fillColor="#ff000000" android:pathData="M47.417,48.895C49.14,50.618 51.22,51.479 53.656,51.479C56.093,51.479 58.173,50.618 59.895,48.895C61.618,47.173 62.479,45.093 62.479,42.656C62.479,40.219 61.628,38.14 59.926,36.417C58.225,34.694 56.135,33.833 53.656,33.833C51.22,33.833 49.14,34.694 47.417,36.417C45.695,38.14 44.833,40.219 44.833,42.656C44.833,45.093 45.695,47.173 47.417,48.895Z" />
+</vector>
diff --git a/res/drawable/quantum_ic_drawer_emergency_info_24.xml b/res/drawable/quantum_ic_drawer_emergency_info_24.xml
new file mode 100644
index 0000000..6b6a143
--- /dev/null
+++ b/res/drawable/quantum_ic_drawer_emergency_info_24.xml
@@ -0,0 +1,10 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+        android:width="24dp"
+        android:height="24dp"
+        android:viewportWidth="24.0"
+        android:viewportHeight="24.0"
+        android:tint="?attr/colorControlNormal">
+    <path
+        android:pathData="M9.6,2v5.6l-5,-3L2,9l5,3l-5,3l2.3,4l5.3,-2.7v5.6h4.6v-5.6l5.3,2.7l2.3,-4l-5.6,-2.7L21.9,9l-2.3,-4l-5.3,3V2H9.6z"
+        android:fillColor="#FFFFFF"/>
+</vector>
diff --git a/res/drawable/quantum_ic_drawer_my_info_32.xml b/res/drawable/quantum_ic_drawer_my_info_32.xml
new file mode 100644
index 0000000..4e310cb
--- /dev/null
+++ b/res/drawable/quantum_ic_drawer_my_info_32.xml
@@ -0,0 +1,19 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+        android:width="32dp"
+        android:height="32dp"
+        android:viewportWidth="32.0"
+        android:viewportHeight="32.0">
+    <path
+        android:pathData="M15.8,1C7.5,1 0.9,7.7 1,16c0.1,8.3 6.9,15 15.2,15S31.1,24.3 31,16C30.9,7.7 24.1,1 15.8,1z"
+        android:fillColor="#4185F3"/>
+    <path
+        android:pathData="M16,12.3m-3.8,0a3.8,3.8 0,1 1,7.6 0a3.8,3.8 0,1 1,-7.6 0"
+        android:fillAlpha="0.2"
+        android:fillColor="#FFFFFF"
+        android:strokeAlpha="0.2"/>
+    <path
+        android:pathData="M23.5,23.5h-15v-1.9c0,-2.5 5,-3.8 7.5,-3.8s7.5,1.3 7.5,3.8V23.5z"
+        android:fillAlpha="0.2"
+        android:fillColor="#FFFFFF"
+        android:strokeAlpha="0.2"/>
+</vector>
diff --git a/res/drawable/quantum_launchscreen_contacts.xml b/res/drawable/quantum_launchscreen_contacts.xml
index 276b2da..4cb718c 100755
--- a/res/drawable/quantum_launchscreen_contacts.xml
+++ b/res/drawable/quantum_launchscreen_contacts.xml
@@ -16,7 +16,7 @@
 
 <layer-list xmlns:android="http://schemas.android.com/apk/res/android"
     android:opacity="opaque">
-  <item android:drawable="@android:color/white" />
+  <item android:drawable="@android:color/system_neutral1_0" />
   <item
       android:id="@+id/launchscreens_product_logo"
       android:bottom="@dimen/launchscreens_product_logo_bottom">
diff --git a/res/layout/contact_list_content.xml b/res/layout/contact_list_content.xml
index 901e04c..f728d36 100644
--- a/res/layout/contact_list_content.xml
+++ b/res/layout/contact_list_content.xml
@@ -89,6 +89,7 @@
                 android:paddingTop="?attr/list_item_padding_top"
                 android:clipToPadding="false"
                 android:fastScrollEnabled="true"
+                android:forceDarkAllowed="false"
 		android:visibility="gone"
                 android:fadingEdge="none" />
         </androidx.swiperefreshlayout.widget.SwipeRefreshLayout>
diff --git a/res/layout/contact_picker_content.xml b/res/layout/contact_picker_content.xml
index 382121a..6bc7419 100644
--- a/res/layout/contact_picker_content.xml
+++ b/res/layout/contact_picker_content.xml
@@ -31,7 +31,8 @@
         android:layout_marginEnd="?attr/contact_browser_list_padding_right"
         android:paddingTop="@dimen/contact_browser_list_item_padding_top_or_bottom"
         android:clipToPadding="false"
-        android:fastScrollEnabled="true"/>
+        android:fastScrollEnabled="true"
+        android:forceDarkAllowed="false"/>
 
     <TextView android:id="@android:id/empty"
               android:layout_width="wrap_content"
diff --git a/res/layout/drawer_secondline_item.xml b/res/layout/drawer_secondline_item.xml
new file mode 100644
index 0000000..4749940
--- /dev/null
+++ b/res/layout/drawer_secondline_item.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="utf-8"?>
+
+<LinearLayout
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    style="@style/DrawerItemStyle">
+
+    <ImageView
+        android:id="@+id/icon"
+        style="@style/DrawerItemIconStyle"/>
+
+    <LinearLayout
+        android:id="@+id/secondline_container"
+        android:layout_width="0dp"
+        android:layout_height="wrap_content"
+        android:layout_weight="1"
+        android:layout_gravity="center_vertical"
+        android:orientation="vertical">
+
+        <TextView
+            android:id="@+id/title"
+            android:textAlignment="viewStart"
+            style="@style/DrawerSecondLineTitleTextStyle" />
+
+        <TextView
+            android:id="@+id/summary"
+            android:textAlignment="viewStart"
+            style="@style/DrawerSecondLineSummaryTextStyle" />
+
+    </LinearLayout>
+
+</LinearLayout>
diff --git a/res/layout/floating_action_button.xml b/res/layout/floating_action_button.xml
index a31512f..9f954b2 100644
--- a/res/layout/floating_action_button.xml
+++ b/res/layout/floating_action_button.xml
@@ -26,7 +26,7 @@
     android:layout_gravity="bottom|end"
     android:layout_marginBottom="@dimen/floating_action_button_margin_bottom"
     android:layout_marginEnd="@dimen/floating_action_button_margin_right"
-    android:background="@drawable/fab_pink"
+    android:background="@drawable/fab_bg"
     android:elevation="@dimen/design_fab_elevation"
     app:layout_dodgeInsetEdges="bottom" >
 
@@ -37,5 +37,5 @@
         android:background="@drawable/floating_action_button"
         android:contentDescription="@string/action_menu_add_new_contact_button"
         android:src="@drawable/quantum_ic_add_vd_theme_24"
-        android:tint="@color/floating_action_button_icon_color"/>
-</FrameLayout>
\ No newline at end of file
+        app:tint="@color/floating_action_button_icon_color" />
+</FrameLayout>
diff --git a/res/layout/join_contact_picker_list_content.xml b/res/layout/join_contact_picker_list_content.xml
index 04b0556..2313de7 100644
--- a/res/layout/join_contact_picker_list_content.xml
+++ b/res/layout/join_contact_picker_list_content.xml
@@ -51,6 +51,7 @@
             android:layout_marginStart="?attr/contact_browser_list_padding_left"
             android:layout_marginEnd="?attr/contact_browser_list_padding_right"
             android:fastScrollEnabled="true"
+            android:forceDarkAllowed="false"
             android:scrollbarStyle="outsideOverlay" />
     </FrameLayout>
 </LinearLayout>
diff --git a/res/mipmap-anydpi/ic_launcher.xml b/res/mipmap-anydpi/ic_launcher.xml
new file mode 100644
index 0000000..c8b5591
--- /dev/null
+++ b/res/mipmap-anydpi/ic_launcher.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2018 The LineageOS 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.
+-->
+<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
+    <background android:drawable="@mipmap/ic_background"/>
+    <foreground android:drawable="@mipmap/ic_foreground"/>
+    <monochrome android:drawable="@drawable/ic_monochrome" />
+</adaptive-icon>
+
diff --git a/res/mipmap-hdpi/ic_background.png b/res/mipmap-hdpi/ic_background.png
new file mode 100644
index 0000000..e3d7036
--- /dev/null
+++ b/res/mipmap-hdpi/ic_background.png
Binary files differ
diff --git a/res/mipmap-hdpi/ic_contacts_launcher.png b/res/mipmap-hdpi/ic_contacts_launcher.png
deleted file mode 100644
index 64eff00..0000000
--- a/res/mipmap-hdpi/ic_contacts_launcher.png
+++ /dev/null
Binary files differ
diff --git a/res/mipmap-hdpi/ic_foreground.png b/res/mipmap-hdpi/ic_foreground.png
new file mode 100644
index 0000000..8de9350
--- /dev/null
+++ b/res/mipmap-hdpi/ic_foreground.png
Binary files differ
diff --git a/res/mipmap-mdpi/ic_background.png b/res/mipmap-mdpi/ic_background.png
new file mode 100644
index 0000000..9cf4aa9
--- /dev/null
+++ b/res/mipmap-mdpi/ic_background.png
Binary files differ
diff --git a/res/mipmap-mdpi/ic_contacts_launcher.png b/res/mipmap-mdpi/ic_contacts_launcher.png
deleted file mode 100644
index b4ee821..0000000
--- a/res/mipmap-mdpi/ic_contacts_launcher.png
+++ /dev/null
Binary files differ
diff --git a/res/mipmap-mdpi/ic_foreground.png b/res/mipmap-mdpi/ic_foreground.png
new file mode 100644
index 0000000..3cabd62
--- /dev/null
+++ b/res/mipmap-mdpi/ic_foreground.png
Binary files differ
diff --git a/res/mipmap-xhdpi/ic_background.png b/res/mipmap-xhdpi/ic_background.png
new file mode 100644
index 0000000..83d721f
--- /dev/null
+++ b/res/mipmap-xhdpi/ic_background.png
Binary files differ
diff --git a/res/mipmap-xhdpi/ic_contacts_launcher.png b/res/mipmap-xhdpi/ic_contacts_launcher.png
deleted file mode 100644
index 6feeadf..0000000
--- a/res/mipmap-xhdpi/ic_contacts_launcher.png
+++ /dev/null
Binary files differ
diff --git a/res/mipmap-xhdpi/ic_foreground.png b/res/mipmap-xhdpi/ic_foreground.png
new file mode 100644
index 0000000..9de308a
--- /dev/null
+++ b/res/mipmap-xhdpi/ic_foreground.png
Binary files differ
diff --git a/res/mipmap-xxhdpi/ic_background.png b/res/mipmap-xxhdpi/ic_background.png
new file mode 100644
index 0000000..ac28291
--- /dev/null
+++ b/res/mipmap-xxhdpi/ic_background.png
Binary files differ
diff --git a/res/mipmap-xxhdpi/ic_contacts_launcher.png b/res/mipmap-xxhdpi/ic_contacts_launcher.png
deleted file mode 100644
index 01a3fde..0000000
--- a/res/mipmap-xxhdpi/ic_contacts_launcher.png
+++ /dev/null
Binary files differ
diff --git a/res/mipmap-xxhdpi/ic_foreground.png b/res/mipmap-xxhdpi/ic_foreground.png
new file mode 100644
index 0000000..aae300c
--- /dev/null
+++ b/res/mipmap-xxhdpi/ic_foreground.png
Binary files differ
diff --git a/res/mipmap-xxxhdpi/ic_background.png b/res/mipmap-xxxhdpi/ic_background.png
new file mode 100644
index 0000000..ef949ad
--- /dev/null
+++ b/res/mipmap-xxxhdpi/ic_background.png
Binary files differ
diff --git a/res/mipmap-xxxhdpi/ic_contacts_launcher.png b/res/mipmap-xxxhdpi/ic_contacts_launcher.png
deleted file mode 100644
index 328e067..0000000
--- a/res/mipmap-xxxhdpi/ic_contacts_launcher.png
+++ /dev/null
Binary files differ
diff --git a/res/mipmap-xxxhdpi/ic_foreground.png b/res/mipmap-xxxhdpi/ic_foreground.png
new file mode 100644
index 0000000..74f8590
--- /dev/null
+++ b/res/mipmap-xxxhdpi/ic_foreground.png
Binary files differ
diff --git a/res/values-ar/lineage_strings.xml b/res/values-ar/lineage_strings.xml
new file mode 100644
index 0000000..fa6a70a
--- /dev/null
+++ b/res/values-ar/lineage_strings.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2018 The LineageOS 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="menu_emergency_information_txt">معلومات الطوارئ</string>
+    <string name="call_via_template">الاتصال عبر <xliff:g id="account">%1$s</xliff:g></string>
+</resources>
diff --git a/res/values-ast-rES/lineage_strings.xml b/res/values-ast-rES/lineage_strings.xml
new file mode 100644
index 0000000..a062513
--- /dev/null
+++ b/res/values-ast-rES/lineage_strings.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2018 The LineageOS 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="menu_emergency_information_txt">Información d\'emerxencia</string>
+    <string name="call_via_template">Llamar per «<xliff:g id="account">%1$s</xliff:g>»</string>
+</resources>
diff --git a/res/values-az/lineage_strings.xml b/res/values-az/lineage_strings.xml
new file mode 100644
index 0000000..5db3e1a
--- /dev/null
+++ b/res/values-az/lineage_strings.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2018 The LineageOS 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="menu_emergency_information_txt">Fövqəladə hal məlumatı</string>
+    <string name="call_via_template"><xliff:g id="account">%1$s</xliff:g> ilə zəng et</string>
+</resources>
diff --git a/res/values-be/lineage_strings.xml b/res/values-be/lineage_strings.xml
new file mode 100644
index 0000000..9cdea74
--- /dev/null
+++ b/res/values-be/lineage_strings.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2018 The LineageOS 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="menu_emergency_information_txt">Інфармацыя для экстранных сітуацый</string>
+    <string name="call_via_template">Выклікаць праз <xliff:g id="name">%1$s</xliff:g></string>
+</resources>
diff --git a/res/values-bg/lineage_strings.xml b/res/values-bg/lineage_strings.xml
new file mode 100644
index 0000000..0d0a2c7
--- /dev/null
+++ b/res/values-bg/lineage_strings.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2018 The LineageOS 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="menu_emergency_information_txt">Информация за спешни случаи</string>
+    <string name="call_via_template">Обадете се чрез <xliff:g id="account">%1$s</xliff:g></string>
+</resources>
diff --git a/res/values-bn/lineage_strings.xml b/res/values-bn/lineage_strings.xml
new file mode 100644
index 0000000..7061163
--- /dev/null
+++ b/res/values-bn/lineage_strings.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2018 The LineageOS 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="menu_emergency_information_txt">জরুরি তথ্য</string>
+</resources>
diff --git a/res/values-bs/lineage_strings.xml b/res/values-bs/lineage_strings.xml
new file mode 100644
index 0000000..bf4069d
--- /dev/null
+++ b/res/values-bs/lineage_strings.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2018 The LineageOS 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="menu_emergency_information_txt">Informacije za hitne slučajeve</string>
+    <string name="call_via_template">Pozovi sa <xliff:g id="account">%1$s</xliff:g></string>
+</resources>
diff --git a/res/values-ca/lineage_strings.xml b/res/values-ca/lineage_strings.xml
new file mode 100644
index 0000000..9c24670
--- /dev/null
+++ b/res/values-ca/lineage_strings.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2018 The LineageOS 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="menu_emergency_information_txt">Informació d\'emergència</string>
+    <string name="call_via_template">Truca utilitzant <xliff:g id="name">%1$s</xliff:g></string>
+</resources>
diff --git a/res/values-cs/lineage_strings.xml b/res/values-cs/lineage_strings.xml
new file mode 100644
index 0000000..28b4923
--- /dev/null
+++ b/res/values-cs/lineage_strings.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2018 The LineageOS 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="menu_emergency_information_txt">Nouzové informace</string>
+    <string name="call_via_template">Volat pomocí <xliff:g id="account">%1$s</xliff:g></string>
+</resources>
diff --git a/res/values-cy/lineage_strings.xml b/res/values-cy/lineage_strings.xml
new file mode 100644
index 0000000..9be4aa1
--- /dev/null
+++ b/res/values-cy/lineage_strings.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2018 The LineageOS 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="menu_emergency_information_txt">Gwybodaeth mewn argyfwng</string>
+    <string name="call_via_template">Galw trwy <xliff:g id="account">%1$s</xliff:g></string>
+</resources>
diff --git a/res/values-da/lineage_strings.xml b/res/values-da/lineage_strings.xml
new file mode 100644
index 0000000..78123dd
--- /dev/null
+++ b/res/values-da/lineage_strings.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2018 The LineageOS 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="menu_emergency_information_txt">Info til nødsituationer</string>
+    <string name="call_via_template">Ring via <xliff:g id="account">%1$s</xliff:g></string>
+</resources>
diff --git a/res/values-de/lineage_strings.xml b/res/values-de/lineage_strings.xml
new file mode 100644
index 0000000..c5a46f6
--- /dev/null
+++ b/res/values-de/lineage_strings.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2018 The LineageOS 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="menu_emergency_information_txt">Notfallinformationen</string>
+    <string name="call_via_template">Anruf über <xliff:g id="account">%1$s</xliff:g></string>
+</resources>
diff --git a/res/values-el/lineage_strings.xml b/res/values-el/lineage_strings.xml
new file mode 100644
index 0000000..6e7fd58
--- /dev/null
+++ b/res/values-el/lineage_strings.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2018 The LineageOS 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="menu_emergency_information_txt">Πληροφορίες έκτακτης ανάγκης</string>
+    <string name="call_via_template">Κλήση μέσω <xliff:g id="account">%1$s</xliff:g></string>
+</resources>
diff --git a/res/values-en-rAU/lineage_strings.xml b/res/values-en-rAU/lineage_strings.xml
new file mode 100644
index 0000000..0de968a
--- /dev/null
+++ b/res/values-en-rAU/lineage_strings.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2018 The LineageOS 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="menu_emergency_information_txt">Emergency information</string>
+    <string name="call_via_template">Call via <xliff:g id="account">%1$s</xliff:g></string>
+</resources>
diff --git a/res/values-en-rCA/lineage_strings.xml b/res/values-en-rCA/lineage_strings.xml
new file mode 100644
index 0000000..0de968a
--- /dev/null
+++ b/res/values-en-rCA/lineage_strings.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2018 The LineageOS 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="menu_emergency_information_txt">Emergency information</string>
+    <string name="call_via_template">Call via <xliff:g id="account">%1$s</xliff:g></string>
+</resources>
diff --git a/res/values-en-rGB/lineage_strings.xml b/res/values-en-rGB/lineage_strings.xml
new file mode 100644
index 0000000..0de968a
--- /dev/null
+++ b/res/values-en-rGB/lineage_strings.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2018 The LineageOS 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="menu_emergency_information_txt">Emergency information</string>
+    <string name="call_via_template">Call via <xliff:g id="account">%1$s</xliff:g></string>
+</resources>
diff --git a/res/values-en-rIN/lineage_strings.xml b/res/values-en-rIN/lineage_strings.xml
new file mode 100644
index 0000000..0de968a
--- /dev/null
+++ b/res/values-en-rIN/lineage_strings.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2018 The LineageOS 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="menu_emergency_information_txt">Emergency information</string>
+    <string name="call_via_template">Call via <xliff:g id="account">%1$s</xliff:g></string>
+</resources>
diff --git a/res/values-es-rMX/lineage_strings.xml b/res/values-es-rMX/lineage_strings.xml
new file mode 100644
index 0000000..50147c7
--- /dev/null
+++ b/res/values-es-rMX/lineage_strings.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2018 The LineageOS 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="menu_emergency_information_txt">Información de emergencia</string>
+    <string name="call_via_template">Llamar usando <xliff:g id="account">%1$s</xliff:g></string>
+</resources>
diff --git a/res/values-es-rUS/lineage_strings.xml b/res/values-es-rUS/lineage_strings.xml
new file mode 100644
index 0000000..50147c7
--- /dev/null
+++ b/res/values-es-rUS/lineage_strings.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2018 The LineageOS 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="menu_emergency_information_txt">Información de emergencia</string>
+    <string name="call_via_template">Llamar usando <xliff:g id="account">%1$s</xliff:g></string>
+</resources>
diff --git a/res/values-et/lineage_strings.xml b/res/values-et/lineage_strings.xml
new file mode 100644
index 0000000..1dee821
--- /dev/null
+++ b/res/values-et/lineage_strings.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2018 The LineageOS 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="menu_emergency_information_txt">Hädaabiteave</string>
+    <string name="call_via_template">Helista läbi <xliff:g id="account">%1$s</xliff:g></string>
+</resources>
diff --git a/res/values-eu/lineage_strings.xml b/res/values-eu/lineage_strings.xml
new file mode 100644
index 0000000..909d9c0
--- /dev/null
+++ b/res/values-eu/lineage_strings.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2018 The LineageOS 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="menu_emergency_information_txt">Larrialdietarako informazioa</string>
+    <string name="call_via_template">Deitu <xliff:g id="account">%1$s</xliff:g> bidez</string>
+</resources>
diff --git a/res/values-fi/lineage_strings.xml b/res/values-fi/lineage_strings.xml
new file mode 100644
index 0000000..a8ec71d
--- /dev/null
+++ b/res/values-fi/lineage_strings.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2018 The LineageOS 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="menu_emergency_information_txt">Hätätilannetiedot</string>
+    <string name="call_via_template">Soita käyttäen <xliff:g id="account">%1$s</xliff:g></string>
+</resources>
diff --git a/res/values-fr/lineage_strings.xml b/res/values-fr/lineage_strings.xml
new file mode 100644
index 0000000..5243825
--- /dev/null
+++ b/res/values-fr/lineage_strings.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2018 The LineageOS 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="menu_emergency_information_txt">Informations d\'urgence</string>
+    <string name="call_via_template">Appeler via <xliff:g id="account">%1$s</xliff:g></string>
+</resources>
diff --git a/res/values-fur-rIT/lineage_strings.xml b/res/values-fur-rIT/lineage_strings.xml
new file mode 100644
index 0000000..f203d4c
--- /dev/null
+++ b/res/values-fur-rIT/lineage_strings.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2018 The LineageOS 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="menu_emergency_information_txt">Informazions di emergjence</string>
+    <string name="call_via_template">Clame cun <xliff:g id="account">%1$s</xliff:g></string>
+</resources>
diff --git a/res/values-fy-rNL/lineage_strings.xml b/res/values-fy-rNL/lineage_strings.xml
new file mode 100644
index 0000000..41a2cd2
--- /dev/null
+++ b/res/values-fy-rNL/lineage_strings.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2018 The LineageOS 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="menu_emergency_information_txt">Ynformaasje by needgefallen</string>
+    <string name="call_via_template">Belle fia <xliff:g id="account">%1$s</xliff:g></string>
+</resources>
diff --git a/res/values-gd/lineage_strings.xml b/res/values-gd/lineage_strings.xml
new file mode 100644
index 0000000..4d45f4c
--- /dev/null
+++ b/res/values-gd/lineage_strings.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2018 The LineageOS 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="menu_emergency_information_txt">Fiosrachadh èiginn</string>
+    <string name="call_via_template">Gairm slighe <xliff:g id="account">%1$s</xliff:g></string>
+</resources>
diff --git a/res/values-gl/lineage_strings.xml b/res/values-gl/lineage_strings.xml
new file mode 100644
index 0000000..ff56be7
--- /dev/null
+++ b/res/values-gl/lineage_strings.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2018 The LineageOS 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="menu_emergency_information_txt">Información de emerxencia</string>
+    <string name="call_via_template">Chamar a través de <xliff:g id="name">%1$s</xliff:g></string>
+</resources>
diff --git a/res/values-hu/lineage_strings.xml b/res/values-hu/lineage_strings.xml
new file mode 100644
index 0000000..71da02a
--- /dev/null
+++ b/res/values-hu/lineage_strings.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2018 The LineageOS 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="menu_emergency_information_txt">Segélyhívási információk</string>
+    <string name="call_via_template">Hívás ezzel <xliff:g id="account">%1$s</xliff:g></string>
+</resources>
diff --git a/res/values-in/lineage_strings.xml b/res/values-in/lineage_strings.xml
new file mode 100644
index 0000000..97238e0
--- /dev/null
+++ b/res/values-in/lineage_strings.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2018 The LineageOS 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="menu_emergency_information_txt">Informasi darurat</string>
+    <string name="call_via_template">Panggilan melalui <xliff:g id="account">%1$s</xliff:g></string>
+</resources>
diff --git a/res/values-is/lineage_strings.xml b/res/values-is/lineage_strings.xml
new file mode 100644
index 0000000..f745445
--- /dev/null
+++ b/res/values-is/lineage_strings.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2018 The LineageOS 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="menu_emergency_information_txt">Neyðarupplýsingar</string>
+    <string name="call_via_template">Hringja í gegnum <xliff:g id="account">%1$s</xliff:g></string>
+</resources>
diff --git a/res/values-it/lineage_strings.xml b/res/values-it/lineage_strings.xml
new file mode 100644
index 0000000..1fb437b
--- /dev/null
+++ b/res/values-it/lineage_strings.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2018 The LineageOS 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="menu_emergency_information_txt">Informazioni di emergenza</string>
+    <string name="call_via_template">Chiama con <xliff:g id="account">%1$s</xliff:g></string>
+</resources>
diff --git a/res/values-iw/lineage_strings.xml b/res/values-iw/lineage_strings.xml
new file mode 100644
index 0000000..0dbdb92
--- /dev/null
+++ b/res/values-iw/lineage_strings.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2018 The LineageOS 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="menu_emergency_information_txt">מידע למקרה חירום</string>
+    <string name="call_via_template">חיוג באמצעות <xliff:g id="account">%1$s</xliff:g></string>
+</resources>
diff --git a/res/values-ja/lineage_strings.xml b/res/values-ja/lineage_strings.xml
new file mode 100644
index 0000000..4805af0
--- /dev/null
+++ b/res/values-ja/lineage_strings.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2018 The LineageOS 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="menu_emergency_information_txt">緊急時の情報</string>
+    <string name="call_via_template"><xliff:g id="account">%1$s</xliff:g>経由で発信</string>
+</resources>
diff --git a/res/values-ka/lineage_strings.xml b/res/values-ka/lineage_strings.xml
new file mode 100644
index 0000000..6c67fd9
--- /dev/null
+++ b/res/values-ka/lineage_strings.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2018 The LineageOS 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="menu_emergency_information_txt">საგანგებო ინფორმაცია</string>
+    <string name="call_via_template">დარეკვა <xliff:g id="account">%1$s</xliff:g> ანგარიშით</string>
+</resources>
diff --git a/res/values-kn/lineage_strings.xml b/res/values-kn/lineage_strings.xml
new file mode 100644
index 0000000..c62a4c2
--- /dev/null
+++ b/res/values-kn/lineage_strings.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2018 The LineageOS 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="menu_emergency_information_txt">ತುರ್ತುಸ್ಥಿತಿ ಮಾಹಿತಿ</string>
+    <string name="call_via_template"><xliff:g id="account">%1$s</xliff:g> ಮುಖೇನ ಕರೆಮಾಡು</string>
+</resources>
diff --git a/res/values-ko/lineage_strings.xml b/res/values-ko/lineage_strings.xml
new file mode 100644
index 0000000..7ba7339
--- /dev/null
+++ b/res/values-ko/lineage_strings.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2018 The LineageOS 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="menu_emergency_information_txt">긴급 상황 정보</string>
+    <string name="call_via_template"><xliff:g id="account">%1$s</xliff:g>으(로) 전화</string>
+</resources>
diff --git a/res/values-my/lineage_strings.xml b/res/values-my/lineage_strings.xml
new file mode 100644
index 0000000..f9a7d3f
--- /dev/null
+++ b/res/values-my/lineage_strings.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2018 The LineageOS 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="menu_emergency_information_txt">အရေးပေါ်အချက်အလက်</string>
+</resources>
diff --git a/res/values-night/colors.xml b/res/values-night/colors.xml
new file mode 100644
index 0000000..fc5bb30
--- /dev/null
+++ b/res/values-night/colors.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ * SPDX-License-Identifier: Apache-2.0
+ * Copyright (C) 2020 The LineageOS Project
+-->
+<resources>
+    <!-- Background color of pinned header items. -->
+    <color name="list_item_pinned_header_color">@*android:color/system_neutral1_900</color>
+
+    <!-- Color of contact name in list. -->
+    <color name="contact_list_name_text_color">#dadada</color>
+
+    <!-- Color of the background of the contact detail and editor pages -->
+    <color name="background_primary">@*android:color/system_neutral1_900</color>
+    <color name="contact_all_list_background_color">@*android:color/system_neutral1_900</color>
+
+    <color name="fab_color">@android:color/system_accent1_100</color>
+</resources>
diff --git a/res/values-nl/lineage_strings.xml b/res/values-nl/lineage_strings.xml
new file mode 100644
index 0000000..1bbddf0
--- /dev/null
+++ b/res/values-nl/lineage_strings.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2018 The LineageOS 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="menu_emergency_information_txt">Informatie bij noodgevallen</string>
+    <string name="call_via_template">Bellen via <xliff:g id="account">%1$s</xliff:g></string>
+</resources>
diff --git a/res/values-pl/lineage_strings.xml b/res/values-pl/lineage_strings.xml
new file mode 100644
index 0000000..b6e6c8d
--- /dev/null
+++ b/res/values-pl/lineage_strings.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2018 The LineageOS 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="menu_emergency_information_txt">Informacje alarmowe</string>
+    <string name="call_via_template">Zadzwoń przez <xliff:g id="account">%1$s</xliff:g></string>
+</resources>
diff --git a/res/values-pt-rBR/lineage_strings.xml b/res/values-pt-rBR/lineage_strings.xml
new file mode 100644
index 0000000..f105d9c
--- /dev/null
+++ b/res/values-pt-rBR/lineage_strings.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2018 The LineageOS 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="menu_emergency_information_txt">Informações de emergência</string>
+    <string name="call_via_template">Chamar via <xliff:g id="account">%1$s</xliff:g></string>
+</resources>
diff --git a/res/values-pt-rPT/lineage_strings.xml b/res/values-pt-rPT/lineage_strings.xml
new file mode 100644
index 0000000..785c578
--- /dev/null
+++ b/res/values-pt-rPT/lineage_strings.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2018 The LineageOS 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="menu_emergency_information_txt">Informações de emergência</string>
+    <string name="call_via_template">Chamar através de <xliff:g id="account">%1$s</xliff:g></string>
+</resources>
diff --git a/res/values-ro/lineage_strings.xml b/res/values-ro/lineage_strings.xml
new file mode 100644
index 0000000..81d197b
--- /dev/null
+++ b/res/values-ro/lineage_strings.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2018 The LineageOS 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="menu_emergency_information_txt">Informații de urgență</string>
+    <string name="call_via_template">Apel prin <xliff:g id="account">%1$s</xliff:g></string>
+</resources>
diff --git a/res/values-ru/lineage_strings.xml b/res/values-ru/lineage_strings.xml
new file mode 100644
index 0000000..4ab2c17
--- /dev/null
+++ b/res/values-ru/lineage_strings.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2018 The LineageOS 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="menu_emergency_information_txt">Данные для экстренных ситуаций</string>
+    <string name="call_via_template">Позвонить через <xliff:g id="account">%1$s</xliff:g></string>
+</resources>
diff --git a/res/values-sk/lineage_strings.xml b/res/values-sk/lineage_strings.xml
new file mode 100644
index 0000000..829a7fa
--- /dev/null
+++ b/res/values-sk/lineage_strings.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2018 The LineageOS 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="menu_emergency_information_txt">Informácie pre prípad núdze</string>
+    <string name="call_via_template">Hovor pomocou <xliff:g id="name">%1$s </xliff:g></string>
+</resources>
diff --git a/res/values-sl/lineage_strings.xml b/res/values-sl/lineage_strings.xml
new file mode 100644
index 0000000..bd389f4
--- /dev/null
+++ b/res/values-sl/lineage_strings.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2018 The LineageOS 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="menu_emergency_information_txt">Podatki za nujne primere</string>
+    <string name="call_via_template">Kliči prek <xliff:g id="account">%1$s</xliff:g></string>
+</resources>
diff --git a/res/values-sq/lineage_strings.xml b/res/values-sq/lineage_strings.xml
new file mode 100644
index 0000000..c48885c
--- /dev/null
+++ b/res/values-sq/lineage_strings.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2018 The LineageOS 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="menu_emergency_information_txt">Informacion rreth urgjencës</string>
+    <string name="call_via_template">Telefono nga <xliff:g id="account">%1$s</xliff:g></string>
+</resources>
diff --git a/res/values-sv/lineage_strings.xml b/res/values-sv/lineage_strings.xml
new file mode 100644
index 0000000..83c9af0
--- /dev/null
+++ b/res/values-sv/lineage_strings.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2018 The LineageOS 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="menu_emergency_information_txt">Krisinformation</string>
+    <string name="call_via_template">Ring via <xliff:g id="account">%1$s</xliff:g></string>
+</resources>
diff --git a/res/values-th/lineage_strings.xml b/res/values-th/lineage_strings.xml
new file mode 100644
index 0000000..a2fae88
--- /dev/null
+++ b/res/values-th/lineage_strings.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2018 The LineageOS 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="menu_emergency_information_txt">ข้อมูลฉุกเฉิน</string>
+    <string name="call_via_template">โทรผ่าน <xliff:g id="account">%1$s</xliff:g></string>
+</resources>
diff --git a/res/values-tr/lineage_strings.xml b/res/values-tr/lineage_strings.xml
new file mode 100644
index 0000000..6b9e049
--- /dev/null
+++ b/res/values-tr/lineage_strings.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2018 The LineageOS 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="menu_emergency_information_txt">Acil durum bilgisi</string>
+    <string name="call_via_template"><xliff:g id="account">%1$s</xliff:g> ile ara</string>
+</resources>
diff --git a/res/values-uk/lineage_strings.xml b/res/values-uk/lineage_strings.xml
new file mode 100644
index 0000000..b1ffe20
--- /dev/null
+++ b/res/values-uk/lineage_strings.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2018 The LineageOS 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="menu_emergency_information_txt">Дані для екстр. випадків</string>
+</resources>
diff --git a/res/values-v27/styles.xml b/res/values-v27/styles.xml
new file mode 100644
index 0000000..e821cc1
--- /dev/null
+++ b/res/values-v27/styles.xml
@@ -0,0 +1,126 @@
+<resources>
+
+    <style name="PeopleTheme" parent="@android:style/Theme.Material.Light.DarkActionBar">
+        <item name="android:forceDarkAllowed">true</item>
+        <item name="android:actionBarStyle">@style/ContactsActionBarStyle</item>
+        <!-- Style for the overflow button in the actionbar. -->
+        <item name="android:actionOverflowButtonStyle">@style/ContactsActionBarOverflowQP</item>
+        <item name="android:actionModeCloseDrawable">@drawable/quantum_ic_close_vd_theme_24</item>
+        <item name="android:textColorPrimary">@color/primary_text_color</item>
+        <item name="android:textColorSecondary">@color/secondary_text_color</item>
+        <item name="android:icon">@android:color/transparent</item>
+        <item name="android:listViewStyle">@style/ListViewStyle</item>
+        <item name="android:windowBackground">@color/background_primary</item>
+        <item name="android:colorPrimaryDark">@color/primary_color_dark</item>
+        <item name="android:colorPrimary">@color/primary_color</item>
+        <item name="android:colorAccent">@color/primary_color</item>
+        <item name="android:alertDialogTheme">@style/ContactsAlertDialogTheme</item>
+        <item name="list_item_height">@dimen/contact_browser_list_item_height</item>
+        <item name="list_section_header_height">24dip</item>
+        <item name="list_item_padding_top">
+            @dimen/contact_browser_list_item_padding_top_or_bottom
+        </item>
+        <item name="list_item_padding_right">32dp</item>
+        <item name="list_item_padding_bottom">
+            @dimen/contact_browser_list_item_padding_top_or_bottom
+        </item>
+        <item name="list_item_padding_left">0dp</item>
+        <item name="list_item_gap_between_image_and_text">
+            @dimen/contact_browser_list_item_gap_between_image_and_text
+        </item>
+        <item name="list_item_gap_between_label_and_data">5dip</item>
+        <item name="list_item_presence_icon_margin">4dip</item>
+        <item name="list_item_presence_icon_size">16dip</item>
+        <item name="list_item_photo_size">@dimen/contact_browser_list_item_photo_size</item>
+        <item name="list_item_profile_photo_size">70dip</item>
+        <item name="list_item_prefix_highlight_color">@color/people_app_theme_color</item>
+        <item name="list_item_background_color">@color/list_item_pinned_header_color</item>
+        <item name="list_item_header_text_color">@color/people_app_theme_color</item>
+        <item name="list_item_header_text_size">14sp</item>
+        <item name="list_item_header_height">30dip</item>
+        <item name="list_item_header_text_indent">8dip</item>
+        <item name="contact_browser_list_padding_left">0dip</item>
+        <item name="contact_browser_list_padding_right">0dip</item>
+        <item name="contact_browser_background">@color/background_primary</item>
+        <item name="list_item_text_indent">@dimen/contact_browser_list_item_text_indent</item>
+        <item name="list_item_text_offset_top">-2dp</item>
+        <item name="list_item_avatar_offset_top">-1dp</item>
+        <!-- Favorites -->
+        <item name="favorites_padding_bottom">0dip</item>
+        <!-- Popup menu -->
+        <item name="android:popupMenuStyle">@style/PopupMenuStyle</item>
+        <item name="android:navigationBarColor">@color/navigation_bar_bg</item>
+        <item name="android:navigationBarDividerColor">@color/navigation_bar_divider</item>
+        <item name="android:windowLightNavigationBar">true</item>
+    </style>
+
+    <style name="PeopleThemeAppCompat" parent="Theme.AppCompat.Light.DarkActionBar">
+        <item name="android:forceDarkAllowed">true</item>
+        <!-- Styles that require AppCompat compatibility, remember to update both sets -->
+        <item name="android:actionBarStyle">@style/ContactsActionBarStyleAppCompat</item>
+        <item name="actionBarStyle">@style/ContactsActionBarStyleAppCompat</item>
+        <item name="android:actionButtonStyle">@style/ContactsActionButtonStyle</item>
+        <item name="actionButtonStyle">@style/ContactsActionButtonStyle</item>
+        <!-- Style for the overflow button in the actionbar. -->
+        <item name="android:actionOverflowButtonStyle">@style/ContactsActionBarOverflowQP</item>
+        <item name="actionOverflowButtonStyle">@style/ContactsActionBarOverflowQP</item>
+        <item name="toolbarNavigationButtonStyle">@style/ContactToolbarNavigationButtonStyle</item>
+        <item name="android:actionModeCloseDrawable">@drawable/quantum_ic_close_vd_theme_24</item>
+        <item name="android:textColorPrimary">@color/primary_text_color</item>
+        <item name="android:textColorSecondary">@color/secondary_text_color</item>
+        <item name="android:icon">@android:color/transparent</item>
+        <item name="android:listViewStyle">@style/ListViewStyle</item>
+        <item name="android:windowBackground">@color/background_primary</item>
+        <item name="android:colorPrimaryDark">@color/primary_color_dark</item>
+        <item name="colorPrimaryDark">@color/primary_color_dark</item>
+        <item name="android:colorPrimary">@color/primary_color</item>
+        <item name="colorPrimary">@color/primary_color</item>
+        <item name="android:colorAccent">@color/primary_color</item>
+        <item name="colorAccent">@color/primary_color</item>
+        <item name="android:alertDialogTheme">@style/ContactsAlertDialogThemeAppCompat</item>
+        <item name="alertDialogTheme">@style/ContactsAlertDialogThemeAppCompat</item>
+        <item name="list_item_height">@dimen/contact_browser_list_item_height</item>
+        <item name="list_section_header_height">24dip</item>
+        <item name="list_item_padding_top">
+            @dimen/contact_browser_list_item_padding_top_or_bottom
+        </item>
+        <item name="list_item_padding_right">32dp</item>
+        <item name="list_item_padding_bottom">
+            @dimen/contact_browser_list_item_padding_top_or_bottom
+        </item>
+        <item name="list_item_padding_left">0dp</item>
+        <item name="list_item_gap_between_image_and_text">
+            @dimen/contact_browser_list_item_gap_between_image_and_text
+        </item>
+        <item name="list_item_gap_between_indexer_and_image">
+            @dimen/contact_browser_list_item_gap_between_indexer_and_image
+        </item>
+        <item name="list_item_gap_between_label_and_data">5dip</item>
+        <item name="list_item_presence_icon_margin">4dip</item>
+        <item name="list_item_presence_icon_size">16dip</item>
+        <item name="list_item_photo_size">@dimen/contact_browser_list_item_photo_size</item>
+        <item name="list_item_profile_photo_size">70dip</item>
+        <item name="list_item_prefix_highlight_color">@color/people_app_theme_color</item>
+        <item name="list_item_background_color">@color/list_item_pinned_header_color</item>
+        <item name="list_item_header_text_color">@color/people_app_theme_color</item>
+        <item name="list_item_header_text_size">14sp</item>
+        <item name="list_item_header_height">30dip</item>
+        <item name="list_item_header_text_indent">8dip</item>
+        <item name="contact_browser_list_padding_left">0dip</item>
+        <item name="contact_browser_list_padding_right">0dip</item>
+        <item name="contact_browser_background">@color/background_primary</item>
+        <item name="list_item_text_indent">@dimen/contact_browser_list_item_text_indent</item>
+        <item name="list_item_text_offset_top">-2dp</item>
+        <item name="list_item_avatar_offset_top">-1dp</item>
+        <!-- Favorites -->
+        <item name="favorites_padding_bottom">0dip</item>
+        <item name="drawerArrowStyle">@style/DrawerArrowStyle</item>
+        <!-- Popup menu -->
+        <item name="android:popupMenuStyle">@style/PopupMenuStyleAppCompat</item>
+        <item name="popupMenuStyle">@style/PopupMenuStyleAppCompat</item>
+        <item name="android:navigationBarColor">@color/navigation_bar_bg</item>
+        <item name="android:navigationBarDividerColor">@color/navigation_bar_divider</item>
+        <item name="android:windowLightNavigationBar">true</item>
+    </style>
+
+</resources>
diff --git a/res/values-vi/lineage_strings.xml b/res/values-vi/lineage_strings.xml
new file mode 100644
index 0000000..28206f7
--- /dev/null
+++ b/res/values-vi/lineage_strings.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2018 The LineageOS 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="menu_emergency_information_txt">Thông tin khẩn cấp</string>
+    <string name="call_via_template">Gọi qua <xliff:g id="account">%1$s</xliff:g></string>
+</resources>
diff --git a/res/values-zh-rCN/lineage_strings.xml b/res/values-zh-rCN/lineage_strings.xml
new file mode 100644
index 0000000..0509d14
--- /dev/null
+++ b/res/values-zh-rCN/lineage_strings.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2018 The LineageOS 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="menu_emergency_information_txt">急救信息</string>
+    <string name="call_via_template">通过 <xliff:g id="account">%1$s</xliff:g> 呼叫</string>
+</resources>
diff --git a/res/values-zh-rTW/lineage_strings.xml b/res/values-zh-rTW/lineage_strings.xml
new file mode 100644
index 0000000..6e1d87a
--- /dev/null
+++ b/res/values-zh-rTW/lineage_strings.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2018 The LineageOS 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="menu_emergency_information_txt">緊急資訊</string>
+    <string name="call_via_template">使用 <xliff:g id="account">%1$s</xliff:g> 撥打</string>
+</resources>
diff --git a/res/values/colors.xml b/res/values/colors.xml
index aeba877..429695e 100644
--- a/res/values/colors.xml
+++ b/res/values/colors.xml
@@ -28,7 +28,7 @@
     <color name="quickcontact_entry_sub_header_text_color">#737373</color>
     <color name="quickcontact_entry_header_text_color">#202020</color>
 
-    <color name="action_bar_background">#2a56c6</color>
+    <color name="action_bar_background">@*android:color/system_accent1_600</color>
 
     <color name="nav_item_selected_background">#0f000000</color>
 
@@ -40,19 +40,20 @@
     <!-- Color of the status bar above the contextual selection bar. -->
     <color name="contextual_selection_bar_status_bar_color">#bababa</color>
 
-    <color name="primary_color_dark">#1c3aa9</color>
-    <color name="primary_color">#2a56c6</color>
+    <color name="primary_color_dark">@*android:color/system_accent1_700</color>
+    <color name="primary_color">@*android:color/system_accent1_600</color>
 
-    <color name="group_primary_color_dark">#546E7A</color>
-    <color name="group_primary_color">#607D8B</color>
+    <color name="group_primary_color_dark">@*android:color/system_neutral1_900</color>
+    <color name="group_primary_color">@*android:color/system_neutral1_800</color>
 
     <!-- Color of the selected tab underline -->
-    <color name="contacts_accent_color">#FFFFFF</color>
+    <color name="contacts_accent_color">@*android:color/system_neutral1_0</color>
 
     <color name="floating_action_button_icon_color">@color/contacts_accent_color</color>
+    <color name="fab_color">@android:color/system_accent1_600</color>
 
     <!-- Horizontal separator line should be 12% dark in the light theme. -->
-    <color name="divider_line_color_light">#e0e0e0</color>
+    <color name="divider_line_color_light">@*android:color/transparent</color>
 
     <!-- Color of the text on an ExpandingEntryCard button -->
     <color name="expanding_entry_card_button_text_color">@android:color/black</color>
@@ -87,12 +88,6 @@
     <!-- Color of background of all empty states. -->
     <color name="empty_state_background">#efefef</color>
 
-    <!-- Colors of swipeRefreshLayout's spinning circle. -->
-    <color name="swipe_refresh_color1">#0f9d58</color>
-    <color name="swipe_refresh_color2">#dd4b37</color>
-    <color name="swipe_refresh_color3">#4285f4</color>
-    <color name="swipe_refresh_color4">#f4b400</color>
-
     <!-- Color of ripples used for views with dark backgrounds -->
     <color name="ripple_material_dark">#a0ffffff</color>
 
@@ -105,10 +100,10 @@
     <color name="section_header_text_color">@color/dialtacts_theme_color</color>
 
     <!-- Color of the theme of the People app -->
-    <color name="people_app_theme_color">#363636</color>
+    <color name="people_app_theme_color">@*android:color/system_neutral1_800</color>
 
     <!-- Color of the theme of the Dialer app -->
-    <color name="dialtacts_theme_color">#2a56c6</color>
+    <color name="dialtacts_theme_color">@*android:color/system_accent1_600</color>
 
     <!-- Color of image view placeholder. -->
     <color name="image_placeholder">#DDDDDD</color>
@@ -132,39 +127,35 @@
         These colors are also used by MaterialColorMapUtils to generate primary activity colors.
     -->
     <array name="letter_tile_colors">
-        <item>#DB4437</item>
-        <item>#E91E63</item>
-        <item>#9C27B0</item>
-        <item>#673AB7</item>
-        <item>#3F51B5</item>
-        <item>#4285F4</item>
-        <item>#039BE5</item>
-        <item>#0097A7</item>
-        <item>#009688</item>
-        <item>#0F9D58</item>
-        <item>#689F38</item>
-        <item>#EF6C00</item>
-        <item>#FF5722</item>
-        <item>#757575</item>
+        <item>@*android:color/system_accent1_300</item>
+        <item>@*android:color/system_accent2_300</item>
+        <item>@*android:color/system_accent3_300</item>
+        <item>@*android:color/system_accent1_400</item>
+        <item>@*android:color/system_accent2_400</item>
+        <item>@*android:color/system_accent3_400</item>
+        <item>@*android:color/system_accent1_500</item>
+        <item>@*android:color/system_accent2_500</item>
+        <item>@*android:color/system_accent3_500</item>
+        <item>@*android:color/system_accent1_600</item>
+        <item>@*android:color/system_accent2_600</item>
+        <item>@*android:color/system_accent3_600</item>
     </array>
 
     <!-- Darker versions of letter_tile_colors, two shades darker. These colors are used
         for settings secondary activity colors. -->
     <array name="letter_tile_colors_dark">
-        <item>#C53929</item>
-        <item>#C2185B</item>
-        <item>#7B1FA2</item>
-        <item>#512DA8</item>
-        <item>#303F9F</item>
-        <item>#3367D6</item>
-        <item>#0277BD</item>
-        <item>#006064</item>
-        <item>#00796B</item>
-        <item>#0B8043</item>
-        <item>#33691E</item>
-        <item>#E65100</item>
-        <item>#E64A19</item>
-        <item>#424242</item>
+        <item>@*android:color/system_accent1_500</item>
+        <item>@*android:color/system_accent2_500</item>
+        <item>@*android:color/system_accent3_500</item>
+        <item>@*android:color/system_accent1_600</item>
+        <item>@*android:color/system_accent2_600</item>
+        <item>@*android:color/system_accent3_600</item>
+        <item>@*android:color/system_accent1_700</item>
+        <item>@*android:color/system_accent2_700</item>
+        <item>@*android:color/system_accent3_700</item>
+        <item>@*android:color/system_accent1_800</item>
+        <item>@*android:color/system_accent2_800</item>
+        <item>@*android:color/system_accent3_800</item>
     </array>
 
     <!-- The default color used for tinting photos when no color can be extracted via Palette,
@@ -205,8 +196,8 @@
     <color name="search_shortcut_icon_color">@color/dialtacts_theme_color</color>
 
     <!-- Color of the background of the contact detail and editor pages -->
-    <color name="background_primary">#f9f9f9</color>
-    <color name="contact_all_list_background_color">#FFFFFF</color>
+    <color name="background_primary">@*android:color/system_neutral1_50</color>
+    <color name="contact_all_list_background_color">@*android:color/system_neutral1_0</color>
 
     <!-- Text color used for character counter when the max limit has been exceeded -->
     <color name="call_subject_limit_exceeded">#d1041c</color>
@@ -233,7 +224,7 @@
     <color name="account_filter_text_color">@color/actionbar_text_color_black</color>
     <color name="custom_filter_divider">#dbdbdb</color>
 
-    <color name="material_star_pink">#f50057</color>
+    <color name="material_star_pink">@color/primary_color</color>
 
     <!-- Primary text color in Contacts app -->
     <color name="contacts_text_color">#333333</color>
diff --git a/res/values/dimens.xml b/res/values/dimens.xml
index 6d100ac..9bd8bbe 100644
--- a/res/values/dimens.xml
+++ b/res/values/dimens.xml
@@ -125,7 +125,7 @@
     <dimen name="first_card_marginTop">12dp</dimen>
 
     <!-- Elevation of an ExpandingEntryCard, for the sake of shadow casting -->
-    <dimen name="expanding_entry_card_elevation">2dp</dimen>
+    <dimen name="expanding_entry_card_elevation">0dp</dimen>
     <!-- Elevation of the QuickContact's Toolbar, for the sake of shadow casting -->
     <dimen name="quick_contact_toolbar_elevation">4.5dp</dimen>
 
@@ -160,7 +160,7 @@
     <dimen name="expanding_entry_card_item_icon_margin_right">12dp</dimen>
     <dimen name="expanding_entry_card_item_header_only_margin_top">6dp</dimen>
 
-    <dimen name="expanding_entry_card_card_corner_radius">2dp</dimen>
+    <dimen name="expanding_entry_card_card_corner_radius">28dp</dimen>
     <dimen name="expanding_entry_card_header_margin_bottom">2dp</dimen>
     <!-- The top margin when the sub header and text views are both gone -->
     <dimen name="expanding_entry_card_item_header_only_margin_bottom">2dp</dimen>
diff --git a/res/values/ids.xml b/res/values/ids.xml
index f22eaba..dce82b6 100644
--- a/res/values/ids.xml
+++ b/res/values/ids.xml
@@ -47,6 +47,9 @@
     <!-- An ID to be used for tagging text for copy in legacy fields. -->
     <item name="text_to_copy" type="id"/>
 
+    <!-- Menu ID for profile item -->
+    <item type="id" name="nav_myprofile" />
+
     <!-- Menu group ID for settings and help & feedback  -->
     <item type="id" name="nav_misc" />
 
@@ -71,6 +74,9 @@
     <!-- Menu ID for each filter menu item -->
     <item type="id" name="nav_filter" />
 
+    <!-- Menu ID for ice item -->
+    <item type="id" name="nav_emergency" />
+
     <!-- Menu ID for Settings menu -->
     <item type="id" name="nav_settings" />
 
diff --git a/res/values/lineage_colors.xml b/res/values/lineage_colors.xml
new file mode 100644
index 0000000..6aee4d2
--- /dev/null
+++ b/res/values/lineage_colors.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2018 The LineageOS 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>
+    <color name="navigation_bar_bg">@android:color/white</color>
+    <color name="navigation_bar_divider">#1f000000</color>
+</resources>
diff --git a/res/values/lineage_strings.xml b/res/values/lineage_strings.xml
new file mode 100644
index 0000000..97ccb8e
--- /dev/null
+++ b/res/values/lineage_strings.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2018 The LineageOS 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+
+    <!--Explanation with icon of Drawer in Contacts. Your medical information ie. Date of birth, Bloodtype, allergic details can be recorded for reference. -->
+    <string name="menu_emergency_information_txt">Emergency information</string>
+
+    <string name="call_via_template">Call via <xliff:g id="account">%1$s</xliff:g></string>
+
+</resources>
\ No newline at end of file
diff --git a/res/values/styles.xml b/res/values/styles.xml
index ffd800f..d31ce80 100644
--- a/res/values/styles.xml
+++ b/res/values/styles.xml
@@ -89,14 +89,14 @@
         <item name="android:popupMenuStyle">@style/PopupMenuStyle</item>
     </style>
 
-    <style name="LaunchScreenTheme" parent="Theme.AppCompat.Light.DarkActionBar">
+    <style name="LaunchScreenTheme" parent="Theme.AppCompat.DayNight.DarkActionBar">
         <item name="android:windowBackground">@drawable/quantum_launchscreen_contacts</item>
-        <!-- Ensure the status bar color matches the background (grey 500) -->
-        <!-- TODO(yaolu): Switch to use quantum_grey if in Google3 -->
-        <item name="android:colorPrimaryDark">#9e9e9e</item>
+        <item name="colorPrimaryDark">@color/primary_color_dark</item>
+        <item name="colorPrimary">@color/primary_color</item>
     </style>
 
     <style name="PeopleActivityTheme" parent="@style/PeopleThemeAppCompat">
+        <item name="android:forceDarkAllowed">true</item>
         <item name="windowActionBar">false</item>
         <item name="windowNoTitle">true</item>
         <item name="android:listSelector">?android:attr/listChoiceBackgroundIndicator</item>
@@ -338,11 +338,13 @@
         since the Alert dialog is private. They are identical anyway. -->
     <style name="ContactsAlertDialogTheme" parent="@android:style/Theme.Material.Light.Dialog">
         <item name="android:colorAccent">@color/primary_color</item>
+        <item name="android:windowBackground">@drawable/dialog_background</item>
     </style>
 
     <style name="ContactsAlertDialogThemeAppCompat" parent="Theme.AppCompat.Light.Dialog.MinWidth">
         <item name="android:colorAccent">@color/primary_color</item>
         <item name="colorAccent">@color/primary_color</item>
+        <item name="android:windowBackground">@drawable/dialog_background</item>
     </style>
 
     <style name="EditKindIconStyle">
@@ -593,4 +595,13 @@
         <item name="android:paddingStart">@dimen/drawer_side_padding</item>
         <item name="android:paddingEnd">@dimen/drawer_label_header_end_padding</item>
     </style>
+
+    <style name="DrawerSecondLineTitleTextStyle" parent="DrawerItemTextStyle">
+        <item name="android:layout_width">match_parent</item>
+    </style>
+
+    <style name="DrawerSecondLineSummaryTextStyle" parent="DrawerItemTextStyle">
+        <item name="android:textColor">@color/quantum_black_secondary_text</item>
+        <item name="android:layout_width">match_parent</item>
+    </style>
 </resources>
diff --git a/src/com/android/contacts/CallUtil.java b/src/com/android/contacts/CallUtil.java
index 0f09df9..d4d80df 100644
--- a/src/com/android/contacts/CallUtil.java
+++ b/src/com/android/contacts/CallUtil.java
@@ -38,6 +38,7 @@
 import com.android.contactsbind.experiments.Flags;
 import com.android.phone.common.PhoneConstants;
 
+import java.util.ArrayList;
 import java.util.List;
 
 /**
@@ -189,6 +190,26 @@
     }
 
     /**
+     * Returns a list of phone accounts that are able to call to numbers with the supplied scheme
+     */
+    public static List<PhoneAccount> getCallCapablePhoneAccounts(Context context, String scheme) {
+        if (!PermissionsUtil.hasPermission(context,
+                android.Manifest.permission.READ_PHONE_STATE)) {
+            return null;
+        }
+        TelecomManager tm = (TelecomManager) context.getSystemService(Context.TELECOM_SERVICE);
+        final ArrayList<PhoneAccount> accounts = new ArrayList<>();
+
+        for (PhoneAccountHandle handle : tm.getCallCapablePhoneAccounts()) {
+            final PhoneAccount account = tm.getPhoneAccount(handle);
+            if (account != null && account.supportsUriScheme(scheme)) {
+                accounts.add(account);
+            }
+        }
+        return accounts;
+    }
+
+    /**
      * Determines if one of the call capable phone accounts defined supports calling with a subject
      * specified.
      *
diff --git a/src/com/android/contacts/activities/PeopleActivity.java b/src/com/android/contacts/activities/PeopleActivity.java
index ceb3d59..62dc48e 100644
--- a/src/com/android/contacts/activities/PeopleActivity.java
+++ b/src/com/android/contacts/activities/PeopleActivity.java
@@ -1214,6 +1214,34 @@
         onFilterMenuItemClicked(intent);
     }
 
+    /*
+     * Behavior when select MyInfo on Navigation drawer.
+     * Launch in the same way as from Settings->MyInfo.
+     * Refer to DisplayOptionsPreferenceFragment's onPreferenceClick.
+     */
+    @Override
+    public void onProfileViewSelected(long profileContactId) {
+        if (profileContactId != -1) {
+            final Uri uri = ContentUris.withAppendedId(ContactsContract.Contacts.CONTENT_URI,
+                    profileContactId);
+            ImplicitIntentsUtil.startQuickContact(this, uri, ScreenType.ME_CONTACT);
+        } else {
+            final Intent intent = new Intent(Intent.ACTION_INSERT,
+                    ContactsContract.Contacts.CONTENT_URI);
+            intent.putExtra(ContactEditorFragment.INTENT_EXTRA_NEW_LOCAL_PROFILE, true);
+            ImplicitIntentsUtil.startActivityInApp(this, intent);
+        }
+    }
+
+    /*
+     * Behavior when select Emergency information on Navigation drawer.
+     */
+    @Override
+    public void onEmergencyViewSelected() {
+        ImplicitIntentsUtil.startActivityOutsideApp(this,
+                ImplicitIntentsUtil.getIntentForEmergencyInfo(this));
+    }
+
     public boolean isGroupView() {
         return mCurrentView == ContactsView.GROUP_VIEW;
     }
diff --git a/src/com/android/contacts/drawer/DrawerAdapter.java b/src/com/android/contacts/drawer/DrawerAdapter.java
index b5a1ea7..f6898b5 100644
--- a/src/com/android/contacts/drawer/DrawerAdapter.java
+++ b/src/com/android/contacts/drawer/DrawerAdapter.java
@@ -18,6 +18,8 @@
 
 import android.app.Activity;
 import android.graphics.PorterDuff;
+import android.net.Uri;
+import android.provider.ContactsContract.DisplayNameSources;
 import androidx.annotation.LayoutRes;
 import android.view.LayoutInflater;
 import android.view.View;
@@ -26,12 +28,15 @@
 import android.widget.ImageView;
 import android.widget.TextView;
 
+import com.android.contacts.ContactPhotoManager;
 import com.android.contacts.R;
 import com.android.contacts.activities.PeopleActivity.ContactsView;
 import com.android.contacts.group.GroupListItem;
 import com.android.contacts.list.ContactListFilter;
 import com.android.contacts.model.account.AccountDisplayInfo;
 import com.android.contacts.model.account.AccountDisplayInfoFactory;
+import com.android.contacts.profile.ProfileItem;
+import com.android.contacts.util.ImplicitIntentsUtil;
 import com.android.contacts.util.SharedPreferenceUtil;
 import com.android.contactsbind.HelpUtils;
 import com.android.contactsbind.ObjectFactory;
@@ -49,9 +54,11 @@
     private static final int VIEW_TYPE_CREATE_LABEL = 5;
     private static final int VIEW_TYPE_NAV_SPACER = 6;
     private static final int VIEW_TYPE_NAV_DIVIDER = 7;
+    private static final int VIEW_TYPE_PROFILE_ENTRY = 8;
+    private static final int VIEW_TYPE_EMERGENCY_ITEM = 9;
 
     // This count must be updated if we add more view types.
-    private static final int VIEW_TYPE_COUNT = 9;
+    private static final int VIEW_TYPE_COUNT = 11;
 
     private static final int TYPEFACE_STYLE_ACTIVATE = R.style.DrawerItemTextActiveStyle;
     private static final int TYPEFACE_STYLE_INACTIVE = R.style.DrawerItemTextInactiveStyle;
@@ -67,21 +74,28 @@
 
     // Adapter elements, ordered in this way mItemsList. The ordering is based on:
     //  [Navigation spacer item]
+    //  [Profile Entry item]
     //  [Primary items] (Contacts, Suggestions)
     //  [Group Header]
     //  [Groups]
     //  [Create Label button]
     //  [Account Header]
     //  [Accounts]
+    //  [Emergency information]
+    //  [Emergency information spacer item]
     //  [Misc items] (a divider, Settings, Help & Feedback)
     //  [Navigation spacer item]
     private NavSpacerItem mNavSpacerItem = null;
+    private ProfileEntryItem mProfileEntryItem = null;
+    private DividerItem mProfileEntryItemDivider = null;
     private List<PrimaryItem> mPrimaryItems = new ArrayList<>();
     private HeaderItem mGroupHeader = null;
     private List<GroupEntryItem> mGroupEntries = new ArrayList<>();
     private BaseDrawerItem mCreateLabelButton = null;
     private HeaderItem mAccountHeader = null;
     private List<AccountEntryItem> mAccountEntries = new ArrayList<>();
+    private BaseDrawerItem mEmergencyItem = null;
+    private DividerItem mEmergencyItemDivider = null;
     private List<BaseDrawerItem> mMiscItems = new ArrayList<>();
 
     private List<BaseDrawerItem> mItemsList = new ArrayList<>();
@@ -97,6 +111,7 @@
     private void initializeDrawerMenuItems() {
         // Spacer item for dividing sections in drawer
         mNavSpacerItem = new NavSpacerItem(R.id.nav_drawer_spacer);
+        mProfileEntryItemDivider = new DividerItem();
         // Primary items
         mPrimaryItems.add(new PrimaryItem(R.id.nav_all_contacts, R.string.contactsList,
                 R.drawable.quantum_ic_account_circle_vd_theme_24, ContactsView.ALL_CONTACTS));
@@ -111,6 +126,11 @@
         // Create Label Button
         mCreateLabelButton = new BaseDrawerItem(VIEW_TYPE_CREATE_LABEL, R.id.nav_create_label,
                 R.string.menu_new_group_action_bar, R.drawable.quantum_ic_add_vd_theme_24);
+        // Emergency information Item
+        mEmergencyItem = new BaseDrawerItem(VIEW_TYPE_EMERGENCY_ITEM, R.id.nav_emergency,
+                R.string.menu_emergency_information_txt,
+                R.drawable.quantum_ic_drawer_emergency_info_24);
+        mEmergencyItemDivider = new DividerItem();
         // Misc Items
         mMiscItems.add(new DividerItem());
         mMiscItems.add(new MiscItem(R.id.nav_settings, R.string.menu_settings,
@@ -125,6 +145,10 @@
     private void rebuildItemsList() {
         mItemsList.clear();
         mItemsList.add(mNavSpacerItem);
+        if (mProfileEntryItem != null) {
+            mItemsList.add(mProfileEntryItem);
+            mItemsList.add(mProfileEntryItemDivider);
+        }
         mItemsList.addAll(mPrimaryItems);
         if (mAreGroupWritableAccountsAvailable || !mGroupEntries.isEmpty()) {
             mItemsList.add(mGroupHeader);
@@ -137,10 +161,19 @@
             mItemsList.add(mAccountHeader);
         }
         mItemsList.addAll(mAccountEntries);
+        if (ImplicitIntentsUtil.getIntentForEmergencyInfo(mActivity) != null) {
+            mItemsList.add(mEmergencyItemDivider);
+            mItemsList.add(mEmergencyItem);
+        }
         mItemsList.addAll(mMiscItems);
         mItemsList.add(mNavSpacerItem);
     }
 
+    public void setProfile(ProfileItem profileItem) {
+        mProfileEntryItem = new ProfileEntryItem(R.id.nav_myprofile, profileItem);
+        notifyChangeAndRebuildList();
+    }
+
     public void setGroups(List<GroupListItem> groupListItems, boolean areGroupWritable) {
         final ArrayList<GroupEntryItem> groupEntries = new ArrayList<GroupEntryItem>();
         for (GroupListItem group : groupListItems) {
@@ -188,6 +221,8 @@
     public View getView(int position, View view, ViewGroup viewGroup) {
         final BaseDrawerItem drawerItem = getItem(position);
         switch (drawerItem.viewType) {
+            case VIEW_TYPE_PROFILE_ENTRY:
+                return getProfileEntryView((ProfileEntryItem) drawerItem, view, viewGroup);
             case VIEW_TYPE_PRIMARY_ITEM:
                 return getPrimaryItemView((PrimaryItem) drawerItem, view, viewGroup);
             case VIEW_TYPE_HEADER_ITEM:
@@ -204,6 +239,8 @@
                 return getBaseItemView(R.layout.nav_drawer_spacer, view, viewGroup);
             case VIEW_TYPE_NAV_DIVIDER:
                 return getBaseItemView(R.layout.drawer_horizontal_divider, view, viewGroup);
+            case VIEW_TYPE_EMERGENCY_ITEM:
+                return getDrawerItemView(drawerItem, view, viewGroup);
         }
         throw new IllegalStateException("Unknown drawer item " + drawerItem);
     }
@@ -243,6 +280,52 @@
         return result;
     }
 
+    private View getProfileEntryView(ProfileEntryItem item, View result, ViewGroup parent) {
+        if (result == null) {
+            result = mInflater.inflate(R.layout.drawer_secondline_item, parent, false);
+            result.setId(item.id);
+        }
+
+        final ProfileItem profile = item.profile;
+
+        final ImageView icon = (ImageView) result.findViewById(R.id.icon);
+        icon.setScaleType(ImageView.ScaleType.CENTER);
+        if (profile.HasProfile()) {
+            if (profile.getPhotoId() != 0) {
+                icon.setScaleType(ImageView.ScaleType.FIT_CENTER);
+                getPhotoLoader().loadThumbnail(icon, profile.getPhotoId(), false, true, null);
+            } else if (profile.getPhotoUri() != null) {
+                icon.setScaleType(ImageView.ScaleType.FIT_CENTER);
+                getPhotoLoader().loadDirectoryPhoto(icon, Uri.parse(profile.getPhotoUri()), false,
+                        true, null);
+            } else {
+                // There are cases where the image cache may remain, so update once by default.
+                getPhotoLoader().loadDirectoryPhoto(icon, null, false, true, null);
+                icon.setImageResource(R.drawable.quantum_ic_drawer_my_info_32);
+            }
+        } else {
+            // There are cases where the image cache may remain, so update once by default.
+            getPhotoLoader().loadDirectoryPhoto(icon, null, false, true, null);
+            icon.setImageResource(R.drawable.quantum_ic_drawer_my_info_32);
+        }
+
+        final TextView title = (TextView) result.findViewById(R.id.title);
+        title.setText(mActivity.getString(R.string.settings_my_info_title));
+        final TextView summary = (TextView) result.findViewById(R.id.summary);
+        if (profile.HasProfile()) {
+            summary.setText(profile.getDisplayName());
+            if (profile.getDisplayNameSource() == DisplayNameSources.PHONE) {
+                summary.setTextDirection(TextView.TEXT_DIRECTION_LTR);
+            }
+        } else {
+            summary.setText(mActivity.getString(R.string.set_up_profile));
+        }
+        // Apply setTextAppearance to title only.
+        updateSelectedStatus(title, icon, false);
+        result.setTag(profile.HasProfile() ? profile.getContactId() : -1);
+        return result;
+    }
+
     private View getGroupEntryView(GroupEntryItem item, View result, ViewGroup parent) {
         if (result == null || !(result.getTag() instanceof GroupEntryItem)) {
             result = mInflater.inflate(R.layout.drawer_item, parent, false);
@@ -274,7 +357,8 @@
         final AccountDisplayInfo displayableAccount =
                 mAccountDisplayFactory.getAccountDisplayInfoFor(item.account);
         final TextView textView = ((TextView) result.findViewById(R.id.title));
-        textView.setText(displayableAccount.getNameLabel());
+        textView.setText(mActivity.getPackageName().equals(account.accountType) ?
+                mActivity.getString(R.string.account_phone) : displayableAccount.getNameLabel());
         final boolean activated = account.equals(mSelectedAccount)
                 && mSelectedView == ContactsView.ACCOUNT_VIEW;
         textView.setTextAppearance(mActivity, activated
@@ -412,6 +496,16 @@
         }
     }
 
+    // Navigation drawer item for a profile.
+    public static class ProfileEntryItem extends BaseDrawerItem {
+        private final ProfileItem profile;
+
+        public ProfileEntryItem(int id, ProfileItem profileItem) {
+            super(VIEW_TYPE_PROFILE_ENTRY, id, /* textResId */ 0, /* iconResId */ 0);
+            this.profile = profileItem;
+        }
+    }
+
     // Navigation drawer item for a group.
     public static class GroupEntryItem extends BaseDrawerItem {
         private final GroupListItem group;
@@ -431,4 +525,8 @@
             this.account = account;
         }
     }
+
+    private ContactPhotoManager getPhotoLoader() {
+        return ContactPhotoManager.getInstance(mActivity);
+    }
 }
diff --git a/src/com/android/contacts/drawer/DrawerFragment.java b/src/com/android/contacts/drawer/DrawerFragment.java
index 485513a..2bcfa25 100644
--- a/src/com/android/contacts/drawer/DrawerFragment.java
+++ b/src/com/android/contacts/drawer/DrawerFragment.java
@@ -26,6 +26,8 @@
 import android.net.Uri;
 import android.os.Bundle;
 import android.os.Handler;
+import android.provider.ContactsContract.DisplayNameSources;
+import android.text.TextUtils;
 import android.view.Gravity;
 import android.view.LayoutInflater;
 import android.view.View;
@@ -46,6 +48,8 @@
 import com.android.contacts.model.account.AccountInfo;
 import com.android.contacts.model.account.AccountsLoader;
 import com.android.contacts.model.account.AccountsLoader.AccountsListener;
+import com.android.contacts.profile.ProfileLoader;
+import com.android.contacts.profile.ProfileLoader.ProfileQuery;
 import com.android.contacts.util.AccountFilterUtil;
 import com.android.contactsbind.ObjectFactory;
 
@@ -58,6 +62,7 @@
     private static final int LOADER_GROUPS = 1;
     private static final int LOADER_ACCOUNTS = 2;
     private static final int LOADER_FILTERS = 3;
+    private static final int LOADER_PROFILE = 4;
 
     private static final String KEY_CONTACTS_VIEW = "contactsView";
     private static final String KEY_SELECTED_GROUP = "selectedGroup";
@@ -142,6 +147,25 @@
                 }
             };
 
+    private final LoaderManager.LoaderCallbacks<Cursor> mProfileLoaderListener =
+            new LoaderManager.LoaderCallbacks<Cursor>() {
+                @Override
+                public CursorLoader onCreateLoader(int id, Bundle args) {
+                    return new ProfileLoader(getActivity(),
+                            ProfileLoader.getProjection(getActivity()));
+                }
+
+                @Override
+                public void onLoadFinished(Loader<Cursor> loader, Cursor data) {
+                    // Sending MyInfo information to DrawerAdapter
+                    // when MyInfo exists(User registered MyInfo) or not.
+                    mDrawerAdapter.setProfile(ProfileLoader.getProfileItem(getActivity(), data));
+                }
+
+                public void onLoaderReset(Loader<Cursor> loader) {
+                }
+            };
+
     public DrawerFragment() {}
 
     @Override
@@ -221,6 +245,7 @@
         AccountsLoader.loadAccounts(this, LOADER_ACCOUNTS,
                 AccountTypeManager.AccountFilter.GROUPS_WRITABLE);
         getLoaderManager().initLoader(LOADER_GROUPS, null, mGroupListLoaderListener);
+        getLoaderManager().initLoader(LOADER_PROFILE, null, mProfileLoaderListener);
     }
 
     @Override
@@ -236,7 +261,10 @@
                 return;
             }
             final int viewId = v.getId();
-            if (viewId == R.id.nav_all_contacts) {
+            if (viewId == R.id.nav_myprofile) {
+                final long profileContactId = (long) v.getTag();
+                mListener.onProfileViewSelected(profileContactId);
+            } else if (viewId == R.id.nav_all_contacts) {
                 mListener.onContactsViewSelected(ContactsView.ALL_CONTACTS);
                 setNavigationItemChecked(ContactsView.ALL_CONTACTS);
             } else if (viewId == R.id.nav_assistant) {
@@ -254,6 +282,8 @@
                 setNavigationItemChecked(ContactsView.ACCOUNT_VIEW);
             } else if (viewId == R.id.nav_create_label) {
                 mListener.onCreateLabelButtonClicked();
+            } else if (viewId == R.id.nav_emergency) {
+                mListener.onEmergencyViewSelected();
             } else if (viewId == R.id.nav_settings) {
                 mListener.onOpenSettings();
             } else if (viewId == R.id.nav_help) {
@@ -313,6 +343,8 @@
         void onCreateLabelButtonClicked();
         void onOpenSettings();
         void onLaunchHelpFeedback();
+        void onProfileViewSelected(long profileContactId);
+        void onEmergencyViewSelected();
     }
 
     private class WindowInsetsListener implements View.OnApplyWindowInsetsListener {
diff --git a/src/com/android/contacts/lettertiles/LetterTileDrawable.java b/src/com/android/contacts/lettertiles/LetterTileDrawable.java
index b80fd4f..e5ef2ca 100644
--- a/src/com/android/contacts/lettertiles/LetterTileDrawable.java
+++ b/src/com/android/contacts/lettertiles/LetterTileDrawable.java
@@ -160,7 +160,6 @@
             sPaint.getTextBounds(sFirstChar, 0, 1, sRect);
             sPaint.setTypeface(Typeface.create("sans-serif", Typeface.NORMAL));
             sPaint.setColor(sTileFontColor);
-            sPaint.setAlpha(ALPHA);
 
             // Draw the letter in the canvas, vertically shifted up or down by the user-defined
             // offset
diff --git a/src/com/android/contacts/list/AccountFilterActivity.java b/src/com/android/contacts/list/AccountFilterActivity.java
index 6559489..e693f3d 100644
--- a/src/com/android/contacts/list/AccountFilterActivity.java
+++ b/src/com/android/contacts/list/AccountFilterActivity.java
@@ -62,6 +62,7 @@
 
         mListView = (ListView) findViewById(android.R.id.list);
         mListView.setOnItemClickListener(this);
+        mListView.setDivider(null);
 
         ActionBar actionBar = getActionBar();
         if (actionBar != null) {
diff --git a/src/com/android/contacts/list/DefaultContactBrowseListFragment.java b/src/com/android/contacts/list/DefaultContactBrowseListFragment.java
index 2aacabe..fd6fc8c 100644
--- a/src/com/android/contacts/list/DefaultContactBrowseListFragment.java
+++ b/src/com/android/contacts/list/DefaultContactBrowseListFragment.java
@@ -593,11 +593,7 @@
                         .getInteger(Experiments.PULL_TO_REFRESH_CANCEL_REFRESH_MILLIS));
             }
         });
-        mSwipeRefreshLayout.setColorSchemeResources(
-                R.color.swipe_refresh_color1,
-                R.color.swipe_refresh_color2,
-                R.color.swipe_refresh_color3,
-                R.color.swipe_refresh_color4);
+        mSwipeRefreshLayout.setColorSchemeResources(R.color.primary_color);
         mSwipeRefreshLayout.setDistanceToTriggerSync(
                 (int) getResources().getDimension(R.dimen.pull_to_refresh_distance));
     }
diff --git a/src/com/android/contacts/list/PhoneNumberListAdapter.java b/src/com/android/contacts/list/PhoneNumberListAdapter.java
index d459d47..c7b754c 100644
--- a/src/com/android/contacts/list/PhoneNumberListAdapter.java
+++ b/src/com/android/contacts/list/PhoneNumberListAdapter.java
@@ -19,6 +19,7 @@
 import android.content.Context;
 import android.content.CursorLoader;
 import android.database.Cursor;
+import android.database.MatrixCursor;
 import android.net.Uri;
 import android.net.Uri.Builder;
 import android.provider.ContactsContract;
@@ -28,6 +29,7 @@
 import android.provider.ContactsContract.Contacts;
 import android.provider.ContactsContract.Data;
 import android.provider.ContactsContract.Directory;
+import android.telephony.PhoneNumberUtils;
 import android.text.TextUtils;
 import android.util.Log;
 import android.view.View;
@@ -47,6 +49,7 @@
 import com.android.contacts.preference.ContactsPreferences;
 import com.android.contacts.util.Constants;
 
+import com.android.contacts.util.CursorUtils;
 import com.google.common.collect.Lists;
 
 import java.util.ArrayList;
@@ -654,4 +657,27 @@
     public void setListener(Listener listener) {
         mListener = listener;
     }
+
+    @Override
+    public void changeCursor(int partitionIndex, Cursor cursor) {
+        String previousNumber = "";
+        long previousContactId = -1;
+        MatrixCursor matrixCursor = new MatrixCursor(cursor.getColumnNames());
+        try {
+            while (cursor.moveToNext()) {
+                long currentContactId = cursor.getLong(PhoneQuery.CONTACT_ID);
+                String currentNumber = cursor.getString(PhoneQuery.PHONE_NUMBER);
+                currentNumber = PhoneNumberUtils.normalizeNumber(currentNumber);
+                if (currentContactId == previousContactId && currentNumber.equals(previousNumber)) {
+                    continue;
+                }
+                previousNumber = currentNumber;
+                previousContactId = currentContactId;
+                matrixCursor.addRow(CursorUtils.getObjectFromCursor(cursor));
+            }
+        } finally {
+            cursor.close();
+        }
+        super.changeCursor(partitionIndex, matrixCursor);
+    }
 }
diff --git a/src/com/android/contacts/model/AccountTypeManager.java b/src/com/android/contacts/model/AccountTypeManager.java
index 75beb1c..253097b 100644
--- a/src/com/android/contacts/model/AccountTypeManager.java
+++ b/src/com/android/contacts/model/AccountTypeManager.java
@@ -80,6 +80,7 @@
 
     public static final String BROADCAST_ACCOUNTS_CHANGED = AccountTypeManager.class.getName() +
             ".AccountsChanged";
+    public static final String DEVICE_ACCOUNT_NAME = "DEVICE";
 
     public enum AccountFilter implements Predicate<AccountInfo> {
         ALL {
@@ -398,7 +399,7 @@
      */
     public AccountTypeManagerImpl(Context context) {
         mContext = context;
-        mLocalAccountLocator = new DeviceLocalAccountLocator(context, AccountManager.get(context));
+        mLocalAccountLocator = new DeviceLocalAccountLocator(context);
         mTypeProvider = new AccountTypeProvider(context);
         mFallbackAccountType = new FallbackAccountType(context);
 
@@ -629,16 +630,24 @@
     private List<AccountWithDataSet> getAccountsWithDataSets(Account[] accounts,
             AccountTypeProvider typeProvider) {
         List<AccountWithDataSet> result = new ArrayList<>();
+        // add local device account
+        populateAccountsDataSet(typeProvider, new Account(DEVICE_ACCOUNT_NAME,
+                mContext.getPackageName()), result);
         for (Account account : accounts) {
-            final List<AccountType> types = typeProvider.getAccountTypes(account.type);
-            for (AccountType type : types) {
-                result.add(new AccountWithDataSet(
-                        account.name, account.type, type.dataSet));
-            }
+            populateAccountsDataSet(typeProvider, account, result);
         }
         return result;
     }
 
+    private void populateAccountsDataSet(AccountTypeProvider typeProvider, Account account,
+            List<AccountWithDataSet> result) {
+        final List<AccountType> types = typeProvider.getAccountTypes(account.type);
+        for (AccountType type : types) {
+            result.add(new AccountWithDataSet(
+                    account.name, account.type, type.dataSet));
+        }
+    }
+
     /**
      * Returns the default google account specified in preferences, the first google account
      * if it is not specified in preferences or is no longer on the device, and null otherwise.
diff --git a/src/com/android/contacts/model/DeviceLocalAccountLocator.java b/src/com/android/contacts/model/DeviceLocalAccountLocator.java
index e8a2ba0..89f1ce2 100644
--- a/src/com/android/contacts/model/DeviceLocalAccountLocator.java
+++ b/src/com/android/contacts/model/DeviceLocalAccountLocator.java
@@ -21,7 +21,6 @@
 import android.provider.ContactsContract;
 
 import com.android.contacts.model.account.AccountWithDataSet;
-import com.android.contacts.model.account.GoogleAccountType;
 
 import java.util.Collections;
 import java.util.List;
@@ -32,12 +31,10 @@
 public final class DeviceLocalAccountLocator {
 
     private final Context mContext;
-    private final AccountManager mAccountManager;
     private final List<AccountWithDataSet> mLocalAccount;
 
-    public DeviceLocalAccountLocator(Context context, AccountManager accountManager) {
+    public DeviceLocalAccountLocator(Context context) {
         mContext = context;
-        mAccountManager = accountManager;
         mLocalAccount = Collections.singletonList(AccountWithDataSet.getLocalAccount(context));
     }
 
@@ -45,10 +42,7 @@
      * Returns a list of device local accounts
      */
     public List<AccountWithDataSet> getDeviceLocalAccounts() {
-        @SuppressWarnings("MissingPermission") final Account[] accounts = mAccountManager
-                .getAccountsByType(GoogleAccountType.ACCOUNT_TYPE);
-
-        if (accounts.length > 0 && !mLocalAccount.get(0).hasData(mContext)) {
+        if (!mLocalAccount.get(0).hasData(mContext)) {
             return Collections.emptyList();
         } else {
             return mLocalAccount;
diff --git a/src/com/android/contacts/model/account/AccountTypeProvider.java b/src/com/android/contacts/model/account/AccountTypeProvider.java
index 2888dfa..95b998c 100644
--- a/src/com/android/contacts/model/account/AccountTypeProvider.java
+++ b/src/com/android/contacts/model/account/AccountTypeProvider.java
@@ -82,6 +82,9 @@
      * </p>
      */
     public List<AccountType> getAccountTypes(String accountType) {
+        if (mContext.getPackageName().equals(accountType)) {
+            accountType = null;
+        }
         // ConcurrentHashMap doesn't support null keys
         if (accountType == null || mLocalAccountTypeFactory.classifyAccount(accountType)
                 == DeviceLocalAccountTypeFactory.TYPE_SIM) {
diff --git a/src/com/android/contacts/model/account/BaseAccountType.java b/src/com/android/contacts/model/account/BaseAccountType.java
index 59ad742..1e94e45 100644
--- a/src/com/android/contacts/model/account/BaseAccountType.java
+++ b/src/com/android/contacts/model/account/BaseAccountType.java
@@ -122,7 +122,7 @@
         this.accountType = null;
         this.dataSet = null;
         this.titleRes = R.string.account_phone;
-        this.iconRes = R.mipmap.ic_contacts_launcher;
+        this.iconRes = R.mipmap.ic_launcher;
     }
 
     protected static EditType buildPhoneType(int type) {
diff --git a/src/com/android/contacts/model/account/DeviceLocalAccountType.java b/src/com/android/contacts/model/account/DeviceLocalAccountType.java
index c6c7d07..ac190af 100644
--- a/src/com/android/contacts/model/account/DeviceLocalAccountType.java
+++ b/src/com/android/contacts/model/account/DeviceLocalAccountType.java
@@ -15,14 +15,34 @@
  */
 package com.android.contacts.model.account;
 
+import android.content.ContentValues;
 import android.content.Context;
+import android.provider.ContactsContract.CommonDataKinds.Event;
+import android.provider.ContactsContract.CommonDataKinds.Relation;
+
+import com.android.contacts.R;
+import com.android.contacts.model.dataitem.DataKind;
+import com.android.contacts.util.CommonDateUtils;
+import com.android.contactsbind.FeedbackHelper;
+
+import com.google.common.collect.Lists;
 
 public class DeviceLocalAccountType extends FallbackAccountType {
 
+    private static final String TAG = "DeviceLocalAccountType";
+
     private final boolean mGroupsEditable;
 
     public DeviceLocalAccountType(Context context, boolean groupsEditable) {
         super(context);
+
+        try {
+            addDataKindRelation(context);
+            addDataKindEvent(context);
+        } catch (DefinitionException e) {
+            FeedbackHelper.sendFeedback(context, TAG, "Failed to build fallback account type", e);
+        }
+
         mGroupsEditable = groupsEditable;
     }
 
@@ -43,4 +63,64 @@
                 new AccountDisplayInfo(account, getDisplayLabel(context), getDisplayLabel(context),
                         getDisplayIcon(context), true), this);
     }
+
+    private DataKind addDataKindRelation(Context context) throws DefinitionException {
+        DataKind kind = addKind(new DataKind(Relation.CONTENT_ITEM_TYPE,
+                R.string.relationLabelsGroup, Weight.RELATIONSHIP, true));
+        kind.actionHeader = new RelationActionInflater();
+        kind.actionBody = new SimpleInflater(Relation.NAME);
+
+        kind.typeColumn = Relation.TYPE;
+        kind.typeList = Lists.newArrayList();
+        kind.typeList.add(buildRelationType(Relation.TYPE_ASSISTANT));
+        kind.typeList.add(buildRelationType(Relation.TYPE_BROTHER));
+        kind.typeList.add(buildRelationType(Relation.TYPE_CHILD));
+        kind.typeList.add(buildRelationType(Relation.TYPE_DOMESTIC_PARTNER));
+        kind.typeList.add(buildRelationType(Relation.TYPE_FATHER));
+        kind.typeList.add(buildRelationType(Relation.TYPE_FRIEND));
+        kind.typeList.add(buildRelationType(Relation.TYPE_MANAGER));
+        kind.typeList.add(buildRelationType(Relation.TYPE_MOTHER));
+        kind.typeList.add(buildRelationType(Relation.TYPE_PARENT));
+        kind.typeList.add(buildRelationType(Relation.TYPE_PARTNER));
+        kind.typeList.add(buildRelationType(Relation.TYPE_REFERRED_BY));
+        kind.typeList.add(buildRelationType(Relation.TYPE_RELATIVE));
+        kind.typeList.add(buildRelationType(Relation.TYPE_SISTER));
+        kind.typeList.add(buildRelationType(Relation.TYPE_SPOUSE));
+        kind.typeList.add(buildRelationType(Relation.TYPE_CUSTOM).setSecondary(true)
+                .setCustomColumn(Relation.LABEL));
+
+        kind.defaultValues = new ContentValues();
+        kind.defaultValues.put(Relation.TYPE, Relation.TYPE_SPOUSE);
+
+        kind.fieldList = Lists.newArrayList();
+        kind.fieldList.add(new EditField(Relation.DATA, R.string.relationLabelsGroup,
+                FLAGS_RELATION));
+
+        return kind;
+    }
+
+    private DataKind addDataKindEvent(Context context) throws DefinitionException {
+        DataKind kind = addKind(new DataKind(Event.CONTENT_ITEM_TYPE,
+                    R.string.eventLabelsGroup, Weight.EVENT, true));
+        kind.actionHeader = new EventActionInflater();
+        kind.actionBody = new SimpleInflater(Event.START_DATE);
+
+        kind.typeColumn = Event.TYPE;
+        kind.typeList = Lists.newArrayList();
+        kind.dateFormatWithoutYear = CommonDateUtils.NO_YEAR_DATE_FORMAT;
+        kind.dateFormatWithYear = CommonDateUtils.FULL_DATE_FORMAT;
+        kind.typeList.add(buildEventType(Event.TYPE_BIRTHDAY, true).setSpecificMax(1));
+        kind.typeList.add(buildEventType(Event.TYPE_ANNIVERSARY, false));
+        kind.typeList.add(buildEventType(Event.TYPE_OTHER, false));
+        kind.typeList.add(buildEventType(Event.TYPE_CUSTOM, false).setSecondary(true)
+                .setCustomColumn(Event.LABEL));
+
+        kind.defaultValues = new ContentValues();
+        kind.defaultValues.put(Event.TYPE, Event.TYPE_BIRTHDAY);
+
+        kind.fieldList = Lists.newArrayList();
+        kind.fieldList.add(new EditField(Event.DATA, R.string.eventLabelsGroup, FLAGS_EVENT));
+
+        return kind;
+    }
 }
diff --git a/src/com/android/contacts/model/account/FallbackAccountType.java b/src/com/android/contacts/model/account/FallbackAccountType.java
index d7ea37a..cbd101a 100644
--- a/src/com/android/contacts/model/account/FallbackAccountType.java
+++ b/src/com/android/contacts/model/account/FallbackAccountType.java
@@ -20,6 +20,8 @@
 import android.content.Context;
 import android.graphics.PorterDuff;
 import android.graphics.drawable.Drawable;
+import android.provider.ContactsContract.CommonDataKinds.Email;
+import android.provider.ContactsContract.CommonDataKinds.Phone;
 import androidx.core.content.ContextCompat;
 import androidx.core.content.res.ResourcesCompat;
 
@@ -27,6 +29,8 @@
 import com.android.contacts.model.dataitem.DataKind;
 import com.android.contactsbind.FeedbackHelper;
 
+import com.google.common.collect.Lists;
+
 public class FallbackAccountType extends BaseAccountType {
     private static final String TAG = "FallbackAccountType";
 
@@ -107,4 +111,45 @@
                 new AccountDisplayInfo(account, account.name,
                         getDisplayLabel(context), getDisplayIcon(context), false), this);
     }
+
+    @Override
+    protected DataKind addDataKindPhone(Context context) throws DefinitionException {
+        final DataKind kind = super.addDataKindPhone(context);
+
+        kind.typeColumn = Phone.TYPE;
+        kind.typeList = Lists.newArrayList();
+        kind.typeList.add(buildPhoneType(Phone.TYPE_MOBILE));
+        kind.typeList.add(buildPhoneType(Phone.TYPE_WORK));
+        kind.typeList.add(buildPhoneType(Phone.TYPE_HOME));
+        kind.typeList.add(buildPhoneType(Phone.TYPE_MAIN));
+        kind.typeList.add(buildPhoneType(Phone.TYPE_FAX_WORK).setSecondary(true));
+        kind.typeList.add(buildPhoneType(Phone.TYPE_FAX_HOME).setSecondary(true));
+        kind.typeList.add(buildPhoneType(Phone.TYPE_PAGER).setSecondary(true));
+        kind.typeList.add(buildPhoneType(Phone.TYPE_OTHER));
+        kind.typeList.add(buildPhoneType(Phone.TYPE_CUSTOM).setSecondary(true)
+                .setCustomColumn(Phone.LABEL));
+
+        kind.fieldList = Lists.newArrayList();
+        kind.fieldList.add(new EditField(Phone.NUMBER, R.string.phoneLabelsGroup, FLAGS_PHONE));
+
+        return kind;
+    }
+
+    @Override
+    protected DataKind addDataKindEmail(Context context) throws DefinitionException {
+        final DataKind kind = super.addDataKindEmail(context);
+
+        kind.typeColumn = Email.TYPE;
+        kind.typeList = Lists.newArrayList();
+        kind.typeList.add(buildEmailType(Email.TYPE_HOME));
+        kind.typeList.add(buildEmailType(Email.TYPE_WORK));
+        kind.typeList.add(buildEmailType(Email.TYPE_OTHER));
+        kind.typeList.add(buildEmailType(Email.TYPE_CUSTOM).setSecondary(true).setCustomColumn(
+                Email.LABEL));
+
+        kind.fieldList = Lists.newArrayList();
+        kind.fieldList.add(new EditField(Email.DATA, R.string.emailLabelsGroup, FLAGS_EMAIL));
+
+        return kind;
+    }
 }
diff --git a/src/com/android/contacts/preference/DisplayOptionsPreferenceFragment.java b/src/com/android/contacts/preference/DisplayOptionsPreferenceFragment.java
index 7097be3..f11fcbd 100644
--- a/src/com/android/contacts/preference/DisplayOptionsPreferenceFragment.java
+++ b/src/com/android/contacts/preference/DisplayOptionsPreferenceFragment.java
@@ -51,6 +51,7 @@
 import android.view.View;
 import android.view.ViewGroup;
 import android.widget.FrameLayout;
+import android.widget.ListView;
 
 import com.android.contacts.ContactsUtils;
 import com.android.contacts.R;
@@ -216,6 +217,11 @@
         LocalBroadcastManager.getInstance(getActivity()).registerReceiver(
                 mSaveServiceListener,
                 new IntentFilter(SimImportService.BROADCAST_SIM_IMPORT_COMPLETE));
+
+        ListView lv = view.findViewById(android.R.id.list);
+        if (lv != null) {
+            lv.setDivider(null);
+        }
     }
 
     @Override
diff --git a/src/com/android/contacts/profile/ProfileItem.java b/src/com/android/contacts/profile/ProfileItem.java
new file mode 100644
index 0000000..fcf43d1
--- /dev/null
+++ b/src/com/android/contacts/profile/ProfileItem.java
@@ -0,0 +1,48 @@
+package com.android.contacts.profile;
+
+/**
+ * Meta-data for a contact profile.
+ */
+public final class ProfileItem {
+
+    private final String mDisplayName;
+    private final long mContactId;
+    private final long mPhotoId;
+    private final String mPhotoUri;
+    private final int mDisplayNameSource;
+    private final boolean mHasProfile;
+
+    public ProfileItem(String displayName, long contactId, long photoId, String photoUri,
+                         int displayNameSource, boolean hasProfile) {
+        mDisplayName = displayName;
+        mContactId = contactId;
+        mPhotoId = photoId;
+        mPhotoUri = photoUri;
+        mDisplayNameSource = displayNameSource;
+        mHasProfile = hasProfile;
+    }
+
+    public String getDisplayName() {
+        return mDisplayName;
+    }
+
+    public long getContactId() {
+        return mContactId;
+    }
+
+    public long getPhotoId() {
+        return mPhotoId;
+    }
+
+    public String getPhotoUri() {
+        return mPhotoUri;
+    }
+
+    public int getDisplayNameSource() {
+        return mDisplayNameSource;
+    }
+
+    public boolean HasProfile() {
+        return mHasProfile;
+    }
+}
\ No newline at end of file
diff --git a/src/com/android/contacts/profile/ProfileLoader.java b/src/com/android/contacts/profile/ProfileLoader.java
new file mode 100644
index 0000000..68c5a6b
--- /dev/null
+++ b/src/com/android/contacts/profile/ProfileLoader.java
@@ -0,0 +1,107 @@
+package com.android.contacts.profile;
+
+import android.content.Context;
+import android.content.CursorLoader;
+import android.database.Cursor;
+import android.provider.ContactsContract.Contacts;
+import android.provider.ContactsContract.DisplayNameSources;
+import android.provider.ContactsContract.Profile;
+import android.text.TextUtils;
+import com.android.contacts.R;
+import com.android.contacts.preference.ContactsPreferences;
+
+/**
+ * Load MyProfile information for display on the navigation drawer.
+ */
+public final class ProfileLoader extends CursorLoader {
+
+    /**
+     * The projections that are used to obtain user profile
+     */
+    public static final class ProfileQuery {
+        /**
+         * Not instantiable.
+         */
+        private ProfileQuery() {}
+
+        public static final String[] PROFILE_PROJECTION_PRIMARY = new String[] {
+                Contacts._ID,                           // 0
+                Contacts.DISPLAY_NAME_PRIMARY,          // 1
+                Contacts.IS_USER_PROFILE,               // 2
+                Contacts.PHOTO_ID,                      // 3
+                Contacts.PHOTO_THUMBNAIL_URI,           // 4
+                Contacts.DISPLAY_NAME_SOURCE            // 5
+        };
+
+        public static final String[] PROFILE_PROJECTION_ALTERNATIVE = new String[] {
+                Contacts._ID,                           // 0
+                Contacts.DISPLAY_NAME_ALTERNATIVE,      // 1
+                Contacts.IS_USER_PROFILE,               // 2
+                Contacts.PHOTO_ID,                      // 3
+                Contacts.PHOTO_THUMBNAIL_URI,           // 4
+                Contacts.DISPLAY_NAME_SOURCE            // 5
+        };
+
+        public static final int CONTACT_ID               = 0;
+        public static final int CONTACT_DISPLAY_NAME     = 1;
+        public static final int CONTACT_IS_USER_PROFILE  = 2;
+        public static final int CONTACT_PHOTO_ID         = 3;
+        public static final int CONTACT_PHOTO_URI        = 4;
+        public static final int DISPLAY_NAME_SOURCE      = 5;
+    }
+
+    /*
+     * Apply the Name format setting(First name first/Last name first)
+     * to the display name of MyInfo at the navigation drawer.
+     * Settings->MyInfo also behaves the same.
+     */
+    public static String[] getProjection(Context context) {
+        final ContactsPreferences contactsPrefs = new ContactsPreferences(context);
+        final int displayOrder = contactsPrefs.getDisplayOrder();
+        if (displayOrder == ContactsPreferences.DISPLAY_ORDER_PRIMARY) {
+            return ProfileQuery.PROFILE_PROJECTION_PRIMARY;
+        }
+        return ProfileQuery.PROFILE_PROJECTION_ALTERNATIVE;
+    }
+
+    /** Returns a {@link ProfileItem} read from the given cursor */
+    public static ProfileItem getProfileItem(Context context, Cursor cursor) {
+        boolean hasProfile = false;
+        String displayName = null;
+        long contactId = -1;
+        long photoId = 0;
+        String photoUri = null;
+        int displayNameSource = DisplayNameSources.UNDEFINED;
+        if (cursor != null && cursor.moveToFirst()) {
+            hasProfile = cursor.getInt(ProfileQuery.CONTACT_IS_USER_PROFILE) == 1;
+            displayName = cursor.getString(ProfileQuery.CONTACT_DISPLAY_NAME);
+            contactId = cursor.getLong(ProfileQuery.CONTACT_ID);
+            photoId = cursor.getLong(ProfileQuery.CONTACT_PHOTO_ID);
+            photoUri = cursor.getString(ProfileQuery.CONTACT_PHOTO_URI);
+            displayNameSource = cursor.getInt(ProfileQuery.DISPLAY_NAME_SOURCE);
+        }
+        if (hasProfile && TextUtils.isEmpty(displayName)) {
+            displayName = context.getResources().getString(R.string.missing_name);
+        }
+        return new ProfileItem(displayName, contactId, photoId, photoUri, displayNameSource,
+                hasProfile);
+    }
+
+    public ProfileLoader(Context context, String[] projection) {
+        super(context,
+                Profile.CONTENT_URI,
+                projection,
+                null,
+                null,
+                null);
+    }
+
+    @Override
+    public Cursor loadInBackground() {
+        try {
+            return super.loadInBackground();
+        } catch (RuntimeException e) {
+            return null;
+        }
+    }
+}
diff --git a/src/com/android/contacts/quickcontact/QuickContactActivity.java b/src/com/android/contacts/quickcontact/QuickContactActivity.java
index 35fc2cc..c738301 100644
--- a/src/com/android/contacts/quickcontact/QuickContactActivity.java
+++ b/src/com/android/contacts/quickcontact/QuickContactActivity.java
@@ -113,6 +113,7 @@
 import com.android.contacts.compat.CompatUtils;
 import com.android.contacts.compat.EventCompat;
 import com.android.contacts.compat.MultiWindowCompat;
+import com.android.contacts.compat.PhoneNumberUtilsCompat;
 import com.android.contacts.detail.ContactDisplayUtils;
 import com.android.contacts.dialog.CallSubjectDialog;
 import com.android.contacts.editor.ContactEditorFragment;
@@ -430,6 +431,7 @@
         static final int COPY_TEXT = 0;
         static final int CLEAR_DEFAULT = 1;
         static final int SET_DEFAULT = 2;
+        static final int CALL_VIA = 3;
     }
 
     private final OnCreateContextMenuListener mEntryContextMenuListener =
@@ -440,7 +442,13 @@
                 return;
             }
             final EntryContextMenuInfo info = (EntryContextMenuInfo) menuInfo;
+            final String selectedMimeType = info.getMimeType();
             menu.setHeaderTitle(info.getCopyText());
+
+            if (Phone.CONTENT_ITEM_TYPE.equals(selectedMimeType)) {
+                addPhoneAccountsToMenu(QuickContactActivity.this, menu, info);
+            }
+
             menu.add(ContextMenu.NONE, ContextMenuIds.COPY_TEXT,
                     ContextMenu.NONE, getString(R.string.copy_text));
 
@@ -449,8 +457,6 @@
                 return;
             }
 
-            final String selectedMimeType = info.getMimeType();
-
             // Defaults to true will only enable the detail to be copied to the clipboard.
             boolean onlyOneOfMimeType = true;
 
@@ -470,6 +476,25 @@
                         ContextMenu.NONE, getString(R.string.set_default));
             }
         }
+
+        private void addPhoneAccountsToMenu(Context context,
+                Menu menu, EntryContextMenuInfo info) {
+            final String number = PhoneNumberUtilsCompat.normalizeNumber(info.getCopyText());
+            final List<PhoneAccount> accounts = CallUtil.getCallCapablePhoneAccounts(context,
+                    PhoneAccount.SCHEME_TEL);
+            if (accounts == null || accounts.size() <= 1) {
+                return;
+            }
+
+            for (PhoneAccount account : accounts) {
+                final String text = context.getString(R.string.call_via_template,
+                        account.getLabel());
+                final Intent intent = CallUtil.getCallWithSubjectIntent(number,
+                        account.getAccountHandle(), null);
+                menu.add(ContextMenu.NONE, ContextMenuIds.CALL_VIA, ContextMenu.NONE, text)
+                        .setIntent(intent);
+            }
+        }
     };
 
     @Override
@@ -497,6 +522,9 @@
                         menuInfo.getId());
                 this.startService(clearIntent);
                 return true;
+            case ContextMenuIds.CALL_VIA:
+                startActivity(item.getIntent());
+                return true;
             default:
                 throw new IllegalArgumentException("Unknown menu option " + item.getItemId());
         }
diff --git a/src/com/android/contacts/util/AccountSelectionUtil.java b/src/com/android/contacts/util/AccountSelectionUtil.java
index bfe8a08..2b226d0 100644
--- a/src/com/android/contacts/util/AccountSelectionUtil.java
+++ b/src/com/android/contacts/util/AccountSelectionUtil.java
@@ -126,6 +126,8 @@
 
                 text1.setText(accountType.getDisplayLabel(context));
                 text2.setText(account.name);
+                text2.setVisibility(context.getPackageName().equals(account.type) ?
+                        View.GONE : View.VISIBLE);
                 icon.setImageDrawable(accountType.getDisplayIcon(getContext()));
 
                 return convertView;
diff --git a/src/com/android/contacts/util/AccountsListAdapter.java b/src/com/android/contacts/util/AccountsListAdapter.java
index 2bcc68b..cc80b79 100644
--- a/src/com/android/contacts/util/AccountsListAdapter.java
+++ b/src/com/android/contacts/util/AccountsListAdapter.java
@@ -95,6 +95,8 @@
 
         text1.setText(mAccounts.get(position).getTypeLabel());
         text2.setText(mAccounts.get(position).getNameLabel());
+        text2.setVisibility(mAccounts.get(position).getNameLabel().equals(
+                mAccounts.get(position).getTypeLabel()) ? View.GONE : View.VISIBLE);
 
         icon.setImageDrawable(mAccounts.get(position).getIcon());
 
diff --git a/src/com/android/contacts/util/CursorUtils.java b/src/com/android/contacts/util/CursorUtils.java
new file mode 100644
index 0000000..139d6e5
--- /dev/null
+++ b/src/com/android/contacts/util/CursorUtils.java
@@ -0,0 +1,45 @@
+/*
+ * SPDX-FileCopyrightText: 2023 The LineageOS Project
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+package com.android.contacts.util;
+
+import android.database.Cursor;
+
+import androidx.annotation.NonNull;
+
+public class CursorUtils {
+
+    private CursorUtils() {
+        // Do not instantiate
+    }
+
+    public static Object[] getObjectFromCursor(@NonNull Cursor cursor) {
+        Object[] values = new Object[cursor.getColumnCount()];
+        for (int i = 0; i < cursor.getColumnCount(); i++) {
+            int fieldType = cursor.getType(i);
+            switch (fieldType) {
+                case Cursor.FIELD_TYPE_BLOB:
+                    values[i] = cursor.getBlob(i);
+                    break;
+                case Cursor.FIELD_TYPE_FLOAT:
+                    values[i] = cursor.getDouble(i);
+                    break;
+                case Cursor.FIELD_TYPE_INTEGER:
+                    values[i] = cursor.getLong(i);
+                    break;
+                case Cursor.FIELD_TYPE_STRING:
+                    values[i] = cursor.getString(i);
+                    break;
+                case Cursor.FIELD_TYPE_NULL:
+                    values[i] = null;
+                    break;
+                default:
+                    throw new IllegalStateException(
+                            "Unknown fieldType (" + fieldType + ") for column: " + i);
+            }
+        }
+        return values;
+    }
+}
diff --git a/src/com/android/contacts/util/ImplicitIntentsUtil.java b/src/com/android/contacts/util/ImplicitIntentsUtil.java
index a1ab896..e101534 100644
--- a/src/com/android/contacts/util/ImplicitIntentsUtil.java
+++ b/src/com/android/contacts/util/ImplicitIntentsUtil.java
@@ -179,6 +179,23 @@
     }
 
     /**
+     * Returns an Intent to launch Emergency Information
+     */
+    public static Intent getIntentForEmergencyInfo(Context context) {
+        if (context == null || context.getPackageManager() == null) {
+            return null;
+        }
+        Intent intent = new Intent("android.settings.EDIT_EMERGENCY_INFO")
+                .setPackage("com.android.emergency");
+        List<ResolveInfo> list = context.getPackageManager().queryIntentActivities(intent,
+                PackageManager.MATCH_DEFAULT_ONLY);
+        if (list != null && !list.isEmpty()) {
+            return intent;
+        }
+        return null;
+    }
+
+    /**
      * Returns a copy of {@param intent} with a class name set, if a class inside this app
      * has a corresponding intent filter.
      */
diff --git a/src/com/android/contacts/vcard/ImportProcessor.java b/src/com/android/contacts/vcard/ImportProcessor.java
index c6fcccb..9471fd9 100644
--- a/src/com/android/contacts/vcard/ImportProcessor.java
+++ b/src/com/android/contacts/vcard/ImportProcessor.java
@@ -30,6 +30,7 @@
 import com.android.vcard.VCardParser;
 import com.android.vcard.VCardParser_V21;
 import com.android.vcard.VCardParser_V30;
+import com.android.vcard.VCardParser_V40;
 import com.android.vcard.exception.VCardException;
 import com.android.vcard.exception.VCardNotSupportedException;
 import com.android.vcard.exception.VCardVersionException;
@@ -135,7 +136,8 @@
              */
             possibleVCardVersions = new int[] {
                     ImportVCardActivity.VCARD_VERSION_V21,
-                    ImportVCardActivity.VCARD_VERSION_V30
+                    ImportVCardActivity.VCARD_VERSION_V30,
+                    ImportVCardActivity.VCARD_VERSION_V40
             };
         } else {
             possibleVCardVersions = new int[] {
@@ -231,9 +233,16 @@
                 // In the worst case, a user may call cancel() just before creating
                 // mVCardParser.
                 synchronized (this) {
-                    mVCardParser = (vcardVersion == ImportVCardActivity.VCARD_VERSION_V30 ?
-                            new VCardParser_V30(vcardType) :
-                                new VCardParser_V21(vcardType));
+                    switch (vcardVersion) {
+                        case ImportVCardActivity.VCARD_VERSION_V40:
+                            mVCardParser = new VCardParser_V40(vcardType);
+                            break;
+                        case ImportVCardActivity.VCARD_VERSION_V30:
+                            mVCardParser = new VCardParser_V30(vcardType);
+                            break;
+                        default:
+                            mVCardParser = new VCardParser_V21(vcardType);
+                    }
                     if (isCancelled()) {
                         Log.i(LOG_TAG, "ImportProcessor already recieves cancel request, so " +
                                 "send cancel request to vCard parser too.");
diff --git a/src/com/android/contacts/vcard/ImportVCardActivity.java b/src/com/android/contacts/vcard/ImportVCardActivity.java
index 3eb7bdb..7ff6320 100644
--- a/src/com/android/contacts/vcard/ImportVCardActivity.java
+++ b/src/com/android/contacts/vcard/ImportVCardActivity.java
@@ -49,6 +49,7 @@
 import com.android.vcard.VCardParser;
 import com.android.vcard.VCardParser_V21;
 import com.android.vcard.VCardParser_V30;
+import com.android.vcard.VCardParser_V40;
 import com.android.vcard.VCardSourceDetector;
 import com.android.vcard.exception.VCardException;
 import com.android.vcard.exception.VCardNestedException;
@@ -83,6 +84,7 @@
     /* package */ final static int VCARD_VERSION_AUTO_DETECT = 0;
     /* package */ final static int VCARD_VERSION_V21 = 1;
     /* package */ final static int VCARD_VERSION_V30 = 2;
+    /* package */ final static int VCARD_VERSION_V40 = 3;
 
     private static final int REQUEST_OPEN_DOCUMENT = 100;
 
@@ -321,6 +323,7 @@
             int vcardVersion = VCARD_VERSION_V21;
             try {
                 boolean shouldUseV30 = false;
+                boolean shouldUseV40 = false;
                 InputStream is;
                 if (data != null) {
                     is = new ByteArrayInputStream(data);
@@ -354,7 +357,28 @@
                         mVCardParser.addInterpreter(detector);
                         mVCardParser.parse(is);
                     } catch (VCardVersionException e2) {
-                        throw new VCardException("vCard with unspported version.");
+                        try {
+                            is.close();
+                        } catch (IOException e) {
+
+                        }
+
+                        shouldUseV40 = true;
+                        if (data != null) {
+                            is = new ByteArrayInputStream(data);
+                        } else {
+                            is = resolver.openInputStream(localDataUri);
+                        }
+                        mVCardParser = new VCardParser_V40();
+                        try {
+                            counter = new VCardEntryCounter();
+                            detector = new VCardSourceDetector();
+                            mVCardParser.addInterpreter(counter);
+                            mVCardParser.addInterpreter(detector);
+                            mVCardParser.parse(is);
+                        } catch (VCardVersionException e3) {
+                            throw new VCardException("vCard with unspported version.");
+                        }
                     }
                 } finally {
                     if (is != null) {
@@ -365,7 +389,13 @@
                     }
                 }
 
-                vcardVersion = shouldUseV30 ? VCARD_VERSION_V30 : VCARD_VERSION_V21;
+                if (shouldUseV40) {
+                    vcardVersion = VCARD_VERSION_V40;
+                } else if (shouldUseV30) {
+                    vcardVersion = VCARD_VERSION_V30;
+                } else {
+                    vcardVersion = VCARD_VERSION_V21;
+                }
             } catch (VCardNestedException e) {
                 Log.w(LOG_TAG, "Nested Exception is found (it may be false-positive).");
                 // Go through without throwing the Exception, as we may be able to detect the
