diff --git a/res/layout/app_percentage_item.xml b/res/layout/app_percentage_item.xml
index f966d20..03226ca 100644
--- a/res/layout/app_percentage_item.xml
+++ b/res/layout/app_percentage_item.xml
@@ -46,6 +46,7 @@
     <TextView
         android:id="@android:id/text1"
         android:layout_marginStart="8dip"
+        android:layout_marginTop="2dip"
         android:textAppearance="?android:attr/textAppearanceSmall" />
 
     <ProgressBar
diff --git a/res/layout/preference_powergauge.xml b/res/layout/preference_powergauge.xml
deleted file mode 100644
index 5efc028..0000000
--- a/res/layout/preference_powergauge.xml
+++ /dev/null
@@ -1,82 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2009 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.
--->
-
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    android:layout_width="match_parent"
-    android:layout_height="wrap_content"
-    android:minHeight="?android:attr/listPreferredItemHeight"
-    android:gravity="center_vertical"
-    android:paddingStart="16dip"
-    android:paddingEnd="?android:attr/scrollbarSize">
-
-    <ImageView
-        android:id="@+id/appIcon"
-        android:layout_width="48dip"
-        android:layout_height="wrap_content"
-        android:layout_marginEnd="6dip"
-        android:layout_gravity="center"
-        android:contentDescription="@null" />
-
-    <RelativeLayout
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:layout_marginEnd="8dip"
-        android:layout_marginTop="2dip"
-        android:layout_marginBottom="6dip"
-        android:layout_weight="1">
-
-        <TextView android:id="@+android:id/title"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:singleLine="true"
-            android:layout_marginTop="2dip"
-            android:layout_alignParentStart="true"
-            android:layout_alignParentTop="true"
-            android:layout_toStartOf="@+id/percent"
-            android:ellipsize="marquee"
-            android:textAppearance="?android:attr/textAppearanceMedium"/>
-
-        <TextView android:id="@+id/percent"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:singleLine="true"
-            android:layout_alignParentEnd="true"
-            android:layout_alignBottom="@android:id/title"
-            android:layout_gravity="bottom"
-            android:textAppearance="?android:attr/textAppearanceSmall"
-            android:textStyle="bold"/>
-
-        <ImageView
-            android:id="@+id/appGauge"
-            android:background="#80404040"
-            android:layout_height="wrap_content"
-            android:layout_width="match_parent"
-            android:layout_marginTop="5dip"
-            android:layout_below="@id/percent"
-            android:layout_gravity="center_vertical"
-            android:contentDescription="@null" />
-
-        <TextView android:id="@+android:id/summary"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:layout_alignStart="@id/appGauge"
-            android:layout_below="@id/appGauge"
-            android:textAppearance="?android:attr/textAppearanceSmall"
-            android:maxLines="2" />
-
-    </RelativeLayout>
-
-</LinearLayout>
diff --git a/res/values-ca/strings.xml b/res/values-ca/strings.xml
index edc4e59..fb427a6 100644
--- a/res/values-ca/strings.xml
+++ b/res/values-ca/strings.xml
@@ -609,7 +609,7 @@
     <string name="wifi_secured_first_item" msgid="4072076186051083451">"Protegida amb <xliff:g id="WIFI_SECURITY_SHORT">%1$s</xliff:g>"</string>
     <string name="wifi_secured_second_item" msgid="1326000076939056265">", protegida amb <xliff:g id="WIFI_SECURITY_SHORT">%1$s</xliff:g>"</string>
     <string name="wifi_security_none" msgid="7985461072596594400">"Cap"</string>
-    <string name="wifi_scan_always_turnon_message" msgid="203123538572122989">"Per millorar la precisió de la ubicació i per a altres finalitats, <xliff:g id="APP_NAME">%1$s</xliff:g> vol activar l\'anàlisi de la xarxa encara que no hi hagi cap connexió Wi-Fi."\n\n"Vols permetre-ho a totes les aplicacions que vulguin analitzar el contingut?"</string>
+    <string name="wifi_scan_always_turnon_message" msgid="203123538572122989">"Per millorar la precisió de la ubicació i per a altres finalitats, <xliff:g id="APP_NAME">%1$s</xliff:g> vol activar la cerca de xarxes encara que no hi hagi cap connexió Wi-Fi."\n\n"Vols permetre-ho a totes les aplicacions que vulguin cercar xarxes?"</string>
     <string name="wifi_scan_always_confirm_allow" msgid="5355973075896817232">"Permet"</string>
     <string name="wifi_scan_always_confirm_deny" msgid="4463982053823520710">"Denega"</string>
     <string name="wifi_connect" msgid="1076622875777072845">"Connecta"</string>
@@ -1335,7 +1335,7 @@
     <string name="accessibility_long_press_timeout_preference_title" msgid="6708467774619266508">"Retard toca i mantén premut"</string>
     <string name="accessibility_menu_item_settings" msgid="3344942964710773365">"Configuració"</string>
     <string name="accessibility_feature_state_on" msgid="2864292320042673806">"Activada"</string>
-    <string name="accessibility_feature_state_off" msgid="4172584906487070211">"Desactivada"</string>
+    <string name="accessibility_feature_state_off" msgid="4172584906487070211">"Desactivat"</string>
     <string name="accessibility_service_security_warning_title" msgid="5421628151509995404">"Vols fer servir <xliff:g id="SERVICE">%1$s</xliff:g>?"</string>
     <string name="accessibility_service_security_warning_summary" product="tablet" msgid="8558441850832543571">"<xliff:g id="ACCESSIBILITY_SERVICE_NAME">%1$s</xliff:g> pot recopilar tot el text que escrius, excepte les contrasenyes. Això inclou les dades personals com ara els números de targetes de crèdit. També pot recopilar dades sobre les teves interaccions amb la tauleta."</string>
     <string name="accessibility_service_security_warning_summary" product="default" msgid="2869015914319424723">"<xliff:g id="ACCESSIBILITY_SERVICE_NAME">%1$s</xliff:g> pot recopilar tot el text que escrius, excepte les contrasenyes. Això inclou les dades personals com ara els números de targetes de crèdit. També pot recopilar dades sobre les teves interaccions amb el telèfon."</string>
diff --git a/res/values-da/strings.xml b/res/values-da/strings.xml
index 2a26614..b1b7c82 100644
--- a/res/values-da/strings.xml
+++ b/res/values-da/strings.xml
@@ -609,7 +609,7 @@
     <string name="wifi_secured_first_item" msgid="4072076186051083451">"Sikret med <xliff:g id="WIFI_SECURITY_SHORT">%1$s</xliff:g>"</string>
     <string name="wifi_secured_second_item" msgid="1326000076939056265">", sikret med <xliff:g id="WIFI_SECURITY_SHORT">%1$s</xliff:g>"</string>
     <string name="wifi_security_none" msgid="7985461072596594400">"Ingen"</string>
-    <string name="wifi_scan_always_turnon_message" msgid="203123538572122989">"Med henblik på at forbedre nøjagtigheden og til andre formål, ønsker <xliff:g id="APP_NAME">%1$s</xliff:g> at aktivere netværksscanning, selv når Wi-Fi er deaktiveret."\n\n"Vil du tillade dette for alle apps, der ønsker at scanne?"</string>
+    <string name="wifi_scan_always_turnon_message" msgid="203123538572122989">"For at kunne angive mere nøjagtig placering og af andre grunde, ønsker <xliff:g id="APP_NAME">%1$s</xliff:g> at aktivere netværksscanning, selv når Wi-Fi er deaktiveret."\n\n"Vil du tillade dette for alle apps, der ønsker at scanne?"</string>
     <string name="wifi_scan_always_confirm_allow" msgid="5355973075896817232">"Tillad"</string>
     <string name="wifi_scan_always_confirm_deny" msgid="4463982053823520710">"Afvis"</string>
     <string name="wifi_connect" msgid="1076622875777072845">"Forbind"</string>
diff --git a/res/values-en-rGB/strings.xml b/res/values-en-rGB/strings.xml
index e513b29..b1427ca 100644
--- a/res/values-en-rGB/strings.xml
+++ b/res/values-en-rGB/strings.xml
@@ -542,12 +542,9 @@
     <string name="wifi_poor_network_detection_summary" msgid="7843672905900544785">"Don\'t use a Wi‑Fi network unless it has a good Internet connection"</string>
     <string name="wifi_scan_always_available" msgid="3470564139944368030">"Scanning always available"</string>
     <string name="wifi_scan_always_available_summary" msgid="7768204638882691453">"Let Google\'s location service and other apps scan for networks, even when Wi-Fi is off"</string>
-    <!-- no translation found for wifi_scan_notify_text_location_on (8135076005488914200) -->
-    <skip />
-    <!-- no translation found for wifi_scan_notify_text_location_off (6323983741393280935) -->
-    <skip />
-    <!-- no translation found for wifi_scan_notify_remember_choice (5340097010842405981) -->
-    <skip />
+    <string name="wifi_scan_notify_text_location_on" msgid="8135076005488914200">"To improve location accuracy and for other purposes, Google and other apps may scan for nearby networks, even when Wi-Fi is off. If you don\'t want this to happen, go to Advanced &gt; Scanning always available."</string>
+    <string name="wifi_scan_notify_text_location_off" msgid="6323983741393280935">"Apps may scan for nearby networks, even when Wi-Fi is off. If you don\'t want this to happen, go to Advanced &gt; Scanning always available."</string>
+    <string name="wifi_scan_notify_remember_choice" msgid="5340097010842405981">"Don\'t show again"</string>
     <string name="wifi_setting_sleep_policy_title" msgid="5149574280392680092">"Keep Wi‑Fi on during sleep"</string>
     <string name="wifi_setting_sleep_policy_error" msgid="8174902072673071961">"There was a problem while changing the setting"</string>
     <string name="wifi_suspend_optimizations" msgid="1220174276403689487">"Wi‑Fi optimisation"</string>
@@ -1805,21 +1802,15 @@
     <string name="user_you_section" msgid="6247838798859425408">"You"</string>
     <string name="user_list_title" msgid="8866161687358773982">"Other users"</string>
     <string name="user_add_user_menu" msgid="1675956975014862382">"Add user"</string>
-    <!-- no translation found for user_add_restricted (2355584640156396901) -->
-    <skip />
-    <!-- no translation found for user_add_restricted_summary (6627956758186349471) -->
-    <skip />
-    <!-- no translation found for user_add_trusted (557634297572871869) -->
-    <skip />
-    <!-- no translation found for user_add_trusted_summary (1118604533072902851) -->
-    <skip />
+    <string name="user_add_restricted" msgid="2355584640156396901">"Add limited user"</string>
+    <string name="user_add_restricted_summary" msgid="6627956758186349471">"Limited users can only access the apps and content that you select"</string>
+    <string name="user_add_trusted" msgid="557634297572871869">"Add trusted user"</string>
+    <string name="user_add_trusted_summary" msgid="1118604533072902851">"Trusted users have no restrictions"</string>
     <string name="user_summary_active" msgid="4740649452346004418">"Active"</string>
     <string name="user_summary_inactive" msgid="3758296246095054572">"Not active"</string>
     <string name="user_summary_not_set_up" msgid="8778205026866794909">"Not set up"</string>
-    <!-- no translation found for user_trusted (6742122083463724471) -->
-    <skip />
-    <!-- no translation found for user_limited (5344145255529624480) -->
-    <skip />
+    <string name="user_trusted" msgid="6742122083463724471">"Trusted"</string>
+    <string name="user_limited" msgid="5344145255529624480">"Limited"</string>
     <string name="user_owner" msgid="3879126011135546571">"Owner"</string>
     <string name="user_nickname" msgid="5148818000228994488">"Nickname"</string>
     <string name="user_add_user_title" msgid="3961861593718285403">"Add new user"</string>
@@ -1842,12 +1833,9 @@
     <string name="user_adding_new_user" msgid="1521674650874241407">"Adding new user…"</string>
     <string name="user_delete_user_description" msgid="3158592592118767056">"Delete user"</string>
     <string name="user_delete_button" msgid="5131259553799403201">"Delete"</string>
-    <!-- no translation found for application_restrictions (8207332020898004394) -->
-    <skip />
-    <!-- no translation found for apps_with_restrictions_header (3660449891478534440) -->
-    <skip />
-    <!-- no translation found for apps_with_restrictions_settings_button (3841347287916635821) -->
-    <skip />
+    <string name="application_restrictions" msgid="8207332020898004394">"Allow apps and content"</string>
+    <string name="apps_with_restrictions_header" msgid="3660449891478534440">"Applications with restrictions"</string>
+    <string name="apps_with_restrictions_settings_button" msgid="3841347287916635821">"Expand settings for application"</string>
     <string name="global_change_warning" product="tablet" msgid="8045013389464294039">"This setting affects all users on this tablet."</string>
     <string name="global_change_warning" product="default" msgid="2461264421590324675">"This setting affects all users on this phone."</string>
     <string name="global_locale_change_title" msgid="5956281361384221451">"Change language"</string>
@@ -1858,14 +1846,9 @@
     <string name="user_picture_title" msgid="7297782792000291692">"Photo ID"</string>
     <string name="cell_broadcast_settings" msgid="8415582011920085222">"Mobile broadcasts"</string>
     <string name="cell_broadcast_settings_summary" msgid="3301339398950905913">"Select the types of emergency alerts to display."</string>
-    <!-- no translation found for user_restrictions_title (371835484894400390) -->
-    <skip />
-    <!-- no translation found for user_rename (8523499513614655279) -->
-    <skip />
-    <!-- no translation found for wizard_back (5567007959434765743) -->
-    <skip />
-    <!-- no translation found for wizard_next (3606212602795100640) -->
-    <skip />
-    <!-- no translation found for wizard_finish (3286109692700083252) -->
-    <skip />
+    <string name="user_restrictions_title" msgid="371835484894400390">"Allow apps and content"</string>
+    <string name="user_rename" msgid="8523499513614655279">"RENAME"</string>
+    <string name="wizard_back" msgid="5567007959434765743">"Back"</string>
+    <string name="wizard_next" msgid="3606212602795100640">"Next"</string>
+    <string name="wizard_finish" msgid="3286109692700083252">"Finish"</string>
 </resources>
diff --git a/res/values-es-rUS/strings.xml b/res/values-es-rUS/strings.xml
index b390f88..628819c 100644
--- a/res/values-es-rUS/strings.xml
+++ b/res/values-es-rUS/strings.xml
@@ -609,7 +609,7 @@
     <string name="wifi_secured_first_item" msgid="4072076186051083451">"Protegida con <xliff:g id="WIFI_SECURITY_SHORT">%1$s</xliff:g>"</string>
     <string name="wifi_secured_second_item" msgid="1326000076939056265">", protegida con <xliff:g id="WIFI_SECURITY_SHORT">%1$s</xliff:g>"</string>
     <string name="wifi_security_none" msgid="7985461072596594400">"Ninguna"</string>
-    <string name="wifi_scan_always_turnon_message" msgid="203123538572122989">"Para mejorar la precisión de la ubicación y para otros fines, <xliff:g id="APP_NAME">%1$s</xliff:g> quiere activar la búsqueda de redes, incluso cuando la red Wi-Fi esté desactivada."\n\n"¿Quieres permitir esta acción para todas las aplicaciones que desees buscar?"</string>
+    <string name="wifi_scan_always_turnon_message" msgid="203123538572122989">"Para mejorar la precisión de la ubicación y para otros fines, <xliff:g id="APP_NAME">%1$s</xliff:g> quiere activar la búsqueda en redes, incluso cuando la red Wi-Fi esté desactivada."\n\n"¿Quieres permitir esta acción para todas las aplicaciones que desees buscar?"</string>
     <string name="wifi_scan_always_confirm_allow" msgid="5355973075896817232">"Permitir"</string>
     <string name="wifi_scan_always_confirm_deny" msgid="4463982053823520710">"Denegar"</string>
     <string name="wifi_connect" msgid="1076622875777072845">"Conectar"</string>
@@ -1597,7 +1597,7 @@
     <string name="sync_one_time_sync" msgid="6766593624598183090">"Tocar para sincronizar ahora<xliff:g id="LAST_SYNC_TIME">
 %1$s</xliff:g>"</string>
     <string name="sync_gmail" msgid="714886122098006477">"Gmail"</string>
-    <string name="sync_calendar" msgid="9056527206714733735">"Calendar"</string>
+    <string name="sync_calendar" msgid="9056527206714733735">"Calendario"</string>
     <string name="sync_contacts" msgid="9174914394377828043">"Contactos"</string>
     <string name="sync_plug" msgid="3905078969081888738"><font fgcolor="#ffffffff">"Te damos la bienvenida a Google Sync"</font>"  "\n"Con este software de Google, puedes sincronizar tus datos y acceder a tus contactos, citas y más desde cualquier lugar."</string>
     <string name="header_application_sync_settings" msgid="6205903695598000286">"Conf. de sincronización de aplicación"</string>
diff --git a/res/values-es/strings.xml b/res/values-es/strings.xml
index b216968..597a120 100644
--- a/res/values-es/strings.xml
+++ b/res/values-es/strings.xml
@@ -26,8 +26,8 @@
     <item quantity="one" msgid="5295687242294085452">"Solo te queda <xliff:g id="STEP_COUNT">%1$d</xliff:g> paso para ser un desarrollador."</item>
     <item quantity="other" msgid="6722953419953594148">"Solo te quedan <xliff:g id="STEP_COUNT">%1$d</xliff:g> pasos para ser un desarrollador."</item>
   </plurals>
-    <string name="show_dev_on" msgid="1110711554982716293">"¡Ahora eres un desarrollador!"</string>
-    <string name="show_dev_already" msgid="2151632240145446227">"No es necesario, ya eres un desarrollador."</string>
+    <string name="show_dev_on" msgid="1110711554982716293">"¡Ahora están activadas las opciones de desarrollo!"</string>
+    <string name="show_dev_already" msgid="2151632240145446227">"No es necesario, están activadas las opciones de desarrollo."</string>
     <string name="header_category_wireless_networks" msgid="4944823405420438623">"CONEXIONES INALÁMBRICAS Y REDES"</string>
     <string name="header_category_device" msgid="5781174212691167553">"DISPOSITIVO"</string>
     <string name="header_category_personal" msgid="6225932173498802187">"PERSONAL"</string>
@@ -54,7 +54,7 @@
     <string name="radioInfo_phone_ringing" msgid="4883724645684297895">"Sonando"</string>
     <string name="radioInfo_phone_offhook" msgid="4174402846862780998">"Llamada en curso"</string>
     <string name="radioInfo_data_disconnected" msgid="1959735267890719418">"Desconectada"</string>
-    <string name="radioInfo_data_connecting" msgid="8404571440697917823">"Estableciendo conexión..."</string>
+    <string name="radioInfo_data_connecting" msgid="8404571440697917823">"Estableciendo conexión"</string>
     <string name="radioInfo_data_connected" msgid="7074301157399238697">"Conectado"</string>
     <string name="radioInfo_data_suspended" msgid="5315325487890334196">"Suspendido"</string>
     <string name="radioInfo_unknown" msgid="737385314432468266">"desconocido"</string>
@@ -89,7 +89,7 @@
     <string name="battery_info_awake_plugged" msgid="176716874713478188">"Tiempo de actividad durante la carga:"</string>
     <string name="battery_info_screen_on" msgid="376277447175613889">"Pantalla de duración de encendido"</string>
     <string name="battery_info_status_unknown" msgid="196130600938058547">"Desconocido"</string>
-    <string name="battery_info_status_charging" msgid="1705179948350365604">"Cargando..."</string>
+    <string name="battery_info_status_charging" msgid="1705179948350365604">"Cargando"</string>
     <string name="battery_info_status_charging_ac" msgid="5874340256342956252">"(CA)"</string>
     <string name="battery_info_status_charging_usb" msgid="4059070156126770959">"(USB)"</string>
     <string name="battery_info_status_charging_wireless" msgid="1822125795446772771">"(conexiones inalámbricas)"</string>
@@ -135,10 +135,10 @@
     <string name="bluetooth_connected_no_a2dp" msgid="4576188601581440337">"Conectado (sin audio multimedia)"</string>
     <string name="bluetooth_connected_no_headset_no_a2dp" msgid="9195757766755553810">"Conectado (sin teléfono ni multimedia)"</string>
     <string name="bluetooth_disconnected" msgid="6557104142667339895">"Desconectada"</string>
-    <string name="bluetooth_disconnecting" msgid="8913264760027764974">"Desconectando..."</string>
-    <string name="bluetooth_connecting" msgid="8555009514614320497">"Estableciendo conexión..."</string>
+    <string name="bluetooth_disconnecting" msgid="8913264760027764974">"Desconectando…"</string>
+    <string name="bluetooth_connecting" msgid="8555009514614320497">"Estableciendo conexión…"</string>
     <string name="bluetooth_unknown" msgid="644716244548801421"></string>
-    <string name="bluetooth_pairing" msgid="1426882272690346242">"Sincronizando..."</string>
+    <string name="bluetooth_pairing" msgid="1426882272690346242">"Sincronizando…"</string>
     <string name="bluetooth_device" msgid="5291950341750186887">"Dispositivo Bluetooth sin nombre"</string>
     <string name="progress_scanning" msgid="192587958424295789">"Buscando"</string>
     <string name="bluetooth_no_devices_found" msgid="1085232930277181436">"No hay dispositivos Bluetooth cercanos."</string>
@@ -158,7 +158,7 @@
     <string name="bluetooth_ask_enablement_and_lasting_discovery" product="tablet" msgid="989613204829097159">"Una aplicación quiere activar el Bluetooth y hacer visible tu tablet para otros dispositivos. Puedes cambiar esta configuración más tarde en los ajustes de Bluetooth."</string>
     <string name="bluetooth_ask_enablement_and_lasting_discovery" product="default" msgid="6671615712909139801">"Una aplicación quiere activar el Bluetooth y hacer visible tu teléfono para otros dispositivos. Puedes cambiar esta configuración más tarde en los ajustes de Bluetooth."</string>
     <string name="bluetooth_turning_on" msgid="4850574877288036646">"Activando Bluetooth…"</string>
-    <string name="bluetooth_turning_off" msgid="2337747302892025192">"Desactivando Bluetooth..."</string>
+    <string name="bluetooth_turning_off" msgid="2337747302892025192">"Desactivando Bluetooth…"</string>
     <string name="bluetooth_auto_connect" msgid="40711424456733571">"Conexión automática"</string>
     <string name="bluetooth_connection_permission_request" msgid="4747918249032890077">"Solicitud para establecer conexión de Bluetooth"</string>
     <string name="bluetooth_connection_notif_message" msgid="3687933246423942977">"Toca para conectarte a \"<xliff:g id="DEVICE_NAME">%1$s</xliff:g>\"."</string>
@@ -228,7 +228,7 @@
     <string name="radio_info_toggle_dns_check_label" msgid="8292252930563286858">"alternar comprobación de DNS"</string>
     <string name="oem_radio_info_label" msgid="6163141792477958941">"Ajustes/información específica de OEM"</string>
     <string name="band_mode_title" msgid="954174198903776205">"Establecer banda GSM/UMTS"</string>
-    <string name="band_mode_loading" msgid="548764766363847336">"Cargando lista de bandas..."</string>
+    <string name="band_mode_loading" msgid="548764766363847336">"Cargando lista de bandas…"</string>
     <string name="band_mode_set" msgid="5730560180249458484">"Establecer"</string>
     <string name="band_mode_failed" msgid="1495968863884716379">"Con error"</string>
     <string name="band_mode_succeeded" msgid="2701016190055887575">"Correcto"</string>
@@ -246,7 +246,7 @@
     <string name="sdcard_settings_bad_removal_status" product="default" msgid="5145797653495907970">"La tarjeta SD se ha extraído mientras estaba en uso."</string>
     <string name="sdcard_settings_used_bytes_label" msgid="8820289486001170836">"Bytes usados:"</string>
     <string name="sdcard_settings_scanning_status" product="nosdcard" msgid="7503429447676219564">"Buscando archivos almac USB…"</string>
-    <string name="sdcard_settings_scanning_status" product="default" msgid="2763464949274455656">"Buscando medios en tarjeta SD..."</string>
+    <string name="sdcard_settings_scanning_status" product="default" msgid="2763464949274455656">"Buscando medios en tarjeta SD…"</string>
     <string name="sdcard_settings_read_only_status" product="nosdcard" msgid="3624143937437417788">"Almacenamiento USB activado como solo lectura"</string>
     <string name="sdcard_settings_read_only_status" product="default" msgid="4518291824764698112">"La tarjeta SD está activada en modo de solo lectura."</string>
     <string name="skip_label" msgid="47510779345218297">"Saltar"</string>
@@ -443,7 +443,7 @@
     <string name="bluetooth_connecting_error_message" msgid="229861986106185022">"No se ha podido establecer conexión con <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
     <string name="bluetooth_preference_scan_title" msgid="2277464653118896016">"Buscar dispositivos"</string>
     <string name="bluetooth_search_for_devices" msgid="5957007154213560390">"Buscar dispositivos"</string>
-    <string name="bluetooth_searching_for_devices" msgid="9203739709307871727">"Buscando..."</string>
+    <string name="bluetooth_searching_for_devices" msgid="9203739709307871727">"Buscando…"</string>
     <string name="bluetooth_preference_device_settings" msgid="907776049862799122">"Ajustes del dispositivo"</string>
     <string name="bluetooth_preference_paired_devices" msgid="1970524193086791964">"Dispositivos sincronizados"</string>
     <string name="bluetooth_preference_found_devices" msgid="1647983835063249680">"Dispositivos disponibles"</string>
@@ -487,8 +487,8 @@
     <string name="bluetooth_opp_profile_summary_use_for" msgid="1255674547144769756">"Uso de la transferencia de archivos"</string>
     <string name="bluetooth_hid_profile_summary_use_for" msgid="232727040453645139">"Usar para entrada"</string>
     <string name="bluetooth_pan_profile_summary_use_for" msgid="5664884523822068653">"Usar para acceder a Internet"</string>
-    <string name="bluetooth_dock_settings" msgid="3218335822716052885">"Ajustes del conector"</string>
-    <string name="bluetooth_dock_settings_title" msgid="5543069893044375188">"Uso del conector para audio"</string>
+    <string name="bluetooth_dock_settings" msgid="3218335822716052885">"Ajustes de la base"</string>
+    <string name="bluetooth_dock_settings_title" msgid="5543069893044375188">"Uso de la base para audio"</string>
     <string name="bluetooth_dock_settings_headset" msgid="1001821426078644650">"Como altavoz del teléfono"</string>
     <string name="bluetooth_dock_settings_a2dp" msgid="8791004998846630574">"Para música y contenido multimedia"</string>
     <string name="bluetooth_dock_settings_remember" msgid="5551459057010609115">"Ajustes de recordatorio"</string>
@@ -500,7 +500,7 @@
     <string name="wifi_display_no_devices_found" msgid="8180582698282377626">"Sin pantallas inalámbricas cercanas"</string>
     <string name="wifi_display_paired_devices" msgid="7395326840730024303">"Pantallas sincronizadas"</string>
     <string name="wifi_display_available_devices" msgid="4558314642853513487">"Dispositivos disponibles"</string>
-    <string name="wifi_display_status_connecting" msgid="5688608834000748607">"Conectando..."</string>
+    <string name="wifi_display_status_connecting" msgid="5688608834000748607">"Conectando"</string>
     <string name="wifi_display_status_connected" msgid="8364125226376985558">"Conectada"</string>
     <string name="wifi_display_status_available" msgid="1924167525172207067">"Disponible"</string>
     <string name="wifi_display_details" msgid="7791118209992162698">"Ajustes de pantalla"</string>
@@ -609,7 +609,7 @@
     <string name="wifi_secured_first_item" msgid="4072076186051083451">"Protegida con <xliff:g id="WIFI_SECURITY_SHORT">%1$s</xliff:g>"</string>
     <string name="wifi_secured_second_item" msgid="1326000076939056265">", protegida con <xliff:g id="WIFI_SECURITY_SHORT">%1$s</xliff:g>"</string>
     <string name="wifi_security_none" msgid="7985461072596594400">"Ninguna"</string>
-    <string name="wifi_scan_always_turnon_message" msgid="203123538572122989">"Para mejorar la precisión de la ubicación y con otros fines, <xliff:g id="APP_NAME">%1$s</xliff:g> quiere activar la búsqueda de redes, aunque la conexión Wi-Fi esté desactivada."\n\n"¿Permitir para todas las aplicaciones que quieran buscar redes?"</string>
+    <string name="wifi_scan_always_turnon_message" msgid="203123538572122989">"Para mejorar la precisión de la ubicación y para otros fines, <xliff:g id="APP_NAME">%1$s</xliff:g> quiere activar la búsqueda de redes aunque la conexión Wi-Fi esté desactivada."\n\n"¿Permitir para todas las aplicaciones que quieran buscar redes?"</string>
     <string name="wifi_scan_always_confirm_allow" msgid="5355973075896817232">"Permitir"</string>
     <string name="wifi_scan_always_confirm_deny" msgid="4463982053823520710">"Rechazar"</string>
     <string name="wifi_connect" msgid="1076622875777072845">"Establecer conexión"</string>
@@ -685,7 +685,7 @@
     <string name="media_volume_title" msgid="3576565767317118106">"Multimedia"</string>
     <string name="media_volume_summary" msgid="5363248930648849974">"Establecer volumen para música y vídeos"</string>
     <string name="alarm_volume_title" msgid="2285597478377758706">"Alarma"</string>
-    <string name="dock_settings_summary" msgid="455802113668982481">"Ajustes de audio del conector adjunto"</string>
+    <string name="dock_settings_summary" msgid="455802113668982481">"Ajustes de audio de la base"</string>
     <string name="dtmf_tone_enable_title" msgid="8533399267725365088">"Sonar al marcar número"</string>
     <string name="sound_effects_enable_title" msgid="1171590821131077296">"Sonido al tocar"</string>
     <string name="lock_sounds_enable_title" msgid="450098505659399520">"Sonido de pantalla de bloqueo"</string>
@@ -700,22 +700,22 @@
     <string name="volume_notification_mute" msgid="7955193480006444159">"Silenciar notificaciones"</string>
     <string name="volume_alarm_mute" msgid="4452239420351035936">"Silenciar alarmas"</string>
     <string name="vibrate_when_ringing_title" msgid="3885857358303178029">"Vibrar al sonar"</string>
-    <string name="dock_settings" msgid="1820107306693002541">"Conector"</string>
-    <string name="dock_settings_title" msgid="9161438664257429372">"Ajustes del conector"</string>
+    <string name="dock_settings" msgid="1820107306693002541">"Base"</string>
+    <string name="dock_settings_title" msgid="9161438664257429372">"Ajustes de la base"</string>
     <string name="dock_audio_settings_title" msgid="3324750259959570305">"Audio"</string>
     <string name="dock_audio_summary_desk" msgid="6487784412371139335">"Ajustes de la base"</string>
-    <string name="dock_audio_summary_car" msgid="6740897586006248450">"Ajustes del conector del coche adjunto"</string>
+    <string name="dock_audio_summary_car" msgid="6740897586006248450">"Ajustes de la base del vehículo"</string>
     <string name="dock_audio_summary_none" product="tablet" msgid="8215337394914283607">"Tablet no conectado"</string>
     <string name="dock_audio_summary_none" product="default" msgid="289909253741048784">"Teléfono no conectado"</string>
-    <string name="dock_audio_summary_unknown" msgid="4465059868974255693">"Ajustes del conector adjunto"</string>
-    <string name="dock_not_found_title" msgid="3290961741828952424">"No se ha encontrado el conector"</string>
-    <string name="dock_not_found_text" product="tablet" msgid="8405432495282299143">"Para configurar el audio del conector, debes insertar el tablet en el conector."</string>
-    <string name="dock_not_found_text" product="default" msgid="1460497923342627801">"Para configurar el audio del conector, debes insertar el teléfono en el conector."</string>
+    <string name="dock_audio_summary_unknown" msgid="4465059868974255693">"Ajustes de la base"</string>
+    <string name="dock_not_found_title" msgid="3290961741828952424">"No se ha encontrado la base"</string>
+    <string name="dock_not_found_text" product="tablet" msgid="8405432495282299143">"Para configurar el audio de la base, debes insertar el tablet en la base."</string>
+    <string name="dock_not_found_text" product="default" msgid="1460497923342627801">"Para configurar el audio de la base, debes insertar el teléfono en la base."</string>
     <string name="dock_sounds_enable_title" msgid="885839627097024110">"Sonido al insertar dispositivo"</string>
-    <string name="dock_sounds_enable_summary_on" product="tablet" msgid="838102386448981339">"Reproducir sonido al insertar o extraer el tablet del conector"</string>
-    <string name="dock_sounds_enable_summary_on" product="default" msgid="8491180514199743771">"Reproducir sonido al insertar o extraer el teléfono del conector"</string>
-    <string name="dock_sounds_enable_summary_off" product="tablet" msgid="5077843049805652363">"No reproducir sonido al insertar o extraer el tablet del conector"</string>
-    <string name="dock_sounds_enable_summary_off" product="default" msgid="3151046599205265919">"No reproducir sonido al insertar o extraer el teléfono del conector"</string>
+    <string name="dock_sounds_enable_summary_on" product="tablet" msgid="838102386448981339">"Reproducir sonido al insertar o extraer el tablet de la base"</string>
+    <string name="dock_sounds_enable_summary_on" product="default" msgid="8491180514199743771">"Reproducir sonido al insertar o extraer el teléfono de la base"</string>
+    <string name="dock_sounds_enable_summary_off" product="tablet" msgid="5077843049805652363">"No reproducir sonido al insertar o extraer el tablet de la base"</string>
+    <string name="dock_sounds_enable_summary_off" product="default" msgid="3151046599205265919">"No reproducir sonido al insertar o extraer el teléfono de la base"</string>
     <string name="account_settings" msgid="6403589284618783461">"Cuentas"</string>
     <string name="search_settings" msgid="1910951467596035063">"Búsqueda"</string>
     <string name="search_settings_summary" msgid="9205656546570654169">"Administrar historial y configuración de búsqueda"</string>
@@ -732,10 +732,10 @@
     <string name="wallpaper_settings_title" msgid="5449180116365824625">"Fondo de pantalla"</string>
     <string name="wallpaper_settings_fragment_title" msgid="519078346877860129">"Selecciona una categoría"</string>
     <string name="screensaver_settings_title" msgid="3349790120327233241">"Salvapantallas"</string>
-    <string name="screensaver_settings_summary_either_long" msgid="2458481525925378465">"Cuando el dispositivo esté en un conector o inactivo y cargando"</string>
+    <string name="screensaver_settings_summary_either_long" msgid="2458481525925378465">"Cuando el dispositivo esté en una base o inactivo y cargando"</string>
     <string name="screensaver_settings_summary_either_short" msgid="6140527286137331478">"Ambos casos"</string>
     <string name="screensaver_settings_summary_sleep" msgid="9086186698140423493">"Durante la carga"</string>
-    <string name="screensaver_settings_summary_dock" msgid="2072657401664633283">"Cuando el dispositivo esté en un conector"</string>
+    <string name="screensaver_settings_summary_dock" msgid="2072657401664633283">"Cuando el dispositivo esté en una base"</string>
     <string name="screensaver_settings_summary_off" msgid="2481581696365146473">"Desactivado"</string>
     <string name="screensaver_settings_disabled_prompt" msgid="3857507943322777651">"Para controlar lo que ocurre cuando el teléfono está conectado o inactivo, debes activar el salvapantallas."</string>
     <string name="screensaver_settings_when_to_dream" msgid="8352267826043957746">"Cuándo activarlo"</string>
@@ -813,7 +813,7 @@
     <string name="memory_available" msgid="5052397223077021181">"Disponible"</string>
     <string name="memory_available_read_only" msgid="6497534390167920206">"Disponible (solo lectura)"</string>
     <string name="memory_size" msgid="6629067715017232195">"Espacio total"</string>
-    <string name="memory_calculating_size" msgid="2188358544203768588">"Calculando..."</string>
+    <string name="memory_calculating_size" msgid="2188358544203768588">"Calculando…"</string>
     <string name="memory_apps_usage" msgid="2348501997988663688">"Aplicaciones (datos aplicaciones y contenido multimedia)"</string>
     <string name="memory_media_usage" msgid="3738830697707880405">"Multimedia"</string>
     <string name="memory_downloads_usage" msgid="3755173051677533027">"Descargas"</string>
@@ -993,11 +993,11 @@
     <string name="terms_title" msgid="7697580845616764642">"Términos y condiciones"</string>
     <string name="settings_license_activity_title" msgid="7553683406244228650">"Licencias de código abierto"</string>
     <string name="settings_license_activity_unavailable" msgid="4210539215951487627">"Se ha producido un problema al intentar cargar las licencias."</string>
-    <string name="settings_license_activity_loading" msgid="3337535809093591740">"Cargando..."</string>
+    <string name="settings_license_activity_loading" msgid="3337535809093591740">"Cargando…"</string>
     <string name="settings_safetylegal_title" msgid="1289483965535937431">"Información de seguridad"</string>
     <string name="settings_safetylegal_activity_title" msgid="6901214628496951727">"Información de seguridad"</string>
     <string name="settings_safetylegal_activity_unreachable" msgid="232523852222964470">"No tienes conexión de datos. Para ver esta información, accede a %s desde cualquier ordenador conectado a Internet."</string>
-    <string name="settings_safetylegal_activity_loading" msgid="8059022597639516348">"Cargando..."</string>
+    <string name="settings_safetylegal_activity_loading" msgid="8059022597639516348">"Cargando…"</string>
     <string name="lockpassword_choose_your_password_header" msgid="8624900666929394990">"Selecciona tu contraseña"</string>
     <string name="lockpassword_choose_your_pattern_header" msgid="6949761069941694050">"Elige un patrón"</string>
     <string name="lockpassword_choose_your_pin_header" msgid="7598849519816138302">"Selecciona tu PIN"</string>
@@ -1106,7 +1106,7 @@
     <string name="internal_storage" msgid="1584700623164275282">"Almacenamiento interno"</string>
     <string name="sd_card_storage" product="nosdcard" msgid="2673203150465132465">"Almacenamiento USB"</string>
     <string name="sd_card_storage" product="default" msgid="7623513618171928235">"Tarjeta SD"</string>
-    <string name="recompute_size" msgid="7722567982831691718">"Recalculando tamaño..."</string>
+    <string name="recompute_size" msgid="7722567982831691718">"Recalculando tamaño…"</string>
     <string name="clear_data_dlg_title" msgid="5605258400134511197">"¿Eliminar datos de la aplicación?"</string>
     <string name="clear_data_dlg_text" msgid="8847257251846779938">"Todos los datos de esta aplicación se eliminarán de forma permanente. Esto incluye todos los archivos, configuración, cuentas, bases de datos, etc."</string>
     <string name="dlg_ok" msgid="2402639055725653590">"Aceptar"</string>
@@ -1242,7 +1242,7 @@
     <string name="user_dict_settings_context_menu_delete_title" msgid="9140703913776549054">"Eliminar"</string>
     <string name="user_dict_settings_empty_text" msgid="8165273379942105271">"No tienes ninguna palabra en el diccionario del usuario. Toca el botón Añadir (+) para añadir una palabra."</string>
     <string name="user_dict_settings_all_languages" msgid="6742000040975959247">"Para todos los idiomas"</string>
-    <string name="user_dict_settings_more_languages" msgid="7316375944684977910">"Más idiomas..."</string>
+    <string name="user_dict_settings_more_languages" msgid="7316375944684977910">"Más idiomas…"</string>
     <string name="testing" msgid="6584352735303604146">"Prueba"</string>
     <string name="testing_phone_info" product="tablet" msgid="193561832258534798">"Información del tablet"</string>
     <string name="testing_phone_info" product="default" msgid="8656693364332840056">"Información sobre el teléfono"</string>
@@ -1354,7 +1354,7 @@
     <string name="battery_since_reset" msgid="7464546661121187045">"Uso de la batería desde que se restableció"</string>
     <string name="battery_stats_on_battery" msgid="4970762168505236033">"<xliff:g id="TIME">%1$s</xliff:g> de batería"</string>
     <string name="battery_stats_duration" msgid="7464501326709469282">"<xliff:g id="TIME">%1$s</xliff:g> desde que se cargó"</string>
-    <string name="battery_stats_charging_label" msgid="4223311142875178785">"Cargando..."</string>
+    <string name="battery_stats_charging_label" msgid="4223311142875178785">"Cargando"</string>
     <string name="battery_stats_screen_on_label" msgid="7150221809877509708">"Pantalla encendida"</string>
     <string name="battery_stats_gps_on_label" msgid="1193657533641951256">"GPS activado"</string>
     <string name="battery_stats_wifi_running_label" msgid="1845839195549226252">"Wi-Fi"</string>
@@ -1474,8 +1474,8 @@
     <string name="gadget_state_template" msgid="5156935629902649932">"<xliff:g id="ID_1">%1$s</xliff:g> <xliff:g id="ID_2">%2$s</xliff:g>"</string>
     <string name="gadget_state_on" msgid="6909119593004937688">"activado"</string>
     <string name="gadget_state_off" msgid="5220212352953066317">"desactivado"</string>
-    <string name="gadget_state_turning_on" msgid="3395992057029439039">"activando..."</string>
-    <string name="gadget_state_turning_off" msgid="2395546048102176157">"desactivando..."</string>
+    <string name="gadget_state_turning_on" msgid="3395992057029439039">"activando"</string>
+    <string name="gadget_state_turning_off" msgid="2395546048102176157">"desactivando"</string>
     <string name="gadget_wifi" msgid="4712584536500629417">"Wi-Fi"</string>
     <string name="gadget_bluetooth" msgid="8998572807378694410">"Bluetooth"</string>
     <string name="gadget_gps" msgid="1558173602059236567">"GPS"</string>
@@ -1560,17 +1560,17 @@
     <string name="wifi_setup_forget" msgid="2562847595567347526">"Borrar"</string>
     <string name="wifi_setup_save" msgid="3659235094218508211">"Guardar"</string>
     <string name="wifi_setup_cancel" msgid="3185216020264410239">"Cancelar"</string>
-    <string name="wifi_setup_status_scanning" msgid="5317003416385428036">"Buscando redes..."</string>
+    <string name="wifi_setup_status_scanning" msgid="5317003416385428036">"Buscando redes…"</string>
     <string name="wifi_setup_status_select_network" msgid="7519563569903137003">"Toca en una red para conectarte a ella"</string>
     <string name="wifi_setup_status_existing_network" msgid="6394925174802598186">"Establecer conexión con red existente"</string>
     <string name="wifi_setup_status_unsecured_network" msgid="8143046977328718252">"Conectar con red no segura"</string>
     <string name="wifi_setup_status_edit_network" msgid="4765340816724760717">"Introducir configuración de red"</string>
     <string name="wifi_setup_status_new_network" msgid="7468952850452301083">"Establecer conexión con red nueva"</string>
-    <string name="wifi_setup_status_connecting" msgid="4971421484401530740">"Conectando..."</string>
+    <string name="wifi_setup_status_connecting" msgid="4971421484401530740">"Conectando…"</string>
     <string name="wifi_setup_status_proceed_to_next" msgid="6708250000342940031">"Ir al siguiente paso"</string>
     <string name="wifi_setup_status_eap_not_supported" msgid="5335338851032315905">"EAP no compatible"</string>
     <string name="wifi_setup_eap_not_supported" msgid="1955087534276570962">"No puedes definir una conexión Wi-Fi EAP durante la configuración, pero puedes hacerlo cuando haya finalizado a través de Ajustes &gt; Conexiones inalámbricas y redes."</string>
-    <string name="wifi_setup_description_connecting" msgid="2793554932006756795">"Conectando (puede tardar unos minutos)..."</string>
+    <string name="wifi_setup_description_connecting" msgid="2793554932006756795">"Conectando (puede tardar unos minutos)…"</string>
     <string name="wifi_setup_description_connected" msgid="736032046548460779">"Toca "<b>"Siguiente"</b>" para continuar con el proceso de configuración."\n\n"Toca "<b>"Atrás"</b>" para conectarte a otra red Wi-Fi."</string>
     <string name="accessibility_sync_enabled" msgid="558480439730263116">"Sincronización habilitada"</string>
     <string name="accessibility_sync_disabled" msgid="1741194106479011384">"Sincronización inhabilitada"</string>
diff --git a/res/values-hr/strings.xml b/res/values-hr/strings.xml
index 76f205c..1325833 100644
--- a/res/values-hr/strings.xml
+++ b/res/values-hr/strings.xml
@@ -609,7 +609,7 @@
     <string name="wifi_secured_first_item" msgid="4072076186051083451">"Osigurano značajkom <xliff:g id="WIFI_SECURITY_SHORT">%1$s</xliff:g>"</string>
     <string name="wifi_secured_second_item" msgid="1326000076939056265">", osigurano značajkom <xliff:g id="WIFI_SECURITY_SHORT">%1$s</xliff:g>"</string>
     <string name="wifi_security_none" msgid="7985461072596594400">"Nema"</string>
-    <string name="wifi_scan_always_turnon_message" msgid="203123538572122989">"Radi poboljšanja preciznosti lokacije kao i u druge svrhe aplikacija <xliff:g id="APP_NAME">%1$s</xliff:g> želi uključiti skeniranje mreže, čak i kada je Wi-Fi isključen."\n\n"Treba li dozvoliti to za sve aplikacije koje žele skenirati?"</string>
+    <string name="wifi_scan_always_turnon_message" msgid="203123538572122989">"Radi poboljšanja preciznosti lokacije kao i u druge svrhe aplikacija <xliff:g id="APP_NAME">%1$s</xliff:g> želi uključiti pregledavanje mreže, čak i kada je Wi-Fi isključen."\n\n"Želite li to dozvoliti za sve aplikacije koje žele izvoditi pregledavanje?"</string>
     <string name="wifi_scan_always_confirm_allow" msgid="5355973075896817232">"Dopusti"</string>
     <string name="wifi_scan_always_confirm_deny" msgid="4463982053823520710">"Odbij"</string>
     <string name="wifi_connect" msgid="1076622875777072845">"Poveži"</string>
diff --git a/res/values-nb/strings.xml b/res/values-nb/strings.xml
index beea79f..c04fff2 100644
--- a/res/values-nb/strings.xml
+++ b/res/values-nb/strings.xml
@@ -1520,7 +1520,7 @@
     <string name="backup_configure_account_title" msgid="3790872965773196615">"Sikkerhetskopikonto"</string>
     <string name="backup_configure_account_default_summary" msgid="2436933224764745553">"Ingen konto lagrer for øyeblikket sikkerhetskopierte data"</string>
     <string name="auto_restore_title" msgid="5397528966329126506">"Auto-gjenoppretting"</string>
-    <string name="auto_restore_summary" msgid="4235615056371993807">"Når du installerer en app, bør du gjenopprette sikkerhetskopierte innstillinger og data"</string>
+    <string name="auto_restore_summary" msgid="4235615056371993807">"Gjenopprett sikkerhetskopierte innstillinger og data når apper installeres"</string>
     <string name="local_backup_password_title" msgid="3860471654439418822">"Passord for sikkerhetskopiering på datamaskin"</string>
     <string name="local_backup_password_summary_none" msgid="393503434408227110">"Fullstendig sikkerhetskopiering på datamaskin beskyttes ikke for øyeblikket."</string>
     <string name="local_backup_password_summary_change" msgid="2731163425081172638">"Trykk for å endre eller fjerne passordet for fullstendige sikkerhetskopier på datamaskinen"</string>
diff --git a/res/values-pl/strings.xml b/res/values-pl/strings.xml
index 419b970..09acc83 100644
--- a/res/values-pl/strings.xml
+++ b/res/values-pl/strings.xml
@@ -609,7 +609,7 @@
     <string name="wifi_secured_first_item" msgid="4072076186051083451">"Zabezpieczona za pomocą protokołu <xliff:g id="WIFI_SECURITY_SHORT">%1$s</xliff:g>"</string>
     <string name="wifi_secured_second_item" msgid="1326000076939056265">", zabezpieczona za pomocą protokołu <xliff:g id="WIFI_SECURITY_SHORT">%1$s</xliff:g>"</string>
     <string name="wifi_security_none" msgid="7985461072596594400">"Brak"</string>
-    <string name="wifi_scan_always_turnon_message" msgid="203123538572122989">"Aby poprawić rozpoznawanie lokalizacji i korzystać z innych funkcji, <xliff:g id="APP_NAME">%1$s</xliff:g> chce włączyć skanowanie sieci – nawet kiedy obsługa Wi-Fi jest wyłączona."\n\n"Zezwolić na to wszystkim aplikacjom, które chcą przeprowadzić skanowanie?"</string>
+    <string name="wifi_scan_always_turnon_message" msgid="203123538572122989">"Aby poprawić rozpoznawanie lokalizacji i korzystać z innych funkcji, <xliff:g id="APP_NAME">%1$s</xliff:g> chce włączyć skanowanie sieci – nawet kiedy obsługa Wi-Fi jest wyłączona."\n\n"Zezwolić na to wszystkim aplikacjom, które chcą przeprowadzać skanowanie?"</string>
     <string name="wifi_scan_always_confirm_allow" msgid="5355973075896817232">"Zezwól"</string>
     <string name="wifi_scan_always_confirm_deny" msgid="4463982053823520710">"Odrzuć"</string>
     <string name="wifi_connect" msgid="1076622875777072845">"Połącz"</string>
diff --git a/res/values-pt/strings.xml b/res/values-pt/strings.xml
index 1245178..3b8f8a4 100644
--- a/res/values-pt/strings.xml
+++ b/res/values-pt/strings.xml
@@ -603,7 +603,7 @@
     <string name="wifi_disabled_generic" msgid="4259794910584943386">"Desativado"</string>
     <string name="wifi_disabled_network_failure" msgid="3111321240793227690">"Conexão com a Internet de baixa qualidade evitada"</string>
     <string name="wifi_disabled_password_failure" msgid="8659805351763133575">"Problema de autenticação"</string>
-    <string name="wifi_not_in_range" msgid="1136191511238508967">"Não está dentro do alcance"</string>
+    <string name="wifi_not_in_range" msgid="1136191511238508967">"Fora do alcance"</string>
     <string name="wifi_wps_available_first_item" msgid="4422547079984583502">"WPS disponível"</string>
     <string name="wifi_wps_available_second_item" msgid="8427520131718215301">" (WPS disponível)"</string>
     <string name="wifi_secured_first_item" msgid="4072076186051083451">"Protegido por <xliff:g id="WIFI_SECURITY_SHORT">%1$s</xliff:g>"</string>
diff --git a/res/values-sw/strings.xml b/res/values-sw/strings.xml
index f1451ec..fe450e3 100644
--- a/res/values-sw/strings.xml
+++ b/res/values-sw/strings.xml
@@ -1005,7 +1005,7 @@
     <string name="lock_settings_title" msgid="335025124489630932">"Usalama wa skrini"</string>
     <string name="lockpattern_change_lock_pattern_label" msgid="5679630792003440352">"Badilisha umbo la kufungua"</string>
     <string name="lockpattern_change_lock_pin_label" msgid="266707138486731661">"Badilisha PIN ya kufungua"</string>
-    <string name="lockpattern_need_to_unlock" msgid="757935356911054465">"Thibitisha ruwaza iliyohifadhiwa"</string>
+    <string name="lockpattern_need_to_unlock" msgid="757935356911054465">"Thibitisha mchoro uliohifadhiwa"</string>
     <string name="lockpattern_need_to_unlock_wrong" msgid="4694973540770105678">"Jaribu tena:"</string>
     <string name="lockpattern_recording_intro_header" msgid="2063630508212535241">"Chora ruwaza ya kufungua:"</string>
     <string name="lockpattern_recording_intro_footer" msgid="1118579101409152113">"Bonyeza menyu upate usaidizi"</string>
diff --git a/res/values-vi/strings.xml b/res/values-vi/strings.xml
index 70f5f12..18e5477 100644
--- a/res/values-vi/strings.xml
+++ b/res/values-vi/strings.xml
@@ -609,7 +609,7 @@
     <string name="wifi_secured_first_item" msgid="4072076186051083451">"Được bảo mật bằng <xliff:g id="WIFI_SECURITY_SHORT">%1$s</xliff:g>"</string>
     <string name="wifi_secured_second_item" msgid="1326000076939056265">", được bảo mật bằng <xliff:g id="WIFI_SECURITY_SHORT">%1$s</xliff:g>"</string>
     <string name="wifi_security_none" msgid="7985461072596594400">"Không"</string>
-    <string name="wifi_scan_always_turnon_message" msgid="203123538572122989">"Để nâng cao độ chính xác vị trí và phục vụ các mục đích khác, <xliff:g id="APP_NAME">%1$s</xliff:g> muốn bật tính năng quét mạng ngay cả khi Wi-Fi đang tắt."\n\n"Cho phép điều này đối với tất cả ứng dụng muốn quét?"</string>
+    <string name="wifi_scan_always_turnon_message" msgid="203123538572122989">"Để nâng cao độ chính xác vị trí và phục vụ các mục đích khác, <xliff:g id="APP_NAME">%1$s</xliff:g> muốn bật tính năng quét mạng ngay cả khi Wi-Fi đang tắt."\n\n"Cho phép cài đặt này đối với tất cả ứng dụng muốn quét?"</string>
     <string name="wifi_scan_always_confirm_allow" msgid="5355973075896817232">"Cho phép"</string>
     <string name="wifi_scan_always_confirm_deny" msgid="4463982053823520710">"Từ chối"</string>
     <string name="wifi_connect" msgid="1076622875777072845">"Kết nối"</string>
diff --git a/res/values/colors.xml b/res/values/colors.xml
index e7a00c3..bd385f6 100644
--- a/res/values/colors.xml
+++ b/res/values/colors.xml
@@ -37,4 +37,7 @@
     <color name="title_color">@android:color/holo_blue_light</color>
     <color name="setup_divider_color">#333333</color>
 
+    <color name="circle_avatar_frame_color">#ffffffff</color>
+    <color name="circle_avatar_frame_shadow_color">#80000000</color>
+    <color name="circle_avatar_frame_pressed_color">#ffffffff</color>
 </resources>
diff --git a/res/values/dimens.xml b/res/values/dimens.xml
index 91f293c..759b407 100755
--- a/res/values/dimens.xml
+++ b/res/values/dimens.xml
@@ -61,4 +61,8 @@
     <dimen name="keyguard_appwidget_picker_margin_left">6dip</dimen>
     <dimen name="keyguard_appwidget_picker_margin_right">6dip</dimen>
     <integer name="keyguard_appwidget_picker_cols">1</integer>
+
+    <dimen name="circle_avatar_size">48dp</dimen>
+    <dimen name="circle_avatar_frame_stroke_width">1dp</dimen>
+    <dimen name="circle_avatar_frame_shadow_radius">3dp</dimen>
 </resources>
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 4a8f796..7b028db 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -4276,8 +4276,10 @@
     <string name="user_settings_title">Users</string>
     <!-- User settings section title for details about you [CHAR LIMIT=25] -->
     <string name="user_you_section">You</string>
-    <!-- User settings user list section header [CHAR LIMIT=30] -->
-    <string name="user_list_title">Other users</string>
+    <!-- User settings trusted user list section header [CHAR LIMIT=30] -->
+    <string name="user_trusted_list_title">Trusted users</string>
+    <!-- User settings limited user list section header [CHAR LIMIT=30] -->
+    <string name="user_limited_list_title">Limited users</string>
     <!-- User settings add user menu [CHAR LIMIT=20] -->
     <string name="user_add_user_menu">Add user</string>
     <!-- User settings add restricted user label [CHAR LIMIT=20] -->
diff --git a/res/xml/user_settings.xml b/res/xml/user_settings.xml
index 3e61bd7..2e73e9e 100644
--- a/res/xml/user_settings.xml
+++ b/res/xml/user_settings.xml
@@ -35,8 +35,8 @@
             android:fragment="com.android.settings.OwnerInfoSettings" />
 
     <PreferenceCategory
-            android:key="user_list"
-            android:title="@string/user_list_title">
+            android:key="limited_user_list"
+            android:title="@string/user_limited_list_title">
     </PreferenceCategory>
 
     <Preference
@@ -45,6 +45,11 @@
             android:summary="@string/user_add_restricted_summary"
             android:icon="@drawable/ic_menu_add" />
 
+    <PreferenceCategory
+            android:key="trusted_user_list"
+            android:title="@string/user_trusted_list_title">
+    </PreferenceCategory>
+
     <Preference
             android:key="user_add_trusted"
             android:title="@string/user_add_trusted"
diff --git a/src/com/android/settings/CredentialStorage.java b/src/com/android/settings/CredentialStorage.java
index c737c7d..1444a73 100644
--- a/src/com/android/settings/CredentialStorage.java
+++ b/src/com/android/settings/CredentialStorage.java
@@ -197,12 +197,14 @@
             Bundle bundle = mInstallBundle;
             mInstallBundle = null;
 
+            final int uid = bundle.getInt(Credentials.EXTRA_INSTALL_AS_UID, -1);
+
             if (bundle.containsKey(Credentials.EXTRA_USER_PRIVATE_KEY_NAME)) {
                 String key = bundle.getString(Credentials.EXTRA_USER_PRIVATE_KEY_NAME);
                 byte[] value = bundle.getByteArray(Credentials.EXTRA_USER_PRIVATE_KEY_DATA);
 
-                if (!mKeyStore.importKey(key, value)) {
-                    Log.e(TAG, "Failed to install " + key);
+                if (!mKeyStore.importKey(key, value, uid)) {
+                    Log.e(TAG, "Failed to install " + key + " as user " + uid);
                     return;
                 }
             }
@@ -211,8 +213,8 @@
                 String certName = bundle.getString(Credentials.EXTRA_USER_CERTIFICATE_NAME);
                 byte[] certData = bundle.getByteArray(Credentials.EXTRA_USER_CERTIFICATE_DATA);
 
-                if (!mKeyStore.put(certName, certData)) {
-                    Log.e(TAG, "Failed to install " + certName);
+                if (!mKeyStore.put(certName, certData, uid)) {
+                    Log.e(TAG, "Failed to install " + certName + " as user " + uid);
                     return;
                 }
             }
@@ -221,11 +223,10 @@
                 String caListName = bundle.getString(Credentials.EXTRA_CA_CERTIFICATES_NAME);
                 byte[] caListData = bundle.getByteArray(Credentials.EXTRA_CA_CERTIFICATES_DATA);
 
-                if (!mKeyStore.put(caListName, caListData)) {
-                    Log.e(TAG, "Failed to install " + caListName);
+                if (!mKeyStore.put(caListName, caListData, uid)) {
+                    Log.e(TAG, "Failed to install " + caListName + " as user " + uid);
                     return;
                 }
-
             }
 
             setResult(RESULT_OK);
diff --git a/src/com/android/settings/DataUsageSummary.java b/src/com/android/settings/DataUsageSummary.java
index 0c00c68..2b2cc98 100644
--- a/src/com/android/settings/DataUsageSummary.java
+++ b/src/com/android/settings/DataUsageSummary.java
@@ -77,7 +77,6 @@
 import android.net.NetworkStatsHistory;
 import android.net.NetworkTemplate;
 import android.net.TrafficStats;
-import android.net.Uri;
 import android.os.AsyncTask;
 import android.os.Bundle;
 import android.os.INetworkManagementService;
@@ -329,6 +328,7 @@
         mHeader = (ViewGroup) inflater.inflate(R.layout.data_usage_header, mListView, false);
         mHeader.setClickable(true);
 
+        mListView.addHeaderView(new View(context), null, true);
         mListView.addHeaderView(mHeader, null, true);
         mListView.setItemsCanFocus(true);
 
@@ -454,9 +454,9 @@
         mMenuDataRoaming.setChecked(getDataRoaming());
 
         mMenuRestrictBackground = menu.findItem(R.id.data_usage_menu_restrict_background);
-        mMenuRestrictBackground.setVisible(hasReadyMobileRadio(context) && !appDetailMode);
+        mMenuRestrictBackground.setVisible(
+                hasReadyMobileRadio(context) && isOwner && !appDetailMode);
         mMenuRestrictBackground.setChecked(mPolicyManager.getRestrictBackground());
-        mMenuRestrictBackground.setVisible(isOwner);
 
         mMenuAutoSync = menu.findItem(R.id.data_usage_menu_auto_sync);
         mMenuAutoSync.setChecked(ContentResolver.getMasterSyncAutomatically());
@@ -1745,6 +1745,9 @@
                     new DialogInterface.OnClickListener() {
                         @Override
                         public void onClick(DialogInterface dialog, int which) {
+                            // clear focus to finish pending text edits
+                            cycleDayPicker.clearFocus();
+
                             final int cycleDay = cycleDayPicker.getValue();
                             final String cycleTimezone = new Time().timezone;
                             editor.setPolicyCycleDay(template, cycleDay, cycleTimezone);
diff --git a/src/com/android/settings/DeviceAdminSettings.java b/src/com/android/settings/DeviceAdminSettings.java
index 310aae7..9cfb44d 100644
--- a/src/com/android/settings/DeviceAdminSettings.java
+++ b/src/com/android/settings/DeviceAdminSettings.java
@@ -54,6 +54,7 @@
     DevicePolicyManager mDPM;
     final HashSet<ComponentName> mActiveAdmins = new HashSet<ComponentName>();
     final ArrayList<DeviceAdminInfo> mAvailableAdmins = new ArrayList<DeviceAdminInfo>();
+    String mDeviceOwnerPkg;
 
     @Override
     public void onCreate(Bundle icicle) {
@@ -70,6 +71,10 @@
     @Override
     public void onResume() {
         super.onResume();
+        mDeviceOwnerPkg = mDPM.getDeviceOwner();
+        if (mDeviceOwnerPkg != null && !mDPM.isDeviceOwner(mDeviceOwnerPkg)) {
+            mDeviceOwnerPkg = null;
+        }
         updateList();
     }
 
@@ -85,7 +90,7 @@
         mAvailableAdmins.clear();
         List<ResolveInfo> avail = getActivity().getPackageManager().queryBroadcastReceivers(
                 new Intent(DeviceAdminReceiver.ACTION_DEVICE_ADMIN_ENABLED),
-                PackageManager.GET_META_DATA);
+                PackageManager.GET_META_DATA | PackageManager.GET_DISABLED_UNTIL_USED_COMPONENTS);
         int count = avail == null ? 0 : avail.size();
         for (int i=0; i<count; i++) {
             ResolveInfo ri = avail.get(i);
@@ -149,7 +154,13 @@
         }
 
         public boolean isEnabled(int position) {
-            return true;
+            DeviceAdminInfo info = mAvailableAdmins.get(position);
+            if (mActiveAdmins.contains(info.getComponent())
+                    && info.getPackageName().equals(mDeviceOwnerPkg)) {
+                return false;
+            } else {
+                return true;
+            }
         }
 
         public View getView(int position, View convertView, ViewGroup parent) {
@@ -181,10 +192,16 @@
             vh.icon.setImageDrawable(item.loadIcon(activity.getPackageManager()));
             vh.name.setText(item.loadLabel(activity.getPackageManager()));
             vh.checkbox.setChecked(mActiveAdmins.contains(item.getComponent()));
+            final boolean activeOwner = vh.checkbox.isChecked()
+                    && item.getPackageName().equals(mDeviceOwnerPkg);
             try {
                 vh.description.setText(item.loadDescription(activity.getPackageManager()));
             } catch (Resources.NotFoundException e) {
             }
+            vh.checkbox.setEnabled(!activeOwner);
+            vh.name.setEnabled(!activeOwner);
+            vh.description.setEnabled(!activeOwner);
+            vh.icon.setEnabled(!activeOwner);
         }
     }
 }
diff --git a/src/com/android/settings/LocationSettings.java b/src/com/android/settings/LocationSettings.java
index b73dccd..2edefdf 100644
--- a/src/com/android/settings/LocationSettings.java
+++ b/src/com/android/settings/LocationSettings.java
@@ -96,7 +96,7 @@
         // Only enable these controls if this user is allowed to change location
         // sharing settings.
         final UserManager um = (UserManager) getActivity().getSystemService(Context.USER_SERVICE);
-        boolean isToggleAllowed = um.isLocationSharingToggleAllowed();
+        boolean isToggleAllowed = !um.hasUserRestriction(UserManager.DISALLOW_SHARE_LOCATION);
         if (mLocationAccess != null) mLocationAccess.setEnabled(isToggleAllowed);
         if (mNetwork != null) mNetwork.setEnabled(isToggleAllowed);
         if (mGps != null) mGps.setEnabled(isToggleAllowed);
@@ -117,6 +117,7 @@
 
         if (mSettingsObserver == null) {
             mSettingsObserver = new Observer() {
+                @Override
                 public void update(Observable o, Object arg) {
                     updateLocationToggles();
                 }
@@ -131,13 +132,13 @@
         final ContentResolver cr = getContentResolver();
         final UserManager um = (UserManager) getActivity().getSystemService(Context.USER_SERVICE);
         if (preference == mNetwork) {
-            if (um.isLocationSharingToggleAllowed()) {
+            if (!um.hasUserRestriction(UserManager.DISALLOW_SHARE_LOCATION)) {
                 Settings.Secure.setLocationProviderEnabled(cr,
                         LocationManager.NETWORK_PROVIDER, mNetwork.isChecked());
             }
         } else if (preference == mGps) {
             boolean enabled = mGps.isChecked();
-            if (um.isLocationSharingToggleAllowed()) {
+            if (!um.hasUserRestriction(UserManager.DISALLOW_SHARE_LOCATION)) {
                 Settings.Secure.setLocationProviderEnabled(cr,
                         LocationManager.GPS_PROVIDER, enabled);
                 if (mAssistedGps != null) {
@@ -186,7 +187,7 @@
     /** Enable or disable all providers when the master toggle is changed. */
     private void onToggleLocationAccess(boolean checked) {
         final UserManager um = (UserManager) getActivity().getSystemService(Context.USER_SERVICE);
-        if (! um.isLocationSharingToggleAllowed()) {
+        if (um.hasUserRestriction(UserManager.DISALLOW_SHARE_LOCATION)) {
             return;
         }
         final ContentResolver cr = getContentResolver();
diff --git a/src/com/android/settings/ProxySelector.java b/src/com/android/settings/ProxySelector.java
index 9bb6dca..21e717a 100644
--- a/src/com/android/settings/ProxySelector.java
+++ b/src/com/android/settings/ProxySelector.java
@@ -67,7 +67,7 @@
             "^$|^[" + HC + "]+(\\-[" + HC + "]+)*(\\.[" + HC + "]+(\\-[" + HC + "]+)*)*$";
     private static final Pattern HOSTNAME_PATTERN;
     private static final String EXCLUSION_REGEXP =
-            "$|^[" + HC + "]+(\\-[" + HC + "]+)*(\\.[" + HC + "]+(\\-[" + HC + "]+)*)*$";
+            "$|^(\\*)?\\.?[" + HC + "]+(\\-[" + HC + "]+)*(\\.[" + HC + "]+(\\-[" + HC + "]+)*)*$";
     private static final Pattern EXCLUSION_PATTERN;
     static {
         HOSTNAME_PATTERN = Pattern.compile(HOSTNAME_REGEXP);
diff --git a/src/com/android/settings/SecuritySettings.java b/src/com/android/settings/SecuritySettings.java
index b51f2f3..00a0e09 100644
--- a/src/com/android/settings/SecuritySettings.java
+++ b/src/com/android/settings/SecuritySettings.java
@@ -236,10 +236,26 @@
             removePreference(KEY_CREDENTIALS_MANAGER);
         }
 
+        PreferenceGroup deviceAdminCategory= (PreferenceGroup)
+                root.findPreference(KEY_DEVICE_ADMIN_CATEGORY);
         mToggleAppInstallation = (CheckBoxPreference) findPreference(
                 KEY_TOGGLE_INSTALL_APPLICATIONS);
         mToggleAppInstallation.setChecked(isNonMarketAppsAllowed());
 
+        final UserManager um = (UserManager) getActivity().getSystemService(Context.USER_SERVICE);
+        boolean isSideloadingAllowed =
+                !um.hasUserRestriction(UserManager.DISALLOW_INSTALL_UNKNOWN_SOURCES);
+        // Side loading of apps.
+        if (isSideloadingAllowed) {
+            mToggleAppInstallation.setEnabled(isSideloadingAllowed);
+        } else {
+            if (deviceAdminCategory != null) {
+                deviceAdminCategory.removePreference(mToggleAppInstallation);
+            } else {
+                mToggleAppInstallation.setEnabled(false);
+            }
+        }
+
         // Package verification, only visible to primary user and if enabled
         mToggleVerifyApps = (CheckBoxPreference) findPreference(KEY_TOGGLE_VERIFY_APPLICATIONS);
         if (mIsPrimary && showVerifierSetting()) {
@@ -250,8 +266,6 @@
                 mToggleVerifyApps.setEnabled(false);
             }
         } else {
-            PreferenceGroup deviceAdminCategory= (PreferenceGroup)
-                    root.findPreference(KEY_DEVICE_ADMIN_CATEGORY);
             if (deviceAdminCategory != null) {
                 deviceAdminCategory.removePreference(mToggleVerifyApps);
             } else {
@@ -268,6 +282,10 @@
     }
 
     private void setNonMarketAppsAllowed(boolean enabled) {
+        final UserManager um = (UserManager) getActivity().getSystemService(Context.USER_SERVICE);
+        if (um.hasUserRestriction(UserManager.DISALLOW_INSTALL_UNKNOWN_SOURCES)) {
+            return;
+        }
         // Change the system setting
         Settings.Global.putInt(getContentResolver(), Settings.Global.INSTALL_NON_MARKET_APPS,
                                 enabled ? 1 : 0);
@@ -303,6 +321,7 @@
                 .show();
     }
 
+    @Override
     public void onClick(DialogInterface dialog, int which) {
         if (dialog == mWarnInstallApps && which == DialogInterface.BUTTON_POSITIVE) {
             setNonMarketAppsAllowed(true);
@@ -505,6 +524,7 @@
         createPreferenceHierarchy();
     }
 
+    @Override
     public boolean onPreferenceChange(Preference preference, Object value) {
         if (preference == mLockAfter) {
             int timeout = Integer.parseInt((String) value);
diff --git a/src/com/android/settings/Settings.java b/src/com/android/settings/Settings.java
index be8e1cc..64a7d7f 100644
--- a/src/com/android/settings/Settings.java
+++ b/src/com/android/settings/Settings.java
@@ -178,6 +178,7 @@
 
         if (mParentHeader != null) {
             setParentTitle(mParentHeader.title, null, new OnClickListener() {
+                @Override
                 public void onClick(View v) {
                     switchToParent(mParentHeader.fragment);
                 }
@@ -405,7 +406,6 @@
     @Override
     public void onBuildHeaders(List<Header> headers) {
         loadHeadersFromResource(R.xml.settings_headers, headers);
-
         updateHeaderList(headers);
     }
 
@@ -414,6 +414,8 @@
                 DevelopmentSettings.PREF_SHOW,
                 android.os.Build.TYPE.equals("eng"));
         int i = 0;
+
+        final UserManager um = (UserManager) getSystemService(Context.USER_SERVICE);
         mHeaderIndexMap.clear();
         while (i < target.size()) {
             Header header = target.get(i);
@@ -464,6 +466,10 @@
                         }
                     }
                 }
+            } else if (id == R.id.account_add) {
+                if (um.hasUserRestriction(UserManager.DISALLOW_MODIFY_ACCOUNTS)) {
+                    target.remove(i);
+                }
             }
 
             if (i < target.size() && target.get(i) == header
@@ -778,6 +784,7 @@
         return true;
     }
 
+    @Override
     public boolean shouldUpRecreateTask(Intent targetIntent) {
         return super.shouldUpRecreateTask(new Intent(this, Settings.class));
     }
diff --git a/src/com/android/settings/accounts/AccountSyncSettings.java b/src/com/android/settings/accounts/AccountSyncSettings.java
index c346017..64c4d4a 100644
--- a/src/com/android/settings/accounts/AccountSyncSettings.java
+++ b/src/com/android/settings/accounts/AccountSyncSettings.java
@@ -28,17 +28,16 @@
 import android.content.ContentResolver;
 import android.content.Context;
 import android.content.DialogInterface;
-import android.content.Intent;
 import android.content.SyncAdapterType;
 import android.content.SyncInfo;
 import android.content.SyncStatusInfo;
 import android.content.pm.ProviderInfo;
 import android.net.ConnectivityManager;
 import android.os.Bundle;
+import android.os.UserManager;
 import android.preference.Preference;
 import android.preference.PreferenceScreen;
 import android.text.TextUtils;
-import android.text.format.DateFormat;
 import android.util.Log;
 import android.view.LayoutInflater;
 import android.view.Menu;
@@ -93,10 +92,12 @@
                 .setNegativeButton(android.R.string.cancel, null)
                 .setPositiveButton(R.string.remove_account_label,
                         new DialogInterface.OnClickListener() {
+                    @Override
                     public void onClick(DialogInterface dialog, int which) {
                         AccountManager.get(AccountSyncSettings.this.getActivity())
                                 .removeAccount(mAccount,
                                 new AccountManagerCallback<Boolean>() {
+                            @Override
                             public void run(AccountManagerFuture<Boolean> future) {
                                 // If already out of this screen, don't proceed.
                                 if (!AccountSyncSettings.this.isResumed()) {
@@ -233,12 +234,15 @@
         MenuItem syncCancel = menu.add(0, MENU_SYNC_CANCEL_ID, 0,
                 getString(R.string.sync_menu_sync_cancel))
                 .setIcon(com.android.internal.R.drawable.ic_menu_close_clear_cancel);
-        MenuItem removeAccount = menu.add(0, MENU_REMOVE_ACCOUNT_ID, 0,
-                getString(R.string.remove_account_label))
-                .setIcon(R.drawable.ic_menu_delete_holo_dark);
 
-        removeAccount.setShowAsAction(MenuItem.SHOW_AS_ACTION_NEVER |
-                MenuItem.SHOW_AS_ACTION_WITH_TEXT);
+        final UserManager um = (UserManager) getSystemService(Context.USER_SERVICE);
+        if (!um.hasUserRestriction(UserManager.DISALLOW_MODIFY_ACCOUNTS)) {
+            MenuItem removeAccount = menu.add(0, MENU_REMOVE_ACCOUNT_ID, 0,
+                    getString(R.string.remove_account_label))
+                    .setIcon(R.drawable.ic_menu_delete_holo_dark);
+            removeAccount.setShowAsAction(MenuItem.SHOW_AS_ACTION_NEVER |
+                    MenuItem.SHOW_AS_ACTION_WITH_TEXT);
+        }
         syncNow.setShowAsAction(MenuItem.SHOW_AS_ACTION_NEVER |
                 MenuItem.SHOW_AS_ACTION_WITH_TEXT);
         syncCancel.setShowAsAction(MenuItem.SHOW_AS_ACTION_NEVER |
diff --git a/src/com/android/settings/accounts/AddAccountSettings.java b/src/com/android/settings/accounts/AddAccountSettings.java
index 6f7e29a..f1b7752 100644
--- a/src/com/android/settings/accounts/AddAccountSettings.java
+++ b/src/com/android/settings/accounts/AddAccountSettings.java
@@ -23,8 +23,10 @@
 import android.accounts.OperationCanceledException;
 import android.app.Activity;
 import android.app.PendingIntent;
+import android.content.Context;
 import android.content.Intent;
 import android.os.Bundle;
+import android.os.UserManager;
 import android.util.Log;
 
 import com.android.settings.Utils;
@@ -71,7 +73,8 @@
 
     private PendingIntent mPendingIntent;
 
-    private AccountManagerCallback<Bundle> mCallback = new AccountManagerCallback<Bundle>() {
+    private final AccountManagerCallback<Bundle> mCallback = new AccountManagerCallback<Bundle>() {
+        @Override
         public void run(AccountManagerFuture<Bundle> future) {
             boolean done = true;
             try {
@@ -120,8 +123,10 @@
             if (Log.isLoggable(TAG, Log.VERBOSE)) Log.v(TAG, "restored");
         }
 
-        if (mAddAccountCalled) {
+        final UserManager um = (UserManager) getSystemService(Context.USER_SERVICE);
+        if (mAddAccountCalled || um.hasUserRestriction(UserManager.DISALLOW_MODIFY_ACCOUNTS)) {
             // We already called add account - maybe the callback was lost.
+            // Or we aren't allowed to add an account.
             finish();
             return;
         }
@@ -162,6 +167,7 @@
         }
     }
 
+    @Override
     protected void onSaveInstanceState(Bundle outState) {
         super.onSaveInstanceState(outState);
         outState.putBoolean(KEY_ADD_CALLED, mAddAccountCalled);
diff --git a/src/com/android/settings/users/AppRestrictionsFragment.java b/src/com/android/settings/users/AppRestrictionsFragment.java
index 9757f30..b610025 100644
--- a/src/com/android/settings/users/AppRestrictionsFragment.java
+++ b/src/com/android/settings/users/AppRestrictionsFragment.java
@@ -25,7 +25,10 @@
 import android.content.pm.PackageManager.NameNotFoundException;
 import android.content.pm.ResolveInfo;
 import android.content.pm.UserInfo;
+import android.graphics.Bitmap;
+import android.graphics.Color;
 import android.graphics.drawable.BitmapDrawable;
+import android.graphics.drawable.ColorDrawable;
 import android.graphics.drawable.Drawable;
 import android.os.Bundle;
 import android.os.UserHandle;
@@ -197,8 +200,10 @@
         }
         UserInfo info = mUserManager.getUserInfo(mUser.getIdentifier());
         mUserPreference.setTitle(info.name);
-        mUserPreference.setIcon(
-                new BitmapDrawable(mUserManager.getUserIcon(mUser.getIdentifier())));
+        Bitmap userIcon = mUserManager.getUserIcon(mUser.getIdentifier());
+        CircleFramedDrawable circularIcon =
+                CircleFramedDrawable.getInstance(this.getActivity(), userIcon);
+        mUserPreference.setIcon(circularIcon);
         mUserPreference.setText(info.name);
     }
 
diff --git a/src/com/android/settings/users/CircleFramedDrawable.java b/src/com/android/settings/users/CircleFramedDrawable.java
new file mode 100644
index 0000000..7770b47
--- /dev/null
+++ b/src/com/android/settings/users/CircleFramedDrawable.java
@@ -0,0 +1,181 @@
+/*
+ * Copyright (C) 2013 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings.users;
+
+import android.content.Context;
+import android.content.res.Resources;
+import android.graphics.Bitmap;
+import android.graphics.Canvas;
+import android.graphics.Color;
+import android.graphics.ColorFilter;
+import android.graphics.Paint;
+import android.graphics.Path;
+import android.graphics.PixelFormat;
+import android.graphics.PorterDuff;
+import android.graphics.PorterDuffXfermode;
+import android.graphics.Rect;
+import android.graphics.RectF;
+import android.graphics.drawable.Drawable;
+
+import com.android.settings.R;
+
+/**
+ * Converts the user avatar icon to a circularly clipped one.
+ * TODO: Move this to an internal framework class and share with the one in Keyguard.
+ */
+class CircleFramedDrawable extends Drawable {
+
+    private final Bitmap mBitmap;
+    private final int mSize;
+    private final Paint mPaint;
+    private final float mShadowRadius;
+    private final float mStrokeWidth;
+    private final int mFrameColor;
+    private final int mHighlightColor;
+    private final int mFrameShadowColor;
+
+    private float mScale;
+    private Path mFramePath;
+    private Rect mSrcRect;
+    private RectF mDstRect;
+    private RectF mFrameRect;
+    private boolean mPressed;
+
+    public static CircleFramedDrawable getInstance(Context context, Bitmap icon) {
+        Resources res = context.getResources();
+        float iconSize = res.getDimension(R.dimen.circle_avatar_size);
+        float strokeWidth = res.getDimension(R.dimen.circle_avatar_frame_stroke_width);
+        float shadowRadius = res.getDimension(R.dimen.circle_avatar_frame_shadow_radius);
+        int frameColor = res.getColor(R.color.circle_avatar_frame_color);
+        int frameShadowColor = res.getColor(R.color.circle_avatar_frame_shadow_color);
+        int highlightColor = res.getColor(R.color.circle_avatar_frame_pressed_color);
+
+        CircleFramedDrawable instance = new CircleFramedDrawable(icon,
+                (int) iconSize, frameColor, strokeWidth, frameShadowColor, shadowRadius,
+                highlightColor);
+        return instance;
+    }
+
+    public CircleFramedDrawable(Bitmap icon, int size,
+            int frameColor, float strokeWidth,
+            int frameShadowColor, float shadowRadius,
+            int highlightColor) {
+        super();
+        mSize = size;
+        mShadowRadius = shadowRadius;
+        mFrameColor = frameColor;
+        mFrameShadowColor = frameShadowColor;
+        mStrokeWidth = strokeWidth;
+        mHighlightColor = highlightColor;
+
+        mBitmap = Bitmap.createBitmap(mSize, mSize, Bitmap.Config.ARGB_8888);
+        final Canvas canvas = new Canvas(mBitmap);
+
+        final int width = icon.getWidth();
+        final int height = icon.getHeight();
+        final int square = Math.min(width, height);
+
+        final Rect cropRect = new Rect((width - square) / 2, (height - square) / 2, square, square);
+        final RectF circleRect = new RectF(0f, 0f, mSize, mSize);
+        circleRect.inset(mStrokeWidth / 2f, mStrokeWidth / 2f);
+        circleRect.inset(mShadowRadius, mShadowRadius);
+
+        final Path fillPath = new Path();
+        fillPath.addArc(circleRect, 0f, 360f);
+
+        canvas.drawColor(0, PorterDuff.Mode.CLEAR);
+
+        // opaque circle matte
+        mPaint = new Paint();
+        mPaint.setAntiAlias(true);
+        mPaint.setColor(Color.BLACK);
+        mPaint.setStyle(Paint.Style.FILL);
+        canvas.drawPath(fillPath, mPaint);
+
+        // mask in the icon where the bitmap is opaque
+        mPaint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_ATOP));
+        canvas.drawBitmap(icon, cropRect, circleRect, mPaint);
+
+        // prepare paint for frame drawing
+        mPaint.setXfermode(null);
+
+        mScale = 1f;
+
+        mSrcRect = new Rect(0, 0, mSize, mSize);
+        mDstRect = new RectF(0, 0, mSize, mSize);
+        mFrameRect = new RectF(mDstRect);
+        mFramePath = new Path();
+    }
+
+    @Override
+    public void draw(Canvas canvas) {
+        // clear background
+        final float outside = Math.min(canvas.getWidth(), canvas.getHeight());
+        final float inside = mScale * outside;
+        final float pad = (outside - inside) / 2f;
+
+        mDstRect.set(pad, pad, outside - pad, outside - pad);
+        canvas.drawBitmap(mBitmap, mSrcRect, mDstRect, null);
+
+        mFrameRect.set(mDstRect);
+        mFrameRect.inset(mStrokeWidth / 2f, mStrokeWidth / 2f);
+        mFrameRect.inset(mShadowRadius, mShadowRadius);
+
+        mFramePath.reset();
+        mFramePath.addArc(mFrameRect, 0f, 360f);
+
+        // white frame
+        if (mPressed) {
+            mPaint.setStyle(Paint.Style.FILL);
+            mPaint.setColor(Color.argb((int) (0.33f * 255),
+                            Color.red(mHighlightColor),
+                            Color.green(mHighlightColor),
+                            Color.blue(mHighlightColor)));
+            canvas.drawPath(mFramePath, mPaint);
+        }
+        mPaint.setStrokeWidth(mStrokeWidth);
+        mPaint.setStyle(Paint.Style.STROKE);
+        mPaint.setColor(mPressed ? mHighlightColor : mFrameColor);
+        mPaint.setShadowLayer(mShadowRadius, 0f, 0f, mFrameShadowColor);
+        canvas.drawPath(mFramePath, mPaint);
+    }
+
+    public void setScale(float scale) {
+        mScale = scale;
+    }
+
+    public float getScale() {
+        return mScale;
+    }
+
+    public void setPressed(boolean pressed) {
+        mPressed = pressed;
+    }
+
+    @Override
+    public int getOpacity() {
+        return PixelFormat.TRANSLUCENT;
+    }
+
+    @Override
+    public void setAlpha(int alpha) {
+    }
+
+    @Override
+    public void setColorFilter(ColorFilter cf) {
+    }
+}
\ No newline at end of file
diff --git a/src/com/android/settings/users/UserPreference.java b/src/com/android/settings/users/UserPreference.java
index 6889747..2894bf9 100644
--- a/src/com/android/settings/users/UserPreference.java
+++ b/src/com/android/settings/users/UserPreference.java
@@ -57,7 +57,7 @@
             mRestricted = ((UserManager) getContext().getSystemService(Context.USER_SERVICE))
                     .getUserInfo(mUserId).isRestricted();
         }
-        setSummary(mRestricted ? R.string.user_limited : R.string.user_trusted);
+        //setSummary(mRestricted ? R.string.user_limited : R.string.user_trusted);
     }
 
     @Override
diff --git a/src/com/android/settings/users/UserRestrictionsActivity.java b/src/com/android/settings/users/UserRestrictionsActivity.java
index 5f377f3..1a90a81 100644
--- a/src/com/android/settings/users/UserRestrictionsActivity.java
+++ b/src/com/android/settings/users/UserRestrictionsActivity.java
@@ -76,7 +76,7 @@
         if (userId == -1) {
             mNewUser = true;
             mUserInfo = um.createUser(name, UserInfo.FLAG_RESTRICTED);
-            um.setUserRestriction(UserManager.ALLOW_MODIFY_ACCOUNTS, false,
+            um.setUserRestriction(UserManager.DISALLOW_MODIFY_ACCOUNTS, true,
                     new UserHandle(mUserInfo.id));
 
             Bitmap bitmap = BitmapFactory.decodeResource(getResources(),
diff --git a/src/com/android/settings/users/UserSettings.java b/src/com/android/settings/users/UserSettings.java
index b6385c8..872d144 100644
--- a/src/com/android/settings/users/UserSettings.java
+++ b/src/com/android/settings/users/UserSettings.java
@@ -31,6 +31,7 @@
 import android.content.res.Resources;
 import android.graphics.Bitmap;
 import android.graphics.BitmapFactory;
+import android.graphics.Color;
 import android.graphics.drawable.BitmapDrawable;
 import android.graphics.drawable.Drawable;
 import android.os.AsyncTask;
@@ -76,7 +77,8 @@
     private static final String SAVE_ADDING_USER = "adding_user";
 
     private static final String KEY_USER_NICKNAME = "user_nickname";
-    private static final String KEY_USER_LIST = "user_list";
+    private static final String KEY_TRUSTED_USER_LIST = "trusted_user_list";
+    private static final String KEY_LIMITED_USER_LIST = "limited_user_list";
     private static final String KEY_USER_ME = "user_me";
     private static final String KEY_ADD_RESTRICTED_USER = "user_add_restricted";
     private static final String KEY_ADD_TRUSTED_USER = "user_add_trusted";
@@ -106,7 +108,8 @@
         R.drawable.avatar_default_8
     };
 
-    private PreferenceGroup mUserListCategory;
+    private PreferenceGroup mTrustedUserListCategory;
+    private PreferenceGroup mLimitedUserListCategory;
     private Preference mMePreference;
     private SelectableEditTextPreference mNicknamePreference;
     private Preference mAddRestrictedUser;
@@ -118,7 +121,7 @@
 
     private final Object mUserLock = new Object();
     private UserManager mUserManager;
-    private SparseArray<Drawable> mUserIcons = new SparseArray<Drawable>();
+    private SparseArray<Bitmap> mUserIcons = new SparseArray<Bitmap>();
     private boolean mIsOwner = UserHandle.myUserId() == UserHandle.USER_OWNER;
 
 
@@ -166,7 +169,8 @@
 
         mUserManager = (UserManager) getActivity().getSystemService(Context.USER_SERVICE);
         addPreferencesFromResource(R.xml.user_settings);
-        mUserListCategory = (PreferenceGroup) findPreference(KEY_USER_LIST);
+        mTrustedUserListCategory = (PreferenceGroup) findPreference(KEY_TRUSTED_USER_LIST);
+        mLimitedUserListCategory = (PreferenceGroup) findPreference(KEY_LIMITED_USER_LIST);
         mMePreference = (Preference) findPreference(KEY_USER_ME);
         mMePreference.setOnPreferenceClickListener(this);
         if (!mIsOwner) {
@@ -269,9 +273,8 @@
         int myUserId = UserHandle.myUserId();
         Bitmap b = mUserManager.getUserIcon(myUserId);
         if (b != null) {
-            Drawable d = new BitmapDrawable(b);
-            mMePreference.setIcon(d);
-            mUserIcons.put(myUserId, d);
+            mMePreference.setIcon(encircle(b));
+            mUserIcons.put(myUserId, b);
         }
     }
 
@@ -441,8 +444,10 @@
         if (getActivity() == null) return;
         List<UserInfo> users = mUserManager.getUsers(true);
 
-        mUserListCategory.removeAll();
-        mUserListCategory.setOrderingAsAdded(false);
+        mTrustedUserListCategory.removeAll();
+        mTrustedUserListCategory.setOrderingAsAdded(false);
+        mLimitedUserListCategory.removeAll();
+        mLimitedUserListCategory.setOrderingAsAdded(false);
 
         final ArrayList<Integer> missingIcons = new ArrayList<Integer>();
         for (UserInfo user : users) {
@@ -456,19 +461,23 @@
                         UserHandle.myUserId() == UserHandle.USER_OWNER, this, this);
                 pref.setOnPreferenceClickListener(this);
                 pref.setKey("id=" + user.id);
-                mUserListCategory.addPreference(pref);
+                if (user.isRestricted()) {
+                    mLimitedUserListCategory.addPreference(pref);
+                } else {
+                    mTrustedUserListCategory.addPreference(pref);
+                }
                 if (user.id == UserHandle.USER_OWNER) {
                     pref.setSummary(R.string.user_owner);
                 }
                 pref.setTitle(user.name);
-//                if (!isInitialized(user)) {
-//                    pref.setSummary(R.string.user_summary_not_set_up);
-//                }
+                if (!isInitialized(user)) {
+                    pref.setSummary(R.string.user_summary_not_set_up);
+                }
             }
             if (user.iconPath != null) {
                 if (mUserIcons.get(user.id) == null) {
                     missingIcons.add(user.id);
-                    pref.setIcon(R.drawable.avatar_default_1);
+                    pref.setIcon(encircle(R.drawable.avatar_default_1));
                 } else {
                     setPhotoId(pref, user);
                 }
@@ -480,9 +489,8 @@
                     false, null, null);
             pref.setEnabled(false);
             pref.setTitle(R.string.user_new_user_name);
-            //pref.setSummary(R.string.user_adding_new_user);
-            pref.setIcon(R.drawable.avatar_default_1);
-            mUserListCategory.addPreference(pref);
+            pref.setIcon(encircle(R.drawable.avatar_default_1));
+            mTrustedUserListCategory.addPreference(pref);
         }
         getActivity().invalidateOptionsMenu();
 
@@ -490,6 +498,9 @@
         if (missingIcons.size() > 0) {
             loadIconsAsync(missingIcons);
         }
+        boolean moreUsers = mUserManager.getMaxSupportedUsers() > users.size();
+        mAddRestrictedUser.setEnabled(moreUsers);
+        mAddTrustedUser.setEnabled(moreUsers);
     }
 
     private void loadIconsAsync(List<Integer> missingIcons) {
@@ -504,8 +515,7 @@
             protected Void doInBackground(List<Integer>... values) {
                 for (int userId : values[0]) {
                     Bitmap bitmap = mUserManager.getUserIcon(userId);
-                    Drawable d = new BitmapDrawable(resources, bitmap);
-                    mUserIcons.append(userId, d);
+                    mUserIcons.append(userId, bitmap);
                 }
                 return null;
             }
@@ -533,9 +543,9 @@
     }
 
     private void setPhotoId(Preference pref, UserInfo user) {
-        Drawable d = mUserIcons.get(user.id); // UserUtils.getUserIcon(mUserManager, user);
-        if (d != null) {
-            pref.setIcon(d);
+        Bitmap bitmap = mUserIcons.get(user.id); // UserUtils.getUserIcon(mUserManager, user);
+        if (bitmap != null) {
+            pref.setIcon(encircle(bitmap));
         }
     }
 
@@ -591,6 +601,16 @@
         return (user.flags & UserInfo.FLAG_INITIALIZED) != 0;
     }
 
+    private Drawable encircle(int iconResId) {
+        Bitmap icon = BitmapFactory.decodeResource(getResources(), iconResId);
+        return encircle(icon);
+    }
+
+    private Drawable encircle(Bitmap icon) {
+        Drawable circled = CircleFramedDrawable.getInstance(getActivity(), icon);
+        return circled;
+    }
+
     @Override
     public void onClick(View v) {
         if (v.getTag() instanceof UserPreference) {
diff --git a/src/com/android/settings/widget/SettingsAppWidgetProvider.java b/src/com/android/settings/widget/SettingsAppWidgetProvider.java
index ac9df9f..5d581d8 100644
--- a/src/com/android/settings/widget/SettingsAppWidgetProvider.java
+++ b/src/com/android/settings/widget/SettingsAppWidgetProvider.java
@@ -541,7 +541,7 @@
                 protected Boolean doInBackground(Void... args) {
                     final UserManager um =
                             (UserManager) context.getSystemService(Context.USER_SERVICE);
-                    if (um.isLocationSharingToggleAllowed()) {
+                    if (!um.hasUserRestriction(UserManager.DISALLOW_SHARE_LOCATION)) {
                         Settings.Secure.setLocationProviderEnabled(
                             resolver,
                             LocationManager.GPS_PROVIDER,
diff --git a/src/com/android/settings/wifi/WifiSettings.java b/src/com/android/settings/wifi/WifiSettings.java
index 4b2a0c9..cf27dd5 100644
--- a/src/com/android/settings/wifi/WifiSettings.java
+++ b/src/com/android/settings/wifi/WifiSettings.java
@@ -953,7 +953,9 @@
         if (button == WifiDialog.BUTTON_FORGET && mSelectedAccessPoint != null) {
             forget();
         } else if (button == WifiDialog.BUTTON_SUBMIT) {
-            submit(mDialog.getController());
+            if (mDialog != null) {
+                submit(mDialog.getController());
+            }
         }
     }
 
