diff --git a/DEPS b/DEPS
index 89dbe8c..aade831 100644
--- a/DEPS
+++ b/DEPS
@@ -199,11 +199,11 @@
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling Skia
   # and whatever else without interference from each other.
-  'skia_revision': '512ff75a0bad773739ef276086e9941377439a67',
+  'skia_revision': '011a77357ec4a6b583417a875a337dc3ae34a416',
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling V8
   # and whatever else without interference from each other.
-  'v8_revision': '7da2cc8b4955c7c5a81050c50cb6a84ba1819f58',
+  'v8_revision': '1c9380eba0e26de8661d3b1c69778082b4771b2b',
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling swarming_client
   # and whatever else without interference from each other.
@@ -211,7 +211,7 @@
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling ANGLE
   # and whatever else without interference from each other.
-  'angle_revision': 'a10d694e914ea0a2c3958f710b7607100a10899f',
+  'angle_revision': 'dea86294537c612e1f0d72d9b29b7ecb1a76dbd3',
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling SwiftShader
   # and whatever else without interference from each other.
@@ -266,7 +266,7 @@
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling catapult
   # and whatever else without interference from each other.
-  'catapult_revision': '88efddc6a162994babc45a2d28bb5f4f9867c2f1',
+  'catapult_revision': '4565794f5eda08cefef9bf842e16249fc8aeb5bc',
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling libFuzzer
   # and whatever else without interference from each other.
@@ -274,7 +274,7 @@
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling devtools-frontend
   # and whatever else without interference from each other.
-  'devtools_frontend_revision': 'e79095f5335b1fcccc62b085e44509d49cec7ae7',
+  'devtools_frontend_revision': '57c86890de5feb413493f8f0b3b2a5f73d4967d0',
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling libprotobuf-mutator
   # and whatever else without interference from each other.
@@ -322,11 +322,11 @@
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling feed
   # and whatever else without interference from each other.
-  'shaderc_revision': '1520e40f5e2b6d480f06a467406dade164195bf9',
+  'shaderc_revision': '702723ac7599d229195aabfee0b61954ad087140',
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling feed
   # and whatever else without interference from each other.
-  'dawn_revision': 'f0a0c38623ed7a523be9544e43c3f3c2a05cc267',
+  'dawn_revision': '042184128efea90552495d5054c3ae17b84cb3c3',
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling feed
   # and whatever else without interference from each other.
@@ -918,7 +918,7 @@
   },
 
   'src/third_party/depot_tools':
-    Var('chromium_git') + '/chromium/tools/depot_tools.git' + '@' + '55e9ddf21994663b4564ae7fff33238e84a5ba23',
+    Var('chromium_git') + '/chromium/tools/depot_tools.git' + '@' + '3b055d329e60963cb8a7de7b4baec2202fe3eb60',
 
   'src/third_party/devtools-frontend/src':
     Var('chromium_git') + '/devtools/devtools-frontend' + '@' + Var('devtools_frontend_revision'),
@@ -1273,7 +1273,7 @@
     Var('chromium_git') + '/external/github.com/cisco/openh264' + '@' + '3dd5b80bc4f172dd82925bb259cb7c82348409c5',
 
   'src/third_party/openscreen/src':
-    Var('chromium_git') + '/openscreen' + '@' + 'b9d9529da93acf08f70acf2071f153749c4eac94',
+    Var('chromium_git') + '/openscreen' + '@' + '963b0a6bd9156b612efc8c0d8142bba7b5f4e1dc',
 
   'src/third_party/openxr/src': {
     'url': Var('chromium_git') + '/external/github.com/KhronosGroup/OpenXR-SDK' + '@' + '97cfe495bb7a3853266b646d1c79e169387f9c7a',
@@ -1290,7 +1290,7 @@
   },
 
   'src/third_party/perfetto':
-    Var('android_git') + '/platform/external/perfetto.git' + '@' + 'e1502e7972cb2a4bb582d5ae2cc693cc3b7868dc',
+    Var('android_git') + '/platform/external/perfetto.git' + '@' + '3bf9804260028db727c4631798c5babeabaf821c',
 
   'src/third_party/perl': {
       'url': Var('chromium_git') + '/chromium/deps/perl.git' + '@' + '6f3e5028eb65d0b4c5fdd792106ac4c84eee1eb3',
@@ -1368,7 +1368,7 @@
       'packages': [
           {
               'package': 'fuchsia/third_party/aemu/linux-amd64',
-              'version': 'ZgEt2vZQcebeMBnTVKemE7gxtLtigVkD5iHfrp1QkDsC'
+              'version': '_Al4vzs8u2wU-GYPWCG5soPJ7bitM8J9Yf85PjKhnAwC'
           },
       ],
       'condition': 'host_os == "linux" and checkout_fuchsia',
@@ -1540,7 +1540,7 @@
     Var('chromium_git') + '/external/github.com/gpuweb/cts.git' + '@' + '3c2fe3888658d82b47ca831d59a2e07579619c2d',
 
   'src/third_party/webrtc':
-    Var('webrtc_git') + '/src.git' + '@' + '0f0bcb39f3fcb2b6185f146dfc4f4357276e40d4',
+    Var('webrtc_git') + '/src.git' + '@' + 'bb1a28de3cf17476142e9de8ee12fe6c567d06c1',
 
   'src/third_party/libgifcodec':
      Var('skia_git') + '/libgifcodec' + '@'+  Var('libgifcodec_revision'),
@@ -1612,7 +1612,7 @@
     Var('chromium_git') + '/v8/v8.git' + '@' +  Var('v8_revision'),
 
   'src-internal': {
-    'url': 'https://chrome-internal.googlesource.com/chrome/src-internal.git@95a2d32164883889b582d70ada33d8a9b45e9d45',
+    'url': 'https://chrome-internal.googlesource.com/chrome/src-internal.git@fa2c56d16d1c61f699599a036154595f30966ff9',
     'condition': 'checkout_src_internal',
   },
 
diff --git a/PRESUBMIT.py b/PRESUBMIT.py
index 1102661..bda70a6 100644
--- a/PRESUBMIT.py
+++ b/PRESUBMIT.py
@@ -362,7 +362,6 @@
   '^chrome/browser/site_isolation/site_per_process_text_input_browsertest.cc',
   '^chrome/browser/supervised_user/',
   '^chrome/browser/sync_file_system/',
-  '^chrome/browser/thumbnail/cc/',
   '^chrome/browser/translate/',
   '^chrome/browser/ui/',
   '^chrome/browser/web_applications/',
diff --git a/WATCHLISTS b/WATCHLISTS
index ac2a37b7..20caef5 100644
--- a/WATCHLISTS
+++ b/WATCHLISTS
@@ -1855,6 +1855,9 @@
                   '|chrome/browser/ui/ash/network/tether*'\
                   '|chromeos/components/tether/'
     },
+    'text_to_speech': {
+      'filepath': 'tts'
+    },
     'textinput': {
       'filepath': 'content/browser/renderer_host/render_widget_host_view'\
                   '|content/browser/renderer_host/text_input'\
@@ -2823,6 +2826,7 @@
     'tests': [],
     'tether': ['hansberry+watch-tether@chromium.org',
                'vecore+watch-tether@google.com'],
+    'text_to_speech': ['dtseng+watch@chromium.org'],
     'textinput': ['keithlee+watch@chromium.org',
                   'nona+watch@chromium.org',
                   'shuchen+watch@chromium.org',
diff --git a/android_webview/browser/aw_browser_context.cc b/android_webview/browser/aw_browser_context.cc
index e4251de..c53ac46 100644
--- a/android_webview/browser/aw_browser_context.cc
+++ b/android_webview/browser/aw_browser_context.cc
@@ -22,9 +22,11 @@
 #include "android_webview/browser/safe_browsing/aw_safe_browsing_allowlist_manager.h"
 #include "android_webview/browser_jni_headers/AwBrowserContext_jni.h"
 #include "android_webview/common/aw_features.h"
+#include "android_webview/common/aw_switches.h"
 #include "android_webview/common/crash_reporter/crash_keys.h"
 #include "base/base_paths_posix.h"
 #include "base/bind.h"
+#include "base/command_line.h"
 #include "base/feature_list.h"
 #include "base/files/file_util.h"
 #include "base/path_service.h"
@@ -484,9 +486,11 @@
       network::mojom::CookieManagerParams::New();
   context_params->cookie_manager_params->allow_file_scheme_cookies =
       GetCookieManager()->GetAllowFileSchemeCookies();
-  // Set all cookies to Legacy on Android WebView, for compatibility reasons.
   context_params->cookie_manager_params->cookie_access_delegate_type =
-      network::mojom::CookieAccessDelegateType::ALWAYS_LEGACY;
+      base::CommandLine::ForCurrentProcess()->HasSwitch(
+          switches::kWebViewEnableModernCookieSameSite)
+          ? network::mojom::CookieAccessDelegateType::ALWAYS_NONLEGACY
+          : network::mojom::CookieAccessDelegateType::ALWAYS_LEGACY;
 
   context_params->initial_ssl_config = network::mojom::SSLConfig::New();
   // Allow SHA-1 to be used for locally-installed trust anchors, as WebView
diff --git a/android_webview/browser/aw_feature_list_creator.cc b/android_webview/browser/aw_feature_list_creator.cc
index 1d703a6b..904a00c4 100644
--- a/android_webview/browser/aw_feature_list_creator.cc
+++ b/android_webview/browser/aw_feature_list_creator.cc
@@ -15,6 +15,7 @@
 #include "android_webview/browser/aw_metrics_service_client_delegate.h"
 #include "android_webview/browser/metrics/aw_metrics_service_client.h"
 #include "android_webview/browser/variations/variations_seed_loader.h"
+#include "android_webview/common/aw_switches.h"
 #include "android_webview/proto/aw_variations_seed.pb.h"
 #include "base/base_switches.h"
 #include "base/bind.h"
@@ -42,6 +43,7 @@
 #include "components/variations/service/safe_seed_manager.h"
 #include "components/variations/service/variations_service.h"
 #include "content/public/common/content_switch_dependent_feature_overrides.h"
+#include "net/base/features.h"
 #include "net/nqe/pref_names.h"
 #include "services/preferences/tracked/segregated_pref_store.h"
 
@@ -97,6 +99,24 @@
   return path;
 }
 
+// Adds WebView-specific switch-dependent feature overrides on top of the ones
+// from the content layer.
+std::vector<base::FeatureList::FeatureOverrideInfo>
+GetSwitchDependentFeatureOverrides(const base::CommandLine& command_line) {
+  std::vector<base::FeatureList::FeatureOverrideInfo> feature_overrides =
+      content::GetSwitchDependentFeatureOverrides(command_line);
+
+  // TODO(chlily): This can be removed when Schemeful Same-Site is enabled by
+  // default.
+  if (command_line.HasSwitch(switches::kWebViewEnableModernCookieSameSite)) {
+    feature_overrides.push_back(
+        std::make_pair(net::features::kSchemefulSameSite,
+                       base::FeatureList::OVERRIDE_ENABLE_FEATURE));
+  }
+
+  return feature_overrides;
+}
+
 }  // namespace
 
 AwFeatureListCreator::AwFeatureListCreator()
@@ -212,7 +232,7 @@
   variations_field_trial_creator_->SetupFieldTrials(
       cc::switches::kEnableGpuBenchmarking, switches::kEnableFeatures,
       switches::kDisableFeatures, std::vector<std::string>(),
-      content::GetSwitchDependentFeatureOverrides(
+      GetSwitchDependentFeatureOverrides(
           *base::CommandLine::ForCurrentProcess()),
       /*low_entropy_provider=*/nullptr, std::make_unique<base::FeatureList>(),
       aw_field_trials_.get(), &ignored_safe_seed_manager,
diff --git a/android_webview/browser/cookie_manager.cc b/android_webview/browser/cookie_manager.cc
index 5e747992..76eb97a9 100644
--- a/android_webview/browser/cookie_manager.cc
+++ b/android_webview/browser/cookie_manager.cc
@@ -13,12 +13,14 @@
 #include "android_webview/browser/aw_browser_context.h"
 #include "android_webview/browser/aw_cookie_access_policy.h"
 #include "android_webview/browser_jni_headers/AwCookieManager_jni.h"
+#include "android_webview/common/aw_switches.h"
 #include "base/android/build_info.h"
 #include "base/android/callback_android.h"
 #include "base/android/jni_string.h"
 #include "base/android/path_utils.h"
 #include "base/bind.h"
 #include "base/callback_helpers.h"
+#include "base/command_line.h"
 #include "base/containers/circular_deque.h"
 #include "base/files/file_util.h"
 #include "base/location.h"
@@ -348,11 +350,14 @@
     }
 
     cookie_store_ = content::CreateCookieStore(cookie_config, nullptr);
-    // Use a CookieAccessDelegate that always returns Legacy mode, for
-    // compatibility reasons.
+    auto cookie_access_delegate_type =
+        base::CommandLine::ForCurrentProcess()->HasSwitch(
+            switches::kWebViewEnableModernCookieSameSite)
+            ? network::mojom::CookieAccessDelegateType::ALWAYS_NONLEGACY
+            : network::mojom::CookieAccessDelegateType::ALWAYS_LEGACY;
     cookie_store_->SetCookieAccessDelegate(
         std::make_unique<network::CookieAccessDelegateImpl>(
-            network::mojom::CookieAccessDelegateType::ALWAYS_LEGACY,
+            cookie_access_delegate_type,
             nullptr /* preloaded_first_party_sets */));
   }
 
diff --git a/android_webview/common/aw_switches.cc b/android_webview/common/aw_switches.cc
index 09fb32e..7181ed7 100644
--- a/android_webview/common/aw_switches.cc
+++ b/android_webview/common/aw_switches.cc
@@ -46,4 +46,11 @@
 // variations seed.
 const char kFinchSeedMinUpdatePeriod[] = "finch-seed-min-update-period";
 
+// Enables modern SameSite cookie behavior (as opposed to legacy behavior). This
+// is used for WebView versions prior to when the modern behavior will be
+// enabled by default. This enables the same-site-by-default-cookies,
+// cookies-without-SameSite-must-be-secure, and schemeful-same-site features.
+const char kWebViewEnableModernCookieSameSite[] =
+    "webview-enable-modern-cookie-same-site";
+
 }  // namespace switches
diff --git a/android_webview/common/aw_switches.h b/android_webview/common/aw_switches.h
index d3485dc..df942b7 100644
--- a/android_webview/common/aw_switches.h
+++ b/android_webview/common/aw_switches.h
@@ -17,6 +17,7 @@
 extern const char kFinchSeedIgnorePendingDownload[];
 extern const char kFinchSeedMinDownloadPeriod[];
 extern const char kFinchSeedMinUpdatePeriod[];
+extern const char kWebViewEnableModernCookieSameSite[];
 
 }  // namespace switches
 
diff --git a/android_webview/java/src/org/chromium/android_webview/common/ProductionSupportedFlagList.java b/android_webview/java/src/org/chromium/android_webview/common/ProductionSupportedFlagList.java
index fc274c1..13178f2e 100644
--- a/android_webview/java/src/org/chromium/android_webview/common/ProductionSupportedFlagList.java
+++ b/android_webview/java/src/org/chromium/android_webview/common/ProductionSupportedFlagList.java
@@ -68,6 +68,10 @@
             Flag.commandLine(GpuSwitches.IGNORE_GPU_BLOCKLIST,
                     "Overrides the built-in software rendering list and enables "
                             + "GPU acceleration on unsupported device configurations."),
+            Flag.commandLine(AwSwitches.WEBVIEW_ENABLE_MODERN_COOKIE_SAME_SITE,
+                    "Enables modern SameSite cookie behavior: 1) SameSite=Lax by default "
+                            + "(cookies without a SameSite attribute are treated as SameSite=Lax); "
+                            + "2) Schemeful Same-Site (site boundaries include the URL scheme)."),
             Flag.baseFeature(GpuFeatures.ENABLE_SHARED_IMAGE_FOR_WEBVIEW,
                     "Enables shared images for WebView."),
             Flag.baseFeature(GpuFeatures.WEBVIEW_VULKAN,
diff --git a/android_webview/javatests/src/org/chromium/android_webview/test/CookieManagerTest.java b/android_webview/javatests/src/org/chromium/android_webview/test/CookieManagerTest.java
index bd77b80c..1ed65800 100644
--- a/android_webview/javatests/src/org/chromium/android_webview/test/CookieManagerTest.java
+++ b/android_webview/javatests/src/org/chromium/android_webview/test/CookieManagerTest.java
@@ -23,6 +23,7 @@
 import org.chromium.android_webview.AwContents;
 import org.chromium.android_webview.AwCookieManager;
 import org.chromium.android_webview.AwSettings;
+import org.chromium.android_webview.common.AwSwitches;
 import org.chromium.android_webview.test.util.CookieUtils;
 import org.chromium.android_webview.test.util.CookieUtils.TestCallback;
 import org.chromium.android_webview.test.util.JSUtils;
@@ -1075,6 +1076,49 @@
     @Test
     @MediumTest
     @Feature({"AndroidWebView", "Privacy"})
+    public void testModernCookieSameSite_Disabled() throws Throwable {
+        // Tests that the legacy behavior is active when "modern" SameSite behavior is not specified
+        // via command-line flag.
+        TestWebServer httpWebServer = TestWebServer.start();
+        TestWebServer httpsWebServer = TestWebServer.startSsl();
+        try {
+            ModernCookieSameSiteTestHelper httpHelper =
+                    new ModernCookieSameSiteTestHelper(httpWebServer, httpsWebServer);
+            ModernCookieSameSiteTestHelper httpsHelper =
+                    new ModernCookieSameSiteTestHelper(httpsWebServer, httpWebServer);
+
+            httpHelper.assertModernCookieSameSiteResult("-disabled-http", false);
+            httpsHelper.assertModernCookieSameSiteResult("-disabled-https", false);
+        } finally {
+            httpWebServer.shutdown();
+            httpsWebServer.shutdown();
+        }
+    }
+
+    @Test
+    @MediumTest
+    @Feature({"AndroidWebView", "Privacy"})
+    @CommandLineFlags.Add(AwSwitches.WEBVIEW_ENABLE_MODERN_COOKIE_SAME_SITE)
+    public void testModernCookieSameSite_Enabled() throws Throwable {
+        TestWebServer httpWebServer = TestWebServer.start();
+        TestWebServer httpsWebServer = TestWebServer.startSsl();
+        try {
+            ModernCookieSameSiteTestHelper httpHelper =
+                    new ModernCookieSameSiteTestHelper(httpWebServer, httpsWebServer);
+            ModernCookieSameSiteTestHelper httpsHelper =
+                    new ModernCookieSameSiteTestHelper(httpsWebServer, httpWebServer);
+
+            httpHelper.assertModernCookieSameSiteResult("-enabled-http", true);
+            httpsHelper.assertModernCookieSameSiteResult("-enabled-https", true);
+        } finally {
+            httpWebServer.shutdown();
+            httpsWebServer.shutdown();
+        }
+    }
+
+    @Test
+    @MediumTest
+    @Feature({"AndroidWebView", "Privacy"})
     public void testAcceptFileSchemeCookies() throws Throwable {
         mCookieManager.setAcceptFileSchemeCookies(true);
         Assert.assertTrue("allowFileSchemeCookies() should return true after "
@@ -1216,6 +1260,122 @@
         }
     }
 
+    class ModernCookieSameSiteTestHelper {
+        protected final AwContents mAwContents;
+        protected final TestWebServer mWebServer;
+        protected final TestWebServer mCrossSchemeWebServer;
+
+        ModernCookieSameSiteTestHelper(
+                TestWebServer webServer, TestWebServer crossSchemeWebServer) {
+            mWebServer = webServer;
+            mCrossSchemeWebServer = crossSchemeWebServer;
+            final AwTestContainerView containerView =
+                    mActivityTestRule.createAwTestContainerViewOnMainSync(mContentsClient);
+            mAwContents = containerView.getAwContents();
+            mAwContents.getSettings().setJavaScriptEnabled(true);
+
+            allowFirstPartyCookies();
+            allowThirdPartyCookies(mAwContents);
+        }
+
+        void assertModernCookieSameSiteResult(
+                String suffix, boolean expectedIsSameSiteBehaviorModern) throws Throwable {
+            assertSameSiteLaxByDefaultResult(suffix, expectedIsSameSiteBehaviorModern);
+            assertSameSiteNoneRequiresSecureResult(suffix, expectedIsSameSiteBehaviorModern);
+            assertSchemefulSameSiteResult(suffix, expectedIsSameSiteBehaviorModern);
+        }
+
+        private void assertSameSiteLaxByDefaultResult(String suffix, boolean expectedIsLaxByDefault)
+                throws Throwable {
+            final String key = "test-lax-by-default" + suffix;
+            final String value = "value" + suffix;
+            final String iframePath = "/iframe_" + suffix + ".html";
+            final String pagePath = "/content_" + suffix + ".html";
+
+            // We create a script which tries to set a cookie on a cross-site URL. The cookie does
+            // not specify a SameSite attribute, so its SameSite mode is whatever the default is.
+            final String cookieUrl =
+                    toThirdPartyUrl(makeCookieScriptUrl(mWebServer, iframePath, key, value));
+
+            // Then we load it as an iframe, to attempt to set a default cookie in a cross-site
+            // context. It should be rejected if SameSite=Lax by Default is active.
+            final String url = makeIframeUrl(mWebServer, pagePath, cookieUrl);
+            mActivityTestRule.loadUrlSync(
+                    mAwContents, mContentsClient.getOnPageFinishedHelper(), url);
+
+            if (expectedIsLaxByDefault) {
+                assertNoCookies(cookieUrl);
+            } else {
+                assertHasCookies(cookieUrl);
+                validateCookies(cookieUrl, key);
+            }
+
+            // Clear the cookies.
+            clearCookies();
+            Assert.assertFalse(mCookieManager.hasCookies());
+        }
+
+        private void assertSameSiteNoneRequiresSecureResult(
+                String suffix, boolean expectedDoesNoneRequireSecure) throws Throwable {
+            final String path = "/cookie_test.html";
+            final String responseStr =
+                    "<html><head><title>TEST!</title></head><body>HELLO!</body></html>";
+            final List<Pair<String, String>> responseHeaders =
+                    new ArrayList<Pair<String, String>>();
+            final String headerCookieName = "test-none-requires-secure" + suffix;
+            final String headerCookieValue = "value" + suffix;
+
+            // Attempt to set a SameSite=None cookie without Secure. It should be rejected if
+            // SameSite=None Requires Secure is active.
+            responseHeaders.add(Pair.create(
+                    "Set-Cookie", headerCookieName + "=" + headerCookieValue + "; SameSite=None"));
+            String url = mWebServer.setResponse(path, responseStr, responseHeaders);
+            mActivityTestRule.loadUrlSync(
+                    mAwContents, mContentsClient.getOnPageFinishedHelper(), url);
+
+            if (expectedDoesNoneRequireSecure) {
+                assertNoCookies(url);
+            } else {
+                waitForCookie(url);
+                assertHasCookies(url);
+                validateCookies(url, headerCookieName);
+            }
+
+            // Clear the cookies.
+            clearCookies();
+            Assert.assertFalse(mCookieManager.hasCookies());
+        }
+
+        private void assertSchemefulSameSiteResult(
+                String suffix, boolean expectedIsSameSiteSchemeful) throws Throwable {
+            final String key = "test-schemeful-same-site" + suffix;
+            final String value = "value" + suffix;
+            final String iframePath = "/iframe_" + suffix + ".html";
+            final String pagePath = "/content_" + suffix + ".html";
+
+            // We create a script which tries to set a Lax cookie on a cross-scheme URL.
+            final String cookieUrl =
+                    makeSameSiteLaxCookieScriptUrl(mCrossSchemeWebServer, iframePath, key, value);
+
+            // Then we load it as an iframe, to attempt to set a Lax cookie in a cross-scheme
+            // context. It should be rejected if same-site includes scheme.
+            final String url = makeIframeUrl(mWebServer, pagePath, cookieUrl);
+            mActivityTestRule.loadUrlSync(
+                    mAwContents, mContentsClient.getOnPageFinishedHelper(), url);
+
+            if (expectedIsSameSiteSchemeful) {
+                assertNoCookies(cookieUrl);
+            } else {
+                assertHasCookies(cookieUrl);
+                validateCookies(cookieUrl, key);
+            }
+
+            // Clear the cookies.
+            clearCookies();
+            Assert.assertFalse(mCookieManager.hasCookies());
+        }
+    }
+
     /**
      * Creates a response on the TestWebServer which load a given URL in an iframe,
      * and provides helpers for forwarding JavaScript calls to that iframe via postMessage.
@@ -1260,6 +1420,23 @@
     }
 
     /**
+     * Creates a response on the TestWebServer with a script that attempts to set a SameSite=Lax
+     * cookie.
+     * @param  webServer  the webServer on which to create the response
+     * @param  path the path component of the url (e.g "/cookie_test.html")
+     * @param  key the key of the cookie
+     * @param  value the value of the cookie
+     * @return  the url which gets the response
+     */
+    private String makeSameSiteLaxCookieScriptUrl(
+            TestWebServer webServer, String path, String key, String value) {
+        String response = "<html><head></head><body>"
+                + "<script>document.cookie = \"" + key + "=" + value + "; SameSite=Lax\";"
+                + "</script></body></html>";
+        return webServer.setResponse(path, response, null);
+    }
+
+    /**
      * Returns code fragment to be embedded into an async function to set a cookie with CookieStore
      * API
      * @param name name of cookie to set
diff --git a/ash/BUILD.gn b/ash/BUILD.gn
index c9abbc1..458559a1 100644
--- a/ash/BUILD.gn
+++ b/ash/BUILD.gn
@@ -262,10 +262,6 @@
     "autoclick/autoclick_scroll_position_handler.cc",
     "autoclick/autoclick_scroll_position_handler.h",
     "autotest_private_api_utils.cc",
-    "bloom/bloom_ui_controller_impl.cc",
-    "bloom/bloom_ui_controller_impl.h",
-    "bloom/bloom_ui_delegate_impl.cc",
-    "bloom/bloom_ui_delegate_impl.h",
     "bluetooth_devices_observer.cc",
     "bluetooth_devices_observer.h",
     "cancel_mode.cc",
@@ -939,8 +935,6 @@
     "system/audio/unified_volume_slider_controller.h",
     "system/audio/unified_volume_view.cc",
     "system/audio/unified_volume_view.h",
-    "system/bloom/bloom_tray.cc",
-    "system/bloom/bloom_tray.h",
     "system/bluetooth/bluetooth_detailed_view.cc",
     "system/bluetooth/bluetooth_detailed_view.h",
     "system/bluetooth/bluetooth_feature_pod_controller.cc",
@@ -1773,7 +1767,6 @@
     "//cc/debug",
     "//cc/paint:paint",
     "//chromeos/assistant:buildflags",
-    "//chromeos/components/bloom/public/cpp",
     "//chromeos/components/phonehub",
     "//chromeos/components/quick_answers",
     "//chromeos/components/quick_answers/public/cpp:prefs",
@@ -2172,7 +2165,6 @@
     "system/accessibility/switch_access_menu_bubble_controller_unittest.cc",
     "system/accessibility/tray_accessibility_unittest.cc",
     "system/audio/unified_audio_detailed_view_controller_unittest.cc",
-    "system/bloom/bloom_tray_unittest.cc",
     "system/bluetooth/bluetooth_notification_controller_unittest.cc",
     "system/bluetooth/bluetooth_power_controller_unittest.cc",
     "system/bluetooth/tray_bluetooth_helper_legacy_unittest.cc",
@@ -2392,7 +2384,6 @@
 
     # TODO(https://crbug.com/644336): Make CrasAudioHandler Chrome or Ash only.
     "//chromeos/audio",
-    "//chromeos/components/bloom/public/cpp",
     "//chromeos/components/phonehub:test_support",
     "//chromeos/components/quick_answers:quick_answers",
     "//chromeos/components/sensors:sensors",
diff --git a/ash/app_list/BUILD.gn b/ash/app_list/BUILD.gn
index a0ab4bc..21e6d242 100644
--- a/ash/app_list/BUILD.gn
+++ b/ash/app_list/BUILD.gn
@@ -46,8 +46,6 @@
     "views/assistant/assistant_main_view.h",
     "views/assistant/assistant_page_view.cc",
     "views/assistant/assistant_page_view.h",
-    "views/assistant/assistant_privacy_info_view.cc",
-    "views/assistant/assistant_privacy_info_view.h",
     "views/contents_view.cc",
     "views/contents_view.h",
     "views/expand_arrow_view.cc",
diff --git a/ash/app_list/app_list_controller_impl.cc b/ash/app_list/app_list_controller_impl.cc
index fb18e53d..81a8e88 100644
--- a/ash/app_list/app_list_controller_impl.cc
+++ b/ash/app_list/app_list_controller_impl.cc
@@ -100,24 +100,6 @@
   }
 }
 
-int GetAssistantPrivacyInfoShownCount() {
-  PrefService* prefs =
-      Shell::Get()->session_controller()->GetLastActiveUserPrefService();
-  return prefs->GetInteger(prefs::kAssistantPrivacyInfoShownInLauncher);
-}
-
-void SetAssistantPrivacyInfoShownCount(int count) {
-  PrefService* prefs =
-      Shell::Get()->session_controller()->GetLastActiveUserPrefService();
-  prefs->SetInteger(prefs::kAssistantPrivacyInfoShownInLauncher, count);
-}
-
-void SetAssistantPrivacyInfoDismissed() {
-  PrefService* prefs =
-      Shell::Get()->session_controller()->GetLastActiveUserPrefService();
-  prefs->SetBoolean(prefs::kAssistantPrivacyInfoDismissedInLauncher, true);
-}
-
 int GetSuggestedContentInfoShownCount() {
   PrefService* prefs =
       Shell::Get()->session_controller()->GetLastActiveUserPrefService();
@@ -224,10 +206,6 @@
 
 // static
 void AppListControllerImpl::RegisterProfilePrefs(PrefRegistrySimple* registry) {
-  registry->RegisterIntegerPref(prefs::kAssistantPrivacyInfoShownInLauncher, 0);
-  registry->RegisterBooleanPref(
-      prefs::kAssistantPrivacyInfoDismissedInLauncher, false,
-      user_prefs::PrefRegistrySyncable::SYNCABLE_OS_PREF);
   registry->RegisterIntegerPref(
       prefs::kSuggestedContentInfoShownInLauncher, 0,
       user_prefs::PrefRegistrySyncable::SYNCABLE_OS_PREF);
@@ -1294,11 +1272,8 @@
   }
 }
 
-void AppListControllerImpl::MaybeIncreasePrivacyInfoShownCounts() {
-  if (ShouldShowAssistantPrivacyInfo()) {
-    const int count = GetAssistantPrivacyInfoShownCount();
-    SetAssistantPrivacyInfoShownCount(count + 1);
-  } else if (ShouldShowSuggestedContentInfo()) {
+void AppListControllerImpl::MaybeIncreaseSuggestedContentInfoShownCount() {
+  if (ShouldShowSuggestedContentInfo()) {
     const int count = GetSuggestedContentInfoShownCount();
     SetSuggestedContentInfoShownCount(count + 1);
   }
@@ -1316,16 +1291,6 @@
              chromeos::assistant::AssistantStatus::NOT_READY;
 }
 
-bool AppListControllerImpl::ShouldShowAssistantPrivacyInfo() const {
-  // TODO(b/174506130) completely remove Assistant privacy info in followup.
-  return false;
-}
-
-void AppListControllerImpl::MarkAssistantPrivacyInfoDismissed() {
-  // User dismissed the privacy info view. Will not show the view again.
-  SetAssistantPrivacyInfoDismissed();
-}
-
 bool AppListControllerImpl::ShouldShowSuggestedContentInfo() const {
   if (!base::FeatureList::IsEnabled(
           chromeos::features::kSuggestedContentToggle)) {
diff --git a/ash/app_list/app_list_controller_impl.h b/ash/app_list/app_list_controller_impl.h
index 8867e57..25b57c3 100644
--- a/ash/app_list/app_list_controller_impl.h
+++ b/ash/app_list/app_list_controller_impl.h
@@ -208,10 +208,8 @@
       const base::string16& raw_query,
       const SearchResultIdWithPositionIndices& results,
       int position_index) override;
-  void MaybeIncreasePrivacyInfoShownCounts() override;
+  void MaybeIncreaseSuggestedContentInfoShownCount() override;
   bool IsAssistantAllowedAndEnabled() const override;
-  bool ShouldShowAssistantPrivacyInfo() const override;
-  void MarkAssistantPrivacyInfoDismissed() override;
   bool ShouldShowSuggestedContentInfo() const override;
   void MarkSuggestedContentInfoDismissed() override;
   void OnStateTransitionAnimationCompleted(AppListViewState state) override;
diff --git a/ash/app_list/app_list_metrics_unittest.cc b/ash/app_list/app_list_metrics_unittest.cc
index 161e1f9..81eae60 100644
--- a/ash/app_list/app_list_metrics_unittest.cc
+++ b/ash/app_list/app_list_metrics_unittest.cc
@@ -146,7 +146,6 @@
                                       ->GetView()
                                       ->app_list_main_view()
                                       ->contents_view();
-    Shell::Get()->app_list_controller()->MarkAssistantPrivacyInfoDismissed();
     Shell::Get()->app_list_controller()->MarkSuggestedContentInfoDismissed();
     contents_view->privacy_container_view()->Update();
 
diff --git a/ash/app_list/app_list_presenter_delegate_unittest.cc b/ash/app_list/app_list_presenter_delegate_unittest.cc
index c457a876..e08aa90 100644
--- a/ash/app_list/app_list_presenter_delegate_unittest.cc
+++ b/ash/app_list/app_list_presenter_delegate_unittest.cc
@@ -468,9 +468,8 @@
 TEST_F(AppListPresenterDelegateTest, RemoveSuggestionShowsConfirmDialog) {
   ShowZeroStateSearchInHalfState();
 
-  // Mark the privacy notices as dismissed so that they do not interfere with
-  // the layout.
-  Shell::Get()->app_list_controller()->MarkAssistantPrivacyInfoDismissed();
+  // Mark the suggested content info as dismissed so that it does not interfere
+  // with the layout.
   Shell::Get()->app_list_controller()->MarkSuggestedContentInfoDismissed();
   GetAppListView()
       ->app_list_main_view()
diff --git a/ash/app_list/app_list_view_delegate.h b/ash/app_list/app_list_view_delegate.h
index 176cf78..61906805 100644
--- a/ash/app_list/app_list_view_delegate.h
+++ b/ash/app_list/app_list_view_delegate.h
@@ -174,22 +174,13 @@
       const SearchResultIdWithPositionIndices& results,
       int position_index) = 0;
 
-  // If the |prefs::kAssistantPrivacyInfoShownInLauncher| value is in the range
-  // of allowed values, we will increment it. Otherwise, if the
-  // |prefs::kSuggestedContentInfoShownInLauncher| value is in the range of
-  // allowed values, we will increment it.
-  virtual void MaybeIncreasePrivacyInfoShownCounts() = 0;
+  // If the |prefs::kSuggestedContentInfoShownInLauncher| value is in the range
+  // of allowed values, we will increment it.
+  virtual void MaybeIncreaseSuggestedContentInfoShownCount() = 0;
 
   // Returns true if the Assistant feature is allowed and enabled.
   virtual bool IsAssistantAllowedAndEnabled() const = 0;
 
-  // Returns true if the Assistant privacy info view should be shown.
-  virtual bool ShouldShowAssistantPrivacyInfo() const = 0;
-
-  // Called when close button in the Assistant privacy info view is pressed to
-  // indicate not to show the view any more.
-  virtual void MarkAssistantPrivacyInfoDismissed() = 0;
-
   // Returns true if the Suggested Content privacy info view should be shown.
   virtual bool ShouldShowSuggestedContentInfo() const = 0;
 
diff --git a/ash/app_list/test/app_list_test_view_delegate.cc b/ash/app_list/test/app_list_test_view_delegate.cc
index 90e36fa..d3348a8 100644
--- a/ash/app_list/test/app_list_test_view_delegate.cc
+++ b/ash/app_list/test/app_list_test_view_delegate.cc
@@ -88,11 +88,6 @@
   is_tablet_mode_ = is_tablet_mode;
 }
 
-void AppListTestViewDelegate::SetShouldShowAssistantPrivacyInfo(
-    bool should_show) {
-  should_show_assistant_privacy_info_ = should_show;
-}
-
 void AppListTestViewDelegate::SetShouldShowSuggestedContentInfo(
     bool should_show) {
   should_show_suggested_content_info_ = should_show;
@@ -177,20 +172,12 @@
     const ash::SearchResultIdWithPositionIndices& results,
     int position_index) {}
 
-void AppListTestViewDelegate::MaybeIncreasePrivacyInfoShownCounts() {}
+void AppListTestViewDelegate::MaybeIncreaseSuggestedContentInfoShownCount() {}
 
 bool AppListTestViewDelegate::IsAssistantAllowedAndEnabled() const {
   return false;
 }
 
-bool AppListTestViewDelegate::ShouldShowAssistantPrivacyInfo() const {
-  return should_show_assistant_privacy_info_;
-}
-
-void AppListTestViewDelegate::MarkAssistantPrivacyInfoDismissed() {
-  should_show_assistant_privacy_info_ = false;
-}
-
 bool AppListTestViewDelegate::ShouldShowSuggestedContentInfo() const {
   return should_show_suggested_content_info_;
 }
diff --git a/ash/app_list/test/app_list_test_view_delegate.h b/ash/app_list/test/app_list_test_view_delegate.h
index 1860719..f0fd7c4 100644
--- a/ash/app_list/test/app_list_test_view_delegate.h
+++ b/ash/app_list/test/app_list_test_view_delegate.h
@@ -54,8 +54,7 @@
   // Set whether tablet mode is enabled.
   void SetIsTabletModeEnabled(bool is_tablet_mode);
 
-  // Set whether the privacy notices should be shown.
-  void SetShouldShowAssistantPrivacyInfo(bool should_show);
+  // Set whether the suggested content info should be shown.
   void SetShouldShowSuggestedContentInfo(bool should_show);
 
   // AppListViewDelegate overrides:
@@ -102,10 +101,8 @@
       const base::string16& raw_query,
       const ash::SearchResultIdWithPositionIndices& results,
       int position_index) override;
-  void MaybeIncreasePrivacyInfoShownCounts() override;
+  void MaybeIncreaseSuggestedContentInfoShownCount() override;
   bool IsAssistantAllowedAndEnabled() const override;
-  bool ShouldShowAssistantPrivacyInfo() const override;
-  void MarkAssistantPrivacyInfoDismissed() override;
   bool ShouldShowSuggestedContentInfo() const override;
   void MarkSuggestedContentInfoDismissed() override;
   void OnStateTransitionAnimationCompleted(
@@ -141,7 +138,6 @@
   int next_profile_app_count_ = 0;
   int show_wallpaper_context_menu_count_ = 0;
   bool is_tablet_mode_ = false;
-  bool should_show_assistant_privacy_info_ = false;
   bool should_show_suggested_content_info_ = false;
   std::map<size_t, int> open_search_result_counts_;
   std::unique_ptr<AppListTestModel> model_;
diff --git a/ash/app_list/views/app_list_view.cc b/ash/app_list/views/app_list_view.cc
index 4824d01..ee6063d 100644
--- a/ash/app_list/views/app_list_view.cc
+++ b/ash/app_list/views/app_list_view.cc
@@ -1148,7 +1148,7 @@
     case kPeekingToHalf:
     case kFullscreenAllAppsToFullscreenSearch:
       if (app_list_main_view()->contents_view()->IsShowingSearchResults())
-        delegate_->MaybeIncreasePrivacyInfoShownCounts();
+        delegate_->MaybeIncreaseSuggestedContentInfoShownCount();
       break;
     default:
       break;
diff --git a/ash/app_list/views/assistant/assistant_privacy_info_view.cc b/ash/app_list/views/assistant/assistant_privacy_info_view.cc
deleted file mode 100644
index c92f8e2..0000000
--- a/ash/app_list/views/assistant/assistant_privacy_info_view.cc
+++ /dev/null
@@ -1,36 +0,0 @@
-// Copyright 2020 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "ash/app_list/views/assistant/assistant_privacy_info_view.h"
-
-#include "ash/app_list/app_list_view_delegate.h"
-#include "ash/app_list/views/privacy_container_view.h"
-#include "ash/assistant/util/i18n_util.h"
-#include "ash/public/cpp/assistant/controller/assistant_controller.h"
-#include "ui/strings/grit/ui_strings.h"
-
-namespace ash {
-
-AssistantPrivacyInfoView::AssistantPrivacyInfoView(
-    AppListViewDelegate* view_delegate,
-    PrivacyContainerView* container)
-    : PrivacyInfoView(IDS_APP_LIST_ASSISTANT_PRIVACY_INFO,
-                      IDS_APP_LIST_LEARN_MORE),
-      view_delegate_(view_delegate),
-      container_(container) {}
-
-AssistantPrivacyInfoView::~AssistantPrivacyInfoView() = default;
-
-void AssistantPrivacyInfoView::CloseButtonPressed() {
-  view_delegate_->MarkAssistantPrivacyInfoDismissed();
-  container_->Update();
-}
-
-void AssistantPrivacyInfoView::LinkClicked() {
-  constexpr char url[] = "https://support.google.com/chromebook?p=assistant";
-  AssistantController::Get()->OpenUrl(
-      assistant::util::CreateLocalizedGURL(url));
-}
-
-}  // namespace ash
diff --git a/ash/app_list/views/assistant/assistant_privacy_info_view.h b/ash/app_list/views/assistant/assistant_privacy_info_view.h
deleted file mode 100644
index 514dcbf..0000000
--- a/ash/app_list/views/assistant/assistant_privacy_info_view.h
+++ /dev/null
@@ -1,36 +0,0 @@
-// Copyright 2020 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef ASH_APP_LIST_VIEWS_ASSISTANT_ASSISTANT_PRIVACY_INFO_VIEW_H_
-#define ASH_APP_LIST_VIEWS_ASSISTANT_ASSISTANT_PRIVACY_INFO_VIEW_H_
-
-#include "ash/app_list/views/privacy_info_view.h"
-#include "ui/views/controls/button/button.h"
-
-namespace ash {
-
-class AppListViewDelegate;
-class PrivacyContainerView;
-
-// View representing Assistant's privacy info in the Launcher.
-class AssistantPrivacyInfoView : public PrivacyInfoView {
- public:
-  AssistantPrivacyInfoView(AppListViewDelegate* view_delegate,
-                           PrivacyContainerView* container);
-  AssistantPrivacyInfoView(const AssistantPrivacyInfoView&) = delete;
-  AssistantPrivacyInfoView& operator=(const AssistantPrivacyInfoView&) = delete;
-  ~AssistantPrivacyInfoView() override;
-
-  // PrivacyInfoView:
-  void CloseButtonPressed() override;
-  void LinkClicked() override;
-
- private:
-  AppListViewDelegate* const view_delegate_;
-  PrivacyContainerView* const container_;
-};
-
-}  // namespace ash
-
-#endif  // ASH_APP_LIST_VIEWS_ASSISTANT_ASSISTANT_PRIVACY_INFO_VIEW_H_
diff --git a/ash/app_list/views/privacy_container_view.cc b/ash/app_list/views/privacy_container_view.cc
index 324d5b2..dbdbc19 100644
--- a/ash/app_list/views/privacy_container_view.cc
+++ b/ash/app_list/views/privacy_container_view.cc
@@ -9,7 +9,6 @@
 
 #include "ash/app_list/app_list_view_delegate.h"
 #include "ash/app_list/model/search/search_result.h"
-#include "ash/app_list/views/assistant/assistant_privacy_info_view.h"
 #include "ash/app_list/views/suggested_content_info_view.h"
 #include "ash/public/cpp/app_list/app_list_config.h"
 #include "ash/public/cpp/app_list/app_list_types.h"
@@ -19,11 +18,6 @@
 
 PrivacyContainerView::PrivacyContainerView(AppListViewDelegate* view_delegate)
     : SearchResultContainerView(view_delegate) {
-  // Create both notices even though only one is shown at a time. This is
-  // because one notice could be dismissed, and after that we should show the
-  // other notice.
-  assistant_privacy_info_view_ = AddChildView(
-      std::make_unique<AssistantPrivacyInfoView>(view_delegate, this));
   // |ShouldShowSuggestedContentInfo()| cannot change from false to true in the
   // middle of a session.
   if (view_delegate->ShouldShowSuggestedContentInfo()) {
@@ -48,10 +42,6 @@
     // There is only one result.
     return nullptr;
   }
-  if (assistant_privacy_info_view_ &&
-      assistant_privacy_info_view_->GetVisible()) {
-    return assistant_privacy_info_view_;
-  }
   if (suggested_content_info_view_ &&
       suggested_content_info_view_->GetVisible()) {
     return suggested_content_info_view_;
@@ -60,21 +50,8 @@
 }
 
 int PrivacyContainerView::DoUpdate() {
-  const bool should_show_assistant =
-      view_delegate()->ShouldShowAssistantPrivacyInfo();
-
-  if (assistant_privacy_info_view_) {
-    const bool has_result = assistant_privacy_info_view_->result();
-    if (has_result != should_show_assistant) {
-      assistant_privacy_info_view_->SetResult(should_show_assistant ? &result_
-                                                                    : nullptr);
-    }
-    assistant_privacy_info_view_->SetVisible(should_show_assistant);
-  }
-
   const bool should_show_suggested_content =
-      view_delegate()->ShouldShowSuggestedContentInfo() &&
-      !should_show_assistant;
+      view_delegate()->ShouldShowSuggestedContentInfo();
 
   if (suggested_content_info_view_) {
     const bool has_result = suggested_content_info_view_->result();
@@ -87,12 +64,10 @@
 
   // If visible, set the maximum score so that the privacy notice is always at
   // the top of the results list.
-  const bool should_show_container =
-      should_show_assistant || should_show_suggested_content;
-  set_container_score(should_show_container
+  set_container_score(should_show_suggested_content
                           ? AppListConfig::instance().privacy_container_score()
                           : -1);
-  return should_show_container ? 1 : 0;
+  return should_show_suggested_content ? 1 : 0;
 }
 
 }  // namespace ash
diff --git a/ash/app_list/views/privacy_container_view.h b/ash/app_list/views/privacy_container_view.h
index 6a45ba7..13a9209 100644
--- a/ash/app_list/views/privacy_container_view.h
+++ b/ash/app_list/views/privacy_container_view.h
@@ -13,7 +13,6 @@
 }
 
 class AppListViewDelegate;
-class AssistantPrivacyInfoView;
 class SearchResult;
 class SuggestedContentInfoView;
 
@@ -35,7 +34,6 @@
   int DoUpdate() override;
 
   // Owned by views hierarchy.
-  AssistantPrivacyInfoView* assistant_privacy_info_view_ = nullptr;
   SuggestedContentInfoView* suggested_content_info_view_ = nullptr;
 
   // A skeleton result that contains an id.
diff --git a/ash/app_list/views/privacy_container_view_unittest.cc b/ash/app_list/views/privacy_container_view_unittest.cc
index 73f33618..3431a62 100644
--- a/ash/app_list/views/privacy_container_view_unittest.cc
+++ b/ash/app_list/views/privacy_container_view_unittest.cc
@@ -7,7 +7,6 @@
 #include <memory>
 
 #include "ash/app_list/test/app_list_test_view_delegate.h"
-#include "ash/app_list/views/assistant/assistant_privacy_info_view.h"
 #include "ash/app_list/views/suggested_content_info_view.h"
 #include "ui/views/test/views_test_base.h"
 
@@ -25,9 +24,6 @@
   AppListTestViewDelegate* view_delegate() { return &view_delegate_; }
   PrivacyContainerView* view() { return view_.get(); }
 
-  AssistantPrivacyInfoView* assistant_view() {
-    return view_->assistant_privacy_info_view_;
-  }
   SuggestedContentInfoView* suggested_content_view() {
     return view_->suggested_content_info_view_;
   }
@@ -42,35 +38,13 @@
   std::unique_ptr<PrivacyContainerView> view_;
 };
 
-TEST_F(PrivacyContainerViewTest, ShowAssistantPrivacyInfo) {
-  view_delegate()->SetShouldShowAssistantPrivacyInfo(true);
-  view_delegate()->SetShouldShowSuggestedContentInfo(false);
-  CreateView();
-
-  // Only Assistant privacy info should be visible.
-  ASSERT_TRUE(assistant_view());
-  EXPECT_TRUE(assistant_view()->GetVisible());
-  EXPECT_FALSE(suggested_content_view() &&
-               suggested_content_view()->GetVisible());
-  EXPECT_EQ(view()->GetResultViewAt(0), assistant_view());
-
-  // Disable Assistant privacy info.
-  view_delegate()->SetShouldShowAssistantPrivacyInfo(false);
-  view()->Update();
-
-  EXPECT_FALSE(assistant_view()->GetVisible());
-  EXPECT_FALSE(view()->GetResultViewAt(0));
-}
-
 TEST_F(PrivacyContainerViewTest, ShowSuggestedContentInfo) {
-  view_delegate()->SetShouldShowAssistantPrivacyInfo(false);
   view_delegate()->SetShouldShowSuggestedContentInfo(true);
   CreateView();
 
   // Only Suggested Content info should be visible.
   ASSERT_TRUE(suggested_content_view());
   EXPECT_TRUE(suggested_content_view()->GetVisible());
-  EXPECT_FALSE(assistant_view() && assistant_view()->GetVisible());
   EXPECT_EQ(view()->GetResultViewAt(0), suggested_content_view());
 
   // Disable Suggested Content info.
@@ -81,27 +55,5 @@
   EXPECT_FALSE(view()->GetResultViewAt(0));
 }
 
-TEST_F(PrivacyContainerViewTest, AssistantInfoTakesPriority) {
-  view_delegate()->SetShouldShowAssistantPrivacyInfo(true);
-  view_delegate()->SetShouldShowSuggestedContentInfo(true);
-  CreateView();
-
-  // Only Assistant privacy info should be visible.
-  ASSERT_TRUE(assistant_view());
-  EXPECT_TRUE(assistant_view()->GetVisible());
-  EXPECT_FALSE(suggested_content_view() &&
-               suggested_content_view()->GetVisible());
-  EXPECT_EQ(view()->GetResultViewAt(0), assistant_view());
-
-  // If Assistant info is disabled, Suggested Content info should become
-  // visible.
-  view_delegate()->SetShouldShowAssistantPrivacyInfo(false);
-  view()->Update();
-
-  EXPECT_FALSE(assistant_view()->GetVisible());
-  EXPECT_TRUE(suggested_content_view()->GetVisible());
-  EXPECT_EQ(view()->GetResultViewAt(0), suggested_content_view());
-}
-
 }  // namespace test
 }  // namespace ash
diff --git a/ash/app_list/views/search_box_view_unittest.cc b/ash/app_list/views/search_box_view_unittest.cc
index 4ec8e4c..589037d 100644
--- a/ash/app_list/views/search_box_view_unittest.cc
+++ b/ash/app_list/views/search_box_view_unittest.cc
@@ -630,9 +630,9 @@
   EXPECT_EQ(2, user_action_tester.GetActionCount("AppList_SearchQueryStarted"));
 }
 
-TEST_F(SearchBoxViewTest, NavigatePrivacyNotice) {
-  // Create a new contents view that contains a privacy notice.
-  view_delegate()->SetShouldShowAssistantPrivacyInfo(true);
+TEST_F(SearchBoxViewTest, NavigateSuggestedContentInfo) {
+  // Create a new contents view that contains a suggested content info.
+  view_delegate()->SetShouldShowSuggestedContentInfo(true);
   auto* contents_view = widget()->GetContentsView()->AddChildView(
       std::make_unique<KeyPressCounterView>(app_list_view()));
   contents_view->Init(view_delegate()->GetModel());
@@ -684,9 +684,9 @@
   EXPECT_FALSE(selection);
 }
 
-TEST_F(SearchBoxViewTest, KeyboardEventClosesPrivacyNotice) {
-  // Create a new contents view that contains a privacy notice.
-  view_delegate()->SetShouldShowAssistantPrivacyInfo(true);
+TEST_F(SearchBoxViewTest, KeyboardEventClosesSuggestedContentInfo) {
+  // Create a new contents view that contains a suggested content info.
+  view_delegate()->SetShouldShowSuggestedContentInfo(true);
   auto* contents_view = widget()->GetContentsView()->AddChildView(
       std::make_unique<KeyPressCounterView>(app_list_view()));
   contents_view->Init(view_delegate()->GetModel());
@@ -707,16 +707,16 @@
                 ->selected_result(),
             privacy_container_view->GetResultViewAt(0));
 
-  // Navigate to the close button and press enter. The privacy info should no
-  // longer be shown.
+  // Navigate to the close button and press enter. The suggested content info
+  // should no longer be shown.
   KeyPress(ui::VKEY_TAB);
   KeyPress(ui::VKEY_RETURN);
-  EXPECT_FALSE(view_delegate()->ShouldShowAssistantPrivacyInfo());
+  EXPECT_FALSE(view_delegate()->ShouldShowSuggestedContentInfo());
 }
 
-TEST_F(SearchBoxViewTest, PrivacyViewActionNotOverriddenByNewResults) {
+TEST_F(SearchBoxViewTest, SuggestedContentActionNotOverriddenByNewResults) {
   // Create a new contents view that contains a privacy notice.
-  view_delegate()->SetShouldShowAssistantPrivacyInfo(true);
+  view_delegate()->SetShouldShowSuggestedContentInfo(true);
   auto* contents_view = widget()->GetContentsView()->AddChildView(
       std::make_unique<KeyPressCounterView>(app_list_view()));
   contents_view->Init(view_delegate()->GetModel());
@@ -756,9 +756,9 @@
   EXPECT_EQ(selection->result()->title(), base::ASCIIToUTF16("test"));
 }
 
-TEST_F(SearchBoxViewTest, PrivacySelectionDoesNotChangeSearchBoxText) {
-  // Create a new contents view that contains a privacy notice.
-  view_delegate()->SetShouldShowAssistantPrivacyInfo(true);
+TEST_F(SearchBoxViewTest, SuggestedContentSelectionDoesNotChangeSearchBoxText) {
+  // Create a new contents view that contains a suggested content info.
+  view_delegate()->SetShouldShowSuggestedContentInfo(true);
   auto* contents_view = widget()->GetContentsView()->AddChildView(
       std::make_unique<KeyPressCounterView>(app_list_view()));
   contents_view->Init(view_delegate()->GetModel());
diff --git a/ash/ash_strings.grd b/ash/ash_strings.grd
index 01210f10..366e9031 100644
--- a/ash/ash_strings.grd
+++ b/ash/ash_strings.grd
@@ -1204,6 +1204,9 @@
       <message name="IDS_ASH_PHONE_HUB_CONNECTED_DEVICE_SETTINGS_LABEL" desc="Label for the settings button in the Phone Hub UI that lets users know that the button routes to the Chrome OS Settings app page for connected devices (e.g. to disable Phone Hub features, enable/disable Smartlock, etc)">
         Connected devices settings
       </message>
+      <message name="IDS_ASH_PHONE_HUB_SILENCE_BUTTON_NOT_AVAILABLE_TOOLTIP" translateable="false" desc="Tooltip message that indicates to the user that the Silence Phone feature is disabled because their phone is on a work profile.">
+        Silence phone is not available on work profile
+      </message>
 
       <message name="IDS_ASH_STYLUS_TOOLS_CAPTURE_REGION_ACTION" desc="Title of the capture region action in the stylus tools (a pop-up panel next to the status tray). This causes a partial screenshot to be taken (the user selects an area of the screen to take a screenshot of).">
         Capture region
diff --git a/ash/ash_strings_grd/IDS_ASH_PHONE_HUB_SILENCE_BUTTON_NOT_AVAILABLE_TOOLTIP.png.sha1 b/ash/ash_strings_grd/IDS_ASH_PHONE_HUB_SILENCE_BUTTON_NOT_AVAILABLE_TOOLTIP.png.sha1
new file mode 100644
index 0000000..9ed7b92
--- /dev/null
+++ b/ash/ash_strings_grd/IDS_ASH_PHONE_HUB_SILENCE_BUTTON_NOT_AVAILABLE_TOOLTIP.png.sha1
@@ -0,0 +1 @@
+97d2fdaa8a77f2ca60b7059fbd5997de0ba3cbe9
\ No newline at end of file
diff --git a/ash/bloom/OWNERS b/ash/bloom/OWNERS
deleted file mode 100644
index 0c730475..0000000
--- a/ash/bloom/OWNERS
+++ /dev/null
@@ -1,3 +0,0 @@
-file://chromeos/assistant/OWNERS
-
-# COMPONENT: UI>Shell>Assistant
diff --git a/ash/bloom/bloom_ui_controller_impl.cc b/ash/bloom/bloom_ui_controller_impl.cc
deleted file mode 100644
index bbf33d9..0000000
--- a/ash/bloom/bloom_ui_controller_impl.cc
+++ /dev/null
@@ -1,20 +0,0 @@
-// Copyright 2020 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "ash/bloom/bloom_ui_controller_impl.h"
-
-#include "ash/bloom/bloom_ui_delegate_impl.h"
-
-namespace ash {
-
-BloomUiControllerImpl::BloomUiControllerImpl()
-    : ui_delegate_(std::make_unique<BloomUiDelegateImpl>()) {}
-
-BloomUiControllerImpl::~BloomUiControllerImpl() = default;
-
-chromeos::bloom::BloomUiDelegate& BloomUiControllerImpl::GetUiDelegate() {
-  return *ui_delegate_;
-}
-
-}  // namespace ash
diff --git a/ash/bloom/bloom_ui_controller_impl.h b/ash/bloom/bloom_ui_controller_impl.h
deleted file mode 100644
index 928d7e48..0000000
--- a/ash/bloom/bloom_ui_controller_impl.h
+++ /dev/null
@@ -1,28 +0,0 @@
-// Copyright 2020 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef ASH_BLOOM_BLOOM_UI_CONTROLLER_IMPL_H_
-#define ASH_BLOOM_BLOOM_UI_CONTROLLER_IMPL_H_
-
-#include <memory>
-
-#include "chromeos/components/bloom/public/cpp/bloom_ui_controller.h"
-
-namespace ash {
-
-class BloomUiControllerImpl : public chromeos::bloom::BloomUiController {
- public:
-  BloomUiControllerImpl();
-  ~BloomUiControllerImpl() override;
-
-  // chromeos::bloom::BloomUiController implementation:
-  chromeos::bloom::BloomUiDelegate& GetUiDelegate() override;
-
- private:
-  std::unique_ptr<chromeos::bloom::BloomUiDelegate> ui_delegate_;
-};
-
-}  // namespace ash
-
-#endif  // ASH_BLOOM_BLOOM_UI_CONTROLLER_IMPL_H_
diff --git a/ash/bloom/bloom_ui_delegate_impl.cc b/ash/bloom/bloom_ui_delegate_impl.cc
deleted file mode 100644
index 6a493e5..0000000
--- a/ash/bloom/bloom_ui_delegate_impl.cc
+++ /dev/null
@@ -1,48 +0,0 @@
-// Copyright 2020 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "ash/bloom/bloom_ui_delegate_impl.h"
-
-#include "ash/public/cpp/assistant/controller/assistant_interaction_controller.h"
-#include "base/check.h"
-#include "chromeos/components/bloom/public/cpp/bloom_interaction_resolution.h"
-
-namespace ash {
-
-BloomUiDelegateImpl::BloomUiDelegateImpl() = default;
-
-BloomUiDelegateImpl::~BloomUiDelegateImpl() = default;
-
-void BloomUiDelegateImpl::OnInteractionStarted() {
-  // Nothing to do here.
-}
-
-void BloomUiDelegateImpl::OnShowUI() {
-  DVLOG(1) << "Opening Assistant UI";
-  if (!assistant_interaction_controller())
-    return;
-
-  assistant_interaction_controller()->StartBloomInteraction();
-}
-
-void BloomUiDelegateImpl::OnShowResult(
-    const chromeos::bloom::BloomResult& result) {
-  if (!assistant_interaction_controller())
-    return;
-
-  // TODO(jeroendh): convert the result to HTML
-  assistant_interaction_controller()->ShowBloomResult("");
-}
-
-void BloomUiDelegateImpl::OnInteractionFinished(
-    chromeos::bloom::BloomInteractionResolution resolution) {
-  // Nothing to do here.
-}
-
-AssistantInteractionController*
-BloomUiDelegateImpl::assistant_interaction_controller() {
-  return AssistantInteractionController::Get();
-}
-
-}  // namespace ash
diff --git a/ash/bloom/bloom_ui_delegate_impl.h b/ash/bloom/bloom_ui_delegate_impl.h
deleted file mode 100644
index b59cf1c..0000000
--- a/ash/bloom/bloom_ui_delegate_impl.h
+++ /dev/null
@@ -1,34 +0,0 @@
-// Copyright 2020 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef ASH_BLOOM_BLOOM_UI_DELEGATE_IMPL_H_
-#define ASH_BLOOM_BLOOM_UI_DELEGATE_IMPL_H_
-
-#include "chromeos/components/bloom/public/cpp/bloom_ui_delegate.h"
-
-namespace ash {
-
-class AssistantInteractionController;
-
-class BloomUiDelegateImpl : public chromeos::bloom::BloomUiDelegate {
- public:
-  BloomUiDelegateImpl();
-  BloomUiDelegateImpl(const BloomUiDelegateImpl&) = delete;
-  BloomUiDelegateImpl& operator=(const BloomUiDelegateImpl&) = delete;
-  ~BloomUiDelegateImpl() override;
-
-  // BloomUiDelegate implementation:
-  void OnInteractionStarted() override;
-  void OnShowUI() override;
-  void OnShowResult(const chromeos::bloom::BloomResult& result) override;
-  void OnInteractionFinished(
-      chromeos::bloom::BloomInteractionResolution resolution) override;
-
- private:
-  AssistantInteractionController* assistant_interaction_controller();
-};
-
-}  // namespace ash
-
-#endif  // ASH_BLOOM_BLOOM_UI_DELEGATE_IMPL_H_
diff --git a/ash/public/cpp/ash_pref_names.cc b/ash/public/cpp/ash_pref_names.cc
index 7d3a3c2..e4114380 100644
--- a/ash/public/cpp/ash_pref_names.cc
+++ b/ash/public/cpp/ash_pref_names.cc
@@ -520,22 +520,6 @@
 // Ignored unless powerd is configured to honor charging-related prefs.
 const char kUsbPowerShareEnabled[] = "ash.power.usb_power_share_enabled";
 
-// An integer pref that specifies how many times the Assistant privacy info has
-// been shown in Launcher. This value will increment by one every time when
-// Launcher changes state from Peeking to Half or FullscreenSearch up to a
-// predefined threshold, e.g. six times. If the info has been shown for more
-// than the threshold, do not show the privacy info any more.
-const char kAssistantPrivacyInfoShownInLauncher[] =
-    "ash.launcher.assistant_privacy_info_shown";
-
-// A boolean pref that indicates whether the Assistant privacy info may be
-// displayed to user. A false value indicates that the info can be displayed if
-// the value of |kAssistantPrivacyInfoShownInLauncher| is smaller than the
-// predefined threshold. A true value implies that the user has dismissed the
-// info view, and do not show the privacy info any more.
-const char kAssistantPrivacyInfoDismissedInLauncher[] =
-    "ash.launcher.assistant_privacy_info_dismissed";
-
 // An integer pref that specifies how many times the Suggested Content privacy
 // info has been shown in Launcher. This value will increment by one every time
 // when Launcher changes state from Peeking to Half or FullscreenSearch up to a
diff --git a/ash/public/cpp/ash_pref_names.h b/ash/public/cpp/ash_pref_names.h
index e86ac4ad..67f129e 100644
--- a/ash/public/cpp/ash_pref_names.h
+++ b/ash/public/cpp/ash_pref_names.h
@@ -193,9 +193,6 @@
 
 ASH_PUBLIC_EXPORT extern const char kUsbPowerShareEnabled[];
 
-ASH_PUBLIC_EXPORT extern const char kAssistantPrivacyInfoShownInLauncher[];
-ASH_PUBLIC_EXPORT extern const char kAssistantPrivacyInfoDismissedInLauncher[];
-
 ASH_PUBLIC_EXPORT extern const char kSuggestedContentInfoShownInLauncher[];
 ASH_PUBLIC_EXPORT extern const char kSuggestedContentInfoDismissedInLauncher[];
 
diff --git a/ash/public/cpp/ash_typography.cc b/ash/public/cpp/ash_typography.cc
index cc2b11ec..81262ea6 100644
--- a/ash/public/cpp/ash_typography.cc
+++ b/ash/public/cpp/ash_typography.cc
@@ -9,14 +9,23 @@
 void ApplyAshFontStyles(int context,
                         int style,
                         int* size_delta,
-                        gfx::Font::Weight* font_weight) {
+                        gfx::Font::Weight* font_weight,
+                        std::string* typeface) {
   switch (context) {
+    case CONTEXT_SHARESHEET_BUBBLE_BODY_SECONDARY:
+      *size_delta = 1;
+      break;
     case CONTEXT_LAUNCHER_BUTTON:
+    case CONTEXT_SHARESHEET_BUBBLE_BODY:
       *size_delta = 2;
       break;
     case CONTEXT_TOAST_OVERLAY:
       *size_delta = 3;
       break;
+    case CONTEXT_SHARESHEET_BUBBLE_TITLE:
+      *size_delta = 4;
+      *typeface = "Google Sans";
+      break;
     case CONTEXT_TRAY_POPUP_BUTTON:
       *font_weight = gfx::Font::Weight::MEDIUM;
       break;
@@ -29,6 +38,12 @@
     case STYLE_EMPHASIZED:
       *font_weight = gfx::Font::Weight::SEMIBOLD;
       break;
+    case STYLE_SHARESHEET:
+      DCHECK(context == CONTEXT_SHARESHEET_BUBBLE_TITLE ||
+             context == CONTEXT_SHARESHEET_BUBBLE_BODY ||
+             context == CONTEXT_SHARESHEET_BUBBLE_BODY_SECONDARY);
+      *font_weight = gfx::Font::Weight::MEDIUM;
+      break;
   }
 }
 
diff --git a/ash/public/cpp/ash_typography.h b/ash/public/cpp/ash_typography.h
index 8cde6547..afdd8fbb 100644
--- a/ash/public/cpp/ash_typography.h
+++ b/ash/public/cpp/ash_typography.h
@@ -26,6 +26,16 @@
   // A headline label that appears in a larger window.
   CONTEXT_HEADLINE_OVERSIZED,
 
+  // Title label in the Sharesheet bubble. Medium weight. Usually 16pt.
+  CONTEXT_SHARESHEET_BUBBLE_TITLE,
+
+  // Body text label in the Sharesheet bubble. Meidum weight. Usually 14pt.
+  CONTEXT_SHARESHEET_BUBBLE_BODY,
+
+  // Body text label in the Sharesheet bubble. Generally appears under body
+  // text. Usually 13pt.
+  CONTEXT_SHARESHEET_BUBBLE_BODY_SECONDARY,
+
   ASH_TEXT_CONTEXT_END
 };
 
@@ -36,6 +46,9 @@
   // string.
   STYLE_EMPHASIZED = ASH_TEXT_STYLE_START,
 
+  // Text styling specifically for the Chrome OS sharesheet.
+  STYLE_SHARESHEET,
+
   ASH_TEXT_STYLE_END
 };
 
@@ -44,7 +57,8 @@
 void ASH_PUBLIC_EXPORT ApplyAshFontStyles(int context,
                                           int style,
                                           int* size_delta,
-                                          gfx::Font::Weight* font_weight);
+                                          gfx::Font::Weight* font_weight,
+                                          std::string* typeface);
 
 }  // namespace ash
 
diff --git a/ash/shell.cc b/ash/shell.cc
index 1f3a868..4e053ed 100644
--- a/ash/shell.cc
+++ b/ash/shell.cc
@@ -23,8 +23,6 @@
 #include "ash/app_list/app_list_controller_impl.h"
 #include "ash/assistant/assistant_controller_impl.h"
 #include "ash/autoclick/autoclick_controller.h"
-#include "ash/bloom/bloom_ui_controller_impl.h"
-#include "ash/bloom/bloom_ui_delegate_impl.h"
 #include "ash/capture_mode/capture_mode_controller.h"
 #include "ash/child_accounts/parent_access_controller_impl.h"
 #include "ash/clipboard/clipboard_history_controller_impl.h"
@@ -176,7 +174,6 @@
 #include "base/system/sys_info.h"
 #include "base/task/post_task.h"
 #include "base/trace_event/trace_event.h"
-#include "chromeos/components/bloom/public/cpp/bloom_controller.h"
 #include "chromeos/constants/chromeos_features.h"
 #include "chromeos/dbus/initialize_dbus_client.h"
 #include "chromeos/dbus/power/power_policy_controller.h"
@@ -1125,9 +1122,6 @@
         std::make_unique<AmbientController>(std::move(fingerprint));
   }
 
-  if (chromeos::assistant::features::IsBloomEnabled())
-    bloom_ui_controller_ = std::make_unique<BloomUiControllerImpl>();
-
   home_screen_controller_ = std::make_unique<HomeScreenController>();
 
   // |tablet_mode_controller_| |mru_window_tracker_|,
diff --git a/ash/shell.h b/ash/shell.h
index 32417ba..25d79cb 100644
--- a/ash/shell.h
+++ b/ash/shell.h
@@ -96,7 +96,6 @@
 class AutoclickController;
 class BackGestureEventHandler;
 class BacklightsForcedOffSetter;
-class BloomUiControllerImpl;
 class BluetoothNotificationController;
 class BluetoothPowerController;
 class BrightnessControlDelegate;
@@ -679,7 +678,6 @@
   std::unique_ptr<AshDBusServices> ash_dbus_services_;
   std::unique_ptr<AssistantControllerImpl> assistant_controller_;
   std::unique_ptr<BacklightsForcedOffSetter> backlights_forced_off_setter_;
-  std::unique_ptr<BloomUiControllerImpl> bloom_ui_controller_;
   std::unique_ptr<BrightnessControlDelegate> brightness_control_delegate_;
   std::unique_ptr<CrosDisplayConfig> cros_display_config_;
   std::unique_ptr<DesksController> desks_controller_;
diff --git a/ash/system/bloom/OWNERS b/ash/system/bloom/OWNERS
deleted file mode 100644
index 0c730475..0000000
--- a/ash/system/bloom/OWNERS
+++ /dev/null
@@ -1,3 +0,0 @@
-file://chromeos/assistant/OWNERS
-
-# COMPONENT: UI>Shell>Assistant
diff --git a/ash/system/bloom/bloom_tray.cc b/ash/system/bloom/bloom_tray.cc
deleted file mode 100644
index 6b0a01b4..0000000
--- a/ash/system/bloom/bloom_tray.cc
+++ /dev/null
@@ -1,97 +0,0 @@
-// Copyright 2020 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "ash/system/bloom/bloom_tray.h"
-
-#include <memory>
-
-#include "ash/accessibility/accessibility_controller_impl.h"
-#include "ash/resources/vector_icons/vector_icons.h"
-#include "ash/session/session_controller_impl.h"
-#include "ash/shelf/shelf.h"
-#include "ash/shell.h"
-#include "ash/system/tray/tray_constants.h"
-#include "ash/system/tray/tray_container.h"
-#include "ash/system/tray/tray_utils.h"
-#include "chromeos/components/bloom/public/cpp/bloom_controller.h"
-#include "chromeos/components/bloom/public/cpp/bloom_interaction_resolution.h"
-#include "ui/gfx/paint_vector_icon.h"
-#include "ui/views/controls/image_view.h"
-#include "ui/views/metadata/metadata_impl_macros.h"
-
-namespace ash {
-
-using chromeos::bloom::BloomController;
-using chromeos::bloom::BloomInteractionResolution;
-
-BloomTray::BloomTray(Shelf* shelf)
-    : TrayBackgroundView(shelf),
-      icon_(tray_container()->AddChildView(
-          std::make_unique<views::ImageView>())) {
-  SetIcon();
-  SetTooltipText();
-}
-
-BloomTray::~BloomTray() = default;
-
-void BloomTray::Initialize() {
-  TrayBackgroundView::Initialize();
-
-  // TODO(jeroendh): Should not be shown on login screen.
-  SetVisiblePreferred(true);
-}
-
-base::string16 BloomTray::GetAccessibleNameForTray() {
-  // TODO(jeroendh): Use correct name;
-  return base::ASCIIToUTF16("Bloom (THIS STRING MUST BE LOCALIZED)");
-}
-
-void BloomTray::HandleLocaleChange() {
-  SetTooltipText();
-}
-
-void BloomTray::HideBubbleWithView(const TrayBubbleView* bubble_view) {}
-
-void BloomTray::ClickedOutsideBubble() {}
-
-bool BloomTray::PerformAction(const ui::Event& event) {
-  // TODO(jeroendh): RecordUserClickOnTray
-
-  auto* bloom_controller = BloomController::Get();
-
-  if (!bloom_controller->HasInteraction()) {
-    SetIsActive(true);
-    bloom_controller->StartInteraction();
-    VLOG(1) << "Starting Bloom interaction";
-  } else {
-    SetIsActive(false);
-    bloom_controller->StopInteraction(BloomInteractionResolution::kNormal);
-    VLOG(1) << "Stopping Bloom interaction";
-  }
-
-  return true;
-}
-
-void BloomTray::SetIcon() {
-  // TODO(jeroendh): Use correct icon;
-  gfx::ImageSkia image = gfx::CreateVectorIcon(
-      kShelfGlobeIcon,
-      TrayIconColor(Shell::Get()->session_controller()->GetSessionState()));
-  icon_->SetImage(image);
-  const int vertical_padding = (kTrayItemSize - image.height()) / 2;
-  const int horizontal_padding = (kTrayItemSize - image.width()) / 2;
-  icon_->SetBorder(views::CreateEmptyBorder(
-      gfx::Insets(vertical_padding, horizontal_padding)));
-}
-
-void BloomTray::SetTooltipText() {
-  // TODO(jeroendh): Use correct tooltip;
-  icon_->SetTooltipText(
-      base::ASCIIToUTF16("Enable Bloom (THIS STRING MUST BE LOCALIZED)"));
-}
-
-BEGIN_METADATA(BloomTray, TrayBackgroundView)
-END_METADATA
-
-}  // namespace ash
diff --git a/ash/system/bloom/bloom_tray.h b/ash/system/bloom/bloom_tray.h
deleted file mode 100644
index 83d4029..0000000
--- a/ash/system/bloom/bloom_tray.h
+++ /dev/null
@@ -1,44 +0,0 @@
-// Copyright 2020 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef ASH_SYSTEM_BLOOM_BLOOM_TRAY_H_
-#define ASH_SYSTEM_BLOOM_BLOOM_TRAY_H_
-
-#include "ash/system/tray/tray_background_view.h"
-#include "ui/views/metadata/metadata_header_macros.h"
-
-namespace views {
-class ImageView;
-}
-
-namespace ash {
-
-class BloomTray : public TrayBackgroundView {
- public:
-  METADATA_HEADER(BloomTray);
-
-  explicit BloomTray(Shelf* shelf);
-  BloomTray(const BloomTray&) = delete;
-  BloomTray& operator=(const BloomTray&) = delete;
-  ~BloomTray() override;
-
-  // TrayBackgroundView:
-  void Initialize() override;
-  base::string16 GetAccessibleNameForTray() override;
-  void HandleLocaleChange() override;
-  void HideBubbleWithView(const TrayBubbleView* bubble_view) override;
-  void ClickedOutsideBubble() override;
-  bool PerformAction(const ui::Event& event) override;
-
- private:
-  void SetIcon();
-  void SetTooltipText();
-
-  // Weak pointer, will be parented by TrayContainer for its lifetime.
-  views::ImageView* const icon_;
-};
-
-}  // namespace ash
-
-#endif  // ASH_SYSTEM_BLOOM_BLOOM_TRAY_H_
diff --git a/ash/system/bloom/bloom_tray_unittest.cc b/ash/system/bloom/bloom_tray_unittest.cc
deleted file mode 100644
index 68a15ca..0000000
--- a/ash/system/bloom/bloom_tray_unittest.cc
+++ /dev/null
@@ -1,106 +0,0 @@
-// Copyright 2020 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "ash/system/bloom/bloom_tray.h"
-
-#include "ash/system/status_area_widget.h"
-#include "ash/system/status_area_widget_test_helper.h"
-#include "ash/test/ash_test_base.h"
-#include "base/callback_helpers.h"
-#include "base/command_line.h"
-#include "base/notreached.h"
-#include "base/test/scoped_feature_list.h"
-#include "chromeos/components/bloom/public/cpp/bloom_controller.h"
-#include "chromeos/services/assistant/public/cpp/features.h"
-#include "ui/gfx/geometry/rect.h"
-
-namespace ash {
-
-namespace {
-
-using chromeos::bloom::BloomController;
-using chromeos::bloom::BloomInteractionResolution;
-
-// Fake |BloomController| that will be stored as the singleton
-// |BloomController|, and that simply tracks if there is any interaction.
-class ScopedBloomController : public BloomController {
- public:
-  // BloomController implementation:
-  void StartInteraction() override {
-    EXPECT_FALSE(has_interaction_);
-    has_interaction_ = true;
-  }
-
-  bool HasInteraction() const override { return has_interaction_; }
-
-  void StopInteraction(BloomInteractionResolution resolution) override {
-    EXPECT_TRUE(has_interaction_);
-    resolution_ = resolution;
-    has_interaction_ = false;
-  }
-
-  BloomInteractionResolution GetLastInteractionResolution() const {
-    return resolution_;
-  }
-
- private:
-  bool has_interaction_ = false;
-  BloomInteractionResolution resolution_;
-};
-
-}  // namespace
-
-class BloomTrayTest : public AshTestBase {
- protected:
-  void SetUp() override {
-    scoped_feature_list_.InitAndEnableFeature(
-        chromeos::assistant::features::kEnableBloom);
-
-    AshTestBase::SetUp();
-
-    bloom_tray()->SetVisiblePreferred(true);
-  }
-
-  ScopedBloomController* bloom_controller() { return &bloom_controller_; }
-
-  BloomTray* bloom_tray() {
-    StatusAreaWidget* status =
-        StatusAreaWidgetTestHelper::GetStatusAreaWidget();
-    return status->bloom_tray_for_testing();
-  }
-
-  void TapOn(BloomTray* view) {
-    ASSERT_TRUE(view->GetVisible());
-    view->PerformAction(
-        ui::GestureEvent(0, 0, 0, base::TimeTicks(),
-                         ui::GestureEventDetails(ui::ET_GESTURE_TAP)));
-  }
-
- private:
-  ScopedBloomController bloom_controller_;
-  base::test::ScopedFeatureList scoped_feature_list_;
-};
-
-TEST_F(BloomTrayTest, ShouldStartBloomInteractionOnTap) {
-  BloomTray* tray = bloom_tray();
-
-  TapOn(tray);
-
-  EXPECT_TRUE(tray->is_active());
-  EXPECT_TRUE(bloom_controller()->HasInteraction());
-}
-
-TEST_F(BloomTrayTest, ShouldStopBloomInteractionOnSecondTap) {
-  BloomTray* tray = bloom_tray();
-
-  TapOn(tray);
-
-  TapOn(tray);
-  EXPECT_FALSE(tray->is_active());
-  EXPECT_FALSE(bloom_controller()->HasInteraction());
-  EXPECT_EQ(BloomInteractionResolution::kNormal,
-            bloom_controller()->GetLastInteractionResolution());
-}
-
-}  // namespace ash
diff --git a/ash/system/phonehub/silence_phone_quick_action_controller.cc b/ash/system/phonehub/silence_phone_quick_action_controller.cc
index 2d1facb..a3eef773 100644
--- a/ash/system/phonehub/silence_phone_quick_action_controller.cc
+++ b/ash/system/phonehub/silence_phone_quick_action_controller.cc
@@ -117,19 +117,22 @@
       // TODO(1155784): Update disabled view with matching toggle-state colors.
       icon_enabled = dnd_controller_->IsDndEnabled();
       button_enabled = false;
-      state_text_id = IDS_ASH_PHONE_HUB_QUICK_ACTIONS_DISABLED_STATE_TOOLTIP;
+      state_text_id = IDS_ASH_PHONE_HUB_SILENCE_BUTTON_NOT_AVAILABLE_TOOLTIP;
       sub_label_text = IDS_ASH_PHONE_HUB_QUICK_ACTIONS_NOT_AVAILABLE_STATE;
   }
 
   item_->SetEnabled(button_enabled);
   item_->SetToggled(icon_enabled);
   item_->SetSubLabel(l10n_util::GetStringUTF16(sub_label_text));
-  base::string16 tooltip_state =
-      l10n_util::GetStringFUTF16(state_text_id, item_->GetItemLabel());
-  item_->SetIconTooltip(
-      l10n_util::GetStringFUTF16(IDS_ASH_PHONE_HUB_QUICK_ACTIONS_TOGGLE_TOOLTIP,
-                                 item_->GetItemLabel(), tooltip_state));
-
+  if (state == ActionState::kDisabled) {
+    item_->SetIconTooltip(l10n_util::GetStringUTF16(state_text_id));
+  } else {
+    base::string16 tooltip_state =
+        l10n_util::GetStringFUTF16(state_text_id, item_->GetItemLabel());
+    item_->SetIconTooltip(l10n_util::GetStringFUTF16(
+        IDS_ASH_PHONE_HUB_QUICK_ACTIONS_TOGGLE_TOOLTIP, item_->GetItemLabel(),
+        tooltip_state));
+  }
   for (auto& observer : observer_list_)
     observer.OnSilencePhoneItemStateChanged();
 }
diff --git a/ash/system/status_area_widget.cc b/ash/system/status_area_widget.cc
index ab798e7..11f5792 100644
--- a/ash/system/status_area_widget.cc
+++ b/ash/system/status_area_widget.cc
@@ -16,7 +16,6 @@
 #include "ash/shell.h"
 #include "ash/system/accessibility/dictation_button_tray.h"
 #include "ash/system/accessibility/select_to_speak_tray.h"
-#include "ash/system/bloom/bloom_tray.h"
 #include "ash/system/holding_space/holding_space_tray.h"
 #include "ash/system/ime_menu/ime_menu_tray.h"
 #include "ash/system/media/media_tray.h"
@@ -109,11 +108,6 @@
   virtual_keyboard_tray_ = std::make_unique<VirtualKeyboardTray>(shelf_);
   AddTrayButton(virtual_keyboard_tray_.get());
 
-  if (chromeos::assistant::features::IsBloomEnabled()) {
-    bloom_tray_ = std::make_unique<BloomTray>(shelf_);
-    AddTrayButton(bloom_tray_.get());
-  }
-
   if (features::IsCaptureModeEnabled()) {
     stop_recording_button_tray_ =
         std::make_unique<StopRecordingButtonTray>(shelf_);
@@ -332,7 +326,6 @@
   bool show_overflow_button = false;
   int used_width = 0;
   for (TrayBackgroundView* tray : base::Reversed(tray_buttons_)) {
-
     // Skip non-enabled tray buttons.
     if (!tray->visible_preferred())
       continue;
diff --git a/ash/system/status_area_widget.h b/ash/system/status_area_widget.h
index c7465507..9c07132 100644
--- a/ash/system/status_area_widget.h
+++ b/ash/system/status_area_widget.h
@@ -19,7 +19,6 @@
 }
 
 namespace ash {
-class BloomTray;
 class DictationButtonTray;
 class HoldingSpaceTray;
 class ImeMenuTray;
@@ -165,8 +164,6 @@
     return virtual_keyboard_tray_.get();
   }
 
-  BloomTray* bloom_tray_for_testing() { return bloom_tray_.get(); }
-
   CollapseState collapse_state() const { return collapse_state_; }
   void set_collapse_state_for_test(CollapseState state) {
     collapse_state_ = state;
@@ -231,7 +228,6 @@
   std::unique_ptr<PhoneHubTray> phone_hub_tray_;
   std::unique_ptr<StopRecordingButtonTray> stop_recording_button_tray_;
   std::unique_ptr<VirtualKeyboardTray> virtual_keyboard_tray_;
-  std::unique_ptr<BloomTray> bloom_tray_;
   std::unique_ptr<ImeMenuTray> ime_menu_tray_;
   std::unique_ptr<SelectToSpeakTray> select_to_speak_tray_;
   std::unique_ptr<HoldingSpaceTray> holding_space_tray_;
diff --git a/ash/wm/splitview/split_view_controller.cc b/ash/wm/splitview/split_view_controller.cc
index ba0e455..d43008b 100644
--- a/ash/wm/splitview/split_view_controller.cc
+++ b/ash/wm/splitview/split_view_controller.cc
@@ -1163,8 +1163,10 @@
 
 void SplitViewController::OnWindowDragStarted(aura::Window* dragged_window) {
   DCHECK(dragged_window);
-  if (IsWindowInSplitView(dragged_window))
-    OnSnappedWindowDetached(dragged_window, /*window_drag=*/true);
+  if (IsWindowInSplitView(dragged_window)) {
+    OnSnappedWindowDetached(dragged_window,
+                            WindowDetachedReason::kWindowDragged);
+  }
 
   // OnSnappedWindowDetached() may end split view mode.
   if (split_view_divider_)
@@ -1251,7 +1253,7 @@
   auto iter = snapping_window_transformed_bounds_map_.find(window);
   if (iter != snapping_window_transformed_bounds_map_.end())
     snapping_window_transformed_bounds_map_.erase(iter);
-  OnSnappedWindowDetached(window, /*window_drag=*/false);
+  OnSnappedWindowDetached(window, WindowDetachedReason::kWindowDestroyed);
 }
 
 void SplitViewController::OnResizeLoopStarted(aura::Window* window) {
@@ -1318,7 +1320,8 @@
     EndSplitView();
     Shell::Get()->overview_controller()->EndOverview();
   } else if (window_state->IsMinimized()) {
-    OnSnappedWindowDetached(window_state->window(), /*window_drag=*/false);
+    OnSnappedWindowDetached(window_state->window(),
+                            WindowDetachedReason::kWindowMinimized);
 
     if (!InSplitViewMode()) {
       // We have different behaviors for a minimized window: in tablet splitview
@@ -1820,20 +1823,37 @@
 }
 
 void SplitViewController::OnSnappedWindowDetached(aura::Window* window,
-                                                  bool window_drag) {
-  StopObserving(GetPositionOfSnappedWindow(window));
+                                                  WindowDetachedReason reason) {
+  const bool is_window_destroyed =
+      reason == WindowDetachedReason::kWindowDestroyed;
+  // Detach it from splitview first if the window is to be destroyed to prevent
+  // unnecessary bounds/state update to it when ending splitview resizing. For
+  // the window that is not going to be destroyed, we still need its bounds and
+  // state to be updated to match the updated divider position before detaching
+  // it from splitview.
+  if (is_window_destroyed)
+    StopObserving(GetPositionOfSnappedWindow(window));
 
-  // Resizing (or the divider snap animation) may continue, but |window| will no
-  // longer have anything to do with it.
-  if (is_resizing_ || IsDividerAnimating())
-    FinishWindowResizing(window);
+  // Stop resizing if one of the snapped window is detached from split
+  // view.
+  const bool is_divider_animating = IsDividerAnimating();
+  if (is_resizing_ || is_divider_animating) {
+    is_resizing_ = false;
+    if (is_divider_animating)
+      StopAndShoveAnimatedDivider();
+    EndResizeImpl();
+  }
+
+  if (!is_window_destroyed)
+    StopObserving(GetPositionOfSnappedWindow(window));
 
   if (!left_window_ && !right_window_) {
     // If there is no snapped window at this moment, ends split view mode. Note
     // this will update overview window grid bounds if the overview mode is
     // active at the moment.
-    EndSplitView(window_drag ? EndReason::kWindowDragStarted
-                             : EndReason::kNormal);
+    EndSplitView(reason == WindowDetachedReason::kWindowDragged
+                     ? EndReason::kWindowDragStarted
+                     : EndReason::kNormal);
   } else {
     DCHECK_EQ(split_view_type_, SplitViewType::kTabletType);
     // If there is still one snapped window after minimizing/closing one snapped
@@ -1841,8 +1861,9 @@
     default_snap_position_ = left_window_ ? LEFT : RIGHT;
     UpdateStateAndNotifyObservers();
     Shell::Get()->overview_controller()->StartOverview(
-        window_drag ? OverviewEnterExitType::kImmediateEnter
-                    : OverviewEnterExitType::kNormal);
+        reason == WindowDetachedReason::kWindowDragged
+            ? OverviewEnterExitType::kImmediateEnter
+            : OverviewEnterExitType::kNormal);
   }
 }
 
diff --git a/ash/wm/splitview/split_view_controller.h b/ash/wm/splitview/split_view_controller.h
index b1721b58..f937a0d 100644
--- a/ash/wm/splitview/split_view_controller.h
+++ b/ash/wm/splitview/split_view_controller.h
@@ -282,6 +282,13 @@
   class DividerSnapAnimation;
   class AutoSnapController;
 
+  // Reason that a snapped window is detached from the splitview.
+  enum class WindowDetachedReason {
+    kWindowMinimized,
+    kWindowDestroyed,
+    kWindowDragged,
+  };
+
   // These functions return |left_window_| and |right_window_|, swapped in
   // nonprimary screen orientations. Note that they may return null.
   aura::Window* GetPhysicalLeftOrTopWindow();
@@ -346,11 +353,12 @@
   // If there are two snapped windows, closing/minimizing/tab-dragging one of
   // them will open overview window grid on the closed/minimized/tab-dragged
   // window side of the screen. If there is only one snapped windows, closing/
-  // minimizing/tab-dragging the sanpped window will end split view mode and
+  // minimizing/tab-dragging the snapped window will end split view mode and
   // adjust the overview window grid bounds if the overview mode is active at
-  // that moment. |window_drag| is true if the window was detached as a result
-  // of dragging.
-  void OnSnappedWindowDetached(aura::Window* window, bool window_drag);
+  // that moment. |reason| specifies the reason that the snapped window is
+  // detached from splitview.
+  void OnSnappedWindowDetached(aura::Window* window,
+                               WindowDetachedReason reason);
 
   // Returns the closest position ratio based on |distance| and |length|.
   float FindClosestPositionRatio(float distance, float length);
diff --git a/ash/wm/splitview/split_view_controller_unittest.cc b/ash/wm/splitview/split_view_controller_unittest.cc
index f8c726c..4f4fa3c 100644
--- a/ash/wm/splitview/split_view_controller_unittest.cc
+++ b/ash/wm/splitview/split_view_controller_unittest.cc
@@ -2115,11 +2115,11 @@
   WMEvent minimize_event(WM_EVENT_MINIMIZE);
   WindowState::Get(window1.get())->OnWMEvent(&minimize_event);
 
-  // Drag is ended just for the left window.
+  // Drag is ended as the window is detached from splitview.
   EXPECT_FALSE(window_state_delegate1->drag_in_progress());
-  EXPECT_TRUE(window_state_delegate2->drag_in_progress());
+  EXPECT_FALSE(window_state_delegate2->drag_in_progress());
   EXPECT_EQ(nullptr, w1_state->drag_details());
-  EXPECT_NE(nullptr, w2_state->drag_details());
+  EXPECT_EQ(nullptr, w2_state->drag_details());
 }
 
 // Test that when a snapped window's resizablity property change from resizable
@@ -2810,6 +2810,26 @@
   EXPECT_FALSE(bubble_transient->HasObserver(split_view_divider()));
 }
 
+// Test that if a snapped window is destroyed during resizing, we should end
+// resizing.
+TEST_P(SplitViewControllerTest, WindowDestroyedDuringResize) {
+  const gfx::Rect bounds(0, 0, 400, 400);
+  std::unique_ptr<aura::Window> window1(CreateWindow(bounds));
+  std::unique_ptr<aura::Window> window2(CreateWindow(bounds));
+
+  split_view_controller()->SnapWindow(window1.get(), SplitViewController::LEFT);
+  split_view_controller()->SnapWindow(window2.get(),
+                                      SplitViewController::RIGHT);
+
+  gfx::Rect divider_bounds =
+      split_view_divider()->GetDividerBoundsInScreen(false);
+  split_view_controller()->StartResize(divider_bounds.CenterPoint());
+  split_view_controller()->Resize(gfx::Point(100, 100));
+
+  window1.reset();
+  EXPECT_FALSE(split_view_controller()->is_resizing());
+}
+
 // Test the tab-dragging related functionalities in tablet mode. Tab(s) can be
 // dragged out of a window and then put in split view mode or merge into another
 // window.
diff --git a/base/trace_event/builtin_categories.h b/base/trace_event/builtin_categories.h
index b2d0c9e..0bf7fd5 100644
--- a/base/trace_event/builtin_categories.h
+++ b/base/trace_event/builtin_categories.h
@@ -88,6 +88,7 @@
   X("headless")                                                          \
   X("hwoverlays")                                                        \
   X("identity")                                                          \
+  X("ime")                                                               \
   X("IndexedDB")                                                         \
   X("input")                                                             \
   X("io")                                                                \
diff --git a/build/config/compiler/BUILD.gn b/build/config/compiler/BUILD.gn
index f1e0572..8a255c0 100644
--- a/build/config/compiler/BUILD.gn
+++ b/build/config/compiler/BUILD.gn
@@ -274,7 +274,7 @@
   }
 
   # In general, Windows is totally different, but all the other builds share
-  # some common GCC configuration.
+  # some common compiler and linker configuration.
   if (!is_win) {
     # Common POSIX compiler flags setup.
     # --------------------------------
@@ -303,6 +303,14 @@
       }
     }
 
+    if (use_lld) {
+      if (is_apple) {
+        ldflags += [ "-fuse-ld=lld.darwinnew" ]
+      } else {
+        ldflags += [ "-fuse-ld=lld" ]
+      }
+    }
+
     # Linker warnings.
     if (fatal_linker_warnings && !is_apple && current_os != "aix") {
       ldflags += [ "-Wl,--fatal-warnings" ]
@@ -310,7 +318,6 @@
     if (fatal_linker_warnings && is_apple) {
       ldflags += [ "-Wl,-fatal_warnings" ]
     }
-  } else {
   }
 
   if (is_clang && is_debug) {
@@ -411,7 +418,6 @@
   # Linux-specific compiler flags setup.
   # ------------------------------------
   if ((is_posix || is_fuchsia) && use_lld) {
-    ldflags += [ "-fuse-ld=lld" ]
     if (current_cpu == "arm64") {
       # Reduce the page size from 65536 in order to reduce binary size slightly
       # by shrinking the alignment gap between segments. This also causes all
@@ -447,7 +453,7 @@
     #}
   }
 
-  if (use_icf) {
+  if (use_icf && !is_apple) {
     ldflags += [ "-Wl,--icf=all" ]
   }
 
@@ -1765,10 +1771,9 @@
 # 2. Remove the thin_archive config, so that the .a file actually contains all
 #    .o files, instead of just references to .o files in the build directoy
 config("thin_archive") {
-  # Mac and iOS use the mac-specific "libtool" command, not ar, which doesn't
-  # have a "thin archive" mode (it does accept -T, but it means truncating
-  # archive names to 16 characters, which is not what we want).
-  if ((is_posix && !is_nacl && !is_apple) || is_fuchsia) {
+  # The macOS and iOS default linker ld64 does not support reading thin
+  # archives.
+  if ((is_posix && !is_nacl && (!is_apple || use_lld)) || is_fuchsia) {
     arflags = [ "-T" ]
   } else if (is_win && use_lld) {
     arflags = [ "/llvmlibthin" ]
diff --git a/build/config/compiler/compiler.gni b/build/config/compiler/compiler.gni
index 9e472bef..0e153ad 100644
--- a/build/config/compiler/compiler.gni
+++ b/build/config/compiler/compiler.gni
@@ -190,6 +190,8 @@
 
 declare_args() {
   # Set to true to use lld, the LLVM linker.
+  # Not supported for macOS (see docs/mac_lld.md), and not functional at all for
+  # iOS. The default linker everywhere else.
   use_lld = is_clang && !is_apple
 }
 
diff --git a/build/toolchain/mac/BUILD.gn b/build/toolchain/mac/BUILD.gn
index edc6cac..835cd36 100644
--- a/build/toolchain/mac/BUILD.gn
+++ b/build/toolchain/mac/BUILD.gn
@@ -263,16 +263,26 @@
     }
 
     tool("alink") {
-      script =
-          rebase_path("//build/toolchain/mac/filter_libtool.py", root_build_dir)
-
       rspfile = "{{output}}.rsp"
       rspfile_content = "{{inputs}}"
 
-      # Specify explicit path for libtool.
-      libtool = mac_bin_path + "libtool"
-      command = "rm -f {{output}} && TOOL_VERSION=${tool_versions.filter_libtool} python $script $libtool -static -D {{arflags}} -o {{output}} \"@$rspfile\""
-      description = "LIBTOOL-STATIC {{output}}"
+      if (!use_lld) {
+        script = rebase_path("//build/toolchain/mac/filter_libtool.py",
+                             root_build_dir)
+
+        # Specify explicit path for libtool.
+        libtool = mac_bin_path + "libtool"
+        command = "rm -f {{output}} && TOOL_VERSION=${tool_versions.filter_libtool} python $script $libtool -static -D {{arflags}} -o {{output}} \"@$rspfile\""
+        description = "LIBTOOL-STATIC {{output}}"
+      } else {
+        ar = "${prefix}llvm-ar"
+        command = "\"$ar\" {{arflags}} -r -c -s -D {{output}} \"@$rspfile\""
+
+        # Remove the output file first so that ar doesn't try to modify the
+        # existing file.
+        command = "rm -f {{output}} && $command"
+        description = "AR {{output}}"
+      }
       outputs = [ "{{output_dir}}/{{target_output_name}}{{output_extension}}" ]
       default_output_dir = "{{target_out_dir}}"
       default_output_extension = ".a"
diff --git a/cc/test/layer_tree_test.cc b/cc/test/layer_tree_test.cc
index f9b3a198..ab6116e4 100644
--- a/cc/test/layer_tree_test.cc
+++ b/cc/test/layer_tree_test.cc
@@ -53,7 +53,6 @@
 #include "testing/gmock/include/gmock/gmock.h"
 #include "ui/base/ui_base_features.h"
 #include "ui/gfx/geometry/size_conversions.h"
-#include "ui/gl/gl_implementation.h"
 #include "ui/gl/gl_switches.h"
 
 namespace cc {
@@ -971,13 +970,6 @@
   base::RunLoop::QuitCurrentWhenIdleDeprecated();
 }
 
-bool LayerTreeTest::use_swangle() const {
-  base::CommandLine* command_line = base::CommandLine::ForCurrentProcess();
-  return (gl::GetGLImplementation() == gl::kGLImplementationEGLANGLE) &&
-         (command_line->GetSwitchValueASCII(::switches::kUseANGLE) ==
-          gl::kANGLEImplementationSwiftShaderName);
-}
-
 void LayerTreeTest::DispatchAddNoDamageAnimation(
     Animation* animation_to_receive_animation,
     double animation_duration) {
diff --git a/cc/test/layer_tree_test.h b/cc/test/layer_tree_test.h
index 0662dc9..7f8345d 100644
--- a/cc/test/layer_tree_test.h
+++ b/cc/test/layer_tree_test.h
@@ -229,7 +229,6 @@
     return false;
 #endif
   }
-  bool use_swangle() const;
 
   const viz::RendererType renderer_type_;
 
diff --git a/cc/trees/layer_tree_host_pixeltest_filters.cc b/cc/trees/layer_tree_host_pixeltest_filters.cc
index a699413..3687e59c 100644
--- a/cc/trees/layer_tree_host_pixeltest_filters.cc
+++ b/cc/trees/layer_tree_host_pixeltest_filters.cc
@@ -610,11 +610,7 @@
 
   RunPixelTest(
       background,
-      base::FilePath(
-          (use_swangle() || use_skia_vulkan())
-              ? FILE_PATH_LITERAL("backdrop_filter_on_scaled_layer_.png")
-              : FILE_PATH_LITERAL(
-                    "backdrop_filter_on_scaled_layer_legacy_swiftshader_.png"))
+      base::FilePath(FILE_PATH_LITERAL("backdrop_filter_on_scaled_layer_.png"))
           .InsertBeforeExtensionASCII(GetRendererSuffix()));
 }
 
@@ -728,11 +724,7 @@
 
   RunPixelTest(
       background,
-      base::FilePath(
-          (use_swangle() || use_skia_vulkan())
-              ? FILE_PATH_LITERAL("scaled_render_surface_layer_.png")
-              : FILE_PATH_LITERAL(
-                    "scaled_render_surface_layer_legacy_swiftshader_.png"))
+      base::FilePath(FILE_PATH_LITERAL("scaled_render_surface_layer_.png"))
           .InsertBeforeExtensionASCII(GetRendererSuffix()));
 }
 
diff --git a/cc/trees/layer_tree_host_pixeltest_scrollbars.cc b/cc/trees/layer_tree_host_pixeltest_scrollbars.cc
index b531ed86..d8c4420 100644
--- a/cc/trees/layer_tree_host_pixeltest_scrollbars.cc
+++ b/cc/trees/layer_tree_host_pixeltest_scrollbars.cc
@@ -173,22 +173,14 @@
   scale_transform.Scale(scale, scale);
   layer->SetTransform(scale_transform);
 
-  if (use_swangle() || use_skia_vulkan() ||
-      renderer_type_ == viz::RendererType::kSkiaGL ||
+  if (renderer_type_ == viz::RendererType::kSkiaGL ||
       renderer_type_ == viz::RendererType::kSkiaDawn)
     pixel_comparator_ = std::make_unique<FuzzyPixelOffByOneComparator>(true);
 
-  RunPixelTest(
-      background,
-      base::FilePath(
-          use_swangle()
-              ? (use_skia_vulkan() ? FILE_PATH_LITERAL("spiral_64_scale_vk.png")
-                                   : FILE_PATH_LITERAL("spiral_64_scale.png"))
-              : (use_skia_vulkan()
-                     ? FILE_PATH_LITERAL(
-                           "spiral_64_scale_legacy_swiftshader_vk.png")
-                     : FILE_PATH_LITERAL(
-                           "spiral_64_scale_legacy_swiftshader.png"))));
+  RunPixelTest(background,
+               use_skia_vulkan()
+                   ? base::FilePath(FILE_PATH_LITERAL("spiral_64_scale_vk.png"))
+                   : base::FilePath(FILE_PATH_LITERAL("spiral_64_scale.png")));
 }
 
 class LayerTreeHostOverlayScrollbarsPixelTest
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkUtils.java b/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkUtils.java
index d6016f9..7f3e6c8 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkUtils.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkUtils.java
@@ -18,6 +18,7 @@
 
 import org.chromium.base.BuildInfo;
 import org.chromium.base.Callback;
+import org.chromium.base.ContextUtils;
 import org.chromium.base.Log;
 import org.chromium.base.ThreadUtils;
 import org.chromium.base.metrics.RecordHistogram;
@@ -248,25 +249,56 @@
      * @param activity An activity to start the manager with.
      */
     public static void showBookmarkManager(Activity activity) {
-        ThreadUtils.assertOnUiThread();
-        String url = getFirstUrlToLoad(activity);
+        showBookmarkManager(activity, null);
+    }
 
-        if (DeviceFormFactor.isNonMultiDisplayContextOnTablet(activity)) {
-            openUrl(activity, url, activity.getComponentName());
-        } else {
-            Intent intent = new Intent(activity, BookmarkActivity.class);
-            intent.setData(Uri.parse(url));
+    /**
+     * Shows bookmark main UI.
+     * @param activity An activity to start the manager with. If null, the bookmark manager will be
+     *         started as a new task.
+     * @param folderId The bookmark folder to open. If null, the bookmark manager will open the most
+     *         recent folder.
+     */
+    public static void showBookmarkManager(
+            @Nullable Activity activity, @Nullable BookmarkId folderId) {
+        ThreadUtils.assertOnUiThread();
+        Context context = activity == null ? ContextUtils.getApplicationContext() : activity;
+        String url = getFirstUrlToLoad(context, folderId);
+
+        // Tablet.
+        if (DeviceFormFactor.isNonMultiDisplayContextOnTablet(context)) {
+            openUrl(context, url, activity == null ? null : activity.getComponentName());
+            return;
+        }
+
+        // Phone.
+        Intent intent = new Intent(context, BookmarkActivity.class);
+        intent.setData(Uri.parse(url));
+        if (activity != null) {
+            // Start from an existing activity.
             intent.putExtra(IntentHandler.EXTRA_PARENT_COMPONENT, activity.getComponentName());
             activity.startActivity(intent);
+        } else {
+            // Start a new task.
+            intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+            IntentHandler.startActivityForTrustedIntent(intent);
         }
     }
 
     /**
-     * The initial url the bookmark manager shows depends some experiments we run.
+     * @return the bookmark folder URL to open.
      */
-    private static String getFirstUrlToLoad(Context context) {
-        String lastUsedUrl = getLastUsedUrl(context);
-        return TextUtils.isEmpty(lastUsedUrl) ? UrlConstants.BOOKMARKS_URL : lastUsedUrl;
+    private static String getFirstUrlToLoad(Context context, @Nullable BookmarkId folderId) {
+        String url;
+        if (folderId == null) {
+            // Load most recently visited bookmark folder.
+            url = getLastUsedUrl(context);
+        } else {
+            // Load a specific folder.
+            url = BookmarkUIState.createFolderUrl(folderId).toString();
+        }
+
+        return TextUtils.isEmpty(url) ? UrlConstants.BOOKMARKS_URL : url;
     }
 
     /**
@@ -337,7 +369,8 @@
                 "Bookmarks.OpenBookmarkType", bookmarkId.getType(), BookmarkType.LAST + 1);
 
         BookmarkItem bookmarkItem = model.getBookmarkById(bookmarkId);
-        if (bookmarkItem.getId().getType() == BookmarkType.READING_LIST) {
+        if (bookmarkItem.getId().getType() == BookmarkType.READING_LIST
+                && !bookmarkItem.isFolder()) {
             model.setReadStatusForReadingList(bookmarkItem.getUrl(), true);
         }
         openUrl(context, bookmarkItem.getUrl(), openBookmarkComponentName);
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/payments/ChromePaymentRequestService.java b/chrome/android/java/src/org/chromium/chrome/browser/payments/ChromePaymentRequestService.java
index 3dacdd4..193776a 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/payments/ChromePaymentRequestService.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/payments/ChromePaymentRequestService.java
@@ -557,7 +557,6 @@
         }
 
         mPaymentUiService.close();
-        SettingsAutofillAndPaymentsObserver.getInstance().unregisterObserver(mPaymentUiService);
 
         if (mPaymentHandlerHost != null) {
             mPaymentHandlerHost.destroy();
@@ -620,8 +619,6 @@
             RecordHistogram.recordSparseHistogram(
                     "PaymentRequest.MissingPaymentFields", missingFields);
         }
-
-        SettingsAutofillAndPaymentsObserver.getInstance().registerObserver(mPaymentUiService);
     }
 
     // Implements BrowserPaymentRequest:
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/payments/SettingsAutofillAndPaymentsObserver.java b/chrome/android/java/src/org/chromium/chrome/browser/payments/SettingsAutofillAndPaymentsObserver.java
index 73d2ed5..d880123 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/payments/SettingsAutofillAndPaymentsObserver.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/payments/SettingsAutofillAndPaymentsObserver.java
@@ -34,7 +34,7 @@
         void onAddressDeleted(String guid);
 
         /**
-         * Called when user updates or addes a credit card.
+         * Called when user updates or adds a credit card.
          *
          * @param card The updated or added card.
          */
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/payments/ui/PaymentUiService.java b/chrome/android/java/src/org/chromium/chrome/browser/payments/ui/PaymentUiService.java
index c0eaaa7..627c797 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/payments/ui/PaymentUiService.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/payments/ui/PaymentUiService.java
@@ -382,6 +382,8 @@
                 Section.PAYMENT_METHOD, apps.size(), !apps.isEmpty() && apps.get(0).isComplete());
 
         updateAppModifiedTotals();
+
+        SettingsAutofillAndPaymentsObserver.getInstance().registerObserver(this);
     }
 
     /** Set the AutofillPaymentAppCreator. */
@@ -1691,6 +1693,8 @@
             mPaymentMethodsSection = null;
         }
 
+        SettingsAutofillAndPaymentsObserver.getInstance().unregisterObserver(this);
+
         removeLeavingTabObservers();
         destroyCurrencyFormatters();
     }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabPersistentStore.java b/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabPersistentStore.java
index 8d3f57f9..756fdc1 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabPersistentStore.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabPersistentStore.java
@@ -457,9 +457,7 @@
         }
 
         // Restore the tabs from the second activity asynchronously.
-        PostTask.postTask(TaskTraits.BEST_EFFORT_MAY_BLOCK, () -> {
-            restoreTabs(false);
-        });
+        loadNextTab();
     }
 
     /**
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ui/RootUiCoordinator.java b/chrome/android/java/src/org/chromium/chrome/browser/ui/RootUiCoordinator.java
index 23bb653e..75ce985 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/ui/RootUiCoordinator.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/ui/RootUiCoordinator.java
@@ -81,6 +81,7 @@
 import org.chromium.chrome.browser.ui.appmenu.AppMenuCoordinator;
 import org.chromium.chrome.browser.ui.appmenu.AppMenuCoordinatorFactory;
 import org.chromium.chrome.browser.ui.messages.snackbar.SnackbarManager;
+import org.chromium.chrome.browser.util.ChromeAccessibilityUtil;
 import org.chromium.chrome.browser.vr.VrModuleProvider;
 import org.chromium.chrome.features.start_surface.StartSurface;
 import org.chromium.components.browser_ui.bottomsheet.BottomSheetController;
@@ -94,6 +95,7 @@
 import org.chromium.components.feature_engagement.EventConstants;
 import org.chromium.components.messages.ManagedMessageDispatcher;
 import org.chromium.components.messages.MessageContainer;
+import org.chromium.components.messages.MessageUtils;
 import org.chromium.components.messages.MessagesFactory;
 import org.chromium.content_public.browser.ActionModeCallbackHelper;
 import org.chromium.content_public.browser.LoadUrlParams;
@@ -267,6 +269,8 @@
 
         mActivity.getLayoutManagerSupplier().removeObserver(mLayoutManagerSupplierCallback);
 
+        MessageUtils.setAccessibilityUtil(null);
+
         if (mMessageDispatcher != null) {
             MessagesFactory.detachMessageDispatcher(mMessageDispatcher);
             mMessageDispatcher = null;
@@ -409,6 +413,7 @@
     @CallSuper
     public void onFinishNativeInitialization() {
         if (ChromeFeatureList.isEnabled(ChromeFeatureList.MESSAGES_FOR_ANDROID_INFRASTRUCTURE)) {
+            MessageUtils.setAccessibilityUtil(ChromeAccessibilityUtil.get());
             MessageContainer container = mActivity.findViewById(R.id.message_container);
             mMessageContainerCoordinator =
                     new MessageContainerCoordinator(container, getBrowserControlsManager());
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/bookmarks/BookmarkTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/bookmarks/BookmarkTest.java
index a1f0d8c..7bb37da 100644
--- a/chrome/android/javatests/src/org/chromium/chrome/browser/bookmarks/BookmarkTest.java
+++ b/chrome/android/javatests/src/org/chromium/chrome/browser/bookmarks/BookmarkTest.java
@@ -1642,6 +1642,31 @@
         waitForEditActivity().finish();
     }
 
+    @Test
+    @SmallTest
+    @Features.EnableFeatures({ChromeFeatureList.READ_LATER})
+    public void testShowBookmarkManagerReadingListPage() {
+        BookmarkPromoHeader.forcePromoStateForTests(PromoState.PROMO_NONE);
+        TestThreadUtils.runOnUiThreadBlocking(
+                () -> mBookmarkModel.loadEmptyPartnerBookmarkShimForTesting());
+        BookmarkTestUtil.waitForBookmarkModelLoaded();
+
+        if (mActivityTestRule.getActivity().isTablet()) {
+            TestThreadUtils.runOnUiThreadBlocking(() -> {
+                BookmarkUtils.showBookmarkManager(
+                        null, new BookmarkId(0, BookmarkType.READING_LIST));
+            });
+        } else {
+            mBookmarkActivity = ApplicationTestUtils.waitForActivityWithClass(
+                    BookmarkActivity.class, Stage.CREATED, () -> {
+                        BookmarkUtils.showBookmarkManager(
+                                null, new BookmarkId(0, BookmarkType.READING_LIST));
+                    });
+        }
+
+        onView(withText("Reading list")).check(matches(isDisplayed()));
+    }
+
     /**
      * Adds a bookmark in the scenario where we have partner bookmarks.
      *
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/tab/state/CriticalPersistedTabDataTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/tab/state/CriticalPersistedTabDataTest.java
index c440bdd..29b8cb0 100644
--- a/chrome/android/javatests/src/org/chromium/chrome/browser/tab/state/CriticalPersistedTabDataTest.java
+++ b/chrome/android/javatests/src/org/chromium/chrome/browser/tab/state/CriticalPersistedTabDataTest.java
@@ -12,7 +12,6 @@
 
 import org.junit.Assert;
 import org.junit.Before;
-import org.junit.ClassRule;
 import org.junit.Rule;
 import org.junit.Test;
 import org.junit.runner.RunWith;
@@ -23,13 +22,11 @@
 import org.chromium.base.supplier.ObservableSupplierImpl;
 import org.chromium.base.test.BaseJUnit4ClassRunner;
 import org.chromium.base.test.UiThreadTest;
-import org.chromium.base.test.util.Batch;
 import org.chromium.chrome.browser.tab.MockTab;
 import org.chromium.chrome.browser.tab.Tab;
 import org.chromium.chrome.browser.tab.TabImpl;
 import org.chromium.chrome.browser.tab.WebContentsState;
-import org.chromium.chrome.test.ChromeTabbedActivityTestRule;
-import org.chromium.chrome.test.batch.BlankCTATabInitialStateRule;
+import org.chromium.chrome.test.ChromeBrowserTestRule;
 
 import java.nio.ByteBuffer;
 import java.util.concurrent.Semaphore;
@@ -38,15 +35,9 @@
  * Test relating to {@link CriticalPersistedTabData}
  */
 @RunWith(BaseJUnit4ClassRunner.class)
-@Batch(Batch.PER_CLASS)
 public class CriticalPersistedTabDataTest {
-    @ClassRule
-    public static ChromeTabbedActivityTestRule mActivityTestRule =
-            new ChromeTabbedActivityTestRule();
-
     @Rule
-    public BlankCTATabInitialStateRule mBlankCTATabInitialStateRule =
-            new BlankCTATabInitialStateRule(mActivityTestRule, false);
+    public final ChromeBrowserTestRule mBrowserTestRule = new ChromeBrowserTestRule();
 
     private static final int TAB_ID = 1;
     private static final int PARENT_ID = 2;
diff --git a/chrome/app/nearby_share_strings.grdp b/chrome/app/nearby_share_strings.grdp
index f46d087c8..58cd661 100644
--- a/chrome/app/nearby_share_strings.grdp
+++ b/chrome/app/nearby_share_strings.grdp
@@ -85,6 +85,9 @@
   <message name="IDS_NEARBY_ONBOARDING_PAGE_DEVICE_NAME" desc="Label of the text input field to set the name of a users device which is shown to other devices for the Nearby Share feature.">
     Device name
   </message>
+  <message name="IDS_NEARBY_ONBOARDING_PAGE_DEVICE_NAME_HELP" desc="Text that accompanies the device name input field to give some context about what the device name is and how it will be used.">
+    How your device appears to others
+  </message>
   <message name="IDS_NEARBY_ONBOARDING_PAGE_SUBTITLE" desc="Subtitle of the Nearby Share onboarding page that sets up the local device for the feature which provides a way for nearby devices to share files, text, and urls.">
     Share files with people around you
   </message>
diff --git a/chrome/app/nearby_share_strings_grdp/IDS_NEARBY_ONBOARDING_PAGE_DEVICE_NAME_HELP.png.sha1 b/chrome/app/nearby_share_strings_grdp/IDS_NEARBY_ONBOARDING_PAGE_DEVICE_NAME_HELP.png.sha1
new file mode 100644
index 0000000..19a16a8
--- /dev/null
+++ b/chrome/app/nearby_share_strings_grdp/IDS_NEARBY_ONBOARDING_PAGE_DEVICE_NAME_HELP.png.sha1
@@ -0,0 +1 @@
+361d088c2583505fd3b18732cdab33c493db1dc8
\ No newline at end of file
diff --git a/chrome/app/os_settings_strings.grdp b/chrome/app/os_settings_strings.grdp
index 891cca2..f5960d3 100644
--- a/chrome/app/os_settings_strings.grdp
+++ b/chrome/app/os_settings_strings.grdp
@@ -2445,6 +2445,12 @@
   <message name="IDS_SETTINGS_MULTIDEVICE_NOTIFICATION_ACCESS_SETUP_DIALOG_ACK_SUMMARY" desc="The summary of the dialog containing the Phone Hub notification opt-in flow shown when the Phone Hub 'Notifications' toggle is switched on.">
     Receive notifications from your phone on your <ph name="DEVICE_TYPE">$1<ex>Chromebook</ex></ph>
   </message>
+  <message name="IDS_SETTINGS_MULTIDEVICE_NOTIFICATION_ACCESS_SETUP_DIALOG_AWAITING_RESPONSE_TITLE" translateable="false" desc="The title of the dialog containing the Phone Hub notification opt-in flow shown when the user needs to follow the setup flow instructions on their phone in order to start mirroring notifications from their phone to their Chromebook.">
+    Complete setup on your phone
+  </message>
+  <message name="IDS_SETTINGS_MULTIDEVICE_NOTIFICATION_ACCESS_SETUP_DIALOG_AWAITING_RESPONSE_SUMMARY" translateable="false" desc="The body text of the dialog containing the Phone Hub notification opt-in flow shown when the user needs to follow the setup flow instructions on their phone in order to start mirroring notifications from their phone to their Chromebook.">
+    Make sure your phone is nearby, unlocked, and has Bluetooth and Wi-Fi turned on. Follow steps on your phone to complete setup.
+  </message>
   <message name="IDS_SETTINGS_MULTIDEVICE_NOTIFICATION_ACCESS_SETUP_DIALOG_CONNECTING_TITLE" desc="The title of the dialog containing the Phone Hub notification opt-in flow shown when the user has confirmed to enable the feature that will mirror phone notifications to their Chromebook.">
     Connecting to your phone
   </message>
@@ -2454,8 +2460,8 @@
   <message name="IDS_SETTINGS_MULTIDEVICE_NOTIFICATION_ACCESS_SETUP_DIALOG_COMPLETED_TITLE" desc="The title of the dialog containing the Phone Hub notification opt-in flow when the feature is successfully turned on and notifications on their phone will now be mirrored to their Chromebook.">
     Notifications turned on
   </message>
-  <message name="IDS_SETTINGS_MULTIDEVICE_NOTIFICATION_ACCESS_SETUP_DIALOG_COMPLETED_SUMMARY" desc="The body text of the dialog containing the Phone Hub notification opt-in flow when the feature is successfully turned on and notifications on their phone will now be mirrored to their Chromebook.">
-    You can now receive notifications from your phone on your <ph name="DEVICE_TYPE">$1<ex>Chromebook</ex></ph>. Dismissing notifications on your <ph name="DEVICE_TYPE">$1<ex>Chromebook</ex></ph> will also dismiss them on your phone. Make sure your phone is nearby, unlocked, and has Bluetooth and Wi-Fi turned on.
+  <message name="IDS_SETTINGS_MULTIDEVICE_NOTIFICATION_ACCESS_SETUP_DIALOG_COMPLETED_SUMMARY" translateable="false" desc="The body text of the dialog containing the Phone Hub notification opt-in flow when the feature is successfully turned on and notifications on their phone will now be mirrored to their Chromebook.">
+    You can now receive notifications from your phone on your <ph name="DEVICE_TYPE">$1<ex>Chromebook</ex></ph>. Dismissing notifications on your <ph name="DEVICE_TYPE">$1<ex>Chromebook</ex></ph> will also dismiss them on your phone. Make sure your phone is nearby and has Bluetooth and Wi-Fi turned on.
   </message>
   <message name="IDS_SETTINGS_MULTIDEVICE_NOTIFICATION_ACCESS_SETUP_DIALOG_COULD_NOT_ESTABLISH_CONNECTION_TITLE" desc="The title of the dialog containing the Phone Hub notification opt-in flow when the device is unable to establish a connection to the phone.">
     Could not establish connection
diff --git a/chrome/app/os_settings_strings_grdp/IDS_SETTINGS_MULTIDEVICE_NOTIFICATION_ACCESS_SETUP_DIALOG_COMPLETED_SUMMARY.png.sha1 b/chrome/app/os_settings_strings_grdp/IDS_SETTINGS_MULTIDEVICE_NOTIFICATION_ACCESS_SETUP_DIALOG_COMPLETED_SUMMARY.png.sha1
deleted file mode 100644
index c4a19947..0000000
--- a/chrome/app/os_settings_strings_grdp/IDS_SETTINGS_MULTIDEVICE_NOTIFICATION_ACCESS_SETUP_DIALOG_COMPLETED_SUMMARY.png.sha1
+++ /dev/null
@@ -1 +0,0 @@
-547f7dfd9b60b4186a31bed65f763ffdd00d00a2
\ No newline at end of file
diff --git a/chrome/app/resources/generated_resources_af.xtb b/chrome/app/resources/generated_resources_af.xtb
index 963d09c..e61ce19b 100644
--- a/chrome/app/resources/generated_resources_af.xtb
+++ b/chrome/app/resources/generated_resources_af.xtb
@@ -4689,7 +4689,6 @@
 <translation id="642469772702851743">Hierdie toestel (SN: <ph name="SERIAL_NUMBER" />) is deur die eienaar gesluit.</translation>
 <translation id="6425556984042222041">Teks-na-spraak-tempo</translation>
 <translation id="6426200009596957090">Maak ChromeVox-instellings oop</translation>
-<translation id="642654727595919401"><ph name="DOMAIN" /> vereis dat jy jou data rugsteun en hierdie <ph name="DEVICE_TYPE" /> binne 1 week terugstuur.<ph name="LINK_BEGIN" />Sien besonderhede<ph name="LINK_END" /></translation>
 <translation id="642729974267661262">Mag nie klank speel nie</translation>
 <translation id="6428982734197629783">Verwerk tans prent</translation>
 <translation id="6429384232893414837">Kon nie opdateer nie</translation>
@@ -5565,7 +5564,6 @@
 <translation id="7457384018036134905">Bestuur tale in Chrome-bedryfstelselinstellings</translation>
 <translation id="7458168200501453431">Gebruik dieselfde speltoetser wat in Google-soektog gebruik word. Teks wat jy in die blaaier tik, word na Google toe gestuur.</translation>
 <translation id="7460045493116006516">Huidige tema wat jy geïnstalleer het</translation>
-<translation id="7461729991508684543">{NUM_DAYS,plural, =1{<ph name="DOMAIN" /> vereis dat jy jou data rugsteun en hierdie <ph name="DEVICE_TYPE" /> vandag terugstuur.<ph name="LINK_BEGIN" />Sien besonderhede<ph name="LINK_END" />}other{<ph name="DOMAIN" /> vereis dat jy jou data rugsteun en hierdie <ph name="DEVICE_TYPE" /> binne {NUM_DAYS} dae terugstuur.<ph name="LINK_BEGIN" />Sien besonderhede<ph name="LINK_END" />}}</translation>
 <translation id="7461924472993315131">Pin</translation>
 <translation id="746216226901520237">Jou foon sal volgende keer jou <ph name="DEVICE_TYPE" /> ontsluit. Jy kan Smart Lock in Instellings afskakel.</translation>
 <translation id="7463006580194749499">Voeg persoon by</translation>
@@ -6256,7 +6254,6 @@
 <translation id="8226619461731305576">Waglys</translation>
 <translation id="8226628635270268143">Kies jou gunstelingfoto's en -albums</translation>
 <translation id="8227119283605456246">Heg lêer aan</translation>
-<translation id="822964464349305906"><ph name="TYPE_1" />, <ph name="TYPE_2" /></translation>
 <translation id="8230134520748321204">Stoor wagwoord vir <ph name="ORIGIN" />?</translation>
 <translation id="8234795456569844941">Help asseblief ons ingenieurs om hierdie probleem op te los. Sê vir ons wat gebeur het net voordat jy die profielfoutboodskap gekry het:</translation>
 <translation id="8236917170563564587">Deel eerder hierdie oortjie</translation>
diff --git a/chrome/app/resources/generated_resources_am.xtb b/chrome/app/resources/generated_resources_am.xtb
index 75c4ae5..06036b5e 100644
--- a/chrome/app/resources/generated_resources_am.xtb
+++ b/chrome/app/resources/generated_resources_am.xtb
@@ -4687,7 +4687,6 @@
 <translation id="642469772702851743">ይህ መሣሪያ (SN፦ <ph name="SERIAL_NUMBER" />) በዋና ባለቤቱ ተቆልፎ ነበር።</translation>
 <translation id="6425556984042222041">የጽሑፍ-ወደ-ንግግር ፍጥነት</translation>
 <translation id="6426200009596957090">የChromeVox ቅንብሮችን ክፈት</translation>
-<translation id="642654727595919401"><ph name="DOMAIN" /> የውሂብዎን ምትኬ እንዲያስቀምጡና እና ይህን <ph name="DEVICE_TYPE" /> በ1 ሳምንት ውስጥ እንዲመልሱት ይፈልግብዎታል።<ph name="LINK_BEGIN" />ዝርዝሮችን ይመልከቱ<ph name="LINK_END" /></translation>
 <translation id="642729974267661262">ድምጽ ለማጫወት አልተፈቀደም</translation>
 <translation id="6428982734197629783">ምስልን በማሰናዳት ላይ</translation>
 <translation id="6429384232893414837">የማዘመን ስህተት</translation>
@@ -5563,7 +5562,6 @@
 <translation id="7457384018036134905">ቋንቋዎችን በChrome OS ቅንብሮች ውስጥ ያስተዳድሩ</translation>
 <translation id="7458168200501453431">በGoogle ፍለጋ ላይ ስራ ላይ የሚውለው ተመሳሳዩን ፊደል ማረሚያ ይጠቀማል። በአሳሹ ውስጥ የሚተይቡት ጽሑፍ ወደ Google ይላካል።</translation>
 <translation id="7460045493116006516">እርስዎ የጫኑት አሁን ያለ ገጽታ</translation>
-<translation id="7461729991508684543">{NUM_DAYS,plural, =1{<ph name="DOMAIN" /> የውሂብዎን ምትኬ እንዲያስቀምጡና እና ይህን <ph name="DEVICE_TYPE" /> ዛሬ እንዲመልሱት ይፈልግብዎታል።<ph name="LINK_BEGIN" />ዝርዝሮችን ይመልከቱ<ph name="LINK_END" />}one{<ph name="DOMAIN" /> የእርስዎን ውሂብ ምትኬ በ{NUM_DAYS} ቀኖች ውስጥ እንዲያስቀምጡ እና ይህን <ph name="DEVICE_TYPE" /> እንዲመልሱት ይፈልግብዎታል።<ph name="LINK_BEGIN" />ዝርዝሮችን ይመልከቱ<ph name="LINK_END" />}other{<ph name="DOMAIN" /> የእርስዎን ውሂብ ምትኬ በ{NUM_DAYS} ቀኖች ውስጥ እንዲያስቀምጡ እና ይህን <ph name="DEVICE_TYPE" /> እንዲመልሱት ይፈልግብዎታል።<ph name="LINK_BEGIN" />ዝርዝሮችን ይመልከቱ<ph name="LINK_END" />}}</translation>
 <translation id="7461924472993315131">ሰካ</translation>
 <translation id="746216226901520237">በሚቀጥለው ጊዜ ስልክዎ የእርስዎን <ph name="DEVICE_TYPE" /> ይከፍታል። በቅንብሮች ውስጥ Smart Lock ማጥፋት ይችላሉ።</translation>
 <translation id="7463006580194749499">ሰው አክል</translation>
@@ -6259,7 +6257,6 @@
 <translation id="8226619461731305576">ወረፋ</translation>
 <translation id="8226628635270268143">የእርስዎን ተወዳጅ ፎቶዎች እና አልበሞች ይምረጡ</translation>
 <translation id="8227119283605456246">ፋይል አያይዝ</translation>
-<translation id="822964464349305906"><ph name="TYPE_1" />፣ <ph name="TYPE_2" /></translation>
 <translation id="8230134520748321204">ለ<ph name="ORIGIN" /> የይለፍ ቃል ይቀመጥ?</translation>
 <translation id="8234795456569844941">እባክዎ መሐንዲሶቻችን ይህን ችግር እንዲፈቱት ያግዟቸው። ልክ የመገለጫ ስህተት መልዕክቱን ከማግኘትዎ በፊት ምን እንደተከሰተ ይንገሩን፦</translation>
 <translation id="8236917170563564587">በምትኩ ይህን ትር አጋራ</translation>
diff --git a/chrome/app/resources/generated_resources_ar.xtb b/chrome/app/resources/generated_resources_ar.xtb
index 723df72..e0b75cc 100644
--- a/chrome/app/resources/generated_resources_ar.xtb
+++ b/chrome/app/resources/generated_resources_ar.xtb
@@ -4693,7 +4693,6 @@
 <translation id="642469772702851743">أقفل المالك هذا الجهاز (الرقم التسلسلي: <ph name="SERIAL_NUMBER" />).</translation>
 <translation id="6425556984042222041">معدّل "تحويل النص إلى كلام"</translation>
 <translation id="6426200009596957090">‏فتح إعدادات Chromevox</translation>
-<translation id="642654727595919401">يطلُب <ph name="DOMAIN" /> منك الاحتفاظ بنسخة احتياطية من بياناتك وإرجاع جهاز <ph name="DEVICE_TYPE" /> هذا خلال أسبوع واحد. <ph name="LINK_BEGIN" />عرض التفاصيل<ph name="LINK_END" /></translation>
 <translation id="642729974267661262">المواقع الإلكترونية التي لا يُسمح لها بتشغيل الصوت</translation>
 <translation id="6428982734197629783">جارٍ معالجة الصورة…</translation>
 <translation id="6429384232893414837">خطأ في التحديث</translation>
@@ -5569,7 +5568,6 @@
 <translation id="7457384018036134905">‏إدارة اللغات في إعدادات "نظام التشغيل Chrome"</translation>
 <translation id="7458168200501453431">‏يُستخدَم المدقق الإملائي نفسه الذي يتم استخدامه في "بحث Google". يتم إرسال النص الذي تكتبه في المتصفِّح إلى Google.</translation>
 <translation id="7460045493116006516">التصميم الحالي الذي ثبَّتّه</translation>
-<translation id="7461729991508684543">{NUM_DAYS,plural, =1{يطلُب <ph name="DOMAIN" /> منك الاحتفاظ بنسخة احتياطية من بياناتك وإرجاع جهاز <ph name="DEVICE_TYPE" /> اليوم. <ph name="LINK_BEGIN" />عرض التفاصيل<ph name="LINK_END" />}zero{يطلُب <ph name="DOMAIN" /> منك الاحتفاظ بنسخة احتياطية من بياناتك وإرجاع جهاز <ph name="DEVICE_TYPE" /> هذا خلال {NUM_DAYS} يوم. <ph name="LINK_BEGIN" />عرض التفاصيل<ph name="LINK_END" />}two{يطلُب <ph name="DOMAIN" /> منك الاحتفاظ بنسخة احتياطية من بياناتك وإرجاع جهاز <ph name="DEVICE_TYPE" /> هذا خلال يومَين ({NUM_DAYS}). <ph name="LINK_BEGIN" />عرض التفاصيل<ph name="LINK_END" />}few{يطلُب <ph name="DOMAIN" /> منك الاحتفاظ بنسخة احتياطية من بياناتك وإرجاع جهاز <ph name="DEVICE_TYPE" /> هذا خلال {NUM_DAYS} أيام. <ph name="LINK_BEGIN" />عرض التفاصيل<ph name="LINK_END" />}many{يطلُب <ph name="DOMAIN" /> منك الاحتفاظ بنسخة احتياطية من بياناتك وإرجاع جهاز <ph name="DEVICE_TYPE" /> هذا خلال {NUM_DAYS} يومًا. <ph name="LINK_BEGIN" />عرض التفاصيل<ph name="LINK_END" />}other{يطلُب <ph name="DOMAIN" /> منك الاحتفاظ بنسخة احتياطية من بياناتك وإرجاع جهاز <ph name="DEVICE_TYPE" /> هذا خلال {NUM_DAYS} يوم. <ph name="LINK_BEGIN" />عرض التفاصيل<ph name="LINK_END" />}}</translation>
 <translation id="7461924472993315131">تثبيت</translation>
 <translation id="746216226901520237">‏في المرة القادمة، سيفتح هاتفك قفل جهاز <ph name="DEVICE_TYPE" />. يمكنك إيقاف Smart Lock في "الإعدادات".</translation>
 <translation id="7463006580194749499">إضافة شخص</translation>
@@ -6261,7 +6259,6 @@
 <translation id="8226619461731305576">اللائحة</translation>
 <translation id="8226628635270268143">اختيار صورك وألبوماتك المفضَّلة</translation>
 <translation id="8227119283605456246">إرفاق ملف</translation>
-<translation id="822964464349305906"><ph name="TYPE_1" />، <ph name="TYPE_2" /></translation>
 <translation id="8230134520748321204">هل تريد حفظ كلمة المرور لـ <ph name="ORIGIN" />؟</translation>
 <translation id="8234795456569844941">يُرجى مساعدة مهندسينا في حل هذه المشكلة. أخبرنا بما حدث مباشرة قبل ظهور رسالة خطأ الملف الشخصي:</translation>
 <translation id="8236917170563564587">مشاركة علامة التبويب هذه بدلاً من ذلك</translation>
diff --git a/chrome/app/resources/generated_resources_as.xtb b/chrome/app/resources/generated_resources_as.xtb
index 48813d12..abd9a02 100644
--- a/chrome/app/resources/generated_resources_as.xtb
+++ b/chrome/app/resources/generated_resources_as.xtb
@@ -4681,7 +4681,6 @@
 <translation id="642469772702851743">এই ডিভাইচটো (SN: <ph name="SERIAL_NUMBER" />) গৰাকীজনে লক কৰিছিল।</translation>
 <translation id="6425556984042222041">পাঠৰ পৰা কথনৰ হাৰ</translation>
 <translation id="6426200009596957090">ChromeVox ছেটিং খোলক</translation>
-<translation id="642654727595919401"><ph name="DOMAIN" />ৰ বাবে আপুনি নিজৰ ডেটাৰ বেক আপ লোৱা আৰু ১ সপ্তাহৰ ভিতৰত এই <ph name="DEVICE_TYPE" />টো ঘূৰাই দিয়াৰ আৱশ্যক হয়।<ph name="LINK_BEGIN" />সবিশেষ চাওক<ph name="LINK_END" /></translation>
 <translation id="642729974267661262">ধ্বনি প্লে’ কৰাৰ অনুমতি নাই</translation>
 <translation id="6428982734197629783">প্ৰতিচ্ছবিখনৰ প্ৰক্ৰিয়াকৰণ কৰি থকা হৈছে</translation>
 <translation id="6429384232893414837">আপডে’টৰ আসোঁৱাহ</translation>
@@ -5553,7 +5552,6 @@
 <translation id="7457384018036134905">Chrome OSৰ ছেটিংসমূহত ভাষাসমূহ পৰিচালনা কৰক</translation>
 <translation id="7458168200501453431">Google Searchত ব্যৱহৃত একেটা বানান পৰীক্ষক ব্যৱহাৰ কৰে। আপুনি ব্ৰাউজাৰত টাইপ কৰা পাঠ Googleলৈ পঠিওৱা হয়।</translation>
 <translation id="7460045493116006516">আপুনি বৰ্তমান ইনষ্টল কৰি ৰখা থীম</translation>
-<translation id="7461729991508684543">{NUM_DAYS,plural, =1{<ph name="DOMAIN" />ৰ বাবে আপুনি নিজৰ ডেটাৰ বেক আপ লোৱা আৰু এই <ph name="DEVICE_TYPE" />টো আজি উভতাই দিয়াৰ আৱশ্যক।<ph name="LINK_BEGIN" />সবিশেষ চাওক<ph name="LINK_END" />}one{<ph name="DOMAIN" />ৰ বাবে আপুনি নিজৰ ডেটাৰ বেক আপ লোৱা আৰু {NUM_DAYS} দিনৰ ভিতৰত এই <ph name="DEVICE_TYPE" />টো ঘূৰাই দিয়াৰ আৱশ্যক।<ph name="LINK_BEGIN" />সবিশেষ চাওক<ph name="LINK_END" />}other{<ph name="DOMAIN" />ৰ বাবে আপুনি নিজৰ ডেটাৰ বেক আপ লোৱা আৰু {NUM_DAYS} দিনৰ ভিতৰত এই <ph name="DEVICE_TYPE" />টো ঘূৰাই দিয়াৰ আৱশ্যক।<ph name="LINK_BEGIN" />সবিশেষ চাওক<ph name="LINK_END" />}}</translation>
 <translation id="7461924472993315131">পিন</translation>
 <translation id="746216226901520237">আগলৈ আপোনাৰ ফ’নটোৱে আপোনাৰ <ph name="DEVICE_TYPE" /> আনলক কৰিব। আপুনি ছেটিংসমূহ-লৈ গৈ স্মাৰ্ট লক অফ কৰিব পাৰে।</translation>
 <translation id="7463006580194749499">নতুন লোক যোগ কৰক</translation>
@@ -6242,7 +6240,6 @@
 <translation id="8226619461731305576">শাৰী</translation>
 <translation id="8226628635270268143">আপোনাৰ প্ৰিয় ফট’ আৰু এলবামসমূহ বাছনি কৰক</translation>
 <translation id="8227119283605456246">ফাইল সংলগ্ন কৰক</translation>
-<translation id="822964464349305906"><ph name="TYPE_1" />, <ph name="TYPE_2" /></translation>
 <translation id="8230134520748321204"><ph name="ORIGIN" />ৰ বাবে পাছৱর্ড ছেভ কৰিবনে?</translation>
 <translation id="8234795456569844941">আমাৰ অভিযন্তাই এই সমস্যাটো সমাধান কৰাত সহায় কৰক। আপুনি প্ৰ’ফাইল সম্পর্কীয় আসোঁৱাহৰ বার্তাটো লাভ কৰাৰ ঠিক আগে আগে কি হৈছিল সেয়া আমাক জনাওক:</translation>
 <translation id="8236917170563564587">তাৰ পৰিৱৰ্তে এই টেবটো শ্বেয়াৰ কৰক</translation>
diff --git a/chrome/app/resources/generated_resources_az.xtb b/chrome/app/resources/generated_resources_az.xtb
index 4625e14..515fa8f9 100644
--- a/chrome/app/resources/generated_resources_az.xtb
+++ b/chrome/app/resources/generated_resources_az.xtb
@@ -4680,7 +4680,6 @@
 <translation id="642469772702851743">Bu cihaz (SN: <ph name="SERIAL_NUMBER" />) sahib tərəfindən kilidlənib.</translation>
 <translation id="6425556984042222041">Mətndən-nitqə sürəti</translation>
 <translation id="6426200009596957090">ChromeVox ayarlarını açın</translation>
-<translation id="642654727595919401"><ph name="DOMAIN" /> 1 həftə ərzində datanızı yedəkləmənizi və bu <ph name="DEVICE_TYPE" /> cihazını qaytarmanızı tələb edir.<ph name="LINK_BEGIN" />Detallara baxın<ph name="LINK_END" /></translation>
 <translation id="642729974267661262">Səsi oxutmaq icazəsi verilməyib</translation>
 <translation id="6428982734197629783">Şəkil emal edilir</translation>
 <translation id="6429384232893414837">Yeniləmə xətası</translation>
@@ -5556,7 +5555,6 @@
 <translation id="7457384018036134905">Chrome OS parametrlərində dilləri idarə edin</translation>
 <translation id="7458168200501453431">Google, axtarışda istifadə edilən orfoqrafiya yoxlanışının eynisindən istifadə edir. Brauzerdə yazdığınız mətn Google'a göndərilir.</translation>
 <translation id="7460045493116006516">Quraşdırdığınız hazırki tema</translation>
-<translation id="7461729991508684543">{NUM_DAYS,plural, =1{<ph name="DOMAIN" /> bugün datanızı yedəkləmənizi və bu <ph name="DEVICE_TYPE" /> cihazını qaytarmanızı tələb edir.<ph name="LINK_BEGIN" />Detallara baxın<ph name="LINK_END" />}other{<ph name="DOMAIN" /> {NUM_DAYS} gün ərzində datanızı yedəkləmənizi və bu <ph name="DEVICE_TYPE" /> cihazını qaytarmanızı tələb edir.<ph name="LINK_BEGIN" />Detallara baxın<ph name="LINK_END" />}}</translation>
 <translation id="7461924472993315131">Pin</translation>
 <translation id="746216226901520237">Növbəti dəfə telefon <ph name="DEVICE_TYPE" /> cihazını kiliddən çıxaracaq. Ayarlardan Smart Lock'u deaktiv edə bilərsiniz.</translation>
 <translation id="7463006580194749499">Şəxs əlavə edin</translation>
@@ -6246,7 +6244,6 @@
 <translation id="8226619461731305576">Növbə</translation>
 <translation id="8226628635270268143">Sevimli fotolarınızı və albomlarınızı seçin</translation>
 <translation id="8227119283605456246">Fayl qoşun</translation>
-<translation id="822964464349305906"><ph name="TYPE_1" />, <ph name="TYPE_2" /></translation>
 <translation id="8230134520748321204"><ph name="ORIGIN" /> üçün parol yadda saxlanılsın?</translation>
 <translation id="8234795456569844941">Bu problemin həll edilməsində mühəndislərimizə yardım edin. Profil xəta mesajını əldə etmədən öncə nə baş verdiyini bizə deyin:</translation>
 <translation id="8236917170563564587">Əvəzinə bu tabı paylaşın</translation>
diff --git a/chrome/app/resources/generated_resources_be.xtb b/chrome/app/resources/generated_resources_be.xtb
index 01c2177..fac36e53 100644
--- a/chrome/app/resources/generated_resources_be.xtb
+++ b/chrome/app/resources/generated_resources_be.xtb
@@ -4692,7 +4692,6 @@
 <translation id="642469772702851743">Гэта прылада (серыйны нумар: <ph name="SERIAL_NUMBER" />) заблакіравана ўладальнікам.</translation>
 <translation id="6425556984042222041">Хуткасць сінтэзу маўлення</translation>
 <translation id="6426200009596957090">Адкрыць налады ChromeVox</translation>
-<translation id="642654727595919401">Вы выкарыстоўваеце дамен "<ph name="DOMAIN" />", які патрабуе ад вас стварыць рэзервовую копію сваіх даных і вярнуць прыладу <ph name="DEVICE_TYPE" /> на працягу 1 тыдня. <ph name="LINK_BEGIN" />Больш падрабязна<ph name="LINK_END" /></translation>
 <translation id="642729974267661262">Не дазволена прайграваць гук</translation>
 <translation id="6428982734197629783">Ідзе апрацоўка відарыса</translation>
 <translation id="6429384232893414837">Памылка абнаўлення</translation>
@@ -5568,7 +5567,6 @@
 <translation id="7457384018036134905">Кіраваць моўнымі параметрамі ў наладах Chrome OS</translation>
 <translation id="7458168200501453431">Выкарыстоўвае тую ж праверку правапісу, што ў Google Пошуку. Уведзены ў браўзер тэкст адпраўляецца ў Google.</translation>
 <translation id="7460045493116006516">Бягучая тэма, якую вы ўсталявалі</translation>
-<translation id="7461729991508684543">{NUM_DAYS,plural, =1{Вы выкарыстоўваеце дамен "<ph name="DOMAIN" />", які патрабуе ад вас стварыць рэзервовую копію сваіх даных і вярнуць прыладу <ph name="DEVICE_TYPE" /> сёння. <ph name="LINK_BEGIN" />Больш падрабязна<ph name="LINK_END" />}one{Вы выкарыстоўваеце дамен "<ph name="DOMAIN" />", які патрабуе ад вас стварыць рэзервовую копію сваіх даных і вярнуць прыладу <ph name="DEVICE_TYPE" /> на працягу {NUM_DAYS} дня. <ph name="LINK_BEGIN" />Больш падрабязна<ph name="LINK_END" />}few{Вы выкарыстоўваеце дамен "<ph name="DOMAIN" />", які патрабуе ад вас стварыць рэзервовую копію сваіх даных і вярнуць прыладу <ph name="DEVICE_TYPE" /> на працягу {NUM_DAYS} дзён. <ph name="LINK_BEGIN" />Больш падрабязна<ph name="LINK_END" />}many{Вы выкарыстоўваеце дамен "<ph name="DOMAIN" />", які патрабуе ад вас стварыць рэзервовую копію сваіх даных і вярнуць прыладу <ph name="DEVICE_TYPE" /> на працягу {NUM_DAYS} дзён. <ph name="LINK_BEGIN" />Больш падрабязна<ph name="LINK_END" />}other{Вы выкарыстоўваеце дамен "<ph name="DOMAIN" />", які патрабуе ад вас стварыць рэзервовую копію сваіх даных і вярнуць прыладу <ph name="DEVICE_TYPE" /> на працягу {NUM_DAYS} дня. <ph name="LINK_BEGIN" />Больш падрабязна<ph name="LINK_END" />}}</translation>
 <translation id="7461924472993315131">PIN-код</translation>
 <translation id="746216226901520237">Наступны раз прылада <ph name="DEVICE_TYPE" /> будзе разблакіравана з дапамогай вашага тэлефона. Вы можаце выключыць Smart Lock у Наладах.</translation>
 <translation id="7463006580194749499">Дадаць карыстальніка</translation>
@@ -6259,7 +6257,6 @@
 <translation id="8226619461731305576">Чарга</translation>
 <translation id="8226628635270268143">Выберыце любімыя фота і альбомы</translation>
 <translation id="8227119283605456246">Далучыць файл</translation>
-<translation id="822964464349305906"><ph name="TYPE_1" />, <ph name="TYPE_2" /></translation>
 <translation id="8230134520748321204">Захаваць пароль для <ph name="ORIGIN" />?</translation>
 <translation id="8234795456569844941">Дапамажыце нашым інжынерам вырашыць праблему. Апішыце, што адбывалася перад тым, як вы ўбачылі паведамленне пра памылку ў профілі:</translation>
 <translation id="8236917170563564587">Абагуліць гэту ўкладку</translation>
diff --git a/chrome/app/resources/generated_resources_bg.xtb b/chrome/app/resources/generated_resources_bg.xtb
index 3924fbc..8ccc538 100644
--- a/chrome/app/resources/generated_resources_bg.xtb
+++ b/chrome/app/resources/generated_resources_bg.xtb
@@ -4689,7 +4689,6 @@
 <translation id="642469772702851743">Това устройство (сериен № <ph name="SERIAL_NUMBER" />) бе заключено от собственика.</translation>
 <translation id="6425556984042222041">Скорост на синтезирания говор</translation>
 <translation id="6426200009596957090">Отваряне на настройките на ChromeVox</translation>
-<translation id="642654727595919401"><ph name="DOMAIN" /> изисква да създадете резервно копие на данните си и да върнете това устройство <ph name="DEVICE_TYPE" /> в рамките на 1 седмица. <ph name="LINK_BEGIN" />Вижте подробности<ph name="LINK_END" /></translation>
 <translation id="642729974267661262">Сайтове без разрешение за възпроизвеждане на звук</translation>
 <translation id="6428982734197629783">Изображението се обработва</translation>
 <translation id="6429384232893414837">Грешка при актуализирането</translation>
@@ -5565,7 +5564,6 @@
 <translation id="7457384018036134905">Управление на езиците в настройките на Chrome OS</translation>
 <translation id="7458168200501453431">Използва същата система за проверка на правописа като в Google Търсене. Текстът, който въвеждате в браузъра, се изпраща до Google.</translation>
 <translation id="7460045493116006516">Текущата тема, която сте инсталирали</translation>
-<translation id="7461729991508684543">{NUM_DAYS,plural, =1{<ph name="DOMAIN" /> изисква да създадете резервно копие на данните си и да върнете това устройство <ph name="DEVICE_TYPE" /> днес. <ph name="LINK_BEGIN" />Вижте подробности<ph name="LINK_END" />}other{<ph name="DOMAIN" /> изисква да създадете резервно копие на данните си и да върнете това устройство <ph name="DEVICE_TYPE" /> в рамките на {NUM_DAYS} дни. <ph name="LINK_BEGIN" />Вижте подробности<ph name="LINK_END" />}}</translation>
 <translation id="7461924472993315131">Фиксиране</translation>
 <translation id="746216226901520237">Следващия път телефонът ви ще отключи устройството ви <ph name="DEVICE_TYPE" />. Можете да изключите Smart Lock от настройките.</translation>
 <translation id="7463006580194749499">Добавяне на човек</translation>
@@ -6257,7 +6255,6 @@
 <translation id="8226619461731305576">Опашка</translation>
 <translation id="8226628635270268143">Изберете любимите си снимки и албуми</translation>
 <translation id="8227119283605456246">Прикачване на файл</translation>
-<translation id="822964464349305906"><ph name="TYPE_1" /> и <ph name="TYPE_2" /></translation>
 <translation id="8230134520748321204">Да се запази ли паролата за <ph name="ORIGIN" />?</translation>
 <translation id="8234795456569844941">Моля, помогнете на инженерите ни да отстранят този проблем. Кажете ни какво се случи, точно преди да получите съобщението за грешка в потребителския профил:</translation>
 <translation id="8236917170563564587">Споделяне на този раздел</translation>
diff --git a/chrome/app/resources/generated_resources_bn.xtb b/chrome/app/resources/generated_resources_bn.xtb
index d895f856..d8e44fa 100644
--- a/chrome/app/resources/generated_resources_bn.xtb
+++ b/chrome/app/resources/generated_resources_bn.xtb
@@ -4690,7 +4690,6 @@
 <translation id="642469772702851743">এই ডিভাইসের (SN: <ph name="SERIAL_NUMBER" />) মালিক এটি লক করেছেন।</translation>
 <translation id="6425556984042222041">টেক্সট-টু-স্পিচ রেট</translation>
 <translation id="6426200009596957090">ChromeVox এর সেটিংস খুলুন</translation>
-<translation id="642654727595919401"><ph name="DOMAIN" /> আপনাকে নিজের ডেটার ব্যাকআপ নিয়ে ১ সপ্তাহের মধ্যে এই <ph name="DEVICE_TYPE" /> ফেরত দিতে বলছে।<ph name="LINK_BEGIN" />বিস্তারিত দেখুন<ph name="LINK_END" /></translation>
 <translation id="642729974267661262">সাউন্ড চালানোর অনুমতি দেওয়া হয়নি</translation>
 <translation id="6428982734197629783">ছবি প্রসেস করা হচ্ছে</translation>
 <translation id="6429384232893414837">আপডেট করতে সমস্যা হয়েছে</translation>
@@ -5566,7 +5565,6 @@
 <translation id="7457384018036134905">Chrome OS সেটিংসে ভাষা ম্যানেজ করুন</translation>
 <translation id="7458168200501453431">Google সার্চ-এ যে বানান পরীক্ষা করার টুল ব্যবহার করা হয় সেটিই ব্যবহার করে। আপনি ব্রাউজারে যে টেক্সট লেখেন, সেটি Google-এ পাঠানো হয়।</translation>
 <translation id="7460045493116006516">বর্তমানে আপনার ইনস্টল করা থিম</translation>
-<translation id="7461729991508684543">{NUM_DAYS,plural, =1{<ph name="DOMAIN" /> আপনাকে আজই ডেটার ব্যাকআপ নিতে ও এই <ph name="DEVICE_TYPE" /> ফেরত দিতে বলছে।<ph name="LINK_BEGIN" />বিস্তারিত দেখুন<ph name="LINK_END" />}one{<ph name="DOMAIN" /> আপনাকে {NUM_DAYS} দিনের মধ্যে ডেটার ব্যাকআপ নিতে ও এই <ph name="DEVICE_TYPE" /> ফেরত দিতে বলছে।<ph name="LINK_BEGIN" />বিস্তারিত দেখুন<ph name="LINK_END" />}other{<ph name="DOMAIN" /> আপনাকে {NUM_DAYS} দিনের মধ্যে ডেটার ব্যাকআপ নিতে ও এই <ph name="DEVICE_TYPE" /> ফেরত দিতে বলছে।<ph name="LINK_BEGIN" />বিস্তারিত দেখুন<ph name="LINK_END" />}}</translation>
 <translation id="7461924472993315131">পিন</translation>
 <translation id="746216226901520237">পরের বার, আপনার ফোন <ph name="DEVICE_TYPE" /> আনলক করবে। সেটিংসে গিয়ে Smart Lock বন্ধ করতে পারবেন।</translation>
 <translation id="7463006580194749499">একজন ব্যক্তিকে যোগ করুন</translation>
@@ -6256,7 +6254,6 @@
 <translation id="8226619461731305576">অপেক্ষমাণ</translation>
 <translation id="8226628635270268143">আপনার পছন্দের ফটো ও অ্যালবাম বাছুন</translation>
 <translation id="8227119283605456246">ফাইল সংযুক্ত করুন</translation>
-<translation id="822964464349305906"><ph name="TYPE_1" />, <ph name="TYPE_2" /></translation>
 <translation id="8230134520748321204"><ph name="ORIGIN" />-এর জন্য পাসওয়ার্ড সেভ করবেন?</translation>
 <translation id="8234795456569844941">এই সমস্যাটির সমাধান করতে আমাদের ইঞ্জিনিয়ারদের সাহায্য করুন। আমাদের জানান, ঠিক কি হওয়ার পরে এই প্রোফাইল ত্রুটির মেসেজটি দেখেছিলেন:</translation>
 <translation id="8236917170563564587">পরিবর্তে এই ট্যাব শেয়ার করুন</translation>
diff --git a/chrome/app/resources/generated_resources_bs.xtb b/chrome/app/resources/generated_resources_bs.xtb
index 573a76d..b34f10f9 100644
--- a/chrome/app/resources/generated_resources_bs.xtb
+++ b/chrome/app/resources/generated_resources_bs.xtb
@@ -4691,7 +4691,6 @@
 <translation id="642469772702851743">Vlasnik je zaključao ovaj uređaj (SN: <ph name="SERIAL_NUMBER" />).</translation>
 <translation id="6425556984042222041">Brzina pretvaranja teksta u govor</translation>
 <translation id="6426200009596957090">Otvori postavke za ChromeVox</translation>
-<translation id="642654727595919401">Domena <ph name="DOMAIN" /> zahtijeva da napravite sigurnosnu kopiju podataka i vratite ovaj uređaj <ph name="DEVICE_TYPE" /> u roku od 1 sedmice.<ph name="LINK_BEGIN" />Pogledajte detalje<ph name="LINK_END" /></translation>
 <translation id="642729974267661262">Nije dozvoljeno reproduciranje zvuka</translation>
 <translation id="6428982734197629783">Obrađivanje slike</translation>
 <translation id="6429384232893414837">Pogreška pri ažuriranju</translation>
@@ -5567,7 +5566,6 @@
 <translation id="7457384018036134905">Upravljajte jezicima u postavkama Chrome OS-a</translation>
 <translation id="7458168200501453431">Koristi isti alat za provjeru pravopisa koji se koristi u Google Pretraživanju. Tekst koji pišete u pregledniku šalje se Googleu.</translation>
 <translation id="7460045493116006516">Trenutna tema koju ste instalirali</translation>
-<translation id="7461729991508684543">{NUM_DAYS,plural, =1{Domena <ph name="DOMAIN" /> zahtijeva da napravite sigurnosnu kopiju podataka i vratite ovaj uređaj <ph name="DEVICE_TYPE" /> danas. <ph name="LINK_BEGIN" />Pogledajte detalje<ph name="LINK_END" />}one{Domena <ph name="DOMAIN" /> zahtijeva da napravite sigurnosnu kopiju podataka i vratite ovaj uređaj <ph name="DEVICE_TYPE" /> u roku od {NUM_DAYS} dan. <ph name="LINK_BEGIN" />Pogledajte detalje<ph name="LINK_END" />}few{Domena <ph name="DOMAIN" /> zahtijeva da napravite sigurnosnu kopiju podataka i vratite ovaj uređaj <ph name="DEVICE_TYPE" /> u roku od {NUM_DAYS} dana. <ph name="LINK_BEGIN" />Pogledajte detalje<ph name="LINK_END" />}other{Domena <ph name="DOMAIN" /> zahtijeva da napravite sigurnosnu kopiju podataka i vratite ovaj uređaj <ph name="DEVICE_TYPE" /> u roku od {NUM_DAYS} dana. <ph name="LINK_BEGIN" />Pogledajte detalje<ph name="LINK_END" />}}</translation>
 <translation id="7461924472993315131">PIN</translation>
 <translation id="746216226901520237">Sljedeći put će vaš telefon otključati vaš uređaj <ph name="DEVICE_TYPE" />. Pametno zaključavanje možete isključiti u Postavkama.</translation>
 <translation id="7463006580194749499">Dodaj osobu</translation>
@@ -6259,7 +6257,6 @@
 <translation id="8226619461731305576">Red čekanja</translation>
 <translation id="8226628635270268143">Odaberite omiljene fotografije i albume</translation>
 <translation id="8227119283605456246">Priloži fajl</translation>
-<translation id="822964464349305906"><ph name="TYPE_1" />, <ph name="TYPE_2" /></translation>
 <translation id="8230134520748321204">Sačuvati lozinku za <ph name="ORIGIN" />?</translation>
 <translation id="8234795456569844941">Pomozite našim inženjerima da riješe ovaj problem. Recite nam šta se dogodilo prije nego što ste dobili poruku o grešci na profilu:</translation>
 <translation id="8236917170563564587">Dijeli ovu karticu</translation>
diff --git a/chrome/app/resources/generated_resources_ca.xtb b/chrome/app/resources/generated_resources_ca.xtb
index 30f901cc..0db8b82 100644
--- a/chrome/app/resources/generated_resources_ca.xtb
+++ b/chrome/app/resources/generated_resources_ca.xtb
@@ -4689,7 +4689,6 @@
 <translation id="642469772702851743">El propietari ha bloquejat aquest dispositiu (NS: <ph name="SERIAL_NUMBER" />).</translation>
 <translation id="6425556984042222041">Velocitat de text a parla</translation>
 <translation id="6426200009596957090">Obre la configuració de ChromeVox</translation>
-<translation id="642654727595919401"><ph name="DOMAIN" /> requereix que creïs una còpia de seguretat de les teves dades i que tornis aquest dispositiu <ph name="DEVICE_TYPE" /> en un termini d'1 setmana.<ph name="LINK_BEGIN" />Mostra els detalls<ph name="LINK_END" /></translation>
 <translation id="642729974267661262">Sense permís per reproduir so</translation>
 <translation id="6428982734197629783">S'està processant la imatge</translation>
 <translation id="6429384232893414837">Error d'actualització</translation>
@@ -5565,7 +5564,6 @@
 <translation id="7457384018036134905">Gestiona els idiomes a la configuració de Chrome OS</translation>
 <translation id="7458168200501453431">Fa servir el mateix corrector ortogràfic que s'utilitza a la Cerca de Google. El text que introdueixes al navegador s'envia a Google.</translation>
 <translation id="7460045493116006516">Tema instal·lat actualment</translation>
-<translation id="7461729991508684543">{NUM_DAYS,plural, =1{<ph name="DOMAIN" /> requereix que creïs una còpia de seguretat de les teves dades i que tornis aquest dispositiu <ph name="DEVICE_TYPE" /> avui.<ph name="LINK_BEGIN" />Mostra els detalls<ph name="LINK_END" />}other{<ph name="DOMAIN" /> requereix que creïs una còpia de seguretat de les teves dades i que tornis aquest dispositiu <ph name="DEVICE_TYPE" /> en un termini de {NUM_DAYS} dies.<ph name="LINK_BEGIN" />Mostra els detalls<ph name="LINK_END" />}}</translation>
 <translation id="7461924472993315131">Fixa</translation>
 <translation id="746216226901520237">La propera vegada, <ph name="DEVICE_TYPE" /> es desbloquejarà amb el telèfon. Pots desactivar Smart Lock a Configuració.</translation>
 <translation id="7463006580194749499">Afegeix una persona</translation>
@@ -6256,7 +6254,6 @@
 <translation id="8226619461731305576">Cua</translation>
 <translation id="8226628635270268143">Tria les teves fotos i els teus àlbums preferits</translation>
 <translation id="8227119283605456246">Adjunta un fitxer</translation>
-<translation id="822964464349305906"><ph name="TYPE_1" />, <ph name="TYPE_2" /></translation>
 <translation id="8230134520748321204">Vols desar la contrasenya per a <ph name="ORIGIN" />?</translation>
 <translation id="8234795456569844941">Ajuda els nostres enginyers a solucionar aquest problema. Explica'ns què ha passat just abans de rebre el missatge d'error del perfil:</translation>
 <translation id="8236917170563564587">Comparteix aquesta pestanya</translation>
diff --git a/chrome/app/resources/generated_resources_cs.xtb b/chrome/app/resources/generated_resources_cs.xtb
index 17fc917..f794ecc 100644
--- a/chrome/app/resources/generated_resources_cs.xtb
+++ b/chrome/app/resources/generated_resources_cs.xtb
@@ -4689,7 +4689,6 @@
 <translation id="642469772702851743">Toto zařízení (sériové číslo: <ph name="SERIAL_NUMBER" />) vlastník uzamkl.</translation>
 <translation id="6425556984042222041">Rychlost převodu textu na řeč</translation>
 <translation id="6426200009596957090">Otevřít nastavení funkce ChromeVox</translation>
-<translation id="642654727595919401">Organizace <ph name="DOMAIN" /> vyžaduje, abyste si zálohovali data a do týdne toto zařízení <ph name="DEVICE_TYPE" /> vrátili.<ph name="LINK_BEGIN" />Zobrazit podrobnosti<ph name="LINK_END" /></translation>
 <translation id="642729974267661262">Zákaz přehrávat zvuk</translation>
 <translation id="6428982734197629783">Zpracování obrázku</translation>
 <translation id="6429384232893414837">Chyba aktualizace</translation>
@@ -5565,7 +5564,6 @@
 <translation id="7457384018036134905">Spravovat jazyky v nastavení Chrome OS</translation>
 <translation id="7458168200501453431">Používá stejnou technologii kontroly pravopisu jako Vyhledávání Google. Text, který v prohlížeči zadáte, se odešle do Googlu</translation>
 <translation id="7460045493116006516">Aktuálně nainstalovaný motiv</translation>
-<translation id="7461729991508684543">{NUM_DAYS,plural, =1{Organizace <ph name="DOMAIN" /> vyžaduje, abyste si zálohovali data a ještě dnes toto zařízení <ph name="DEVICE_TYPE" /> vrátili.<ph name="LINK_BEGIN" />Zobrazit podrobnosti<ph name="LINK_END" />}few{Organizace <ph name="DOMAIN" /> vyžaduje, abyste si zálohovali data a do {NUM_DAYS} dní toto zařízení <ph name="DEVICE_TYPE" /> vrátili.<ph name="LINK_BEGIN" />Zobrazit podrobnosti<ph name="LINK_END" />}many{Organizace <ph name="DOMAIN" /> vyžaduje, abyste si zálohovali data a do {NUM_DAYS} dne toto zařízení <ph name="DEVICE_TYPE" /> vrátili.<ph name="LINK_BEGIN" />Zobrazit podrobnosti<ph name="LINK_END" />}other{Organizace <ph name="DOMAIN" /> vyžaduje, abyste si zálohovali data a do {NUM_DAYS} dní toto zařízení <ph name="DEVICE_TYPE" /> vrátili.<ph name="LINK_BEGIN" />Zobrazit podrobnosti<ph name="LINK_END" />}}</translation>
 <translation id="7461924472993315131">Připnout</translation>
 <translation id="746216226901520237">Příště váš telefon zařízení <ph name="DEVICE_TYPE" /> odemkne. Funkci Smart Lock můžete vypnout v Nastavení.</translation>
 <translation id="7463006580194749499">Přidat osobu</translation>
@@ -6256,7 +6254,6 @@
 <translation id="8226619461731305576">Fronta</translation>
 <translation id="8226628635270268143">Vyberte své oblíbené fotky a alba</translation>
 <translation id="8227119283605456246">Přiložit soubor</translation>
-<translation id="822964464349305906"><ph name="TYPE_1" />, <ph name="TYPE_2" /></translation>
 <translation id="8230134520748321204">Uložit heslo pro <ph name="ORIGIN" />?</translation>
 <translation id="8234795456569844941">Pomozte našim technikům opravit tento problém. Sdělte nám, co se stalo těsně před zobrazením zprávy o chybě profilu:</translation>
 <translation id="8236917170563564587">Sdílet namísto toho tuto kartu</translation>
diff --git a/chrome/app/resources/generated_resources_da.xtb b/chrome/app/resources/generated_resources_da.xtb
index 08657562..7a8aaeda 100644
--- a/chrome/app/resources/generated_resources_da.xtb
+++ b/chrome/app/resources/generated_resources_da.xtb
@@ -4691,7 +4691,6 @@
 <translation id="642469772702851743">Denne enhed (serienummer: <ph name="SERIAL_NUMBER" />) blev låst af ejeren.</translation>
 <translation id="6425556984042222041">Hastighed ved oplæsning</translation>
 <translation id="6426200009596957090">Åbn indstillinger for ChromeVox</translation>
-<translation id="642654727595919401"><ph name="DOMAIN" /> kræver, at du sikkerhedskopierer dine data og returnerer denne <ph name="DEVICE_TYPE" /> inden for 1 uge.<ph name="LINK_BEGIN" />Se oplysninger<ph name="LINK_END" /></translation>
 <translation id="642729974267661262">Har ikke tilladelse til at afspille lyd</translation>
 <translation id="6428982734197629783">Behandler billedet</translation>
 <translation id="6429384232893414837">Opdateringsfejl</translation>
@@ -5567,7 +5566,6 @@
 <translation id="7457384018036134905">Administrer sprog i indstillingerne for Chrome OS</translation>
 <translation id="7458168200501453431">Bruger samme stavekontrol som Google-søgning. Tekst, som du angiver i browseren, sendes til Google.</translation>
 <translation id="7460045493116006516">Det aktuelle tema, du har installeret</translation>
-<translation id="7461729991508684543">{NUM_DAYS,plural, =1{<ph name="DOMAIN" /> kræver, at du sikkerhedskopierer dine data og returnerer denne <ph name="DEVICE_TYPE" /> i dag.<ph name="LINK_BEGIN" />Se oplysninger<ph name="LINK_END" />}one{<ph name="DOMAIN" /> kræver, at du sikkerhedskopierer dine data og returnerer denne <ph name="DEVICE_TYPE" /> inden for {NUM_DAYS} dag.<ph name="LINK_BEGIN" />Se oplysninger<ph name="LINK_END" />}other{<ph name="DOMAIN" /> kræver, at du sikkerhedskopierer dine data og returnerer denne <ph name="DEVICE_TYPE" /> inden for {NUM_DAYS} dage.<ph name="LINK_BEGIN" />Se oplysninger<ph name="LINK_END" />}}</translation>
 <translation id="7461924472993315131">Fastgør</translation>
 <translation id="746216226901520237">Næste gang låser din telefon din <ph name="DEVICE_TYPE" /> op. Du kan deaktivere Smart Lock i Indstillinger.</translation>
 <translation id="7463006580194749499">Tilføj person</translation>
@@ -6258,7 +6256,6 @@
 <translation id="8226619461731305576">Kø</translation>
 <translation id="8226628635270268143">Vælg dine foretrukne billeder og album</translation>
 <translation id="8227119283605456246">Vedhæft fil</translation>
-<translation id="822964464349305906"><ph name="TYPE_1" />, <ph name="TYPE_2" /></translation>
 <translation id="8230134520748321204">Vil du gemme adgangskoden til <ph name="ORIGIN" />?</translation>
 <translation id="8234795456569844941">Hjælp vores softwareudviklere med at løse dette problem. Fortæl os, hvad der skete, lige før du fik fejlmeddelelsen for profilen:</translation>
 <translation id="8236917170563564587">Del denne fane i stedet</translation>
diff --git a/chrome/app/resources/generated_resources_de.xtb b/chrome/app/resources/generated_resources_de.xtb
index ce84aa3d..0d90df6 100644
--- a/chrome/app/resources/generated_resources_de.xtb
+++ b/chrome/app/resources/generated_resources_de.xtb
@@ -4670,7 +4670,6 @@
 <translation id="642469772702851743">Dieses Gerät (SN: <ph name="SERIAL_NUMBER" />) wurde vom Eigentümer gesperrt.</translation>
 <translation id="6425556984042222041">Tempo der Sprachausgabe</translation>
 <translation id="6426200009596957090">ChromeVox-Einstellungen öffnen</translation>
-<translation id="642654727595919401">Gemäß <ph name="DOMAIN" /> ist es notwendig, ein Daten-Backup zu erstellen und dieses <ph name="DEVICE_TYPE" /> innerhalb von 1 Woche zurückzugeben. <ph name="LINK_BEGIN" />Weitere Informationen<ph name="LINK_END" /></translation>
 <translation id="642729974267661262">Dürfen keinen Ton abspielen</translation>
 <translation id="6428982734197629783">Bild wird verarbeitet</translation>
 <translation id="6429384232893414837">Fehler beim Aktualisieren</translation>
@@ -5544,7 +5543,6 @@
 <translation id="7457384018036134905">Sprachen in den Chrome OS-Einstellungen verwalten</translation>
 <translation id="7458168200501453431">Verwendet dieselbe Rechtschreibprüfung wie die Google Suche. Der in den Browser eingegebene Text wird an Google gesendet.</translation>
 <translation id="7460045493116006516">Derzeit installiertes Design</translation>
-<translation id="7461729991508684543">{NUM_DAYS,plural, =1{Gemäß <ph name="DOMAIN" /> ist es notwendig, ein Daten-Backup zu erstellen und dieses <ph name="DEVICE_TYPE" /> heute zurückzugeben. <ph name="LINK_BEGIN" />Weitere Informationen<ph name="LINK_END" />}other{Gemäß <ph name="DOMAIN" /> ist es notwendig, ein Daten-Backup zu erstellen und dieses <ph name="DEVICE_TYPE" /> innerhalb von {NUM_DAYS} Tagen zurückzugeben. <ph name="LINK_BEGIN" />Weitere Informationen<ph name="LINK_END" />}}</translation>
 <translation id="7461924472993315131">Anpinnen</translation>
 <translation id="746216226901520237">Das nächste Mal wird Ihr <ph name="DEVICE_TYPE" /> von Ihrem Smartphone entsperrt. Sie können Smart Lock in den Einstellungen deaktivieren.</translation>
 <translation id="7463006580194749499">Person hinzufügen</translation>
@@ -6231,7 +6229,6 @@
 <translation id="8226619461731305576">Warteschlange</translation>
 <translation id="8226628635270268143">Hier können Sie Ihre bevorzugten Fotos und Alben auswählen</translation>
 <translation id="8227119283605456246">Datei anhängen</translation>
-<translation id="822964464349305906"><ph name="TYPE_1" />, <ph name="TYPE_2" /></translation>
 <translation id="8230134520748321204">Passwort für <ph name="ORIGIN" /> speichern?</translation>
 <translation id="8234795456569844941">Bitte helfen Sie unseren Entwicklern bei der Lösung dieses Problems. Beschreiben Sie genau, was passiert ist, bevor Sie die Profilfehlermeldung erhalten haben:</translation>
 <translation id="8236917170563564587">Stattdessen diesen Tab teilen</translation>
diff --git a/chrome/app/resources/generated_resources_el.xtb b/chrome/app/resources/generated_resources_el.xtb
index c844aff9..ced7352 100644
--- a/chrome/app/resources/generated_resources_el.xtb
+++ b/chrome/app/resources/generated_resources_el.xtb
@@ -4690,7 +4690,6 @@
 <translation id="642469772702851743">Αυτή η συσκευή (σειριακός αριθμός: <ph name="SERIAL_NUMBER" />) κλειδώθηκε από τον κάτοχο.</translation>
 <translation id="6425556984042222041">Ρυθμός μετατροπής κειμένου σε ομιλία</translation>
 <translation id="6426200009596957090">Άνοιγμα ρυθμίσεων ChromeVox</translation>
-<translation id="642654727595919401">Ο τομέας <ph name="DOMAIN" /> απαιτεί τη δημιουργία αντιγράφων ασφαλείας για τα δεδομένα σας και την επιστροφή αυτής της συσκευής (<ph name="DEVICE_TYPE" />) εντός 1 εβδομάδας.<ph name="LINK_BEGIN" />Δείτε λεπτομέρειες.<ph name="LINK_END" /></translation>
 <translation id="642729974267661262">Δεν επιτρέπεται να αναπαράγουν ήχο</translation>
 <translation id="6428982734197629783">Επεξεργασία εικόνας</translation>
 <translation id="6429384232893414837">Σφάλμα ενημέρωσης</translation>
@@ -5566,7 +5565,6 @@
 <translation id="7457384018036134905">Διαχείριση γλωσσών στις ρυθμίσεις του Chrome OS</translation>
 <translation id="7458168200501453431">Χρησιμοποιεί το ίδιο εργαλείο ορθογραφικού ελέγχου που χρησιμοποιείται στην Αναζήτηση Google. Το κείμενο που πληκτρολογείτε στο πρόγραμμα περιήγησης αποστέλλεται στην Google.</translation>
 <translation id="7460045493116006516">Τρέχον θέμα που έχετε εγκαταστήσει</translation>
-<translation id="7461729991508684543">{NUM_DAYS,plural, =1{Ο τομέας <ph name="DOMAIN" /> απαιτεί τη δημιουργία αντιγράφων ασφαλείας για τα δεδομένα σας και την επιστροφή αυτής της συσκευής (<ph name="DEVICE_TYPE" />) σήμερα.<ph name="LINK_BEGIN" />Δείτε λεπτομέρειες.<ph name="LINK_END" />}other{Ο τομέας <ph name="DOMAIN" /> απαιτεί τη δημιουργία αντιγράφων ασφαλείας για τα δεδομένα σας και την επιστροφή αυτής της συσκευής (<ph name="DEVICE_TYPE" />) εντός {NUM_DAYS} ημερών.<ph name="LINK_BEGIN" />Δείτε λεπτομέρειες.<ph name="LINK_END" />}}</translation>
 <translation id="7461924472993315131">Καρφίτσωμα</translation>
 <translation id="746216226901520237">Την επόμενη φορά, το τηλέφωνό σας θα ξεκλειδώσει τη συσκευή <ph name="DEVICE_TYPE" />. Μπορείτε να απενεργοποιήσετε το Smart Lock στις Ρυθμίσεις.</translation>
 <translation id="7463006580194749499">Προσθήκη χρήστη</translation>
@@ -6258,7 +6256,6 @@
 <translation id="8226619461731305576">Ουρά</translation>
 <translation id="8226628635270268143">Επιλέξτε τις αγαπημένες σας φωτογραφίες και λευκώματα.</translation>
 <translation id="8227119283605456246">Επισύναψη αρχείου</translation>
-<translation id="822964464349305906"><ph name="TYPE_1" />, <ph name="TYPE_2" /></translation>
 <translation id="8230134520748321204">Αποθήκευση κωδικού πρόσβασης για <ph name="ORIGIN" />;</translation>
 <translation id="8234795456569844941">Βοηθήστε τους μηχανικούς μας να επιδιορθώσουν αυτό το πρόβλημα. Πείτε μας τι συνέβη ακριβώς πριν από τη λήψη του μηνύματος σφάλματος προφίλ:</translation>
 <translation id="8236917170563564587">Εναλλακτικά, μοιραστείτε αυτήν την καρτέλα</translation>
diff --git a/chrome/app/resources/generated_resources_en-GB.xtb b/chrome/app/resources/generated_resources_en-GB.xtb
index a8e54d5b..dc74d00 100644
--- a/chrome/app/resources/generated_resources_en-GB.xtb
+++ b/chrome/app/resources/generated_resources_en-GB.xtb
@@ -4694,7 +4694,6 @@
 <translation id="642469772702851743">This device (SN: <ph name="SERIAL_NUMBER" />) was locked by the owner.</translation>
 <translation id="6425556984042222041">Text-to-speech rate</translation>
 <translation id="6426200009596957090">Open ChromeVox settings</translation>
-<translation id="642654727595919401"><ph name="DOMAIN" /> requires you to back up your data and return this <ph name="DEVICE_TYPE" /> within 1 week.<ph name="LINK_BEGIN" />See details<ph name="LINK_END" /></translation>
 <translation id="642729974267661262">Not allowed to play sound</translation>
 <translation id="6428982734197629783">Processing image</translation>
 <translation id="6429384232893414837">Update error</translation>
@@ -5571,7 +5570,6 @@
 <translation id="7457384018036134905">Manage languages in Chrome OS settings</translation>
 <translation id="7458168200501453431">Uses the same spell checker that’s used in Google search. Text that you type in the browser is sent to Google.</translation>
 <translation id="7460045493116006516">Current theme that you have installed</translation>
-<translation id="7461729991508684543">{NUM_DAYS,plural, =1{<ph name="DOMAIN" /> requires you to back up your data and return this <ph name="DEVICE_TYPE" /> today.<ph name="LINK_BEGIN" />See details<ph name="LINK_END" />}other{<ph name="DOMAIN" /> requires you to back up your data and return this <ph name="DEVICE_TYPE" /> within {NUM_DAYS} days.<ph name="LINK_BEGIN" />See details<ph name="LINK_END" />}}</translation>
 <translation id="7461924472993315131">Pin</translation>
 <translation id="746216226901520237">Next time, your phone will unlock your <ph name="DEVICE_TYPE" />. You can turn off Smart Lock in Settings.</translation>
 <translation id="7463006580194749499">Add person</translation>
@@ -6264,7 +6262,6 @@
 <translation id="8226619461731305576">Queue</translation>
 <translation id="8226628635270268143">Choose your favourite photos and albums</translation>
 <translation id="8227119283605456246">Attach file</translation>
-<translation id="822964464349305906"><ph name="TYPE_1" />, <ph name="TYPE_2" /></translation>
 <translation id="8230134520748321204">Save password for <ph name="ORIGIN" />?</translation>
 <translation id="8234795456569844941">Please help our engineers fix this problem. Tell us what happened right before you got the profile error message:</translation>
 <translation id="8236917170563564587">Share this tab instead</translation>
diff --git a/chrome/app/resources/generated_resources_es-419.xtb b/chrome/app/resources/generated_resources_es-419.xtb
index c193303..4e218e4 100644
--- a/chrome/app/resources/generated_resources_es-419.xtb
+++ b/chrome/app/resources/generated_resources_es-419.xtb
@@ -4671,7 +4671,6 @@
 <translation id="642469772702851743">El propietario bloqueó este dispositivo (NS: <ph name="SERIAL_NUMBER" />).</translation>
 <translation id="6425556984042222041">Velocidad para texto a voz</translation>
 <translation id="6426200009596957090">Abrir configuración de ChromeVox</translation>
-<translation id="642654727595919401"><ph name="DOMAIN" /> requiere que hagas una copia de seguridad de tus datos y devuelvas este dispositivo <ph name="DEVICE_TYPE" /> en el transcurso de 1 semana. <ph name="LINK_BEGIN" />Ver detalles<ph name="LINK_END" /></translation>
 <translation id="642729974267661262">No puede reproducir sonido</translation>
 <translation id="6428982734197629783">Procesando imagen</translation>
 <translation id="6429384232893414837">Error en la actualización</translation>
@@ -5545,7 +5544,6 @@
 <translation id="7457384018036134905">Administra los idiomas en la configuración del Sistema operativo Chrome</translation>
 <translation id="7458168200501453431">Utiliza el mismo corrector ortográfico que en la Búsqueda de Google. El texto que escribes en el navegador se envía a Google.</translation>
 <translation id="7460045493116006516">Tema actual que tienes instalado</translation>
-<translation id="7461729991508684543">{NUM_DAYS,plural, =1{<ph name="DOMAIN" /> requiere que hagas una copia de seguridad de tus datos y devuelvas este dispositivo <ph name="DEVICE_TYPE" /> hoy. <ph name="LINK_BEGIN" />Ver detalles<ph name="LINK_END" />}other{<ph name="DOMAIN" /> requiere que hagas una copia de seguridad de tus datos y devuelvas este dispositivo <ph name="DEVICE_TYPE" /> en el transcurso de {NUM_DAYS} días. <ph name="LINK_BEGIN" />Ver detalles<ph name="LINK_END" />}}</translation>
 <translation id="7461924472993315131">Fijar</translation>
 <translation id="746216226901520237">La próxima vez, tu teléfono desbloqueará tu <ph name="DEVICE_TYPE" />. Puedes desactivar Smart Lock en la configuración.</translation>
 <translation id="7463006580194749499">Agregar a una persona</translation>
@@ -6233,7 +6231,6 @@
 <translation id="8226619461731305576">Cola</translation>
 <translation id="8226628635270268143">Elige tus fotos y álbumes favoritos</translation>
 <translation id="8227119283605456246">Adjuntar un archivo</translation>
-<translation id="822964464349305906"><ph name="TYPE_1" />, <ph name="TYPE_2" /></translation>
 <translation id="8230134520748321204">¿Quieres guardar la contraseña para <ph name="ORIGIN" />?</translation>
 <translation id="8234795456569844941">Ayuda a nuestros ingenieros a corregir este problema. Cuéntanos lo que pasó justo antes de recibir el mensaje de error de perfil:</translation>
 <translation id="8236917170563564587">Compartir esta pestaña en su lugar</translation>
diff --git a/chrome/app/resources/generated_resources_es.xtb b/chrome/app/resources/generated_resources_es.xtb
index ec54322..d2e7b309f 100644
--- a/chrome/app/resources/generated_resources_es.xtb
+++ b/chrome/app/resources/generated_resources_es.xtb
@@ -4673,7 +4673,6 @@
 <translation id="642469772702851743">El propietario ha bloqueado este dispositivo (número de serie: <ph name="SERIAL_NUMBER" />).</translation>
 <translation id="6425556984042222041">Velocidad de síntesis de voz</translation>
 <translation id="6426200009596957090">Abrir la configuración de ChromeVox</translation>
-<translation id="642654727595919401"><ph name="DOMAIN" /> requiere que crees una copia de seguridad de tus datos y devuelvas este <ph name="DEVICE_TYPE" /> en el plazo de 1 semana. <ph name="LINK_BEGIN" />Más información<ph name="LINK_END" /></translation>
 <translation id="642729974267661262">No puede reproducir sonido</translation>
 <translation id="6428982734197629783">Procesando imagen</translation>
 <translation id="6429384232893414837">Error de actualización</translation>
@@ -5547,7 +5546,6 @@
 <translation id="7457384018036134905">Gestionar idiomas en los ajustes de Chrome OS</translation>
 <translation id="7458168200501453431">Usa el mismo corrector ortográfico que se usa en la Búsqueda de Google. El texto que escribas en el navegador se enviará a Google.</translation>
 <translation id="7460045493116006516">Tema instalado actualmente</translation>
-<translation id="7461729991508684543">{NUM_DAYS,plural, =1{<ph name="DOMAIN" /> requiere que crees una copia de seguridad de tus datos y devuelvas este <ph name="DEVICE_TYPE" /> hoy. <ph name="LINK_BEGIN" />Más información<ph name="LINK_END" />}other{<ph name="DOMAIN" /> requiere que crees una copia de seguridad de tus datos y devuelvas este <ph name="DEVICE_TYPE" /> en un plazo de {NUM_DAYS} días. <ph name="LINK_BEGIN" />Más información<ph name="LINK_END" />}}</translation>
 <translation id="7461924472993315131">Fijar</translation>
 <translation id="746216226901520237">La próxima vez, el teléfono desbloqueará tu <ph name="DEVICE_TYPE" />. Puedes desactivar Smart Lock en la configuración.</translation>
 <translation id="7463006580194749499">Añadir perfil</translation>
@@ -6235,7 +6233,6 @@
 <translation id="8226619461731305576">Cola</translation>
 <translation id="8226628635270268143">Elige tus fotos y álbumes favoritos</translation>
 <translation id="8227119283605456246">Adjuntar archivo</translation>
-<translation id="822964464349305906"><ph name="TYPE_1" /> o <ph name="TYPE_2" /></translation>
 <translation id="8230134520748321204">¿Quieres guardar la contraseña de <ph name="ORIGIN" />?</translation>
 <translation id="8234795456569844941">Ayuda a nuestros ingenieros a solucionar este problema. Indícanos lo que ha ocurrido justo antes de que apareciera el mensaje de error del perfil:</translation>
 <translation id="8236917170563564587">Compartir esta pestaña</translation>
diff --git a/chrome/app/resources/generated_resources_et.xtb b/chrome/app/resources/generated_resources_et.xtb
index 3a29b11..fec928ac 100644
--- a/chrome/app/resources/generated_resources_et.xtb
+++ b/chrome/app/resources/generated_resources_et.xtb
@@ -4689,7 +4689,6 @@
 <translation id="642469772702851743">Selle seadme (seerianumber: <ph name="SERIAL_NUMBER" />) lukustas omanik.</translation>
 <translation id="6425556984042222041">Kõnesünteesi kiirus</translation>
 <translation id="6426200009596957090">Ava ChromeVoxi seaded</translation>
-<translation id="642654727595919401"><ph name="DOMAIN" /> nõuab, et varundaksite oma andmed ja tagastaksite seadme (<ph name="DEVICE_TYPE" />) 1 nädala jooksul. <ph name="LINK_BEGIN" />Kuva üksikasjad<ph name="LINK_END" /></translation>
 <translation id="642729974267661262">Pole lubatud heli esitada</translation>
 <translation id="6428982734197629783">Pildi töötlemine</translation>
 <translation id="6429384232893414837">Viga värskendamisel</translation>
@@ -5565,7 +5564,6 @@
 <translation id="7457384018036134905">Hallake keeli Chrome OS-i seadetes</translation>
 <translation id="7458168200501453431">Kasutab sama õigekirjakontrolli, mida kasutatakse Google'i otsingus. Brauseris sisestatav tekst saadetakse Google'ile.</translation>
 <translation id="7460045493116006516">Teie installitud praegune teema</translation>
-<translation id="7461729991508684543">{NUM_DAYS,plural, =1{<ph name="DOMAIN" /> nõuab, et varundaksite oma andmed ja tagastaksite selle seadme (<ph name="DEVICE_TYPE" />) täna. <ph name="LINK_BEGIN" />Kuva üksikasjad<ph name="LINK_END" />}other{<ph name="DOMAIN" /> nõuab, et varundaksite oma andmed ja tagastaksite selle seadme (<ph name="DEVICE_TYPE" />) {NUM_DAYS} päeva jooksul. <ph name="LINK_BEGIN" />Kuva üksikasjad<ph name="LINK_END" />}}</translation>
 <translation id="7461924472993315131">Kinnita</translation>
 <translation id="746216226901520237">Järgmisel korral avab seadme <ph name="DEVICE_TYPE" /> teie telefon. Funktsiooni Smart Lock saab välja lülitada menüüs Seaded.</translation>
 <translation id="7463006580194749499">Lisa inimene</translation>
@@ -6257,7 +6255,6 @@
 <translation id="8226619461731305576">Järjekord</translation>
 <translation id="8226628635270268143">Valige oma lemmikfotod ja -albumid</translation>
 <translation id="8227119283605456246">Manusta fail</translation>
-<translation id="822964464349305906"><ph name="TYPE_1" />, <ph name="TYPE_2" /></translation>
 <translation id="8230134520748321204">Kas salvestada saidi <ph name="ORIGIN" /> parool?</translation>
 <translation id="8234795456569844941">Aidake meie spetsialistidel probleemi lahendada. Andke meile teada, mis toimus vahetult enne profiili veateate ilmumist.</translation>
 <translation id="8236917170563564587">Jaga hoopis seda vahelehte</translation>
diff --git a/chrome/app/resources/generated_resources_eu.xtb b/chrome/app/resources/generated_resources_eu.xtb
index 77cdf3f..7509862a 100644
--- a/chrome/app/resources/generated_resources_eu.xtb
+++ b/chrome/app/resources/generated_resources_eu.xtb
@@ -4688,7 +4688,6 @@
 <translation id="642469772702851743">Jabeak blokeatu du gailua (serie-zk.: <ph name="SERIAL_NUMBER" />).</translation>
 <translation id="6425556984042222041">Testua ahots bihurtzeko eginbidearen abiadura</translation>
 <translation id="6426200009596957090">Ireki ChromeVox-en ezarpenak</translation>
-<translation id="642654727595919401">Astebeteko epean datuen babeskopia egiteko eta <ph name="DEVICE_TYPE" /> gailua itzultzeko eskatzen du <ph name="DOMAIN" /> domeinuak.<ph name="LINK_BEGIN" />Ikusi xehetasunak<ph name="LINK_END" /></translation>
 <translation id="642729974267661262">Ezin dute erreproduzitu soinurik</translation>
 <translation id="6428982734197629783">Irudia prozesatzen</translation>
 <translation id="6429384232893414837">Errore bat gertatu da eguneratzean</translation>
@@ -5564,7 +5563,6 @@
 <translation id="7457384018036134905">Kudeatu hizkuntzak Chrome OS-ren ezarpenetan</translation>
 <translation id="7458168200501453431">Google-ren bilaketetan erabiltzen den ortografia-zuzentzaile bera erabiltzen du. Arakatzailean idazten duzun testua Google-ri bidaltzen zaio.</translation>
 <translation id="7460045493116006516">Instalatuta daukazun gaia</translation>
-<translation id="7461729991508684543">{NUM_DAYS,plural, =1{Gaur Datuen babeskopia egiteko eta <ph name="DEVICE_TYPE" /> gailua itzultzeko eskatzen du <ph name="DOMAIN" /> domeinuak.<ph name="LINK_BEGIN" />Ikusi xehetasunak<ph name="LINK_END" />}other{{NUM_DAYS} eguneko epean datuen babeskopia egiteko eta <ph name="DEVICE_TYPE" /> gailua itzultzeko eskatzen du <ph name="DOMAIN" /> domeinuak.<ph name="LINK_BEGIN" />Ikusi xehetasunak<ph name="LINK_END" />}}</translation>
 <translation id="7461924472993315131">Ainguratu</translation>
 <translation id="746216226901520237">Hurrengoan, telefonoak desblokeatuko du <ph name="DEVICE_TYPE" /> gailua. Smart Lock desaktibatzeko, joan ezarpenetara.</translation>
 <translation id="7463006580194749499">Gehitu pertsona bat</translation>
@@ -6255,7 +6253,6 @@
 <translation id="8226619461731305576">Ezarri ilaran</translation>
 <translation id="8226628635270268143">Aukeratu gogoko dituzun argazki eta albumak</translation>
 <translation id="8227119283605456246">Erantsi fitxategia</translation>
-<translation id="822964464349305906"><ph name="TYPE_1" />, <ph name="TYPE_2" /></translation>
 <translation id="8230134520748321204"><ph name="ORIGIN" /> webguneko pasahitza gorde nahi duzu?</translation>
 <translation id="8234795456569844941">Lagundu arazoa konpontzen gure ingeniariei. Esan iezaguzu zer gertatu den profileko errore-mezua jaso baino lehen:</translation>
 <translation id="8236917170563564587">Bestela, partekatu fitxa hau</translation>
diff --git a/chrome/app/resources/generated_resources_fa.xtb b/chrome/app/resources/generated_resources_fa.xtb
index f10ecc4..0d66195 100644
--- a/chrome/app/resources/generated_resources_fa.xtb
+++ b/chrome/app/resources/generated_resources_fa.xtb
@@ -4687,7 +4687,6 @@
 <translation id="642469772702851743">این دستگاه (شماره سریال: <ph name="SERIAL_NUMBER" />) توسط مالک قفل شده است.</translation>
 <translation id="6425556984042222041">نرخ نوشتار به گفتار</translation>
 <translation id="6426200009596957090">‏باز کردن تنظیمات ChromeVox</translation>
-<translation id="642654727595919401"><ph name="DOMAIN" /> لازم می‌داند از داده‌هایتان پشتیبان بگیرید و این <ph name="DEVICE_TYPE" /> را ظرف ۱ هفته برگردانید. <ph name="LINK_BEGIN" />مشاهده جزئیات<ph name="LINK_END" /></translation>
 <translation id="642729974267661262">اجازه ندارد صدا پخش کند</translation>
 <translation id="6428982734197629783">درحال پردازش تصویر</translation>
 <translation id="6429384232893414837">خطای به‌روزرسانی</translation>
@@ -5563,7 +5562,6 @@
 <translation id="7457384018036134905">‏مدیریت زبان‌ها در تنظیمات Chrome OS</translation>
 <translation id="7458168200501453431">‏از همان غلط‌گیر املایی استفاده می‌کند که در جستجوی Google استفاده می‌شود. نوشتاری که در مرورگر تایپ کرده‌اید برای Google ارسال می‌شود.</translation>
 <translation id="7460045493116006516">طرح زمینه کنونی که نصب کرده‌اید</translation>
-<translation id="7461729991508684543">{NUM_DAYS,plural, =1{<ph name="DOMAIN" /> لازم می‌داند از داده‌هایتان پشتیبان بگیرید و این <ph name="DEVICE_TYPE" /> را امروز برگردانید. <ph name="LINK_BEGIN" />مشاهده جزئیات<ph name="LINK_END" />}one{<ph name="DOMAIN" /> لازم می‌داند از داده‌هایتان پشتیبان بگیرید و این <ph name="DEVICE_TYPE" /> را ظرف {NUM_DAYS} روز آینده برگردانید. <ph name="LINK_BEGIN" />مشاهده جزئیات<ph name="LINK_END" />}other{<ph name="DOMAIN" /> لازم می‌داند از داده‌هایتان پشتیبان بگیرید و این <ph name="DEVICE_TYPE" /> را ظرف {NUM_DAYS} روز آینده برگردانید. <ph name="LINK_BEGIN" />مشاهده جزئیات<ph name="LINK_END" />}}</translation>
 <translation id="7461924472993315131">پین</translation>
 <translation id="746216226901520237">‏دفعه بعد، تلفنتان قفل <ph name="DEVICE_TYPE" /> را باز خواهد کرد. می‌توانید Smart Lock را در «تنظیمات» خاموش کنید.</translation>
 <translation id="7463006580194749499">افزودن شخص</translation>
@@ -6255,7 +6253,6 @@
 <translation id="8226619461731305576">صف</translation>
 <translation id="8226628635270268143">انتخاب عکس‌ها و آلبوم‌های دلخواه</translation>
 <translation id="8227119283605456246">پیوست کردن فایل</translation>
-<translation id="822964464349305906"><ph name="TYPE_1" />،‏ <ph name="TYPE_2" /></translation>
 <translation id="8230134520748321204">گذرواژه <ph name="ORIGIN" /> ذخیره شود؟</translation>
 <translation id="8234795456569844941">لطفاً در رفع این مشکل به مهندسان ما کمک کنید. بگویید درست قبل از اینکه پیام خطای نمایه را دریافت کنید، چه اتفاقی افتاد.</translation>
 <translation id="8236917170563564587">درعوض این برگه را هم‌رسانی کنید</translation>
diff --git a/chrome/app/resources/generated_resources_fi.xtb b/chrome/app/resources/generated_resources_fi.xtb
index 92ddb16..9675c1c 100644
--- a/chrome/app/resources/generated_resources_fi.xtb
+++ b/chrome/app/resources/generated_resources_fi.xtb
@@ -4688,7 +4688,6 @@
 <translation id="642469772702851743">Omistaja on lukinnut laitteen (sarjanumero <ph name="SERIAL_NUMBER" />).</translation>
 <translation id="6425556984042222041">Tekstistä puheeksi ‑nopeus</translation>
 <translation id="6426200009596957090">Avaa ChromeVox-asetukset</translation>
-<translation id="642654727595919401"><ph name="DOMAIN" /> edellyttää, että varmuuskopioit datasi ja palautat laitteen (<ph name="DEVICE_TYPE" />) viikon sisällä. <ph name="LINK_BEGIN" />Lue lisää<ph name="LINK_END" /></translation>
 <translation id="642729974267661262">Äänten toistaminen kielletty</translation>
 <translation id="6428982734197629783">Käsitellään kuvaa</translation>
 <translation id="6429384232893414837">Päivitysvirhe</translation>
@@ -5564,7 +5563,6 @@
 <translation id="7457384018036134905">Muuta kielivalintoja Chrome-käyttöjärjestelmän asetuksista</translation>
 <translation id="7458168200501453431">Käyttää samaa oikolukua kuin Google Haussa. Selaimeen kirjoittamasi teksti lähetetään Googlelle.</translation>
 <translation id="7460045493116006516">Asentamasi nykyinen teema</translation>
-<translation id="7461729991508684543">{NUM_DAYS,plural, =1{<ph name="DOMAIN" /> edellyttää, että varmuuskopioit datasi ja palautat laitteen (<ph name="DEVICE_TYPE" />) tänään. <ph name="LINK_BEGIN" />Lue lisää<ph name="LINK_END" />}other{<ph name="DOMAIN" /> edellyttää, että varmuuskopioit datasi ja palautat laitteen (<ph name="DEVICE_TYPE" />) {NUM_DAYS} päivän sisällä. <ph name="LINK_BEGIN" />Lue lisää<ph name="LINK_END" />}}</translation>
 <translation id="7461924472993315131">Kiinnitä</translation>
 <translation id="746216226901520237">Ensi kerralla <ph name="DEVICE_TYPE" /> avataan lukituksesta puhelimellasi. Voit poistaa Smart Lockin käytöstä asetuksissa.</translation>
 <translation id="7463006580194749499">Lisää käyttäjä</translation>
@@ -6255,7 +6253,6 @@
 <translation id="8226619461731305576">Jono</translation>
 <translation id="8226628635270268143">Valitse suosikkikuvat ja ‑albumit</translation>
 <translation id="8227119283605456246">Liitä tiedosto</translation>
-<translation id="822964464349305906"><ph name="TYPE_1" />, <ph name="TYPE_2" /></translation>
 <translation id="8230134520748321204">Tallennetaanko salasanat: <ph name="ORIGIN" />?</translation>
 <translation id="8234795456569844941">Auta tiimiämme ongelman korjaamisessa. Kerro meille, mitä tapahtui juuri ennen profiilivirheviestiä:</translation>
 <translation id="8236917170563564587">Jaa sen sijaan tämä välilehti</translation>
diff --git a/chrome/app/resources/generated_resources_fil.xtb b/chrome/app/resources/generated_resources_fil.xtb
index 642416d3..a83b16e8 100644
--- a/chrome/app/resources/generated_resources_fil.xtb
+++ b/chrome/app/resources/generated_resources_fil.xtb
@@ -4690,7 +4690,6 @@
 <translation id="642469772702851743">Na-lock ng may-ari ang device na ito (SN: <ph name="SERIAL_NUMBER" />).</translation>
 <translation id="6425556984042222041">Rate ng text-to-speech</translation>
 <translation id="6426200009596957090">Buksan ang mga setting ng ChromeVox</translation>
-<translation id="642654727595919401">Hinihiling sa iyo ng <ph name="DOMAIN" /> na i-back up ang data mo at ibalik ang <ph name="DEVICE_TYPE" /> na ito sa loob ng 1 linggo.<ph name="LINK_BEGIN" />Tingnan ang mga detalye<ph name="LINK_END" /></translation>
 <translation id="642729974267661262">Hindi pinapayagang mag-play ng tunog</translation>
 <translation id="6428982734197629783">Pinoproseso ang larawan</translation>
 <translation id="6429384232893414837">Error sa pag-update</translation>
@@ -5566,7 +5565,6 @@
 <translation id="7457384018036134905">Pamahalaan ang mga wika sa mga setting ng Chrome OS</translation>
 <translation id="7458168200501453431">Ginagamit ang parehong spell checker na ginagamit sa paghahanap sa Google. Ipapadala sa Google ang text na tina-type mo.</translation>
 <translation id="7460045493116006516">Kasalukuyang temang na-install mo</translation>
-<translation id="7461729991508684543">{NUM_DAYS,plural, =1{Hinihiling sa iyo ng <ph name="DOMAIN" /> na i-back up ang data mo at ibalik ang <ph name="DEVICE_TYPE" /> na ito ngayong araw.<ph name="LINK_BEGIN" />Tingnan ang mga detalye<ph name="LINK_END" />}one{Hinihiling sa iyo ng <ph name="DOMAIN" /> na i-back up ang data mo at ibalik ang <ph name="DEVICE_TYPE" /> na ito sa loob ng {NUM_DAYS} araw.<ph name="LINK_BEGIN" />Tingnan ang mga detalye<ph name="LINK_END" />}other{Hinihiling sa iyo ng <ph name="DOMAIN" /> na i-back up ang data mo at ibalik ang <ph name="DEVICE_TYPE" /> na ito sa loob ng {NUM_DAYS} na araw.<ph name="LINK_BEGIN" />Tingnan ang mga detalye<ph name="LINK_END" />}}</translation>
 <translation id="7461924472993315131">I-pin</translation>
 <translation id="746216226901520237">Sa susunod, ia-unlock ng iyong telepono ang <ph name="DEVICE_TYPE" /> mo. Puwede mong i-off ang Smart Lock sa Mga Setting.</translation>
 <translation id="7463006580194749499">Magdagdag ng tao</translation>
@@ -6258,7 +6256,6 @@
 <translation id="8226619461731305576">I-queue</translation>
 <translation id="8226628635270268143">Piliin ang iyong mga paboritong larawan at album</translation>
 <translation id="8227119283605456246">Mag-attach ng file</translation>
-<translation id="822964464349305906"><ph name="TYPE_1" />, <ph name="TYPE_2" /></translation>
 <translation id="8230134520748321204">I-save ang password para sa <ph name="ORIGIN" />?</translation>
 <translation id="8234795456569844941">Pakitulungan ang aming mga engineer na ayusin ang problemang ito. Sabihin sa amin kung ano ang nangyari bago mo nakuha ang mensahe ng error sa profile:</translation>
 <translation id="8236917170563564587">Sa halip, ibahagi ang tab na ito</translation>
diff --git a/chrome/app/resources/generated_resources_fr-CA.xtb b/chrome/app/resources/generated_resources_fr-CA.xtb
index 1dbf522..c472d46e 100644
--- a/chrome/app/resources/generated_resources_fr-CA.xtb
+++ b/chrome/app/resources/generated_resources_fr-CA.xtb
@@ -4691,7 +4691,6 @@
 <translation id="642469772702851743">Cet appareil (numéro de série : <ph name="SERIAL_NUMBER" />) a été verrouillé par son propriétaire.</translation>
 <translation id="6425556984042222041">Vitesse de la synthèse vocale</translation>
 <translation id="6426200009596957090">Ouvrir les paramètres ChromeVox</translation>
-<translation id="642654727595919401"><ph name="DOMAIN" /> exige que vous sauvegardiez vos données et que vous retourniez cet appareil <ph name="DEVICE_TYPE" /> d'ici une semaine.<ph name="LINK_BEGIN" />Voir les précisions<ph name="LINK_END" /></translation>
 <translation id="642729974267661262">Non autorisés à faire jouer des sons</translation>
 <translation id="6428982734197629783">Traitement de l'image en cours…</translation>
 <translation id="6429384232893414837">Erreur de mise à jour</translation>
@@ -5567,7 +5566,6 @@
 <translation id="7457384018036134905">Gérer les langues dans les paramètres de Chrome OS</translation>
 <translation id="7458168200501453431">Utilise le même correcteur orthographique que celui utilisé dans la recherche Google. Le texte que vous tapez dans le navigateur sera envoyé à Google.</translation>
 <translation id="7460045493116006516">Le thème actuel que vous avez installé</translation>
-<translation id="7461729991508684543">{NUM_DAYS,plural, =1{<ph name="DOMAIN" /> exige que vous sauvegardiez vos données et que vous retourniez cet appareil <ph name="DEVICE_TYPE" /> aujourd'hui.<ph name="LINK_BEGIN" />Voir les précisions<ph name="LINK_END" />}one{<ph name="DOMAIN" /> exige que vous sauvegardiez vos données et que vous retourniez cet appareil <ph name="DEVICE_TYPE" /> d'ici {NUM_DAYS} jour.<ph name="LINK_BEGIN" />Voir les précisions<ph name="LINK_END" />}many{<ph name="DOMAIN" /> requires you to back up your data and return this <ph name="DEVICE_TYPE" /> within {NUM_DAYS} days.<ph name="LINK_BEGIN" />See details<ph name="LINK_END" />}other{<ph name="DOMAIN" /> exige que vous sauvegardiez vos données et que vous retourniez cet appareil <ph name="DEVICE_TYPE" /> d'ici {NUM_DAYS} jours.<ph name="LINK_BEGIN" />Voir les précisions<ph name="LINK_END" />}}</translation>
 <translation id="7461924472993315131">NIP</translation>
 <translation id="746216226901520237">La prochaine fois, votre téléphone déverrouillera votre <ph name="DEVICE_TYPE" />. Vous pouvez désactiver Smart Lock dans le menu Paramètres.</translation>
 <translation id="7463006580194749499">Ajouter une personne</translation>
@@ -6258,7 +6256,6 @@
 <translation id="8226619461731305576">File d'attente</translation>
 <translation id="8226628635270268143">Sélectionnez vos photos et vos albums préférés</translation>
 <translation id="8227119283605456246">Joindre un fichier</translation>
-<translation id="822964464349305906"><ph name="TYPE_1" />, <ph name="TYPE_2" /></translation>
 <translation id="8230134520748321204">Enregistrer le mot de passe pour <ph name="ORIGIN" />?</translation>
 <translation id="8234795456569844941">Veuillez aider nos ingénieurs à corriger ce problème. Dites-nous ce qui s'est passé juste avant que vous receviez le message d'erreur lié au profil :</translation>
 <translation id="8236917170563564587">Partager cet onglet à la place</translation>
diff --git a/chrome/app/resources/generated_resources_fr.xtb b/chrome/app/resources/generated_resources_fr.xtb
index 964b5275..38492ca5 100644
--- a/chrome/app/resources/generated_resources_fr.xtb
+++ b/chrome/app/resources/generated_resources_fr.xtb
@@ -4677,7 +4677,6 @@
 <translation id="642469772702851743">Le propriétaire de cet appareil (n° de série : <ph name="SERIAL_NUMBER" />) l'a verrouillé.</translation>
 <translation id="6425556984042222041">Débit de la voix de la synthèse vocale</translation>
 <translation id="6426200009596957090">Ouvrir les paramètres ChromeVox</translation>
-<translation id="642654727595919401"><ph name="DOMAIN" /> vous demande de sauvegarder vos données et de retourner ce <ph name="DEVICE_TYPE" /> sous une semaine. <ph name="LINK_BEGIN" />En savoir plus<ph name="LINK_END" /></translation>
 <translation id="642729974267661262">Non autorisé à lire des sons</translation>
 <translation id="6428982734197629783">Traitement de l'image en cours</translation>
 <translation id="6429384232893414837">Erreur de mise à jour</translation>
@@ -5551,7 +5550,6 @@
 <translation id="7457384018036134905">Gérer les langues dans les paramètres de Chrome OS</translation>
 <translation id="7458168200501453431">Utilise le même correcteur orthographique que celui utilisé dans la recherche Google. Le texte que vous saisissez dans le navigateur est envoyé à Google.</translation>
 <translation id="7460045493116006516">Thème actuel que vous avez installé</translation>
-<translation id="7461729991508684543">{NUM_DAYS,plural, =1{<ph name="DOMAIN" /> vous demande de sauvegarder vos données et de retourner ce <ph name="DEVICE_TYPE" /> aujourd'hui. <ph name="LINK_BEGIN" />En savoir plus<ph name="LINK_END" />}one{<ph name="DOMAIN" /> vous demande de sauvegarder vos données et de retourner ce <ph name="DEVICE_TYPE" /> sous {NUM_DAYS} jour. <ph name="LINK_BEGIN" />En savoir plus<ph name="LINK_END" />}many{<ph name="DOMAIN" /> requires you to back up your data and return this <ph name="DEVICE_TYPE" /> within {NUM_DAYS} days.<ph name="LINK_BEGIN" />See details<ph name="LINK_END" />}other{<ph name="DOMAIN" /> vous demande de sauvegarder vos données et de retourner ce <ph name="DEVICE_TYPE" /> sous {NUM_DAYS} jours. <ph name="LINK_BEGIN" />En savoir plus<ph name="LINK_END" />}}</translation>
 <translation id="7461924472993315131">Épingler</translation>
 <translation id="746216226901520237">La prochaine fois, votre téléphone déverrouillera votre <ph name="DEVICE_TYPE" />. Vous pouvez désactiver Smart Lock dans les paramètres.</translation>
 <translation id="7463006580194749499">Ajouter une personne</translation>
@@ -6239,7 +6237,6 @@
 <translation id="8226619461731305576">File d'attente</translation>
 <translation id="8226628635270268143">Choisissez vos photos et vos albums préférés</translation>
 <translation id="8227119283605456246">Joindre un fichier</translation>
-<translation id="822964464349305906"><ph name="TYPE_1" />, <ph name="TYPE_2" /></translation>
 <translation id="8230134520748321204">Enregistrer le mot de passe pour <ph name="ORIGIN" /> ?</translation>
 <translation id="8234795456569844941">Pour aider nos ingénieurs à corriger ce problème, veuillez nous indiquer ce qui s'est passé juste avant de recevoir le message d'erreur concernant le profil :</translation>
 <translation id="8236917170563564587">Partager cet onglet à la place</translation>
diff --git a/chrome/app/resources/generated_resources_gl.xtb b/chrome/app/resources/generated_resources_gl.xtb
index b849642..ec2e1d0c 100644
--- a/chrome/app/resources/generated_resources_gl.xtb
+++ b/chrome/app/resources/generated_resources_gl.xtb
@@ -4687,7 +4687,6 @@
 <translation id="642469772702851743">O propietario bloqueou este dispositivo (número de serie: <ph name="SERIAL_NUMBER" />).</translation>
 <translation id="6425556984042222041">Velocidade da síntese de voz</translation>
 <translation id="6426200009596957090">Abrir configuración de ChromeVox</translation>
-<translation id="642654727595919401"><ph name="DOMAIN" /> require que fagas unha copia de seguranza dos teus datos e que devolvas este <ph name="DEVICE_TYPE" /> no prazo de 1 semana.<ph name="LINK_BEGIN" />Ver detalles<ph name="LINK_END" /></translation>
 <translation id="642729974267661262">Sitios que non poden reproducir son</translation>
 <translation id="6428982734197629783">Procesando imaxe</translation>
 <translation id="6429384232893414837">Produciuse un erro na actualización</translation>
@@ -5563,7 +5562,6 @@
 <translation id="7457384018036134905">Xestionar idiomas na configuración de Chrome OS</translation>
 <translation id="7458168200501453431">Utiliza o mesmo corrector ortográfico que na Busca de Google. O texto que escribas no navegador enviarase a Google.</translation>
 <translation id="7460045493116006516">Tema que tes instalado actualmente</translation>
-<translation id="7461729991508684543">{NUM_DAYS,plural, =1{<ph name="DOMAIN" /> require que fagas unha copia de seguranza dos teus datos e que devolvas este <ph name="DEVICE_TYPE" /> hoxe.<ph name="LINK_BEGIN" />Ver detalles<ph name="LINK_END" />}other{<ph name="DOMAIN" /> require que fagas unha copia de seguranza dos teus datos e que devolvas este <ph name="DEVICE_TYPE" /> no prazo de {NUM_DAYS} días.<ph name="LINK_BEGIN" />Ver detalles<ph name="LINK_END" />}}</translation>
 <translation id="7461924472993315131">Marcar cun alfinete</translation>
 <translation id="746216226901520237">A próxima vez, o teléfono desbloqueará o teu <ph name="DEVICE_TYPE" />. Podes desactivar Smart Lock en Configuración.</translation>
 <translation id="7463006580194749499">Engadir unha persoa</translation>
@@ -6254,7 +6252,6 @@
 <translation id="8226619461731305576">Cola</translation>
 <translation id="8226628635270268143">Escolle as fotos e os álbums que máis che gustan</translation>
 <translation id="8227119283605456246">Anexar ficheiro</translation>
-<translation id="822964464349305906"><ph name="TYPE_1" />, <ph name="TYPE_2" /></translation>
 <translation id="8230134520748321204">Queres gardar o contrasinal de <ph name="ORIGIN" />?</translation>
 <translation id="8234795456569844941">Axuda aos nosos enxeñeiros a solucionar este problema. Explícanos o que sucedeu antes de que recibises a mensaxe de erro do perfil.</translation>
 <translation id="8236917170563564587">Mellor compartir esta pestana</translation>
diff --git a/chrome/app/resources/generated_resources_gu.xtb b/chrome/app/resources/generated_resources_gu.xtb
index 2a8029a..152d18d 100644
--- a/chrome/app/resources/generated_resources_gu.xtb
+++ b/chrome/app/resources/generated_resources_gu.xtb
@@ -4673,7 +4673,6 @@
 <translation id="642469772702851743">આ ઉપકરણ (SN: <ph name="SERIAL_NUMBER" />)ને માલિક દ્વારા લૉક કરવામાં આવ્યું હતું.</translation>
 <translation id="6425556984042222041">ટેક્સ્ટ ટૂ સ્પીચની ઝડપ</translation>
 <translation id="6426200009596957090">ChromeVox સેટિંગ્સ ખોલો</translation>
-<translation id="642654727595919401"><ph name="DOMAIN" /> માટે જરૂરી છે કે તમે તમારા ડેટાનું બૅકઅપ લઈને આ <ph name="DEVICE_TYPE" /> 1 અઠવાડિયાની અંદર પરત કરો.<ph name="LINK_BEGIN" />વિગતો જુઓ<ph name="LINK_END" /></translation>
 <translation id="642729974267661262">સાઉન્ડ ચલાવવાની મંજૂરી નથી</translation>
 <translation id="6428982734197629783">છબીની પ્રક્રિયા કરી રહ્યાં છીએ</translation>
 <translation id="6429384232893414837">અપડેટમાં ભૂલ</translation>
@@ -5547,7 +5546,6 @@
 <translation id="7457384018036134905">Chrome OS સેટિંગમાં ભાષાઓને મેનેજ કરો</translation>
 <translation id="7458168200501453431">Google શોધમાં જે જોડણી તપાસનારનો ઉપયોગ થાય છે તેનો જ ઉપયોગ કરે છે. તમે બાઉઝરમાં ટાઇપ કરો છો તે ટેક્સ્ટ Googleને મોકલવામાં આવે છે.</translation>
 <translation id="7460045493116006516">તમે ઇન્સ્ટૉલ કરેલી વર્તમાન થીમ</translation>
-<translation id="7461729991508684543">{NUM_DAYS,plural, =1{<ph name="DOMAIN" /> માટે જરૂરી છે કે તમે તમારા ડેટાનું બૅકઅપ લઈને આ <ph name="DEVICE_TYPE" /> આજે જ પરત કરો.<ph name="LINK_BEGIN" />વિગતો જુઓ<ph name="LINK_END" />}one{<ph name="DOMAIN" /> માટે જરૂરી છે કે તમે તમારા ડેટાનું બૅકઅપ લઈને આ <ph name="DEVICE_TYPE" /> {NUM_DAYS} દિવસની અંદર પરત કરો.<ph name="LINK_BEGIN" />વિગતો જુઓ<ph name="LINK_END" />}other{<ph name="DOMAIN" /> માટે જરૂરી છે કે તમે તમારા ડેટાનું બૅકઅપ લઈને આ <ph name="DEVICE_TYPE" /> {NUM_DAYS} દિવસની અંદર પરત કરો.<ph name="LINK_BEGIN" />વિગતો જુઓ<ph name="LINK_END" />}}</translation>
 <translation id="7461924472993315131">પિન કરો</translation>
 <translation id="746216226901520237">આગલી વખતે, તમારો ફોન તમારા <ph name="DEVICE_TYPE" />ને અનલૉક કરશે. તમે સેટિંગમાં Smart Lock બંધ કરી શકો છો.</translation>
 <translation id="7463006580194749499">વ્યક્તિ ઉમેરો</translation>
@@ -6229,7 +6227,6 @@
 <translation id="8226619461731305576">કતારમાં</translation>
 <translation id="8226628635270268143">તમારા મનગમતા ફોટા અને આલ્બમ પસંદ કરો</translation>
 <translation id="8227119283605456246">ફાઇલ જોડો</translation>
-<translation id="822964464349305906"><ph name="TYPE_1" />, <ph name="TYPE_2" /></translation>
 <translation id="8230134520748321204"><ph name="ORIGIN" /> માટેનો પાસવર્ડ સાચવીએ?</translation>
 <translation id="8234795456569844941">કૃપા કરી અમારા એન્જિનિયરોને આ સમસ્યા ઠીક કરવામાં સહાય કરો. તમને પ્રોફાઇલમાં ભૂલ આવ્યાનો સંદેશ મળ્યો બિલકુલ તે પહેલા શું થયું હતું તે અમને જણાવો:</translation>
 <translation id="8236917170563564587">તેના બદલે આ ટૅબ શેર કરો</translation>
diff --git a/chrome/app/resources/generated_resources_hi.xtb b/chrome/app/resources/generated_resources_hi.xtb
index 2d9fc68..304cfa9 100644
--- a/chrome/app/resources/generated_resources_hi.xtb
+++ b/chrome/app/resources/generated_resources_hi.xtb
@@ -4689,7 +4689,6 @@
 <translation id="642469772702851743">इस डिवाइस (क्रमांक: <ph name="SERIAL_NUMBER" />) को मालिक ने लॉक कर दिया था.</translation>
 <translation id="6425556984042222041">लिखाई को बोली में बदलने की दर</translation>
 <translation id="6426200009596957090">ChromeVox सेटिंग खोलें</translation>
-<translation id="642654727595919401"><ph name="DOMAIN" /> के लिए ज़रूरी है कि आप अपने डेटा का बैक अप लें और एक हफ़्ते के अंदर इस <ph name="DEVICE_TYPE" /> को लौटा दें.<ph name="LINK_BEGIN" />जानकारी देखें<ph name="LINK_END" /></translation>
 <translation id="642729974267661262">आवाज़ चलाने की अनुमति नहीं है</translation>
 <translation id="6428982734197629783">इमेज प्रोसेस हो रही है</translation>
 <translation id="6429384232893414837">अपडेट में गड़बड़ी</translation>
@@ -5565,7 +5564,6 @@
 <translation id="7457384018036134905">Chrome OS सेटिंग में भाषाएं प्रबंधित करें</translation>
 <translation id="7458168200501453431">वर्तनी जांचने के लिए उसी सुविधा का इस्तेमाल करती है जिसका इस्तेमाल 'Google सर्च' में किया जाता है. आप ब्राउज़र में जो कुछ भी लिखते हैं उसे Google को भेजा जाता है.</translation>
 <translation id="7460045493116006516">आपकी इंस्टॉल की हुई मौजूदा थीम</translation>
-<translation id="7461729991508684543">{NUM_DAYS,plural, =1{<ph name="DOMAIN" /> के लिए ज़रूरी है कि आप अपने डेटा का बैक अप लें और आज ही इस <ph name="DEVICE_TYPE" /> को लौटा दें.<ph name="LINK_BEGIN" />जानकारी देखें<ph name="LINK_END" />}one{<ph name="DOMAIN" /> के लिए ज़रूरी है कि आप अपने डेटा का बैक अप लें और इस <ph name="DEVICE_TYPE" /> को {NUM_DAYS} दिन के अंदर लौटा दें.<ph name="LINK_BEGIN" />जानकारी देखें<ph name="LINK_END" />}other{<ph name="DOMAIN" /> के लिए ज़रूरी है कि आप अपने डेटा का बैक अप लें और इस <ph name="DEVICE_TYPE" /> को {NUM_DAYS} दिनों के अंदर लौटा दें.<ph name="LINK_BEGIN" />जानकारी देखें<ph name="LINK_END" />}}</translation>
 <translation id="7461924472993315131">पिन करें</translation>
 <translation id="746216226901520237">अगली बार, आपका फ़ोन आपके <ph name="DEVICE_TYPE" /> को अनलॉक कर देगा. आप सेटिंग में जाकर Smart Lock को बंद कर सकते हैं</translation>
 <translation id="7463006580194749499">व्‍यक्ति जोड़ें</translation>
@@ -6256,7 +6254,6 @@
 <translation id="8226619461731305576">सूची</translation>
 <translation id="8226628635270268143">अपनी पसंदीदा फ़ोटो और एल्बम चुनें</translation>
 <translation id="8227119283605456246">फ़ाइल अटैच करें</translation>
-<translation id="822964464349305906"><ph name="TYPE_1" />, <ph name="TYPE_2" /></translation>
 <translation id="8230134520748321204"><ph name="ORIGIN" /> के लिए पासवर्ड सेव करें?</translation>
 <translation id="8234795456569844941">कृपया इस समस्या को ठीक करने में हमारे इंजीनियरों की मदद करें. हमें बताएं कि प्रोफ़ाइल से जुड़ी गड़बड़ी का मैसेज मिलने से ठीक पहले क्या हुआ था:</translation>
 <translation id="8236917170563564587">उसके बजाय यह टैब शेयर करें</translation>
diff --git a/chrome/app/resources/generated_resources_hr.xtb b/chrome/app/resources/generated_resources_hr.xtb
index 02c5716..bb3ab35c 100644
--- a/chrome/app/resources/generated_resources_hr.xtb
+++ b/chrome/app/resources/generated_resources_hr.xtb
@@ -4689,7 +4689,6 @@
 <translation id="642469772702851743">Taj uređaj (serijski broj: <ph name="SERIAL_NUMBER" />) zaključao je vlasnik.</translation>
 <translation id="6425556984042222041">Brzina govora za pretvaranje teksta u govor</translation>
 <translation id="6426200009596957090">Otvori postavke ChromeVoxa</translation>
-<translation id="642654727595919401"><ph name="DOMAIN" /> traži da izradite sigurnosnu kopiju svojih podataka i vratite ovaj uređaj <ph name="DEVICE_TYPE" /> u roku od tjedan dana.<ph name="LINK_BEGIN" />Pogledajte pojedinosti<ph name="LINK_END" /></translation>
 <translation id="642729974267661262">Nije dopuštena reprodukcija zvuka</translation>
 <translation id="6428982734197629783">Obrada slike</translation>
 <translation id="6429384232893414837">Pogreška pri ažuriranju</translation>
@@ -5563,7 +5562,6 @@
 <translation id="7457384018036134905">Upravljanje jezicima u postavkama OS-a Chrome</translation>
 <translation id="7458168200501453431">Upotrebljava istu provjeru pravopisa koja se upotrebljava na Google pretraživanju. Tekst koji unesete u preglednik šalje se Googleu.</translation>
 <translation id="7460045493116006516">Trenutačna instalirana tema</translation>
-<translation id="7461729991508684543">{NUM_DAYS,plural, =1{<ph name="DOMAIN" /> traži da izradite sigurnosnu kopiju svojih podataka i vratite ovaj uređaj <ph name="DEVICE_TYPE" /> danas.<ph name="LINK_BEGIN" />Pogledajte pojedinosti<ph name="LINK_END" />}one{<ph name="DOMAIN" /> traži da izradite sigurnosnu kopiju svojih podataka i vratite ovaj uređaj <ph name="DEVICE_TYPE" /> u roku od {NUM_DAYS} dana.<ph name="LINK_BEGIN" />Pogledajte pojedinosti<ph name="LINK_END" />}few{<ph name="DOMAIN" /> traži da izradite sigurnosnu kopiju svojih podataka i vratite ovaj uređaj <ph name="DEVICE_TYPE" /> u roku od {NUM_DAYS} dana.<ph name="LINK_BEGIN" />Pogledajte pojedinosti<ph name="LINK_END" />}other{<ph name="DOMAIN" /> traži da izradite sigurnosnu kopiju svojih podataka i vratite ovaj uređaj <ph name="DEVICE_TYPE" /> u roku od {NUM_DAYS} dana.<ph name="LINK_BEGIN" />Pogledajte pojedinosti<ph name="LINK_END" />}}</translation>
 <translation id="7461924472993315131">Prikvači</translation>
 <translation id="746216226901520237">Sljedeći će put vaš telefon otključati vaš uređaj <ph name="DEVICE_TYPE" />. Smart Lock možete isključiti u Postavkama.</translation>
 <translation id="7463006580194749499">Dodaj osobu</translation>
@@ -6254,7 +6252,6 @@
 <translation id="8226619461731305576">Redoslijed</translation>
 <translation id="8226628635270268143">Odaberite svoje omiljene fotografije i albume</translation>
 <translation id="8227119283605456246">Priloži datoteku</translation>
-<translation id="822964464349305906"><ph name="TYPE_1" />, <ph name="TYPE_2" /></translation>
 <translation id="8230134520748321204">Želite li spremiti zaporku za <ph name="ORIGIN" />?</translation>
 <translation id="8234795456569844941">Pomognite našim inženjerima da riješe taj problem. Opišite što se dogodilo neposredno prije nego što se prikazala poruka pogreške za profil:</translation>
 <translation id="8236917170563564587">Dijeli ovu karticu</translation>
diff --git a/chrome/app/resources/generated_resources_hu.xtb b/chrome/app/resources/generated_resources_hu.xtb
index 833775f..103906a 100644
--- a/chrome/app/resources/generated_resources_hu.xtb
+++ b/chrome/app/resources/generated_resources_hu.xtb
@@ -4690,7 +4690,6 @@
 <translation id="642469772702851743">Az eszközt (sorozatszám: <ph name="SERIAL_NUMBER" />) zárolta a tulajdonos.</translation>
 <translation id="6425556984042222041">Szövegfelolvasó sebessége</translation>
 <translation id="6426200009596957090">ChromeVox-beállítások megnyitása</translation>
-<translation id="642654727595919401">A(z) <ph name="DOMAIN" /> megköveteli, hogy biztonsági másolatot készítsen adatairól, és küldje vissza ezt az eszközt (<ph name="DEVICE_TYPE" />) 1 héten belül. <ph name="LINK_BEGIN" />Részletek megtekintése.<ph name="LINK_END" /></translation>
 <translation id="642729974267661262">Nem játszhatnak le hangot</translation>
 <translation id="6428982734197629783">Kép feldolgozása…</translation>
 <translation id="6429384232893414837">Frissítési hiba</translation>
@@ -5566,7 +5565,6 @@
 <translation id="7457384018036134905">Nyelvek kezelése a Chrome OS beállításai között</translation>
 <translation id="7458168200501453431">A Google Kereső által használttal megegyező helyesírás-ellenőrzést használ. A begépelt szöveget a böngésző elküldi a Google-nak.</translation>
 <translation id="7460045493116006516">Jelenleg telepített téma</translation>
-<translation id="7461729991508684543">{NUM_DAYS,plural, =1{A(z) <ph name="DOMAIN" /> megköveteli, hogy biztonsági másolatot készítsen adatairól, és küldje vissza ezt az eszközt (<ph name="DEVICE_TYPE" />) a mai napon. <ph name="LINK_BEGIN" />Részletek megtekintése.<ph name="LINK_END" />}other{A(z) <ph name="DOMAIN" /> megköveteli, hogy biztonsági másolatot készítsen adatairól, és küldje vissza ezt az eszközt (<ph name="DEVICE_TYPE" />) {NUM_DAYS} napon belül. <ph name="LINK_BEGIN" />Részletek megtekintése<ph name="LINK_END" />.}}</translation>
 <translation id="7461924472993315131">Rögzítés</translation>
 <translation id="746216226901520237">Legközelebb a telefonjával oldhatja fel <ph name="DEVICE_TYPE" /> eszköze lezárását. A Smart Lock funkciót a Beállításokban kapcsolhatja ki.</translation>
 <translation id="7463006580194749499">Személy hozzáadása</translation>
@@ -6258,7 +6256,6 @@
 <translation id="8226619461731305576">Nyomtatólista</translation>
 <translation id="8226628635270268143">Kedvenc fotók és albumok kiválasztása</translation>
 <translation id="8227119283605456246">Fájl csatolása</translation>
-<translation id="822964464349305906"><ph name="TYPE_1" /> és <ph name="TYPE_2" /></translation>
 <translation id="8230134520748321204">Szeretné elmenteni a(z) <ph name="ORIGIN" /> jelszavát?</translation>
 <translation id="8234795456569844941">Kérjük, segítsen mérnökeinknek a hiba kijavításában. Mondja el nekünk, hogy mi történt közvetlenül a profilhiba-üzenet megjelenése előtt:</translation>
 <translation id="8236917170563564587">Jelenlegi lap megosztása</translation>
diff --git a/chrome/app/resources/generated_resources_hy.xtb b/chrome/app/resources/generated_resources_hy.xtb
index 7383adc..cf0bb33 100644
--- a/chrome/app/resources/generated_resources_hy.xtb
+++ b/chrome/app/resources/generated_resources_hy.xtb
@@ -4698,7 +4698,6 @@
 <translation id="642469772702851743">Այս սարքը (սերիական համար՝ <ph name="SERIAL_NUMBER" />) արգելափակվել է սեփականատիրոջ կողմից:</translation>
 <translation id="6425556984042222041">Տեքստի հնչեցման արագությունը</translation>
 <translation id="6426200009596957090">Բացել ChromeVox-ի կարգավորումները</translation>
-<translation id="642654727595919401">Տիրույթի (<ph name="DOMAIN" />) կանոնների համաձայն՝ դուք պետք է պահուստավորեք ձեր տվյալները և 1 շաբաթվա ընթացքում վերադարձնեք այս <ph name="DEVICE_TYPE" /> սարքը։<ph name="LINK_BEGIN" />Տեսնել մանրամասները<ph name="LINK_END" /></translation>
 <translation id="642729974267661262">Չի թույլատրվում նվագարկել ձայն</translation>
 <translation id="6428982734197629783">Պատկերը մշակվում է</translation>
 <translation id="6429384232893414837">Թարմացման սխալ</translation>
@@ -5575,7 +5574,6 @@
 <translation id="7457384018036134905">Կառավարել լեզուները Chrome OS-ի կարգավորումներում</translation>
 <translation id="7458168200501453431">Օգտագործում է ուղղագրության նույն ստուգիչը, որն օգտագործվում է Google Որոնման մեջ: Դիտարկիչում մուտքագրած ձեր տեքստերն ուղարկվում են Google-ին:</translation>
 <translation id="7460045493116006516">Ձեր տեղադրած ընթացիկ թեման</translation>
-<translation id="7461729991508684543">{NUM_DAYS,plural, =1{Տիրույթի (<ph name="DOMAIN" />) կանոնների համաձայն՝ դուք պետք է պահուստավորեք ձեր տվյալները և այսօր վերադարձնեք այս <ph name="DEVICE_TYPE" /> սարքը։<ph name="LINK_BEGIN" />Տեսնել մանրամասները<ph name="LINK_END" />}one{Տիրույթի (<ph name="DOMAIN" />) կանոնների համաձայն՝ դուք պետք է պահուստավորեք ձեր տվյալները և {NUM_DAYS} օրվա ընթացքում վերադարձնեք այս <ph name="DEVICE_TYPE" /> սարքը։<ph name="LINK_BEGIN" />Տեսնել մանրամասները<ph name="LINK_END" />}other{Տիրույթի (<ph name="DOMAIN" />) կանոնների համաձայն՝ դուք պետք է պահուստավորեք ձեր տվյալները և {NUM_DAYS} օրվա ընթացքում վերադարձնեք այս <ph name="DEVICE_TYPE" /> սարքը։<ph name="LINK_BEGIN" />Տեսնել մանրամասները<ph name="LINK_END" />}}</translation>
 <translation id="7461924472993315131">Ամրացնել</translation>
 <translation id="746216226901520237">Smart Lock-ը միացնելու համար մուտքագրեք ձեր գաղտնաբառը։ Դրանից հետո ձեր հեռախոսով կարող եք ապակողպել <ph name="DEVICE_TYPE" /> սարքը։ Smart Lock-ը կարող եք անջատել կարգավորումներում։</translation>
 <translation id="7463006580194749499">Ավելացնել անձ</translation>
@@ -6266,7 +6264,6 @@
 <translation id="8226619461731305576">Հերթականություն</translation>
 <translation id="8226628635270268143">Ընտրեք ձեր սիրած լուսանկարներն ու ալբոմները</translation>
 <translation id="8227119283605456246">Կցել ֆայլ</translation>
-<translation id="822964464349305906"><ph name="TYPE_1" />, <ph name="TYPE_2" /></translation>
 <translation id="8230134520748321204">Պահե՞լ <ph name="ORIGIN" /> կայքի գաղտնաբառը</translation>
 <translation id="8234795456569844941">Օգնեք մեր ճարտարագետներին շտկել այս խնդիրը։ Նկարագրեք, թե ինչ տեղի ունեցավ նախքան պրոֆիլի սխալի մասին հաղորդագրություն ստանալը՝</translation>
 <translation id="8236917170563564587">Փոխարենը կիսվեք այս ներդիրով</translation>
diff --git a/chrome/app/resources/generated_resources_id.xtb b/chrome/app/resources/generated_resources_id.xtb
index 861ad9d..433859e 100644
--- a/chrome/app/resources/generated_resources_id.xtb
+++ b/chrome/app/resources/generated_resources_id.xtb
@@ -4674,7 +4674,6 @@
 <translation id="642469772702851743">Perangkat ini (NS: <ph name="SERIAL_NUMBER" />) dikunci oleh pemilik.</translation>
 <translation id="6425556984042222041">Kecepatan text-to-speech</translation>
 <translation id="6426200009596957090">Buka setelan ChromeVox</translation>
-<translation id="642654727595919401"><ph name="DOMAIN" /> mengharuskan Anda mencadangkan data dan mengembalikan <ph name="DEVICE_TYPE" /> ini dalam 1 minggu. <ph name="LINK_BEGIN" />Lihat detailnya<ph name="LINK_END" /></translation>
 <translation id="642729974267661262">Tidak diizinkan memutar suara</translation>
 <translation id="6428982734197629783">Memproses gambar</translation>
 <translation id="6429384232893414837">Error update</translation>
@@ -5548,7 +5547,6 @@
 <translation id="7457384018036134905">Kelola bahasa di setelan Chrome OS</translation>
 <translation id="7458168200501453431">Menggunakan pemeriksa ejaan yang sama seperti yang digunakan di penelusuran Google. Teks yang Anda ketik di browser akan dikirim ke Google.</translation>
 <translation id="7460045493116006516">Tema saat ini yang telah diinstal</translation>
-<translation id="7461729991508684543">{NUM_DAYS,plural, =1{<ph name="DOMAIN" /> mengharuskan Anda mencadangkan data dan mengembalikan <ph name="DEVICE_TYPE" /> ini hari ini. <ph name="LINK_BEGIN" />Lihat detailnya<ph name="LINK_END" />}other{<ph name="DOMAIN" /> mengharuskan Anda mencadangkan data dan mengembalikan <ph name="DEVICE_TYPE" /> ini dalam {NUM_DAYS} hari. <ph name="LINK_BEGIN" />Lihat detailnya<ph name="LINK_END" />}}</translation>
 <translation id="7461924472993315131">Pasang Pin</translation>
 <translation id="746216226901520237">Saat digunakan lagi, ponsel Anda akan membuka kunci <ph name="DEVICE_TYPE" /> ini. Anda dapat menonaktifkan Smart Lock di Setelan.</translation>
 <translation id="7463006580194749499">Tambahkan pengguna</translation>
@@ -6236,7 +6234,6 @@
 <translation id="8226619461731305576">Antrean</translation>
 <translation id="8226628635270268143">Pilih foto dan album favorit</translation>
 <translation id="8227119283605456246">Lampirkan file</translation>
-<translation id="822964464349305906"><ph name="TYPE_1" />, <ph name="TYPE_2" /></translation>
 <translation id="8230134520748321204">Simpan sandi untuk <ph name="ORIGIN" />?</translation>
 <translation id="8234795456569844941">Bantu engineer kami memperbaiki masalah ini. Beri tahu kami yang terjadi tepat sebelum Anda mendapatkan pesan error profil:</translation>
 <translation id="8236917170563564587">Bagikan tab ini saja</translation>
diff --git a/chrome/app/resources/generated_resources_is.xtb b/chrome/app/resources/generated_resources_is.xtb
index fae85f3b..240b4e9 100644
--- a/chrome/app/resources/generated_resources_is.xtb
+++ b/chrome/app/resources/generated_resources_is.xtb
@@ -4689,7 +4689,6 @@
 <translation id="642469772702851743">Eigandinn læsti þessu tæki (raðnúmer: <ph name="SERIAL_NUMBER" />).</translation>
 <translation id="6425556984042222041">Hraði talgervils</translation>
 <translation id="6426200009596957090">Opna ChromeVox stillingar</translation>
-<translation id="642654727595919401"><ph name="DOMAIN" /> krefst þess að þú takir afrit af gögnunum þínum og skilir þessu <ph name="DEVICE_TYPE" /> tæki innan 1 viku.<ph name="LINK_BEGIN" />Sjá nánar<ph name="LINK_END" /></translation>
 <translation id="642729974267661262">Mega ekki spila hljóð</translation>
 <translation id="6428982734197629783">Vinnur úr mynd</translation>
 <translation id="6429384232893414837">Villa við uppfærslu</translation>
@@ -5565,7 +5564,6 @@
 <translation id="7457384018036134905">Stjórna tungumálum í stillingum Chrome OS</translation>
 <translation id="7458168200501453431">Notar sömu ritvilluleit og Google leitin. Textinn sem þú skrifar í vafranum er sendur til Google.</translation>
 <translation id="7460045493116006516">Núverandi þema sem þú settir upp</translation>
-<translation id="7461729991508684543">{NUM_DAYS,plural, =1{<ph name="DOMAIN" /> krefst þess að þú takir afrit af gögnunum þínum og skilir þessu <ph name="DEVICE_TYPE" /> tæki í dag.<ph name="LINK_BEGIN" />Sjá nánar<ph name="LINK_END" />}one{<ph name="DOMAIN" /> krefst þess að þú takir afrit af gögnunum þínum og skilir þessu <ph name="DEVICE_TYPE" /> tæki innan {NUM_DAYS} dags.<ph name="LINK_BEGIN" />Sjá nánar<ph name="LINK_END" />}other{<ph name="DOMAIN" /> krefst þess að þú takir afrit af gögnunum þínum og skilir þessu <ph name="DEVICE_TYPE" /> tæki innan {NUM_DAYS} daga.<ph name="LINK_BEGIN" />Sjá nánar<ph name="LINK_END" />}}</translation>
 <translation id="7461924472993315131">Festa</translation>
 <translation id="746216226901520237">Næst tekur síminn þinn <ph name="DEVICE_TYPE" /> úr lás. Þú getur slökkt á Smart Lock í stillingunum.</translation>
 <translation id="7463006580194749499">Bæta notanda við</translation>
@@ -6256,7 +6254,6 @@
 <translation id="8226619461731305576">Setja í biðröð</translation>
 <translation id="8226628635270268143">Veldu uppáhaldsmyndir og -möppur</translation>
 <translation id="8227119283605456246">Hengja skrá við</translation>
-<translation id="822964464349305906"><ph name="TYPE_1" />, <ph name="TYPE_2" /></translation>
 <translation id="8230134520748321204">Vista aðgangsorð fyrir <ph name="ORIGIN" />?</translation>
 <translation id="8234795456569844941">Hjálpaðu verkfræðingum okkar að leysa vandamálið. Segðu okkur hvað gerðist rétt áður en þú fékkst þessi prófílvilluskilaboð.</translation>
 <translation id="8236917170563564587">Deila þessum flipa í staðinn</translation>
diff --git a/chrome/app/resources/generated_resources_it.xtb b/chrome/app/resources/generated_resources_it.xtb
index 1acf571..8de32b36 100644
--- a/chrome/app/resources/generated_resources_it.xtb
+++ b/chrome/app/resources/generated_resources_it.xtb
@@ -4688,7 +4688,6 @@
 <translation id="642469772702851743">Questo dispositivo (numero di serie <ph name="SERIAL_NUMBER" />) è stato bloccato dal proprietario.</translation>
 <translation id="6425556984042222041">Velocità sintesi vocale</translation>
 <translation id="6426200009596957090">Apri le impostazioni ChromeVox</translation>
-<translation id="642654727595919401"><ph name="DOMAIN" /> richiede di effettuare il backup dei dati e di restituire questo <ph name="DEVICE_TYPE" /> entro una settimana. <ph name="LINK_BEGIN" />Visualizza dettagli<ph name="LINK_END" /></translation>
 <translation id="642729974267661262">Non possono riprodurre suoni</translation>
 <translation id="6428982734197629783">Elaborazione dell'immagine</translation>
 <translation id="6429384232893414837">Errore di aggiornamento</translation>
@@ -5564,7 +5563,6 @@
 <translation id="7457384018036134905">Gestisci le lingue nelle impostazioni di Chrome OS</translation>
 <translation id="7458168200501453431">Consente di utilizzare lo stesso controllo ortografico utilizzato nella Ricerca Google. Il testo che digiti nel browser viene inviato a Google.</translation>
 <translation id="7460045493116006516">Tema installato attualmente</translation>
-<translation id="7461729991508684543">{NUM_DAYS,plural, =1{<ph name="DOMAIN" /> richiede di effettuare il backup dei dati e di restituire questo <ph name="DEVICE_TYPE" /> oggi stesso. <ph name="LINK_BEGIN" />Visualizza dettagli<ph name="LINK_END" />}other{<ph name="DOMAIN" /> richiede di effettuare il backup dei dati e di restituire questo <ph name="DEVICE_TYPE" /> entro {NUM_DAYS} giorni. <ph name="LINK_BEGIN" />Visualizza dettagli<ph name="LINK_END" />}}</translation>
 <translation id="7461924472993315131">Blocca</translation>
 <translation id="746216226901520237">La prossima volta potrai usare il tuo telefono per sbloccare il dispositivo <ph name="DEVICE_TYPE" />. Puoi disattivare Smart Lock nelle Impostazioni.</translation>
 <translation id="7463006580194749499">Aggiungi persona</translation>
@@ -6255,7 +6253,6 @@
 <translation id="8226619461731305576">Coda</translation>
 <translation id="8226628635270268143">Scegli le tue foto e i tuoi album preferiti</translation>
 <translation id="8227119283605456246">Allega file</translation>
-<translation id="822964464349305906"><ph name="TYPE_1" />, <ph name="TYPE_2" /></translation>
 <translation id="8230134520748321204">Salvare la password per <ph name="ORIGIN" />?</translation>
 <translation id="8234795456569844941">Aiuta i nostri tecnici a risolvere il problema. Descrivi cosa è accaduto subito prima di ricevere il messaggio di errore del profilo:</translation>
 <translation id="8236917170563564587">Condividi questa scheda invece</translation>
diff --git a/chrome/app/resources/generated_resources_iw.xtb b/chrome/app/resources/generated_resources_iw.xtb
index bff7926..84e6e889 100644
--- a/chrome/app/resources/generated_resources_iw.xtb
+++ b/chrome/app/resources/generated_resources_iw.xtb
@@ -4689,7 +4689,6 @@
 <translation id="642469772702851743">מכשיר זה (מספר סידורי: <ph name="SERIAL_NUMBER" />) ננעל על-ידי הבעלים.</translation>
 <translation id="6425556984042222041">‏קצב המרת טקסט לדיבור (TTS)</translation>
 <translation id="6426200009596957090">‏פתיחת הגדרות ChromeVox</translation>
-<translation id="642654727595919401">לפי הדרישה של <ph name="DOMAIN" />, עליך לגבות את הנתונים ולהחזיר את המכשיר <ph name="DEVICE_TYPE" /> בתוך שבוע. <ph name="LINK_BEGIN" />פרטים נוספים<ph name="LINK_END" /></translation>
 <translation id="642729974267661262">לא מורשים להשמיע צלילים</translation>
 <translation id="6428982734197629783">התמונה עוברת עיבוד</translation>
 <translation id="6429384232893414837">שגיאת עדכון</translation>
@@ -5565,7 +5564,6 @@
 <translation id="7457384018036134905">‏ניהול שפות בהגדרות Chrome OS</translation>
 <translation id="7458168200501453431">‏נעשה שימוש בבדיקת האיות של חיפוש Google. הטקסט המוקלד בדפדפן נשלח אל Google.</translation>
 <translation id="7460045493116006516">העיצוב הנוכחי</translation>
-<translation id="7461729991508684543">{NUM_DAYS,plural, =1{לפי הדרישה של <ph name="DOMAIN" />, עליך לגבות את הנתונים שלך ולהחזיר את מכשיר ה-<ph name="DEVICE_TYPE" /> היום. <ph name="LINK_BEGIN" />פרטים נוספים<ph name="LINK_END" />}two{לפי הדרישה של <ph name="DOMAIN" />, עליך לגבות את הנתונים שלך ולהחזיר את מכשיר ה-<ph name="DEVICE_TYPE" /> בתוך {NUM_DAYS} ימים. <ph name="LINK_BEGIN" />פרטים נוספים<ph name="LINK_END" />}many{לפי הדרישה של <ph name="DOMAIN" />, עליך לגבות את הנתונים שלך ולהחזיר את מכשיר ה-<ph name="DEVICE_TYPE" /> בתוך {NUM_DAYS} ימים. <ph name="LINK_BEGIN" />פרטים נוספים<ph name="LINK_END" />}other{לפי הדרישה של <ph name="DOMAIN" />, עליך לגבות את הנתונים שלך ולהחזיר את מכשיר ה-<ph name="DEVICE_TYPE" /> בתוך {NUM_DAYS} ימים. <ph name="LINK_BEGIN" />פרטים נוספים<ph name="LINK_END" />}}</translation>
 <translation id="7461924472993315131">הצמדה</translation>
 <translation id="746216226901520237">‏בפעם הבאה, הטלפון יבטל את הנעילה של <ph name="DEVICE_TYPE" />. אפשר להשבית את Smart Lock דרך ההגדרות.</translation>
 <translation id="7463006580194749499">הוספת משתמש</translation>
@@ -6258,7 +6256,6 @@
 <translation id="8226619461731305576">תור</translation>
 <translation id="8226628635270268143">בחירת התמונות והאלבומים האהובים עליך</translation>
 <translation id="8227119283605456246">צירוף קובץ</translation>
-<translation id="822964464349305906"><ph name="TYPE_1" />, <ph name="TYPE_2" /></translation>
 <translation id="8230134520748321204">האם לשמור את הסיסמה של <ph name="ORIGIN" />?</translation>
 <translation id="8234795456569844941">רוצה לעזור למהנדסים שלנו לפתור את הבעיה הזו? אפשר לספר לנו מה קרה לפני שהוצגה לך הודעת השגיאה לגבי הפרופיל:</translation>
 <translation id="8236917170563564587">שיתוף הכרטיסייה הזו</translation>
diff --git a/chrome/app/resources/generated_resources_ja.xtb b/chrome/app/resources/generated_resources_ja.xtb
index 6bfe5fe7..8de05669 100644
--- a/chrome/app/resources/generated_resources_ja.xtb
+++ b/chrome/app/resources/generated_resources_ja.xtb
@@ -4689,7 +4689,6 @@
 <translation id="642469772702851743">このデバイス(SN: <ph name="SERIAL_NUMBER" />)は所有者によってロックされています。</translation>
 <translation id="6425556984042222041">テキスト読み上げの速度</translation>
 <translation id="6426200009596957090">ChromeVox 設定を開く</translation>
-<translation id="642654727595919401"><ph name="DOMAIN" /> が、データをバックアップして、1 週間以内にこの <ph name="DEVICE_TYPE" />を返却するよう求めています。<ph name="LINK_BEGIN" />詳細を表示<ph name="LINK_END" /></translation>
 <translation id="642729974267661262">音声の再生を許可しないサイト</translation>
 <translation id="6428982734197629783">画像を処理しています</translation>
 <translation id="6429384232893414837">更新エラー</translation>
@@ -5565,7 +5564,6 @@
 <translation id="7457384018036134905">Chrome OS の設定で言語を管理する</translation>
 <translation id="7458168200501453431">Google 検索と同じスペルチェックを使用します。ブラウザに入力したテキストは Google に送信されます。</translation>
 <translation id="7460045493116006516">インストールした現在のテーマ</translation>
-<translation id="7461729991508684543">{NUM_DAYS,plural, =1{<ph name="DOMAIN" /> が、データをバックアップして、今日中にこの <ph name="DEVICE_TYPE" />を返却するよう求めています。<ph name="LINK_BEGIN" />詳細を表示<ph name="LINK_END" />}other{<ph name="DOMAIN" /> が、データをバックアップして、{NUM_DAYS} 日以内にこの <ph name="DEVICE_TYPE" />を返却するよう求めています。<ph name="LINK_BEGIN" />詳細を表示<ph name="LINK_END" />}}</translation>
 <translation id="7461924472993315131">固定</translation>
 <translation id="746216226901520237">次回から、スマートフォンで <ph name="DEVICE_TYPE" /> のロックを解除できます。Smart Lock を無効にするには [設定] をご利用ください。</translation>
 <translation id="7463006580194749499">ユーザーを追加</translation>
@@ -6257,7 +6255,6 @@
 <translation id="8226619461731305576">キュー</translation>
 <translation id="8226628635270268143">お気に入りの写真やアルバムを選択してください</translation>
 <translation id="8227119283605456246">添付ファイル</translation>
-<translation id="822964464349305906"><ph name="TYPE_1" />、<ph name="TYPE_2" /></translation>
 <translation id="8230134520748321204"><ph name="ORIGIN" /> のパスワードを保存しますか?</translation>
 <translation id="8234795456569844941">問題解決の手がかりとして、具体的にどのような操作を行ったときにプロフィール エラーのメッセージが表示されたかをお知らせください。</translation>
 <translation id="8236917170563564587">代わりにこのタブを共有</translation>
diff --git a/chrome/app/resources/generated_resources_ka.xtb b/chrome/app/resources/generated_resources_ka.xtb
index a2dae20..4e8b317 100644
--- a/chrome/app/resources/generated_resources_ka.xtb
+++ b/chrome/app/resources/generated_resources_ka.xtb
@@ -4687,7 +4687,6 @@
 <translation id="642469772702851743">ეს მოწყობილობა (ს/ნ: <ph name="SERIAL_NUMBER" />) ჩაკეტილია მფლობელის მიერ.</translation>
 <translation id="6425556984042222041">ტექსტის გახმოვანების სიჩქარე</translation>
 <translation id="6426200009596957090">ChromeVox-ის პარამეტრების გახსნა</translation>
-<translation id="642654727595919401"><ph name="DOMAIN" /> ითხოვს თქვენი მონაცემების სარეზერვო ასლების შექმნას და ამ <ph name="DEVICE_TYPE" />-ის დაბრუნებას 1 კვირის განმავლობაში. <ph name="LINK_BEGIN" />დეტალურად<ph name="LINK_END" /></translation>
 <translation id="642729974267661262">ხმის დაკვრა დაუშვებელია</translation>
 <translation id="6428982734197629783">მიმდინარეობს იმიჯის დამუშავება</translation>
 <translation id="6429384232893414837">განახლებისას წარმოიქმნა შეცდომა</translation>
@@ -5563,7 +5562,6 @@
 <translation id="7457384018036134905">ენების მართვა Chrome OS-ის პარამეტრებიდან</translation>
 <translation id="7458168200501453431">იყენებს მართლწერის იმ შემმოწმებელს, რომელიც გამოიყენება Google Search-ში. ბრაუზერში თქვენ მიერ აკრეფილი ტექსტი ეგზავნება Google-ს.</translation>
 <translation id="7460045493116006516">თქვენ მიერ ამჟამად დაინსტალირებული თემა</translation>
-<translation id="7461729991508684543">{NUM_DAYS,plural, =1{<ph name="DOMAIN" /> დღესვე ითხოვს თქვენი მონაცემების სარეზერვო ასლების შექმნას და ამ <ph name="DEVICE_TYPE" />-ის დაბრუნებას. <ph name="LINK_BEGIN" />დეტალურად<ph name="LINK_END" />}other{<ph name="DOMAIN" /> {NUM_DAYS} დღის განმავლობაში ითხოვს თქვენი მონაცემების სარეზერვო ასლების შექმნას და ამ <ph name="DEVICE_TYPE" />-ის დაბრუნებას. <ph name="LINK_BEGIN" />დეტალურად<ph name="LINK_END" />}}</translation>
 <translation id="7461924472993315131">პინი</translation>
 <translation id="746216226901520237">შემდეგში <ph name="DEVICE_TYPE" /> განიბლოკება თქვენი ტელეფონის მეშვეობით. Smart Lock-ის გამორთვა შესაძლებელია პარამეტრებიდან.</translation>
 <translation id="7463006580194749499">მომხმარებლის დამატება</translation>
@@ -6253,7 +6251,6 @@
 <translation id="8226619461731305576">რიგი</translation>
 <translation id="8226628635270268143">აირჩიეთ თქვენი რჩეული ფოტოები და ალბომები</translation>
 <translation id="8227119283605456246">ფაილის მიმაგრება</translation>
-<translation id="822964464349305906"><ph name="TYPE_1" />, <ph name="TYPE_2" /></translation>
 <translation id="8230134520748321204">გსურთ, <ph name="ORIGIN" />-ის პაროლის შენახვა?</translation>
 <translation id="8234795456569844941">დაეხმარეთ ჩვენს ინჟინრებს ამ პრობლემის მოგვარებაში. გვიამბეთ, რა უძღვოდა წინ პროფილთან დაკავშირებული შეცდომის გამოჩენას:</translation>
 <translation id="8236917170563564587">სანაცვლოდ, ამ ჩანართის გაზიარება</translation>
diff --git a/chrome/app/resources/generated_resources_kk.xtb b/chrome/app/resources/generated_resources_kk.xtb
index fe5c226a..f8bd15d9 100644
--- a/chrome/app/resources/generated_resources_kk.xtb
+++ b/chrome/app/resources/generated_resources_kk.xtb
@@ -4685,7 +4685,6 @@
 <translation id="642469772702851743">Бұл құрылғыны (сериялық нөмірі: <ph name="SERIAL_NUMBER" />) иесі құлыптады.</translation>
 <translation id="6425556984042222041">Мәтінді дыбыстау жылдамдығы</translation>
 <translation id="6426200009596957090">ChromeVox параметрлерін ашу</translation>
-<translation id="642654727595919401"><ph name="DOMAIN" /> домені деректердің сақтық көшірмесін жасап, 1 аптаның ішінде осы <ph name="DEVICE_TYPE" /> құрылғысын қайтаруыңызды қажет етеді.<ph name="LINK_BEGIN" />Толығырақ<ph name="LINK_END" /></translation>
 <translation id="642729974267661262">Дыбысты ойнатуға рұқсаты жоқтар</translation>
 <translation id="6428982734197629783">Кескін өңделуде</translation>
 <translation id="6429384232893414837">Жаңарту кезінде қате шықты</translation>
@@ -5561,7 +5560,6 @@
 <translation id="7457384018036134905">Chrome OS параметрлеріндегі тілдерді басқару</translation>
 <translation id="7458168200501453431">Google Search функциясында пайдаланылатын емлені тексеру құралын қолданады. Браузерде терілген мәтін Google-ға жіберіледі.</translation>
 <translation id="7460045493116006516">Орнатулы тұрған тақырып</translation>
-<translation id="7461729991508684543">{NUM_DAYS,plural, =1{<ph name="DOMAIN" /> домені деректердің сақтық көшірмесін жасап, осы <ph name="DEVICE_TYPE" /> құрылғысын бүгін қайтаруыңызды қажет етеді. <ph name="LINK_BEGIN" />Толығырақ<ph name="LINK_END" />}other{<ph name="DOMAIN" /> домені деректердің сақтық көшірмесін жасап, осы <ph name="DEVICE_TYPE" /> құрылғысын {NUM_DAYS} күн ішінде қайтаруыңызды қажет етеді. <ph name="LINK_BEGIN" />Толығырақ<ph name="LINK_END" />}}</translation>
 <translation id="7461924472993315131">Бекіту</translation>
 <translation id="746216226901520237">Келесіде телефоныңыз <ph name="DEVICE_TYPE" /> құрылғыңыздың құлпын ашады. Smart Lock функциясын "Параметрлер" бөлімінен өшіруге болады.</translation>
 <translation id="7463006580194749499">Адам қосу</translation>
@@ -6252,7 +6250,6 @@
 <translation id="8226619461731305576">Кезек</translation>
 <translation id="8226628635270268143">Өзіңізге ұнайтын фотосуреттер мен альбомдарды таңдау</translation>
 <translation id="8227119283605456246">Файл тіркеу</translation>
-<translation id="822964464349305906"><ph name="TYPE_1" />, <ph name="TYPE_2" /></translation>
 <translation id="8230134520748321204"><ph name="ORIGIN" /> құпия сөзі сақталсын ба?</translation>
 <translation id="8234795456569844941">Біздің инженерлерге осы мәселені шегуге көмектесіңіз. Профиль қатесі туралы хабарын алмастан бұрын не болғанын айтыңыз:</translation>
 <translation id="8236917170563564587">Орнына осы қойындыны бөлісу</translation>
diff --git a/chrome/app/resources/generated_resources_km.xtb b/chrome/app/resources/generated_resources_km.xtb
index c50dff12..b3511a2 100644
--- a/chrome/app/resources/generated_resources_km.xtb
+++ b/chrome/app/resources/generated_resources_km.xtb
@@ -4689,7 +4689,6 @@
 <translation id="642469772702851743">ឧបករណ៍​នេះ (SN៖ <ph name="SERIAL_NUMBER" />) ត្រូវបាន​ចាក់សោ​ដោយម្ចាស់។</translation>
 <translation id="6425556984042222041">ល្បឿន​បំប្លែង​អត្ថបទ​ទៅជា​ការនិយាយ</translation>
 <translation id="6426200009596957090">បើកការកំណត់ ChromeVox</translation>
-<translation id="642654727595919401"><ph name="DOMAIN" /> តម្រូវឱ្យអ្នកបម្រុងទុក​ទិន្នន័យរបស់អ្នក និងបញ្ជូន <ph name="DEVICE_TYPE" /> នេះត្រឡប់ទៅវិញ​ក្នុងរយៈពេល 1 សប្ដាហ៍។ <ph name="LINK_BEGIN" />សូមមើល​ព័ត៌មានលម្អិត<ph name="LINK_END" /></translation>
 <translation id="642729974267661262">មិនអនុញ្ញាតឱ្យចាក់សំឡេងទេ</translation>
 <translation id="6428982734197629783">កំពុង​ដំណើរការ​រូបភាព</translation>
 <translation id="6429384232893414837">មាន​បញ្ហា​ក្នុង​ការ​ធ្វើ​បច្ចុប្បន្នភាព</translation>
@@ -5565,7 +5564,6 @@
 <translation id="7457384018036134905">គ្រប់គ្រងភាសានៅក្នុងការកំណត់ Chrome OS</translation>
 <translation id="7458168200501453431">ប្រើ​មុខងារ​ពិនិត្យអក្ខរាវិរុទ្ធតែមួយ ដែល​ត្រូវបានប្រើ​ក្នុង​កម្មវិធី​ស្វែងរក​នៅលើ Google ។ អក្សរដែល​អ្នកវាយបញ្ចូល​នៅក្នុង​កម្មវិធីរុករក​តាមអ៊ីនធឺណិត​ត្រូវបានផ្ញើ​ទៅ Google ។</translation>
 <translation id="7460045493116006516">រចនាប័ទ្ម​បច្ចុប្បន្នដែលអ្នក​បានដំឡើង</translation>
-<translation id="7461729991508684543">{NUM_DAYS,plural, =1{<ph name="DOMAIN" /> តម្រូវឱ្យអ្នកបម្រុងទុក​ទិន្នន័យរបស់អ្នក និងបញ្ជូន <ph name="DEVICE_TYPE" /> នេះត្រឡប់ទៅវិញនៅថ្ងៃនេះ។ <ph name="LINK_BEGIN" />សូមមើលព័ត៌មានលម្អិត<ph name="LINK_END" />}other{<ph name="DOMAIN" /> តម្រូវឱ្យអ្នកបម្រុងទុក​ទិន្នន័យរបស់អ្នក និងបញ្ជូន <ph name="DEVICE_TYPE" /> នេះត្រឡប់ទៅវិញក្នុងរយៈពេល {NUM_DAYS} ថ្ងៃ។ <ph name="LINK_BEGIN" />សូមមើលព័ត៌មានលម្អិត<ph name="LINK_END" />}}</translation>
 <translation id="7461924472993315131">លេខសម្គាល់</translation>
 <translation id="746216226901520237">លើកក្រោយ ទូរសព្ទរបស់អ្នក​នឹងដោះសោ <ph name="DEVICE_TYPE" /> របស់អ្នក។ អ្នក​អាច​បិទ Smart Lock នៅក្នុង​ការកំណត់។</translation>
 <translation id="7463006580194749499">បន្ថែមបុគ្គល</translation>
@@ -6256,7 +6254,6 @@
 <translation id="8226619461731305576">ជួរ</translation>
 <translation id="8226628635270268143">ជ្រើសរើស​រូបថត និងអាល់ប៊ុមដែលអ្នកចូលចិត្ត</translation>
 <translation id="8227119283605456246">ភ្ជាប់ឯកសារ</translation>
-<translation id="822964464349305906"><ph name="TYPE_1" />, <ph name="TYPE_2" /></translation>
 <translation id="8230134520748321204">រក្សាទុក​ពាក្យសម្ងាត់​សម្រាប់ <ph name="ORIGIN" />?</translation>
 <translation id="8234795456569844941">សូម​ជួយ​វិស្វករ​របស់យើង​ក្នុងការដោះស្រាយបញ្ហានេះ។ ប្រាប់យើង​អំពី​អ្វី​ដែលបាន​កើតឡើង មុនពេល​ដែលអ្នក​ទទួល​បានសារ​បញ្ហាអំពី​កម្រង​ព័ត៌មាននេះ៖</translation>
 <translation id="8236917170563564587">ចែករំលែក​ផ្ទាំងនេះ​ជំនួសវិញ</translation>
diff --git a/chrome/app/resources/generated_resources_kn.xtb b/chrome/app/resources/generated_resources_kn.xtb
index 90b0eba..27a9d68 100644
--- a/chrome/app/resources/generated_resources_kn.xtb
+++ b/chrome/app/resources/generated_resources_kn.xtb
@@ -4692,7 +4692,6 @@
 <translation id="642469772702851743">ಈ ಸಾಧನವು (SN: <ph name="SERIAL_NUMBER" />) ಅದರ ಮಾಲೀಕರಿಂದ ಲಾಕ್ ಮಾಡಲ್ಪಟ್ಟಿದೆ.</translation>
 <translation id="6425556984042222041">ಪಠ್ಯದಿಂದ ಧ್ವನಿ ದರ</translation>
 <translation id="6426200009596957090">ChromeVox ಸೆಟಿಂಗ್‌ಗಳನ್ನು ತೆರೆಯಿರಿ</translation>
-<translation id="642654727595919401"><ph name="DOMAIN" />, ನಿಮ್ಮ ಡೇಟಾವನ್ನು ನೀವು ಬ್ಯಾಕಪ್ ಮಾಡಬೇಕೆಂದು ಮತ್ತು 1 ವಾರದ ಒಳಗಾಗಿ ಈ <ph name="DEVICE_TYPE" /> ಸಾಧನವನ್ನು ಹಿಂತಿರುಗಿಸಬೇಕೆಂದು ಬಯಸುತ್ತದೆ.<ph name="LINK_BEGIN" />ವಿವರಗಳನ್ನು ನೋಡಿ<ph name="LINK_END" /></translation>
 <translation id="642729974267661262">ಧ್ವನಿ ಪ್ಲೇ ಮಾಡಲು ಈ ಸೈಟ್‌ಗಳಿಗೆ ಅನುಮತಿಸಲಾಗುವುದಿಲ್ಲ</translation>
 <translation id="6428982734197629783">ಚಿತ್ರವನ್ನು ಪ್ರಕ್ರಿಯೆಗೊಳಿಸಲಾಗುತ್ತಿದೆ</translation>
 <translation id="6429384232893414837">ಅಪ್‌ಡೇಟ್ ದೋಷ</translation>
@@ -5569,7 +5568,6 @@
 <translation id="7457384018036134905">Chrome OS ಸೆಟ್ಟಿಂಗ್‌ಗಳಲ್ಲಿರುವ ಭಾಷೆಗಳನ್ನು ನಿರ್ವಹಿಸಿ</translation>
 <translation id="7458168200501453431">Google ಹುಡುಕಾಟದಲ್ಲಿ ಬಳಸುವ ಕಾಗುಣಿತ ಪರೀಕ್ಷಕವನ್ನೇ ಬಳಸಿ. ನೀವು ಬ್ರೌಸರ್‌ನಲ್ಲಿ ಟೈಪ್ ಮಾಡುವ ಪಠ್ಯವನ್ನು Google ಗೆ ಕಳುಹಿಸಲಾಗುತ್ತದೆ.</translation>
 <translation id="7460045493116006516">ನೀವು ಇನ್‌ಸ್ಟಾಲ್ ಮಾಡಿರುವ ಪ್ರಸ್ತುತ ಥೀಮ್</translation>
-<translation id="7461729991508684543">{NUM_DAYS,plural, =1{<ph name="DOMAIN" />, ನಿಮ್ಮ ಡೇಟಾವನ್ನು ನೀವು ಬ್ಯಾಕಪ್ ಮಾಡಬೇಕೆಂದು ಮತ್ತು ಈ <ph name="DEVICE_TYPE" /> ಸಾಧನವನ್ನು ಇಂದೇ ಹಿಂತಿರುಗಿಸಬೇಕೆಂದು ಬಯಸುತ್ತದೆ.<ph name="LINK_BEGIN" />ವಿವರಗಳನ್ನು ನೋಡಿ<ph name="LINK_END" />}one{<ph name="DOMAIN" />, ನಿಮ್ಮ ಡೇಟಾವನ್ನು ನೀವು ಬ್ಯಾಕಪ್ ಮಾಡಬೇಕೆಂದು ಮತ್ತು ಈ <ph name="DEVICE_TYPE" /> ಸಾಧನವನ್ನು {NUM_DAYS} ಗಳ ಒಳಗಾಗಿ ಹಿಂತಿರುಗಿಸಬೇಕೆಂದು ಬಯಸುತ್ತದೆ.<ph name="LINK_BEGIN" />ವಿವರಗಳನ್ನು ನೋಡಿ<ph name="LINK_END" />}other{<ph name="DOMAIN" />, ನಿಮ್ಮ ಡೇಟಾವನ್ನು ನೀವು ಬ್ಯಾಕಪ್ ಮಾಡಬೇಕೆಂದು ಮತ್ತು ಈ <ph name="DEVICE_TYPE" /> ಸಾಧನವನ್ನು {NUM_DAYS} ಗಳ ಒಳಗಾಗಿ ಹಿಂತಿರುಗಿಸಬೇಕೆಂದು ಬಯಸುತ್ತದೆ.<ph name="LINK_BEGIN" />ವಿವರಗಳನ್ನು ನೋಡಿ<ph name="LINK_END" />}}</translation>
 <translation id="7461924472993315131">ಪಿನ್</translation>
 <translation id="746216226901520237">ಮುಂದಿನ ಬಾರಿ, ನಿಮ್ಮ ಫೋನ್ ನಿಮ್ಮ <ph name="DEVICE_TYPE" /> ಅನ್ನು ಅನ್‌ಲಾಕ್ ಮಾಡುತ್ತದೆ. ನೀವು ಸೆಟ್ಟಿಂಗ್‌ಗಳಲ್ಲಿ Smart Lock ಅನ್ನು ಆಫ್ ಮಾಡಬಹುದು.</translation>
 <translation id="7463006580194749499">ವ್ಯಕ್ತಿಯನ್ನು ಸೇರಿಸು</translation>
@@ -6257,7 +6255,6 @@
 <translation id="8226619461731305576">ಸರತಿ</translation>
 <translation id="8226628635270268143">ನಿಮ್ಮ ಮೆಚ್ಚಿನ ಫೋಟೋಗಳು ಮತ್ತು ಆಲ್ಬಮ್‌ಗಳನ್ನು ಆಯ್ಕೆಮಾಡಿ</translation>
 <translation id="8227119283605456246">ಫೈಲ್‌‎ ಲಗತ್ತಿಸಿ</translation>
-<translation id="822964464349305906"><ph name="TYPE_1" />, <ph name="TYPE_2" /></translation>
 <translation id="8230134520748321204"><ph name="ORIGIN" /> ಗಾಗಿ ಪಾಸ್‌ವರ್ಡ್‌ ಉಳಿಸುವುದೇ?</translation>
 <translation id="8234795456569844941">ಈ ಸಮಸ್ಯೆಯನ್ನು ಸರಿಪಡಿಸಲು ನಮ್ಮ ಇಂಜಿನಿಯರ್‌ಗಳಿಗೆ ಸಹಾಯ ಮಾಡಿ. ಪ್ರೊಫೈಲ್ ದೋಷ ಸಂದೇಶವನ್ನು ಪಡೆಯುವುದಕ್ಕೆ ಸ್ವಲ್ಪ ಮೊದಲು ಏನಾಯಿತು ಎಂದು ನಮಗೆ ತಿಳಿಸಿ:</translation>
 <translation id="8236917170563564587">ಬದಲಾಗಿ ಈ ಟ್ಯಾಬ್ ಅನ್ನು ಹಂಚಿಕೊಳ್ಳಿ</translation>
diff --git a/chrome/app/resources/generated_resources_ko.xtb b/chrome/app/resources/generated_resources_ko.xtb
index 4caf0d0..3d50e77 100644
--- a/chrome/app/resources/generated_resources_ko.xtb
+++ b/chrome/app/resources/generated_resources_ko.xtb
@@ -4687,7 +4687,6 @@
 <translation id="642469772702851743">소유자가 이 기기(SN: <ph name="SERIAL_NUMBER" />)를 잠갔습니다.</translation>
 <translation id="6425556984042222041">텍스트 음성 변환 속도</translation>
 <translation id="6426200009596957090">ChromeVox 설정 열기</translation>
-<translation id="642654727595919401"><ph name="DOMAIN" />에서 데이터를 백업하고 일주일 이내에 이 <ph name="DEVICE_TYPE" /> 기기를 반납할 것을 요청합니다. <ph name="LINK_BEGIN" />세부정보 보기<ph name="LINK_END" /></translation>
 <translation id="642729974267661262">소리 재생이 허용되지 않음</translation>
 <translation id="6428982734197629783">이미지 처리 중</translation>
 <translation id="6429384232893414837">업데이트 오류</translation>
@@ -5563,7 +5562,6 @@
 <translation id="7457384018036134905">Chrome OS 설정에서 언어 관리</translation>
 <translation id="7458168200501453431">Google 검색에서 사용되는 것과 동일한 맞춤법 검사기를 사용합니다. 브라우저에 입력하는 텍스트는 Google로 전송됩니다.</translation>
 <translation id="7460045493116006516">내가 설치한 현재 테마입니다.</translation>
-<translation id="7461729991508684543">{NUM_DAYS,plural, =1{<ph name="DOMAIN" />에서 데이터를 백업하고 오늘 이 <ph name="DEVICE_TYPE" /> 기기를 반납할 것을 요청합니다. <ph name="LINK_BEGIN" />세부정보 보기<ph name="LINK_END" />}other{<ph name="DOMAIN" />에서 데이터를 백업하고 {NUM_DAYS}일 이내에 이 <ph name="DEVICE_TYPE" /> 기기를 반납할 것을 요청합니다. <ph name="LINK_BEGIN" />세부정보 보기<ph name="LINK_END" />}}</translation>
 <translation id="7461924472993315131">고정</translation>
 <translation id="746216226901520237">다음번에는 휴대전화를 통해 <ph name="DEVICE_TYPE" />이 잠금 해제됩니다. 설정에서 Smart Lock을 사용 중지할 수 있습니다.</translation>
 <translation id="7463006580194749499">사용자 추가</translation>
@@ -6255,7 +6253,6 @@
 <translation id="8226619461731305576">대기열</translation>
 <translation id="8226628635270268143">좋아하는 사진 및 앨범을 선택합니다.</translation>
 <translation id="8227119283605456246">파일 첨부</translation>
-<translation id="822964464349305906"><ph name="TYPE_1" />, <ph name="TYPE_2" /></translation>
 <translation id="8230134520748321204"><ph name="ORIGIN" />의 비밀번호를 저장하시겠습니까?</translation>
 <translation id="8234795456569844941">Google 엔지니어가 이 문제를 해결하도록 도와주세요. 프로필 오류 메시지가 표시되기 직전에 무슨 일이 있었는지 알려 주시기 바랍니다.</translation>
 <translation id="8236917170563564587">이 탭을 대신 공유</translation>
diff --git a/chrome/app/resources/generated_resources_ky.xtb b/chrome/app/resources/generated_resources_ky.xtb
index 4e65e71eb..9b423bb 100644
--- a/chrome/app/resources/generated_resources_ky.xtb
+++ b/chrome/app/resources/generated_resources_ky.xtb
@@ -4688,7 +4688,6 @@
 <translation id="642469772702851743">Бул түзмөк (SN: <ph name="SERIAL_NUMBER" />) ээси тарабынан кулпуланган.</translation>
 <translation id="6425556984042222041">Кеп синтезаторунун ылдамдыгы</translation>
 <translation id="6426200009596957090">ChromeVox жөндөөлөрүн ачуу</translation>
-<translation id="642654727595919401"><ph name="DOMAIN" /> маалыматтын камдык көчүрмөсүн сактап, бул <ph name="DEVICE_TYPE" /> түзмөгүн 1 аптанын ичинде кайтарууну талап кылууда.<ph name="LINK_BEGIN" />Чоо-жайын көрүү<ph name="LINK_END" /></translation>
 <translation id="642729974267661262">Үн чыгара албайт</translation>
 <translation id="6428982734197629783">Сүрөт иштелүүдө</translation>
 <translation id="6429384232893414837">Жаңыртуу катасы</translation>
@@ -5564,7 +5563,6 @@
 <translation id="7457384018036134905">Chrome OS жөндөөлөрүнөн тилдерди башкаруу</translation>
 <translation id="7458168200501453431">Google издөөдө колдонулган орфографияны текшерүү куралын колдонот. Серепчиде терилген текстти Google кызматтарына жөнөтүп турат.</translation>
 <translation id="7460045493116006516">Сиз орнотуп алган учурдагы тема</translation>
-<translation id="7461729991508684543">{NUM_DAYS,plural, =1{<ph name="DOMAIN" /> дайындарыңыздын камдык көчүрмөсүн сактап, бул <ph name="DEVICE_TYPE" /> түзмөгүн бүгүн кайтарууну талап кылууда.<ph name="LINK_BEGIN" />Чоо-жайын көрүү<ph name="LINK_END" />}other{<ph name="DOMAIN" /> маалыматтын камдык көчүрмөсүн сактап, бул <ph name="DEVICE_TYPE" /> түзмөгүн {NUM_DAYS} күндүн ичинде кайтарууну талап кылууда.<ph name="LINK_BEGIN" />Чоо-жайын көрүү<ph name="LINK_END" />}}</translation>
 <translation id="7461924472993315131">Кадап коюу</translation>
 <translation id="746216226901520237">Эми <ph name="DEVICE_TYPE" /> түзмөгүнүн кулпусун телефонуңуз менен ачасыз. Жөндөөлөргө өтүп, Smart Lock'ту өчүрүп койсоңуз болот.</translation>
 <translation id="7463006580194749499">Адам кошуу</translation>
@@ -6255,7 +6253,6 @@
 <translation id="8226619461731305576">Кезекке тургузуу</translation>
 <translation id="8226628635270268143">Сүйүктүү сүрөттөр менен альбомдорду тандоо</translation>
 <translation id="8227119283605456246">Файл тиркөө</translation>
-<translation id="822964464349305906"><ph name="TYPE_1" />, <ph name="TYPE_2" /></translation>
 <translation id="8230134520748321204"><ph name="ORIGIN" /> үчүн сырсөз сакталсынбы?</translation>
 <translation id="8234795456569844941">Биздин инженерлерге бул көйгөйдү чечүүгө жардам бериңиз. Профилдеги ката жөнүндө билдирүүнү алгандан мурун эмне болуп кеткенин айтып бериңиз:</translation>
 <translation id="8236917170563564587">Анын ордуна бул өтмөктү бөлүшүңүз</translation>
diff --git a/chrome/app/resources/generated_resources_lo.xtb b/chrome/app/resources/generated_resources_lo.xtb
index 6d76ed8..5abdd10 100644
--- a/chrome/app/resources/generated_resources_lo.xtb
+++ b/chrome/app/resources/generated_resources_lo.xtb
@@ -4686,7 +4686,6 @@
 <translation id="642469772702851743">ອຸປະກອນນີ້ (SN: <ph name="SERIAL_NUMBER" />) ຖືກລັອກໄວ້ໂດຍເຈົ້າຂອງ.</translation>
 <translation id="6425556984042222041">ອັດຕາການປ່ຽນຂໍ້ຄວາມເປັນສຽງເວົ້າ</translation>
 <translation id="6426200009596957090">ເປີດການຕັ້ງຄ່າ ChromeVox</translation>
-<translation id="642654727595919401"><ph name="DOMAIN" /> ກຳນົດໃຫ້ທ່ານສຳຮອງຂໍ້ມູນຂອງທ່ານໄວ້ ແລະ ສົ່ງ <ph name="DEVICE_TYPE" /> ນີ້ຄືນພາຍໃນ 1 ອາທິດ.<ph name="LINK_BEGIN" />ເບິ່ງລາຍລະອຽດ<ph name="LINK_END" /></translation>
 <translation id="642729974267661262">ບໍ່ໄດ້ຮັບອະນຸຍາດໃຫ້ຫຼິ້ນສຽງ</translation>
 <translation id="6428982734197629783">ກຳລັງປະມວນຜົນຮູບ</translation>
 <translation id="6429384232893414837">ອັບເດດຜິດພາດ</translation>
@@ -5562,7 +5561,6 @@
 <translation id="7457384018036134905">ຈັດການພາສາໃນການຕັ້ງຄ່າ Chrome OS</translation>
 <translation id="7458168200501453431">ໃຊ້ຕົວກວດການສະກົດຄໍາດຽວກັນກັບທີ່ໃຊ້ໃນ Google ຊອກຫາ. ລະບົບຈະສົ່ງຂໍ້ຄວາມທີ່ທ່ານພິມໃນໂປຣແກຣມທ່ອງເວັບໄປໃຫ້ Google.</translation>
 <translation id="7460045493116006516">ຮູບແບບສີສັນປັດຈຸບັນທີ່ທ່ານໄດ້ຕິດຕັ້ງ</translation>
-<translation id="7461729991508684543">{NUM_DAYS,plural, =1{<ph name="DOMAIN" /> ກຳນົດໃຫ້ທ່ານສຳຮອງຂໍ້ມູນຂອງທ່ານໄວ້ ແລະ ສົ່ງ <ph name="DEVICE_TYPE" /> ນີ້ຄືນພາຍໃນມື້ນີ້.<ph name="LINK_BEGIN" />ເບິ່ງລາຍລະອຽດ<ph name="LINK_END" />}other{<ph name="DOMAIN" /> ກຳນົດໃຫ້ທ່ານຕ້ອງສຳຮອງຂໍ້ມູນຂອງທ່ານໄວ້ ແລະ ສົ່ງ <ph name="DEVICE_TYPE" /> ນີ້ຄືນພາຍໃນ {NUM_DAYS} ມື້. <ph name="LINK_BEGIN" />ເບິ່ງລາຍລະອຽດ<ph name="LINK_END" />}}</translation>
 <translation id="7461924472993315131">ປັກໝຸດ</translation>
 <translation id="746216226901520237">ຄັ້ງຕໍ່ໄປ, ໂທລະສັບຂອງທ່ານຈະປົດລັອກ <ph name="DEVICE_TYPE" /> ຂອງທ່ານ. ທ່ານສາມາດປິດ Smart Lock ໄດ້ໃນການຕັ້ງຄ່າ.</translation>
 <translation id="7463006580194749499">ເພີ່ມບຸກຄົນ</translation>
@@ -6252,7 +6250,6 @@
 <translation id="8226619461731305576">ຄິວ</translation>
 <translation id="8226628635270268143">ເລືອກຮູບພາບ ແລະ ອະລະບໍ້າທີ່ທ່ານມັກ</translation>
 <translation id="8227119283605456246">ຄັດ​ຕິດ​ໄຟລ໌</translation>
-<translation id="822964464349305906"><ph name="TYPE_1" />, <ph name="TYPE_2" /></translation>
 <translation id="8230134520748321204">ບັນທຶກລະຫັດຜ່ານສຳລັບ <ph name="ORIGIN" /> ບໍ?</translation>
 <translation id="8234795456569844941">ກະລຸນາຊ່ວຍວິສະວະກອນຂອງພວກເຮົາແກ້ໄຂບັນຫານີ້. ບອກພວກເຮົາສິ່ງທີ່ເກີດຂຶ້ນທັນທີກ່ອນທີ່ທ່ານໄດ້ຮັບຂໍ້ຄວາມສະແດງຂໍ້ຜິດພາດກ່ຽວກັບໂປຣໄຟລ໌ດັ່ງກ່າວ:</translation>
 <translation id="8236917170563564587">ແບ່ງປັນແຖບນີ້ແທນ</translation>
diff --git a/chrome/app/resources/generated_resources_lt.xtb b/chrome/app/resources/generated_resources_lt.xtb
index 2af7138..8a52b468 100644
--- a/chrome/app/resources/generated_resources_lt.xtb
+++ b/chrome/app/resources/generated_resources_lt.xtb
@@ -4693,7 +4693,6 @@
 <translation id="642469772702851743">Šį įrenginį (serijos Nr. <ph name="SERIAL_NUMBER" />) užrakino savininkas.</translation>
 <translation id="6425556984042222041">Teksto į kalbą sparta</translation>
 <translation id="6426200009596957090">Atidaryti „ChromeVox“ nustatymus</translation>
-<translation id="642654727595919401">Domene <ph name="DOMAIN" /> reikalaujama, kad sukurtumėte atsarginę duomenų kopiją ir grąžintumėte šį „<ph name="DEVICE_TYPE" />“ įrenginį per savaitę. <ph name="LINK_BEGIN" />Žr. išsamią informaciją<ph name="LINK_END" /></translation>
 <translation id="642729974267661262">Neleidžiama leisti garso</translation>
 <translation id="6428982734197629783">Apdorojamas vaizdas</translation>
 <translation id="6429384232893414837">Atnaujinimo klaida</translation>
@@ -5569,7 +5568,6 @@
 <translation id="7457384018036134905">Tvarkyti kalbas „Chrome“ OS nustatymuose</translation>
 <translation id="7458168200501453431">Naudojamas tas pats rašybos tikrinimas kaip ir „Google“ paieškoje. Tekstas, kurį įvedate naršyklėje, nusiunčiamas „Google“.</translation>
 <translation id="7460045493116006516">Dabartinė jūsų įdiegta tema</translation>
-<translation id="7461729991508684543">{NUM_DAYS,plural, =1{Domene <ph name="DOMAIN" /> reikalaujama, kad sukurtumėte atsarginę duomenų kopiją ir grąžintumėte šį „<ph name="DEVICE_TYPE" />“ įrenginį šiandien. <ph name="LINK_BEGIN" />Žr. išsamią informaciją<ph name="LINK_END" />}one{Domene <ph name="DOMAIN" /> reikalaujama, kad sukurtumėte atsarginę duomenų kopiją ir grąžintumėte šį „<ph name="DEVICE_TYPE" />“ įrenginį per  {NUM_DAYS} dieną. <ph name="LINK_BEGIN" />Žr. išsamią informaciją<ph name="LINK_END" />}few{Domene <ph name="DOMAIN" /> reikalaujama, kad sukurtumėte atsarginę duomenų kopiją ir grąžintumėte šį „<ph name="DEVICE_TYPE" />“ įrenginį per  {NUM_DAYS} dienas. <ph name="LINK_BEGIN" />Žr. išsamią informaciją<ph name="LINK_END" />}many{Domene <ph name="DOMAIN" /> reikalaujama, kad sukurtumėte atsarginę duomenų kopiją ir grąžintumėte šį „<ph name="DEVICE_TYPE" />“ įrenginį per  {NUM_DAYS} dienos. <ph name="LINK_BEGIN" />Žr. išsamią informaciją<ph name="LINK_END" />}other{Domene <ph name="DOMAIN" /> reikalaujama, kad sukurtumėte atsarginę duomenų kopiją ir grąžintumėte šį „<ph name="DEVICE_TYPE" />“ įrenginį per  {NUM_DAYS} dienų. <ph name="LINK_BEGIN" />Žr. išsamią informaciją<ph name="LINK_END" />}}</translation>
 <translation id="7461924472993315131">Prisegti</translation>
 <translation id="746216226901520237">Kitą kartą telefonu galėsite atrakinti „<ph name="DEVICE_TYPE" />“. Funkciją „Smart Lock“ galite išjungti „Nustatymų“ skiltyje.</translation>
 <translation id="7463006580194749499">Pridėti asmenį</translation>
@@ -6261,7 +6259,6 @@
 <translation id="8226619461731305576">Eilė</translation>
 <translation id="8226628635270268143">Pasirinkite mėgstamiausias nuotraukas ir albumus</translation>
 <translation id="8227119283605456246">Pridėtas failas</translation>
-<translation id="822964464349305906"><ph name="TYPE_1" />, <ph name="TYPE_2" /></translation>
 <translation id="8230134520748321204">Išsaugoti <ph name="ORIGIN" /> slaptažodį?</translation>
 <translation id="8234795456569844941">Padėkite inžinieriams išspręsti šią problemą. Papasakokite, kas vyko prieš parodant profilio klaidos pranešimą:</translation>
 <translation id="8236917170563564587">Geriau bendrinti šį skirtuką</translation>
diff --git a/chrome/app/resources/generated_resources_lv.xtb b/chrome/app/resources/generated_resources_lv.xtb
index 0ee92cb8..5084e5a 100644
--- a/chrome/app/resources/generated_resources_lv.xtb
+++ b/chrome/app/resources/generated_resources_lv.xtb
@@ -4691,7 +4691,6 @@
 <translation id="642469772702851743">Šo ierīci (sērijas numurs: <ph name="SERIAL_NUMBER" />) bloķēja īpašnieks.</translation>
 <translation id="6425556984042222041">Teksta pārvēršanas runā ātrums</translation>
 <translation id="6426200009596957090">Atvērt ChromeVox iestatījumus</translation>
-<translation id="642654727595919401"><ph name="DOMAIN" /> pieprasa, lai jūs dublētu datus un atdotu šo <ph name="DEVICE_TYPE" /> ierīci nedēļas laikā.<ph name="LINK_BEGIN" />Skatīt detalizētu informāciju<ph name="LINK_END" /></translation>
 <translation id="642729974267661262">Nedrīkst atskaņot skaņu</translation>
 <translation id="6428982734197629783">Notiek attēla apstrāde</translation>
 <translation id="6429384232893414837">Atjaunināšanas kļūda</translation>
@@ -5567,7 +5566,6 @@
 <translation id="7457384018036134905">Valodu pārvaldība Chrome OS iestatījumos</translation>
 <translation id="7458168200501453431">Tiek izmantots tas pats pareizrakstības pārbaudītājs, kas tiek izmantots Google meklēšanā. Pārlūkā ievadītais teksts tiek nosūtīts Google serveriem.</translation>
 <translation id="7460045493116006516">Pašlaik instalētais motīvs</translation>
-<translation id="7461729991508684543">{NUM_DAYS,plural, =1{<ph name="DOMAIN" /> pieprasa, lai jūs dublētu datus un atdotu šo <ph name="DEVICE_TYPE" /> ierīci šodien.<ph name="LINK_BEGIN" />Skatīt detalizētu informāciju<ph name="LINK_END" />}zero{<ph name="DOMAIN" /> pieprasa, lai jūs dublētu datus un atdotu šo <ph name="DEVICE_TYPE" /> ierīci {NUM_DAYS} dienu laikā.<ph name="LINK_BEGIN" />Skatīt detalizētu informāciju<ph name="LINK_END" />}one{<ph name="DOMAIN" /> pieprasa, lai jūs dublētu datus un atdotu šo <ph name="DEVICE_TYPE" /> ierīci {NUM_DAYS} dienas laikā.<ph name="LINK_BEGIN" />Skatīt detalizētu informāciju<ph name="LINK_END" />}other{<ph name="DOMAIN" /> pieprasa, lai jūs dublētu datus un atdotu šo <ph name="DEVICE_TYPE" /> ierīci {NUM_DAYS} dienu laikā.<ph name="LINK_BEGIN" />Skatīt detalizētu informāciju<ph name="LINK_END" />}}</translation>
 <translation id="7461924472993315131">Piespraust</translation>
 <translation id="746216226901520237">Nākamajā reizē šīs ierīces <ph name="DEVICE_TYPE" /> atbloķēšanai tiks izmantots jūsu tālrunis. Iestatījumos varat izslēgt Smart Lock.</translation>
 <translation id="7463006580194749499">Pievienot personu</translation>
@@ -6258,7 +6256,6 @@
 <translation id="8226619461731305576">Rinda</translation>
 <translation id="8226628635270268143">Izvēlieties savus iecienītākos fotoattēlus un albumus.</translation>
 <translation id="8227119283605456246">Pievienot failu</translation>
-<translation id="822964464349305906"><ph name="TYPE_1" />, <ph name="TYPE_2" /></translation>
 <translation id="8230134520748321204">Vai saglabāt paroli vietnei <ph name="ORIGIN" />?</translation>
 <translation id="8234795456569844941">Palīdziet mūsu inženieriem novērst šo problēmu. Norādiet, kas notika tieši pirms tam, kad tika parādīts profila kļūdas ziņojums.</translation>
 <translation id="8236917170563564587">Labāk kopīgot šo cilni</translation>
diff --git a/chrome/app/resources/generated_resources_mk.xtb b/chrome/app/resources/generated_resources_mk.xtb
index 45fbed2..cf0daec 100644
--- a/chrome/app/resources/generated_resources_mk.xtb
+++ b/chrome/app/resources/generated_resources_mk.xtb
@@ -4689,7 +4689,6 @@
 <translation id="642469772702851743">Сопственикот го заклучил овој уред (СБ: <ph name="SERIAL_NUMBER" />).</translation>
 <translation id="6425556984042222041">Брзина на говорот за „Од текст во говор“</translation>
 <translation id="6426200009596957090">Отвори ги поставките за ChromeVox</translation>
-<translation id="642654727595919401"><ph name="DOMAIN" /> бара да направите бекап на вашите податоци и да го вратите овој <ph name="DEVICE_TYPE" /> во рок од 1 седмица.<ph name="LINK_BEGIN" />Погледнете ги деталите<ph name="LINK_END" /></translation>
 <translation id="642729974267661262">Не им е дозволено да пуштаат звук</translation>
 <translation id="6428982734197629783">Сликата се обработува</translation>
 <translation id="6429384232893414837">Грешка при ажурирање</translation>
@@ -5565,7 +5564,6 @@
 <translation id="7457384018036134905">Управувајте со јазиците во поставките за Chrome OS</translation>
 <translation id="7458168200501453431">Ја користи истата проверка на правопис што се користи и во „Пребарување на Google“. Текстот што ќе го напишете во прелистувачот се испраќа до Google.</translation>
 <translation id="7460045493116006516">Темата што ви е инсталирана</translation>
-<translation id="7461729991508684543">{NUM_DAYS,plural, =1{<ph name="DOMAIN" /> бара да направите бекап на вашите податоци и да го вратите овој <ph name="DEVICE_TYPE" /> денес.<ph name="LINK_BEGIN" />Погледнете ги деталите<ph name="LINK_END" />}one{<ph name="DOMAIN" /> бара да направите бекап на вашите податоци и да го вратите овој <ph name="DEVICE_TYPE" /> во рок од {NUM_DAYS} ден.<ph name="LINK_BEGIN" />Погледнете ги деталите<ph name="LINK_END" />}other{<ph name="DOMAIN" /> бара да направите бекап на вашите податоци и да го вратите овој <ph name="DEVICE_TYPE" /> во рок од {NUM_DAYS} дена.<ph name="LINK_BEGIN" />Погледнете ги деталите<ph name="LINK_END" />}}</translation>
 <translation id="7461924472993315131">Прикачи</translation>
 <translation id="746216226901520237">Следниот пат, телефонот ќе го отклучи вашиот <ph name="DEVICE_TYPE" />. Smart Lock може да се исклучи во „Поставки“.</translation>
 <translation id="7463006580194749499">Додај лице</translation>
@@ -6256,7 +6254,6 @@
 <translation id="8226619461731305576">Ред на чекање</translation>
 <translation id="8226628635270268143">Изберете ги омилените фотографии и албуми</translation>
 <translation id="8227119283605456246">Прикачи датотека</translation>
-<translation id="822964464349305906"><ph name="TYPE_1" />, <ph name="TYPE_2" /></translation>
 <translation id="8230134520748321204">Дали да се зачува лозинката за <ph name="ORIGIN" />?</translation>
 <translation id="8234795456569844941">Помогнете им на нашите инженери да го решат проблемов. Кажете ни што се случи точно пред да ја добиете пораката за грешка на профилот:</translation>
 <translation id="8236917170563564587">Наместо тоа, сподели ја картичкава</translation>
diff --git a/chrome/app/resources/generated_resources_ml.xtb b/chrome/app/resources/generated_resources_ml.xtb
index 2938e6e..e0061d7 100644
--- a/chrome/app/resources/generated_resources_ml.xtb
+++ b/chrome/app/resources/generated_resources_ml.xtb
@@ -4687,7 +4687,6 @@
 <translation id="642469772702851743">ഉടമ ഈ ഉപകരണം (SN: <ph name="SERIAL_NUMBER" />) ലോക്ക് ചെയ്‌തിരിക്കുന്നു.</translation>
 <translation id="6425556984042222041">ടെക്‌സ്റ്റ് ടു സ്‌പീച്ച് റേറ്റ്</translation>
 <translation id="6426200009596957090">ChromeVox ക്രമീകരണം തുറക്കുക</translation>
-<translation id="642654727595919401">നിങ്ങളുടെ ഡാറ്റ ബാക്കപ്പ് ചെയ്‌ത് ഒരാഴ്‌ചയ്ക്കുള്ളിൽ ഈ <ph name="DEVICE_TYPE" /> തിരികെ നൽകാൻ <ph name="DOMAIN" /> നിങ്ങളോട് ആവശ്യപ്പെടുന്നു.<ph name="LINK_BEGIN" />വിശദാംശങ്ങൾ കാണുക<ph name="LINK_END" /></translation>
 <translation id="642729974267661262">ശബ്‌ദം പ്ലേ ചെയ്യാൻ അനുവാദമില്ല</translation>
 <translation id="6428982734197629783">ചിത്രം പ്രോസസ് ചെയ്യുന്നു</translation>
 <translation id="6429384232893414837">അപ്‌ഡേറ്റ് ചെയ്യുന്നതിൽ പിശക്</translation>
@@ -5563,7 +5562,6 @@
 <translation id="7457384018036134905">Chrome OS ക്രമീകരണത്തിൽ ഭാഷകൾ മാനേജ് ചെയ്യുക</translation>
 <translation id="7458168200501453431">Google തിരയലിൽ ഉപയോഗിക്കുന്ന അതേ സ്‌പെൽ ചെക്കർ ഉപയോഗിക്കുന്നു. നിങ്ങൾ ബ്രൗസറിൽ ടൈപ്പ് ചെയ്യുന്ന ടെക്‌സ്‌റ്റ് Google-ന് അയയ്ക്കുന്നു.</translation>
 <translation id="7460045493116006516">നിങ്ങൾ നിലവിൽ ഇൻസ്‌റ്റാൾ ചെയ്‌തിരിക്കുന്ന തീം</translation>
-<translation id="7461729991508684543">{NUM_DAYS,plural, =1{നിങ്ങളുടെ ഡാറ്റ ബാക്കപ്പ് ചെയ്‌ത് ഇന്ന് തന്നെ ഈ <ph name="DEVICE_TYPE" /> തിരികെ നൽകാൻ <ph name="DOMAIN" /> നിങ്ങളോട് ആവശ്യപ്പെടുന്നു.<ph name="LINK_BEGIN" />വിശദാംശങ്ങൾ കാണുക<ph name="LINK_END" />}other{നിങ്ങളുടെ ഡാറ്റ ബാക്കപ്പ് ചെയ്‌ത് {NUM_DAYS} ദിവസത്തിനുള്ളിൽ ഈ <ph name="DEVICE_TYPE" /> തിരികെ നൽകാൻ <ph name="DOMAIN" /> നിങ്ങളോട് ആവശ്യപ്പെടുന്നു.<ph name="LINK_BEGIN" />വിശദാംശങ്ങൾ കാണുക<ph name="LINK_END" />}}</translation>
 <translation id="7461924472993315131">പിൻ ചെയ്യുക</translation>
 <translation id="746216226901520237">അടുത്ത തവണ നിങ്ങളുടെ ഫോൺ <ph name="DEVICE_TYPE" /> അൺലോക്ക് ചെയ്യും. Smart Lock ക്രമീകരണത്തിൽ ഓഫാക്കാം.</translation>
 <translation id="7463006580194749499">വ്യക്തിയെ ചേർക്കുക</translation>
@@ -6255,7 +6253,6 @@
 <translation id="8226619461731305576">ക്യൂവിൽ</translation>
 <translation id="8226628635270268143">നിങ്ങളുടെ പ്രിയപ്പെട്ട ഫോട്ടോകളും ആൽബങ്ങളും തിരഞ്ഞെടുക്കുക</translation>
 <translation id="8227119283605456246">ഫയൽ അറ്റാച്ചുചെയ്യുക</translation>
-<translation id="822964464349305906"><ph name="TYPE_1" />, <ph name="TYPE_2" /></translation>
 <translation id="8230134520748321204"><ph name="ORIGIN" /> എന്നതിനായി പാസ്‌വേഡുകൾ സംരക്ഷിക്കണോ?</translation>
 <translation id="8234795456569844941">ഈ പ്രശ്‌നം പരിഹരിക്കുന്നതിന് ഞങ്ങളുടെ എഞ്ചിനീയർമാരെ സഹായിക്കുക. നിങ്ങൾക്ക് പ്രൊഫൈൽ ‌പിശക് സന്ദേശം ‌ലഭിക്കുന്നതിന് മുമ്പ് എന്താണ് ‌സംഭവിച്ചതെന്ന് ‌കൃത്യമായി ഞങ്ങളോട് പറയുക:</translation>
 <translation id="8236917170563564587">പകരം ഈ ടാബ് പങ്കിടുക</translation>
diff --git a/chrome/app/resources/generated_resources_mn.xtb b/chrome/app/resources/generated_resources_mn.xtb
index f73820d..8603557 100644
--- a/chrome/app/resources/generated_resources_mn.xtb
+++ b/chrome/app/resources/generated_resources_mn.xtb
@@ -4682,7 +4682,6 @@
 <translation id="642469772702851743">Энэ төхөөрөмжийг (SN: <ph name="SERIAL_NUMBER" />) эзэмшигч нь түгжсэн байна.</translation>
 <translation id="6425556984042222041">Текстийг-яриа-болгох түвшин</translation>
 <translation id="6426200009596957090">ChromeVox-н тохиргоог нээх</translation>
-<translation id="642654727595919401"><ph name="DOMAIN" /> өгөгдлөө хуулбарлаж аваад, энэ <ph name="DEVICE_TYPE" />-г 1 долоо хоногийн дотор буцаахыг танаас шаардаж байна.<ph name="LINK_BEGIN" />Дэлгэрэнгүй мэдээллийг харах<ph name="LINK_END" /></translation>
 <translation id="642729974267661262">Дуу тоглуулахыг зөвшөөрөөгүй</translation>
 <translation id="6428982734197629783">Зургийг боловсруулж байна</translation>
 <translation id="6429384232893414837">Шинэчлэлтийн алдаа</translation>
@@ -5558,7 +5557,6 @@
 <translation id="7457384018036134905">Хэлнүүдийг Chrome үйлдлийн системийн тохиргоонд удирдах</translation>
 <translation id="7458168200501453431">Google хайлтад ашигладаг зөв бичгийн ижил алдаа шалгагчийг ашигладаг. Таны хөтчид бичсэн текстийг Google-д илгээдэг.</translation>
 <translation id="7460045493116006516">Таны суулгасан одоогийн загвар</translation>
-<translation id="7461729991508684543">{NUM_DAYS,plural, =1{<ph name="DOMAIN" /> танаас өнөөдрийн дотор өгөгдлөө хуулбарлаж аваад, энэ <ph name="DEVICE_TYPE" />-г буцаахыг шаардаж байна.<ph name="LINK_BEGIN" />Дэлгэрэнгүй мэдээллийг харах<ph name="LINK_END" />}other{<ph name="DOMAIN" /> танаас {NUM_DAYS} хоногийн дотор өгөгдлөө хуулбарлаж аваад, энэ <ph name="DEVICE_TYPE" />-г буцаахыг шаардаж байна.<ph name="LINK_BEGIN" />Дэлгэрэнгүй мэдээллийг харах<ph name="LINK_END" />}}</translation>
 <translation id="7461924472993315131">Pin</translation>
 <translation id="746216226901520237">Дараагийн удаа таны утас таны <ph name="DEVICE_TYPE" />-н түгжээг тайлна. Та Smart Lock-г Тохиргоонд унтрааж болно.</translation>
 <translation id="7463006580194749499">Хүн нэм</translation>
@@ -6246,7 +6244,6 @@
 <translation id="8226619461731305576">Дараалал</translation>
 <translation id="8226628635270268143">Дуртай зураг, цомгуудаа сонгоно уу</translation>
 <translation id="8227119283605456246">Файл хавсаргах</translation>
-<translation id="822964464349305906"><ph name="TYPE_1" />, <ph name="TYPE_2" /></translation>
 <translation id="8230134520748321204">Нууц үгийг <ph name="ORIGIN" />-д хадгалах уу?</translation>
 <translation id="8234795456569844941">Манай инженерүүдэд энэ асуудлыг шийдэхэд тусална уу. Ta профайлын алдааны мессеж авахаас өмнө болсон зүйлийг тайлбарлана уу:</translation>
 <translation id="8236917170563564587">Оронд нь энэ табыг хуваалцах</translation>
diff --git a/chrome/app/resources/generated_resources_mr.xtb b/chrome/app/resources/generated_resources_mr.xtb
index f4553b9..ad6409ce 100644
--- a/chrome/app/resources/generated_resources_mr.xtb
+++ b/chrome/app/resources/generated_resources_mr.xtb
@@ -4672,7 +4672,6 @@
 <translation id="642469772702851743">हे डिव्हाइस (SN: <ph name="SERIAL_NUMBER" />) मालकाने लॉक केले होते.</translation>
 <translation id="6425556984042222041">टेक्‍स्‍ट टू स्‍पीच रेट</translation>
 <translation id="6426200009596957090">ChromeVox सेटिंग्‍ज उघडा</translation>
-<translation id="642654727595919401"><ph name="DOMAIN" /> साठी तुम्ही तुमच्या डेटाचा बॅकअप घेणे आणि एका आठवड्याच्‍या आत हे <ph name="DEVICE_TYPE" /> परत करणे आवश्यक आहे. <ph name="LINK_BEGIN" />तपशील पाहा<ph name="LINK_END" /></translation>
 <translation id="642729974267661262">आवाज प्ले करण्याची अनुमती नाही</translation>
 <translation id="6428982734197629783">इमेजवर प्रक्रिया करत आहे</translation>
 <translation id="6429384232893414837">अपडेट एरर</translation>
@@ -5546,7 +5545,6 @@
 <translation id="7457384018036134905">Chrome OS सेटिंग्जमध्ये भाषा व्यवस्थापित करा</translation>
 <translation id="7458168200501453431">Google Search मध्ये वापरत असेलेले स्पेल चेकर वापरले जाते. तुम्ही ब्राउझरमध्ये टाइप करत असलेला मजकूर Google कडे पाठवला जातो.</translation>
 <translation id="7460045493116006516">तुम्ही इंस्टॉल केलेली सध्याची थीम</translation>
-<translation id="7461729991508684543">{NUM_DAYS,plural, =1{<ph name="DOMAIN" /> साठी तुम्ही तुमच्या डेटाचा बॅकअप घेणे आणि हे <ph name="DEVICE_TYPE" /> आजच परत करणे आवश्यक आहे. <ph name="LINK_BEGIN" />तपशील पाहा<ph name="LINK_END" />}other{<ph name="DOMAIN" /> साठी तुम्ही तुमच्या डेटाचा बॅकअप घेणे आणि {NUM_DAYS} दिवसांच्‍या आत हे <ph name="DEVICE_TYPE" /> परत करणे आवश्यक आहे. <ph name="LINK_BEGIN" />तपशील पाहा<ph name="LINK_END" />}}</translation>
 <translation id="7461924472993315131">पिन</translation>
 <translation id="746216226901520237">पुढील वेळेस तुमचा फोन तुमचे <ph name="DEVICE_TYPE" /> अनलॉक करेल. तुम्ही सेटिंग्जमधून Smart Lock बंद करू शकता.</translation>
 <translation id="7463006580194749499">व्यक्ती जोडा</translation>
@@ -6232,7 +6230,6 @@
 <translation id="8226619461731305576">रांग</translation>
 <translation id="8226628635270268143">तुमचे आवडते फोटो आणि अल्बम निवडा</translation>
 <translation id="8227119283605456246">फाईल संलग्न करा</translation>
-<translation id="822964464349305906"><ph name="TYPE_1" />, <ph name="TYPE_2" /></translation>
 <translation id="8230134520748321204"><ph name="ORIGIN" /> साठी पासवर्ड सेव्ह करायचा आहे का?</translation>
 <translation id="8234795456569844941">कृपया आमच्या इंजिनियरना ही समस्या सोडवण्यात मदत करा. तुम्हाला प्रोफाइल एरर मिळण्याआधी नेमके काय झाले ते आम्हाला सांगा:</translation>
 <translation id="8236917170563564587">त्याऐवजी हा टॅब शेअर करा</translation>
diff --git a/chrome/app/resources/generated_resources_ms.xtb b/chrome/app/resources/generated_resources_ms.xtb
index dd066fb4..35f4d54 100644
--- a/chrome/app/resources/generated_resources_ms.xtb
+++ b/chrome/app/resources/generated_resources_ms.xtb
@@ -4689,7 +4689,6 @@
 <translation id="642469772702851743">Peranti ini (SN: <ph name="SERIAL_NUMBER" />) telah dikunci oleh pemiliknya.</translation>
 <translation id="6425556984042222041">Kadar teks ke pertuturan</translation>
 <translation id="6426200009596957090">Buka tetapan ChromeVox</translation>
-<translation id="642654727595919401"><ph name="DOMAIN" /> menghendaki anda menyandarkan data anda dan memulangkan <ph name="DEVICE_TYPE" /> ini dalam masa 1 minggu.<ph name="LINK_BEGIN" />Lihat butiran<ph name="LINK_END" /></translation>
 <translation id="642729974267661262">Tidak dibenarkan untuk memainkan bunyi</translation>
 <translation id="6428982734197629783">Memproses imej</translation>
 <translation id="6429384232893414837">Ralat kemas kini</translation>
@@ -5565,7 +5564,6 @@
 <translation id="7457384018036134905">Urus bahasa dalam tetapan OS Chrome</translation>
 <translation id="7458168200501453431">Menggunakan penyemak ejaan yang sama seperti yang digunakan dalam Carian Google. Teks yang anda taip dalam penyemak imbas akan dihantar kepada Google.</translation>
 <translation id="7460045493116006516">Tema semasa yang telah dipasang</translation>
-<translation id="7461729991508684543">{NUM_DAYS,plural, =1{<ph name="DOMAIN" /> menghendaki anda menyandarkan data anda dan memulangkan <ph name="DEVICE_TYPE" /> ini pada hari ini. <ph name="LINK_BEGIN" />Lihat butiran<ph name="LINK_END" />}other{<ph name="DOMAIN" /> menghendaki anda menyandarkan data anda dan memulangkan <ph name="DEVICE_TYPE" /> ini dalam {NUM_DAYS} hari.<ph name="LINK_BEGIN" />Lihat butiran<ph name="LINK_END" />}}</translation>
 <translation id="7461924472993315131">Pin</translation>
 <translation id="746216226901520237">Selepas ini, telefon anda akan membuka kunci <ph name="DEVICE_TYPE" /> anda. Anda boleh mematikan Smart Lock dalam Tetapan.</translation>
 <translation id="7463006580194749499">Tambah orang</translation>
@@ -6257,7 +6255,6 @@
 <translation id="8226619461731305576">Baris Gilir</translation>
 <translation id="8226628635270268143">Pilih foto dan album kegemaran anda</translation>
 <translation id="8227119283605456246">Lampirkan fail</translation>
-<translation id="822964464349305906"><ph name="TYPE_1" />, <ph name="TYPE_2" /></translation>
 <translation id="8230134520748321204">Simpan kata laluan untuk <ph name="ORIGIN" />?</translation>
 <translation id="8234795456569844941">Sila bantu jurutera kami menyelesaikan masalah ini. Beritahu kami perkara yang berlaku sejurus sebelum anda mendapat mesej ralat profil:</translation>
 <translation id="8236917170563564587">Kongsi tab ini</translation>
diff --git a/chrome/app/resources/generated_resources_my.xtb b/chrome/app/resources/generated_resources_my.xtb
index d522272b..ff133681 100644
--- a/chrome/app/resources/generated_resources_my.xtb
+++ b/chrome/app/resources/generated_resources_my.xtb
@@ -4688,7 +4688,6 @@
 <translation id="642469772702851743">ဤစက်ပစ္စည်း (SN- <ph name="SERIAL_NUMBER" />) ကို ပိုင်ရှင်က လော့ခ်ချထားသည်။</translation>
 <translation id="6425556984042222041">စာသားမှ စကားပြော မြန်နှုန်း</translation>
 <translation id="6426200009596957090">ChromeVox ဆက်တင်ကို ဖွင့်ရန်</translation>
-<translation id="642654727595919401"><ph name="DOMAIN" /> သည် သင့်ဒေတာများကို အရန်သိမ်းပြီး ဤ <ph name="DEVICE_TYPE" /> ကို ၁ ပတ်အတွင်း ပြန်ပို့ရန် လိုအပ်သည်။<ph name="LINK_BEGIN" />အသေးစိတ်များကြည့်ရန်<ph name="LINK_END" /></translation>
 <translation id="642729974267661262">အသံဖွင့်ရန် ခွင့်ပြုမထားပါ</translation>
 <translation id="6428982734197629783">ပုံကို စီမံဆောင်ရွက်နေသည်</translation>
 <translation id="6429384232893414837">အပ်ဒိတ်အမှားအယွင်း</translation>
@@ -5562,7 +5561,6 @@
 <translation id="7457384018036134905">Chrome OS ဆက်တင်များတွင် ဘာသာစကားများကို စီမံရန်</translation>
 <translation id="7458168200501453431">Google search တွင်အသုံးပြုသည့် စာလုံးပေါင်းစစ်စနစ် တစ်ခုတည်းကို အသုံးပြုသည်။ ဘရောင်ဇာတွင် သင်ရိုက်သည့် စာသားကို Google သို့ပို့ပါသည်။</translation>
 <translation id="7460045493116006516">သင်လက်ရှိထည့်သွင်းထားသည့် အပြင်အဆင်</translation>
-<translation id="7461729991508684543">{NUM_DAYS,plural, =1{<ph name="DOMAIN" /> သည် သင့်ဒေတာကို အရန်သိမ်းပြီး ဤ <ph name="DEVICE_TYPE" /> ကို ယနေ့ပြန်ပို့ရန်လိုအပ်သည်။<ph name="LINK_BEGIN" />အသေးစိတ်များကြည့်ရန်<ph name="LINK_END" />}other{<ph name="DOMAIN" /> သည် သင့်ဒေတာကို အရန်သိမ်းပြီး ဤ <ph name="DEVICE_TYPE" /> ကို {NUM_DAYS} ရက်အတွင်း ပြန်ပို့ရန် လိုအပ်သည်။<ph name="LINK_BEGIN" />အသေးစိတ်များကြည့်ရန်<ph name="LINK_END" />}}</translation>
 <translation id="7461924472993315131">ပင်နံပါတ်</translation>
 <translation id="746216226901520237">နောက်တစ်ကြိမ်တွင် သင့်ဖုန်းက သင်၏ <ph name="DEVICE_TYPE" /> ကို လော့ခ်ဖွင့်ပါမည်။ Smart Lock ကို 'ဆက်တင်များ' ထဲတွင် ပိတ်နိုင်သည်။</translation>
 <translation id="7463006580194749499">လူကို ထည့်ပေးရန်</translation>
@@ -6253,7 +6251,6 @@
 <translation id="8226619461731305576">တန်းစီစာရင်း</translation>
 <translation id="8226628635270268143">သင့်အကြိုက်ဆုံး ဓာတ်ပုံနှင့် အယ်လ်ဘမ်များ ရွေးချယ်ရန်</translation>
 <translation id="8227119283605456246">ပူးတွဲဖိုင်</translation>
-<translation id="822964464349305906"><ph name="TYPE_1" />၊ <ph name="TYPE_2" /></translation>
 <translation id="8230134520748321204"><ph name="ORIGIN" /> အတွက် စကားဝှက်ကို သိမ်းဆည်းလိုပါသလား။</translation>
 <translation id="8234795456569844941">ကျွန်ုပ်တို့၏ အင်ဂျင်နီယာများက ဤပြဿနာကို ဖြေရှင်းနိုင်ရန် ကူညီပေးပါ။ ပရိုဖိုင်မှားယွင်းကြောင်းမက်ဆေ့ဂျ်ကို မရရှိမီ ဖြစ်ပျက်ခဲ့ပုံကို ကျွန်ုပ်တို့အား ပြောပါ−</translation>
 <translation id="8236917170563564587">၎င်းအစား ဤတဘ်ကို မျှဝေရန်</translation>
diff --git a/chrome/app/resources/generated_resources_ne.xtb b/chrome/app/resources/generated_resources_ne.xtb
index 44adb2d..fa8e2ec 100644
--- a/chrome/app/resources/generated_resources_ne.xtb
+++ b/chrome/app/resources/generated_resources_ne.xtb
@@ -4668,7 +4668,6 @@
 <translation id="642469772702851743">मालिकले यो यन्त्र (SN: <ph name="SERIAL_NUMBER" />) लक गर्नुभएको हो।</translation>
 <translation id="6425556984042222041">टेक्स्ट-टू-स्पिचको दर</translation>
 <translation id="6426200009596957090">ChromeVox सेटिङहरू खोल्नुहोस्</translation>
-<translation id="642654727595919401"><ph name="DOMAIN" /> का अनुसार तपाईंले एक हप्ताभित्र आफ्ना डेटा ब्याकअप गरी यो <ph name="DEVICE_TYPE" /> फिर्ता गर्नु पर्ने हुन्छ। <ph name="LINK_BEGIN" />विवरण हेर्नुहोस्<ph name="LINK_END" /></translation>
 <translation id="642729974267661262">ध्वनि प्ले गर्न अनुमति नदिइएका साइटहरू</translation>
 <translation id="6428982734197629783">छवि प्रशोधन गर्दै</translation>
 <translation id="6429384232893414837">अद्यावधिकसम्बन्धी त्रुटि</translation>
@@ -5542,7 +5541,6 @@
 <translation id="7457384018036134905">Chrome OS का सेटिङमा गई भाषाहरू व्यवस्थापन गर्नुहोस्</translation>
 <translation id="7458168200501453431">Google खोजमा प्रयोग हुने हिज्जे-जाँचकर्ता नै प्रयोग गर्छ। तपाईंले ब्राउजरमा टाइप गर्नुभएको पाठ Google लाई पठाइन्छ।</translation>
 <translation id="7460045493116006516">तपाईंले स्थापना गर्नुभएको हालको विषयवस्तु</translation>
-<translation id="7461729991508684543">{NUM_DAYS,plural, =1{<ph name="DOMAIN" /> का अनुसार तपाईंले आजै आफ्ना डेटा ब्याकअप गरी यो <ph name="DEVICE_TYPE" /> फिर्ता गर्नु पर्ने हुन्छ। <ph name="LINK_BEGIN" />विवरण हेर्नुहोस्<ph name="LINK_END" />}other{<ph name="DOMAIN" /> का अनुसार तपाईंले {NUM_DAYS} दिनभित्र आफ्ना डेटा ब्याकअप गरी यो <ph name="DEVICE_TYPE" /> फिर्ता गर्नु पर्ने हुन्छ। <ph name="LINK_BEGIN" />विवरण हेर्नुहोस्<ph name="LINK_END" />}}</translation>
 <translation id="7461924472993315131">पिन</translation>
 <translation id="746216226901520237">अर्को पटकदेखि, तपाईंको फोनले तपाईंको <ph name="DEVICE_TYPE" /> अनलक गर्ने छ। तपाईं सेटिङहरूमा गई Smart Lock निष्क्रिय पार्न सक्नुहुन्छ।</translation>
 <translation id="7463006580194749499">व्यक्ति थप्नुहोस्</translation>
@@ -6229,7 +6227,6 @@
 <translation id="8226619461731305576">लाइन</translation>
 <translation id="8226628635270268143">आफूलाई मन पर्ने फोटो र एल्बमहरू छनौट गर्नुहोस्</translation>
 <translation id="8227119283605456246">फाइल समावेश गर्नुहोस्</translation>
-<translation id="822964464349305906"><ph name="TYPE_1" />, <ph name="TYPE_2" /></translation>
 <translation id="8230134520748321204"><ph name="ORIGIN" /> को पासवर्ड सुरक्षित गर्ने हो?</translation>
 <translation id="8234795456569844941">कृपया यो समस्या समाधान गर्ने काममा हाम्रा इन्जिनियरहरूलाई मद्दत गर्नुहोस्। तपाईंले प्रोफाइल सम्बन्धी त्रुटिको यो सन्देश पाउनुभन्दा ठ्याक्कै अगाडि के भयो, हामीलाई बताउनुहोस्:</translation>
 <translation id="8236917170563564587">बरु यो ट्याब सेयर गर्नुहोस्</translation>
diff --git a/chrome/app/resources/generated_resources_nl.xtb b/chrome/app/resources/generated_resources_nl.xtb
index 331f30b0..2ba1572 100644
--- a/chrome/app/resources/generated_resources_nl.xtb
+++ b/chrome/app/resources/generated_resources_nl.xtb
@@ -4674,7 +4674,6 @@
 <translation id="642469772702851743">Dit apparaat (serienummer: <ph name="SERIAL_NUMBER" />) is vergrendeld door de eigenaar.</translation>
 <translation id="6425556984042222041">Snelheid voor tekst-naar-spraak</translation>
 <translation id="6426200009596957090">ChromeVox-instellingen openen</translation>
-<translation id="642654727595919401"><ph name="DOMAIN" /> vereist dat je een back-up van je gegevens maakt en deze <ph name="DEVICE_TYPE" /> binnen één week terugstuurt. <ph name="LINK_BEGIN" />Details bekijken<ph name="LINK_END" /></translation>
 <translation id="642729974267661262">Geen toestemming om geluid af te spelen</translation>
 <translation id="6428982734197629783">Afbeelding verwerken</translation>
 <translation id="6429384232893414837">Updatefout</translation>
@@ -5548,7 +5547,6 @@
 <translation id="7457384018036134905">Talen beheren in de instellingen van Chrome OS</translation>
 <translation id="7458168200501453431">Gebruikt dezelfde spellingcontrole als voor Google Zoeken. In de browser ingevoerde tekst wordt naar Google gestuurd.</translation>
 <translation id="7460045493116006516">Huidig thema dat je hebt geïnstalleerd</translation>
-<translation id="7461729991508684543">{NUM_DAYS,plural, =1{<ph name="DOMAIN" /> vereist dat je een back-up van je gegevens maakt en deze <ph name="DEVICE_TYPE" /> vandaag terugstuurt. <ph name="LINK_BEGIN" />Details bekijken<ph name="LINK_END" />}other{<ph name="DOMAIN" /> vereist dat je een back-up van je gegevens maakt en deze <ph name="DEVICE_TYPE" /> binnen {NUM_DAYS} dagen terugstuurt. <ph name="LINK_BEGIN" />Details bekijken<ph name="LINK_END" />}}</translation>
 <translation id="7461924472993315131">Vastzetten</translation>
 <translation id="746216226901520237">De volgende keer wordt <ph name="DEVICE_TYPE" /> ontgrendeld met je telefoon. Je kunt Smart Lock uitschakelen in Instellingen.</translation>
 <translation id="7463006580194749499">Persoon toevoegen</translation>
@@ -6235,7 +6233,6 @@
 <translation id="8226619461731305576">Wachtrij</translation>
 <translation id="8226628635270268143">Kies je favoriete foto's en albums</translation>
 <translation id="8227119283605456246">Bestand bijvoegen</translation>
-<translation id="822964464349305906"><ph name="TYPE_1" />, <ph name="TYPE_2" /></translation>
 <translation id="8230134520748321204">Wachtwoord opslaan voor <ph name="ORIGIN" />?</translation>
 <translation id="8234795456569844941">Help onze engineers dit probleem op te lossen. Vertel ons wat er gebeurde vlak voordat het bericht met de profielfout werd weergegeven:</translation>
 <translation id="8236917170563564587">In plaats daarvan dit tabblad delen</translation>
diff --git a/chrome/app/resources/generated_resources_no.xtb b/chrome/app/resources/generated_resources_no.xtb
index 93afced..673284ab 100644
--- a/chrome/app/resources/generated_resources_no.xtb
+++ b/chrome/app/resources/generated_resources_no.xtb
@@ -4684,7 +4684,6 @@
 <translation id="642469772702851743">Denne enheten (SN: <ph name="SERIAL_NUMBER" />) ble låst av eieren.</translation>
 <translation id="6425556984042222041">Hastighet for tekst til tale</translation>
 <translation id="6426200009596957090">Åpne innstillingene for ChromeVox</translation>
-<translation id="642654727595919401"><ph name="DOMAIN" /> krever at du sikkerhetskopierer dataene dine og leverer tilbake <ph name="DEVICE_TYPE" /> innen én uke.<ph name="LINK_BEGIN" />Se detaljer<ph name="LINK_END" /></translation>
 <translation id="642729974267661262">Nettsteder som ikke har lov til å spille av lyd</translation>
 <translation id="6428982734197629783">Behandler bildet</translation>
 <translation id="6429384232893414837">Oppdateringsfeil</translation>
@@ -5560,7 +5559,6 @@
 <translation id="7457384018036134905">Administrer språk i innstillingene for Chrome OS</translation>
 <translation id="7458168200501453431">Bruker samme stavekontroll som i Google Søk. Tekst du skriver inn i nettleseren, sendes til Google.</translation>
 <translation id="7460045493116006516">Tema som er installert akkurat nå</translation>
-<translation id="7461729991508684543">{NUM_DAYS,plural, =1{<ph name="DOMAIN" /> krever at du sikkerhetskopierer dataene dine og leverer tilbake <ph name="DEVICE_TYPE" /> i dag.<ph name="LINK_BEGIN" />Se detaljer<ph name="LINK_END" />}other{<ph name="DOMAIN" /> krever at du sikkerhetskopierer dataene dine og leverer tilbake <ph name="DEVICE_TYPE" /> innen {NUM_DAYS} dager.<ph name="LINK_BEGIN" />Se detaljer<ph name="LINK_END" />}}</translation>
 <translation id="7461924472993315131">Fest</translation>
 <translation id="746216226901520237">Neste gang låser telefonen opp <ph name="DEVICE_TYPE" />-enheten din. Du kan slå av Smart Lock i innstillingene.</translation>
 <translation id="7463006580194749499">Legg til person</translation>
@@ -6252,7 +6250,6 @@
 <translation id="8226619461731305576">Kø</translation>
 <translation id="8226628635270268143">Velg favorittbildene og -albumene dine</translation>
 <translation id="8227119283605456246">Legg ved fil</translation>
-<translation id="822964464349305906"><ph name="TYPE_1" />, <ph name="TYPE_2" /></translation>
 <translation id="8230134520748321204">Vil du lagre passord for <ph name="ORIGIN" />?</translation>
 <translation id="8234795456569844941">Hjelp programutviklerne våre med å løse dette problemet. Fortell oss hva som skjedde rett før du fikk profilfeilmeldingen:</translation>
 <translation id="8236917170563564587">Del denne fanen i stedet</translation>
diff --git a/chrome/app/resources/generated_resources_or.xtb b/chrome/app/resources/generated_resources_or.xtb
index d20d9231..d8714eae 100644
--- a/chrome/app/resources/generated_resources_or.xtb
+++ b/chrome/app/resources/generated_resources_or.xtb
@@ -4665,7 +4665,6 @@
 <translation id="642469772702851743">ଏହି ଡିଭାଇସ୍ (SN: <ph name="SERIAL_NUMBER" />) ମାଲିକଙ୍କ ଦ୍ଵାରା ଲକ୍ କରାଯାଇଥିଲା।</translation>
 <translation id="6425556984042222041">ଟେକ୍ସଟ୍-ଟୁ-ସ୍ପିଚ୍ ରେଟ୍</translation>
 <translation id="6426200009596957090">ChromeVox ସେଟିଂସ୍‌ ଖୋଲନ୍ତୁ</translation>
-<translation id="642654727595919401">ଆପଣ ଆପଣଙ୍କ ଡାଟାର ବ୍ୟାକଅପ୍ ନେଇ 1 ସପ୍ତାହ ଭିତରେ ଏହି <ph name="DEVICE_TYPE" />କୁ ଫେରସ୍ତ କରନ୍ତୁ ବୋଲି <ph name="DOMAIN" /> ଚାହେଁ।<ph name="LINK_BEGIN" />ବିବରଣୀ ଦେଖନ୍ତୁ<ph name="LINK_END" /></translation>
 <translation id="642729974267661262">ସାଉଣ୍ଡ ଚଲାଇବାକୁ ଅନୁମତି ଦିଆଯାଇନାହିଁ</translation>
 <translation id="6428982734197629783">ଛବି ପ୍ରକ୍ରିୟାକରଣ ହେଉଛି</translation>
 <translation id="6429384232893414837">ତ୍ରୁଟି ଅପ୍‍‍ଡେଟ୍ କରନ୍ତୁ</translation>
@@ -5541,7 +5540,6 @@
 <translation id="7457384018036134905">Chrome OS ସେଟିଂସରେ ଭାଷାଗୁଡ଼ିକୁ ପରିଚାଳନା କରନ୍ତୁ</translation>
 <translation id="7458168200501453431">ଏହା Google ସନ୍ଧାନରେ ବ୍ୟବହୃତ ହୋଇଥିବା ସମାନ ବନାନ ଯାଞ୍ଚକାରୀ ବ୍ୟବହାର କରେ। ବ୍ରାଉଜର୍‌ରେ ଆପଣ ଟାଇପ୍ କରିଥିବା ଟେକ୍ସଟ୍ Googleକୁ ପଠାଯାଏ।</translation>
 <translation id="7460045493116006516">ଆପଣ ଇନ୍‌ଷ୍ଟଲ୍ କରିଥିବା ବର୍ତ୍ତମାନର ଥିମ୍</translation>
-<translation id="7461729991508684543">{NUM_DAYS,plural, =1{ଆପଣ ଆପଣଙ୍କ ଡାଟାର ବ୍ୟାକଅପ୍ ନେଇ ଏହି <ph name="DEVICE_TYPE" />କୁ ଆଜି ଫେରସ୍ତ କରନ୍ତୁ ବୋଲି <ph name="DOMAIN" /> ଚାହେଁ।<ph name="LINK_BEGIN" />ବିବରଣୀ ଦେଖନ୍ତୁ<ph name="LINK_END" />}other{ଆପଣ ଆପଣଙ୍କ ଡାଟାର ବ୍ୟାକଅପ୍ ନେଇ ଏହି <ph name="DEVICE_TYPE" />କୁ {NUM_DAYS}ଦିନ ଭିତରେ ଫେରସ୍ତ କରନ୍ତୁ ବୋଲି <ph name="DOMAIN" /> ଚାହେଁ।<ph name="LINK_BEGIN" />ବିବରଣୀ ଦେଖନ୍ତୁ<ph name="LINK_END" />}}</translation>
 <translation id="7461924472993315131">ପିନ୍‍</translation>
 <translation id="746216226901520237">ପରବର୍ତ୍ତୀ ସମୟରେ, ଆପଣଙ୍କର ଫୋନ୍‌ ଆପଣଙ୍କର <ph name="DEVICE_TYPE" />କୁ ଅନ୍‌ଲକ୍‌ କରିବ। ସେଟିଂସ୍‌ରେ ଆପଣ ସ୍ମାର୍ଟ ଲକ୍‌ ବନ୍ଦ କରିପାରିବେ।</translation>
 <translation id="7463006580194749499">ଲୋକଙ୍କୁ ଯୋଗ କରନ୍ତୁ</translation>
@@ -6226,7 +6224,6 @@
 <translation id="8226619461731305576">ଧାଡ଼ି</translation>
 <translation id="8226628635270268143">ଆପଣଙ୍କ ପସନ୍ଦର ଫଟୋ ଏବଂ ଆଲବମଗୁଡ଼ିକ ବାଛନ୍ତୁ</translation>
 <translation id="8227119283605456246">ଫାଇଲ୍ ସଂଲଗ୍ନ କରନ୍ତୁ</translation>
-<translation id="822964464349305906"><ph name="TYPE_1" /> <ph name="TYPE_2" /></translation>
 <translation id="8230134520748321204"><ph name="ORIGIN" /> ପାଇଁ ପାସ୍‌ୱାର୍ଡ ସେଭ୍ କରିବେ?</translation>
 <translation id="8234795456569844941">ଏହି ସମସ୍ୟାର ସମାଧାନ କରିବା ପାଇଁ ଦୟାକରି ଆମ ଇଞ୍ଜିନିୟର୍‌ମାନଙ୍କୁ ସାହାଯ୍ୟ କରନ୍ତୁ। ଆପଣ ପ୍ରୋଫାଇଲ୍ ତ୍ରୁଟି ମେସେଜ୍ ପାଇବାର ଠିକ୍ ପୂର୍ବରୁ କ’ଣ ଘଟିଥିଲା, ଆମକୁ କୁହନ୍ତୁ:</translation>
 <translation id="8236917170563564587">ଏହା ପରିବର୍ତ୍ତେ ଏହି ଟାବ୍ ସେୟାର୍ କରନ୍ତୁ</translation>
diff --git a/chrome/app/resources/generated_resources_pa.xtb b/chrome/app/resources/generated_resources_pa.xtb
index aba0381..ce83146 100644
--- a/chrome/app/resources/generated_resources_pa.xtb
+++ b/chrome/app/resources/generated_resources_pa.xtb
@@ -4672,7 +4672,6 @@
 <translation id="642469772702851743">ਇਹ ਡੀਵਾਈਸ (SN: <ph name="SERIAL_NUMBER" />) ਮਾਲਕ ਵੱਲੋਂ ਲਾਕ ਕੀਤਾ ਗਿਆ ਸੀ।</translation>
 <translation id="6425556984042222041">ਲਿਖਤ-ਤੋਂ-ਬੋਲੀ ਦਰ</translation>
 <translation id="6426200009596957090">ChromeVox ਸੈਟਿੰਗਾਂ ਖੋਲ੍ਹੋ</translation>
-<translation id="642654727595919401"><ph name="DOMAIN" /> ਲਈ ਤੁਹਾਨੂੰ ਆਪਣੇ ਡਾਟੇ ਦਾ ਬੈਕਅੱਪ ਲੈਣ ਅਤੇ 1 ਹਫ਼ਤੇ ਦੇ ਅੰਦਰ ਇਸ <ph name="DEVICE_TYPE" /> ਨੂੰ ਵਾਪਸ ਕਰਨ ਦੀ ਲੋੜ ਹੈ।<ph name="LINK_BEGIN" />ਵੇਰਵੇ ਦੇਖੋ<ph name="LINK_END" /></translation>
 <translation id="642729974267661262">ਧੁਨੀ ਵਜਾਉਣ ਦੀ ਇਜਾਜ਼ਤ ਨਹੀਂ ਹੈ</translation>
 <translation id="6428982734197629783">ਚਿੱਤਰ ਪ੍ਰਕਿਰਿਆ-ਅਧੀਨ ਹੈ</translation>
 <translation id="6429384232893414837">ਅੱਪਡੇਟ ਗੜਬੜ</translation>
@@ -5546,7 +5545,6 @@
 <translation id="7457384018036134905">Chrome OS ਸੈਟਿੰਗਾਂ ਵਿੱਚ ਭਾਸ਼ਾਵਾਂ ਦਾ ਪ੍ਰਬੰਧਨ ਕਰੋ</translation>
 <translation id="7458168200501453431">Google ਖੋਜ ਵੇਲੇ ਵਰਤੇ ਜਾਣ ਵਾਲੇ ਸਪੈੱਲ-ਚੈਕਰ ਨੂੰ ਹੀ ਵਰਤਿਆ ਜਾਂਦਾ ਹੈ। ਬ੍ਰਾਊਜ਼ਰ ਵਿੱਚ ਤੁਹਾਡੇ ਵੱਲੋਂ ਟਾਈਪ ਕੀਤੀ ਜਾਣ ਵਾਲੀ ਲਿਖਤ Google ਨੂੰ ਭੇਜੀ ਜਾਵੇਗੀ।</translation>
 <translation id="7460045493116006516">ਮੌਜੂਦਾ ਥੀਮ ਜੋ ਤੁਸੀਂ ਸਥਾਪਤ ਕੀਤਾ ਹੈ</translation>
-<translation id="7461729991508684543">{NUM_DAYS,plural, =1{<ph name="DOMAIN" /> ਲਈ ਤੁਹਾਨੂੰ ਆਪਣੇ ਡਾਟੇ ਦਾ ਬੈਕਅੱਪ ਲੈਣ ਅਤੇ ਅੱਜ ਹੀ ਇਸ <ph name="DEVICE_TYPE" /> ਨੂੰ ਵਾਪਸ ਕਰਨ ਦੀ ਲੋੜ ਹੈ।<ph name="LINK_BEGIN" />ਵੇਰਵੇ ਦੇਖੋ<ph name="LINK_END" />}one{<ph name="DOMAIN" /> ਲਈ ਤੁਹਾਨੂੰ ਆਪਣੇ ਡਾਟੇ ਦਾ ਬੈਕਅੱਪ ਲੈਣ ਅਤੇ {NUM_DAYS} ਦਿਨ ਦੇ ਅੰਦਰ ਇਸ <ph name="DEVICE_TYPE" /> ਨੂੰ ਵਾਪਸ ਕਰਨ ਦੀ ਲੋੜ ਹੈ।<ph name="LINK_BEGIN" />ਵੇਰਵੇ ਦੇਖੋ<ph name="LINK_END" />}other{<ph name="DOMAIN" /> ਲਈ ਤੁਹਾਨੂੰ ਆਪਣੇ ਡਾਟੇ ਦਾ ਬੈਕਅੱਪ ਲੈਣ ਅਤੇ {NUM_DAYS} ਦਿਨਾਂ ਦੇ ਅੰਦਰ ਇਸ <ph name="DEVICE_TYPE" /> ਨੂੰ ਵਾਪਸ ਕਰਨ ਦੀ ਲੋੜ ਹੈ।<ph name="LINK_BEGIN" />ਵੇਰਵੇ ਦੇਖੋ<ph name="LINK_END" />}}</translation>
 <translation id="7461924472993315131">Pin</translation>
 <translation id="746216226901520237">ਅਗਲੀ ਵਾਰ ਤੁਹਾਡਾ ਫ਼ੋਨ ਤੁਹਾਡੀ <ph name="DEVICE_TYPE" /> ਨੂੰ ਅਣਲਾਕ ਕਰੇਗਾ। ਤੁਸੀਂ ਸੈਟਿੰਗਾਂ ਵਿੱਚ 'ਸਮਾਰਟ ਲਾਕ' ਨੂੰ ਬੰਦ ਕਰ ਸਕਦੇ ਹੋ।</translation>
 <translation id="7463006580194749499">ਵਿਅਕਤੀ ਜੋੜੋ</translation>
@@ -6231,7 +6229,6 @@
 <translation id="8226619461731305576">ਕਤਾਰ</translation>
 <translation id="8226628635270268143">ਆਪਣੀਆਂ ਮਨਪਸੰਦ ਫ਼ੋਟੋਆਂ ਅਤੇ ਐਲਬਮਾਂ ਚੁਣੋ</translation>
 <translation id="8227119283605456246">ਫ਼ਾਈਲ ਨੱਥੀ ਕਰੋ</translation>
-<translation id="822964464349305906"><ph name="TYPE_1" />, <ph name="TYPE_2" /></translation>
 <translation id="8230134520748321204">ਕੀ <ph name="ORIGIN" /> ਲਈ ਪਾਸਵਰਡ ਰੱਖਿਅਤ ਕਰਨਾ ਹੈ?</translation>
 <translation id="8234795456569844941">ਕਿਰਪਾ ਕਰਕੇ ਸਾਡੇ ਇੰਜੀਨੀਅਰਾਂ ਨੂੰ ਇਸ ਸਮੱਸਿਆ ਦਾ ਹੱਲ ਕਰਨ ਵਿੱਚ ਮਦਦ ਕਰੋ। ਸਾਨੂੰ ਦੱਸੋ ਕਿ ਤੁਹਾਨੂੰ ਪ੍ਰੋਫਾਈਲ ਗੜਬੜ ਸੁਨੇਹਾ ਮਿਲਣ ਤੋਂ ਠੀਕ ਪਹਿਲਾਂ ਕੀ ਹੋਇਆ ਸੀ:</translation>
 <translation id="8236917170563564587">ਇਸਦੀ ਬਜਾਏ ਇਹ ਟੈਬ ਸਾਂਝੀ ਕਰੋ</translation>
diff --git a/chrome/app/resources/generated_resources_pl.xtb b/chrome/app/resources/generated_resources_pl.xtb
index 5a19e6e..e31190f 100644
--- a/chrome/app/resources/generated_resources_pl.xtb
+++ b/chrome/app/resources/generated_resources_pl.xtb
@@ -4687,7 +4687,6 @@
 <translation id="642469772702851743">To urządzenie (nr seryjny: <ph name="SERIAL_NUMBER" />) zostało zablokowane przez właściciela.</translation>
 <translation id="6425556984042222041">Szybkość zamiany tekstu na mowę</translation>
 <translation id="6426200009596957090">Otwórz ustawienia ChromeVoxa</translation>
-<translation id="642654727595919401">Domena <ph name="DOMAIN" /> wymaga utworzenia kopii zapasowej danych i zwrócenia urządzenia <ph name="DEVICE_TYPE" /> w ciągu tygodnia. <ph name="LINK_BEGIN" />Zobacz szczegóły<ph name="LINK_END" /></translation>
 <translation id="642729974267661262">Nie zezwolono na odtwarzanie dźwięku</translation>
 <translation id="6428982734197629783">Przetwarzam zdjęcie</translation>
 <translation id="6429384232893414837">Błąd aktualizacji</translation>
@@ -5563,7 +5562,6 @@
 <translation id="7457384018036134905">Zarządzaj językami w ustawieniach Chrome OS</translation>
 <translation id="7458168200501453431">Korzysta z tego samego mechanizmu sprawdzania pisowni, który jest używany w wyszukiwarce Google. Tekst wpisywany w przeglądarce jest wysyłany do Google.</translation>
 <translation id="7460045493116006516">Zainstalowany motyw</translation>
-<translation id="7461729991508684543">{NUM_DAYS,plural, =1{Domena <ph name="DOMAIN" /> wymaga utworzenia kopii zapasowej danych i zwrócenia tego urządzenia <ph name="DEVICE_TYPE" /> dzisiaj. <ph name="LINK_BEGIN" />Zobacz szczegóły<ph name="LINK_END" />}few{Domena <ph name="DOMAIN" /> wymaga utworzenia kopii zapasowej danych i zwrócenia tego urządzenia <ph name="DEVICE_TYPE" /> w ciągu {NUM_DAYS} dni. <ph name="LINK_BEGIN" />Zobacz szczegóły<ph name="LINK_END" />}many{Domena <ph name="DOMAIN" /> wymaga utworzenia kopii zapasowej danych i zwrócenia tego urządzenia <ph name="DEVICE_TYPE" /> w ciągu {NUM_DAYS} dni. <ph name="LINK_BEGIN" />Zobacz szczegóły<ph name="LINK_END" />}other{Domena <ph name="DOMAIN" /> wymaga utworzenia kopii zapasowej danych i zwrócenia tego urządzenia <ph name="DEVICE_TYPE" /> w ciągu {NUM_DAYS} dnia. <ph name="LINK_BEGIN" />Zobacz szczegóły<ph name="LINK_END" />}}</translation>
 <translation id="7461924472993315131">Przypnij</translation>
 <translation id="746216226901520237">Następnym razem Twój telefon odblokuje urządzenie <ph name="DEVICE_TYPE" />. Smart Lock możesz wyłączyć w Ustawieniach.</translation>
 <translation id="7463006580194749499">Dodaj osobę</translation>
@@ -6255,7 +6253,6 @@
 <translation id="8226619461731305576">Kolejka</translation>
 <translation id="8226628635270268143">Wybierz ulubione zdjęcia i albumy</translation>
 <translation id="8227119283605456246">Załącz plik</translation>
-<translation id="822964464349305906"><ph name="TYPE_1" />, <ph name="TYPE_2" /></translation>
 <translation id="8230134520748321204">Zapisać hasło do: <ph name="ORIGIN" />?</translation>
 <translation id="8234795456569844941">Pomóż naszym inżynierom rozwiązać ten problem. Powiedz nam, co się działo tuż przed wyświetleniem się komunikatu o błędzie profilu:</translation>
 <translation id="8236917170563564587">Udostępnij tę kartę</translation>
diff --git a/chrome/app/resources/generated_resources_pt-BR.xtb b/chrome/app/resources/generated_resources_pt-BR.xtb
index 0ddf5ec8..ee4d62de 100644
--- a/chrome/app/resources/generated_resources_pt-BR.xtb
+++ b/chrome/app/resources/generated_resources_pt-BR.xtb
@@ -4678,7 +4678,6 @@
 <translation id="642469772702851743">Este dispositivo (SN: <ph name="SERIAL_NUMBER" />) foi bloqueado pelo proprietário.</translation>
 <translation id="6425556984042222041">Velocidade de conversão de texto em voz</translation>
 <translation id="6426200009596957090">Abrir as configurações do ChromeVox</translation>
-<translation id="642654727595919401"><ph name="DOMAIN" /> precisa que você faça backup dos seus dados e devolva este <ph name="DEVICE_TYPE" /> em até uma semana. <ph name="LINK_BEGIN" />Veja os detalhes<ph name="LINK_END" /></translation>
 <translation id="642729974267661262">Bloquear a reprodução de sons</translation>
 <translation id="6428982734197629783">Processando imagem</translation>
 <translation id="6429384232893414837">Erro de atualização</translation>
@@ -5552,7 +5551,6 @@
 <translation id="7457384018036134905">Gerenciar idiomas nas configurações do Chrome OS</translation>
 <translation id="7458168200501453431">Usa o mesmo corretor ortográfico da Pesquisa Google. O texto que você digita no navegador é enviado para o Google.</translation>
 <translation id="7460045493116006516">Tema instalado atualmente</translation>
-<translation id="7461729991508684543">{NUM_DAYS,plural, =1{<ph name="DOMAIN" /> precisa que você faça backup dos seus dados e devolva este <ph name="DEVICE_TYPE" /> hoje. <ph name="LINK_BEGIN" />Veja os detalhes<ph name="LINK_END" />}one{<ph name="DOMAIN" /> precisa que você faça backup dos seus dados e devolva este <ph name="DEVICE_TYPE" /> em até {NUM_DAYS} dia. <ph name="LINK_BEGIN" />Veja os detalhes<ph name="LINK_END" />}other{<ph name="DOMAIN" /> precisa que você faça backup dos seus dados e devolva este <ph name="DEVICE_TYPE" /> em até {NUM_DAYS} dias. <ph name="LINK_BEGIN" />Veja os detalhes<ph name="LINK_END" />}}</translation>
 <translation id="7461924472993315131">Fixar</translation>
 <translation id="746216226901520237">Na próxima vez, o smartphone desbloqueará o <ph name="DEVICE_TYPE" />. É possível desativar o Smart Lock nas configurações.</translation>
 <translation id="7463006580194749499">Adicionar pessoas</translation>
@@ -6240,7 +6238,6 @@
 <translation id="8226619461731305576">Fila</translation>
 <translation id="8226628635270268143">Escolher seus álbuns e fotos favoritos</translation>
 <translation id="8227119283605456246">Anexar arquivo</translation>
-<translation id="822964464349305906"><ph name="TYPE_1" />, <ph name="TYPE_2" /></translation>
 <translation id="8230134520748321204">Salvar senha para <ph name="ORIGIN" />?</translation>
 <translation id="8234795456569844941">Ajude nossos engenheiros a corrigir esse problema. Conte-nos o que aconteceu logo antes de você receber a mensagem de erro de perfil:</translation>
 <translation id="8236917170563564587">Compartilhar esta guia</translation>
diff --git a/chrome/app/resources/generated_resources_pt-PT.xtb b/chrome/app/resources/generated_resources_pt-PT.xtb
index 82a100f0..f2391a9 100644
--- a/chrome/app/resources/generated_resources_pt-PT.xtb
+++ b/chrome/app/resources/generated_resources_pt-PT.xtb
@@ -4690,7 +4690,6 @@
 <translation id="642469772702851743">Este dispositivo (SN: <ph name="SERIAL_NUMBER" />) foi bloqueado pelo proprietário.</translation>
 <translation id="6425556984042222041">Taxa da síntese de voz</translation>
 <translation id="6426200009596957090">Abrir as definições do ChromeVox</translation>
-<translation id="642654727595919401">O domínio <ph name="DOMAIN" /> requer que faça uma cópia de segurança dos seus dados e devolva este <ph name="DEVICE_TYPE" /> dentro de 1 semana.<ph name="LINK_BEGIN" />Veja os detalhes<ph name="LINK_END" /></translation>
 <translation id="642729974267661262">Sem autorização para reproduzir som</translation>
 <translation id="6428982734197629783">A processar a imagem…</translation>
 <translation id="6429384232893414837">Atualizar erro</translation>
@@ -5566,7 +5565,6 @@
 <translation id="7457384018036134905">Gerir idiomas nas definições do Chrome OS</translation>
 <translation id="7458168200501453431">Utiliza o mesmo corretor ortográfico que é utilizado na Pesquisa Google. O texto que introduzir no navegador é enviado à Google.</translation>
 <translation id="7460045493116006516">O tema atual que tem instalado.</translation>
-<translation id="7461729991508684543">{NUM_DAYS,plural, =1{O domínio <ph name="DOMAIN" /> requer que faça uma cópia de segurança dos seus dados e devolva este <ph name="DEVICE_TYPE" /> hoje.<ph name="LINK_BEGIN" />Veja os detalhes<ph name="LINK_END" />}other{O domínio <ph name="DOMAIN" /> necessita que faça uma cópia de segurança dos seus dados e devolva este <ph name="DEVICE_TYPE" /> dentro de {NUM_DAYS} dias.<ph name="LINK_BEGIN" />Veja os detalhes<ph name="LINK_END" />}}</translation>
 <translation id="7461924472993315131">Fixar</translation>
 <translation id="746216226901520237">Da próxima vez, o telemóvel irá desbloquear o <ph name="DEVICE_TYPE" />. Pode desativar o Smart Lock nas Definições.</translation>
 <translation id="7463006580194749499">Adicionar pessoa</translation>
@@ -6257,7 +6255,6 @@
 <translation id="8226619461731305576">Fila</translation>
 <translation id="8226628635270268143">Escolha os seus álbuns ou fotos favoritos.</translation>
 <translation id="8227119283605456246">Anexar ficheiro</translation>
-<translation id="822964464349305906"><ph name="TYPE_1" />, <ph name="TYPE_2" /></translation>
 <translation id="8230134520748321204">Pretende guardar a palavra-passe para <ph name="ORIGIN" />?</translation>
 <translation id="8234795456569844941">Ajude os nossos engenheiros a resolver este problema. Diga-nos o que aconteceu imediatamente antes de ter recebido a mensagem de erro do perfil:</translation>
 <translation id="8236917170563564587">Em alternativa, partilhar este separador</translation>
diff --git a/chrome/app/resources/generated_resources_ro.xtb b/chrome/app/resources/generated_resources_ro.xtb
index e51b9a2..fd18d36 100644
--- a/chrome/app/resources/generated_resources_ro.xtb
+++ b/chrome/app/resources/generated_resources_ro.xtb
@@ -4690,7 +4690,6 @@
 <translation id="642469772702851743">Dispozitivul (NS: <ph name="SERIAL_NUMBER" />) a fost blocat de proprietar.</translation>
 <translation id="6425556984042222041">Viteza de redare vocală a textului</translation>
 <translation id="6426200009596957090">Deschide setările ChromeVox</translation>
-<translation id="642654727595919401"><ph name="DOMAIN" /> solicită să faci backup datelor și să returnezi acest <ph name="DEVICE_TYPE" /> într-o săptămână.<ph name="LINK_BEGIN" />Află detalii<ph name="LINK_END" /></translation>
 <translation id="642729974267661262">Nu au permisiunea de a reda sunet</translation>
 <translation id="6428982734197629783">Se procesează imaginea</translation>
 <translation id="6429384232893414837">Eroare de actualizare</translation>
@@ -5566,7 +5565,6 @@
 <translation id="7457384018036134905">Gestionează limbile în setările sistemului de operare Chrome</translation>
 <translation id="7458168200501453431">Folosește același verificator ortografic folosit în Căutarea Google. Textul pe care îl introduci în browser este trimis la Google.</translation>
 <translation id="7460045493116006516">Tema actuală pe care ai instalat-o</translation>
-<translation id="7461729991508684543">{NUM_DAYS,plural, =1{<ph name="DOMAIN" /> solicită să faci backup datelor și să returnezi azi acest <ph name="DEVICE_TYPE" />. <ph name="LINK_BEGIN" />Află detalii<ph name="LINK_END" />}few{<ph name="DOMAIN" /> solicită să faci backup datelor și să returnezi acest <ph name="DEVICE_TYPE" /> în {NUM_DAYS} zile. <ph name="LINK_BEGIN" />Află detalii<ph name="LINK_END" />}other{<ph name="DOMAIN" /> solicită să faci backup datelor și să returnezi acest <ph name="DEVICE_TYPE" /> în {NUM_DAYS} de zile. <ph name="LINK_BEGIN" />Află detalii<ph name="LINK_END" />}}</translation>
 <translation id="7461924472993315131">Fixează</translation>
 <translation id="746216226901520237">Data viitoare, telefonul va debloca dispozitivul <ph name="DEVICE_TYPE" />. Poți debloca Smart Lock în Setări.</translation>
 <translation id="7463006580194749499">Adăugați o persoană</translation>
@@ -6258,7 +6256,6 @@
 <translation id="8226619461731305576">Coadă</translation>
 <translation id="8226628635270268143">Alege fotografiile și albumele preferate</translation>
 <translation id="8227119283605456246">Atașează un fișier</translation>
-<translation id="822964464349305906"><ph name="TYPE_1" />, <ph name="TYPE_2" /></translation>
 <translation id="8230134520748321204">Salvezi parola pentru <ph name="ORIGIN" />?</translation>
 <translation id="8234795456569844941">Ajută-i pe inginerii noștri să remedieze această problemă. Spune-ne ce s-a întâmplat chiar înainte să primești mesajul de eroare privind profilul:</translation>
 <translation id="8236917170563564587">Distribuie această filă</translation>
diff --git a/chrome/app/resources/generated_resources_ru.xtb b/chrome/app/resources/generated_resources_ru.xtb
index 0ee3c21..f3595bd 100644
--- a/chrome/app/resources/generated_resources_ru.xtb
+++ b/chrome/app/resources/generated_resources_ru.xtb
@@ -4675,7 +4675,6 @@
 <translation id="642469772702851743">Устройство (серийный номер <ph name="SERIAL_NUMBER" />) заблокировано владельцем.</translation>
 <translation id="6425556984042222041">Скорость озвучивания текста</translation>
 <translation id="6426200009596957090">Открыть настройки ChromeVox</translation>
-<translation id="642654727595919401">По правилам домена <ph name="DOMAIN" /> вам нужно выполнить резервное копирование данных и вернуть <ph name="DEVICE_TYPE" /> в течение недели. <ph name="LINK_BEGIN" />Подробнее…<ph name="LINK_END" /></translation>
 <translation id="642729974267661262">Запретить сайтам воспроизводить звук</translation>
 <translation id="6428982734197629783">Обработка изображения…</translation>
 <translation id="6429384232893414837">Ошибка обновления</translation>
@@ -5549,7 +5548,6 @@
 <translation id="7457384018036134905">Управление языковыми параметрами в настройках Chrome OS</translation>
 <translation id="7458168200501453431">Используется та же технология проверки правописания, что и в Google Поиске. Текст, который вы введете в браузере, будет отправлен в Google.</translation>
 <translation id="7460045493116006516">Тема, которая у вас установлена</translation>
-<translation id="7461729991508684543">{NUM_DAYS,plural, =1{По правилам домена <ph name="DOMAIN" /> вам нужно выполнить резервное копирование данных и вернуть <ph name="DEVICE_TYPE" /> сегодня. <ph name="LINK_BEGIN" />Подробнее…<ph name="LINK_END" />}one{По правилам домена <ph name="DOMAIN" /> вам нужно выполнить резервное копирование данных и вернуть <ph name="DEVICE_TYPE" /> в течение {NUM_DAYS} дня. <ph name="LINK_BEGIN" />Подробнее…<ph name="LINK_END" />}few{По правилам домена <ph name="DOMAIN" /> вам нужно выполнить резервное копирование данных и вернуть <ph name="DEVICE_TYPE" /> в течение {NUM_DAYS} дней. <ph name="LINK_BEGIN" />Подробнее…<ph name="LINK_END" />}many{По правилам домена <ph name="DOMAIN" /> вам нужно выполнить резервное копирование данных и вернуть <ph name="DEVICE_TYPE" /> в течение {NUM_DAYS} дней. <ph name="LINK_BEGIN" />Подробнее…<ph name="LINK_END" />}other{По правилам домена <ph name="DOMAIN" /> вам нужно выполнить резервное копирование данных и вернуть <ph name="DEVICE_TYPE" /> в течение {NUM_DAYS} дня. <ph name="LINK_BEGIN" />Подробнее…<ph name="LINK_END" />}}</translation>
 <translation id="7461924472993315131">Закрепить</translation>
 <translation id="746216226901520237">После этого вы сможете разблокировать устройство <ph name="DEVICE_TYPE" /> с помощью телефона. Выключить Smart Lock можно в настройках.</translation>
 <translation id="7463006580194749499">Добавить пользователя</translation>
@@ -6236,7 +6234,6 @@
 <translation id="8226619461731305576">Очередь</translation>
 <translation id="8226628635270268143">Выберите любимые фото и альбомы</translation>
 <translation id="8227119283605456246">Прикрепить файл</translation>
-<translation id="822964464349305906"><ph name="TYPE_1" /> и <ph name="TYPE_2" /></translation>
 <translation id="8230134520748321204">Сохранить пароль для <ph name="ORIGIN" />?</translation>
 <translation id="8234795456569844941">Чтобы нашим разработчикам было проще решить проблему, опишите, что произошло перед появлением сообщения об ошибке в профиле:</translation>
 <translation id="8236917170563564587">Поделиться текущей вкладкой</translation>
diff --git a/chrome/app/resources/generated_resources_si.xtb b/chrome/app/resources/generated_resources_si.xtb
index f753b03..0e333791 100644
--- a/chrome/app/resources/generated_resources_si.xtb
+++ b/chrome/app/resources/generated_resources_si.xtb
@@ -4688,7 +4688,6 @@
 <translation id="642469772702851743">මෙම උපාංගය (SN: <ph name="SERIAL_NUMBER" />) අයිතිකරු විසින් අගුලු දමා ඇත.</translation>
 <translation id="6425556984042222041">කථනයට පාඨය අනුපාතය</translation>
 <translation id="6426200009596957090">ChromeVox සැකසීම් විවෘත කරන්න</translation>
-<translation id="642654727595919401"><ph name="DOMAIN" /> හට ඔබ ඔබේ දත්ත උපස්ථ කර මෙම <ph name="DEVICE_TYPE" /> සති 1ක් ඇතුළත ආපසු දීමට අවශ්‍ය.<ph name="LINK_BEGIN" />විස්තර බලන්න<ph name="LINK_END" /></translation>
 <translation id="642729974267661262">හඬ වාදනය කිරීමට ඉඩ නොදේ</translation>
 <translation id="6428982734197629783">රූපය සැකසුම් කෙරේ</translation>
 <translation id="6429384232893414837">යාවත්කාලීන දෝෂයක්</translation>
@@ -5562,7 +5561,6 @@
 <translation id="7457384018036134905">Chrome OS සැකසීම් තුළ භාෂා කළමනාකරණය කරන්න</translation>
 <translation id="7458168200501453431">Google සෙවුමේ භාවිත නොවන අක්‍ෂර පරීක්‍ෂකයම භාවිත කරයි. ඔබ බ්‍රවුසරය තුළ ටයිප් කර පාඨය Google වෙත යවනු ලැබේ.</translation>
 <translation id="7460045493116006516">ඔබ ස්ථාපන කර ඇති වත්මන් තේමාව</translation>
-<translation id="7461729991508684543">{NUM_DAYS,plural, =1{<ph name="DOMAIN" /> හට ඔබ ඔබේ දත්ත උපස්ථ කර මෙම <ph name="DEVICE_TYPE" /> අද ආපසු දීමට අවශ්‍යයි.<ph name="LINK_BEGIN" />විස්තර බලන්න<ph name="LINK_END" />}one{<ph name="DOMAIN" /> හට ඔබ ඔබේ දත්ත උපස්ථ කර මෙම <ph name="DEVICE_TYPE" /> දින {NUM_DAYS} ක් ඇතුළත ආපසු දීමට අවශ්‍යයි.<ph name="LINK_BEGIN" />විස්තර බලන්න<ph name="LINK_END" />}other{<ph name="DOMAIN" /> හට ඔබ ඔබේ දත්ත උපස්ථ කර මෙම <ph name="DEVICE_TYPE" /> දින {NUM_DAYS} ක් ඇතුළත ආපසු දීමට අවශ්‍යයි.<ph name="LINK_BEGIN" />විස්තර බලන්න<ph name="LINK_END" />}}</translation>
 <translation id="7461924472993315131">පින්</translation>
 <translation id="746216226901520237">ඊළඟ වරට ඔබේ දුරකථනය ඔබේ <ph name="DEVICE_TYPE" /> අඟුලු අරියි. ඔබට සැකසීම් තුළ Smart Lock අක්‍රිය කළ හැක.</translation>
 <translation id="7463006580194749499">පුද්ගලයා එක් කරන්න</translation>
@@ -6252,7 +6250,6 @@
 <translation id="8226619461731305576">පෝලිම</translation>
 <translation id="8226628635270268143">ඔබේ ප්‍රියතම ඡායාරූප සහ ඇල්බම තෝරන්න</translation>
 <translation id="8227119283605456246">ගොනුව අමුණන්න</translation>
-<translation id="822964464349305906"><ph name="TYPE_1" />, <ph name="TYPE_2" /></translation>
 <translation id="8230134520748321204"><ph name="ORIGIN" /> සඳහා මුරපදය සුරකින්න ද?</translation>
 <translation id="8234795456569844941">කරුණාකර අපේ ඉංජිනේරුවන්ට මෙම ගැටලුව විසඳීමට උදවු කරන්න. ඔබට පැතිකඩ දෝෂ පණිවිඩය ලැබීමට හරියටම පෙර සිදු වූ දේ අපට කියන්න:</translation>
 <translation id="8236917170563564587">ඒ වෙනුවට මෙම පටිත්ත බෙදා ගන්න</translation>
diff --git a/chrome/app/resources/generated_resources_sk.xtb b/chrome/app/resources/generated_resources_sk.xtb
index 8851cd19..9aa53cb 100644
--- a/chrome/app/resources/generated_resources_sk.xtb
+++ b/chrome/app/resources/generated_resources_sk.xtb
@@ -4690,7 +4690,6 @@
 <translation id="642469772702851743">Toto zariadenie (sériové číslo: <ph name="SERIAL_NUMBER" />) uzamkol jeho vlastník.</translation>
 <translation id="6425556984042222041">Rýchlosť prevodu textu na reč</translation>
 <translation id="6426200009596957090">Otvoriť nastavenia ChromeVox</translation>
-<translation id="642654727595919401"><ph name="DOMAIN" /> vyžaduje, aby ste zálohovali svoje údaje a toto zariadenie <ph name="DEVICE_TYPE" /> do týždňa vrátili. <ph name="LINK_BEGIN" />Zobraziť podrobnosti<ph name="LINK_END" /></translation>
 <translation id="642729974267661262">Nemôže prehrávať zvuk</translation>
 <translation id="6428982734197629783">Obrázok sa spracúva</translation>
 <translation id="6429384232893414837">Chyba aktualizácie</translation>
@@ -5566,7 +5565,6 @@
 <translation id="7457384018036134905">Správa jazykov v nastaveniach systému Chrome OS</translation>
 <translation id="7458168200501453431">Používa rovnakú kontrolu pravopisu ako Vyhľadávanie Google. Text zadaný do prehliadača sa odošle Googlu.</translation>
 <translation id="7460045493116006516">Aktuálny nainštalovaný motív</translation>
-<translation id="7461729991508684543">{NUM_DAYS,plural, =1{<ph name="DOMAIN" /> vyžaduje, aby ste zálohovali svoje údaje a ešte dnes toto zariadenie <ph name="DEVICE_TYPE" /> vrátili. <ph name="LINK_BEGIN" />Zobraziť podrobnosti<ph name="LINK_END" />}few{<ph name="DOMAIN" /> vyžaduje, aby ste zálohovali svoje údaje a toto zariadenie <ph name="DEVICE_TYPE" /> do {NUM_DAYS} dní vrátili. <ph name="LINK_BEGIN" />Zobraziť podrobnosti<ph name="LINK_END" />}many{<ph name="DOMAIN" /> vyžaduje, aby ste zálohovali svoje údaje a toto zariadenie <ph name="DEVICE_TYPE" /> do {NUM_DAYS} dňa vrátili. <ph name="LINK_BEGIN" />Zobraziť podrobnosti<ph name="LINK_END" />}other{<ph name="DOMAIN" /> vyžaduje, aby ste zálohovali svoje údaje a toto zariadenie <ph name="DEVICE_TYPE" /> do {NUM_DAYS} dní vrátili. <ph name="LINK_BEGIN" />Zobraziť podrobnosti<ph name="LINK_END" />}}</translation>
 <translation id="7461924472993315131">Pripnúť</translation>
 <translation id="746216226901520237">Zariadenie <ph name="DEVICE_TYPE" /> nabudúce odomknete telefónom. Smart Lock vypnete v Nastaveniach.</translation>
 <translation id="7463006580194749499">Pridať osobu</translation>
@@ -6257,7 +6255,6 @@
 <translation id="8226619461731305576">Poradie</translation>
 <translation id="8226628635270268143">Vyberte svoje obľúbené fotky a albumy</translation>
 <translation id="8227119283605456246">Pripojiť súbor</translation>
-<translation id="822964464349305906"><ph name="TYPE_1" />, <ph name="TYPE_2" /></translation>
 <translation id="8230134520748321204">Chcete uložiť heslo pre web <ph name="ORIGIN" />?</translation>
 <translation id="8234795456569844941">Pomôžte našim programátorom vyriešiť tento problém. Povedzte nám, čo sa stalo presne predtým, než sa zobrazilo chybové hlásenie profilu:</translation>
 <translation id="8236917170563564587">Zdieľať radšej túto kartu</translation>
diff --git a/chrome/app/resources/generated_resources_sl.xtb b/chrome/app/resources/generated_resources_sl.xtb
index 18d5813..d207362 100644
--- a/chrome/app/resources/generated_resources_sl.xtb
+++ b/chrome/app/resources/generated_resources_sl.xtb
@@ -4694,7 +4694,6 @@
 <translation id="642469772702851743">To napravo (serijska številka: <ph name="SERIAL_NUMBER" />) je zaklenil lastnik.</translation>
 <translation id="6425556984042222041">Hitrost pretvorbe besedila v govor</translation>
 <translation id="6426200009596957090">Odpri nastavitve ChromeVoxa</translation>
-<translation id="642654727595919401">Domena <ph name="DOMAIN" /> zahteva, da varnostno kopirate podatke in vrnete to napravo <ph name="DEVICE_TYPE" /> v enem tednu. <ph name="LINK_BEGIN" />Prikaz podrobnosti<ph name="LINK_END" /></translation>
 <translation id="642729974267661262">Ni dovoljeno predvajanje zvoka</translation>
 <translation id="6428982734197629783">Obdelava slike</translation>
 <translation id="6429384232893414837">Napaka glede posodobitve</translation>
@@ -5570,7 +5569,6 @@
 <translation id="7457384018036134905">Upravljanje jezikov v nastavitvah sistema Chrome OS</translation>
 <translation id="7458168200501453431">Uporablja isto preverjanje črkovanja, kot se uporablja v Iskanju Google. Besedilo, ki ga vnesete v brskalniku, je poslano Googlu.</translation>
 <translation id="7460045493116006516">Trenutna tema, ki ste jo namestili</translation>
-<translation id="7461729991508684543">{NUM_DAYS,plural, =1{Domena <ph name="DOMAIN" /> zahteva, da varnostno kopirate podatke in vrnete to napravo <ph name="DEVICE_TYPE" /> še danes.<ph name="LINK_BEGIN" />Prikaz podrobnosti<ph name="LINK_END" />}one{Domena <ph name="DOMAIN" /> zahteva, da varnostno kopirate podatke in vrnete to napravo <ph name="DEVICE_TYPE" /> v {NUM_DAYS} dnevu.<ph name="LINK_BEGIN" />Prikaz podrobnosti<ph name="LINK_END" />}two{Domena <ph name="DOMAIN" /> zahteva, da varnostno kopirate podatke in vrnete to napravo <ph name="DEVICE_TYPE" /> v {NUM_DAYS} dnevih.<ph name="LINK_BEGIN" />Prikaz podrobnosti<ph name="LINK_END" />}few{Domena <ph name="DOMAIN" /> zahteva, da varnostno kopirate podatke in vrnete to napravo <ph name="DEVICE_TYPE" /> v {NUM_DAYS} dnevih.<ph name="LINK_BEGIN" />Prikaz podrobnosti<ph name="LINK_END" />}other{Domena <ph name="DOMAIN" /> zahteva, da varnostno kopirate podatke in vrnete to napravo <ph name="DEVICE_TYPE" /> v {NUM_DAYS} dnevih.<ph name="LINK_BEGIN" />Prikaz podrobnosti<ph name="LINK_END" />}}</translation>
 <translation id="7461924472993315131">Pripni</translation>
 <translation id="746216226901520237">Naslednjič bo telefon odklenil napravo <ph name="DEVICE_TYPE" />. Funkcijo Smart Lock lahko izklopite v nastavitvah.</translation>
 <translation id="7463006580194749499">Dodaj osebo</translation>
@@ -6262,7 +6260,6 @@
 <translation id="8226619461731305576">Čakalna vrsta</translation>
 <translation id="8226628635270268143">Izberite priljubljene fotografije in albume</translation>
 <translation id="8227119283605456246">Prilaganje datoteke</translation>
-<translation id="822964464349305906"><ph name="TYPE_1" />, <ph name="TYPE_2" /></translation>
 <translation id="8230134520748321204">Želite shraniti geslo za <ph name="ORIGIN" />?</translation>
 <translation id="8234795456569844941">Pomagajte našim tehnikom odpraviti to težavo. Opišite, kaj se je zgodilo, tik preden se je prikazalo sporočilo o napaki profila:</translation>
 <translation id="8236917170563564587">Deli ta zavihek</translation>
diff --git a/chrome/app/resources/generated_resources_sq.xtb b/chrome/app/resources/generated_resources_sq.xtb
index 786459d..c7b1675 100644
--- a/chrome/app/resources/generated_resources_sq.xtb
+++ b/chrome/app/resources/generated_resources_sq.xtb
@@ -4685,7 +4685,6 @@
 <translation id="642469772702851743">Kjo pajisje (NS: <ph name="SERIAL_NUMBER" />) u kyç nga zotëruesi.</translation>
 <translation id="6425556984042222041">Shpejtësia e "tekstit në ligjërim"</translation>
 <translation id="6426200009596957090">Hap cilësimet e ChromeVox</translation>
-<translation id="642654727595919401"><ph name="DOMAIN" /> kërkon që t'i rezervosh të dhënat e tua dhe ta kthesh këtë pajisje <ph name="DEVICE_TYPE" /> brenda 1 jave.<ph name="LINK_BEGIN" />Shiko detajet<ph name="LINK_END" /></translation>
 <translation id="642729974267661262">Nuk lejohen të luajnë tinguj</translation>
 <translation id="6428982734197629783">Po përpunon imazhin</translation>
 <translation id="6429384232893414837">Gabim në përditësim</translation>
@@ -5561,7 +5560,6 @@
 <translation id="7457384018036134905">Menaxho gjuhët te cilësimet e Chrome OS</translation>
 <translation id="7458168200501453431">Përdor të njëjtin kontrollues drejtshkrimor që përdoret në kërkimin e Google. Teksti që shkruan në shfletues dërgohet te Google.</translation>
 <translation id="7460045493116006516">Tema aktuale që ke instaluar</translation>
-<translation id="7461729991508684543">{NUM_DAYS,plural, =1{<ph name="DOMAIN" /> kërkon që t'i rezervosh të dhënat e tua dhe ta kthesh këtë pajisje <ph name="DEVICE_TYPE" /> sot.<ph name="LINK_BEGIN" />Shiko detajet<ph name="LINK_END" />}other{<ph name="DOMAIN" /> kërkon që t'i rezervosh të dhënat e tua dhe ta kthesh këtë pajisje <ph name="DEVICE_TYPE" /> brenda {NUM_DAYS} ditëve.<ph name="LINK_BEGIN" />Shiko detajet<ph name="LINK_END" />}}</translation>
 <translation id="7461924472993315131">Gozhdoje</translation>
 <translation id="746216226901520237">Herën tjetër, telefoni yt do të shkyçë pajisjen tënde <ph name="DEVICE_TYPE" />. Mund ta çaktivizosh Smart Lock te "Cilësimet".</translation>
 <translation id="7463006580194749499">Shto person</translation>
@@ -6251,7 +6249,6 @@
 <translation id="8226619461731305576">Vendos në radhë</translation>
 <translation id="8226628635270268143">Zgjidh fotografitë dhe albumet e tua të preferuara</translation>
 <translation id="8227119283605456246">Bashkëngjit skedarin</translation>
-<translation id="822964464349305906"><ph name="TYPE_1" />, <ph name="TYPE_2" /></translation>
 <translation id="8230134520748321204">Të ruhet fjalëkalimi për <ph name="ORIGIN" />?</translation>
 <translation id="8234795456569844941">Ndihmoji inxhinierët tanë ta rregullojnë këtë problem. Na trego se çfarë ndodhi përpara se të merrje mesazhin e gabimit të profilit:</translation>
 <translation id="8236917170563564587">Ndaj këtë skedë më mirë</translation>
diff --git a/chrome/app/resources/generated_resources_sr-Latn.xtb b/chrome/app/resources/generated_resources_sr-Latn.xtb
index 9d47184..5b7cd78 100644
--- a/chrome/app/resources/generated_resources_sr-Latn.xtb
+++ b/chrome/app/resources/generated_resources_sr-Latn.xtb
@@ -4689,7 +4689,6 @@
 <translation id="642469772702851743">Ovaj uređaj (SB: <ph name="SERIAL_NUMBER" />) je zaključao vlasnik.</translation>
 <translation id="6425556984042222041">Brzina pretvaranja teksta u govor</translation>
 <translation id="6426200009596957090">Otvori podešavanja ChromeVox-a</translation>
-<translation id="642654727595919401"><ph name="DOMAIN" /> zahteva da napravite rezervnu kopiju podataka i da vratite ovaj <ph name="DEVICE_TYPE" /> u roku od nedelju dana.<ph name="LINK_BEGIN" />Pogledajte detalje<ph name="LINK_END" /></translation>
 <translation id="642729974267661262">Nije im dozvoljeno da puštaju zvuk</translation>
 <translation id="6428982734197629783">Slika se obrađuje</translation>
 <translation id="6429384232893414837">Greška pri ažuriranju</translation>
@@ -5565,7 +5564,6 @@
 <translation id="7457384018036134905">Upravljajte jezicima u podešavanjima Chrome OS-a</translation>
 <translation id="7458168200501453431">Koristi istu proveru pravopisa kao Google pretraga. Tekst koji unesete u pregledač se šalje Google-u.</translation>
 <translation id="7460045493116006516">Aktuelna tema koju ste instalirali</translation>
-<translation id="7461729991508684543">{NUM_DAYS,plural, =1{<ph name="DOMAIN" /> zahteva da napravite rezervnu kopiju podataka i da vratite ovaj <ph name="DEVICE_TYPE" /> danas.<ph name="LINK_BEGIN" />Pogledajte detalje<ph name="LINK_END" />}one{<ph name="DOMAIN" /> zahteva da napravite rezervnu kopiju podataka i da vratite ovaj <ph name="DEVICE_TYPE" /> roku od {NUM_DAYS} dana.<ph name="LINK_BEGIN" />Pogledajte detalje<ph name="LINK_END" />}few{<ph name="DOMAIN" /> zahteva da napravite rezervnu kopiju podataka i da vratite ovaj <ph name="DEVICE_TYPE" /> roku od {NUM_DAYS} dana.<ph name="LINK_BEGIN" />Pogledajte detalje<ph name="LINK_END" />}other{<ph name="DOMAIN" /> zahteva da napravite rezervnu kopiju podataka i da vratite ovaj <ph name="DEVICE_TYPE" /> roku od {NUM_DAYS} dana.<ph name="LINK_BEGIN" />Pogledajte detalje<ph name="LINK_END" />}}</translation>
 <translation id="7461924472993315131">Zakači</translation>
 <translation id="746216226901520237">Sledeći put će telefon otključati <ph name="DEVICE_TYPE" />. Možete da isključite Smart Lock u podešavanjima.</translation>
 <translation id="7463006580194749499">Dodaj osobu</translation>
@@ -6257,7 +6255,6 @@
 <translation id="8226619461731305576">Red</translation>
 <translation id="8226628635270268143">Odaberite omiljene slike i albume</translation>
 <translation id="8227119283605456246">Priloži datoteku</translation>
-<translation id="822964464349305906"><ph name="TYPE_1" />, <ph name="TYPE_2" /></translation>
 <translation id="8230134520748321204">Želite li da sačuvate lozinku za <ph name="ORIGIN" />?</translation>
 <translation id="8234795456569844941">Pomozite našim inženjerima da reše problem. Recite nam šta se dogodilo neposredno pre nego što ste dobili poruku o grešci na profilu:</translation>
 <translation id="8236917170563564587">Deli ovu karticu</translation>
diff --git a/chrome/app/resources/generated_resources_sr.xtb b/chrome/app/resources/generated_resources_sr.xtb
index a3377d7..f0416e2f 100644
--- a/chrome/app/resources/generated_resources_sr.xtb
+++ b/chrome/app/resources/generated_resources_sr.xtb
@@ -4689,7 +4689,6 @@
 <translation id="642469772702851743">Овај уређај (СБ: <ph name="SERIAL_NUMBER" />) је закључао власник.</translation>
 <translation id="6425556984042222041">Брзина претварања текста у говор</translation>
 <translation id="6426200009596957090">Отвори подешавања ChromeVox-а</translation>
-<translation id="642654727595919401"><ph name="DOMAIN" /> захтева да направите резервну копију података и да вратите овај <ph name="DEVICE_TYPE" /> у року од недељу дана.<ph name="LINK_BEGIN" />Погледајте детаље<ph name="LINK_END" /></translation>
 <translation id="642729974267661262">Није им дозвољено да пуштају звук</translation>
 <translation id="6428982734197629783">Слика се обрађује</translation>
 <translation id="6429384232893414837">Грешка при ажурирању</translation>
@@ -5565,7 +5564,6 @@
 <translation id="7457384018036134905">Управљајте језицима у подешавањима Chrome ОС-а</translation>
 <translation id="7458168200501453431">Користи исту проверу правописа као Google претрага. Текст који унесете у прегледач се шаље Google-у.</translation>
 <translation id="7460045493116006516">Актуелна тема коју сте инсталирали</translation>
-<translation id="7461729991508684543">{NUM_DAYS,plural, =1{<ph name="DOMAIN" /> захтева да направите резервну копију података и да вратите овај <ph name="DEVICE_TYPE" /> данас.<ph name="LINK_BEGIN" />Погледајте детаље<ph name="LINK_END" />}one{<ph name="DOMAIN" /> захтева да направите резервну копију података и да вратите овај <ph name="DEVICE_TYPE" /> року од {NUM_DAYS} дана.<ph name="LINK_BEGIN" />Погледајте детаље<ph name="LINK_END" />}few{<ph name="DOMAIN" /> захтева да направите резервну копију података и да вратите овај <ph name="DEVICE_TYPE" /> року од {NUM_DAYS} дана.<ph name="LINK_BEGIN" />Погледајте детаље<ph name="LINK_END" />}other{<ph name="DOMAIN" /> захтева да направите резервну копију података и да вратите овај <ph name="DEVICE_TYPE" /> року од {NUM_DAYS} дана.<ph name="LINK_BEGIN" />Погледајте детаље<ph name="LINK_END" />}}</translation>
 <translation id="7461924472993315131">Закачи</translation>
 <translation id="746216226901520237">Следећи пут ће телефон откључати <ph name="DEVICE_TYPE" />. Можете да искључите Smart Lock у подешавањима.</translation>
 <translation id="7463006580194749499">Додај особу</translation>
@@ -6257,7 +6255,6 @@
 <translation id="8226619461731305576">Ред</translation>
 <translation id="8226628635270268143">Одаберите омиљене слике и албуме</translation>
 <translation id="8227119283605456246">Приложи датотеку</translation>
-<translation id="822964464349305906"><ph name="TYPE_1" />, <ph name="TYPE_2" /></translation>
 <translation id="8230134520748321204">Желите ли да сачувате лозинку за <ph name="ORIGIN" />?</translation>
 <translation id="8234795456569844941">Помозите нашим инжењерима да реше проблем. Реците нам шта се догодило непосредно пре него што сте добили поруку о грешци на профилу:</translation>
 <translation id="8236917170563564587">Дели ову картицу</translation>
diff --git a/chrome/app/resources/generated_resources_sv.xtb b/chrome/app/resources/generated_resources_sv.xtb
index 92b1694b..6b484ac 100644
--- a/chrome/app/resources/generated_resources_sv.xtb
+++ b/chrome/app/resources/generated_resources_sv.xtb
@@ -4689,7 +4689,6 @@
 <translation id="642469772702851743">Enheten (serienr: <ph name="SERIAL_NUMBER" />) har låsts av ägaren.</translation>
 <translation id="6425556984042222041">Hastighet för text till tal</translation>
 <translation id="6426200009596957090">Öppna ChromeVox-inställningarna</translation>
-<translation id="642654727595919401"><ph name="DOMAIN" /> kräver att du säkerhetskopierar din data och returnerar denna <ph name="DEVICE_TYPE" /> inom 1 vecka.<ph name="LINK_BEGIN" />Mer information<ph name="LINK_END" /></translation>
 <translation id="642729974267661262">Får inte spela upp ljud</translation>
 <translation id="6428982734197629783">Bilden bearbetas</translation>
 <translation id="6429384232893414837">Uppdateringsfel</translation>
@@ -5565,7 +5564,6 @@
 <translation id="7457384018036134905">Hantera språk i inställningarna för Chrome OS</translation>
 <translation id="7458168200501453431">Använder samma stavningskontroll som Google Sök. Text som du anger i webbläsaren skickas till Google.</translation>
 <translation id="7460045493116006516">Aktuellt tema som du har installerat</translation>
-<translation id="7461729991508684543">{NUM_DAYS,plural, =1{<ph name="DOMAIN" /> kräver att du säkerhetskopierar din data och returnerar denna <ph name="DEVICE_TYPE" /> i dag.<ph name="LINK_BEGIN" />Mer information<ph name="LINK_END" />}other{<ph name="DOMAIN" /> kräver att du säkerhetskopierar din data och returnerar denna <ph name="DEVICE_TYPE" /> om {NUM_DAYS} dagar.<ph name="LINK_BEGIN" />Mer information<ph name="LINK_END" />}}</translation>
 <translation id="7461924472993315131">Fäst</translation>
 <translation id="746216226901520237">Nästa gång låser mobilen upp din <ph name="DEVICE_TYPE" />. Du kan inaktivera Smart Lock i inställningarna.</translation>
 <translation id="7463006580194749499">Lägg till person</translation>
@@ -6257,7 +6255,6 @@
 <translation id="8226619461731305576">Utskriftskö</translation>
 <translation id="8226628635270268143">Välj favoritfoton och favoritalbum</translation>
 <translation id="8227119283605456246">Bifoga fil</translation>
-<translation id="822964464349305906"><ph name="TYPE_1" />, <ph name="TYPE_2" /></translation>
 <translation id="8230134520748321204">Vill du spara lösenordet för <ph name="ORIGIN" />?</translation>
 <translation id="8234795456569844941">Hjälp våra programutvecklare att lösa problemet genom att berätta vad som hände precis innan profilmeddelandet visades:</translation>
 <translation id="8236917170563564587">Dela den här fliken i stället</translation>
diff --git a/chrome/app/resources/generated_resources_sw.xtb b/chrome/app/resources/generated_resources_sw.xtb
index 557649d..3fec2c0 100644
--- a/chrome/app/resources/generated_resources_sw.xtb
+++ b/chrome/app/resources/generated_resources_sw.xtb
@@ -4684,7 +4684,6 @@
 <translation id="642469772702851743">Kifaa hiki (SN: <ph name="SERIAL_NUMBER" />) kimefungwa na mmiliki.</translation>
 <translation id="6425556984042222041">Kasi ya kusoma maandishi kwa sauti</translation>
 <translation id="6426200009596957090">Fungua mipangilio ya ChromeVox</translation>
-<translation id="642654727595919401"><ph name="DOMAIN" /> inahitaji uhifadhi nakala ya data yako na urudishe <ph name="DEVICE_TYPE" /> ndani ya wiki moja.<ph name="LINK_BEGIN" />Angalia maelezo<ph name="LINK_END" /></translation>
 <translation id="642729974267661262">Zisizoruhusiwa kucheza sauti</translation>
 <translation id="6428982734197629783">Inachakata picha</translation>
 <translation id="6429384232893414837">Hitilafu ya kusasisha</translation>
@@ -5560,7 +5559,6 @@
 <translation id="7457384018036134905">Dhibiti lugha katika mipangilio ya Mfumo wa Uendeshaji wa Chrome</translation>
 <translation id="7458168200501453431">Hutumia kikagua tahajia kinachotumiwa katika Huduma ya Tafuta na Google. Maandishi unayochapisha katika kivinjari yanatumwa kwa Google.</translation>
 <translation id="7460045493116006516">Mandhari ya sasa uliyosakinisha</translation>
-<translation id="7461729991508684543">{NUM_DAYS,plural, =1{<ph name="DOMAIN" /> inahitaji uhifadhi nakala ya data yako na urudishe <ph name="DEVICE_TYPE" /> leo.<ph name="LINK_BEGIN" />Angalia maelezo<ph name="LINK_END" />}other{<ph name="DOMAIN" /> inahitaji uhifadhi nakala ya data yako na urudishe <ph name="DEVICE_TYPE" /> ndani ya siku {NUM_DAYS}.<ph name="LINK_BEGIN" />Angalia maelezo<ph name="LINK_END" />}}</translation>
 <translation id="7461924472993315131">Bana</translation>
 <translation id="746216226901520237">Wakati ujao, simu yako itafungua <ph name="DEVICE_TYPE" /> yako. Unaweza kuzima Smart Lock katika Mipangilio.</translation>
 <translation id="7463006580194749499">Ongeza mtumiaji mwingine</translation>
@@ -6254,7 +6252,6 @@
 <translation id="8226619461731305576">Foleni</translation>
 <translation id="8226628635270268143">Chagua picha na albamu uzipendazo zaidi</translation>
 <translation id="8227119283605456246">Ambatisha faili</translation>
-<translation id="822964464349305906"><ph name="TYPE_1" />, <ph name="TYPE_2" /></translation>
 <translation id="8230134520748321204">Ungependa kuhifadhi nenosiri la <ph name="ORIGIN" />?</translation>
 <translation id="8234795456569844941">Tafadhali wasaidie wahandisi wetu kutatua tatizo hili. Tueleze hasa kilichotendeka kabla ya kupokea ujumbe wa hitilafu:</translation>
 <translation id="8236917170563564587">Shiriki kichupo hiki badala yake</translation>
diff --git a/chrome/app/resources/generated_resources_ta.xtb b/chrome/app/resources/generated_resources_ta.xtb
index 5f1ac38..e8bc17d 100644
--- a/chrome/app/resources/generated_resources_ta.xtb
+++ b/chrome/app/resources/generated_resources_ta.xtb
@@ -4675,7 +4675,6 @@
 <translation id="642469772702851743">இந்தச் சாதனம் (SN: <ph name="SERIAL_NUMBER" />), உரிமையாளரால் பூட்டப்பட்டது.</translation>
 <translation id="6425556984042222041">’உரையிலிருந்து பேச்சு’ வேக விகிதம்</translation>
 <translation id="6426200009596957090">ChromeVox அமைப்புகளைத் திற</translation>
-<translation id="642654727595919401"><ph name="DOMAIN" /> டொமைனைப் பயன்படுத்த, உங்கள் தரவைக் காப்புப் பிரதி எடுத்துவிட்டு இந்த <ph name="DEVICE_TYPE" /> சாதனத்தை 1 வாரத்திற்குள் திருப்பியளிக்க வேண்டும். <ph name="LINK_BEGIN" />விவரங்களைக் காட்டு<ph name="LINK_END" /></translation>
 <translation id="642729974267661262">ஒலியை இயக்க அனுமதி இல்லாத தளங்கள்</translation>
 <translation id="6428982734197629783">படத்தைச் செயல்படுத்துகிறது</translation>
 <translation id="6429384232893414837">புதுப்பிப்பதில் பிழை</translation>
@@ -5549,7 +5548,6 @@
 <translation id="7457384018036134905">Chrome OS அமைப்புகளில் மொழிகளை நிர்வகியுங்கள்</translation>
 <translation id="7458168200501453431">Google தேடலில் பயன்படுத்தப்படும் அதே பிழைத்திருத்தியைப் பயன்படுத்தும். உலாவியில் நீங்கள் உள்ளிடும் உரை Googleளுக்கு அனுப்பப்படும்.</translation>
 <translation id="7460045493116006516">தற்போது நிறுவியுள்ள தீம்</translation>
-<translation id="7461729991508684543">{NUM_DAYS,plural, =1{<ph name="DOMAIN" /> டொமைனைப் பயன்படுத்த, உங்கள் தரவைக் காப்புப் பிரதி எடுத்துவிட்டு இந்த <ph name="DEVICE_TYPE" /> சாதனத்தை இன்றே திருப்பியளிக்க வேண்டும். <ph name="LINK_BEGIN" />விவரங்களைக் காட்டு<ph name="LINK_END" />}other{<ph name="DOMAIN" /> டொமைனைப் பயன்படுத்த, உங்கள் தரவைக் காப்புப் பிரதி எடுத்துவிட்டு இந்த <ph name="DEVICE_TYPE" /> சாதனத்தை {NUM_DAYS} நாட்களுக்குள் திருப்பியளிக்க வேண்டும். <ph name="LINK_BEGIN" />விவரங்களைக் காட்டு<ph name="LINK_END" />}}</translation>
 <translation id="7461924472993315131">நிலையாக வை</translation>
 <translation id="746216226901520237">அடுத்த முறை, உங்கள் ஃபோன் <ph name="DEVICE_TYPE" /> சாதனத்தைத் திறக்கும். அமைப்புகளில் Smart Lockகை முடக்கலாம்.</translation>
 <translation id="7463006580194749499">நபரைச் சேர்</translation>
@@ -6237,7 +6235,6 @@
 <translation id="8226619461731305576">வரிசை</translation>
 <translation id="8226628635270268143">உங்களுக்குப் பிடித்த படங்களையும் ஆல்பங்களையும் தேர்வுசெய்க</translation>
 <translation id="8227119283605456246">கோப்பை இணை</translation>
-<translation id="822964464349305906"><ph name="TYPE_1" />, <ph name="TYPE_2" /></translation>
 <translation id="8230134520748321204"><ph name="ORIGIN" />க்கான கடவுச்சொல்லைச் சேமிக்கவா?</translation>
 <translation id="8234795456569844941">சுயவிவரப் பிழைச் செய்தியைப் பெறும் முன், என்ன நடந்தது என்பதை விவரிப்பதன் மூலம், இந்தச் சிக்கலைச் சரிசெய்ய, எங்கள் பொறியாளர்களுக்கு உதவவும்.</translation>
 <translation id="8236917170563564587">இந்தத் தாவலைப் பகிர்</translation>
diff --git a/chrome/app/resources/generated_resources_te.xtb b/chrome/app/resources/generated_resources_te.xtb
index 52b7a6f..6e5ce70 100644
--- a/chrome/app/resources/generated_resources_te.xtb
+++ b/chrome/app/resources/generated_resources_te.xtb
@@ -4689,7 +4689,6 @@
 <translation id="642469772702851743">ఈ (SN: <ph name="SERIAL_NUMBER" />) పరికరం యజమానిచే లాక్ చేయబడింది.</translation>
 <translation id="6425556984042222041">టెక్ట్స్-టు-స్పీచ్ రేట్</translation>
 <translation id="6426200009596957090">ChromeVox సెట్టింగ్‌లను తెరువు</translation>
-<translation id="642654727595919401"><ph name="DOMAIN" /> కోసం మీరు మీ డేటాను బ్యాకప్ చేసి, 1 వారం లోగా ఈ <ph name="DEVICE_TYPE" />ని రిటర్న్ చేయాలి.<ph name="LINK_BEGIN" />వివరాలను చూడండి<ph name="LINK_END" /></translation>
 <translation id="642729974267661262">శబ్దాన్ని ప్లే చేయడానికి అనుమతించబడలేదు</translation>
 <translation id="6428982734197629783">ఇమేజ్‌ను ప్రాసెస్ చేస్తోంది</translation>
 <translation id="6429384232893414837">అప్‌డేట్‌లో ఎర్రర్</translation>
@@ -5565,7 +5564,6 @@
 <translation id="7457384018036134905">Chrome OS సెట్టింగ్‌లలో భాషలను మేనేజ్ చేయండి</translation>
 <translation id="7458168200501453431">Google Searchలో ఉపయోగించే స్పెల్ చెకర్‌నే ఇక్కడ ఉపయోగిస్తుంది. మీరు బ్రౌజర్‌లో టైప్ చేసే టెక్స్ట్‌ను Googleకు పంపుతుంది.</translation>
 <translation id="7460045493116006516">మీరు ప్రస్తుతం ఇన్‌స్టాల్ చేసుకున్న థీమ్</translation>
-<translation id="7461729991508684543">{NUM_DAYS,plural, =1{<ph name="DOMAIN" /> కోసం మీరు మీ డేటాను బ్యాకప్ చేసి, ఈ <ph name="DEVICE_TYPE" />ని ఈ రోజే రిటర్న్ చేయాల్సి ఉంటుంది.<ph name="LINK_BEGIN" />వివరాలను చూడండి<ph name="LINK_END" />}other{<ph name="DOMAIN" /> కోసం మీరు మీ డేటాను బ్యాకప్ చేసి, ఈ <ph name="DEVICE_TYPE" />ని {NUM_DAYS} రోజులలోపు రిటర్న్ చేయాల్సి ఉంటుంది.<ph name="LINK_BEGIN" />వివరాలను చూడండి<ph name="LINK_END" />}}</translation>
 <translation id="7461924472993315131">పిన్ చేయి</translation>
 <translation id="746216226901520237">తదుపరిసారి మీ ఫోన్ మీ <ph name="DEVICE_TYPE" />‌ను అన్‌లాక్ చేస్తుంది. మీరు సెట్టింగ్‌లలో Smart Lockను ఆఫ్ చేయవచ్చు.</translation>
 <translation id="7463006580194749499">వ్యక్తిని జోడించు</translation>
@@ -6253,7 +6251,6 @@
 <translation id="8226619461731305576">క్రమ వరుస</translation>
 <translation id="8226628635270268143">మీకు ఇష్టమైన ఫోటోలు, ఆల్బమ్‌లను ఎంచుకోండి</translation>
 <translation id="8227119283605456246">ఫైల్‌ను జోడించు</translation>
-<translation id="822964464349305906"><ph name="TYPE_1" />, <ph name="TYPE_2" /></translation>
 <translation id="8230134520748321204"><ph name="ORIGIN" /> కోసం పాస్‌వర్డ్‌ని సేవ్ చేయాలా?</translation>
 <translation id="8234795456569844941">దయచేసి ఈ సమస్యను పరిష్కరించడంలో మా ఇంజినీర్‌లకు సహాయపడండి. ప్రొఫైల్ ఎర్రర్ సందేశం ఎదురయ్యే ముందు ఏమి జరిగిందో మాకు తెలియజేయండి:</translation>
 <translation id="8236917170563564587">బదులుగా, ఈ ట్యాబ్‌ను షేర్ చేయి</translation>
diff --git a/chrome/app/resources/generated_resources_th.xtb b/chrome/app/resources/generated_resources_th.xtb
index eda5112..690175c 100644
--- a/chrome/app/resources/generated_resources_th.xtb
+++ b/chrome/app/resources/generated_resources_th.xtb
@@ -4674,7 +4674,6 @@
 <translation id="642469772702851743">เจ้าของล็อกอุปกรณ์นี้ไว้ (หมายเลขประจำเครื่อง: <ph name="SERIAL_NUMBER" />)</translation>
 <translation id="6425556984042222041">อัตราของการอ่านออกเสียงข้อความ</translation>
 <translation id="6426200009596957090">เปิดการตั้งค่า ChromeVox</translation>
-<translation id="642654727595919401"><ph name="DOMAIN" /> กำหนดให้คุณสำรองข้อมูลและส่งคืน <ph name="DEVICE_TYPE" /> เครื่องนี้ภายใน 1 สัปดาห์ <ph name="LINK_BEGIN" />ดูรายละเอียด<ph name="LINK_END" /></translation>
 <translation id="642729974267661262">ไม่ได้รับอนุญาตให้เล่นเสียง</translation>
 <translation id="6428982734197629783">กำลังดำเนินการกับรูปภาพ</translation>
 <translation id="6429384232893414837">เกิดข้อผิดพลาดในการอัปเดต</translation>
@@ -5548,7 +5547,6 @@
 <translation id="7457384018036134905">จัดการภาษาในการตั้งค่า Chrome OS</translation>
 <translation id="7458168200501453431">ใช้โปรแกรมตรวจตัวสะกดแบบเดียวกับ Google Search ข้อความที่คุณพิมพ์ในเบราว์เซอร์จะส่งไปยัง Google</translation>
 <translation id="7460045493116006516">ธีมที่คุณติดตั้งอยู่ตอนนี้</translation>
-<translation id="7461729991508684543">{NUM_DAYS,plural, =1{<ph name="DOMAIN" /> กำหนดให้คุณสำรองข้อมูลและส่งคืน <ph name="DEVICE_TYPE" /> เครื่องนี้วันนี้ <ph name="LINK_BEGIN" />ดูรายละเอียด<ph name="LINK_END" />}other{<ph name="DOMAIN" /> กำหนดให้คุณสำรองข้อมูลและส่งคืน <ph name="DEVICE_TYPE" /> เครื่องนี้ภายใน {NUM_DAYS} วัน <ph name="LINK_BEGIN" />ดูรายละเอียด<ph name="LINK_END" />}}</translation>
 <translation id="7461924472993315131">ตรึง</translation>
 <translation id="746216226901520237">โทรศัพท์จะปลดล็อก <ph name="DEVICE_TYPE" /> ของคุณในครั้งถัดไป คุณปิด Smart Lock ได้ในการตั้งค่า</translation>
 <translation id="7463006580194749499">เพิ่มบุคคล</translation>
@@ -6236,7 +6234,6 @@
 <translation id="8226619461731305576">คิว</translation>
 <translation id="8226628635270268143">เลือกรูปภาพและอัลบั้มที่ชื่นชอบ</translation>
 <translation id="8227119283605456246">แนบไฟล์</translation>
-<translation id="822964464349305906"><ph name="TYPE_1" />, <ph name="TYPE_2" /></translation>
 <translation id="8230134520748321204">บันทึกรหัสผ่านสำหรับ <ph name="ORIGIN" /> ไหม</translation>
 <translation id="8234795456569844941">โปรดช่วยวิศวกรของเราแก้ปัญหานี้ แจ้งให้เราทราบถึงสิ่งที่เกิดขึ้นก่อนที่คุณจะได้รับข้อความแสดงข้อผิดพลาดของโปรไฟล์</translation>
 <translation id="8236917170563564587">แชร์แท็บนี้แทน</translation>
diff --git a/chrome/app/resources/generated_resources_tr.xtb b/chrome/app/resources/generated_resources_tr.xtb
index 6f352111..433d9b0 100644
--- a/chrome/app/resources/generated_resources_tr.xtb
+++ b/chrome/app/resources/generated_resources_tr.xtb
@@ -4690,7 +4690,6 @@
 <translation id="642469772702851743">Bu cihaz <ph name="SERIAL_NUMBER" /> yöneticisi tarafından kilitlendi.</translation>
 <translation id="6425556984042222041">Metin okuma konuşma hızı</translation>
 <translation id="6426200009596957090">ChromeVox ayarlarını aç</translation>
-<translation id="642654727595919401"><ph name="DOMAIN" />, verilerinizi yedeklemenizi ve bu <ph name="DEVICE_TYPE" /> cihazı 1 hafta içinde iade etmenizi gerektiriyor.<ph name="LINK_BEGIN" />Ayrıntılara bakın<ph name="LINK_END" /></translation>
 <translation id="642729974267661262">Ses çalmasına izin verilmeyen siteler</translation>
 <translation id="6428982734197629783">Resim işleniyor</translation>
 <translation id="6429384232893414837">Güncelleme hatası</translation>
@@ -5566,7 +5565,6 @@
 <translation id="7457384018036134905">Chrome OS ayarlarındaki dilleri yönet</translation>
 <translation id="7458168200501453431">Google Arama'da kullanılan yazım denetleyiciyi kullanır. Tarayıcıda yazdığınız metin Google'a gönderilir.</translation>
 <translation id="7460045493116006516">Yüklediğiniz mevcut tema</translation>
-<translation id="7461729991508684543">{NUM_DAYS,plural, =1{<ph name="DOMAIN" />, verilerinizi yedeklemenizi ve bu <ph name="DEVICE_TYPE" /> cihazı bugün iade etmenizi gerektiriyor. <ph name="LINK_BEGIN" />Ayrıntılara bakın<ph name="LINK_END" />}other{<ph name="DOMAIN" />, verilerinizi yedeklemenizi ve bu <ph name="DEVICE_TYPE" /> cihazı {NUM_DAYS} gün içinde iade etmenizi gerektiriyor. <ph name="LINK_BEGIN" />Ayrıntılara bakın<ph name="LINK_END" />}}</translation>
 <translation id="7461924472993315131">Sabitle</translation>
 <translation id="746216226901520237">Bir dahaki sefere telefonunuzu kullanarak <ph name="DEVICE_TYPE" /> cihazınızın kilidini açabilirsiniz. Smart Lock'u Ayarlar'dan kapatabilirsiniz.</translation>
 <translation id="7463006580194749499">Kişi ekle</translation>
@@ -6257,7 +6255,6 @@
 <translation id="8226619461731305576">Sıra</translation>
 <translation id="8226628635270268143">En beğendiğiniz fotoğraf ve albümleri seçin</translation>
 <translation id="8227119283605456246">Dosya ekle</translation>
-<translation id="822964464349305906"><ph name="TYPE_1" />, <ph name="TYPE_2" /></translation>
 <translation id="8230134520748321204"><ph name="ORIGIN" /> için şifreniz kaydedilsin mi?</translation>
 <translation id="8234795456569844941">Lütfen mühendislerimizin bu sorunu çözmesine yardımcı olun. Profil hata mesajını almadan hemen önce ne yaptığınızı belirtin:</translation>
 <translation id="8236917170563564587">Onun yerine bu sekmeyi paylaş</translation>
diff --git a/chrome/app/resources/generated_resources_uk.xtb b/chrome/app/resources/generated_resources_uk.xtb
index c910622..85a8d16 100644
--- a/chrome/app/resources/generated_resources_uk.xtb
+++ b/chrome/app/resources/generated_resources_uk.xtb
@@ -4692,7 +4692,6 @@
 <translation id="642469772702851743">Власник заблокував цей пристрій (серійний номер <ph name="SERIAL_NUMBER" />).</translation>
 <translation id="6425556984042222041">Швидкість синтезу мовлення</translation>
 <translation id="6426200009596957090">Відкрити налаштування ChromeVox</translation>
-<translation id="642654727595919401">Домен <ph name="DOMAIN" /> вимагає, щоб ви створили резервну копію своїх даних і повернули пристрій <ph name="DEVICE_TYPE" /> упродовж 1 тижня. <ph name="LINK_BEGIN" />Докладніше<ph name="LINK_END" /></translation>
 <translation id="642729974267661262">Заборонено відтворювати звуки</translation>
 <translation id="6428982734197629783">Обробка зображення</translation>
 <translation id="6429384232893414837">Помилка оновлення</translation>
@@ -5568,7 +5567,6 @@
 <translation id="7457384018036134905">Керувати мовами в налаштуваннях ОС Chrome</translation>
 <translation id="7458168200501453431">Використовує ту саму технологію перевірки правопису, що й Пошук Google. Текст, який ви вводите у веб-переглядачі, надсилається в Google.</translation>
 <translation id="7460045493116006516">Поточна встановлена тема</translation>
-<translation id="7461729991508684543">{NUM_DAYS,plural, =1{Домен <ph name="DOMAIN" /> вимагає, щоб ви створили резервну копію своїх даних і повернули пристрій <ph name="DEVICE_TYPE" /> сьогодні. <ph name="LINK_BEGIN" />Докладніше<ph name="LINK_END" />}one{Домен <ph name="DOMAIN" /> вимагає, щоб ви створили резервну копію своїх даних і повернули пристрій <ph name="DEVICE_TYPE" /> упродовж {NUM_DAYS} дня. <ph name="LINK_BEGIN" />Докладніше<ph name="LINK_END" />}few{Домен <ph name="DOMAIN" /> вимагає, щоб ви створили резервну копію своїх даних і повернули пристрій <ph name="DEVICE_TYPE" /> упродовж {NUM_DAYS} днів. <ph name="LINK_BEGIN" />Докладніше<ph name="LINK_END" />}many{Домен <ph name="DOMAIN" /> вимагає, щоб ви створили резервну копію своїх даних і повернули пристрій <ph name="DEVICE_TYPE" /> упродовж {NUM_DAYS} днів. <ph name="LINK_BEGIN" />Докладніше<ph name="LINK_END" />}other{Домен <ph name="DOMAIN" /> вимагає, щоб ви створили резервну копію своїх даних і повернули пристрій <ph name="DEVICE_TYPE" /> упродовж {NUM_DAYS} дня. <ph name="LINK_BEGIN" />Докладніше<ph name="LINK_END" />}}</translation>
 <translation id="7461924472993315131">Закріпити</translation>
 <translation id="746216226901520237">Наступного разу ви зможете розблокувати пристрій <ph name="DEVICE_TYPE" /> за допомогою свого телефона. Smart Lock можна вимкнути в налаштуваннях.</translation>
 <translation id="7463006580194749499">Додати користувача</translation>
@@ -6260,7 +6258,6 @@
 <translation id="8226619461731305576">Черга</translation>
 <translation id="8226628635270268143">Вибрати улюблені фотографії й альбоми</translation>
 <translation id="8227119283605456246">Вкласти файл</translation>
-<translation id="822964464349305906"><ph name="TYPE_1" />, <ph name="TYPE_2" /></translation>
 <translation id="8230134520748321204">Зберегти пароль для <ph name="ORIGIN" />?</translation>
 <translation id="8234795456569844941">Допоможіть нашим розробникам вирішити цю проблему. Опишіть, що сталося перед тим, як з’явилося повідомлення про помилку профілю.</translation>
 <translation id="8236917170563564587">Натомість поділитися цією вкладкою</translation>
diff --git a/chrome/app/resources/generated_resources_ur.xtb b/chrome/app/resources/generated_resources_ur.xtb
index 0649fd6..e40f9c34 100644
--- a/chrome/app/resources/generated_resources_ur.xtb
+++ b/chrome/app/resources/generated_resources_ur.xtb
@@ -4689,7 +4689,6 @@
 <translation id="642469772702851743">‏اس آلہ (SN: <ph name="SERIAL_NUMBER" />‎) کو مالک نے مقفل کیا تھا۔</translation>
 <translation id="6425556984042222041">ٹیکسٹ ٹو اسپیچ کی شرح</translation>
 <translation id="6426200009596957090">‏ChromeVox کی ترتیبات کھولیں</translation>
-<translation id="642654727595919401"><ph name="DOMAIN" /> آپ سے اپنے ڈیٹا کا بیک اپ لیںے اور اس <ph name="DEVICE_TYPE" /> کو ایک ہفتے کے اندر واپس کرنے کا تقاضہ کرتا ہے۔<ph name="LINK_BEGIN" />تفصیلات دیکھیں<ph name="LINK_END" /></translation>
 <translation id="642729974267661262">آواز چلانے کی اجازت نہیں ہے</translation>
 <translation id="6428982734197629783">تصویر پر کارروائی ہو رہی ہے</translation>
 <translation id="6429384232893414837">اپ ڈیٹ کی خرابی</translation>
@@ -5565,7 +5564,6 @@
 <translation id="7457384018036134905">‏Chrome OS ترتیبات میں زبانوں کا نظم کریں</translation>
 <translation id="7458168200501453431">‏اسی املا جانچ کنندہ کا استعمال کرتا ہے جس کا Google تلاش میں استعمال کیا جاتا ہے۔ آپ براؤزر میں جو متن ٹائپ کرتے ہیں وہ Google کو بھیجا جاتا ہے۔</translation>
 <translation id="7460045493116006516">موجودہ تھیم جسے آپ نے انسٹال کیا ہے</translation>
-<translation id="7461729991508684543">{NUM_DAYS,plural, =1{<ph name="DOMAIN" /> آپ سے اپنے ڈیٹا کا بیک اپ لینے اور اس <ph name="DEVICE_TYPE" /> کو آج ہی واپس کرنے کا تقاضہ کرتا ہے۔<ph name="LINK_BEGIN" />تفصیلات دیکھیں<ph name="LINK_END" />}other{<ph name="DOMAIN" /> آپ سے اپنے ڈیٹا کا بیک اپ لیںے اور اس <ph name="DEVICE_TYPE" /> کو {NUM_DAYS} دن کے اندر واپس کرنے کا تقاضہ کرتا ہے۔<ph name="LINK_BEGIN" />تفصیلات دیکھیں<ph name="LINK_END" />}}</translation>
 <translation id="7461924472993315131">پن کریں</translation>
 <translation id="746216226901520237">‏اگلی بار آپ کے فون سے آپ کا <ph name="DEVICE_TYPE" /> غیر مقفل ہوگا۔ آپ ترتیبات میں Smart Lock کو آف کر سکتے ہیں۔</translation>
 <translation id="7463006580194749499">شخص کو شامل کریں</translation>
@@ -6257,7 +6255,6 @@
 <translation id="8226619461731305576">قطار</translation>
 <translation id="8226628635270268143">اپنی پسندیدہ تصاویر اور البمز منتخب کریں</translation>
 <translation id="8227119283605456246">فائل منسلک کریں</translation>
-<translation id="822964464349305906"><ph name="TYPE_1" />، <ph name="TYPE_2" /></translation>
 <translation id="8230134520748321204"><ph name="ORIGIN" /> کے لیے پاس ورڈ کو محفوظ کریں؟</translation>
 <translation id="8234795456569844941">براہ مہربانی مسئلہ حل کرنے میں ہمارے انجینئروں کی مدد کریں۔ ہمیں بتائیں کہ پروفائل کی خرابی کا پیغام موصول ہونے سے پہلے کیا ہوا تھا:</translation>
 <translation id="8236917170563564587">اس کے بجائے اس ٹیب کا اشتراک کریں</translation>
diff --git a/chrome/app/resources/generated_resources_uz.xtb b/chrome/app/resources/generated_resources_uz.xtb
index 285f013..1db1d966 100644
--- a/chrome/app/resources/generated_resources_uz.xtb
+++ b/chrome/app/resources/generated_resources_uz.xtb
@@ -4686,7 +4686,6 @@
 <translation id="642469772702851743">Bu qurilma (seriya raqami: <ph name="SERIAL_NUMBER" />) egasi tomonidan qulflangan.</translation>
 <translation id="6425556984042222041">Matnni nutqqa aylantirish tezligi</translation>
 <translation id="6426200009596957090">ChromeVox sozlamalarini ochish</translation>
-<translation id="642654727595919401"><ph name="DOMAIN" /> maʼlumotlaringizni zaxiralash va bu <ph name="DEVICE_TYPE" /> qurilmasini 1 hafta ichida qaytarishingizni talab qilmoqda.<ph name="LINK_BEGIN" />Batafsil<ph name="LINK_END" /></translation>
 <translation id="642729974267661262">Ovozni ijro qilish taqiqlangan</translation>
 <translation id="6428982734197629783">Rasm qayta ishlanmoqda</translation>
 <translation id="6429384232893414837">Yangilashda xatolik yuz berdi</translation>
@@ -5562,7 +5561,6 @@
 <translation id="7457384018036134905">Tillarni Chrome OS sozlamalaridan boshqaring</translation>
 <translation id="7458168200501453431">Google qidiruvida ishlatiladigan imlo tekshiruvi vositasidan foydalanadi. Brauzerda kiritiladigan matn Google serverlariga yuboriladi.</translation>
 <translation id="7460045493116006516">Siz oʻrnatgan joriy mavzu</translation>
-<translation id="7461729991508684543">{NUM_DAYS,plural, =1{<ph name="DOMAIN" /> maʼlumotlaringizni zaxiralash va bu <ph name="DEVICE_TYPE" /> qurilmasini bugunoq qaytarishingizni talab qilmoqda.<ph name="LINK_BEGIN" />Batafsil<ph name="LINK_END" />}other{<ph name="DOMAIN" /> maʼlumotlaringizni zaxiralash va bu <ph name="DEVICE_TYPE" /> qurilmasini {NUM_DAYS} kun ichida qaytarishingizni talab qilmoqda.<ph name="LINK_BEGIN" />Batafsil<ph name="LINK_END" />}}</translation>
 <translation id="7461924472993315131">Qadab qo‘yish</translation>
 <translation id="746216226901520237">Keyingi safar telefoningiz <ph name="DEVICE_TYPE" /> qurilmasini qulfdan chiqara oladi. Sozlamalar orqali Smart Lock funksiyasini faolsizlantirish mumkin.</translation>
 <translation id="7463006580194749499">Foydalanuvchi qo‘shish</translation>
@@ -6252,7 +6250,6 @@
 <translation id="8226619461731305576">Navbat</translation>
 <translation id="8226628635270268143">Sevimli suratlar va albomlaringizni tanlang</translation>
 <translation id="8227119283605456246">Fayl biriktirish</translation>
-<translation id="822964464349305906"><ph name="TYPE_1" />, <ph name="TYPE_2" /></translation>
 <translation id="8230134520748321204"><ph name="ORIGIN" /> uchun parol saqlansinmi?</translation>
 <translation id="8234795456569844941">Profil xatolik xabaridan oldin nima bo‘lganligi haqida ma’lumot bering:</translation>
 <translation id="8236917170563564587">Oʻrniga bu varaqni ulashish</translation>
diff --git a/chrome/app/resources/generated_resources_vi.xtb b/chrome/app/resources/generated_resources_vi.xtb
index 64ef9fad..2234c8f 100644
--- a/chrome/app/resources/generated_resources_vi.xtb
+++ b/chrome/app/resources/generated_resources_vi.xtb
@@ -4674,7 +4674,6 @@
 <translation id="642469772702851743">Thiết bị này (Số sê-ri: <ph name="SERIAL_NUMBER" />) đã bị chủ sở hữu khóa.</translation>
 <translation id="6425556984042222041">Tốc độ lời nói của tính năng chuyển văn bản sang lời nói</translation>
 <translation id="6426200009596957090">Mở cài đặt ChromeVox</translation>
-<translation id="642654727595919401"><ph name="DOMAIN" /> yêu cầu bạn sao lưu dữ liệu và trả lại thiết bị <ph name="DEVICE_TYPE" /> này trong vòng 1 tuần.<ph name="LINK_BEGIN" />Xem thông tin chi tiết<ph name="LINK_END" /></translation>
 <translation id="642729974267661262">Không được phép phát âm thanh</translation>
 <translation id="6428982734197629783">Đang xử lý hình ảnh</translation>
 <translation id="6429384232893414837">Lỗi cập nhật</translation>
@@ -5548,7 +5547,6 @@
 <translation id="7457384018036134905">Quản lý ngôn ngữ trong phần cài đặt của Chrome OS</translation>
 <translation id="7458168200501453431">Sử dụng chính trình kiểm tra chính tả được dùng trong tính năng tìm kiếm của Google. Thông tin bạn nhập vào trình duyệt sẽ được gửi tới Google.</translation>
 <translation id="7460045493116006516">Giao diện hiện tại mà bạn đã cài đặt</translation>
-<translation id="7461729991508684543">{NUM_DAYS,plural, =1{<ph name="DOMAIN" /> yêu cầu bạn sao lưu dữ liệu và trả lại thiết bị <ph name="DEVICE_TYPE" /> này ngay hôm nay.<ph name="LINK_BEGIN" />Xem thông tin chi tiết<ph name="LINK_END" />}other{<ph name="DOMAIN" /> yêu cầu bạn sao lưu dữ liệu và trả lại thiết bị <ph name="DEVICE_TYPE" /> này trong vòng {NUM_DAYS} ngày.<ph name="LINK_BEGIN" />Xem thông tin chi tiết<ph name="LINK_END" />}}</translation>
 <translation id="7461924472993315131">Ghim</translation>
 <translation id="746216226901520237">Vào lần tới, điện thoại của bạn sẽ mở khóa <ph name="DEVICE_TYPE" />. Bạn có thể tắt tính năng Smart Lock trong phần Cài đặt.</translation>
 <translation id="7463006580194749499">Thêm người</translation>
@@ -6236,7 +6234,6 @@
 <translation id="8226619461731305576">Hàng đợi</translation>
 <translation id="8226628635270268143">Chọn ảnh và album bạn yêu thích</translation>
 <translation id="8227119283605456246">Đính kèm tệp</translation>
-<translation id="822964464349305906"><ph name="TYPE_1" />, <ph name="TYPE_2" /></translation>
 <translation id="8230134520748321204">Bạn có muốn lưu mật khẩu cho <ph name="ORIGIN" /> không?</translation>
 <translation id="8234795456569844941">Hãy giúp các kỹ sư của chúng tôi khắc phục sự cố này. Hãy cho chúng tôi biết điều gì đã xảy ra ngay trước khi bạn nhận được thông báo lỗi hồ sơ:</translation>
 <translation id="8236917170563564587">Chia sẻ thẻ này</translation>
diff --git a/chrome/app/resources/generated_resources_zh-CN.xtb b/chrome/app/resources/generated_resources_zh-CN.xtb
index 907e468..3a4d20c8 100644
--- a/chrome/app/resources/generated_resources_zh-CN.xtb
+++ b/chrome/app/resources/generated_resources_zh-CN.xtb
@@ -4669,7 +4669,6 @@
 <translation id="642469772702851743">此设备(序列号:<ph name="SERIAL_NUMBER" />)已被所有者锁定。</translation>
 <translation id="6425556984042222041">文字转语音的语速</translation>
 <translation id="6426200009596957090">打开 ChromeVox 设置</translation>
-<translation id="642654727595919401"><ph name="DOMAIN" /> 要求您备份自己的数据并在 1 周内退还此 <ph name="DEVICE_TYPE" />。<ph name="LINK_BEGIN" />查看详情<ph name="LINK_END" /></translation>
 <translation id="642729974267661262">不允许播放声音</translation>
 <translation id="6428982734197629783">正在处理图片</translation>
 <translation id="6429384232893414837">更新错误</translation>
@@ -5543,7 +5542,6 @@
 <translation id="7457384018036134905">在 Chrome 操作系统设置中管理语言</translation>
 <translation id="7458168200501453431">使用 Google 搜索所用的拼写检查工具。您在浏览器中输入的文字会被发送给 Google。</translation>
 <translation id="7460045493116006516">您已安装的当前主题背景</translation>
-<translation id="7461729991508684543">{NUM_DAYS,plural, =1{<ph name="DOMAIN" /> 要求您备份自己的数据并在今天退还此 <ph name="DEVICE_TYPE" />。<ph name="LINK_BEGIN" />查看详情<ph name="LINK_END" />}other{<ph name="DOMAIN" /> 要求您备份自己的数据并在 {NUM_DAYS} 天内退还此 <ph name="DEVICE_TYPE" />。<ph name="LINK_BEGIN" />查看详情<ph name="LINK_END" />}}</translation>
 <translation id="7461924472993315131">固定</translation>
 <translation id="746216226901520237">下次,您只需使用手机就能解锁您的 <ph name="DEVICE_TYPE" /> 了。您可在“设置”中关闭 Smart Lock。</translation>
 <translation id="7463006580194749499">添加用户</translation>
@@ -6230,7 +6228,6 @@
 <translation id="8226619461731305576">队列</translation>
 <translation id="8226628635270268143">选择您喜爱的照片和影集</translation>
 <translation id="8227119283605456246">附上文件</translation>
-<translation id="822964464349305906"><ph name="TYPE_1" />、<ph name="TYPE_2" /></translation>
 <translation id="8230134520748321204">要保存 <ph name="ORIGIN" /> 的密码吗?</translation>
 <translation id="8234795456569844941">请告诉我们在您收到个人资料错误消息之前发生的情况,以帮助我们的工程师解决此问题:</translation>
 <translation id="8236917170563564587">改为分享此标签页</translation>
diff --git a/chrome/app/resources/generated_resources_zh-HK.xtb b/chrome/app/resources/generated_resources_zh-HK.xtb
index 23b0b6e..0c4603b 100644
--- a/chrome/app/resources/generated_resources_zh-HK.xtb
+++ b/chrome/app/resources/generated_resources_zh-HK.xtb
@@ -4688,7 +4688,6 @@
 <translation id="642469772702851743">這部裝置 (序號:<ph name="SERIAL_NUMBER" />) 已被其擁有者上鎖。</translation>
 <translation id="6425556984042222041">「文字轉語音」語速</translation>
 <translation id="6426200009596957090">開啟 ChromeVox 設定</translation>
-<translation id="642654727595919401"><ph name="DOMAIN" /> 要求您備份資料,並在 1 星期內歸還此 <ph name="DEVICE_TYPE" />。<ph name="LINK_BEGIN" />查看詳情<ph name="LINK_END" /></translation>
 <translation id="642729974267661262">不允許播放音效</translation>
 <translation id="6428982734197629783">正在處理相片</translation>
 <translation id="6429384232893414837">更新錯誤</translation>
@@ -5564,7 +5563,6 @@
 <translation id="7457384018036134905">管理 Chrome 作業系統中的語言</translation>
 <translation id="7458168200501453431">系統會使用與「Google 搜尋」相同的的拼字檢查工具。您在瀏覽器輸入的文字將會傳送給 Google。</translation>
 <translation id="7460045493116006516">您目前安裝的主題</translation>
-<translation id="7461729991508684543">{NUM_DAYS,plural, =1{<ph name="DOMAIN" /> 要求您備份資料,並在今天內歸還此 <ph name="DEVICE_TYPE" />。<ph name="LINK_BEGIN" />查看詳情<ph name="LINK_END" />}other{<ph name="DOMAIN" /> 要求您備份資料,並在 {NUM_DAYS} 天內歸還此 <ph name="DEVICE_TYPE" />。<ph name="LINK_BEGIN" />查看詳情<ph name="LINK_END" />}}</translation>
 <translation id="7461924472993315131">Pin</translation>
 <translation id="746216226901520237">下次您便可使用手機來解鎖 <ph name="DEVICE_TYPE" />。您可在「設定」中停用 Smart Lock。</translation>
 <translation id="7463006580194749499">新增使用者</translation>
@@ -6255,7 +6253,6 @@
 <translation id="8226619461731305576">佇列</translation>
 <translation id="8226628635270268143">選擇喜愛的相片和相簿</translation>
 <translation id="8227119283605456246">附加檔案</translation>
-<translation id="822964464349305906"><ph name="TYPE_1" />、<ph name="TYPE_2" /></translation>
 <translation id="8230134520748321204">要儲存 <ph name="ORIGIN" /> 的密碼嗎?</translation>
 <translation id="8234795456569844941">為協助我們的軟件工程師修正此問題,請說明您在收到設定檔錯誤訊息前發生的狀況:</translation>
 <translation id="8236917170563564587">改為分享此分頁</translation>
diff --git a/chrome/app/resources/generated_resources_zh-TW.xtb b/chrome/app/resources/generated_resources_zh-TW.xtb
index 2c9e9bb..965946c 100644
--- a/chrome/app/resources/generated_resources_zh-TW.xtb
+++ b/chrome/app/resources/generated_resources_zh-TW.xtb
@@ -4687,7 +4687,6 @@
 <translation id="642469772702851743">這部裝置 (序號:<ph name="SERIAL_NUMBER" />) 已被擁有者鎖定。</translation>
 <translation id="6425556984042222041">文字轉語音的速率</translation>
 <translation id="6426200009596957090">開啟 ChromeVox 設定</translation>
-<translation id="642654727595919401"><ph name="DOMAIN" /> 要求你備份自己的資料,並且在 1 週內退還這部「<ph name="DEVICE_TYPE" />」。<ph name="LINK_BEGIN" />查看詳情<ph name="LINK_END" /></translation>
 <translation id="642729974267661262">不得播放音效</translation>
 <translation id="6428982734197629783">正在處理圖片</translation>
 <translation id="6429384232893414837">更新錯誤</translation>
@@ -5563,7 +5562,6 @@
 <translation id="7457384018036134905">在 Chrome 作業系統設定中管理語言</translation>
 <translation id="7458168200501453431">系統會使用與 Google 搜尋相同的拼字檢查技術,將你在瀏覽器中輸入的文字傳送給 Google。</translation>
 <translation id="7460045493116006516">你目前安裝的主題</translation>
-<translation id="7461729991508684543">{NUM_DAYS,plural, =1{<ph name="DOMAIN" /> 要求你備份自己的資料,並且在今天內退還這部「<ph name="DEVICE_TYPE" />」。<ph name="LINK_BEGIN" />查看詳情<ph name="LINK_END" />}other{<ph name="DOMAIN" /> 要求你備份自己的資料,並且在 {NUM_DAYS} 天內退還這部「<ph name="DEVICE_TYPE" />」。<ph name="LINK_BEGIN" />查看詳情<ph name="LINK_END" />}}</translation>
 <translation id="7461924472993315131">固定</translation>
 <translation id="746216226901520237">下次手機會為你的 <ph name="DEVICE_TYPE" /> 解鎖。你可以在「設定」中停用 Smart Lock。</translation>
 <translation id="7463006580194749499">新增使用者</translation>
@@ -6254,7 +6252,6 @@
 <translation id="8226619461731305576">佇列</translation>
 <translation id="8226628635270268143">選擇你最喜愛的相片和相簿</translation>
 <translation id="8227119283605456246">附加檔案</translation>
-<translation id="822964464349305906"><ph name="TYPE_1" />、<ph name="TYPE_2" /></translation>
 <translation id="8230134520748321204">要儲存 <ph name="ORIGIN" /> 的密碼嗎?</translation>
 <translation id="8234795456569844941">請告訴我們在你收到設定檔錯誤訊息前執行的動作,以協助工程師修正此問題:</translation>
 <translation id="8236917170563564587">改為分享這個分頁</translation>
diff --git a/chrome/app/resources/generated_resources_zu.xtb b/chrome/app/resources/generated_resources_zu.xtb
index cd6d0f4a..e7f11fe 100644
--- a/chrome/app/resources/generated_resources_zu.xtb
+++ b/chrome/app/resources/generated_resources_zu.xtb
@@ -4689,7 +4689,6 @@
 <translation id="642469772702851743">Le divayisi (SN: <ph name="SERIAL_NUMBER" />) ikhiywe umnikazi.</translation>
 <translation id="6425556984042222041">Isigaba sokuguqula-umbhalo-ube-inkulumo</translation>
 <translation id="6426200009596957090">Vula izilungiselelo ze-ChromeVox</translation>
-<translation id="642654727595919401">I-<ph name="DOMAIN" /> idinga ukuba wenze ikhophi yasenqolobaneni ngedatha yakho bese ubuyisele le <ph name="DEVICE_TYPE" /> phakathi neviki eli-1.<ph name="LINK_BEGIN" />Bona imininingwane<ph name="LINK_END" /></translation>
 <translation id="642729974267661262">Ayivumelekile ukudlala umsindo</translation>
 <translation id="6428982734197629783">Icubungula isithombe</translation>
 <translation id="6429384232893414837">Iphutha lokubuyekeza</translation>
@@ -5565,7 +5564,6 @@
 <translation id="7457384018036134905">Phatha izilimi kumasethingi e-Chrome OS</translation>
 <translation id="7458168200501453431">Isebenzisa isihloli sokupela esifanayo esisetshenziswe kusesho lwe-Google. Umbhalo owuthayipha kusiphequluli uthunyelwe ku-Google.</translation>
 <translation id="7460045493116006516">Itimu yamanje oyifakile</translation>
-<translation id="7461729991508684543">{NUM_DAYS,plural, =1{I-<ph name="DOMAIN" /> idinga ukuba uwenze ikhophi yasenqolobaneni yedatha yakho bese ubuyisela le <ph name="DEVICE_TYPE" /> namuhla.<ph name="LINK_BEGIN" />Bona imininingwane<ph name="LINK_END" />}one{I-<ph name="DOMAIN" /> idinga ukuba wenze ikhophi yasenqolobaneni ngedatha yakho bese ubuyisele le <ph name="DEVICE_TYPE" /> phakathi nezinsuku ezingu-{NUM_DAYS}.<ph name="LINK_BEGIN" />Bona imininingwane<ph name="LINK_END" />}other{I-<ph name="DOMAIN" /> idinga ukuba wenze ikhophi yasenqolobaneni ngedatha yakho bese ubuyisele le <ph name="DEVICE_TYPE" /> phakathi nezinsuku ezingu-{NUM_DAYS}.<ph name="LINK_BEGIN" />Bona imininingwane<ph name="LINK_END" />}}</translation>
 <translation id="7461924472993315131">Phina</translation>
 <translation id="746216226901520237">Ngesikhathi esilandelayo, ifoni yakho izovula i-<ph name="DEVICE_TYPE" />yakho. ungavala i-Smart Lock kuzilungiselelo.</translation>
 <translation id="7463006580194749499">Engeza umuntu</translation>
@@ -6256,7 +6254,6 @@
 <translation id="8226619461731305576">Umugqa</translation>
 <translation id="8226628635270268143">Khetha izithombe zakho eziyintandokazi kanye nama-albhamu</translation>
 <translation id="8227119283605456246">Namathisela ifayela</translation>
-<translation id="822964464349305906"><ph name="TYPE_1" />, <ph name="TYPE_2" /></translation>
 <translation id="8230134520748321204">Londolozela amaphasiwedi i-<ph name="ORIGIN" />?</translation>
 <translation id="8234795456569844941">Sicela usize onjiniyela bethu ukulungisa le nkinga. Sitshele ukuthi kwenzeke ini ngaphambi kokuthi uthole umlayezo wephutha wephrofayela:</translation>
 <translation id="8236917170563564587">Yabelana ngale thebhu kunalokho</translation>
diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc
index 7c86106..e20dcbf 100644
--- a/chrome/browser/about_flags.cc
+++ b/chrome/browser/about_flags.cc
@@ -206,6 +206,7 @@
 
 #if defined(OS_CHROMEOS)
 #include "ash/public/cpp/ash_switches.h"
+#include "chrome/browser/chromeos/crosapi/browser_util.h"
 #include "chrome/browser/nearby_sharing/common/nearby_share_features.h"
 #include "chromeos/constants/chromeos_features.h"
 #include "chromeos/constants/chromeos_switches.h"
@@ -686,6 +687,17 @@
 
 #if defined(OS_CHROMEOS)
 const char kLacrosSupportInternalName[] = "lacros-support";
+const char kLacrosStabilityInternalName[] = "lacros-stability";
+
+const FeatureEntry::Choice kLacrosStabilityChoices[] = {
+    {flags_ui::kGenericExperimentChoiceDefault, "", ""},
+    {flag_descriptions::kLacrosStabilityLessStableDescription,
+     crosapi::browser_util::kLacrosStabilitySwitch,
+     crosapi::browser_util::kLacrosStabilityLessStable},
+    {flag_descriptions::kLacrosStabilityMoreStableDescription,
+     crosapi::browser_util::kLacrosStabilitySwitch,
+     crosapi::browser_util::kLacrosStabilityMoreStable},
+};
 
 const FeatureEntry::Choice kUiShowCompositedLayerBordersChoices[] = {
     {flags_ui::kGenericExperimentChoiceDefault, "", ""},
@@ -2865,6 +2877,9 @@
     {kLacrosSupportInternalName, flag_descriptions::kLacrosSupportName,
      flag_descriptions::kLacrosSupportDescription, kOsCrOS,
      FEATURE_VALUE_TYPE(chromeos::features::kLacrosSupport)},
+    {kLacrosStabilityInternalName, flag_descriptions::kLacrosStabilityName,
+     flag_descriptions::kLacrosStabilityDescription, kOsCrOS,
+     MULTI_VALUE_TYPE(kLacrosStabilityChoices)},
     {"list-all-display-modes", flag_descriptions::kListAllDisplayModesName,
      flag_descriptions::kListAllDisplayModesDescription, kOsCrOS,
      FEATURE_VALUE_TYPE(display::features::kListAllDisplayModes)},
@@ -2937,6 +2952,13 @@
         kOsMac | kOsWin | kOsCrOS | kOsAndroid,
         SINGLE_DISABLE_VALUE_TYPE(switches::kDisableAcceleratedVideoEncode),
     },
+    {
+        "enable-media-internals",
+        flag_descriptions::kEnableMediaInternalsName,
+        flag_descriptions::kEnableMediaInternalsDescription,
+        kOsAll,
+        FEATURE_VALUE_TYPE(media::kEnableMediaInternals),
+    },
 #if defined(OS_CHROMEOS)
     {
         "zero-copy-video-capture",
@@ -6959,12 +6981,13 @@
     return true;
   }
 
-  if (!strcmp(kLacrosSupportInternalName, entry.internal_name) &&
-      channel != version_info::Channel::BETA &&
-      channel != version_info::Channel::DEV &&
-      channel != version_info::Channel::CANARY &&
-      channel != version_info::Channel::UNKNOWN) {
-    return true;
+  if (!strcmp(kLacrosSupportInternalName, entry.internal_name) ||
+      !strcmp(kLacrosStabilityInternalName, entry.internal_name)) {
+    if (!base::FeatureList::IsEnabled(
+            crosapi::browser_util::kLacrosAllowOnStableChannel) &&
+        channel == version_info::Channel::STABLE) {
+      return true;
+    }
   }
 
   // The following flags are only available to teamfooders.
diff --git a/chrome/browser/browser_resources.grd b/chrome/browser/browser_resources.grd
index 62a53294..b355156 100644
--- a/chrome/browser/browser_resources.grd
+++ b/chrome/browser/browser_resources.grd
@@ -499,7 +499,7 @@
       <if expr="safe_browsing_mode == 1">
         <include name="IDR_RESET_PASSWORD_HTML" file="resources\reset_password\reset_password.html" type="BINDATA" />
         <include name="IDR_RESET_PASSWORD_JS" file="resources\reset_password\reset_password.js" type="BINDATA" />
-        <include name="IDR_RESET_PASSWORD_MOJOM_LITE_JS" file="${root_gen_dir}\chrome\browser\ui\webui\reset_password\reset_password.mojom-lite.js" use_base_dir="false" type="BINDATA" />
+        <include name="IDR_RESET_PASSWORD_MOJOM_WEBUI_JS" file="${root_gen_dir}\mojom-webui\chrome\browser\ui\webui\reset_password\reset_password.mojom-webui.js" use_base_dir="false" type="BINDATA" />
       </if>
       <if expr="not is_android">
         <include name="IDR_TAB_RANKER_EXAMPLE_PREPROCESSOR_CONFIG_PB" file="resource_coordinator\tab_ranker\example_preprocessor_config.pb" type="BINDATA" />
diff --git a/chrome/browser/browsing_data/browsing_data_quota_helper_unittest.cc b/chrome/browser/browsing_data/browsing_data_quota_helper_unittest.cc
index ede118c..01e286c 100644
--- a/chrome/browser/browsing_data/browsing_data_quota_helper_unittest.cc
+++ b/chrome/browser/browsing_data/browsing_data_quota_helper_unittest.cc
@@ -6,6 +6,7 @@
 #include <stdint.h>
 
 #include "base/bind.h"
+#include "base/callback_helpers.h"
 #include "base/containers/span.h"
 #include "base/files/scoped_temp_dir.h"
 #include "base/memory/scoped_refptr.h"
@@ -39,6 +40,7 @@
     quota_manager_ = base::MakeRefCounted<storage::QuotaManager>(
         /*is_incognito=*/false, temp_dir_.GetPath(),
         content::GetIOThreadTaskRunner({}).get(),
+        /*quota_change_callback=*/base::DoNothing(),
         /*special_storage_policy=*/nullptr, storage::GetQuotaSettingsFunc());
     helper_ = base::WrapRefCounted(
         new BrowsingDataQuotaHelperImpl(quota_manager_.get()));
diff --git a/chrome/browser/chromeos/crosapi/browser_loader.cc b/chrome/browser/chromeos/crosapi/browser_loader.cc
index ed73b6f..a6693f7 100644
--- a/chrome/browser/chromeos/crosapi/browser_loader.cc
+++ b/chrome/browser/chromeos/crosapi/browser_loader.cc
@@ -14,6 +14,7 @@
 #include "base/task/task_traits.h"
 #include "base/task/thread_pool.h"
 #include "chrome/browser/chromeos/crosapi/browser_util.h"
+#include "chromeos/constants/chromeos_features.h"
 #include "chromeos/constants/chromeos_switches.h"
 #include "chromeos/cryptohome/system_salt_getter.h"
 
@@ -21,14 +22,39 @@
 
 namespace {
 
-constexpr char kLacrosComponentName[] = "lacros-fishfood";
+// The Lacros dogfood is the logical successor to the Lacros fishfood. They are
+// no intrinsic differences other than a slight change to the app ids used for
+// deployment. This feature is a temporary measure to ensure that when the new
+// app ids are ready, ash can be immediately switched to the dogfood deployment.
+// At that point, this feature can only be removed from the code and we can
+// switch unconditionally to the dogfood deployment..
+const base::Feature kLacrosPreferDogfoodOverFishfood{
+    "LacrosPreferDogfoodOverFishfood", base::FEATURE_DISABLED_BY_DEFAULT};
+
+std::string GetLacrosComponentName() {
+  if (!base::FeatureList::IsEnabled(kLacrosPreferDogfoodOverFishfood))
+    return "lacros-fishfood";
+
+  const base::CommandLine* cmdline = base::CommandLine::ForCurrentProcess();
+  if (cmdline->HasSwitch(browser_util::kLacrosStabilitySwitch)) {
+    std::string value =
+        cmdline->GetSwitchValueASCII(browser_util::kLacrosStabilitySwitch);
+    if (value == browser_util::kLacrosStabilityLessStable) {
+      return "lacros-dogfood-dev";
+    } else if (value == browser_util::kLacrosStabilityMoreStable) {
+      return "lacros-dogfood-stable";
+    }
+  }
+  // Use more frequent updates by default.
+  return "lacros-dogfood-dev";
+}
 
 // Returns whether lacros-fishfood component is already installed.
 // If it is, delete the user directory, too, because it will be
 // uninstalled.
 bool CheckInstalledAndMaybeRemoveUserDirectory(
     scoped_refptr<component_updater::CrOSComponentManager> manager) {
-  if (!manager->IsRegisteredMayBlock(kLacrosComponentName))
+  if (!manager->IsRegisteredMayBlock(GetLacrosComponentName()))
     return false;
 
   // Since we're already on a background thread, delete the user-data-dir
@@ -70,7 +96,7 @@
   }
 
   component_manager_->Load(
-      kLacrosComponentName,
+      GetLacrosComponentName(),
       component_updater::CrOSComponentManager::MountPolicy::kMount,
       component_updater::CrOSComponentManager::UpdatePolicy::kForce,
       base::BindOnce(&BrowserLoader::OnLoadComplete, weak_factory_.GetWeakPtr(),
@@ -117,7 +143,7 @@
 
 void BrowserLoader::UnloadAfterCleanUp(const std::string& ignored_salt) {
   CHECK(chromeos::SystemSaltGetter::Get()->GetRawSalt());
-  component_manager_->Unload(kLacrosComponentName);
+  component_manager_->Unload(GetLacrosComponentName());
 }
 
 }  // namespace crosapi
diff --git a/chrome/browser/chromeos/crosapi/browser_util.cc b/chrome/browser/chromeos/crosapi/browser_util.cc
index a7e77d5..0198cca 100644
--- a/chrome/browser/chromeos/crosapi/browser_util.cc
+++ b/chrome/browser/chromeos/crosapi/browser_util.cc
@@ -43,10 +43,6 @@
 namespace browser_util {
 namespace {
 
-// When this feature is enabled, Lacros will be available on stable channel.
-const base::Feature kLacrosAllowOnStableChannel{
-    "LacrosAllowOnStableChannel", base::FEATURE_DISABLED_BY_DEFAULT};
-
 // Some account types require features that aren't yet supported by lacros.
 // See https://crbug.com/1080693
 bool IsUserTypeAllowed(const User* user) {
@@ -93,6 +89,14 @@
 
 }  // namespace
 
+// When this feature is enabled, Lacros will be available on stable channel.
+const base::Feature kLacrosAllowOnStableChannel{
+    "LacrosAllowOnStableChannel", base::FEATURE_DISABLED_BY_DEFAULT};
+
+const char kLacrosStabilitySwitch[] = "lacros-stability";
+const char kLacrosStabilityLessStable[] = "less-stable";
+const char kLacrosStabilityMoreStable[] = "more-stable";
+
 const char kLaunchOnLoginPref[] = "lacros.launch_on_login";
 
 void RegisterProfilePrefs(PrefRegistrySimple* registry) {
diff --git a/chrome/browser/chromeos/crosapi/browser_util.h b/chrome/browser/chromeos/crosapi/browser_util.h
index 9af0e72b..1498c36 100644
--- a/chrome/browser/chromeos/crosapi/browser_util.h
+++ b/chrome/browser/chromeos/crosapi/browser_util.h
@@ -7,6 +7,7 @@
 
 #include "base/callback_forward.h"
 #include "base/containers/flat_map.h"
+#include "base/feature_list.h"
 #include "base/token.h"
 #include "chrome/browser/chromeos/crosapi/environment_provider.h"
 #include "chromeos/crosapi/mojom/crosapi.mojom.h"
@@ -35,6 +36,14 @@
 namespace crosapi {
 namespace browser_util {
 
+extern const base::Feature kLacrosAllowOnStableChannel;
+
+// A command-line switch that can also be set from chrome://flags that affects
+// the frequency of Lacros updates.
+extern const char kLacrosStabilitySwitch[];
+extern const char kLacrosStabilityLessStable[];
+extern const char kLacrosStabilityMoreStable[];
+
 // Boolean preference. Whether to launch lacros-chrome on login.
 extern const char kLaunchOnLoginPref[];
 
diff --git a/chrome/browser/chromeos/drive/drive_integration_service.cc b/chrome/browser/chromeos/drive/drive_integration_service.cc
index 47d6232..efed1c1 100644
--- a/chrome/browser/chromeos/drive/drive_integration_service.cc
+++ b/chrome/browser/chromeos/drive/drive_integration_service.cc
@@ -1082,6 +1082,52 @@
   std::move(callback).Run(error, std::move(result));
 }
 
+void DriveIntegrationService::SearchDriveByFileName(
+    std::string query,
+    int max_results,
+    drivefs::mojom::QueryParameters::SortField sort_field,
+    drivefs::mojom::QueryParameters::SortDirection sort_direction,
+    SearchDriveByFileNameCallback callback) const {
+  if (!GetDriveFsHost()) {
+    std::move(callback).Run(drive::FileError::FILE_ERROR_SERVICE_UNAVAILABLE,
+                            {});
+    return;
+  }
+
+  auto drive_query = drivefs::mojom::QueryParameters::New();
+  drive_query->title = query;
+  drive_query->page_size = max_results;
+  drive_query->sort_field = sort_field;
+  drive_query->sort_direction = sort_direction;
+
+  auto on_response =
+      base::BindOnce(&DriveIntegrationService::OnSearchDriveByFileName,
+                     weak_ptr_factory_.GetWeakPtr(), std::move(callback));
+
+  GetDriveFsHost()->PerformSearch(
+      std::move(drive_query),
+      mojo::WrapCallbackWithDefaultInvokeIfNotRun(
+          std::move(on_response), drive::FileError::FILE_ERROR_ABORT,
+          base::Optional<std::vector<drivefs::mojom::QueryItemPtr>>()));
+}
+
+void DriveIntegrationService::OnSearchDriveByFileName(
+    SearchDriveByFileNameCallback callback,
+    drive::FileError error,
+    base::Optional<std::vector<drivefs::mojom::QueryItemPtr>> items) {
+  if (error != drive::FILE_ERROR_OK || !items.has_value()) {
+    std::move(callback).Run(error, {});
+    return;
+  }
+
+  std::vector<base::FilePath> result;
+  result.reserve(items->size());
+  for (const auto& item : *items) {
+    result.emplace_back(item->path);
+  }
+  std::move(callback).Run(error, std::move(result));
+}
+
 void DriveIntegrationService::GetMetadata(
     const base::FilePath& local_path,
     drivefs::mojom::DriveFs::GetMetadataCallback callback) {
diff --git a/chrome/browser/chromeos/drive/drive_integration_service.h b/chrome/browser/chromeos/drive/drive_integration_service.h
index 46ffa26..c3d13124b 100644
--- a/chrome/browser/chromeos/drive/drive_integration_service.h
+++ b/chrome/browser/chromeos/drive/drive_integration_service.h
@@ -99,6 +99,8 @@
       std::unique_ptr<drivefs::DriveFsBootstrapListener>()>;
   using GetQuickAccessItemsCallback =
       base::OnceCallback<void(drive::FileError, std::vector<QuickAccessItem>)>;
+  using SearchDriveByFileNameCallback =
+      base::OnceCallback<void(drive::FileError, std::vector<base::FilePath>)>;
 
   // test_mount_point_name, test_cache_root and
   // test_drivefs_mojo_listener_factory are used by tests to inject customized
@@ -162,6 +164,13 @@
   void GetQuickAccessItems(int max_number,
                            GetQuickAccessItemsCallback callback);
 
+  void SearchDriveByFileName(
+      std::string query,
+      int max_results,
+      drivefs::mojom::QueryParameters::SortField sort_field,
+      drivefs::mojom::QueryParameters::SortDirection sort_direction,
+      SearchDriveByFileNameCallback callback) const;
+
   // Returns the metadata for Drive file at |local_path|.
   void GetMetadata(const base::FilePath& local_path,
                    drivefs::mojom::DriveFs::GetMetadataCallback callback);
@@ -280,6 +289,11 @@
       drive::FileError error,
       base::Optional<std::vector<drivefs::mojom::QueryItemPtr>> items);
 
+  void OnSearchDriveByFileName(
+      SearchDriveByFileNameCallback callback,
+      drive::FileError error,
+      base::Optional<std::vector<drivefs::mojom::QueryItemPtr>> items);
+
   friend class DriveIntegrationServiceFactory;
 
   Profile* profile_;
diff --git a/chrome/browser/chromeos/drive/drive_integration_service_browsertest.cc b/chrome/browser/chromeos/drive/drive_integration_service_browsertest.cc
index 1d11f14..bc75dab4 100644
--- a/chrome/browser/chromeos/drive/drive_integration_service_browsertest.cc
+++ b/chrome/browser/chromeos/drive/drive_integration_service_browsertest.cc
@@ -119,6 +119,37 @@
   EXPECT_FALSE(integration_service->is_enabled());
 }
 
+IN_PROC_BROWSER_TEST_F(DriveIntegrationServiceBrowserTest,
+                       SearchDriveByFileNameTest) {
+  base::ScopedAllowBlockingForTesting allow_blocking;
+  drive::DriveIntegrationService* drive_service =
+      drive::DriveIntegrationServiceFactory::FindForProfile(
+          browser()->profile());
+
+  base::FilePath mount_path = drive_service->GetMountPointPath();
+  ASSERT_TRUE(base::WriteFile(mount_path.Append("bar"), ""));
+  ASSERT_TRUE(base::WriteFile(mount_path.Append("baz"), ""));
+  auto base_time = base::Time::Now() - base::TimeDelta::FromSeconds(10);
+  auto earlier_time = base_time - base::TimeDelta::FromSeconds(10);
+  ASSERT_TRUE(base::TouchFile(mount_path.Append("bar"), base_time, base_time));
+  ASSERT_TRUE(
+      base::TouchFile(mount_path.Append("baz"), earlier_time, earlier_time));
+
+  base::RunLoop run_loop;
+  auto quit_closure = run_loop.QuitClosure();
+  drive_service->SearchDriveByFileName(
+      "ba", 10, drivefs::mojom::QueryParameters::SortField::kLastViewedByMe,
+      drivefs::mojom::QueryParameters::SortDirection::kAscending,
+      base::BindLambdaForTesting(
+          [=](FileError error, std::vector<base::FilePath> paths) {
+            EXPECT_EQ(2, paths.size());
+            EXPECT_EQ("baz", paths[0].BaseName().value());
+            EXPECT_EQ("bar", paths[1].BaseName().value());
+            quit_closure.Run();
+          }));
+  run_loop.Run();
+}
+
 class DriveIntegrationServiceWithGaiaDisabledBrowserTest
     : public DriveIntegrationServiceBrowserTest {
   void SetUpCommandLine(base::CommandLine* command_line) override {
diff --git a/chrome/browser/chromeos/input_method/input_method_engine.cc b/chrome/browser/chromeos/input_method/input_method_engine.cc
index c5ea49f..870cf42 100644
--- a/chrome/browser/chromeos/input_method/input_method_engine.cc
+++ b/chrome/browser/chromeos/input_method/input_method_engine.cc
@@ -513,12 +513,9 @@
   }
 }
 
-bool InputMethodEngine::SendKeyEvent(ui::KeyEvent* event,
-                                     const std::string& code,
+bool InputMethodEngine::SendKeyEvent(const ui::KeyEvent& event,
                                      std::string* error) {
-  DCHECK(event);
-  if (event->key_code() == ui::VKEY_UNKNOWN)
-    event->set_key_code(ui::DomKeycodeToKeyboardCode(code));
+  ui::KeyEvent event_copy = event;
 
   // Marks the simulated key event is from the Virtual Keyboard.
   ui::Event::Properties properties;
@@ -526,12 +523,12 @@
       std::vector<uint8_t>(ui::kPropertyFromVKSize);
   properties[ui::kPropertyFromVK][ui::kPropertyFromVKIsMirroringIndex] =
       (uint8_t)is_mirroring_;
-  event->SetProperties(properties);
+  event_copy.SetProperties(properties);
 
   ui::IMEInputContextHandlerInterface* input_context =
       ui::IMEBridge::Get()->GetInputContextHandler();
   if (input_context) {
-    input_context->SendKeyEvent(event);
+    input_context->SendKeyEvent(&event_copy);
     return true;
   }
 
diff --git a/chrome/browser/chromeos/input_method/input_method_engine.h b/chrome/browser/chromeos/input_method/input_method_engine.h
index ad61555..b698185 100644
--- a/chrome/browser/chromeos/input_method/input_method_engine.h
+++ b/chrome/browser/chromeos/input_method/input_method_engine.h
@@ -205,9 +205,7 @@
   void CommitTextToInputContext(int context_id,
                                 const std::string& text) override;
 
-  bool SendKeyEvent(ui::KeyEvent* event,
-                    const std::string& code,
-                    std::string* error) override;
+  bool SendKeyEvent(const ui::KeyEvent& event, std::string* error) override;
 
   // Enables overriding input view page to Virtual Keyboard window.
   void EnableInputView();
diff --git a/chrome/browser/chromeos/input_method/input_method_engine_base.cc b/chrome/browser/chromeos/input_method/input_method_engine_base.cc
index 38fa6d5d..b22167e 100644
--- a/chrome/browser/chromeos/input_method/input_method_engine_base.cc
+++ b/chrome/browser/chromeos/input_method/input_method_engine_base.cc
@@ -423,8 +423,7 @@
   }
 
   for (const auto& event : events) {
-    ui::KeyEvent ui_event = ConvertKeyboardEventToUIKeyEvent(event);
-    if (!SendKeyEvent(&ui_event, event.code, error))
+    if (!SendKeyEvent(ConvertKeyboardEventToUIKeyEvent(event), error))
       return false;
   }
   return true;
diff --git a/chrome/browser/chromeos/input_method/input_method_engine_base.h b/chrome/browser/chromeos/input_method/input_method_engine_base.h
index ecebca7..e330ee7 100644
--- a/chrome/browser/chromeos/input_method/input_method_engine_base.h
+++ b/chrome/browser/chromeos/input_method/input_method_engine_base.h
@@ -310,8 +310,7 @@
   void DeleteSurroundingTextToInputContext(int offset, size_t number_of_chars);
 
   // Sends the key event to the window tree host.
-  virtual bool SendKeyEvent(ui::KeyEvent* ui_event,
-                            const std::string& code,
+  virtual bool SendKeyEvent(const ui::KeyEvent& ui_event,
                             std::string* error) = 0;
 
   // Used to verify that a key event is valid before precessing it in the
diff --git a/chrome/browser/chromeos/net/network_diagnostics/dns_resolution_routine_unittest.cc b/chrome/browser/chromeos/net/network_diagnostics/dns_resolution_routine_unittest.cc
index 68bfba8..c004233 100644
--- a/chrome/browser/chromeos/net/network_diagnostics/dns_resolution_routine_unittest.cc
+++ b/chrome/browser/chromeos/net/network_diagnostics/dns_resolution_routine_unittest.cc
@@ -4,8 +4,7 @@
 
 #include "chrome/browser/chromeos/net/network_diagnostics/dns_resolution_routine.h"
 
-#include <deque>
-
+#include "base/containers/circular_deque.h"
 #include "base/test/simple_test_tick_clock.h"
 #include "base/time/time.h"
 #include "chrome/test/base/testing_browser_process.h"
@@ -45,7 +44,7 @@
   };
 
   FakeHostResolver(mojo::PendingReceiver<network::mojom::HostResolver> receiver,
-                   std::deque<DnsResult*> fake_dns_results)
+                   base::circular_deque<DnsResult*> fake_dns_results)
       : receiver_(this, std::move(receiver)),
         fake_dns_results_(std::move(fake_dns_results)) {}
   ~FakeHostResolver() override {}
@@ -76,7 +75,7 @@
   mojo::Receiver<network::mojom::HostResolver> receiver_;
   // Use the list of fake dns results to fake different responses for multiple
   // calls to the host_resolver's ResolveHost().
-  std::deque<DnsResult*> fake_dns_results_;
+  base::circular_deque<DnsResult*> fake_dns_results_;
 };
 
 class FakeNetworkContext : public network::TestNetworkContext {
@@ -84,7 +83,7 @@
   FakeNetworkContext() = default;
 
   explicit FakeNetworkContext(
-      std::deque<FakeHostResolver::DnsResult*> fake_dns_results)
+      base::circular_deque<FakeHostResolver::DnsResult*> fake_dns_results)
       : fake_dns_results_(std::move(fake_dns_results)) {}
 
   ~FakeNetworkContext() override {}
@@ -100,7 +99,7 @@
 
  private:
   std::unique_ptr<FakeHostResolver> resolver_;
-  std::deque<FakeHostResolver::DnsResult*> fake_dns_results_;
+  base::circular_deque<FakeHostResolver::DnsResult*> fake_dns_results_;
 };
 
 }  // namespace
@@ -136,7 +135,7 @@
   }
 
   void SetUpFakeProperties(
-      std::deque<FakeHostResolver::DnsResult*> fake_dns_results) {
+      base::circular_deque<FakeHostResolver::DnsResult*> fake_dns_results) {
     ASSERT_TRUE(profile_manager_.SetUp());
 
     fake_network_context_ =
@@ -159,7 +158,7 @@
   // reported by this test. |expected_problems|: Represents the expected problem
   // reported by this test.
   void SetUpAndRunRoutine(
-      std::deque<FakeHostResolver::DnsResult*> fake_dns_results,
+      base::circular_deque<FakeHostResolver::DnsResult*> fake_dns_results,
       mojom::RoutineVerdict expected_routine_verdict,
       const std::vector<mojom::DnsResolutionProblem>& expected_problems) {
     SetUpFakeProperties(std::move(fake_dns_results));
@@ -182,7 +181,7 @@
 // A passing routine requires an error code of net::OK and a non-empty
 // net::AddressList for the DNS resolution.
 TEST_F(DnsResolutionRoutineTest, TestSuccessfulResolution) {
-  std::deque<FakeHostResolver::DnsResult*> fake_dns_results;
+  base::circular_deque<FakeHostResolver::DnsResult*> fake_dns_results;
   auto successful_resolution = std::make_unique<FakeHostResolver::DnsResult>(
       net::OK, net::ResolveErrorInfo(net::OK),
       net::AddressList(FakeIPAddress()));
@@ -194,7 +193,7 @@
 // Set up the |fake_dns_results| to return a DnsResult with an error code
 // net::ERR_NAME_NOT_RESOLVED faking a failed DNS resolution.
 TEST_F(DnsResolutionRoutineTest, TestResolutionFailure) {
-  std::deque<FakeHostResolver::DnsResult*> fake_dns_results;
+  base::circular_deque<FakeHostResolver::DnsResult*> fake_dns_results;
   auto failed_resolution = std::make_unique<FakeHostResolver::DnsResult>(
       net::ERR_NAME_NOT_RESOLVED,
       net::ResolveErrorInfo(net::ERR_NAME_NOT_RESOLVED), net::AddressList());
@@ -208,7 +207,7 @@
 // net::ERR_DNS_TIMED_OUT faking a timed out DNS resolution. On the second
 // host resolution attempt, fake a net::OK resolution.
 TEST_F(DnsResolutionRoutineTest, TestSuccessOnRetry) {
-  std::deque<FakeHostResolver::DnsResult*> fake_dns_results;
+  base::circular_deque<FakeHostResolver::DnsResult*> fake_dns_results;
   auto timed_out_resolution = std::make_unique<FakeHostResolver::DnsResult>(
       net::ERR_DNS_TIMED_OUT, net::ResolveErrorInfo(net::ERR_DNS_TIMED_OUT),
       net::AddressList());
diff --git a/chrome/browser/chromeos/net/network_diagnostics/fake_network_context.h b/chrome/browser/chromeos/net/network_diagnostics/fake_network_context.h
index 8343c3eb..c4f90e8 100644
--- a/chrome/browser/chromeos/net/network_diagnostics/fake_network_context.h
+++ b/chrome/browser/chromeos/net/network_diagnostics/fake_network_context.h
@@ -5,10 +5,10 @@
 #ifndef CHROME_BROWSER_CHROMEOS_NET_NETWORK_DIAGNOSTICS_FAKE_NETWORK_CONTEXT_H_
 #define CHROME_BROWSER_CHROMEOS_NET_NETWORK_DIAGNOSTICS_FAKE_NETWORK_CONTEXT_H_
 
-#include <deque>
 #include <memory>
 #include <utility>
 
+#include "base/containers/circular_deque.h"
 #include "base/containers/span.h"
 #include "base/optional.h"
 #include "chrome/browser/chromeos/net/network_diagnostics/fake_host_resolver.h"
@@ -119,7 +119,7 @@
   // Fake host resolver.
   std::unique_ptr<FakeHostResolver> resolver_;
   // Fake DNS lookup results.
-  std::deque<FakeHostResolver::DnsResult*> fake_dns_results_;
+  base::circular_deque<FakeHostResolver::DnsResult*> fake_dns_results_;
   // Fake DNS lookup result.
   std::unique_ptr<FakeHostResolver::DnsResult> fake_dns_result_;
   // Provides the TCP socket functionality for tests.
diff --git a/chrome/browser/chromeos/net/network_diagnostics/http_firewall_routine_unittest.cc b/chrome/browser/chromeos/net/network_diagnostics/http_firewall_routine_unittest.cc
index 6c71c9f..7747744 100644
--- a/chrome/browser/chromeos/net/network_diagnostics/http_firewall_routine_unittest.cc
+++ b/chrome/browser/chromeos/net/network_diagnostics/http_firewall_routine_unittest.cc
@@ -4,10 +4,10 @@
 
 #include "chrome/browser/chromeos/net/network_diagnostics/http_firewall_routine.h"
 
-#include <deque>
 #include <memory>
 #include <utility>
 
+#include "base/containers/circular_deque.h"
 #include "chrome/test/base/testing_browser_process.h"
 #include "chrome/test/base/testing_profile.h"
 #include "chrome/test/base/testing_profile_manager.h"
@@ -53,7 +53,7 @@
   };
 
   FakeHostResolver(mojo::PendingReceiver<network::mojom::HostResolver> receiver,
-                   std::deque<DnsResult*> fake_dns_results)
+                   base::circular_deque<DnsResult*> fake_dns_results)
       : receiver_(this, std::move(receiver)),
         fake_dns_results_(std::move(fake_dns_results)) {}
   ~FakeHostResolver() override {}
@@ -84,7 +84,7 @@
   mojo::Receiver<network::mojom::HostResolver> receiver_;
   // Use the list of fake dns results to fake different responses for multiple
   // calls to the host_resolver's ResolveHost().
-  std::deque<DnsResult*> fake_dns_results_;
+  base::circular_deque<DnsResult*> fake_dns_results_;
 };
 
 class FakeNetworkContext : public network::TestNetworkContext {
@@ -92,7 +92,7 @@
   FakeNetworkContext() = default;
 
   explicit FakeNetworkContext(
-      std::deque<FakeHostResolver::DnsResult*> fake_dns_results)
+      base::circular_deque<FakeHostResolver::DnsResult*> fake_dns_results)
       : fake_dns_results_(std::move(fake_dns_results)) {}
 
   ~FakeNetworkContext() override {}
@@ -108,7 +108,7 @@
 
  private:
   std::unique_ptr<FakeHostResolver> resolver_;
-  std::deque<FakeHostResolver::DnsResult*> fake_dns_results_;
+  base::circular_deque<FakeHostResolver::DnsResult*> fake_dns_results_;
 };
 
 class MockTCPSocket : public net::MockTCPClientSocket {
@@ -128,7 +128,7 @@
 class FakeClientSocketFactory : public net::ClientSocketFactory {
  public:
   FakeClientSocketFactory(
-      std::deque<net::SocketDataProvider*> fake_socket_data_providers)
+      base::circular_deque<net::SocketDataProvider*> fake_socket_data_providers)
       : socket_data_providers_(fake_socket_data_providers) {}
   FakeClientSocketFactory(const FakeClientSocketFactory&) = delete;
   FakeClientSocketFactory& operator=(const FakeClientSocketFactory&) = delete;
@@ -178,7 +178,7 @@
   }
 
  private:
-  std::deque<net::SocketDataProvider*> socket_data_providers_;
+  base::circular_deque<net::SocketDataProvider*> socket_data_providers_;
 };
 
 }  // namespace
@@ -214,8 +214,9 @@
   }
 
   void SetUpFakeProperties(
-      std::deque<FakeHostResolver::DnsResult*> fake_dns_results,
-      std::deque<net::SocketDataProvider*> fake_socket_data_providers) {
+      base::circular_deque<FakeHostResolver::DnsResult*> fake_dns_results,
+      base::circular_deque<net::SocketDataProvider*>
+          fake_socket_data_providers) {
     ASSERT_TRUE(profile_manager_.SetUp());
 
     fake_network_context_ =
@@ -246,8 +247,8 @@
   // |expected_problems|: Represents the expected problem
   // reported by this test.
   void SetUpAndRunRoutine(
-      std::deque<FakeHostResolver::DnsResult*> fake_dns_results,
-      std::deque<net::SocketDataProvider*> fake_socket_data_providers,
+      base::circular_deque<FakeHostResolver::DnsResult*> fake_dns_results,
+      base::circular_deque<net::SocketDataProvider*> fake_socket_data_providers,
       mojom::RoutineVerdict expected_routine_verdict,
       const std::vector<mojom::HttpFirewallProblem>& expected_problems) {
     SetUpFakeProperties(std::move(fake_dns_results),
@@ -274,8 +275,8 @@
 };
 
 TEST_F(HttpFirewallRoutineTest, TestDnsResolutionFailuresAboveThreshold) {
-  std::deque<FakeHostResolver::DnsResult*> fake_dns_results;
-  std::deque<net::SocketDataProvider*> fake_socket_data_providers;
+  base::circular_deque<FakeHostResolver::DnsResult*> fake_dns_results;
+  base::circular_deque<net::SocketDataProvider*> fake_socket_data_providers;
   std::vector<std::unique_ptr<FakeHostResolver::DnsResult>> resolutions;
   std::vector<std::unique_ptr<net::SocketDataProvider>> providers;
 
@@ -310,8 +311,8 @@
 }
 
 TEST_F(HttpFirewallRoutineTest, TestFirewallDetection) {
-  std::deque<FakeHostResolver::DnsResult*> fake_dns_results;
-  std::deque<net::SocketDataProvider*> fake_socket_data_providers;
+  base::circular_deque<FakeHostResolver::DnsResult*> fake_dns_results;
+  base::circular_deque<net::SocketDataProvider*> fake_socket_data_providers;
   std::vector<std::unique_ptr<FakeHostResolver::DnsResult>> resolutions;
   std::vector<std::unique_ptr<net::SocketDataProvider>> providers;
   // kTotalHosts = 9
@@ -336,8 +337,8 @@
 }
 
 TEST_F(HttpFirewallRoutineTest, TestPotentialFirewallDetection) {
-  std::deque<FakeHostResolver::DnsResult*> fake_dns_results;
-  std::deque<net::SocketDataProvider*> fake_socket_data_providers;
+  base::circular_deque<FakeHostResolver::DnsResult*> fake_dns_results;
+  base::circular_deque<net::SocketDataProvider*> fake_socket_data_providers;
   std::vector<std::unique_ptr<FakeHostResolver::DnsResult>> resolutions;
   std::vector<std::unique_ptr<net::SocketDataProvider>> providers;
   // kTotalHosts = 9
@@ -368,8 +369,8 @@
 }
 
 TEST_F(HttpFirewallRoutineTest, TestNoFirewallIssues) {
-  std::deque<FakeHostResolver::DnsResult*> fake_dns_results;
-  std::deque<net::SocketDataProvider*> fake_socket_data_providers;
+  base::circular_deque<FakeHostResolver::DnsResult*> fake_dns_results;
+  base::circular_deque<net::SocketDataProvider*> fake_socket_data_providers;
   std::vector<std::unique_ptr<FakeHostResolver::DnsResult>> resolutions;
   std::vector<std::unique_ptr<net::SocketDataProvider>> providers;
   // kTotalHosts = 9
@@ -399,8 +400,8 @@
 }
 
 TEST_F(HttpFirewallRoutineTest, TestContinousRetries) {
-  std::deque<FakeHostResolver::DnsResult*> fake_dns_results;
-  std::deque<net::SocketDataProvider*> fake_socket_data_providers;
+  base::circular_deque<FakeHostResolver::DnsResult*> fake_dns_results;
+  base::circular_deque<net::SocketDataProvider*> fake_socket_data_providers;
   std::vector<std::unique_ptr<FakeHostResolver::DnsResult>> resolutions;
   std::vector<std::unique_ptr<net::SocketDataProvider>> providers;
   // kTotalHosts = 9
diff --git a/chrome/browser/chromeos/net/network_diagnostics/https_firewall_routine_unittest.cc b/chrome/browser/chromeos/net/network_diagnostics/https_firewall_routine_unittest.cc
index 006cd190..ea72ed1 100644
--- a/chrome/browser/chromeos/net/network_diagnostics/https_firewall_routine_unittest.cc
+++ b/chrome/browser/chromeos/net/network_diagnostics/https_firewall_routine_unittest.cc
@@ -4,11 +4,11 @@
 
 #include "chrome/browser/chromeos/net/network_diagnostics/https_firewall_routine.h"
 
-#include <deque>
 #include <memory>
 #include <utility>
 
 #include "base/callback_helpers.h"
+#include "base/containers/circular_deque.h"
 #include "chrome/browser/chromeos/net/network_diagnostics/fake_host_resolver.h"
 #include "chrome/browser/chromeos/net/network_diagnostics/fake_network_context.h"
 #include "content/public/browser/browser_task_traits.h"
@@ -90,7 +90,8 @@
     run_loop_.Quit();
   }
 
-  void SetUpRoutine(std::deque<TlsProberReturnValue> fake_probe_results) {
+  void SetUpRoutine(
+      base::circular_deque<TlsProberReturnValue> fake_probe_results) {
     fake_probe_results_ = std::move(fake_probe_results);
     https_firewall_routine_ = std::make_unique<HttpsFirewallRoutine>();
     https_firewall_routine_->set_tls_prober_getter_callback_for_testing(
@@ -108,7 +109,7 @@
   // |expected_problems|: Represents the expected problem
   // reported by this test.
   void SetUpAndRunRoutine(
-      std::deque<TlsProberReturnValue> fake_probe_results,
+      base::circular_deque<TlsProberReturnValue> fake_probe_results,
       mojom::RoutineVerdict expected_routine_verdict,
       const std::vector<mojom::HttpsFirewallProblem>& expected_problems) {
     SetUpRoutine(std::move(fake_probe_results));
@@ -132,13 +133,13 @@
  private:
   content::BrowserTaskEnvironment task_environment_;
   base::RunLoop run_loop_;
-  std::deque<TlsProberReturnValue> fake_probe_results_;
+  base::circular_deque<TlsProberReturnValue> fake_probe_results_;
   std::unique_ptr<HttpsFirewallRoutine> https_firewall_routine_;
   base::WeakPtrFactory<HttpsFirewallRoutineTest> weak_factory_{this};
 };
 
 TEST_F(HttpsFirewallRoutineTest, TestHighDnsResolutionFailuresRate) {
-  std::deque<TlsProberReturnValue> fake_probe_results;
+  base::circular_deque<TlsProberReturnValue> fake_probe_results;
   // kTotalHosts = 9
   for (int i = 0; i < kTotalHosts; i++) {
     if (i < 2) {
@@ -157,7 +158,7 @@
 }
 
 TEST_F(HttpsFirewallRoutineTest, TestFirewallDetection) {
-  std::deque<TlsProberReturnValue> fake_probe_results;
+  base::circular_deque<TlsProberReturnValue> fake_probe_results;
   // kTotalHosts = 9
   for (int i = 0; i < kTotalHosts; i++) {
     fake_probe_results.push_back(TlsProberReturnValue{
@@ -169,7 +170,7 @@
 }
 
 TEST_F(HttpsFirewallRoutineTest, TestPotentialFirewallDetection) {
-  std::deque<TlsProberReturnValue> fake_probe_results;
+  base::circular_deque<TlsProberReturnValue> fake_probe_results;
   // kTotalHosts = 9
   for (int i = 0; i < kTotalHosts; i++) {
     if (i < 5) {
@@ -188,7 +189,7 @@
 }
 
 TEST_F(HttpsFirewallRoutineTest, TestNoFirewallIssues) {
-  std::deque<TlsProberReturnValue> fake_probe_results;
+  base::circular_deque<TlsProberReturnValue> fake_probe_results;
   // kTotalHosts = 9
   for (int i = 0; i < kTotalHosts; i++) {
     if (i < 8) {
@@ -206,7 +207,7 @@
 }
 
 TEST_F(HttpsFirewallRoutineTest, TestContinousRetries) {
-  std::deque<TlsProberReturnValue> fake_probe_results;
+  base::circular_deque<TlsProberReturnValue> fake_probe_results;
   // kTotalHosts = 9
   for (int i = 0; i < kTotalHosts; i++) {
     if (i < 8) {
diff --git a/chrome/browser/chromeos/net/network_diagnostics/https_latency_routine_unittest.cc b/chrome/browser/chromeos/net/network_diagnostics/https_latency_routine_unittest.cc
index 53369bf..14e42d3 100644
--- a/chrome/browser/chromeos/net/network_diagnostics/https_latency_routine_unittest.cc
+++ b/chrome/browser/chromeos/net/network_diagnostics/https_latency_routine_unittest.cc
@@ -4,10 +4,10 @@
 
 #include "chrome/browser/chromeos/net/network_diagnostics/https_latency_routine.h"
 
-#include <deque>
 #include <memory>
 #include <utility>
 
+#include "base/containers/circular_deque.h"
 #include "base/run_loop.h"
 #include "base/time/tick_clock.h"
 #include "base/time/time.h"
@@ -93,7 +93,7 @@
   FakeNetworkContext() = default;
 
   explicit FakeNetworkContext(
-      std::deque<FakeHostResolver::DnsResult*> fake_dns_results)
+      base::circular_deque<FakeHostResolver::DnsResult*> fake_dns_results)
       : fake_dns_results_(std::move(fake_dns_results)) {}
 
   ~FakeNetworkContext() override {}
@@ -111,7 +111,7 @@
 
  private:
   std::unique_ptr<FakeHostResolver> resolver_;
-  std::deque<FakeHostResolver::DnsResult*> fake_dns_results_;
+  base::circular_deque<FakeHostResolver::DnsResult*> fake_dns_results_;
 };
 
 class FakeTickClock : public base::TickClock {
@@ -193,9 +193,10 @@
     run_loop_.Run();
   }
 
-  void SetUpRoutine(std::deque<FakeHostResolver::DnsResult*> fake_dns_results,
-                    bool connected,
-                    const base::TickClock* fake_tick_clock) {
+  void SetUpRoutine(
+      base::circular_deque<FakeHostResolver::DnsResult*> fake_dns_results,
+      bool connected,
+      const base::TickClock* fake_tick_clock) {
     ASSERT_TRUE(profile_manager_.SetUp());
 
     // Set up the network context.
@@ -239,7 +240,7 @@
 };
 
 TEST_F(HttpsLatencyRoutineTest, TestFailedDnsResolution) {
-  std::deque<FakeHostResolver::DnsResult*> fake_dns_results;
+  base::circular_deque<FakeHostResolver::DnsResult*> fake_dns_results;
   std::vector<std::unique_ptr<FakeHostResolver::DnsResult>> resolutions;
 
   // kTotalHosts = 3
@@ -268,7 +269,7 @@
 }
 
 TEST_F(HttpsLatencyRoutineTest, TestLowLatency) {
-  std::deque<FakeHostResolver::DnsResult*> fake_dns_results;
+  base::circular_deque<FakeHostResolver::DnsResult*> fake_dns_results;
   std::vector<std::unique_ptr<FakeHostResolver::DnsResult>> resolutions;
 
   // kTotalHosts = 3
@@ -289,7 +290,7 @@
 }
 
 TEST_F(HttpsLatencyRoutineTest, TestFailedHttpRequest) {
-  std::deque<FakeHostResolver::DnsResult*> fake_dns_results;
+  base::circular_deque<FakeHostResolver::DnsResult*> fake_dns_results;
   std::vector<std::unique_ptr<FakeHostResolver::DnsResult>> resolutions;
 
   // kTotalHosts = 3
@@ -311,7 +312,7 @@
 }
 
 TEST_F(HttpsLatencyRoutineTest, TestHighLatency) {
-  std::deque<FakeHostResolver::DnsResult*> fake_dns_results;
+  base::circular_deque<FakeHostResolver::DnsResult*> fake_dns_results;
   std::vector<std::unique_ptr<FakeHostResolver::DnsResult>> resolutions;
 
   // kTotalHosts = 3
@@ -333,7 +334,7 @@
 }
 
 TEST_F(HttpsLatencyRoutineTest, TestVeryHighLatency) {
-  std::deque<FakeHostResolver::DnsResult*> fake_dns_results;
+  base::circular_deque<FakeHostResolver::DnsResult*> fake_dns_results;
   std::vector<std::unique_ptr<FakeHostResolver::DnsResult>> resolutions;
 
   // kTotalHosts = 3
diff --git a/chrome/browser/component_updater/cros_component_installer_chromeos.cc b/chrome/browser/component_updater/cros_component_installer_chromeos.cc
index 897c6640..ab0f0d5 100644
--- a/chrome/browser/component_updater/cros_component_installer_chromeos.cc
+++ b/chrome/browser/component_updater/cros_component_installer_chromeos.cc
@@ -50,6 +50,10 @@
      "93c093ebac788581389015e9c59c5af111d2fa5174d206eb795042e6376cbd10"},
     {"lacros-fishfood", "",
      "7a85ffb4b316a3b89135a3f43660ef3049950a61a2f8df4237e1ec213852b848"},
+    {"lacros-dogfood-dev", "",
+     "b3e1ef1780c0acd2d3fa44b4d73c657a0f1ed3ad83fd8c964a18a3502ccf5f4f"},
+    {"lacros-dogfood-stable", "",
+     "7d5c1428f7f67b56f95123851adec1da105980c56b5c126352040f3b65d3e43b"},
 };
 
 const ComponentConfig* FindConfig(const std::string& name) {
diff --git a/chrome/browser/component_updater/soda_component_installer.cc b/chrome/browser/component_updater/soda_component_installer.cc
index d97cdde..5ec683a8 100644
--- a/chrome/browser/component_updater/soda_component_installer.cc
+++ b/chrome/browser/component_updater/soda_component_installer.cc
@@ -21,6 +21,12 @@
 #include "crypto/sha2.h"
 #include "media/base/media_switches.h"
 
+#if defined(OS_WIN)
+#include <aclapi.h>
+#include <windows.h>
+#include "sandbox/win/src/sid.h"
+#endif
+
 using content::BrowserThread;
 
 namespace component_updater {
@@ -66,10 +72,42 @@
       }));
 }
 
-bool SODAComponentInstallerPolicy::VerifyInstallation(
-    const base::DictionaryValue& manifest,
-    const base::FilePath& install_dir) const {
-  return base::PathExists(install_dir.Append(speech::kSodaBinaryRelativePath));
+update_client::CrxInstaller::Result
+SODAComponentInstallerPolicy::SetComponentDirectoryPermission(
+    const base::FilePath& install_dir) {
+#if defined(OS_WIN)
+  sandbox::Sid users_sid = sandbox::Sid(WinBuiltinUsersSid);
+
+  // Initialize an EXPLICIT_ACCESS structure for an ACE.
+  EXPLICIT_ACCESS explicit_access[1] = {};
+  explicit_access[0].grfAccessPermissions = GENERIC_READ | GENERIC_EXECUTE;
+  explicit_access[0].grfAccessMode = GRANT_ACCESS;
+  explicit_access[0].grfInheritance = SUB_CONTAINERS_AND_OBJECTS_INHERIT;
+  explicit_access[0].Trustee.TrusteeForm = TRUSTEE_IS_SID;
+  explicit_access[0].Trustee.TrusteeType = TRUSTEE_IS_WELL_KNOWN_GROUP;
+  explicit_access[0].Trustee.ptstrName =
+      reinterpret_cast<LPTSTR>(users_sid.GetPSID());
+
+  PACL acl = nullptr;
+  if (::SetEntriesInAcl(base::size(explicit_access), explicit_access, nullptr,
+                        &acl) != ERROR_SUCCESS) {
+    return update_client::CrxInstaller::Result(
+        update_client::InstallError::SET_PERMISSIONS_FAILED);
+  }
+
+  // Change the security attributes.
+  LPWSTR file_name = const_cast<LPWSTR>(install_dir.value().c_str());
+  bool success = ::SetNamedSecurityInfo(file_name, SE_FILE_OBJECT,
+                                        DACL_SECURITY_INFORMATION, nullptr,
+                                        nullptr, acl, nullptr) == ERROR_SUCCESS;
+  ::LocalFree(acl);
+  if (!success) {
+    return update_client::CrxInstaller::Result(
+        update_client::InstallError::SET_PERMISSIONS_FAILED);
+  }
+#endif
+
+  return update_client::CrxInstaller::Result(update_client::InstallError::NONE);
 }
 
 bool SODAComponentInstallerPolicy::SupportsGroupPolicyEnabledComponentUpdates()
@@ -85,11 +123,18 @@
 SODAComponentInstallerPolicy::OnCustomInstall(
     const base::DictionaryValue& manifest,
     const base::FilePath& install_dir) {
-  return update_client::CrxInstaller::Result(0);  // Nothing custom here.
+  return SODAComponentInstallerPolicy::SetComponentDirectoryPermission(
+      install_dir);
 }
 
 void SODAComponentInstallerPolicy::OnCustomUninstall() {}
 
+bool SODAComponentInstallerPolicy::VerifyInstallation(
+    const base::DictionaryValue& manifest,
+    const base::FilePath& install_dir) const {
+  return base::PathExists(install_dir.Append(speech::kSodaBinaryRelativePath));
+}
+
 void SODAComponentInstallerPolicy::ComponentReady(
     const base::Version& version,
     const base::FilePath& install_dir,
diff --git a/chrome/browser/component_updater/soda_component_installer.h b/chrome/browser/component_updater/soda_component_installer.h
index 879cc69..0151fd7f 100644
--- a/chrome/browser/component_updater/soda_component_installer.h
+++ b/chrome/browser/component_updater/soda_component_installer.h
@@ -29,6 +29,9 @@
   static const std::string GetExtensionId();
   static void UpdateSODAComponentOnDemand();
 
+  static update_client::CrxInstaller::Result SetComponentDirectoryPermission(
+      const base::FilePath& install_dir);
+
  private:
   FRIEND_TEST_ALL_PREFIXES(SODAComponentInstallerTest,
                            ComponentReady_CallsLambda);
diff --git a/chrome/browser/component_updater/soda_en_us_component_installer.cc b/chrome/browser/component_updater/soda_en_us_component_installer.cc
index 9f518d3..4d49535 100644
--- a/chrome/browser/component_updater/soda_en_us_component_installer.cc
+++ b/chrome/browser/component_updater/soda_en_us_component_installer.cc
@@ -8,6 +8,7 @@
 #include "base/files/file_util.h"
 #include "build/build_config.h"
 #include "chrome/browser/browser_process.h"
+#include "chrome/browser/component_updater/soda_component_installer.h"
 #include "chrome/common/pref_names.h"
 #include "components/component_updater/component_updater_service.h"
 #include "components/crx_file/id_util.h"
@@ -83,7 +84,8 @@
 SodaEnUsComponentInstallerPolicy::OnCustomInstall(
     const base::DictionaryValue& manifest,
     const base::FilePath& install_dir) {
-  return update_client::CrxInstaller::Result(0);  // Nothing custom here.
+  return SODAComponentInstallerPolicy::SetComponentDirectoryPermission(
+      install_dir);
 }
 
 void SodaEnUsComponentInstallerPolicy::OnCustomUninstall() {}
diff --git a/chrome/browser/component_updater/soda_ja_jp_component_installer.cc b/chrome/browser/component_updater/soda_ja_jp_component_installer.cc
index a95e849b..8304905 100644
--- a/chrome/browser/component_updater/soda_ja_jp_component_installer.cc
+++ b/chrome/browser/component_updater/soda_ja_jp_component_installer.cc
@@ -8,6 +8,7 @@
 #include "base/files/file_util.h"
 #include "build/build_config.h"
 #include "chrome/browser/browser_process.h"
+#include "chrome/browser/component_updater/soda_component_installer.h"
 #include "chrome/common/pref_names.h"
 #include "components/component_updater/component_updater_service.h"
 #include "components/crx_file/id_util.h"
@@ -83,7 +84,8 @@
 SodaJaJpComponentInstallerPolicy::OnCustomInstall(
     const base::DictionaryValue& manifest,
     const base::FilePath& install_dir) {
-  return update_client::CrxInstaller::Result(0);  // Nothing custom here.
+  return SODAComponentInstallerPolicy::SetComponentDirectoryPermission(
+      install_dir);
 }
 
 void SodaJaJpComponentInstallerPolicy::OnCustomUninstall() {}
diff --git a/chrome/browser/engagement/important_sites_usage_counter_unittest.cc b/chrome/browser/engagement/important_sites_usage_counter_unittest.cc
index 704090c01..1ca2d69 100644
--- a/chrome/browser/engagement/important_sites_usage_counter_unittest.cc
+++ b/chrome/browser/engagement/important_sites_usage_counter_unittest.cc
@@ -8,6 +8,7 @@
 #include <utility>
 
 #include "base/bind.h"
+#include "base/callback_helpers.h"
 #include "base/files/file_path.h"
 #include "base/files/file_util.h"
 #include "base/files/scoped_temp_dir.h"
@@ -50,6 +51,7 @@
     quota_manager_ = base::MakeRefCounted<QuotaManager>(
         /*is_incognito=*/false, temp_dir_.GetPath(),
         content::GetIOThreadTaskRunner({}).get(),
+        /*quota_change_callback=*/base::DoNothing(),
         /*special_storage_policy=*/nullptr, storage::GetQuotaSettingsFunc());
     return quota_manager_.get();
   }
diff --git a/chrome/browser/enterprise/connectors/common.cc b/chrome/browser/enterprise/connectors/common.cc
index 04306f9..96aad60 100644
--- a/chrome/browser/enterprise/connectors/common.cc
+++ b/chrome/browser/enterprise/connectors/common.cc
@@ -41,6 +41,27 @@
   }
 }
 
+const char* ConnectorScopePref(AnalysisConnector connector) {
+  switch (connector) {
+    case AnalysisConnector::BULK_DATA_ENTRY:
+      return kOnBulkDataEntryScopePref;
+    case AnalysisConnector::FILE_DOWNLOADED:
+      return kOnFileDownloadedScopePref;
+    case AnalysisConnector::FILE_ATTACHED:
+      return kOnFileAttachedScopePref;
+    case AnalysisConnector::ANALYSIS_CONNECTOR_UNSPECIFIED:
+      NOTREACHED() << "Using unspecified analysis connector";
+      return "";
+  }
+}
+
+const char* ConnectorScopePref(ReportingConnector connector) {
+  switch (connector) {
+    case ReportingConnector::SECURITY_EVENT:
+      return kOnSecurityEventScopePref;
+  }
+}
+
 TriggeredRule::Action GetHighestPrecedenceAction(
     const ContentAnalysisResponse& response) {
   auto action = TriggeredRule::ACTION_UNSPECIFIED;
diff --git a/chrome/browser/enterprise/connectors/common.h b/chrome/browser/enterprise/connectors/common.h
index d4f26ce..1a6def3 100644
--- a/chrome/browser/enterprise/connectors/common.h
+++ b/chrome/browser/enterprise/connectors/common.h
@@ -73,6 +73,8 @@
 // Returns the pref path corresponding to a connector.
 const char* ConnectorPref(AnalysisConnector connector);
 const char* ConnectorPref(ReportingConnector connector);
+const char* ConnectorScopePref(AnalysisConnector connector);
+const char* ConnectorScopePref(ReportingConnector connector);
 
 // Returns the highest precedence action in the given parameters.
 TriggeredRule::Action GetHighestPrecedenceAction(
diff --git a/chrome/browser/enterprise/connectors/connectors_prefs.cc b/chrome/browser/enterprise/connectors/connectors_prefs.cc
index 884728d..70a2c3f 100644
--- a/chrome/browser/enterprise/connectors/connectors_prefs.cc
+++ b/chrome/browser/enterprise/connectors/connectors_prefs.cc
@@ -16,11 +16,24 @@
 
 const char kOnSecurityEventPref[] = "enterprise_connectors.on_security_event";
 
+const char kOnFileAttachedScopePref[] =
+    "enterprise_connectors.scope.on_file_attached";
+const char kOnFileDownloadedScopePref[] =
+    "enterprise_connectors.scope.on_file_downloaded";
+const char kOnBulkDataEntryScopePref[] =
+    "enterprise_connectors.scope.on_bulk_data_entry";
+const char kOnSecurityEventScopePref[] =
+    "enterprise_connectors.scope.on_security_event";
+
 void RegisterProfilePrefs(PrefRegistrySimple* registry) {
   registry->RegisterListPref(kOnFileAttachedPref);
   registry->RegisterListPref(kOnFileDownloadedPref);
   registry->RegisterListPref(kOnBulkDataEntryPref);
   registry->RegisterListPref(kOnSecurityEventPref);
+  registry->RegisterIntegerPref(kOnFileAttachedScopePref, 0);
+  registry->RegisterIntegerPref(kOnFileDownloadedScopePref, 0);
+  registry->RegisterIntegerPref(kOnBulkDataEntryScopePref, 0);
+  registry->RegisterIntegerPref(kOnSecurityEventScopePref, 0);
 }
 
 }  // namespace enterprise_connectors
diff --git a/chrome/browser/enterprise/connectors/connectors_prefs.h b/chrome/browser/enterprise/connectors/connectors_prefs.h
index ebdb2e95..2c964f5 100644
--- a/chrome/browser/enterprise/connectors/connectors_prefs.h
+++ b/chrome/browser/enterprise/connectors/connectors_prefs.h
@@ -21,6 +21,13 @@
 // Pref that maps to the "OnSecurityEventEnterpriseConnector" policy.
 extern const char kOnSecurityEventPref[];
 
+// Prefs that map to the scope of each policy using a
+// EnterpriseConnectorsPolicyHandler.
+extern const char kOnFileAttachedScopePref[];
+extern const char kOnFileDownloadedScopePref[];
+extern const char kOnBulkDataEntryScopePref[];
+extern const char kOnSecurityEventScopePref[];
+
 void RegisterProfilePrefs(PrefRegistrySimple* registry);
 
 }  // namespace enterprise_connectors
diff --git a/chrome/browser/enterprise/connectors/enterprise_connectors_policy_handler.cc b/chrome/browser/enterprise/connectors/enterprise_connectors_policy_handler.cc
index 83abbf6..f57dd48 100644
--- a/chrome/browser/enterprise/connectors/enterprise_connectors_policy_handler.cc
+++ b/chrome/browser/enterprise/connectors/enterprise_connectors_policy_handler.cc
@@ -16,12 +16,14 @@
 EnterpriseConnectorsPolicyHandler::EnterpriseConnectorsPolicyHandler(
     const char* policy_name,
     const char* pref_path,
+    const char* pref_scope_path,
     policy::Schema schema)
     : SchemaValidatingPolicyHandler(
           policy_name,
           schema.GetKnownProperty(policy_name),
           policy::SchemaOnErrorStrategy::SCHEMA_ALLOW_UNKNOWN),
-      pref_path_(pref_path) {}
+      pref_path_(pref_path),
+      pref_scope_path_(pref_scope_path) {}
 
 EnterpriseConnectorsPolicyHandler::~EnterpriseConnectorsPolicyHandler() =
     default;
@@ -46,11 +48,18 @@
 void EnterpriseConnectorsPolicyHandler::ApplyPolicySettings(
     const policy::PolicyMap& policies,
     PrefValueMap* prefs) {
-  if (!pref_path_)
+  if (!pref_path_ || !pref_scope_path_)
     return;
-  const base::Value* value = policies.GetValue(policy_name());
-  if (value)
+
+  const policy::PolicyMap::Entry* policy = policies.Get(policy_name());
+  if (!policy)
+    return;
+
+  const base::Value* value = policy->value();
+  if (value) {
     prefs->SetValue(pref_path_, value->Clone());
+    prefs->SetInteger(pref_scope_path_, policy->scope);
+  }
 }
 
 }  // namespace enterprise_connectors
diff --git a/chrome/browser/enterprise/connectors/enterprise_connectors_policy_handler.h b/chrome/browser/enterprise/connectors/enterprise_connectors_policy_handler.h
index 61959a3..267b2a9 100644
--- a/chrome/browser/enterprise/connectors/enterprise_connectors_policy_handler.h
+++ b/chrome/browser/enterprise/connectors/enterprise_connectors_policy_handler.h
@@ -16,6 +16,7 @@
  public:
   EnterpriseConnectorsPolicyHandler(const char* policy_name,
                                     const char* pref_path,
+                                    const char* pref_scope_path,
                                     policy::Schema schema);
   EnterpriseConnectorsPolicyHandler(EnterpriseConnectorsPolicyHandler&) =
       delete;
@@ -31,6 +32,10 @@
 
  private:
   const char* pref_path_;
+
+  // Key used to store the policy::PolicyScope of the policy. This is looked up
+  // later so the Connector can adjust its behaviour.
+  const char* pref_scope_path_;
 };
 
 }  // namespace enterprise_connectors
diff --git a/chrome/browser/enterprise/connectors/enterprise_connectors_policy_handler_unittest.cc b/chrome/browser/enterprise/connectors/enterprise_connectors_policy_handler_unittest.cc
index a01bc24..06930802 100644
--- a/chrome/browser/enterprise/connectors/enterprise_connectors_policy_handler_unittest.cc
+++ b/chrome/browser/enterprise/connectors/enterprise_connectors_policy_handler_unittest.cc
@@ -23,6 +23,8 @@
 
 const char kTestPref[] = "enterprise_connectors.test_pref";
 
+const char kTestScopePref[] = "enterprise_connectors.scope.test_pref";
+
 const char kPolicyName[] = "PolicyForTesting";
 
 const char kSchema[] = R"(
@@ -106,7 +108,7 @@
   }
 
   auto handler = std::make_unique<EnterpriseConnectorsPolicyHandler>(
-      kPolicyName, kTestPref, validation_schema);
+      kPolicyName, kTestPref, kTestScopePref, validation_schema);
   policy::PolicyErrorMap errors;
   ASSERT_EQ(expect_valid_policy(),
             handler->CheckPolicySettings(policy_map, &errors));
@@ -117,16 +119,21 @@
   // false, this is just to test that it applies the pref correctly.
   PrefValueMap prefs;
   base::Value* value_set_in_pref;
+  int pref_scope = -1;
   handler->ApplyPolicySettings(policy_map, &prefs);
 
   bool policy_is_set = policy() != kEmptyPolicy;
   ASSERT_EQ(policy_is_set, prefs.GetValue(kTestPref, &value_set_in_pref));
+  EXPECT_EQ(policy_is_set, prefs.GetInteger(kTestScopePref, &pref_scope));
 
   auto* value_set_in_map = policy_map.GetValue(kPolicyName);
-  if (value_set_in_map)
+  if (value_set_in_map) {
     ASSERT_TRUE(value_set_in_map->Equals(value_set_in_pref));
-  else
+    ASSERT_EQ(policy::POLICY_SCOPE_MACHINE, pref_scope);
+  } else {
     ASSERT_FALSE(policy_is_set);
+    ASSERT_EQ(-1, pref_scope);
+  }
 }
 
 INSTANTIATE_TEST_SUITE_P(
diff --git a/chrome/browser/extensions/api/input_ime/input_ime_api.cc b/chrome/browser/extensions/api/input_ime/input_ime_api.cc
index 71e356f..a349f99 100644
--- a/chrome/browser/extensions/api/input_ime/input_ime_api.cc
+++ b/chrome/browser/extensions/api/input_ime/input_ime_api.cc
@@ -11,6 +11,7 @@
 #include "base/strings/utf_string_conversions.h"
 #include "extensions/browser/extension_registry.h"
 #include "ui/base/ime/chromeos/ime_bridge.h"
+#include "ui/base/ime/chromeos/ime_keymap.h"
 
 namespace input_ime = extensions::api::input_ime;
 namespace KeyEventHandled = extensions::api::input_ime::KeyEventHandled;
@@ -419,7 +420,9 @@
     event.type = input_ime::ToString(key_event.type);
     event.key = key_event.key;
     event.code = key_event.code;
-    event.key_code = key_event.key_code.get() ? *(key_event.key_code) : 0;
+    event.key_code = key_event.key_code.get()
+                         ? *(key_event.key_code)
+                         : ui::DomKeycodeToKeyboardCode(key_event.code);
     event.alt_key = key_event.alt_key ? *(key_event.alt_key) : false;
     event.altgr_key = key_event.altgr_key ? *(key_event.altgr_key) : false;
     event.ctrl_key = key_event.ctrl_key ? *(key_event.ctrl_key) : false;
diff --git a/chrome/browser/flag-metadata.json b/chrome/browser/flag-metadata.json
index 20b7925..1c51a3bc 100644
--- a/chrome/browser/flag-metadata.json
+++ b/chrome/browser/flag-metadata.json
@@ -1869,6 +1869,11 @@
     "expiry_milestone": 90
   },
   {
+    "name": "enable-media-internals",
+    "owners": [ "tmathmeyer", "videostack-eng@google.com" ],
+    "expiry_milestone": 92
+  },
+  {
     "name": "enable-media-session-notifications",
     "owners": [ "beccahughes", "media-dev" ],
     "expiry_milestone": 82
@@ -3105,9 +3110,20 @@
     "expiry_milestone": 92
   },
   {
+    "name": "lacros-stability",
+    "owners": [ "jamescook", "erikchen", "lacros-team@google.com" ],
+    // Once Lacros is launched, this flag can be removed. Until then, this
+    // absolutely must not expire. We do not yet have a launch milestone.
+    // TODO(https://crbug.com/1148474).
+    "expiry_milestone": 130
+  },
+  {
     "name": "lacros-support",
     "owners": [ "jamescook", "erikchen", "lacros-team@google.com" ],
-    "expiry_milestone": 92
+    // Once Lacros is launched, this flag can be removed. Until then, this
+    // absolutely must not expire. We do not yet have a launch milestone.
+    // TODO(https://crbug.com/1148474).
+    "expiry_milestone": 130
   },
   {
     "name": "launcher-settings-search",
@@ -4032,7 +4048,7 @@
   {
     "name": "read-later",
     "owners": [ "chrome-desktop-ui-sea@google.com", "corising" ],
-    "expiry_milestone": 90
+    "expiry_milestone": 94
   },
   {
     "name": "reader-mode-heuristics",
diff --git a/chrome/browser/flag_descriptions.cc b/chrome/browser/flag_descriptions.cc
index 773cf6a..caf00c0 100644
--- a/chrome/browser/flag_descriptions.cc
+++ b/chrome/browser/flag_descriptions.cc
@@ -22,6 +22,10 @@
 const char kAcceleratedVideoEncodeDescription[] =
     "Hardware-accelerated video encode where available.";
 
+const char kEnableMediaInternalsName[] = "Media-internals page";
+const char kEnableMediaInternalsDescription[] =
+    "Enables the chrome://media-internals debug page.";
+
 #if BUILDFLAG(ENABLE_PLUGINS)
 const char kAccessiblePDFFormName[] = "Accessible PDF Forms";
 const char kAccessiblePDFFormDescription[] =
@@ -4376,6 +4380,14 @@
     "Adds mouse behavior, three-finger touchpad swipe, left/right "
     "arrow navigation, and space/enter confirmation to Alt-Tab.";
 
+const char kLacrosStabilityName[] = "Lacros stability";
+const char kLacrosStabilityDescription[] = "Frequency of Lacros updates.";
+
+const char kLacrosStabilityLessStableDescription[] =
+    "More frequent updates / less stable";
+const char kLacrosStabilityMoreStableDescription[] =
+    "Less frequent updates / more stable";
+
 const char kLacrosSupportName[] = "Lacros support";
 const char kLacrosSupportDescription[] =
     "Support for the experimental lacros-chrome browser.";
diff --git a/chrome/browser/flag_descriptions.h b/chrome/browser/flag_descriptions.h
index b465687..20d2e226 100644
--- a/chrome/browser/flag_descriptions.h
+++ b/chrome/browser/flag_descriptions.h
@@ -52,6 +52,9 @@
 extern const char kAcceleratedVideoEncodeName[];
 extern const char kAcceleratedVideoEncodeDescription[];
 
+extern const char kEnableMediaInternalsName[];
+extern const char kEnableMediaInternalsDescription[];
+
 #if BUILDFLAG(ENABLE_PLUGINS)
 extern const char kAccessiblePDFFormName[];
 extern const char kAccessiblePDFFormDescription[];
@@ -2554,6 +2557,11 @@
 extern const char kInteractiveWindowCycleList[];
 extern const char kInteractiveWindowCycleListDescription[];
 
+extern const char kLacrosStabilityName[];
+extern const char kLacrosStabilityDescription[];
+extern const char kLacrosStabilityLessStableDescription[];
+extern const char kLacrosStabilityMoreStableDescription[];
+
 extern const char kLacrosSupportName[];
 extern const char kLacrosSupportDescription[];
 
diff --git a/chrome/browser/media/feeds/media_feeds_browsertest.cc b/chrome/browser/media/feeds/media_feeds_browsertest.cc
index c47c6a8..860f65a5 100644
--- a/chrome/browser/media/feeds/media_feeds_browsertest.cc
+++ b/chrome/browser/media/feeds/media_feeds_browsertest.cc
@@ -53,7 +53,10 @@
 
 const char kMediaFeedsTestHTML[] =
     "  <!DOCTYPE html>"
-    "  <head>%s</head>";
+    "  <head>"
+    "  <link rel=\"icon\" type=\"image/png\" href=\"https://a.com/icon.png\">"
+    "  %s"
+    "  </head>";
 
 const char kMediaFeedsTestHeadHTML[] =
     "<link rel=media-feed type=\"application/ld+json\" "
@@ -266,6 +269,7 @@
   std::vector<media_feeds::mojom::MediaFeedPtr> discovered_feeds =
       GetDiscoveredFeeds();
   EXPECT_EQ(1u, discovered_feeds.size());
+  EXPECT_EQ(GURL("https://a.com/icon.png"), discovered_feeds[0]->favicon);
 
   base::RunLoop run_loop;
   GetMediaFeedsService()->FetchMediaFeed(
diff --git a/chrome/browser/media/feeds/media_feeds_contents_observer.cc b/chrome/browser/media/feeds/media_feeds_contents_observer.cc
index 30572962a..db48308 100644
--- a/chrome/browser/media/feeds/media_feeds_contents_observer.cc
+++ b/chrome/browser/media/feeds/media_feeds_contents_observer.cc
@@ -91,8 +91,15 @@
       return;
     }
 
+    base::Optional<GURL> favicon;
+    for (auto& found : web_contents()->GetFaviconURLs()) {
+      if (found->icon_type == blink::mojom::FaviconIconType::kFavicon) {
+        favicon = found->icon_url;
+      }
+    }
+
     CHECK(url->SchemeIsCryptographic());
-    service->DiscoverMediaFeed(*url);
+    service->DiscoverMediaFeed(*url, favicon);
 
     ukm::UkmRecorder* ukm_recorder = ukm::UkmRecorder::Get();
     if (!ukm_recorder)
diff --git a/chrome/browser/media/feeds/media_feeds_service.cc b/chrome/browser/media/feeds/media_feeds_service.cc
index a957b9df..7e481b5 100644
--- a/chrome/browser/media/feeds/media_feeds_service.cc
+++ b/chrome/browser/media/feeds/media_feeds_service.cc
@@ -357,9 +357,15 @@
 }
 
 void MediaFeedsService::DiscoverMediaFeed(const GURL& url) {
+  DiscoverMediaFeed(url, base::nullopt);
+}
+
+void MediaFeedsService::DiscoverMediaFeed(const GURL& url,
+                                          const base::Optional<GURL>& favicon) {
   GetMediaHistoryService()->DiscoverMediaFeed(
-      url, base::BindOnce(&MediaFeedsService::OnDiscoveredFeed,
-                          weak_factory_.GetWeakPtr()));
+      url, favicon,
+      base::BindOnce(&MediaFeedsService::OnDiscoveredFeed,
+                     weak_factory_.GetWeakPtr()));
 }
 
 void MediaFeedsService::ResetMediaFeed(const url::Origin& origin,
diff --git a/chrome/browser/media/feeds/media_feeds_service.h b/chrome/browser/media/feeds/media_feeds_service.h
index 2ca7ad5..5564b9d 100644
--- a/chrome/browser/media/feeds/media_feeds_service.h
+++ b/chrome/browser/media/feeds/media_feeds_service.h
@@ -100,6 +100,7 @@
 
   // Saves a newly discovered media feed.
   void DiscoverMediaFeed(const GURL& url);
+  void DiscoverMediaFeed(const GURL& url, const base::Optional<GURL>& favicon);
 
   // Resets a Media Feed by deleting any items and resetting it to defaults. If
   // |include_subdomains| is true then this will reset any feeds on any
diff --git a/chrome/browser/media/feeds/media_feeds_store.mojom b/chrome/browser/media/feeds/media_feeds_store.mojom
index e940745..e6fa592 100644
--- a/chrome/browser/media/feeds/media_feeds_store.mojom
+++ b/chrome/browser/media/feeds/media_feeds_store.mojom
@@ -86,6 +86,9 @@
 
   // The aggregate watchtime for the media feed.
   mojo_base.mojom.TimeDelta? aggregate_watchtime;
+
+  // The favicon of the page that hosts the Media Feed.
+  url.mojom.Url? favicon;
 };
 
 // Contains details about the user signed into the website.
diff --git a/chrome/browser/media/history/media_history_feeds_table.cc b/chrome/browser/media/history/media_history_feeds_table.cc
index 7cc6c56..2e738de 100644
--- a/chrome/browser/media/history/media_history_feeds_table.cc
+++ b/chrome/browser/media/history/media_history_feeds_table.cc
@@ -78,6 +78,7 @@
                          "reset_token BLOB, "
                          "cookie_name_filter TEXT, "
                          "safe_search_result INTEGER DEFAULT 0, "
+                         "favicon TEXT, "
                          "CONSTRAINT fk_origin "
                          "FOREIGN KEY (origin_id) "
                          "REFERENCES origin(id) "
@@ -135,7 +136,8 @@
   return sql::INIT_OK;
 }
 
-bool MediaHistoryFeedsTable::DiscoverFeed(const GURL& url) {
+bool MediaHistoryFeedsTable::DiscoverFeed(const GURL& url,
+                                          const base::Optional<GURL>& favicon) {
   DCHECK_LT(0, DB()->transaction_nesting());
   if (!CanAccessDatabase())
     return false;
@@ -170,20 +172,35 @@
     sql::Statement statement(DB()->GetCachedStatement(
         SQL_FROM_HERE,
         "INSERT OR REPLACE INTO mediaFeed "
-        "(origin_id, url, last_discovery_time_s) VALUES "
-        "((SELECT id FROM origin WHERE origin = ?), ?, ?)"));
+        "(origin_id, url, last_discovery_time_s, favicon) VALUES "
+        "((SELECT id FROM origin WHERE origin = ?), ?, ?, ?)"));
     statement.BindString(0, origin);
     statement.BindString(1, url.spec());
     statement.BindInt64(2, now);
+
+    if (favicon.has_value()) {
+      statement.BindString(3, favicon->spec());
+    } else {
+      statement.BindNull(3);
+    }
+
     return statement.Run() && DB()->GetLastChangeCount() == 1;
   } else {
     // If the feed already exists in the database with the same URL we should
     // just update the last discovery time so we don't delete the old entry.
-    sql::Statement statement(DB()->GetCachedStatement(
-        SQL_FROM_HERE,
-        "UPDATE mediaFeed SET last_discovery_time_s = ? WHERE id = ?"));
+    sql::Statement statement(
+        DB()->GetCachedStatement(SQL_FROM_HERE,
+                                 "UPDATE mediaFeed SET last_discovery_time_s = "
+                                 "?, favicon = ? WHERE id = ?"));
     statement.BindInt64(0, now);
     statement.BindInt64(1, *feed_id);
+
+    if (favicon.has_value()) {
+      statement.BindString(2, favicon->spec());
+    } else {
+      statement.BindNull(2);
+    }
+
     return statement.Run() && DB()->GetLastChangeCount() == 1;
   }
 }
@@ -225,7 +242,8 @@
       "mediaFeed.user_identifier, "
       "mediaFeed.cookie_name_filter, "
       "mediaFeed.safe_search_result, "
-      "mediaFeed.reset_token ");
+      "mediaFeed.reset_token, "
+      "mediaFeed.favicon ");
 
   sql::Statement statement;
 
@@ -306,6 +324,15 @@
 
     statement.BindInt64(
         0, static_cast<int>(media_feeds::mojom::FeedUserStatus::kEnabled));
+  } else if (request.type ==
+             MediaHistoryKeyedService::GetMediaFeedsRequest::Type::kNewFeeds) {
+    sql.push_back("FROM mediaFeed WHERE user_status = ?");
+
+    statement.Assign(DB()->GetCachedStatement(
+        SQL_FROM_HERE, base::JoinString(sql, " ").c_str()));
+
+    statement.BindInt64(
+        0, static_cast<int>(media_feeds::mojom::FeedUserStatus::kAuto));
   } else {
     sql.push_back("FROM mediaFeed");
 
@@ -449,9 +476,12 @@
         feed->reset_token = ProtoToUnguessableToken(token);
     }
 
+    if (statement.GetColumnType(20) == sql::ColumnType::kText)
+      feed->favicon = GURL(statement.ColumnString(20));
+
     if (top_feeds) {
       feed->aggregate_watchtime =
-          base::TimeDelta::FromSeconds(statement.ColumnInt64(20));
+          base::TimeDelta::FromSeconds(statement.ColumnInt64(21));
     }
 
     feeds.push_back(std::move(feed));
diff --git a/chrome/browser/media/history/media_history_feeds_table.h b/chrome/browser/media/history/media_history_feeds_table.h
index bc848aa..123955b 100644
--- a/chrome/browser/media/history/media_history_feeds_table.h
+++ b/chrome/browser/media/history/media_history_feeds_table.h
@@ -52,7 +52,7 @@
   sql::InitStatus CreateTableIfNonExistent() override;
 
   // Saves a newly discovered feed in the database.
-  bool DiscoverFeed(const GURL& url);
+  bool DiscoverFeed(const GURL& url, const base::Optional<GURL>& favicon);
 
   // Updates the feed following a fetch.
   bool UpdateFeedFromFetch(
diff --git a/chrome/browser/media/history/media_history_keyed_service.cc b/chrome/browser/media/history/media_history_keyed_service.cc
index cef65a6..95d3061 100644
--- a/chrome/browser/media/history/media_history_keyed_service.cc
+++ b/chrome/browser/media/history/media_history_keyed_service.cc
@@ -352,12 +352,15 @@
       std::move(callback));
 }
 
-void MediaHistoryKeyedService::DiscoverMediaFeed(const GURL& url,
-                                                 base::OnceClosure callback) {
+void MediaHistoryKeyedService::DiscoverMediaFeed(
+    const GURL& url,
+    const base::Optional<GURL>& favicon,
+    base::OnceClosure callback) {
   if (auto* store = store_->GetForWrite()) {
     store->db_task_runner_->PostTaskAndReply(
         FROM_HERE,
-        base::BindOnce(&MediaHistoryStore::DiscoverMediaFeed, store, url),
+        base::BindOnce(&MediaHistoryStore::DiscoverMediaFeed, store, url,
+                       favicon),
         std::move(callback));
   } else {
     std::move(callback).Run();
@@ -430,6 +433,13 @@
   return request;
 }
 
+MediaHistoryKeyedService::GetMediaFeedsRequest
+MediaHistoryKeyedService::GetMediaFeedsRequest::CreateNewFeeds() {
+  GetMediaFeedsRequest request;
+  request.type = Type::kNewFeeds;
+  return request;
+}
+
 MediaHistoryKeyedService::GetMediaFeedsRequest::GetMediaFeedsRequest() =
     default;
 
diff --git a/chrome/browser/media/history/media_history_keyed_service.h b/chrome/browser/media/history/media_history_keyed_service.h
index 2551ad4..1390222 100644
--- a/chrome/browser/media/history/media_history_keyed_service.h
+++ b/chrome/browser/media/history/media_history_keyed_service.h
@@ -250,8 +250,11 @@
       // |origin_audio_video_watchtime_percentile| field in |MediaFeedPtr|.
       kTopFeedsForDisplay,
 
-      // Returns the feeeds that have been selected by the user to be fetched.
+      // Returns the feeds that have been selected by the user to be fetched.
       kSelectedFeedsForFetch,
+
+      // Returns the feeds that have been newly discovered.
+      kNewFeeds,
     };
 
     static GetMediaFeedsRequest CreateTopFeedsForFetch(
@@ -266,6 +269,8 @@
 
     static GetMediaFeedsRequest CreateSelectedFeedsForFetch();
 
+    static GetMediaFeedsRequest CreateNewFeeds();
+
     GetMediaFeedsRequest();
     GetMediaFeedsRequest(const GetMediaFeedsRequest& t);
 
@@ -367,6 +372,7 @@
 
   // Saves a newly discovered media feed in the media history store.
   void DiscoverMediaFeed(const GURL& url,
+                         const base::Optional<GURL>& favicon,
                          base::OnceClosure callback = base::DoNothing());
 
  private:
diff --git a/chrome/browser/media/history/media_history_store.cc b/chrome/browser/media/history/media_history_store.cc
index 15caea41..1f68a95 100644
--- a/chrome/browser/media/history/media_history_store.cc
+++ b/chrome/browser/media/history/media_history_store.cc
@@ -35,7 +35,7 @@
 
 namespace {
 
-constexpr int kCurrentVersionNumber = 4;
+constexpr int kCurrentVersionNumber = 5;
 constexpr int kCompatibleVersionNumber = 1;
 
 constexpr base::FilePath::CharType kMediaHistoryDatabaseName[] =
@@ -134,6 +134,26 @@
   return 3;
 }
 
+int MigrateFrom4To5(sql::Database* db, sql::MetaTable* meta_table) {
+  // Version 5 adds a new column to mediaFeed.
+  const int target_version = 5;
+
+  // The mediaFeed table might not exist if the feature is disabled.
+  if (!db->DoesTableExist("mediaFeed")) {
+    meta_table->SetVersionNumber(target_version);
+    return target_version;
+  }
+
+  static const char k4To5Sql[] =
+      "ALTER TABLE mediaFeed ADD COLUMN favicon TEXT DEFAULT 0;";
+  sql::Transaction transaction(db);
+  if (transaction.Begin() && db->Execute(k4To5Sql) && transaction.Commit()) {
+    meta_table->SetVersionNumber(target_version);
+    return target_version;
+  }
+  return 4;
+}
+
 bool IsCauseFromExpiration(const net::CookieChangeCause& cause) {
   return cause == net::CookieChangeCause::UNKNOWN_DELETION ||
          cause == net::CookieChangeCause::EXPIRED ||
@@ -431,6 +451,8 @@
     cur_version = MigrateFrom2To3(db_.get(), meta_table_.get());
   if (cur_version == 3)
     cur_version = MigrateFrom3To4(db_.get(), meta_table_.get());
+  if (cur_version == 4)
+    cur_version = MigrateFrom4To5(db_.get(), meta_table_.get());
 
   if (cur_version == kCurrentVersionNumber)
     return sql::INIT_OK;
@@ -757,7 +779,8 @@
   return urls;
 }
 
-void MediaHistoryStore::DiscoverMediaFeed(const GURL& url) {
+void MediaHistoryStore::DiscoverMediaFeed(const GURL& url,
+                                          const base::Optional<GURL>& favicon) {
   DCHECK(db_task_runner_->RunsTasksInCurrentSequence());
   if (!CanAccessDatabase())
     return;
@@ -771,7 +794,7 @@
   }
 
   if (!(CreateOriginId(url::Origin::Create(url)) &&
-        feeds_table_->DiscoverFeed(url))) {
+        feeds_table_->DiscoverFeed(url, favicon))) {
     DB()->RollbackTransaction();
     return;
   }
diff --git a/chrome/browser/media/history/media_history_store.h b/chrome/browser/media/history/media_history_store.h
index 3931e9d..6f5efc4 100644
--- a/chrome/browser/media/history/media_history_store.h
+++ b/chrome/browser/media/history/media_history_store.h
@@ -158,7 +158,7 @@
 
   std::set<GURL> GetURLsInTableForTest(const std::string& table);
 
-  void DiscoverMediaFeed(const GURL& url);
+  void DiscoverMediaFeed(const GURL& url, const base::Optional<GURL>& favicon);
 
   void StoreMediaFeedFetchResult(
       MediaHistoryKeyedService::MediaFeedFetchResult result);
diff --git a/chrome/browser/media/history/media_history_store_unittest.cc b/chrome/browser/media/history/media_history_store_unittest.cc
index e20b383..d41ba1cf 100644
--- a/chrome/browser/media/history/media_history_store_unittest.cc
+++ b/chrome/browser/media/history/media_history_store_unittest.cc
@@ -1079,7 +1079,10 @@
     EXPECT_EQ(feeds, GetMediaFeedsSync(otr_service()));
   }
 
-  DiscoverMediaFeed(url_c);
+  GURL favicon("https://www.google.com/favicon.ico");
+  if (auto* service = GetMediaFeedsService())
+    service->DiscoverMediaFeed(url_c, favicon);
+
   WaitForDB();
 
   {
@@ -1094,8 +1097,10 @@
 
       EXPECT_EQ(2, feeds[0]->id);
       EXPECT_EQ(url_b, feeds[0]->url);
+      EXPECT_FALSE(feeds[0]->favicon.has_value());
       EXPECT_EQ(3, feeds[1]->id);
       EXPECT_EQ(url_c, feeds[1]->url);
+      EXPECT_EQ(favicon, feeds[1]->favicon);
     }
 
     // The OTR service should have the same data.
@@ -3073,6 +3078,41 @@
   }
 }
 
+TEST_P(MediaHistoryStoreFeedsTest, GetNewFeeds) {
+  const GURL feed_url_a("https://www.google.com/feed");
+  const GURL feed_url_b("https://www.google.co.uk/feed");
+  const GURL feed_url_c("https://www.google.co.tv/feed");
+
+  DiscoverMediaFeed(feed_url_a);
+  DiscoverMediaFeed(feed_url_b);
+  DiscoverMediaFeed(feed_url_c);
+  WaitForDB();
+
+  // If we are read only we should use -1 as a placeholder feed id because the
+  // feed will not have been stored. This is so we can run the rest of the test
+  // to ensure a no-op.
+  const int feed_id_a = IsReadOnly() ? -1 : GetMediaFeedsSync(service())[0]->id;
+  const int feed_id_b = IsReadOnly() ? -1 : GetMediaFeedsSync(service())[1]->id;
+  const int feed_id_c = IsReadOnly() ? -1 : GetMediaFeedsSync(service())[2]->id;
+
+  service()->UpdateFeedUserStatus(
+      feed_id_a, media_feeds::mojom::FeedUserStatus::kDisabled);
+  service()->UpdateFeedUserStatus(feed_id_b,
+                                  media_feeds::mojom::FeedUserStatus::kEnabled);
+  WaitForDB();
+
+  auto feeds = GetMediaFeedsSync(
+      service(),
+      MediaHistoryKeyedService::GetMediaFeedsRequest::CreateNewFeeds());
+
+  if (IsReadOnly()) {
+    EXPECT_TRUE(feeds.empty());
+  } else {
+    ASSERT_EQ(1u, feeds.size());
+    EXPECT_EQ(feed_id_c, feeds[0]->id);
+  }
+}
+
 #endif  // !defined(OS_ANDROID)
 
 }  // namespace media_history
diff --git a/chrome/browser/media/kaleidoscope/kaleidoscope_data_provider_impl.cc b/chrome/browser/media/kaleidoscope/kaleidoscope_data_provider_impl.cc
index 63a5a13b..a04d4ff3 100644
--- a/chrome/browser/media/kaleidoscope/kaleidoscope_data_provider_impl.cc
+++ b/chrome/browser/media/kaleidoscope/kaleidoscope_data_provider_impl.cc
@@ -266,6 +266,31 @@
   base::UmaHistogramBoolean("Media.Kaleidoscope.DialogClosed", value);
 }
 
+void KaleidoscopeDataProviderImpl::GetNewMediaFeeds(
+    GetNewMediaFeedsCallback cb) {
+  auto* prefs = profile_->GetPrefs();
+  DCHECK(prefs);
+
+  const bool auto_enabled =
+      prefs->GetBoolean(kaleidoscope::prefs::kKaleidoscopeAutoSelectMediaFeeds);
+
+  GetMediaHistoryService()->GetMediaFeeds(
+      media_history::MediaHistoryKeyedService::GetMediaFeedsRequest::
+          CreateNewFeeds(),
+      base::BindOnce(
+          [](GetNewMediaFeedsCallback cb, bool auto_enabled,
+             std::vector<media_feeds::mojom::MediaFeedPtr> feeds) {
+            std::move(cb).Run(std::move(feeds), auto_enabled);
+          },
+          std::move(cb), auto_enabled));
+}
+
+void KaleidoscopeDataProviderImpl::UpdateFeedUserStatus(
+    int64_t feed_id,
+    media_feeds::mojom::FeedUserStatus status) {
+  GetMediaHistoryService()->UpdateFeedUserStatus(feed_id, status);
+}
+
 media_history::MediaHistoryKeyedService*
 KaleidoscopeDataProviderImpl::GetMediaHistoryService() {
   return media_history::MediaHistoryKeyedServiceFactory::GetForProfile(
diff --git a/chrome/browser/media/kaleidoscope/kaleidoscope_data_provider_impl.h b/chrome/browser/media/kaleidoscope/kaleidoscope_data_provider_impl.h
index 275c0b9..d517e10 100644
--- a/chrome/browser/media/kaleidoscope/kaleidoscope_data_provider_impl.h
+++ b/chrome/browser/media/kaleidoscope/kaleidoscope_data_provider_impl.h
@@ -69,6 +69,9 @@
       const std::vector<std::string>& providers) override;
   void RecordTimeTakenToStartWatchHistogram(base::TimeDelta time) override;
   void RecordDialogClosedHistogram(bool value) override;
+  void GetNewMediaFeeds(GetNewMediaFeedsCallback cb) override;
+  void UpdateFeedUserStatus(int64_t feed_id,
+                            media_feeds::mojom::FeedUserStatus status) override;
 
  private:
   media_history::MediaHistoryKeyedService* GetMediaHistoryService();
diff --git a/chrome/browser/media/kaleidoscope/mojom/kaleidoscope.mojom b/chrome/browser/media/kaleidoscope/mojom/kaleidoscope.mojom
index 318c4bf..a576085 100644
--- a/chrome/browser/media/kaleidoscope/mojom/kaleidoscope.mojom
+++ b/chrome/browser/media/kaleidoscope/mojom/kaleidoscope.mojom
@@ -112,6 +112,16 @@
   // Records a histogram when the dialog was closed of whether the user selected
   // a link from the dialog.
   RecordDialogClosedHistogram(bool value);
+
+  // Returns Media Feeds that are "new" and should be displayed to the user so
+  // that they know this Media Feed is now being fetched.
+  GetNewMediaFeeds() => (
+    array<media_feeds.mojom.MediaFeed> feeds,
+    bool automatic_selection_enabled);
+
+  // Update the selection the user made as to whether they want this Media Feed
+  // displayed in Kaleidoscope.
+  UpdateFeedUserStatus(int64 feed_id, media_feeds.mojom.FeedUserStatus status);
 };
 
 // Handles identity related tasks.
diff --git a/chrome/browser/optimization_guide/DIR_METADATA b/chrome/browser/optimization_guide/DIR_METADATA
new file mode 100644
index 0000000..142a254
--- /dev/null
+++ b/chrome/browser/optimization_guide/DIR_METADATA
@@ -0,0 +1,3 @@
+monorail:  {
+  component:  "Internals>OptimizationGuide"
+}
diff --git a/chrome/browser/optimization_guide/OWNERS b/chrome/browser/optimization_guide/OWNERS
index 3d1e06b..1ee724d 100644
--- a/chrome/browser/optimization_guide/OWNERS
+++ b/chrome/browser/optimization_guide/OWNERS
@@ -1,3 +1 @@
 file://components/optimization_guide/OWNERS
-
-# COMPONENT: Internals>OptimizationGuide
diff --git a/chrome/browser/optimization_guide/blink/DIR_METADATA b/chrome/browser/optimization_guide/blink/DIR_METADATA
new file mode 100644
index 0000000..142a254
--- /dev/null
+++ b/chrome/browser/optimization_guide/blink/DIR_METADATA
@@ -0,0 +1,3 @@
+monorail:  {
+  component:  "Internals>OptimizationGuide"
+}
diff --git a/chrome/browser/optimization_guide/blink/OWNERS b/chrome/browser/optimization_guide/blink/OWNERS
index d0946640..31d4b9d 100644
--- a/chrome/browser/optimization_guide/blink/OWNERS
+++ b/chrome/browser/optimization_guide/blink/OWNERS
@@ -1,3 +1 @@
 file://third_party/blink/public/mojom/optimization_guide/OWNERS
-
-# COMPONENT: Internals>OptimizationGuide
diff --git a/chrome/browser/page_load_metrics/DIR_METADATA b/chrome/browser/page_load_metrics/DIR_METADATA
new file mode 100644
index 0000000..7618d29
--- /dev/null
+++ b/chrome/browser/page_load_metrics/DIR_METADATA
@@ -0,0 +1,3 @@
+monorail:  {
+  component:  "Speed>Metrics"
+}
diff --git a/chrome/browser/page_load_metrics/OWNERS b/chrome/browser/page_load_metrics/OWNERS
index fdc4a3fd..79de6c8 100644
--- a/chrome/browser/page_load_metrics/OWNERS
+++ b/chrome/browser/page_load_metrics/OWNERS
@@ -17,5 +17,3 @@
 
 # For QUIC version changes in ConnectionInfo switch statmenets.
 per-file protocol_util.cc=file://net/quic/OWNERS
-
-# COMPONENT: Speed>Metrics
diff --git a/chrome/browser/page_load_metrics/integration_tests/DIR_METADATA b/chrome/browser/page_load_metrics/integration_tests/DIR_METADATA
new file mode 100644
index 0000000..7ed780e
--- /dev/null
+++ b/chrome/browser/page_load_metrics/integration_tests/DIR_METADATA
@@ -0,0 +1,4 @@
+monorail:  {
+  component:  "Speed>Metrics"
+}
+team_email:  "speed-metrics-dev@chromium.org"
diff --git a/chrome/browser/page_load_metrics/integration_tests/OWNERS b/chrome/browser/page_load_metrics/integration_tests/OWNERS
index 87617bed..c6ee3b6 100644
--- a/chrome/browser/page_load_metrics/integration_tests/OWNERS
+++ b/chrome/browser/page_load_metrics/integration_tests/OWNERS
@@ -1,4 +1 @@
 skobes@chromium.org
-
-# TEAM: speed-metrics-dev@chromium.org
-# COMPONENT: Speed>Metrics
diff --git a/chrome/browser/page_load_metrics/observers/ad_metrics/DIR_METADATA b/chrome/browser/page_load_metrics/observers/ad_metrics/DIR_METADATA
new file mode 100644
index 0000000..ee26cc0
--- /dev/null
+++ b/chrome/browser/page_load_metrics/observers/ad_metrics/DIR_METADATA
@@ -0,0 +1,3 @@
+monorail:  {
+  component:  "UI>Browser>AdFilter"
+}
diff --git a/chrome/browser/page_load_metrics/observers/ad_metrics/OWNERS b/chrome/browser/page_load_metrics/observers/ad_metrics/OWNERS
index 8d6e675..fb9a3c5 100644
--- a/chrome/browser/page_load_metrics/observers/ad_metrics/OWNERS
+++ b/chrome/browser/page_load_metrics/observers/ad_metrics/OWNERS
@@ -1,5 +1,3 @@
 johnidel@chromium.org
 ericrobinson@chromium.org
 jkarlin@chromium.org
-
-# COMPONENT: UI>Browser>AdFilter
diff --git a/chrome/browser/page_load_metrics/observers/core/DIR_METADATA b/chrome/browser/page_load_metrics/observers/core/DIR_METADATA
new file mode 100644
index 0000000..7618d29
--- /dev/null
+++ b/chrome/browser/page_load_metrics/observers/core/DIR_METADATA
@@ -0,0 +1,3 @@
+monorail:  {
+  component:  "Speed>Metrics"
+}
diff --git a/chrome/browser/page_load_metrics/observers/core/OWNERS b/chrome/browser/page_load_metrics/observers/core/OWNERS
index 1290b66..860ae76 100644
--- a/chrome/browser/page_load_metrics/observers/core/OWNERS
+++ b/chrome/browser/page_load_metrics/observers/core/OWNERS
@@ -1,3 +1 @@
 file://components/page_load_metrics/browser/observers/core/OWNERS
-
-# COMPONENT: Speed>Metrics
diff --git a/chrome/browser/paint_preview/DIR_METADATA b/chrome/browser/paint_preview/DIR_METADATA
new file mode 100644
index 0000000..17cf0dc
--- /dev/null
+++ b/chrome/browser/paint_preview/DIR_METADATA
@@ -0,0 +1,3 @@
+monorail:  {
+  component:  "Internals>FreezeDriedTabs"
+}
diff --git a/chrome/browser/paint_preview/OWNERS b/chrome/browser/paint_preview/OWNERS
index 73763e6..5736463 100644
--- a/chrome/browser/paint_preview/OWNERS
+++ b/chrome/browser/paint_preview/OWNERS
@@ -1,2 +1 @@
 file://components/paint_preview/OWNERS
-# COMPONENT: Internals>FreezeDriedTabs
diff --git a/chrome/browser/password_check/DIR_METADATA b/chrome/browser/password_check/DIR_METADATA
new file mode 100644
index 0000000..480ae4b3
--- /dev/null
+++ b/chrome/browser/password_check/DIR_METADATA
@@ -0,0 +1,4 @@
+monorail:  {
+  component:  "UI>Browser>Passwords"
+}
+team_email:  "chromium-dev@chromium.org"
diff --git a/chrome/browser/password_check/OWNERS b/chrome/browser/password_check/OWNERS
index fe3a3ab..a609b60 100644
--- a/chrome/browser/password_check/OWNERS
+++ b/chrome/browser/password_check/OWNERS
@@ -1,5 +1,2 @@
 fhorschig@chromium.org
 ioanap@chromium.org
-
-# COMPONENT: UI>Browser>Passwords
-# TEAM: chromium-dev@chromium.org
\ No newline at end of file
diff --git a/chrome/browser/password_manager/DIR_METADATA b/chrome/browser/password_manager/DIR_METADATA
new file mode 100644
index 0000000..480ae4b3
--- /dev/null
+++ b/chrome/browser/password_manager/DIR_METADATA
@@ -0,0 +1,4 @@
+monorail:  {
+  component:  "UI>Browser>Passwords"
+}
+team_email:  "chromium-dev@chromium.org"
diff --git a/chrome/browser/password_manager/OWNERS b/chrome/browser/password_manager/OWNERS
index 1542db8c..066e0d37 100644
--- a/chrome/browser/password_manager/OWNERS
+++ b/chrome/browser/password_manager/OWNERS
@@ -1,4 +1 @@
 file://components/password_manager/OWNERS
-
-# COMPONENT: UI>Browser>Passwords
-# TEAM: chromium-dev@chromium.org
diff --git a/chrome/browser/password_manager/android/DIR_METADATA b/chrome/browser/password_manager/android/DIR_METADATA
new file mode 100644
index 0000000..480ae4b3
--- /dev/null
+++ b/chrome/browser/password_manager/android/DIR_METADATA
@@ -0,0 +1,4 @@
+monorail:  {
+  component:  "UI>Browser>Passwords"
+}
+team_email:  "chromium-dev@chromium.org"
diff --git a/chrome/browser/password_manager/android/OWNERS b/chrome/browser/password_manager/android/OWNERS
index 86b9bd2..a609b60 100644
--- a/chrome/browser/password_manager/android/OWNERS
+++ b/chrome/browser/password_manager/android/OWNERS
@@ -1,5 +1,2 @@
 fhorschig@chromium.org
 ioanap@chromium.org
-
-# COMPONENT: UI>Browser>Passwords
-# TEAM: chromium-dev@chromium.org
diff --git a/chrome/browser/password_manager/android/save_password_message_delegate.cc b/chrome/browser/password_manager/android/save_password_message_delegate.cc
index 9f54d6c3..1704e78b 100644
--- a/chrome/browser/password_manager/android/save_password_message_delegate.cc
+++ b/chrome/browser/password_manager/android/save_password_message_delegate.cc
@@ -43,7 +43,9 @@
 }
 
 void SavePasswordMessageDelegate::DismissSavePasswordPrompt() {
-  messages::MessageDispatcherBridge::DismissMessage(*message_, web_contents_);
+  if (message_ != nullptr) {
+    messages::MessageDispatcherBridge::DismissMessage(*message_, web_contents_);
+  }
 }
 
 void SavePasswordMessageDelegate::CreateMessage(
diff --git a/chrome/browser/password_manager/chrome_password_manager_client.cc b/chrome/browser/password_manager/chrome_password_manager_client.cc
index c8b1a70..eba45bd 100644
--- a/chrome/browser/password_manager/chrome_password_manager_client.cc
+++ b/chrome/browser/password_manager/chrome_password_manager_client.cc
@@ -600,11 +600,10 @@
           password_manager::features::kPasswordChange)) {
     was_leak_dialog_shown_ = true;
   }
-  if (messages::IsPasswordMessagesUiEnabled()) {
-    save_password_message_delegate_.DismissSavePasswordPrompt();
-  } else {
-    HideSavePasswordInfobar(web_contents());
-  }
+
+  save_password_message_delegate_.DismissSavePasswordPrompt();
+  HideSavePasswordInfobar(web_contents());
+
   (new CredentialLeakControllerAndroid(
        leak_type, saved_sites, origin, username,
        web_contents()->GetTopLevelNativeWindow()))
diff --git a/chrome/browser/payments/BUILD.gn b/chrome/browser/payments/BUILD.gn
index 544659b..e65c431 100644
--- a/chrome/browser/payments/BUILD.gn
+++ b/chrome/browser/payments/BUILD.gn
@@ -2,7 +2,7 @@
 # Use of this source code is governed by a BSD-style license that can be
 # found in the LICENSE file.
 
-source_set("browsertests") {
+source_set("browser_tests") {
   testonly = true
 
   sources = [
diff --git a/chrome/browser/pdf/DIR_METADATA b/chrome/browser/pdf/DIR_METADATA
new file mode 100644
index 0000000..10f235d
--- /dev/null
+++ b/chrome/browser/pdf/DIR_METADATA
@@ -0,0 +1,3 @@
+monorail:  {
+  component:  "Internals>Plugins>PDF"
+}
diff --git a/chrome/browser/pdf/OWNERS b/chrome/browser/pdf/OWNERS
index d9b356d..65f0bdf 100644
--- a/chrome/browser/pdf/OWNERS
+++ b/chrome/browser/pdf/OWNERS
@@ -4,4 +4,3 @@
 per-file pdf_extension_test.*=rbpotter@chromium.org
 per-file pdf_extension_util.*=dpapad@chromium.org
 per-file pdf_extension_util.*=rbpotter@chromium.org
-# COMPONENT: Internals>Plugins>PDF
diff --git a/chrome/browser/performance_monitor/DIR_METADATA b/chrome/browser/performance_monitor/DIR_METADATA
new file mode 100644
index 0000000..079a366
--- /dev/null
+++ b/chrome/browser/performance_monitor/DIR_METADATA
@@ -0,0 +1,3 @@
+monorail:  {
+  component:  "Internals"
+}
diff --git a/chrome/browser/performance_monitor/OWNERS b/chrome/browser/performance_monitor/OWNERS
index 1dcf5f6..59e16be 100644
--- a/chrome/browser/performance_monitor/OWNERS
+++ b/chrome/browser/performance_monitor/OWNERS
@@ -1,4 +1,3 @@
 oysteine@chromium.org
 sebmarchand@chromium.org
 simonhatch@chromium.org
-# COMPONENT: Internals
diff --git a/chrome/browser/permissions/DIR_METADATA b/chrome/browser/permissions/DIR_METADATA
new file mode 100644
index 0000000..c16e79f
--- /dev/null
+++ b/chrome/browser/permissions/DIR_METADATA
@@ -0,0 +1,4 @@
+monorail:  {
+  component:  "Internals>Permissions"
+}
+team_email:  "permissions-dev@chromium.org"
diff --git a/chrome/browser/permissions/OWNERS b/chrome/browser/permissions/OWNERS
index beed9094..e7644e3 100644
--- a/chrome/browser/permissions/OWNERS
+++ b/chrome/browser/permissions/OWNERS
@@ -1,6 +1,3 @@
 file://components/permissions/PERMISSIONS_OWNERS
 felt@chromium.org
 mlamouri@chromium.org
-
-# COMPONENT: Internals>Permissions
-# TEAM: permissions-dev@chromium.org
diff --git a/chrome/browser/persisted_state_db/DIR_METADATA b/chrome/browser/persisted_state_db/DIR_METADATA
new file mode 100644
index 0000000..588de330
--- /dev/null
+++ b/chrome/browser/persisted_state_db/DIR_METADATA
@@ -0,0 +1 @@
+team_email:  "memex-team@google.com"
diff --git a/chrome/browser/persisted_state_db/OWNERS b/chrome/browser/persisted_state_db/OWNERS
index 2ba6953..94b86d4 100644
--- a/chrome/browser/persisted_state_db/OWNERS
+++ b/chrome/browser/persisted_state_db/OWNERS
@@ -1,3 +1 @@
 yusufo@chromium.org
-
-# TEAM: memex-team@google.com
diff --git a/chrome/browser/picture_in_picture/DIR_METADATA b/chrome/browser/picture_in_picture/DIR_METADATA
new file mode 100644
index 0000000..7f5bee0
--- /dev/null
+++ b/chrome/browser/picture_in_picture/DIR_METADATA
@@ -0,0 +1,4 @@
+monorail:  {
+  component:  "Blink>Media>PictureInPicture"
+}
+team_email:  "media-dev@chromium.org"
diff --git a/chrome/browser/picture_in_picture/OWNERS b/chrome/browser/picture_in_picture/OWNERS
index 0a33a0e..ed74af2 100644
--- a/chrome/browser/picture_in_picture/OWNERS
+++ b/chrome/browser/picture_in_picture/OWNERS
@@ -1,3 +1 @@
 file://third_party/blink/renderer/modules/picture_in_picture/OWNERS
-# COMPONENT: Blink>Media>PictureInPicture
-# TEAM: media-dev@chromium.org
diff --git a/chrome/browser/plugins/DIR_METADATA b/chrome/browser/plugins/DIR_METADATA
new file mode 100644
index 0000000..5008e90
--- /dev/null
+++ b/chrome/browser/plugins/DIR_METADATA
@@ -0,0 +1,3 @@
+monorail:  {
+  component:  "Internals>Plugins"
+}
diff --git a/chrome/browser/plugins/OWNERS b/chrome/browser/plugins/OWNERS
index 055f966..d3758ee 100644
--- a/chrome/browser/plugins/OWNERS
+++ b/chrome/browser/plugins/OWNERS
@@ -1,4 +1,3 @@
 tommycli@chromium.org
 
 per-file *permission_context*=file://components/permissions/PERMISSIONS_OWNERS
-# COMPONENT: Internals>Plugins
diff --git a/chrome/browser/policy/DIR_METADATA b/chrome/browser/policy/DIR_METADATA
new file mode 100644
index 0000000..4c21d96
--- /dev/null
+++ b/chrome/browser/policy/DIR_METADATA
@@ -0,0 +1,3 @@
+monorail:  {
+  component:  "Enterprise"
+}
diff --git a/chrome/browser/policy/OWNERS b/chrome/browser/policy/OWNERS
index 6c6d5df2..154aedf0 100644
--- a/chrome/browser/policy/OWNERS
+++ b/chrome/browser/policy/OWNERS
@@ -12,5 +12,3 @@
 
 per-file chrome_browser_cloud_management*=rogerta@chromium.org
 per-file chrome_browser_cloud_management*=zmin@chromium.org
-
-# COMPONENT: Enterprise
diff --git a/chrome/browser/policy/configuration_policy_handler_list_factory.cc b/chrome/browser/policy/configuration_policy_handler_list_factory.cc
index 88264e1..436e69f7 100644
--- a/chrome/browser/policy/configuration_policy_handler_list_factory.cc
+++ b/chrome/browser/policy/configuration_policy_handler_list_factory.cc
@@ -1517,27 +1517,32 @@
       std::make_unique<
           enterprise_connectors::EnterpriseConnectorsPolicyHandler>(
           key::kOnFileAttachedEnterpriseConnector,
-          enterprise_connectors::kOnFileAttachedPref, chrome_schema));
+          enterprise_connectors::kOnFileAttachedPref,
+          enterprise_connectors::kOnFileAttachedScopePref, chrome_schema));
   handlers->AddHandler(
       std::make_unique<
           enterprise_connectors::EnterpriseConnectorsPolicyHandler>(
           key::kOnFileDownloadedEnterpriseConnector,
-          enterprise_connectors::kOnFileDownloadedPref, chrome_schema));
+          enterprise_connectors::kOnFileDownloadedPref,
+          enterprise_connectors::kOnFileDownloadedScopePref, chrome_schema));
   handlers->AddHandler(
       std::make_unique<
           enterprise_connectors::EnterpriseConnectorsPolicyHandler>(
           key::kOnBulkDataEntryEnterpriseConnector,
-          enterprise_connectors::kOnBulkDataEntryPref, chrome_schema));
+          enterprise_connectors::kOnBulkDataEntryPref,
+          enterprise_connectors::kOnBulkDataEntryScopePref, chrome_schema));
   handlers->AddHandler(
       std::make_unique<
           enterprise_connectors::EnterpriseConnectorsPolicyHandler>(
           key::kOnSecurityEventEnterpriseConnector,
-          enterprise_connectors::kOnSecurityEventPref, chrome_schema));
+          enterprise_connectors::kOnSecurityEventPref,
+          enterprise_connectors::kOnSecurityEventScopePref, chrome_schema));
   handlers->AddHandler(
       std::make_unique<
           enterprise_connectors::EnterpriseConnectorsPolicyHandler>(
           key::kEnterpriseRealTimeUrlCheckMode,
-          prefs::kSafeBrowsingEnterpriseRealTimeUrlCheckMode, chrome_schema));
+          prefs::kSafeBrowsingEnterpriseRealTimeUrlCheckMode,
+          prefs::kSafeBrowsingEnterpriseRealTimeUrlCheckScope, chrome_schema));
 
   handlers->AddHandler(std::make_unique<SimpleSchemaValidatingPolicyHandler>(
       key::kBrowsingDataLifetime, browsing_data::prefs::kBrowsingDataLifetime,
diff --git a/chrome/browser/policy/messaging_layer/DIR_METADATA b/chrome/browser/policy/messaging_layer/DIR_METADATA
new file mode 100644
index 0000000..4c21d96
--- /dev/null
+++ b/chrome/browser/policy/messaging_layer/DIR_METADATA
@@ -0,0 +1,3 @@
+monorail:  {
+  component:  "Enterprise"
+}
diff --git a/chrome/browser/policy/messaging_layer/OWNERS b/chrome/browser/policy/messaging_layer/OWNERS
index 03e9195..27204888 100644
--- a/chrome/browser/policy/messaging_layer/OWNERS
+++ b/chrome/browser/policy/messaging_layer/OWNERS
@@ -1,4 +1,2 @@
 zatrudo@google.com
 lbaraz@google.com
-
-# COMPONENT: Enterprise
diff --git a/chrome/browser/policy/messaging_layer/upload/record_handler_impl.cc b/chrome/browser/policy/messaging_layer/upload/record_handler_impl.cc
index d377065..1a398c6 100644
--- a/chrome/browser/policy/messaging_layer/upload/record_handler_impl.cc
+++ b/chrome/browser/policy/messaging_layer/upload/record_handler_impl.cc
@@ -31,6 +31,42 @@
 
 namespace reporting {
 
+// ReportUploader handles enqueuing events on the |report_queue_|,
+// and uploading those events with the |client_|.
+class RecordHandlerImpl::ReportUploader
+    : public TaskRunnerContext<DmServerUploadService::CompletionResponse> {
+ public:
+  ReportUploader(
+      std::unique_ptr<std::vector<EncryptedRecord>> records,
+      policy::CloudPolicyClient* client,
+      DmServerUploadService::CompletionCallback upload_complete_cb,
+      scoped_refptr<base::SequencedTaskRunner> sequenced_task_runner);
+
+ private:
+  ~ReportUploader() override;
+
+  void OnStart() override;
+
+  void StartUpload(const EncryptedRecord& encrypted_record);
+  void OnUploadComplete(base::Optional<base::Value> response);
+  void HandleFailedUpload();
+  void HandleSuccessfulUpload();
+
+  void Complete(DmServerUploadService::CompletionResponse result);
+
+  std::unique_ptr<std::vector<EncryptedRecord>> records_;
+  policy::CloudPolicyClient* client_;
+
+  // Last successful response to be processed.
+  // Note: I could not find a way to pass it as a parameter,
+  // so it is a class member variable. |last_response_| must be processed before
+  // any attempt to retry calling the client, otherwise it will be overwritten.
+  base::Value last_response_;
+
+  // Set for the highest record being uploaded.
+  base::Optional<SequencingInformation> highest_sequencing_information_;
+};
+
 RecordHandlerImpl::ReportUploader::ReportUploader(
     std::unique_ptr<std::vector<EncryptedRecord>> records,
     policy::CloudPolicyClient* client,
@@ -81,7 +117,7 @@
       FROM_HERE, {content::BrowserThread::UI},
       base::BindOnce(
           [](policy::CloudPolicyClient* client, const EncryptedRecord& record,
-             base::OnceCallback<void(bool)> cb) {
+             base::OnceCallback<void(base::Optional<base::Value>)> cb) {
             client->UploadEncryptedReport(
                 record,
                 reporting::GetContext(ProfileManager::GetPrimaryUserProfile()),
@@ -90,12 +126,14 @@
           client_, encrypted_record, std::move(cb)));
 }
 
-void RecordHandlerImpl::ReportUploader::OnUploadComplete(bool success) {
-  if (!success) {
+void RecordHandlerImpl::ReportUploader::OnUploadComplete(
+    base::Optional<base::Value> response) {
+  if (!response.has_value()) {
     Schedule(&RecordHandlerImpl::ReportUploader::HandleFailedUpload,
              base::Unretained(this));
     return;
   }
+  last_response_ = std::move(response.value());
   Schedule(&RecordHandlerImpl::ReportUploader::HandleSuccessfulUpload,
            base::Unretained(this));
 }
@@ -116,7 +154,36 @@
 }
 
 void RecordHandlerImpl::ReportUploader::HandleSuccessfulUpload() {
-  highest_sequencing_information_ = records_->back().sequencing_information();
+  // Decypher 'response' containing a base::Value dictionary that looks like:
+  //  {
+  //    "lastSucceedUploadedRecord": ... // SequencingInformation proto
+  //    "firstFailedUploadedRecord": {
+  //      "failedUploadedRecord": ... // SequencingInformation proto
+  //      "failureStatus": ... // Status proto
+  //    }
+  //  }
+  // TODO(b/169883262): Factor out the decoding into a separate class.
+
+  const base::Value* last_succeed_uploaded_record =
+      last_response_.FindDictKey("lastSucceedUploadedRecord");
+  if (last_succeed_uploaded_record != nullptr) {
+    SequencingInformation seq_info;
+    // Note: Fields below are 'int', should be converted into 'uint64_t'.
+    const auto sequencing_id =
+        last_succeed_uploaded_record->FindIntKey("sequencingId");
+    const auto generation_id =
+        last_succeed_uploaded_record->FindIntKey("generationId");
+    const auto priority = last_succeed_uploaded_record->FindIntKey("priority");
+    if (sequencing_id.has_value() && generation_id.has_value() &&
+        priority.has_value() && Priority_IsValid(priority.value())) {
+      seq_info.set_sequencing_id(sequencing_id.value());
+      seq_info.set_generation_id(generation_id.value());
+      seq_info.set_priority(Priority(priority.value()));
+      highest_sequencing_information_ = std::move(seq_info);
+    }
+  }
+  // TODO(b/169883262): Decode and handle failure information.
+  // TODO(b/170054326): Handle the encryption settings.
 
   // Pop the last record that was processed.
   records_->pop_back();
diff --git a/chrome/browser/policy/messaging_layer/upload/record_handler_impl.h b/chrome/browser/policy/messaging_layer/upload/record_handler_impl.h
index 4ce15244..06ecda6 100644
--- a/chrome/browser/policy/messaging_layer/upload/record_handler_impl.h
+++ b/chrome/browser/policy/messaging_layer/upload/record_handler_impl.h
@@ -32,36 +32,6 @@
 // queue.
 class RecordHandlerImpl : public DmServerUploadService::RecordHandler {
  public:
-  // ReportUploader handles enqueuing events on the |report_queue_|,
-  // and uploading those events with the |client_|.
-  class ReportUploader
-      : public TaskRunnerContext<DmServerUploadService::CompletionResponse> {
-   public:
-    ReportUploader(
-        std::unique_ptr<std::vector<EncryptedRecord>> records,
-        policy::CloudPolicyClient* client,
-        DmServerUploadService::CompletionCallback upload_complete_cb,
-        scoped_refptr<base::SequencedTaskRunner> sequenced_task_runner);
-
-   private:
-    ~ReportUploader() override;
-
-    void OnStart() override;
-
-    void StartUpload(const EncryptedRecord& encrypted_record);
-    void OnUploadComplete(bool success);
-    void HandleFailedUpload();
-    void HandleSuccessfulUpload();
-
-    void Complete(DmServerUploadService::CompletionResponse completion_result);
-
-    std::unique_ptr<std::vector<EncryptedRecord>> records_;
-    policy::CloudPolicyClient* client_;
-
-    // Set for the highest record being uploaded.
-    base::Optional<SequencingInformation> highest_sequencing_information_;
-  };
-
   explicit RecordHandlerImpl(policy::CloudPolicyClient* client);
   ~RecordHandlerImpl() override;
 
@@ -71,6 +41,14 @@
       DmServerUploadService::CompletionCallback upload_complete) override;
 
  private:
+  // Helper |ReportUploader| class handles enqueuing events on the
+  // |report_queue_|, and uploading those events with the |client_|.
+  class ReportUploader;
+
+  // Processes last JSON response received from the server in case of success,
+  // or nullopt in case of failures on all attempts.
+  void ProcessResponse(const base::Value& response);
+
   scoped_refptr<base::SequencedTaskRunner> sequenced_task_runner_;
 };
 
diff --git a/chrome/browser/policy/messaging_layer/upload/record_handler_impl_unittest.cc b/chrome/browser/policy/messaging_layer/upload/record_handler_impl_unittest.cc
index c3d93ae4..f86c1d1 100644
--- a/chrome/browser/policy/messaging_layer/upload/record_handler_impl_unittest.cc
+++ b/chrome/browser/policy/messaging_layer/upload/record_handler_impl_unittest.cc
@@ -81,6 +81,21 @@
               (DmServerUploadService::CompletionResponse));
 };
 
+// Helper function composes JSON represented as base::Value from Sequencing
+// information.
+base::Value ValueFromSucceededSequencingInfo(
+    const SequencingInformation& sequencing_information) {
+  base::Value sequencing_info(base::Value::Type::DICTIONARY);
+  sequencing_info.SetIntKey("sequencingId",
+                            sequencing_information.sequencing_id());
+  sequencing_info.SetIntKey("generationId",
+                            sequencing_information.generation_id());
+  sequencing_info.SetIntKey("priority", sequencing_information.priority());
+  base::Value result(base::Value::Type::DICTIONARY);
+  result.SetPath("lastSucceedUploadedRecord", std::move(sequencing_info));
+  return result;
+}
+
 class RecordHandlerImplTest : public testing::Test {
  public:
   RecordHandlerImplTest()
@@ -124,9 +139,12 @@
   TestCallbackWaiterWithCounter client_waiter{kNumTestRecords};
   EXPECT_CALL(*client_, UploadEncryptedReport(_, _, _))
       .Times(kNumTestRecords)
-      .WillRepeatedly(WithArgs<2>(
-          Invoke([&client_waiter](base::OnceCallback<void(bool)> callback) {
-            std::move(callback).Run(true);
+      .WillRepeatedly(WithArgs<0, 2>(
+          Invoke([&client_waiter](
+                     const ::reporting::EncryptedRecord& record,
+                     policy::CloudPolicyClient::ResponseCallback callback) {
+            std::move(callback).Run(ValueFromSucceededSequencingInfo(
+                record.sequencing_information()));
             client_waiter.Signal();
           })));
 
@@ -134,6 +152,7 @@
 
   TestCallbackWaiter responder_waiter;
   TestCompletionResponder responder;
+  ::testing::InSequence seq;
   EXPECT_CALL(responder, RecordsHandled(ValueEqualsProto(
                              test_records->back().sequencing_information())))
       .WillOnce(Invoke([&responder_waiter]() { responder_waiter.Signal(); }));
@@ -159,15 +178,19 @@
   ::testing::InSequence seq;
   EXPECT_CALL(*client_, UploadEncryptedReport(_, _, _))
       .Times(kNumSuccessfulUploads)
-      .WillRepeatedly(WithArgs<2>(
-          Invoke([&client_waiter](base::OnceCallback<void(bool)> callback) {
-            std::move(callback).Run(true);
+      .WillRepeatedly(WithArgs<0, 2>(Invoke(
+          [&client_waiter](
+              const ::reporting::EncryptedRecord& record,
+              base::OnceCallback<void(base::Optional<base::Value>)> callback) {
+            std::move(callback).Run(ValueFromSucceededSequencingInfo(
+                record.sequencing_information()));
             client_waiter.Signal();
           })));
   EXPECT_CALL(*client_, UploadEncryptedReport(_, _, _))
-      .WillOnce(WithArgs<2>(
-          Invoke([&client_waiter](base::OnceCallback<void(bool)> callback) {
-            std::move(callback).Run(false);
+      .WillOnce(WithArgs<2>(Invoke(
+          [&client_waiter](
+              base::OnceCallback<void(base::Optional<base::Value>)> callback) {
+            std::move(callback).Run(base::nullopt);
             client_waiter.Signal();
           })));
 
diff --git a/chrome/browser/policy/messaging_layer/upload/upload_client_unittest.cc b/chrome/browser/policy/messaging_layer/upload/upload_client_unittest.cc
index 723d8dc..3e06754a 100644
--- a/chrome/browser/policy/messaging_layer/upload/upload_client_unittest.cc
+++ b/chrome/browser/policy/messaging_layer/upload/upload_client_unittest.cc
@@ -119,6 +119,21 @@
   std::atomic<size_t> counter_limit_;
 };
 
+// Helper function composes JSON represented as base::Value from Sequencing
+// information.
+base::Value ValueFromSucceededSequencingInfo(
+    const SequencingInformation& sequencing_information) {
+  base::Value sequencing_info(base::Value::Type::DICTIONARY);
+  sequencing_info.SetIntKey("sequencingId",
+                            sequencing_information.sequencing_id());
+  sequencing_info.SetIntKey("generationId",
+                            sequencing_information.generation_id());
+  sequencing_info.SetIntKey("priority", sequencing_information.priority());
+  base::Value result(base::Value::Type::DICTIONARY);
+  result.SetPath("lastSucceedUploadedRecord", std::move(sequencing_info));
+  return result;
+}
+
 class UploadClientTest : public ::testing::Test {
  public:
   UploadClientTest() = default;
@@ -195,9 +210,11 @@
       policy::DMToken::CreateValidTokenForTesting("FAKE_DM_TOKEN").value());
 
   EXPECT_CALL(*client, UploadEncryptedReport(_, _, _))
-      .WillRepeatedly(WithArgs<2>(
-          Invoke([&waiter](base::OnceCallback<void(bool)> callback) {
-            std::move(callback).Run(true);
+      .WillRepeatedly(WithArgs<0, 2>(Invoke(
+          [&waiter](const ::reporting::EncryptedRecord& record,
+                    policy::CloudPolicyClient::ResponseCallback callback) {
+            std::move(callback).Run(ValueFromSucceededSequencingInfo(
+                record.sequencing_information()));
             base::ThreadPool::PostTask(
                 FROM_HERE, {base::TaskPriority::BEST_EFFORT},
                 base::BindOnce(&TestCallbackWaiterWithCounter::Signal,
diff --git a/chrome/browser/portal/DIR_METADATA b/chrome/browser/portal/DIR_METADATA
new file mode 100644
index 0000000..0024ac5
--- /dev/null
+++ b/chrome/browser/portal/DIR_METADATA
@@ -0,0 +1,3 @@
+monorail:  {
+  component:  "Blink>Portals"
+}
diff --git a/chrome/browser/portal/OWNERS b/chrome/browser/portal/OWNERS
index 1c33ce23..471d286 100644
--- a/chrome/browser/portal/OWNERS
+++ b/chrome/browser/portal/OWNERS
@@ -1,3 +1 @@
 file://third_party/blink/renderer/core/html/portal/OWNERS
-
-# COMPONENT: Blink>Portals
diff --git a/chrome/browser/predictors/DIR_METADATA b/chrome/browser/predictors/DIR_METADATA
new file mode 100644
index 0000000..fe82ff61
--- /dev/null
+++ b/chrome/browser/predictors/DIR_METADATA
@@ -0,0 +1,3 @@
+monorail:  {
+  component:  "Internals>Preload"
+}
diff --git a/chrome/browser/predictors/OWNERS b/chrome/browser/predictors/OWNERS
index 79e9d4d..b211e7b 100644
--- a/chrome/browser/predictors/OWNERS
+++ b/chrome/browser/predictors/OWNERS
@@ -4,5 +4,3 @@
 pasko@chromium.org
 sophiechang@chromium.org
 tbansal@chromium.org
-
-# COMPONENT: Internals>Preload
diff --git a/chrome/browser/preferences/DIR_METADATA b/chrome/browser/preferences/DIR_METADATA
new file mode 100644
index 0000000..edff49c
--- /dev/null
+++ b/chrome/browser/preferences/DIR_METADATA
@@ -0,0 +1,3 @@
+monorail:  {
+  component:  "Internals>Preferences"
+}
diff --git a/chrome/browser/preferences/OWNERS b/chrome/browser/preferences/OWNERS
index 7ba5fcf..6885464 100644
--- a/chrome/browser/preferences/OWNERS
+++ b/chrome/browser/preferences/OWNERS
@@ -1,4 +1,2 @@
 chouinard@chromium.org
 hnakashima@chromium.org
-
-# COMPONENT: Internals>Preferences
diff --git a/chrome/browser/preferences/android/java/src/org/chromium/chrome/browser/preferences/DIR_METADATA b/chrome/browser/preferences/android/java/src/org/chromium/chrome/browser/preferences/DIR_METADATA
new file mode 100644
index 0000000..edff49c
--- /dev/null
+++ b/chrome/browser/preferences/android/java/src/org/chromium/chrome/browser/preferences/DIR_METADATA
@@ -0,0 +1,3 @@
+monorail:  {
+  component:  "Internals>Preferences"
+}
diff --git a/chrome/browser/preferences/android/java/src/org/chromium/chrome/browser/preferences/OWNERS b/chrome/browser/preferences/android/java/src/org/chromium/chrome/browser/preferences/OWNERS
index 2686a87..20d579c8 100644
--- a/chrome/browser/preferences/android/java/src/org/chromium/chrome/browser/preferences/OWNERS
+++ b/chrome/browser/preferences/android/java/src/org/chromium/chrome/browser/preferences/OWNERS
@@ -1,5 +1,3 @@
 # For simple additions and deprecations.
 per-file ChromePreferenceKeys.java=*
 per-file DeprecatedChromePreferenceKeys.java=*
-
-# COMPONENT: Internals>Preferences
diff --git a/chrome/browser/prefetch/DIR_METADATA b/chrome/browser/prefetch/DIR_METADATA
new file mode 100644
index 0000000..fe82ff61
--- /dev/null
+++ b/chrome/browser/prefetch/DIR_METADATA
@@ -0,0 +1,3 @@
+monorail:  {
+  component:  "Internals>Preload"
+}
diff --git a/chrome/browser/prefetch/OWNERS b/chrome/browser/prefetch/OWNERS
index c4cfc80..13a612e 100644
--- a/chrome/browser/prefetch/OWNERS
+++ b/chrome/browser/prefetch/OWNERS
@@ -1,3 +1 @@
 file://components/no_state_prefetch/OWNERS
-
-# COMPONENT: Internals>Preload
diff --git a/chrome/browser/prefetch/no_state_prefetch/DIR_METADATA b/chrome/browser/prefetch/no_state_prefetch/DIR_METADATA
new file mode 100644
index 0000000..430a851
--- /dev/null
+++ b/chrome/browser/prefetch/no_state_prefetch/DIR_METADATA
@@ -0,0 +1,3 @@
+monorail:  {
+  component:  "Internals>Preload>NoStatePrefetch"
+}
diff --git a/chrome/browser/prefetch/no_state_prefetch/OWNERS b/chrome/browser/prefetch/no_state_prefetch/OWNERS
index d9a532d..13a612e 100644
--- a/chrome/browser/prefetch/no_state_prefetch/OWNERS
+++ b/chrome/browser/prefetch/no_state_prefetch/OWNERS
@@ -1,3 +1 @@
 file://components/no_state_prefetch/OWNERS
-
-# COMPONENT: Internals>Preload>NoStatePrefetch
diff --git a/chrome/browser/prefetch/prefetch_proxy/DIR_METADATA b/chrome/browser/prefetch/prefetch_proxy/DIR_METADATA
new file mode 100644
index 0000000..51b346e8
--- /dev/null
+++ b/chrome/browser/prefetch/prefetch_proxy/DIR_METADATA
@@ -0,0 +1,3 @@
+monorail:  {
+  component:  "Internals>Preload>PrefetchProxy"
+}
diff --git a/chrome/browser/prefetch/prefetch_proxy/OWNERS b/chrome/browser/prefetch/prefetch_proxy/OWNERS
index 8578960..12f637f 100644
--- a/chrome/browser/prefetch/prefetch_proxy/OWNERS
+++ b/chrome/browser/prefetch/prefetch_proxy/OWNERS
@@ -1,3 +1 @@
 robertogden@chromium.org
-
-# COMPONENT: Internals>Preload>PrefetchProxy
diff --git a/chrome/browser/prefs/browser_prefs.cc b/chrome/browser/prefs/browser_prefs.cc
index ef712056..f74f5b50e 100644
--- a/chrome/browser/prefs/browser_prefs.cc
+++ b/chrome/browser/prefs/browser_prefs.cc
@@ -504,6 +504,15 @@
 // Deprecated 11/2020
 const char kDRMSalt[] = "settings.privacy.drm_salt";
 
+#if BUILDFLAG(IS_CHROMEOS_ASH)
+// Deprecated 12/2020
+const char kAssistantPrivacyInfoShownInLauncher[] =
+    "ash.launcher.assistant_privacy_info_shown";
+
+const char kAssistantPrivacyInfoDismissedInLauncher[] =
+    "ash.launcher.assistant_privacy_info_dismissed";
+#endif  // BUILDFLAG(IS_CHROMEOS_ASH)
+
 // Register local state used only for migration (clearing or moving to a new
 // key).
 void RegisterLocalStatePrefsForMigration(PrefRegistrySimple* registry) {
@@ -591,6 +600,12 @@
 
   registry->RegisterIntegerPref(kSettingsLaunchedPasswordChecks, 0);
   registry->RegisterStringPref(kDRMSalt, "");
+
+#if BUILDFLAG(IS_CHROMEOS_ASH)
+  registry->RegisterIntegerPref(kAssistantPrivacyInfoShownInLauncher, 0);
+  registry->RegisterBooleanPref(kAssistantPrivacyInfoDismissedInLauncher,
+                                false);
+#endif  // BUILDFLAG(IS_CHROMEOS_ASH)
 }
 
 }  // namespace
@@ -1226,6 +1241,10 @@
 #if BUILDFLAG(IS_CHROMEOS_ASH)
   // Added 11/2020.
   profile_prefs->ClearPref(kSupervisedUserAllowlists);
+
+  // Added 12/2020
+  profile_prefs->ClearPref(kAssistantPrivacyInfoShownInLauncher);
+  profile_prefs->ClearPref(kAssistantPrivacyInfoDismissedInLauncher);
 #endif  // BUILDFLAG(IS_CHROMEOS_ASH)
 
   // Please don't delete the following line. It is used by PRESUBMIT.py.
diff --git a/chrome/browser/renderer_context_menu/render_view_context_menu.cc b/chrome/browser/renderer_context_menu/render_view_context_menu.cc
index bee19f6..c5eaefc 100644
--- a/chrome/browser/renderer_context_menu/render_view_context_menu.cc
+++ b/chrome/browser/renderer_context_menu/render_view_context_menu.cc
@@ -146,6 +146,7 @@
 #include "mojo/public/cpp/bindings/associated_remote.h"
 #include "net/base/escape.h"
 #include "net/traffic_annotation/network_traffic_annotation.h"
+#include "pdf/buildflags.h"
 #include "ppapi/buildflags/buildflags.h"
 #include "printing/buildflags/buildflags.h"
 #include "services/service_manager/public/cpp/interface_provider.h"
@@ -186,6 +187,10 @@
 #include "extensions/common/extension.h"
 #endif
 
+#if BUILDFLAG(ENABLE_PDF)
+#include "extensions/common/constants.h"
+#endif
+
 #if BUILDFLAG(ENABLE_PLUGINS)
 #include "chrome/browser/plugins/chrome_plugin_service_filter.h"
 #endif
@@ -563,6 +568,13 @@
   }
 }
 
+#if BUILDFLAG(ENABLE_PDF)
+bool IsPdfPluginURL(const GURL& url) {
+  return url.SchemeIs(extensions::kExtensionScheme) &&
+         url.host_piece() == extension_misc::kPdfExtensionId;
+}
+#endif
+
 }  // namespace
 
 // static
@@ -1059,7 +1071,7 @@
 }
 
 bool RenderViewContextMenu::IsHTML5Fullscreen() const {
-  Browser* browser = chrome::FindBrowserWithWebContents(source_web_contents_);
+  Browser* browser = chrome::FindBrowserWithWebContents(embedder_web_contents_);
   if (!browser)
     return false;
 
@@ -2014,8 +2026,17 @@
               WebContextMenuData::kMediaCanToggleControls) != 0;
 
     case IDC_CONTENT_CONTEXT_ROTATECW:
-    case IDC_CONTENT_CONTEXT_ROTATECCW:
-      return (params_.media_flags & WebContextMenuData::kMediaCanRotate) != 0;
+    case IDC_CONTENT_CONTEXT_ROTATECCW: {
+      bool is_pdf_viewer_fullscreen = false;
+#if BUILDFLAG(ENABLE_PDF)
+      // Rotate commands should be disabled when in PDF Viewer's Presentation
+      // mode.
+      is_pdf_viewer_fullscreen =
+          IsPdfPluginURL(GetDocumentURL(params_)) && IsHTML5Fullscreen();
+#endif
+      return !is_pdf_viewer_fullscreen &&
+             (params_.media_flags & WebContextMenuData::kMediaCanRotate) != 0;
+    }
 
     case IDC_CONTENT_CONTEXT_COPYAVLOCATION:
     case IDC_CONTENT_CONTEXT_COPYIMAGELOCATION:
diff --git a/chrome/browser/renderer_context_menu/render_view_context_menu_browsertest.cc b/chrome/browser/renderer_context_menu/render_view_context_menu_browsertest.cc
index 44244787..f418c15b 100644
--- a/chrome/browser/renderer_context_menu/render_view_context_menu_browsertest.cc
+++ b/chrome/browser/renderer_context_menu/render_view_context_menu_browsertest.cc
@@ -313,6 +313,36 @@
     return test_guest_view_manager_;
   }
 
+  std::unique_ptr<TestRenderViewContextMenu> SetupAndCreateMenu() {
+    // Load a pdf page.
+    GURL page_url = ui_test_utils::GetTestUrl(
+        base::FilePath(FILE_PATH_LITERAL("pdf")),
+        base::FilePath(FILE_PATH_LITERAL("test.pdf")));
+    ui_test_utils::NavigateToURL(browser(), page_url);
+
+    WebContents* web_contents =
+        browser()->tab_strip_model()->GetActiveWebContents();
+    // Wait for the PDF plugin to load.
+    EXPECT_TRUE(pdf_extension_test_util::EnsurePDFHasLoaded(web_contents));
+    content::BrowserPluginGuestManager* guest_manager =
+        web_contents->GetBrowserContext()->GetGuestManager();
+    WebContents* guest_contents = guest_manager->GetFullPageGuest(web_contents);
+    EXPECT_TRUE(guest_contents);
+    // Get the pdf plugin's main frame.
+    content::RenderFrameHost* frame = guest_contents->GetMainFrame();
+    EXPECT_TRUE(frame);
+    EXPECT_NE(frame, web_contents->GetMainFrame());
+
+    content::ContextMenuParams params;
+    params.page_url = page_url;
+    params.frame_url = frame->GetLastCommittedURL();
+    params.media_type = blink::ContextMenuDataMediaType::kPlugin;
+    params.media_flags |= blink::WebContextMenuData::kMediaCanRotate;
+    auto menu = std::make_unique<TestRenderViewContextMenu>(frame, params);
+    menu->Init();
+    return menu;
+  }
+
   // Helper function for testing context menu of a pdf plugin inside a web page.
   void TestContextMenuOfPdfInsideWebPage(
       const base::FilePath::CharType* file_name) {
@@ -1406,34 +1436,29 @@
 
 IN_PROC_BROWSER_TEST_F(PdfPluginContextMenuBrowserTest,
                        FullPagePdfHasPageItems) {
-  // Load a pdf page.
-  GURL page_url =
-      ui_test_utils::GetTestUrl(base::FilePath(FILE_PATH_LITERAL("pdf")),
-                                base::FilePath(FILE_PATH_LITERAL("test.pdf")));
-  ui_test_utils::NavigateToURL(browser(), page_url);
-
-  WebContents* web_contents =
-      browser()->tab_strip_model()->GetActiveWebContents();
-  // Wait for the PDF plugin to load.
-  ASSERT_TRUE(pdf_extension_test_util::EnsurePDFHasLoaded(web_contents));
-  content::BrowserPluginGuestManager* guest_manager =
-      web_contents->GetBrowserContext()->GetGuestManager();
-  WebContents* guest_contents = guest_manager->GetFullPageGuest(web_contents);
-  ASSERT_TRUE(guest_contents);
-  // Get the pdf plugin's main frame.
-  content::RenderFrameHost* frame = guest_contents->GetMainFrame();
-  ASSERT_TRUE(frame);
-  ASSERT_NE(frame, web_contents->GetMainFrame());
-
-  content::ContextMenuParams params;
-  params.page_url = page_url;
-  params.frame_url = frame->GetLastCommittedURL();
-  params.media_type = blink::ContextMenuDataMediaType::kPlugin;
-  TestRenderViewContextMenu menu(frame, params);
-  menu.Init();
+  std::unique_ptr<TestRenderViewContextMenu> menu = SetupAndCreateMenu();
 
   // The full page related items such as 'reload' should be there.
-  ASSERT_TRUE(menu.IsItemPresent(IDC_RELOAD));
+  ASSERT_TRUE(menu->IsItemPresent(IDC_RELOAD));
+}
+
+IN_PROC_BROWSER_TEST_F(PdfPluginContextMenuBrowserTest,
+                       FullPagePdfFullscreenItems) {
+  std::unique_ptr<TestRenderViewContextMenu> menu = SetupAndCreateMenu();
+
+  // Test that the 'Rotate' items exist and are enabled.
+  ASSERT_TRUE(menu->IsItemPresent(IDC_CONTENT_CONTEXT_ROTATECW));
+  ASSERT_TRUE(menu->IsItemPresent(IDC_CONTENT_CONTEXT_ROTATECCW));
+  ASSERT_TRUE(menu->IsCommandIdEnabled(IDC_CONTENT_CONTEXT_ROTATECW));
+  ASSERT_TRUE(menu->IsCommandIdEnabled(IDC_CONTENT_CONTEXT_ROTATECCW));
+
+  // Set to tab fullscreen, and test that 'Rotate' items are disabled.
+  FullscreenController* fullscreen_controller =
+      browser()->exclusive_access_manager()->fullscreen_controller();
+  fullscreen_controller->set_is_tab_fullscreen_for_testing(true);
+
+  ASSERT_FALSE(menu->IsCommandIdEnabled(IDC_CONTENT_CONTEXT_ROTATECW));
+  ASSERT_FALSE(menu->IsCommandIdEnabled(IDC_CONTENT_CONTEXT_ROTATECCW));
 }
 
 IN_PROC_BROWSER_TEST_F(PdfPluginContextMenuBrowserTest,
diff --git a/chrome/browser/resources/chromeos/accessibility/select_to_speak/mock_tts.js b/chrome/browser/resources/chromeos/accessibility/select_to_speak/mock_tts.js
index 2206501..7418cab2 100644
--- a/chrome/browser/resources/chromeos/accessibility/select_to_speak/mock_tts.js
+++ b/chrome/browser/resources/chromeos/accessibility/select_to_speak/mock_tts.js
@@ -60,6 +60,17 @@
       this.options_.onEvent({type: 'end'});
     }
   },
+  /**
+   * Mock the speaking process of TTS, and simulate a word end event.
+   * @param {number} nextStartIndex The start char index of the word to be
+   *     spoken.
+   */
+  speakUntilCharIndex(nextStartIndex) {
+    this.currentlySpeaking_ = true;
+    if (this.options_) {
+      this.options_.onEvent({type: 'word', charIndex: nextStartIndex});
+    }
+  },
   stop() {
     this.pendingUtterances_ = [];
     this.currentlySpeaking_ = false;
diff --git a/chrome/browser/resources/chromeos/accessibility/select_to_speak/select_to_speak.js b/chrome/browser/resources/chromeos/accessibility/select_to_speak/select_to_speak.js
index 50666acf..0a6fd124 100644
--- a/chrome/browser/resources/chromeos/accessibility/select_to_speak/select_to_speak.js
+++ b/chrome/browser/resources/chromeos/accessibility/select_to_speak/select_to_speak.js
@@ -66,6 +66,21 @@
      */
     this.state_ = SelectToSpeakState.INACTIVE;
 
+    /**
+     * Whether the TTS is on pause. When |this.state_| is
+     * SelectToSpeakState.SPEAKING, |this.paused_| indicates whether we are
+     * putting TTS on hold.
+     * TODO(leileilei): use SelectToSpeakState.PAUSE to indicate the status.
+     * @private {boolean}
+     */
+    this.ttsPaused_ = false;
+
+    /**
+     * Function to be called when STS finishes a pausing request.
+     * @private {?function()}
+     */
+    this.pauseCompleteCallback_ = null;
+
     /** @type {InputHandler} */
     this.inputHandler_ = null;
 
@@ -165,6 +180,14 @@
       currentEndCharIndex: undefined,
     };
 
+    /**
+     * The position of the current focus ring, which usually highlights the
+     * entire paragraph. Keep this as a member variable so that the control
+     * panel can be updated easily.
+     * @private {!Array<!chrome.accessibilityPrivate.ScreenRect>}
+     */
+    this.currentFocusRing_ = [];
+
     /** @private {?AutomationNode} */
     this.currentBlockParent_ = null;
 
@@ -557,6 +580,62 @@
   }
 
   /**
+   * Whether the STS is on a pause state, where |this.ttsPaused_| is true and
+   * |this.state_| is SPEAKING.
+   * @private
+   * TODO(leileilei): use SelectToSpeakState.PAUSE to indicate the status.
+   */
+  isPaused_() {
+    return this.ttsPaused_ && this.state_ === SelectToSpeakState.SPEAKING;
+  }
+
+  /**
+   * Set |this.ttsPaused_| and |this.state_| according to pause status.
+   * @param {boolean} shouldPause whether the TTS is on pause or speaking.
+   * @private
+   * TODO(leileilei): use SelectToSpeakState.PAUSE to indicate the status.
+   */
+  updatePauseStatusFromTtsEvent_(shouldPause) {
+    this.ttsPaused_ = shouldPause;
+    this.onStateChanged_(SelectToSpeakState.SPEAKING);
+    if (shouldPause && this.pauseCompleteCallback_) {
+      this.pauseCompleteCallback_();
+    }
+  }
+
+  /**
+   * Pause the TTS. We do not assert isPaused_() before stopping TTS in case
+   * |this.ttsPaused_| was true while tts is speaking. This function also sets
+   * the |this.pauseCompleteCallback_|, which will be executed at the end of
+   * the pause process in |updatePauseStatusFromTtsEvent_|. This enables us to
+   * execute functions when the pause request is finished. For example, we can
+   * adjust |this.navigationState_| after a pause is fulfilled, and then resume
+   * to navigate to different positions.
+   * @return {!Promise}
+   * @private
+   */
+  pause_() {
+    return new Promise((resolve) => {
+      this.pauseCompleteCallback_ = () => {
+        this.pauseCompleteCallback_ = null;
+        resolve();
+      };
+      chrome.tts.stop();
+    });
+  }
+
+  /**
+   * Resume the TTS. Currently, we just ask the TTS engine to pick up where it
+   * quited last time in |this.startCurrentNodeGroup_|.
+   * @private
+   */
+  resume_() {
+    if (this.isPaused_()) {
+      this.startCurrentNodeGroup_();
+    }
+  }
+
+  /**
    * Stop speech. If speech was in-progress, the interruption
    * event will be caught and clearFocusRingAndNode_ will be
    * called, stopping visual feedback as well.
@@ -603,6 +682,25 @@
   }
 
   /**
+   * Update the navigation floating panel.
+   * @private
+   */
+  updateNavigationPanel_() {
+    if (this.shouldShowNavigationControls_() && this.currentFocusRing_.length) {
+      // If the feature is enabled and we have a valid focus ring, flip the
+      // pause and resume button according to the current STS and TTS state.
+      // Also, update the location of the panel according to the focus ring.
+      chrome.accessibilityPrivate.updateSelectToSpeakPanel(
+          /* show= */ true, /* anchor= */ this.currentFocusRing_[0],
+          /* isPaused= */ this.isPaused_(), /* speed= */ 1.2);
+    } else {
+      // Dismiss the panel if either the feature is disabled or the focus ring
+      // is not valid.
+      chrome.accessibilityPrivate.updateSelectToSpeakPanel(/* show= */ false);
+    }
+  }
+
+  /**
    * Clears the focus ring, but does not clear the current
    * node.
    * @private
@@ -611,9 +709,7 @@
     this.setFocusRings_([], false /* do not draw background */);
     chrome.accessibilityPrivate.setHighlights(
         [], this.prefsManager_.highlightColor());
-    if (this.shouldShowNavigationControls_()) {
-      chrome.accessibilityPrivate.updateSelectToSpeakPanel(/* show= */ false);
-    }
+    this.updateNavigationPanel_();
   }
 
   /**
@@ -624,6 +720,7 @@
    * @private
    */
   setFocusRings_(rects, drawBackground) {
+    this.currentFocusRing_ = rects;
     let color = '#0000';  // Fully transparent.
     if (drawBackground && this.prefsManager_.backgroundShadingEnabled()) {
       color = DEFAULT_BACKGROUND_SHADING_COLOR;
@@ -766,6 +863,12 @@
       case SelectToSpeakPanelAction.EXIT:
         this.stopAll_();
         break;
+      case SelectToSpeakPanelAction.PAUSE:
+        this.pause_();
+        break;
+      case SelectToSpeakPanelAction.RESUME:
+        this.resume_();
+        break;
       default:
         // TODO(crbug.com/1140216): Implement other actions.
     }
@@ -962,7 +1065,7 @@
 
     options.onEvent = (event) => {
       if (event.type === 'start' && nodeGroup.nodes.length > 0) {
-        this.onStateChanged_(SelectToSpeakState.SPEAKING);
+        this.updatePauseStatusFromTtsEvent_(false /* shouldPause */);
         this.currentBlockParent_ = nodeGroup.blockParent;
 
         // Update |currentCharIndex|. Find the first non-space char index in
@@ -989,9 +1092,16 @@
           this.testCurrentNode_();
         }
       } else if (event.type === 'interrupted' || event.type === 'cancelled') {
-        if (!this.shouldShowNavigationControls_()) {
-          // Auto dismiss when navigation control is not enabled.
+        if (!this.shouldShowNavigationControls_() ||
+            !this.pauseCompleteCallback_) {
+          // Auto dismiss when navigation control is not enabled. In addition,
+          // if the interrupted or cancelled events are not triggered by
+          // |this.pause_| (e.g., from stopAll_), we should leave STS as
+          // INACTIVE. Currently, we check |this.pauseCompleteCallback_| as a
+          // proxy to see if the interrupted events are from |this.pause_|.
           this.onStateChanged_(SelectToSpeakState.INACTIVE);
+        } else {
+          this.updatePauseStatusFromTtsEvent_(true /* shouldPause */);
         }
       } else if (event.type === 'end') {
         this.startNodeGroupAfter_(
@@ -1166,6 +1276,9 @@
       }
     } else {
       this.currentNodeWord_ = null;
+      // There are many cases where we won't update the node highlight or test
+      // the node. Thus, we need to update the panel independently.
+      this.updateNavigationPanel_();
     }
   }
 
@@ -1318,14 +1431,7 @@
       focusRingRect = node.location;
     }
     this.setFocusRings_([focusRingRect], true /* draw background */);
-    if (this.shouldShowNavigationControls_()) {
-      // TODO(crbug.com/1143817): Update paused state correctly once
-      // pause/resume functionality is implemented.
-      // TODO(crbug.com/): Set actual initial speed.
-      chrome.accessibilityPrivate.updateSelectToSpeakPanel(
-          /* show= */ true, /* anchor= */ focusRingRect, /* isPaused= */ false,
-          /* speed= */ 1.2);
-    }
+    this.updateNavigationPanel_();
   }
 
   /**
diff --git a/chrome/browser/resources/chromeos/accessibility/select_to_speak/select_to_speak_navigation_control_test.js b/chrome/browser/resources/chromeos/accessibility/select_to_speak/select_to_speak_navigation_control_test.js
index 8e7b468..f0795a8 100644
--- a/chrome/browser/resources/chromeos/accessibility/select_to_speak/select_to_speak_navigation_control_test.js
+++ b/chrome/browser/resources/chromeos/accessibility/select_to_speak/select_to_speak_navigation_control_test.js
@@ -141,3 +141,34 @@
         this.triggerReadMouseSelectedText(event1, event1);
       });
     });
+
+TEST_F('SelectToSpeakNavigationControlTest', 'PauseAndResume', function() {
+  const bodyHtml = `
+      <p id="p1">Paragraph 1</p>'
+    `;
+  this.runWithLoadedTree(
+      this.generateHtmlWithSelectedElement('p1', bodyHtml), () => {
+        this.triggerReadSelectedText();
+
+        // Speaks the first word.
+        this.mockTts.speakUntilCharIndex(10);
+        assertTrue(this.mockTts.currentlySpeaking());
+        assertEquals(this.mockTts.pendingUtterances().length, 1);
+        this.assertEqualsCollapseWhitespace(
+            this.mockTts.pendingUtterances()[0], 'Paragraph 1');
+
+        // Hitting pause will stop the current TTS.
+        selectToSpeak.onSelectToSpeakPanelAction_(
+            chrome.accessibilityPrivate.SelectToSpeakPanelAction.PAUSE);
+        assertFalse(this.mockTts.currentlySpeaking());
+        assertEquals(this.mockTts.pendingUtterances().length, 0);
+
+        // Hitting resume will start from the next position.
+        selectToSpeak.onSelectToSpeakPanelAction_(
+            chrome.accessibilityPrivate.SelectToSpeakPanelAction.RESUME);
+        assertTrue(this.mockTts.currentlySpeaking());
+        assertEquals(this.mockTts.pendingUtterances().length, 1);
+        this.assertEqualsCollapseWhitespace(
+            this.mockTts.pendingUtterances()[0], '1');
+      });
+});
diff --git a/chrome/browser/resources/media/media_feeds.html b/chrome/browser/resources/media/media_feeds.html
index 53913a9..460901f 100644
--- a/chrome/browser/resources/media/media_feeds.html
+++ b/chrome/browser/resources/media/media_feeds.html
@@ -158,6 +158,9 @@
         <th data-key="safeSearchResult">
           Safe Search Result
         </th>
+        <th data-key="favicon">
+          Favicon
+        </th>
         <th data-key="logos">
           Logos
         </th>
diff --git a/chrome/browser/resources/media/media_feeds.js b/chrome/browser/resources/media/media_feeds.js
index e7dabd9f..2414942 100644
--- a/chrome/browser/resources/media/media_feeds.js
+++ b/chrome/browser/resources/media/media_feeds.js
@@ -332,6 +332,8 @@
           td.textContent += ' Image=' + data.image.src.url;
         }
       }
+    } else if (key === 'favicon') {
+      td.textContent = data.url;
     } else {
       td.textContent = data;
     }
diff --git a/chrome/browser/resources/nearby_share/shared/nearby_onboarding_page.html b/chrome/browser/resources/nearby_share/shared/nearby_onboarding_page.html
index 70f66a8d5..301ee2f 100644
--- a/chrome/browser/resources/nearby_share/shared/nearby_onboarding_page.html
+++ b/chrome/browser/resources/nearby_share/shared/nearby_onboarding_page.html
@@ -13,21 +13,28 @@
     <style include="cr-icons cr-shared-style"></style>
     <style>
       #center-content {
+        align-items: center;
         box-sizing: border-box;
         display: flex;
         flex-grow: 1;
-        justify-content: center;
+        justify-content: space-between;
+        margin: 0 24px;
         overflow: hidden;
       }
 
       #splash-image-column {
         height: 200px;
-        margin: 10px;
+        margin: 8px;
         width: 200px;
       }
 
       #device-name-column {
-        margin: 10px;
+        display: flex;
+        flex-direction: column;
+        margin: 8px;
+        position: relative;
+        top: -12px;
+        width: calc(50% - 16px);
       }
 
       #link-row {
@@ -35,8 +42,13 @@
         border-radius: 5px;
       }
 
-      #deviceName {
-        margin-top: 60px;
+      #deviceNameHelp {
+        bottom: 8px;
+        color: var(--google-grey-600);
+        font-size: 10px;
+        line-height: 10px;
+        margin-inline-start: 8px;
+        position: absolute;
       }
 
       #device-name-group {
@@ -60,8 +72,15 @@
           <cr-input label="$i18n{nearbyShareOnboardingPageDeviceName}"
               id="deviceName" value="[[settings.deviceName]]"
               on-input="onDeviceNameInput_" error-message="[[errorMessage]]"
-              invalid="[[hasErrorMessage_(errorMessage)]]">
+              invalid="[[hasErrorMessage_(errorMessage)]]"
+              aria-label="$i18n{nearbyShareOnboardingPageDeviceName}
+                  $i18n{nearbyShareOnboardingPageDeviceNameHelp}">
           </cr-input>
+          <!-- TODO(crbug.com/1155756) move this help text into cr-input -->
+          <div id="deviceNameHelp" hidden="[[hasErrorMessage_(errorMessage)]]"
+            aria-hidden="true">
+            $i18n{nearbyShareOnboardingPageDeviceNameHelp}
+          </div>
         </div>
       </div>
     </nearby-page-template>
diff --git a/chrome/browser/resources/new_tab_page/app.html b/chrome/browser/resources/new_tab_page/app.html
index d13639a8..482e801b6 100644
--- a/chrome/browser/resources/new_tab_page/app.html
+++ b/chrome/browser/resources/new_tab_page/app.html
@@ -349,7 +349,7 @@
 <dom-if if="[[lazyRender_]]" restamp>
   <template>
     <cr-toast id="dismissModuleToast" duration="10000">
-      <div id="dismissModuleToastMessage">[[dismissModuleToastMessage_]]</div>
+      <div id="dismissModuleToastMessage">[[dismissedModuleData_.message]]</div>
       <cr-button id="undoDismissModuleButton"
           aria-label="$i18n{undoDescription}"
           on-click="onUndoDismissModuleButtonClick_">
diff --git a/chrome/browser/resources/new_tab_page/app.js b/chrome/browser/resources/new_tab_page/app.js
index 76645c8..a054f731 100644
--- a/chrome/browser/resources/new_tab_page/app.js
+++ b/chrome/browser/resources/new_tab_page/app.js
@@ -248,21 +248,15 @@
       moduleDescriptors_: Object,
 
       /**
-       * The <ntp-module-wrapper> element of the last dismissed module.
-       * @type {?Element}
+       * Data about the most recently dismissed module.
+       * @type {?{id: string, element: !Element, message: string,
+       *     restoreCallback: function()}}
        * @private
        */
-      dismissedModuleWrapper_: {
+      dismissedModuleData_: {
         type: Object,
         value: null,
       },
-
-      /**
-       * The message shown in the toast when a module is dismissed.
-       * @type {string}
-       * @private
-       */
-      dismissModuleToastMessage_: String,
     };
   }
 
@@ -885,19 +879,25 @@
   }
 
   /**
-   * @param {!CustomEvent<string>} e Event notifying a module was dismissed.
-   *     Contains the message to show in the toast.
+   * @param {!CustomEvent<{message: string, restoreCallback: function()}>} e
+   *     Event notifying a module was dismissed. Contains the message to show in
+   *     the toast.
    * @private
    */
   onDismissModule_(e) {
-    this.dismissedModuleWrapper_ = /** @type {!Element} */ (e.target);
+    this.dismissedModuleData_ = {
+      id: $$(this, '#modules').itemForElement(e.target).id,
+      element: /** @type {!Element} */ (e.target),
+      message: loadTimeData.getStringF(
+          'dismissModuleToastMessage', e.detail.message),
+      restoreCallback: e.detail.restoreCallback,
+    };
+    this.dismissedModuleData_.element.hidden = true;
 
     // Notify the user.
-    this.dismissModuleToastMessage_ = e.detail;
     $$(this, '#dismissModuleToast').show();
     // Notify the backend.
-    this.pageHandler_.onDismissModule(
-        this.dismissedModuleWrapper_.descriptor.id);
+    this.pageHandler_.onDismissModule(this.dismissedModuleData_.id);
   }
 
   /**
@@ -905,14 +905,15 @@
    */
   onUndoDismissModuleButtonClick_() {
     // Restore the module.
-    this.dismissedModuleWrapper_.restore();
+    this.dismissedModuleData_.restoreCallback();
+    this.dismissedModuleData_.element.hidden = false;
+
     // Notify the user.
     $$(this, '#dismissModuleToast').hide();
     // Notify the backend.
-    this.pageHandler_.onRestoreModule(
-        this.dismissedModuleWrapper_.descriptor.id);
+    this.pageHandler_.onRestoreModule(this.dismissedModuleData_.id);
 
-    this.dismissedModuleWrapper_ = null;
+    this.dismissedModuleData_ = null;
   }
 
   /**
diff --git a/chrome/browser/resources/new_tab_page/modules/BUILD.gn b/chrome/browser/resources/new_tab_page/modules/BUILD.gn
index 50f191d..8aad5ce 100644
--- a/chrome/browser/resources/new_tab_page/modules/BUILD.gn
+++ b/chrome/browser/resources/new_tab_page/modules/BUILD.gn
@@ -29,6 +29,12 @@
   ]
 }
 
+js_library("module_header") {
+  deps = [
+    "//third_party/polymer/v3_0/components-chromium/polymer:polymer_bundled",
+  ]
+}
+
 js_library("module_registry") {
   deps = [
     ":module_descriptor",
@@ -37,7 +43,10 @@
 }
 
 html_to_js("web_components_local") {
-  js_files = [ "module_wrapper.js" ]
+  js_files = [
+    "module_header.js",
+    "module_wrapper.js",
+  ]
 }
 
 group("web_components") {
@@ -76,6 +85,7 @@
     in_folder = target_gen_dir
     out_folder = "$target_gen_dir/$preprocess_folder"
     in_files = [
+      "module_header.js",
       "module_wrapper.js",
       "dummy/module.js",
       "task_module/module.js",
diff --git a/chrome/browser/resources/new_tab_page/modules/dummy/module.html b/chrome/browser/resources/new_tab_page/modules/dummy/module.html
index 1c21ec5..7da21dc 100644
--- a/chrome/browser/resources/new_tab_page/modules/dummy/module.html
+++ b/chrome/browser/resources/new_tab_page/modules/dummy/module.html
@@ -1,8 +1,19 @@
 <style>
+  :host {
+    width: 100%;
+  }
+
   cr-grid {
     --cr-grid-gap: 8px;
   }
 
+  #moduleContent {
+    align-items: center;
+    display: flex;
+    height: 260px;
+    justify-content: center;
+  }
+
   .tile-item {
     color: var(--cr-primary-text-color);
     height: 120px;
@@ -13,11 +24,14 @@
     border-radius: 8px;
   }
 </style>
-<cr-grid id="tiles" columns="3">
-  <template id="tileList" is="dom-repeat" items="[[tiles]]">
-    <div class="tile-item" title="[[item.label]]">
-      <img is="ntp-img" auto-src="[[item.imageUrl]]"></img>
-      <span>[[item.value]]</span>
-    </div>
-  </template>
-</cr-grid>
+<ntp-module-header module-id="[[id]]">[[title]]</ntp-module-header>
+<div id="moduleContent">
+  <cr-grid id="tiles" columns="3">
+    <template id="tileList" is="dom-repeat" items="[[tiles]]">
+      <div class="tile-item" title="[[item.label]]">
+        <img is="ntp-img" auto-src="[[item.imageUrl]]"></img>
+        <span>[[item.value]]</span>
+      </div>
+    </template>
+  </cr-grid>
+</div>
diff --git a/chrome/browser/resources/new_tab_page/modules/dummy/module.js b/chrome/browser/resources/new_tab_page/modules/dummy/module.js
index 28c83d3e..7ae904f 100644
--- a/chrome/browser/resources/new_tab_page/modules/dummy/module.js
+++ b/chrome/browser/resources/new_tab_page/modules/dummy/module.js
@@ -6,6 +6,7 @@
 
 import '../../img.js';
 import '../../strings.m.js';
+import '../module_header.js';
 
 import {loadTimeData} from 'chrome://resources/js/load_time_data.m.js';
 import {html, PolymerElement} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js';
@@ -29,8 +30,14 @@
 
   static get properties() {
     return {
+      /** @type {!string} */
+      id: String,
+
       /** @type {!Array<!foo.mojom.FooDataItem>} */
       tiles: Array,
+
+      /** @type {!string} */
+      title: String,
     };
   }
 
@@ -48,18 +55,26 @@
 
 customElements.define(DummyModuleElement.is, DummyModuleElement);
 
+/**
+ * @param {!string} id
+ * @param {!string} titleId
+ * @return {!DummyModuleElement}
+ */
+function createDummyElement(id, titleId) {
+  const element = new DummyModuleElement();
+  element.id = id;
+  element.title = loadTimeData.getString(titleId);
+  return element;
+}
+
 /** @type {!ModuleDescriptor} */
 export const dummyDescriptor = new ModuleDescriptor(
     /*id=*/ 'dummy',
-    /*heightPx=*/ 260, () => Promise.resolve({
-      element: new DummyModuleElement(),
-      title: loadTimeData.getString('modulesDummyTitle'),
-    }));
+    /*heightPx=*/ 314,
+    () => Promise.resolve(createDummyElement('dummy', 'modulesDummyTitle')));
 
 /** @type {!ModuleDescriptor} */
 export const dummyDescriptor2 = new ModuleDescriptor(
     /*id=*/ 'dummy2',
-    /*heightPx=*/ 260, () => Promise.resolve({
-      element: new DummyModuleElement(),
-      title: loadTimeData.getString('modulesDummy2Title'),
-    }));
+    /*heightPx=*/ 314,
+    () => Promise.resolve(createDummyElement('dummy2', 'modulesDummy2Title')));
diff --git a/chrome/browser/resources/new_tab_page/modules/kaleidoscope/externs.js b/chrome/browser/resources/new_tab_page/modules/kaleidoscope/externs.js
index 552315b..4c4232a 100644
--- a/chrome/browser/resources/new_tab_page/modules/kaleidoscope/externs.js
+++ b/chrome/browser/resources/new_tab_page/modules/kaleidoscope/externs.js
@@ -3,9 +3,6 @@
 // found in the LICENSE file.
 
 /**
- * @returns {Promise<?{
- *    element: !HTMLElement,
- *    title: string,
- *   }>}
+ * @returns {Promise<?HTMLElement>}
  */
 window.loadKaleidoscopeModule = () => {};
diff --git a/chrome/browser/resources/new_tab_page/modules/kaleidoscope/module.js b/chrome/browser/resources/new_tab_page/modules/kaleidoscope/module.js
index 2cc426e..c12cb48 100644
--- a/chrome/browser/resources/new_tab_page/modules/kaleidoscope/module.js
+++ b/chrome/browser/resources/new_tab_page/modules/kaleidoscope/module.js
@@ -13,7 +13,7 @@
 /** @type {!ModuleDescriptor} */
 export const kaleidoscopeDescriptor = new ModuleDescriptor(
     /*id=*/ 'kaleidoscope',
-    /*heightPx=*/ 330,
+    /*heightPx=*/ 384,
     async () => {
       return loadKaleidoscopeModule();
     },
diff --git a/chrome/browser/resources/new_tab_page/modules/module_descriptor.js b/chrome/browser/resources/new_tab_page/modules/module_descriptor.js
index a77ab16d..8032f59 100644
--- a/chrome/browser/resources/new_tab_page/modules/module_descriptor.js
+++ b/chrome/browser/resources/new_tab_page/modules/module_descriptor.js
@@ -10,20 +10,7 @@
  */
 
 /**
- * @typedef {{
- *   info: (function()|undefined),
- *   dismiss: (function():string|undefined),
- *   restore: (function()|undefined),
- * }}
- */
-let Actions;
-
-/**
- * @typedef {function(): !Promise<?{
- *    element: !HTMLElement,
- *    title: string,
- *    actions: (undefined|Actions),
- *  }>}
+ * @typedef {function(): !Promise<?HTMLElement>}
  */
 let InitializeModuleCallback;
 
@@ -38,14 +25,10 @@
     this.id_ = id;
     /** @private {number} */
     this.heightPx_ = heightPx;
-    /** @private {?string} */
-    this.title_ = null;
     /** @private {HTMLElement} */
     this.element_ = null;
     /** @private {!InitializeModuleCallback} */
     this.initializeCallback_ = initializeCallback;
-    /** @private {?Actions} */
-    this.actions_ = null;
   }
 
   /** @return {string} */
@@ -58,29 +41,16 @@
     return this.heightPx_;
   }
 
-  /** @return {?string} */
-  get title() {
-    return this.title_;
-  }
-
   /** @return {?HTMLElement} */
   get element() {
     return this.element_;
   }
 
-  /** @return {?Actions} */
-  get actions() {
-    return this.actions_;
-  }
-
   async initialize() {
-    const info = await this.initializeCallback_();
-    if (!info) {
+    this.element_ = await this.initializeCallback_();
+    if (!this.element_) {
       return;
     }
-    this.title_ = info.title;
-    this.element_ = info.element;
-    this.actions_ = info.actions || null;
     BrowserProxy.getInstance().handler.onModuleLoaded(
         this.id_, BrowserProxy.getInstance().now());
   }
diff --git a/chrome/browser/resources/new_tab_page/modules/module_header.html b/chrome/browser/resources/new_tab_page/modules/module_header.html
new file mode 100644
index 0000000..04f70e7
--- /dev/null
+++ b/chrome/browser/resources/new_tab_page/modules/module_header.html
@@ -0,0 +1,37 @@
+<style include="cr-icons">
+  :host {
+    align-items: center;
+    display: flex;
+    height: 22px;
+    margin: 16px;
+  }
+
+  #title {
+    color: var(--cr-primary-text-color);
+    font-size: 15px;
+  }
+
+  #headerSpacer {
+    flex-grow: 1;
+  }
+
+  #infoButton {
+    --cr-icon-image: url(./icons/info.svg);
+  }
+
+  #dismissButton {
+    --cr-icon-button-margin-start: 4px;
+  }
+</style>
+<span id="title"><slot></slot></span>
+<div id="headerSpacer"></div>
+<template is="dom-if" if="[[showInfoButton]]">
+  <cr-icon-button id="infoButton" title="$i18n{moduleInfoButtonTitle}"
+      on-click="onInfoButtonClick_">
+  </cr-icon-button>
+</template>
+<template is="dom-if" if="[[showDismissButton]]">
+  <cr-icon-button id="dismissButton" title="$i18n{moduleDismissButtonTitle}"
+      class="icon-clear" on-click="onDismissButtonClick_">
+  </cr-icon-button>
+</template>
diff --git a/chrome/browser/resources/new_tab_page/modules/module_header.js b/chrome/browser/resources/new_tab_page/modules/module_header.js
new file mode 100644
index 0000000..148e6e9
--- /dev/null
+++ b/chrome/browser/resources/new_tab_page/modules/module_header.js
@@ -0,0 +1,85 @@
+// Copyright 2020 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+import {assert} from 'chrome://resources/js/assert.m.js';
+import {html, microTask, PolymerElement} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js';
+
+import {BrowserProxy} from '../browser_proxy.js';
+
+/** @fileoverview Element that displays a header inside a module. */
+
+class ModuleHeaderElement extends PolymerElement {
+  static get is() {
+    return 'ntp-module-header';
+  }
+
+  static get template() {
+    return html`{__html_template__}`;
+  }
+
+  static get properties() {
+    return {
+      /**
+       * The ID of the module.
+       * @type {!string}
+       */
+      moduleId: String,
+
+      /**
+       * The title to be displayed.
+       * @type {!string}
+       */
+      title: String,
+
+      /**
+       * True if the header should display an info button.
+       * @type {boolean}
+       */
+      showInfoButton: {
+        type: Boolean,
+        value: false,
+      },
+
+      /**
+       * True if the header should display a dismiss button.
+       * @type {boolean}
+       */
+      showDismissButton: {
+        type: Boolean,
+        value: false,
+      },
+    };
+  }
+
+  ready() {
+    super.ready();
+    const observer = new IntersectionObserver(([{intersectionRatio}]) => {
+      if (intersectionRatio >= .5) {
+        observer.disconnect();
+        BrowserProxy.getInstance().handler.onModuleImpression(
+            this.moduleId, BrowserProxy.getInstance().now());
+      }
+    }, {threshold: .5});
+    // Calling observe will immediately invoke the callback. If the header is
+    // fully shown when the page loads, the first callback invocation will
+    // happen before the header has dimensions. For this reason, we start
+    // observing after the element has had a chance to be rendered.
+    microTask.run(() => {
+      observer.observe(this);
+    });
+  }
+
+  /** @private */
+  onInfoButtonClick_() {
+    this.dispatchEvent(new CustomEvent('info-button-click', {bubbles: true}));
+  }
+
+  /** @private */
+  onDismissButtonClick_() {
+    this.dispatchEvent(
+        new CustomEvent('dismiss-button-click', {bubbles: true}));
+  }
+}
+
+customElements.define(ModuleHeaderElement.is, ModuleHeaderElement);
diff --git a/chrome/browser/resources/new_tab_page/modules/module_wrapper.html b/chrome/browser/resources/new_tab_page/modules/module_wrapper.html
index 11f4f72..6b0693d 100644
--- a/chrome/browser/resources/new_tab_page/modules/module_wrapper.html
+++ b/chrome/browser/resources/new_tab_page/modules/module_wrapper.html
@@ -1,4 +1,4 @@
-<style include="cr-icons">
+<style>
   :host {
     background-color: var(--ntp-background-override-color);
     border: solid var(--ntp-border-color) 1px;
@@ -8,48 +8,10 @@
     overflow: hidden;
   }
 
-  #header {
-    align-items: center;
-    display: flex;
-    height: 22px;
-    margin: 16px;
-  }
-
-  #title {
-    color: var(--cr-primary-text-color);
-    font-size: 15px;
-  }
-
-  #headerSpacer {
-    flex-grow: 1;
-  }
-
-  #infoButton {
-    --cr-icon-image: url(./icons/info.svg);
-  }
-
-  #dismissButton {
-    --cr-icon-button-margin-start: 4px;
-  }
-
   #moduleElement {
     align-items: center;
     display: flex;
     justify-content: center;
   }
 </style>
-<div id="header">
-  <span id="title">[[descriptor.title]]</span>
-  <div id="headerSpacer"></div>
-  <template is="dom-if" if="[[descriptor.actions.info]]">
-    <cr-icon-button id="infoButton" title="$i18n{moduleInfoButtonTitle}"
-        on-click="onInfoButtonClick_">
-    </cr-icon-button>
-  </template>
-  <template is="dom-if" if="[[descriptor.actions.dismiss]]">
-    <cr-icon-button id="dismissButton" title="$i18n{moduleDismissButtonTitle}"
-        class="icon-clear" on-click="onDismissButtonClick_">
-    </cr-icon-button>
-  </template>
-</div>
 <div id="moduleElement"></div>
diff --git a/chrome/browser/resources/new_tab_page/modules/module_wrapper.js b/chrome/browser/resources/new_tab_page/modules/module_wrapper.js
index d73701ca..fa20545 100644
--- a/chrome/browser/resources/new_tab_page/modules/module_wrapper.js
+++ b/chrome/browser/resources/new_tab_page/modules/module_wrapper.js
@@ -3,7 +3,7 @@
 // found in the LICENSE file.
 
 import {assert} from 'chrome://resources/js/assert.m.js';
-import {html, microTask, PolymerElement} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js';
+import {html, PolymerElement} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js';
 
 import {BrowserProxy} from '../browser_proxy.js';
 import {ModuleDescriptor} from './module_descriptor.js';
@@ -38,49 +38,13 @@
     assert(!oldValue);
     this.$.moduleElement.appendChild(this.descriptor.element);
     this.$.moduleElement.style.height = `${this.descriptor.heightPx}px`;
-    const observer = new IntersectionObserver(([{intersectionRatio}]) => {
-      if (intersectionRatio >= .5) {
-        observer.disconnect();
-        BrowserProxy.getInstance().handler.onModuleImpression(
-            this.descriptor.id, BrowserProxy.getInstance().now());
-      }
-    }, {threshold: .5});
-    // Calling observe will immediately invoke the callback. If the header is
-    // fully shown when the page loads, the first callback invocation will
-    // happen before the header has dimensions. For this reason, we start
-    // observing after the element has had a chance to be rendered.
-    microTask.run(() => {
-      observer.observe(this.$.header);
-    });
+
     // Log at most one usage per module per NTP page load. This is possible,
     // if a user opens a link in a new tab.
     this.descriptor.element.addEventListener('usage', () => {
       BrowserProxy.getInstance().handler.onModuleUsage(this.descriptor.id);
     }, {once: true});
   }
-
-  /** @private */
-  onInfoButtonClick_() {
-    this.descriptor.actions.info();
-  }
-
-  /** @private */
-  onDismissButtonClick_() {
-    this.hidden = true;
-    const message = this.descriptor.actions.dismiss();
-    this.dispatchEvent(new CustomEvent('dismiss-module', {
-      bubbles: true,
-      composed: true,
-      detail: message,
-    }));
-  }
-
-  restore() {
-    this.hidden = false;
-    if (this.descriptor.actions.restore) {
-      this.descriptor.actions.restore();
-    }
-  }
 }
 
 customElements.define(ModuleWrapperElement.is, ModuleWrapperElement);
diff --git a/chrome/browser/resources/new_tab_page/modules/task_module/module.html b/chrome/browser/resources/new_tab_page/modules/task_module/module.html
index ac2c08b..e107431 100644
--- a/chrome/browser/resources/new_tab_page/modules/task_module/module.html
+++ b/chrome/browser/resources/new_tab_page/modules/task_module/module.html
@@ -1,8 +1,15 @@
 <style include="cr-hidden-style">
   :host {
+    display: flex;
+    flex-direction: column;
+    height: 100%;
+    width: 100%;
+  }
+
+  #moduleContent {
     box-sizing: border-box;
     display: block;
-    height: 100%;
+    flex-grow: 1;
     padding-inline-end: 15px;
     padding-inline-start: 15px;
     width: 100%;
@@ -170,31 +177,38 @@
     text-decoration: none;
   }
 </style>
-<div id="taskItems">
-  <template is="dom-repeat" id="taskItemsRepeat" items="[[task.taskItems]]"
-      on-dom-change="onDomChange_">
-    <a class="task-item" href="[[item.targetUrl.url]]"
-        on-click="onTaskItemClick_" on-auxclick="onTaskItemClick_">
-      <div class="image-background">
-        <div class="image-container">
-          <img is="ntp-img" auto-src="[[item.imageUrl.url]]"></img>
+<ntp-module-header module-id="[[id]]"
+    show-info-button on-info-button-click="onInfoButtonClick_"
+    show-dismiss-button on-dismiss-button-click="onDismissButtonClick_">
+  [[task.title]]
+</ntp-module-header>
+<div id="moduleContent">
+  <div id="taskItems">
+    <template is="dom-repeat" id="taskItemsRepeat" items="[[task.taskItems]]"
+        on-dom-change="onDomChange_">
+      <a class="task-item" href="[[item.targetUrl.url]]"
+          on-click="onTaskItemClick_" on-auxclick="onTaskItemClick_">
+        <div class="image-background">
+          <div class="image-container">
+            <img is="ntp-img" auto-src="[[item.imageUrl.url]]"></img>
+          </div>
         </div>
-      </div>
-      <div class="price" hidden$="[[!item.price]]">[[item.price]]</div>
-      <div class="name" title="[[item.name]]">[[item.name]]</div>
-      <div class="info">[[item.info]]</div>
-    </a>
-  </template>
-</div>
-<div id="relatedSearches">
-  <template is="dom-repeat" id="relatedSearchesRepeat"
-      items="[[task.relatedSearches]]" on-dom-change="onDomChange_">
-    <a class="pill" href="[[item.targetUrl.url]]" on-click="onPillClick_"
-        on-auxclick="onPillClick_">
-      <div class="loupe"></div>
-      <div class="search-text">[[item.text]]</div>
-    </a>
-  </template>
+        <div class="price" hidden$="[[!item.price]]">[[item.price]]</div>
+        <div class="name" title="[[item.name]]">[[item.name]]</div>
+        <div class="info">[[item.info]]</div>
+      </a>
+    </template>
+  </div>
+  <div id="relatedSearches">
+    <template is="dom-repeat" id="relatedSearchesRepeat"
+        items="[[task.relatedSearches]]" on-dom-change="onDomChange_">
+      <a class="pill" href="[[item.targetUrl.url]]" on-click="onPillClick_"
+          on-auxclick="onPillClick_">
+        <div class="loupe"></div>
+        <div class="search-text">[[item.text]]</div>
+      </a>
+    </template>
+  </div>
 </div>
 <template is="dom-if" if="[[showInfoDialog]]" restamp>
   <cr-dialog show-on-attach>
diff --git a/chrome/browser/resources/new_tab_page/modules/task_module/module.js b/chrome/browser/resources/new_tab_page/modules/task_module/module.js
index 58217b3..783bdfad 100644
--- a/chrome/browser/resources/new_tab_page/modules/task_module/module.js
+++ b/chrome/browser/resources/new_tab_page/modules/task_module/module.js
@@ -3,9 +3,9 @@
 // found in the LICENSE file.
 
 import '../../img.js';
+import '../module_header.js';
 import 'chrome://resources/cr_elements/hidden_style_css.m.js';
 
-import {loadTimeData} from 'chrome://resources/js/load_time_data.m.js';
 import {html, PolymerElement} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js';
 import {ModuleDescriptor} from '../module_descriptor.js';
 import {TaskModuleHandlerProxy} from './task_module_handler_proxy.js';
@@ -27,6 +27,9 @@
 
   static get properties() {
     return {
+      /** @type {string} */
+      id: String,
+
       /** @type {!taskModule.mojom.TaskModuleType} */
       taskModuleType: {
         type: Number,
@@ -82,11 +85,36 @@
   }
 
   /** @private */
+  onInfoButtonClick_() {
+    this.showInfoDialog = true;
+  }
+
+  /** @private */
   onCloseClick_() {
     this.showInfoDialog = false;
   }
 
   /** @private */
+  onDismissButtonClick_() {
+    TaskModuleHandlerProxy.getInstance().handler.dismissTask(
+        this.taskModuleType, this.task.name);
+    this.dispatchEvent(new CustomEvent('dismiss-module', {
+      bubbles: true,
+      composed: true,
+      detail: {
+        message: this.task.name,
+        restoreCallback: this.onRestore_.bind(this),
+      },
+    }));
+  }
+
+  /** @private */
+  onRestore_() {
+    TaskModuleHandlerProxy.getInstance().handler.restoreTask(
+        this.taskModuleType, this.task.name);
+  }
+
+  /** @private */
   onDomChange_() {
     if (!this.intersectionObserver_) {
       this.intersectionObserver_ = new IntersectionObserver(entries => {
@@ -106,8 +134,8 @@
 
 customElements.define(TaskModuleElement.is, TaskModuleElement);
 
-/** @return {!Promise<?{element: !HTMLElement, title: string}>} */
-async function createModule(taskModuleType) {
+/** @return {!Promise<?HTMLElement>} */
+async function createModule(id, taskModuleType) {
   const {task} =
       await TaskModuleHandlerProxy.getInstance().handler.getPrimaryTask(
           taskModuleType);
@@ -117,34 +145,20 @@
   const element = new TaskModuleElement();
   element.taskModuleType = taskModuleType;
   element.task = task;
-  return {
-    element: element,
-    title: task.title,
-    actions: {
-      info: () => {
-        element.showInfoDialog = true;
-      },
-      dismiss: () => {
-        TaskModuleHandlerProxy.getInstance().handler.dismissTask(
-            taskModuleType, task.name);
-        return loadTimeData.getStringF('dismissModuleToastMessage', task.name);
-      },
-      restore: () => {
-        TaskModuleHandlerProxy.getInstance().handler.restoreTask(
-            taskModuleType, task.name);
-      },
-    },
-  };
+  element.id = id;
+  return element;
 }
 
 /** @type {!ModuleDescriptor} */
 export const recipeTasksDescriptor = new ModuleDescriptor(
     /*id=*/ 'recipe_tasks',
-    /*heightPx=*/ 206,
-    createModule.bind(null, taskModule.mojom.TaskModuleType.kRecipe));
+    /*heightPx=*/ 260,
+    createModule.bind(
+        null, 'recipe_tasks', taskModule.mojom.TaskModuleType.kRecipe));
 
 /** @type {!ModuleDescriptor} */
 export const shoppingTasksDescriptor = new ModuleDescriptor(
     /*id=*/ 'shopping_tasks',
-    /*heightPx=*/ 270,
-    createModule.bind(null, taskModule.mojom.TaskModuleType.kShopping));
+    /*heightPx=*/ 324,
+    createModule.bind(
+        null, 'shopping_tasks', taskModule.mojom.TaskModuleType.kShopping));
diff --git a/chrome/browser/resources/new_tab_page/realbox.html b/chrome/browser/resources/new_tab_page/realbox.html
index ea2e7207..41746f8 100644
--- a/chrome/browser/resources/new_tab_page/realbox.html
+++ b/chrome/browser/resources/new_tab_page/realbox.html
@@ -4,7 +4,6 @@
     border-radius: calc(0.5 * var(--ntp-realbox-height));
     box-shadow: 0 1px 6px 0 rgba(32, 33, 36, .28);
     height: var(--ntp-realbox-height);
-    user-select: none;
   }
 
   :host([matches-are-visible]) {
diff --git a/chrome/browser/resources/new_tab_page/realbox_dropdown.html b/chrome/browser/resources/new_tab_page/realbox_dropdown.html
index 1b9e31f..f25e156 100644
--- a/chrome/browser/resources/new_tab_page/realbox_dropdown.html
+++ b/chrome/browser/resources/new_tab_page/realbox_dropdown.html
@@ -1,6 +1,7 @@
 <style>
   :host {
     font-size: 16px;
+    user-select: none;
   }
 
   #selector {
diff --git a/chrome/browser/resources/reset_password/BUILD.gn b/chrome/browser/resources/reset_password/BUILD.gn
index 8f9b1c8..06859952 100644
--- a/chrome/browser/resources/reset_password/BUILD.gn
+++ b/chrome/browser/resources/reset_password/BUILD.gn
@@ -6,12 +6,19 @@
 
 js_type_check("closure_compile") {
   uses_js_modules = true
+  closure_flags = default_closure_args + mojom_js_args + [
+                    "js_module_root=" + rebase_path(
+                            "$root_gen_dir/mojom-webui/chrome/browser/ui/webui/reset_password",
+                            root_build_dir),
+                    "js_module_root=" + rebase_path(".", root_build_dir),
+                  ]
+
   deps = [ ":reset_password" ]
 }
 
 js_library("reset_password") {
   deps = [
-    "//chrome/browser/ui/webui/reset_password:mojo_bindings_js_library_for_compile",
+    "//chrome/browser/ui/webui/reset_password:mojo_bindings_webui_js",
     "//ui/webui/resources/js:util.m",
   ]
 }
diff --git a/chrome/browser/resources/reset_password/reset_password.js b/chrome/browser/resources/reset_password/reset_password.js
index 886c65c..c341f47c 100644
--- a/chrome/browser/resources/reset_password/reset_password.js
+++ b/chrome/browser/resources/reset_password/reset_password.js
@@ -7,16 +7,16 @@
 import 'chrome://resources/cr_elements/icons.m.js';
 import 'chrome://resources/polymer/v3_0/iron-icon/iron-icon.js';
 import 'chrome://resources/polymer/v3_0/paper-styles/color.js';
-import 'chrome://resources/mojo/mojo/public/js/mojo_bindings_lite.js';
-import './reset_password.mojom-lite.js';
 
 import {$} from 'chrome://resources/js/util.m.js';
 
-/** @type {mojom.ResetPasswordHandlerRemote} */
+import {ResetPasswordHandler, ResetPasswordHandlerRemote} from './reset_password.mojom-webui.js';
+
+/** @type {ResetPasswordHandlerRemote} */
 let pageHandler;
 
 document.addEventListener('DOMContentLoaded', function() {
-  pageHandler = mojom.ResetPasswordHandler.getRemote();
+  pageHandler = ResetPasswordHandler.getRemote();
 
   /** @type {?HTMLElement} */
   const resetPasswordButton = $('reset-password-button');
diff --git a/chrome/browser/resources/settings/chromeos/BUILD.gn b/chrome/browser/resources/settings/chromeos/BUILD.gn
index cd1b860..a514bb55 100644
--- a/chrome/browser/resources/settings/chromeos/BUILD.gn
+++ b/chrome/browser/resources/settings/chromeos/BUILD.gn
@@ -326,6 +326,7 @@
     "chromeos/internet_page/network_summary.m.js",
     "chromeos/internet_page/network_summary_item.m.js",
     "chromeos/internet_page/tether_connection_dialog.m.js",
+    "chromeos/kerberos_page/kerberos_page.m.js",
     "chromeos/localized_link/localized_link.m.js",
     "chromeos/metrics_recorder.m.js",
     "chromeos/multidevice_page/multidevice_browser_proxy.m.js",
@@ -620,6 +621,8 @@
     "chromeos/internet_page/network_summary_item.js",
     "chromeos/internet_page/tether_connection_dialog.html",
     "chromeos/internet_page/tether_connection_dialog.js",
+    "chromeos/kerberos_page/kerberos_page.html",
+    "chromeos/kerberos_page/kerberos_page.js",
     "chromeos/lazy_load.html",
     "chromeos/localized_link/localized_link.html",
     "chromeos/localized_link/localized_link.js",
@@ -1023,6 +1026,7 @@
     "device_page:closure_compile",
     "google_assistant_page:closure_compile",
     "internet_page:closure_compile",
+    "kerberos_page:closure_compile",
     "localized_link:closure_compile",
     "multidevice_page:closure_compile",
     "nearby_share_page:closure_compile",
@@ -1126,6 +1130,7 @@
     #"device_page:closure_compile_module",
     #"google_assistant_page:closure_compile_module",
     "internet_page:closure_compile_module",
+    "kerberos_page:closure_compile_module",
     "localized_link:closure_compile_module",
     "multidevice_page:closure_compile_module",
     "nearby_share_page:closure_compile_module",
@@ -1271,6 +1276,7 @@
     "device_page:polymer3_elements",
     "google_assistant_page:polymer3_elements",
     "internet_page:polymer3_elements",
+    "kerberos_page:polymer3_elements",
     "localized_link:polymer3_elements",
     "multidevice_page:polymer3_elements",
     "nearby_share_page:polymer3_elements",
diff --git a/chrome/browser/resources/settings/chromeos/internet_page/BUILD.gn b/chrome/browser/resources/settings/chromeos/internet_page/BUILD.gn
index 5a32ff53..54be9f9 100644
--- a/chrome/browser/resources/settings/chromeos/internet_page/BUILD.gn
+++ b/chrome/browser/resources/settings/chromeos/internet_page/BUILD.gn
@@ -213,6 +213,7 @@
   deps = [
     ":cellular_eid_popup",
     "//ui/webui/resources/cr_components/chromeos/cellular_setup:cellular_types",
+    "//ui/webui/resources/cr_components/chromeos/network:mojo_interface_provider",
     "//ui/webui/resources/cr_components/chromeos/network:onc_mojo",
     "//ui/webui/resources/cr_elements/cr_icon_button:cr_icon_button",
     "//ui/webui/resources/js:i18n_behavior",
diff --git a/chrome/browser/resources/settings/chromeos/internet_page/cellular_networks_list.html b/chrome/browser/resources/settings/chromeos/internet_page/cellular_networks_list.html
index c68460a5..d05ca15 100644
--- a/chrome/browser/resources/settings/chromeos/internet_page/cellular_networks_list.html
+++ b/chrome/browser/resources/settings/chromeos/internet_page/cellular_networks_list.html
@@ -1,6 +1,7 @@
 <link rel="import" href="chrome://resources/html/polymer.html">
 
 <link rel="import" href="chrome://resources/cr_components/chromeos/network/onc_mojo.html">
+<link rel="import" href="chrome://resources/cr_components/chromeos/network/mojo_interface_provider.html">
 <link rel="import" href="chrome://resources/cr_elements/cr_icon_button/cr_icon_button.html">
 <link rel="import" href="chrome://resources/cr_elements/cr_icons_css.html">
 <link rel="import" href="chrome://resources/cr_components/chromeos/cellular_setup/cellular_types.html">
diff --git a/chrome/browser/resources/settings/chromeos/internet_page/cellular_networks_list.js b/chrome/browser/resources/settings/chromeos/internet_page/cellular_networks_list.js
index 84f8152..ff34cfc6 100644
--- a/chrome/browser/resources/settings/chromeos/internet_page/cellular_networks_list.js
+++ b/chrome/browser/resources/settings/chromeos/internet_page/cellular_networks_list.js
@@ -24,7 +24,7 @@
       value() {
         return [];
       },
-      observer: 'networksListChange_',
+      observer: 'onNetworksListChanged_',
     },
 
     /**
@@ -85,34 +85,51 @@
     'close-eid-popup': 'toggleEidPopup_',
   },
 
+  /** @private {?chromeos.networkConfig.mojom.CrosNetworkConfigRemote} */
+  networkConfig_: null,
+
+  /** @override */
+  created() {
+    this.networkConfig_ = network_config.MojoInterfaceProviderImpl.getInstance()
+                              .getMojoServiceRemote();
+  },
+
   /**
    * @private
    */
-  networksListChange_() {
+  async onNetworksListChanged_() {
     const mojom = chromeos.networkConfig.mojom;
 
     const pSimNetworks = [];
     const eSimNetworks = [];
     const tetherNetworks = [];
 
-
     for (const network of this.networks) {
-      if (network.eid) {
-        eSimNetworks.push(network);
-        continue;
-      }
       if (network.type === mojom.NetworkType.kTether) {
         tetherNetworks.push(network);
         continue;
       }
-      pSimNetworks.push(network);
+
+      const managedPropertiesResponse =
+          await this.networkConfig_.getManagedProperties(network.guid);
+      if (!managedPropertiesResponse || !managedPropertiesResponse.result) {
+        console.error(
+            'Unable to get managed properties for network. guid=',
+            network.guid);
+        continue;
+      }
+
+      if (managedPropertiesResponse.result.typeProperties.cellular.eid) {
+        eSimNetworks.push(network);
+      } else {
+        pSimNetworks.push(network);
+      }
     }
     this.eSimNetworks_ = eSimNetworks;
     this.pSimNetworks_ = pSimNetworks;
     this.tetherNetworks_ = tetherNetworks;
   },
 
-
   /**
    * @param {!Array<!OncMojo.NetworkStateProperties>} list
    * @returns {boolean}
diff --git a/chrome/browser/resources/settings/chromeos/kerberos_page/BUILD.gn b/chrome/browser/resources/settings/chromeos/kerberos_page/BUILD.gn
new file mode 100644
index 0000000..4cd4575
--- /dev/null
+++ b/chrome/browser/resources/settings/chromeos/kerberos_page/BUILD.gn
@@ -0,0 +1,53 @@
+# Copyright 2020 The Chromium Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+import("//third_party/closure_compiler/compile_js.gni")
+import("//tools/polymer/polymer.gni")
+import("../os_settings.gni")
+
+js_type_check("closure_compile") {
+  deps = [ ":kerberos_page" ]
+}
+
+js_library("kerberos_page") {
+  deps = [
+    "..:os_route",
+    "../..:router",
+    "../../settings_page:settings_animated_pages",
+    "//ui/webui/resources/js:assert",
+    "//ui/webui/resources/js:i18n_behavior",
+    "//ui/webui/resources/js:web_ui_listener_behavior",
+  ]
+}
+
+js_type_check("closure_compile_module") {
+  is_polymer3 = true
+  deps = [ ":kerberos_page.m" ]
+}
+
+js_library("kerberos_page.m") {
+  sources = [ "$root_gen_dir/chrome/browser/resources/settings/chromeos/kerberos_page/kerberos_page.m.js" ]
+  deps = [
+    "..:os_route.m",
+    "../..:router.m",
+    "../../settings_page:settings_animated_pages.m",
+    "//ui/webui/resources/js:assert.m",
+    "//ui/webui/resources/js:i18n_behavior.m",
+    "//ui/webui/resources/js:web_ui_listener_behavior.m",
+  ]
+  extra_deps = [ ":kerberos_page_module" ]
+}
+
+group("polymer3_elements") {
+  public_deps = [ ":kerberos_page_module" ]
+}
+
+polymer_modulizer("kerberos_page") {
+  js_file = "kerberos_page.js"
+  html_file = "kerberos_page.html"
+  html_type = "dom-module"
+  migrated_imports = os_settings_migrated_imports
+  namespace_rewrites = os_settings_namespace_rewrites
+  auto_imports = os_settings_auto_imports
+}
diff --git a/chrome/browser/resources/settings/chromeos/kerberos_page/kerberos_page.html b/chrome/browser/resources/settings/chromeos/kerberos_page/kerberos_page.html
new file mode 100644
index 0000000..c2220a4
--- /dev/null
+++ b/chrome/browser/resources/settings/chromeos/kerberos_page/kerberos_page.html
@@ -0,0 +1,42 @@
+<link rel="import" href="chrome://resources/html/polymer.html">
+
+<link rel="import" href="chrome://resources/cr_elements/cr_link_row/cr_link_row.html">
+<link rel="import" href="chrome://resources/cr_elements/policy/cr_policy_indicator.html">
+<link rel="import" href="chrome://resources/cr_elements/shared_vars_css.html">
+<link rel="import" href="chrome://resources/html/assert.html">
+<link rel="import" href="chrome://resources/html/i18n_behavior.html">
+<link rel="import" href="chrome://resources/html/util.html">
+<link rel="import" href="chrome://resources/html/web_ui_listener_behavior.html">
+<link rel="import" href="chrome://resources/polymer/v1_0/iron-flex-layout/iron-flex-layout-classes.html">
+<link rel="import" href="../os_route.html">
+<link rel="import" href="../../router.html">
+<link rel="import" href="../../settings_page/settings_animated_pages.html">
+<link rel="import" href="../../settings_page/settings_subpage.html">
+<link rel="import" href="../../settings_shared_css.html">
+
+<dom-module id="settings-kerberos-page">
+  <template>
+    <style include="settings-shared iron-flex"></style>
+    <settings-animated-pages id="pages" section="kerberos"
+        focus-config="[[focusConfig_]]">
+      <div route-path="default">
+        <cr-link-row id="kerberos-accounts-v2-subpage-trigger" class="hr"
+            on-click="onKerberosAccountsV2Tap_"
+            label="$i18n{kerberosAccountsSubMenuLabel}"
+            role-description="$i18n{subpageArrowRoleDescription}">
+          <cr-policy-indicator indicator-type="userPolicy">
+          </cr-policy-indicator>
+        </cr-link-row>
+      </div>
+
+      <template is="dom-if" route-path="/kerberos/kerberosAccounts">
+        <settings-subpage
+            associated-control="[[$$('#kerberos-accounts-v2-subpage-trigger')]]"
+            page-title="$i18n{kerberosAccountsPageTitle}">
+          <!-- TODO(fsandrade): add kerberos accounts v2 subpage impl. -->
+        </settings-subpage>
+      </template>
+    </settings-animated-pages>
+  </template>
+  <script src="kerberos_page.js"></script>
+</dom-module>
diff --git a/chrome/browser/resources/settings/chromeos/kerberos_page/kerberos_page.js b/chrome/browser/resources/settings/chromeos/kerberos_page/kerberos_page.js
new file mode 100644
index 0000000..fd1970bf
--- /dev/null
+++ b/chrome/browser/resources/settings/chromeos/kerberos_page/kerberos_page.js
@@ -0,0 +1,39 @@
+// Copyright 2020 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+/**
+ * @fileoverview
+ * 'settings-kerberos-page' is the settings page containing Kerberos Tickets
+ * settings.
+ */
+Polymer({
+  is: 'settings-kerberos-page',
+
+  behaviors: [
+    I18nBehavior,
+    WebUIListenerBehavior,
+  ],
+
+  properties: {
+    /** @private {!Map<string, string>} */
+    focusConfig_: {
+      type: Object,
+      value() {
+        const map = new Map();
+        if (settings.routes.KERBEROS_ACCOUNTS_V2) {
+          map.set(
+              settings.routes.KERBEROS_ACCOUNTS_V2.path,
+              '#kerberos-accounts-v2-subpage-trigger');
+        }
+        return map;
+      },
+    },
+  },
+
+  /** @private */
+  onKerberosAccountsV2Tap_() {
+    settings.Router.getInstance().navigateTo(
+        settings.routes.KERBEROS_ACCOUNTS_V2);
+  },
+});
diff --git a/chrome/browser/resources/settings/chromeos/multidevice_page/multidevice_notification_access_setup_dialog.js b/chrome/browser/resources/settings/chromeos/multidevice_page/multidevice_notification_access_setup_dialog.js
index de740222..75b1d04 100644
--- a/chrome/browser/resources/settings/chromeos/multidevice_page/multidevice_notification_access_setup_dialog.js
+++ b/chrome/browser/resources/settings/chromeos/multidevice_page/multidevice_notification_access_setup_dialog.js
@@ -93,7 +93,7 @@
     shouldShowSetupInstructionsSeparately_: {
       type: Boolean,
       computed: 'computeShouldShowSetupInstructionsSeparately_(' +
-          'hasNotStartedSetupAttempt_, isSetupAttemptInProgress_)',
+          'setupState_)',
       reflectToAttribute: true,
     },
   },
@@ -180,7 +180,10 @@
    * @private
    */
   computeShouldShowSetupInstructionsSeparately_() {
-    return this.isSetupAttemptInProgress_ || this.hasNotStartedSetupAttempt_;
+    return this.setupState_ === null ||
+        this.setupState_ ===
+        NotificationAccessSetupOperationStatus.CONNECTION_REQUESTED ||
+        this.setupState_ === NotificationAccessSetupOperationStatus.CONNECTING;
   },
 
   /** @private */
@@ -214,8 +217,10 @@
     switch (this.setupState_) {
       case Status.CONNECTION_REQUESTED:
       case Status.CONNECTING:
-      case Status.SENT_MESSAGE_TO_PHONE_AND_WAITING_FOR_RESPONSE:
         return this.i18n('multideviceNotificationAccessSetupConnectingTitle');
+      case Status.SENT_MESSAGE_TO_PHONE_AND_WAITING_FOR_RESPONSE:
+        return this.i18n(
+            'multideviceNotificationAccessSetupAwaitingResponseTitle');
       case Status.COMPLETED_SUCCESSFULLY:
         return this.i18n('multideviceNotificationAccessSetupCompletedTitle');
       case Status.TIMED_OUT_CONNECTING:
@@ -254,11 +259,13 @@
       case Status.NOTIFICATION_ACCESS_PROHIBITED:
         return this.i18nAdvanced(
             'multideviceNotificationAccessSetupAccessProhibitedSummary');
+      case Status.SENT_MESSAGE_TO_PHONE_AND_WAITING_FOR_RESPONSE:
+        return this.i18n(
+            'multideviceNotificationAccessSetupAwaitingResponseSummary');
 
       // Only setup instructions will be shown.
       case Status.CONNECTION_REQUESTED:
       case Status.CONNECTING:
-      case Status.SENT_MESSAGE_TO_PHONE_AND_WAITING_FOR_RESPONSE:
       default:
         return '';
     }
diff --git a/chrome/browser/resources/settings/chromeos/os_page_visibility.js b/chrome/browser/resources/settings/chromeos/os_page_visibility.js
index b915b73..f49676b 100644
--- a/chrome/browser/resources/settings/chromeos/os_page_visibility.js
+++ b/chrome/browser/resources/settings/chromeos/os_page_visibility.js
@@ -16,6 +16,7 @@
  *   device: (boolean|undefined),
  *   downloads: (DownloadsPageVisibility|undefined),
  *   internet: (boolean|undefined),
+ *   kerberos: (boolean|undefined),
  *   languages: (LanguagesPageVisibility|undefined),
  *   multidevice: (boolean|undefined),
  *   onStartup: (boolean|undefined),
@@ -86,6 +87,9 @@
       loadTimeData.getBoolean('isAccountManagerEnabled');
   const isKerberosEnabled = loadTimeData.valueExists('isKerberosEnabled') &&
       loadTimeData.getBoolean('isKerberosEnabled');
+  const isKerberosSettingsSectionEnabled =
+      loadTimeData.valueExists('isKerberosSettingsSectionEnabled') &&
+      loadTimeData.getBoolean('isKerberosSettingsSectionEnabled');
 
   if (loadTimeData.getBoolean('isGuest')) {
     osPageVisibility = {
@@ -94,6 +98,7 @@
       multidevice: false,
       autofill: false,
       people: false,
+      kerberos: isKerberosEnabled && isKerberosSettingsSectionEnabled,
       onStartup: false,
       reset: false,
       appearance: {
@@ -136,6 +141,7 @@
         googleAccounts: isAccountManagerEnabled,
         manageUsers: true,
       },
+      kerberos: isKerberosEnabled && isKerberosSettingsSectionEnabled,
       onStartup: true,
       reset: true,
       appearance: {
diff --git a/chrome/browser/resources/settings/chromeos/os_route.js b/chrome/browser/resources/settings/chromeos/os_route.js
index 9a79730..476147d7 100644
--- a/chrome/browser/resources/settings/chromeos/os_route.js
+++ b/chrome/browser/resources/settings/chromeos/os_route.js
@@ -119,6 +119,21 @@
           Subpage.kKerberosAccounts);
     }
 
+    const isKerberosEnabled = loadTimeData.valueExists('isKerberosEnabled') &&
+        loadTimeData.getBoolean('isKerberosEnabled');
+    const isKerberosSettingsSectionEnabled =
+        loadTimeData.valueExists('isKerberosSettingsSectionEnabled') &&
+        loadTimeData.getBoolean('isKerberosSettingsSectionEnabled');
+
+    // Kerberos section.
+    if (isKerberosEnabled && isKerberosSettingsSectionEnabled) {
+      r.KERBEROS = createSection(
+          r.BASIC, mojom.KERBEROS_SECTION_PATH, Section.kKerberos);
+      r.KERBEROS_ACCOUNTS_V2 = createSubpage(
+          r.KERBEROS, mojom.KERBEROS_ACCOUNTS_V2_SUBPAGE_PATH,
+          Subpage.kKerberosAccountsV2);
+    }
+
     // Device section.
     r.DEVICE =
         createSection(r.BASIC, mojom.DEVICE_SECTION_PATH, Section.kDevice);
diff --git a/chrome/browser/resources/settings/chromeos/os_settings.js b/chrome/browser/resources/settings/chromeos/os_settings.js
index 57853fc..fff5bd8 100644
--- a/chrome/browser/resources/settings/chromeos/os_settings.js
+++ b/chrome/browser/resources/settings/chromeos/os_settings.js
@@ -19,6 +19,7 @@
 import './internet_page/network_summary.m.js';
 import './internet_page/network_summary_item.m.js';
 import './internet_page/tether_connection_dialog.m.js';
+import './kerberos_page/kerberos_page.m.js';
 import './nearby_share_page/nearby_share_receive_dialog.m.js';
 import './nearby_share_page/nearby_share_subpage.m.js';
 import './multidevice_page/multidevice_page.m.js';
diff --git a/chrome/browser/resources/settings/chromeos/os_settings_main/os_settings_main.html b/chrome/browser/resources/settings/chromeos/os_settings_main/os_settings_main.html
index 0f163f1..7d7bc6a 100644
--- a/chrome/browser/resources/settings/chromeos/os_settings_main/os_settings_main.html
+++ b/chrome/browser/resources/settings/chromeos/os_settings_main/os_settings_main.html
@@ -76,7 +76,8 @@
           on-subpage-expand="onShowingSubpage_"
           on-showing-main-page="onShowingMainPage_"
           in-search-mode="[[inSearchMode_]]"
-          advanced-toggle-expanded="{{advancedToggleExpanded}}">
+          advanced-toggle-expanded="{{advancedToggleExpanded}}"
+          show-kerberos-section="[[showKerberosSection]]">
       </os-settings-page>
     </template>
     <template is="dom-if" if="[[showPages_.about]]">
diff --git a/chrome/browser/resources/settings/chromeos/os_settings_main/os_settings_main.js b/chrome/browser/resources/settings/chromeos/os_settings_main/os_settings_main.js
index b03342f..d78f169 100644
--- a/chrome/browser/resources/settings/chromeos/os_settings_main/os_settings_main.js
+++ b/chrome/browser/resources/settings/chromeos/os_settings_main/os_settings_main.js
@@ -87,6 +87,8 @@
 
     showStartup: Boolean,
 
+    showKerberosSection: Boolean,
+
     havePlayStoreApp: Boolean,
   },
 
diff --git a/chrome/browser/resources/settings/chromeos/os_settings_menu/os_settings_menu.html b/chrome/browser/resources/settings/chromeos/os_settings_menu/os_settings_menu.html
index 43d4093..fa5edbf 100644
--- a/chrome/browser/resources/settings/chromeos/os_settings_menu/os_settings_menu.html
+++ b/chrome/browser/resources/settings/chromeos/os_settings_menu/os_settings_menu.html
@@ -176,6 +176,11 @@
         <iron-icon icon="cr:person"></iron-icon>
         $i18n{osPeoplePageTitle}
       </a>
+      <a id="kerberos" href="/kerberos" class="item"
+          hidden="[[!showKerberosSection]]">
+        <iron-icon icon="os-settings:auth-key"></iron-icon>
+        $i18n{kerberosPageTitle}
+      </a>
       <a href="/device" class="item">
         <iron-icon icon="os-settings:laptop-chromebook"></iron-icon>
         $i18n{devicePageTitle}
diff --git a/chrome/browser/resources/settings/chromeos/os_settings_menu/os_settings_menu.js b/chrome/browser/resources/settings/chromeos/os_settings_menu/os_settings_menu.js
index 45ddc2d3..21ba01f 100644
--- a/chrome/browser/resources/settings/chromeos/os_settings_menu/os_settings_menu.js
+++ b/chrome/browser/resources/settings/chromeos/os_settings_menu/os_settings_menu.js
@@ -34,6 +34,7 @@
 
     showReset: Boolean,
 
+    showKerberosSection: Boolean,
   },
 
   /** @param {!settings.Route} newRoute */
diff --git a/chrome/browser/resources/settings/chromeos/os_settings_page/os_settings_page.html b/chrome/browser/resources/settings/chromeos/os_settings_page/os_settings_page.html
index 367c331..87004c4c 100644
--- a/chrome/browser/resources/settings/chromeos/os_settings_page/os_settings_page.html
+++ b/chrome/browser/resources/settings/chromeos/os_settings_page/os_settings_page.html
@@ -22,6 +22,7 @@
 <link rel="import" href="../../router.html">
 <link rel="import" href="../device_page/device_page.html">
 <link rel="import" href="../internet_page/internet_page.html">
+<link rel="import" href="../kerberos_page/kerberos_page.html">
 <link rel="import" href="../multidevice_page/multidevice_page.html">
 <link rel="import" href="../on_startup_page/on_startup_page.html">
 
@@ -161,6 +162,12 @@
             </os-settings-people-page>
           </settings-section>
         </template>
+        <template is="dom-if" if="[[showKerberosSection]]" restamp>
+          <settings-section page-title="$i18n{kerberosPageTitle}"
+              section="kerberos">
+            <settings-kerberos-page></settings-kerberos-page>
+          </settings-section>
+        </template>
         <settings-section page-title="$i18n{devicePageTitle}"
             section="device">
           <settings-device-page prefs="{{prefs}}"
diff --git a/chrome/browser/resources/settings/chromeos/os_settings_page/os_settings_page.js b/chrome/browser/resources/settings/chromeos/os_settings_page/os_settings_page.js
index cc9ffcf1..fb917dd 100644
--- a/chrome/browser/resources/settings/chromeos/os_settings_page/os_settings_page.js
+++ b/chrome/browser/resources/settings/chromeos/os_settings_page/os_settings_page.js
@@ -35,6 +35,8 @@
 
     showStartup: Boolean,
 
+    showKerberosSection: Boolean,
+
     allowCrostini_: Boolean,
 
     havePlayStoreApp: Boolean,
diff --git a/chrome/browser/resources/settings/chromeos/os_settings_routes.js b/chrome/browser/resources/settings/chromeos/os_settings_routes.js
index c3dd1e9..5b1378c 100644
--- a/chrome/browser/resources/settings/chromeos/os_settings_routes.js
+++ b/chrome/browser/resources/settings/chromeos/os_settings_routes.js
@@ -44,7 +44,9 @@
  *   GOOGLE_ASSISTANT: !settings.Route,
  *   INTERNET: !settings.Route,
  *   INTERNET_NETWORKS: !settings.Route,
+ *   KERBEROS: !settings.Route,
  *   KERBEROS_ACCOUNTS: !settings.Route,
+ *   KERBEROS_ACCOUNTS_V2: !settings.Route,
  *   KEYBOARD: !settings.Route,
  *   KNOWN_NETWORKS: !settings.Route,
  *   LOCK_SCREEN: !settings.Route,
diff --git a/chrome/browser/resources/settings/chromeos/os_settings_ui/os_settings_ui.html b/chrome/browser/resources/settings/chromeos/os_settings_ui/os_settings_ui.html
index c73b0578..4597535 100644
--- a/chrome/browser/resources/settings/chromeos/os_settings_ui/os_settings_ui.html
+++ b/chrome/browser/resources/settings/chromeos/os_settings_ui/os_settings_ui.html
@@ -137,7 +137,8 @@
                 show-startup="[[showStartup_]]"
                 have-play-store-app="[[havePlayStoreApp_]]"
                 on-iron-activate="onIronActivate_"
-                advanced-opened="{{advancedOpenedInMenu_}}">
+                advanced-opened="{{advancedOpenedInMenu_}}"
+                show-kerberos-section="[[showKerberosSection_]]">
             </os-settings-menu>
           </template>
         </div>
@@ -152,7 +153,8 @@
               show-startup="[[showStartup_]]"
               have-play-store-app="[[havePlayStoreApp_]]"
               on-iron-activate="onIronActivate_"
-              advanced-opened="{{advancedOpenedInMenu_}}">
+              advanced-opened="{{advancedOpenedInMenu_}}"
+              show-kerberos-section="[[showKerberosSection_]]">
           </os-settings-menu>
         </template>
       </div>
@@ -165,7 +167,8 @@
           show-reset="[[showReset_]]"
           show-startup="[[showStartup_]]"
           have-play-store-app="[[havePlayStoreApp_]]"
-          advanced-toggle-expanded="{{advancedOpenedInMain_}}">
+          advanced-toggle-expanded="{{advancedOpenedInMain_}}"
+          show-kerberos-section="[[showKerberosSection_]]">
       </os-settings-main>
       <!-- An additional child of the flex #container to take up space,
            aligned with the right-hand child of the flex toolbar. -->
diff --git a/chrome/browser/resources/settings/chromeos/os_settings_ui/os_settings_ui.js b/chrome/browser/resources/settings/chromeos/os_settings_ui/os_settings_ui.js
index 9280bce..4c708bf 100644
--- a/chrome/browser/resources/settings/chromeos/os_settings_ui/os_settings_ui.js
+++ b/chrome/browser/resources/settings/chromeos/os_settings_ui/os_settings_ui.js
@@ -100,6 +100,9 @@
       showStartup_: Boolean,
 
       /** @private */
+      showKerberosSection_: Boolean,
+
+      /** @private */
       lastSearchQuery_: {
         type: String,
         value: '',
@@ -178,6 +181,12 @@
       this.showReset_ = loadTimeData.getBoolean('allowPowerwash');
       this.showStartup_ = loadTimeData.getBoolean('showStartup');
 
+      this.showKerberosSection_ =
+          loadTimeData.valueExists('isKerberosEnabled') &&
+          loadTimeData.getBoolean('isKerberosEnabled') &&
+          loadTimeData.valueExists('isKerberosSettingsSectionEnabled') &&
+          loadTimeData.getBoolean('isKerberosSettingsSectionEnabled');
+
       this.addEventListener('show-container', () => {
         this.$.container.style.visibility = 'visible';
       });
diff --git a/chrome/browser/resources/settings/people_page/people_page.html b/chrome/browser/resources/settings/people_page/people_page.html
index 92ec430..cfbb2d2 100644
--- a/chrome/browser/resources/settings/people_page/people_page.html
+++ b/chrome/browser/resources/settings/people_page/people_page.html
@@ -118,15 +118,9 @@
               hidden="[[!shouldShowGoogleAccount_]]"
               on-click="openGoogleAccount_" external></cr-link-row>
 
-          <div class="cr-row" id="edit-profile" on-click="onProfileTap_"
-              actionable>
-            <div class="flex cr-padded-text">
-              $i18n{profileNameAndPicture}
-            </div>
-            <cr-icon-button class="subpage-arrow" aria-label="$i18n{editPerson}"
-                aria-roledescription="$i18n{subpageArrowRoleDescription}">
-            </cr-icon-button>
-          </div>
+          <cr-link-row id="edit-profile"
+              label="$i18n{profileNameAndPicture}"
+              on-click="onProfileTap_" ></cr-link-row>
         </template>
 </if>
 
diff --git a/chrome/browser/safe_browsing/cloud_content_scanning/multipart_uploader.cc b/chrome/browser/safe_browsing/cloud_content_scanning/multipart_uploader.cc
index ff84f971..a0f4ac7 100644
--- a/chrome/browser/safe_browsing/cloud_content_scanning/multipart_uploader.cc
+++ b/chrome/browser/safe_browsing/cloud_content_scanning/multipart_uploader.cc
@@ -9,6 +9,7 @@
 #include "base/bind.h"
 #include "base/memory/scoped_refptr.h"
 #include "base/metrics/histogram_functions.h"
+#include "base/strings/strcat.h"
 #include "base/time/time.h"
 #include "components/safe_browsing/core/features.h"
 #include "content/public/browser/browser_task_traits.h"
@@ -75,9 +76,9 @@
 std::string MultipartUploadRequest::GenerateRequestBody(
     const std::string& metadata,
     const std::string& data) {
-  return "--" + boundary_ + "\r\n" + kDataContentType + "\r\n\r\n" + metadata +
-         "\r\n--" + boundary_ + "\r\n" + kDataContentType + "\r\n\r\n" + data +
-         "\r\n--" + boundary_ + "--\r\n";
+  return base::StrCat({"--", boundary_, "\r\n", kDataContentType, "\r\n\r\n",
+                       metadata, "\r\n--", boundary_, "\r\n", kDataContentType,
+                       "\r\n\r\n", data, "\r\n--", boundary_, "--\r\n"});
 }
 
 void MultipartUploadRequest::SendRequest() {
diff --git a/chrome/browser/sync_file_system/local/canned_syncable_file_system.cc b/chrome/browser/sync_file_system/local/canned_syncable_file_system.cc
index ef38225..fb0598f 100644
--- a/chrome/browser/sync_file_system/local/canned_syncable_file_system.cc
+++ b/chrome/browser/sync_file_system/local/canned_syncable_file_system.cc
@@ -245,7 +245,8 @@
   if (quota_mode == QUOTA_ENABLED) {
     quota_manager_ = new QuotaManager(
         false /* is_incognito */, data_dir_.GetPath(), io_task_runner_.get(),
-        storage_policy.get(), storage::GetQuotaSettingsFunc());
+        /*quota_change_callback=*/base::DoNothing(), storage_policy.get(),
+        storage::GetQuotaSettingsFunc());
   }
 
   std::vector<std::string> additional_allowed_schemes;
diff --git a/chrome/browser/tab/java/src/org/chromium/chrome/browser/tab/state/FilePersistedTabDataStorage.java b/chrome/browser/tab/java/src/org/chromium/chrome/browser/tab/state/FilePersistedTabDataStorage.java
index c0325d7..51a67bf 100644
--- a/chrome/browser/tab/java/src/org/chromium/chrome/browser/tab/state/FilePersistedTabDataStorage.java
+++ b/chrome/browser/tab/java/src/org/chromium/chrome/browser/tab/state/FilePersistedTabDataStorage.java
@@ -29,6 +29,8 @@
 import java.util.LinkedList;
 import java.util.Locale;
 
+import android.os.StrictMode;
+
 /**
  * {@link PersistedTabDataStorage} which uses a file for the storage
  */
@@ -45,8 +47,13 @@
         private static File sDirectory;
 
         static {
-            sDirectory =
-                    ContextUtils.getApplicationContext().getDir(sBaseDirName, Context.MODE_PRIVATE);
+            StrictMode.ThreadPolicy oldPolicy = StrictMode.allowThreadDiskWrites();
+            try {
+                sDirectory =
+                ContextUtils.getApplicationContext().getDir(sBaseDirName, Context.MODE_PRIVATE);
+            } finally {
+                StrictMode.setThreadPolicy(oldPolicy);
+            }
         }
     }
     private SequencedTaskRunner mSequencedTaskRunner;
diff --git a/chrome/browser/thumbnail/cc/thumbnail_cache.cc b/chrome/browser/thumbnail/cc/thumbnail_cache.cc
index 679e095..2b80155 100644
--- a/chrome/browser/thumbnail/cc/thumbnail_cache.cc
+++ b/chrome/browser/thumbnail/cc/thumbnail_cache.cc
@@ -158,8 +158,8 @@
       ui_resource_provider_(nullptr) {
   DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
   memory_pressure_ = std::make_unique<base::MemoryPressureListener>(
-      FROM_HERE,
-      base::Bind(&ThumbnailCache::OnMemoryPressure, base::Unretained(this)));
+      FROM_HERE, base::BindRepeating(&ThumbnailCache::OnMemoryPressure,
+                                     base::Unretained(this)));
 }
 
 ThumbnailCache::~ThumbnailCache() {
@@ -406,12 +406,12 @@
 
   write_tasks_count_++;
 
-  base::Callback<void()> post_write_task =
-      base::Bind(&ThumbnailCache::PostWriteTask, weak_factory_.GetWeakPtr());
+  base::OnceClosure post_write_task = base::BindOnce(
+      &ThumbnailCache::PostWriteTask, weak_factory_.GetWeakPtr());
   file_sequenced_task_runner_->PostTask(
       FROM_HERE,
       base::BindOnce(&ThumbnailCache::WriteTask, tab_id, compressed_data, scale,
-                     content_size, post_write_task));
+                     content_size, std::move(post_write_task)));
 }
 
 void ThumbnailCache::WriteJpegThumbnailIfNecessary(
@@ -426,24 +426,25 @@
 
   write_tasks_count_++;
 
-  base::Callback<void()> post_write_task =
-      base::Bind(&ThumbnailCache::PostWriteTask, weak_factory_.GetWeakPtr());
+  base::OnceClosure post_write_task = base::BindOnce(
+      &ThumbnailCache::PostWriteTask, weak_factory_.GetWeakPtr());
   file_sequenced_task_runner_->PostTask(
-      FROM_HERE, base::BindOnce(&ThumbnailCache::WriteJpegTask, tab_id,
-                                std::move(compressed_data), post_write_task));
+      FROM_HERE,
+      base::BindOnce(&ThumbnailCache::WriteJpegTask, tab_id,
+                     std::move(compressed_data), std::move(post_write_task)));
 }
 
 void ThumbnailCache::SaveAsJpeg(TabId tab_id, const SkBitmap& bitmap) {
-  base::Callback<void(std::vector<uint8_t>)> post_jpeg_compression_task =
-      base::Bind(&ThumbnailCache::WriteJpegThumbnailIfNecessary,
-                 weak_factory_.GetWeakPtr(), tab_id);
+  base::OnceCallback<void(std::vector<uint8_t>)> post_jpeg_compression_task =
+      base::BindOnce(&ThumbnailCache::WriteJpegThumbnailIfNecessary,
+                     weak_factory_.GetWeakPtr(), tab_id);
 
   base::ThreadPool::PostTask(
       FROM_HERE,
       {base::TaskPriority::BEST_EFFORT,
        base::TaskShutdownBehavior::CONTINUE_ON_SHUTDOWN},
       base::BindOnce(&ThumbnailCache::JpegProcessingTask, jpeg_aspect_ratio_,
-                     bitmap, post_jpeg_compression_task));
+                     bitmap, std::move(post_jpeg_compression_task)));
 }
 
 void ThumbnailCache::CompressThumbnailIfNecessary(TabId tab_id,
@@ -457,10 +458,10 @@
 
   compression_tasks_count_++;
 
-  base::Callback<void(sk_sp<SkPixelRef>, const gfx::Size&)>
+  base::OnceCallback<void(sk_sp<SkPixelRef>, const gfx::Size&)>
       post_compression_task =
-          base::Bind(&ThumbnailCache::PostCompressionTask,
-                     weak_factory_.GetWeakPtr(), tab_id, time_stamp, scale);
+          base::BindOnce(&ThumbnailCache::PostCompressionTask,
+                         weak_factory_.GetWeakPtr(), tab_id, time_stamp, scale);
 
   gfx::Size raw_data_size(bitmap.width(), bitmap.height());
   gfx::Size encoded_size = GetEncodedSize(
@@ -471,7 +472,7 @@
       {base::TaskPriority::BEST_EFFORT,
        base::TaskShutdownBehavior::CONTINUE_ON_SHUTDOWN},
       base::BindOnce(&ThumbnailCache::CompressionTask, bitmap, encoded_size,
-                     post_compression_task));
+                     std::move(post_compression_task)));
 
   if (save_jpeg_thumbnails_) {
     SaveAsJpeg(tab_id, bitmap);
@@ -625,7 +626,7 @@
                                sk_sp<SkPixelRef> compressed_data,
                                float scale,
                                const gfx::Size& content_size,
-                               const base::Callback<void()>& post_write_task) {
+                               base::OnceClosure post_write_task) {
   DCHECK(compressed_data);
 
   base::FilePath file_path = GetFilePath(tab_id);
@@ -640,13 +641,13 @@
   if (!success)
     base::DeleteFile(file_path);
 
-  content::GetUIThreadTaskRunner({})->PostTask(FROM_HERE, post_write_task);
+  content::GetUIThreadTaskRunner({})->PostTask(FROM_HERE,
+                                               std::move(post_write_task));
 }
 
-void ThumbnailCache::WriteJpegTask(
-    TabId tab_id,
-    std::vector<uint8_t> compressed_data,
-    const base::Callback<void()>& post_write_task) {
+void ThumbnailCache::WriteJpegTask(TabId tab_id,
+                                   std::vector<uint8_t> compressed_data,
+                                   base::OnceClosure post_write_task) {
   DCHECK(!compressed_data.empty());
 
   base::FilePath file_path = GetJpegFilePath(tab_id);
@@ -665,7 +666,8 @@
   if (!success)
     base::DeleteFile(file_path);
 
-  content::GetUIThreadTaskRunner({})->PostTask(FROM_HERE, post_write_task);
+  content::GetUIThreadTaskRunner({})->PostTask(FROM_HERE,
+                                               std::move(post_write_task));
 }
 
 void ThumbnailCache::PostWriteTask() {
@@ -677,7 +679,7 @@
 void ThumbnailCache::CompressionTask(
     SkBitmap raw_data,
     gfx::Size encoded_size,
-    const base::Callback<void(sk_sp<SkPixelRef>, const gfx::Size&)>&
+    base::OnceCallback<void(sk_sp<SkPixelRef>, const gfx::Size&)>
         post_compression_task) {
   sk_sp<SkPixelRef> compressed_data;
   gfx::Size content_size;
@@ -710,14 +712,14 @@
   }
 
   content::GetUIThreadTaskRunner({})->PostTask(
-      FROM_HERE, base::BindOnce(post_compression_task,
+      FROM_HERE, base::BindOnce(std::move(post_compression_task),
                                 std::move(compressed_data), content_size));
 }
 
 void ThumbnailCache::JpegProcessingTask(
     double jpeg_aspect_ratio,
     SkBitmap bitmap,
-    const base::Callback<void(std::vector<uint8_t>)>& post_processing_task) {
+    base::OnceCallback<void(std::vector<uint8_t>)> post_processing_task) {
   // In portrait mode, we want to show thumbnails in squares.
   // Therefore, the thumbnail saved in portrait mode needs to be cropped to
   // a square, or it would be vertically center-aligned, and the top would
@@ -741,7 +743,8 @@
   DCHECK(result);
 
   content::GetUIThreadTaskRunner({})->PostTask(
-      FROM_HERE, base::BindOnce(post_processing_task, std::move(data)));
+      FROM_HERE,
+      base::BindOnce(std::move(post_processing_task), std::move(data)));
 }
 
 void ThumbnailCache::PostCompressionTask(TabId tab_id,
diff --git a/chrome/browser/thumbnail/cc/thumbnail_cache.h b/chrome/browser/thumbnail/cc/thumbnail_cache.h
index 6dc0fc4..dc00d4e 100644
--- a/chrome/browser/thumbnail/cc/thumbnail_cache.h
+++ b/chrome/browser/thumbnail/cc/thumbnail_cache.h
@@ -124,20 +124,20 @@
                         sk_sp<SkPixelRef> compressed_data,
                         float scale,
                         const gfx::Size& content_size,
-                        const base::Callback<void()>& post_write_task);
+                        base::OnceClosure post_write_task);
   static void WriteJpegTask(TabId tab_id,
                             std::vector<uint8_t> compressed_data,
-                            const base::Callback<void()>& post_write_task);
+                            base::OnceClosure post_write_task);
   void PostWriteTask();
   static void CompressionTask(
       SkBitmap raw_data,
       gfx::Size encoded_size,
-      const base::Callback<void(sk_sp<SkPixelRef>, const gfx::Size&)>&
+      base::OnceCallback<void(sk_sp<SkPixelRef>, const gfx::Size&)>
           post_compression_task);
   static void JpegProcessingTask(
       double jpeg_aspect_ratio,
       SkBitmap bitmap,
-      const base::Callback<void(std::vector<uint8_t>)>& post_processing_task);
+      base::OnceCallback<void(std::vector<uint8_t>)> post_processing_task);
   void PostCompressionTask(TabId tab_id,
                            const base::Time& time_stamp,
                            float scale,
diff --git a/chrome/browser/ui/BUILD.gn b/chrome/browser/ui/BUILD.gn
index 0ef9e4d..b36c6e5 100644
--- a/chrome/browser/ui/BUILD.gn
+++ b/chrome/browser/ui/BUILD.gn
@@ -2623,8 +2623,6 @@
       "//chromeos/assistant:buildflags",
       "//chromeos/audio",
       "//chromeos/components/account_manager",
-      "//chromeos/components/bloom/public/cpp",
-      "//chromeos/components/bloom/public/cpp:bloom_controller_factory",
       "//chromeos/components/camera_app_ui",
       "//chromeos/components/connectivity_diagnostics",
       "//chromeos/components/connectivity_diagnostics:network_diagnostics_resource_provider",
diff --git a/chrome/browser/ui/ash/assistant/assistant_client_impl.cc b/chrome/browser/ui/ash/assistant/assistant_client_impl.cc
index c5253b3..0eafd72c 100644
--- a/chrome/browser/ui/ash/assistant/assistant_client_impl.cc
+++ b/chrome/browser/ui/ash/assistant/assistant_client_impl.cc
@@ -19,9 +19,6 @@
 #include "chrome/browser/ui/ash/assistant/assistant_web_view_factory_impl.h"
 #include "chrome/browser/ui/ash/assistant/conversation_starters_client_impl.h"
 #include "chrome/browser/ui/ash/assistant/device_actions_delegate_impl.h"
-#include "chromeos/components/bloom/public/cpp/bloom_controller.h"
-#include "chromeos/components/bloom/public/cpp/bloom_controller_factory.h"
-#include "chromeos/components/bloom/public/cpp/bloom_screenshot_delegate.h"
 #include "chromeos/constants/chromeos_features.h"
 #include "chromeos/constants/chromeos_switches.h"
 #include "chromeos/services/assistant/public/cpp/features.h"
@@ -89,12 +86,6 @@
     conversation_starters_client_ =
         std::make_unique<ConversationStartersClientImpl>(profile_);
   }
-
-  if (chromeos::assistant::features::IsBloomEnabled()) {
-    bloom_controller_ = chromeos::bloom::BloomControllerFactory::Create(
-        profile->GetURLLoaderFactory()->Clone(),
-        IdentityManagerFactory::GetForProfile(profile));
-  }
 }
 
 void AssistantClientImpl::MaybeStartAssistantOptInFlow() {
diff --git a/chrome/browser/ui/ash/assistant/assistant_client_impl.h b/chrome/browser/ui/ash/assistant/assistant_client_impl.h
index 9d83e64..de0fe36 100644
--- a/chrome/browser/ui/ash/assistant/assistant_client_impl.h
+++ b/chrome/browser/ui/ash/assistant/assistant_client_impl.h
@@ -23,12 +23,6 @@
 #include "mojo/public/cpp/bindings/receiver.h"
 #include "mojo/public/cpp/bindings/remote.h"
 
-namespace chromeos {
-namespace bloom {
-class BloomController;
-}  // namespace bloom
-}  // namespace chromeos
-
 class AssistantSetup;
 class AssistantWebViewFactoryImpl;
 class ConversationStartersClientImpl;
@@ -106,7 +100,6 @@
   std::unique_ptr<AssistantSetup> assistant_setup_;
   std::unique_ptr<AssistantWebViewFactoryImpl> assistant_web_view_factory_;
   std::unique_ptr<ConversationStartersClientImpl> conversation_starters_client_;
-  std::unique_ptr<chromeos::bloom::BloomController> bloom_controller_;
 
   bool initialized_ = false;
 
diff --git a/chrome/browser/ui/media_router/media_router_ui.cc b/chrome/browser/ui/media_router/media_router_ui.cc
index f57ae72..86dc9e8 100644
--- a/chrome/browser/ui/media_router/media_router_ui.cc
+++ b/chrome/browser/ui/media_router/media_router_ui.cc
@@ -47,11 +47,11 @@
 #include "components/url_formatter/elide_url.h"
 #include "content/public/browser/browser_context.h"
 #include "content/public/browser/navigation_handle.h"
-#include "content/public/common/fullscreen_video_element.mojom.h"
 #include "extensions/browser/extension_registry.h"
 #include "extensions/common/constants.h"
 #include "mojo/public/cpp/bindings/associated_remote.h"
 #include "third_party/blink/public/common/associated_interfaces/associated_interface_provider.h"
+#include "third_party/blink/public/mojom/media/fullscreen_video_element.mojom.h"
 #include "third_party/icu/source/i18n/unicode/coll.h"
 #include "ui/base/l10n/l10n_util.h"
 #include "ui/display/display.h"
@@ -227,7 +227,7 @@
 
   void FullscreenIfContentCaptured(content::WebContents* web_contents) {
     if (web_contents->IsBeingCaptured()) {
-      mojo::AssociatedRemote<content::mojom::FullscreenVideoElementHandler>
+      mojo::AssociatedRemote<blink::mojom::FullscreenVideoElementHandler>
           client;
       web_contents->GetMainFrame()
           ->GetRemoteAssociatedInterfaces()
diff --git a/chrome/browser/ui/search/ntp_user_data_logger.cc b/chrome/browser/ui/search/ntp_user_data_logger.cc
index eb9f5344..ea58fe7 100644
--- a/chrome/browser/ui/search/ntp_user_data_logger.cc
+++ b/chrome/browser/ui/search/ntp_user_data_logger.cc
@@ -625,8 +625,8 @@
     : content::WebContentsObserver(contents),
       has_emitted_(false),
       should_record_doodle_load_time_(true),
-      during_startup_(!AfterStartupTaskUtils::IsBrowserStartupComplete()) {
-}
+      modules_visible_(false),
+      during_startup_(!AfterStartupTaskUtils::IsBrowserStartupComplete()) {}
 
 // content::WebContentsObserver override
 void NTPUserDataLogger::NavigationEntryCommitted(
diff --git a/chrome/browser/ui/startup/bad_flags_prompt.cc b/chrome/browser/ui/startup/bad_flags_prompt.cc
index 9d55a1e..5a40403 100644
--- a/chrome/browser/ui/startup/bad_flags_prompt.cc
+++ b/chrome/browser/ui/startup/bad_flags_prompt.cc
@@ -80,6 +80,10 @@
     switches::kDisableWebRtcEncryption,
     switches::kIgnoreCertificateErrors,
 
+    // This flag could prevent QuotaChange events from firing or cause the event
+    // to fire too often, potentially impacting web application behavior.
+    switches::kQuotaChangeEventInterval,
+
     // These flags change the URLs that handle PII.
     switches::kGaiaUrl,
     translate::switches::kTranslateScriptURL,
diff --git a/chrome/browser/ui/views/chrome_typography_provider.cc b/chrome/browser/ui/views/chrome_typography_provider.cc
index 0e11d53..c8724175 100644
--- a/chrome/browser/ui/views/chrome_typography_provider.cc
+++ b/chrome/browser/ui/views/chrome_typography_provider.cc
@@ -41,7 +41,7 @@
   gfx::Font::Weight font_weight = gfx::Font::Weight::NORMAL;
 
 #if BUILDFLAG(IS_CHROMEOS_ASH)
-  ash::ApplyAshFontStyles(context, style, &size_delta, &font_weight);
+  ash::ApplyAshFontStyles(context, style, &size_delta, &font_weight, &typeface);
 #endif
 
   ApplyCommonFontStyles(context, style, &size_delta, &font_weight);
diff --git a/chrome/browser/ui/views/sharesheet/sharesheet_bubble_view.cc b/chrome/browser/ui/views/sharesheet/sharesheet_bubble_view.cc
index 238bbdc..be2ca233 100644
--- a/chrome/browser/ui/views/sharesheet/sharesheet_bubble_view.cc
+++ b/chrome/browser/ui/views/sharesheet/sharesheet_bubble_view.cc
@@ -7,6 +7,7 @@
 #include <memory>
 #include <utility>
 
+#include "ash/public/cpp/ash_typography.h"
 #include "base/i18n/rtl.h"
 #include "base/strings/string16.h"
 #include "base/time/time.h"
@@ -77,9 +78,6 @@
 constexpr int kSpacing = 24;
 constexpr int kTitleLineHeight = 24;
 
-constexpr char kTitleFont[] = "GoogleSans, Medium, 16px";
-constexpr char kExpandViewTitleFont[] = "Roboto, Medium, 15px";
-
 constexpr SkColor kShareTitleColor = gfx::kGoogleGrey900;
 constexpr SkColor kShareTargetTitleColor = gfx::kGoogleGrey700;
 
@@ -135,8 +133,8 @@
 
   // Add Title label
   auto* title = main_view_->AddChildView(std::make_unique<views::Label>(
-      l10n_util::GetStringUTF16(IDS_SHARESHEET_TITLE_LABEL)));
-  title->SetFontList(gfx::FontList(kTitleFont));
+      l10n_util::GetStringUTF16(IDS_SHARESHEET_TITLE_LABEL),
+      ash::CONTEXT_SHARESHEET_BUBBLE_TITLE, ash::STYLE_SHARESHEET));
   title->SetLineHeight(kTitleLineHeight);
   title->SetEnabledColor(kShareTitleColor);
   title->SetHorizontalAlignment(gfx::ALIGN_LEFT);
@@ -148,9 +146,11 @@
     image->SetImage(*ui::ResourceBundle::GetSharedInstance().GetImageSkiaNamed(
         IDR_SHARESHEET_EMPTY));
     image->SetProperty(views::kMarginsKey, gfx::Insets(0, 0, kSpacing, 0));
-    // TODO(crbug.com/1138037) Update label typography.
-    main_view_->AddChildView(std::make_unique<views::Label>(
-        l10n_util::GetStringUTF16(IDS_SHARESHEET_ZERO_STATE_LABEL)));
+    auto* zero_state_label =
+        main_view_->AddChildView(std::make_unique<views::Label>(
+            l10n_util::GetStringUTF16(IDS_SHARESHEET_ZERO_STATE_LABEL),
+            ash::CONTEXT_SHARESHEET_BUBBLE_BODY, ash::STYLE_SHARESHEET));
+    zero_state_label->SetLineHeight(kShortSpacing);
   } else {
     auto scroll_view = std::make_unique<views::ScrollView>();
     scroll_view->SetContents(MakeScrollableTargetView(std::move(targets)));
@@ -214,8 +214,8 @@
                             kExpandViewTitleLabelHeight);
   auto* apps_list_label =
       expanded_layout->AddView(std::make_unique<views::Label>(
-          l10n_util::GetStringUTF16(IDS_SHARESHEET_APPS_LIST_LABEL)));
-  apps_list_label->SetFontList(gfx::FontList(kExpandViewTitleFont));
+          l10n_util::GetStringUTF16(IDS_SHARESHEET_APPS_LIST_LABEL),
+          ash::CONTEXT_SHARESHEET_BUBBLE_BODY, ash::STYLE_SHARESHEET));
   apps_list_label->SetLineHeight(kExpandViewTitleLabelHeight);
   apps_list_label->SetEnabledColor(kShareTargetTitleColor);
   apps_list_label->SetHorizontalAlignment(gfx::ALIGN_CENTER);
@@ -481,18 +481,20 @@
   show_expanded_view_ = !show_expanded_view_;
   ResizeBubble(kDefaultBubbleWidth, show_expanded_view_ ? kExpandedBubbleHeight
                                                         : kDefaultBubbleHeight);
-  if (show_expanded_view_) {
-    expand_button_->SetToExpandedState();
-    AnimateToExpandedState();
-  } else {
-    expand_button_->SetToDefaultState();
-  }
+
   // Scrollview has separators that overlaps with |expand_button_separator_|
   // to create a double line when both are visible, so when scrollview is
   // expanded we hide our separator.
   expand_button_separator_->SetVisible(!show_expanded_view_);
   expanded_view_->SetVisible(show_expanded_view_);
   expanded_view_separator_->SetVisible(show_expanded_view_);
+
+  if (show_expanded_view_) {
+    expand_button_->SetToExpandedState();
+    AnimateToExpandedState();
+  } else {
+    expand_button_->SetToDefaultState();
+  }
 }
 
 void SharesheetBubbleView::AnimateToExpandedState() {
diff --git a/chrome/browser/ui/views/sharesheet/sharesheet_expand_button.cc b/chrome/browser/ui/views/sharesheet/sharesheet_expand_button.cc
index 05abd578..f45eff11 100644
--- a/chrome/browser/ui/views/sharesheet/sharesheet_expand_button.cc
+++ b/chrome/browser/ui/views/sharesheet/sharesheet_expand_button.cc
@@ -4,6 +4,7 @@
 
 #include "chrome/browser/ui/views/sharesheet/sharesheet_expand_button.h"
 
+#include "ash/public/cpp/ash_typography.h"
 #include "chrome/app/vector_icons/vector_icons.h"
 #include "chrome/grit/generated_resources.h"
 #include "third_party/skia/include/core/SkColor.h"
@@ -22,7 +23,6 @@
 constexpr int kBetweenChildSpacing = 8;
 constexpr int kMarginSpacing = 24;
 
-constexpr char kLabelFont[] = "Roboto, Medium, 14px";
 constexpr SkColor kLabelColor = gfx::kGoogleBlue600;
 
 }  // namespace
@@ -36,8 +36,9 @@
 
   icon_ = AddChildView(std::make_unique<views::ImageView>());
 
-  label_ = AddChildView(std::make_unique<views::Label>());
-  label_->SetFontList(gfx::FontList(kLabelFont));
+  label_ = AddChildView(std::make_unique<views::Label>(
+      base::string16(), ash::CONTEXT_SHARESHEET_BUBBLE_BODY,
+      ash::STYLE_SHARESHEET));
   label_->SetLineHeight(kLineHeight);
   label_->SetEnabledColor(kLabelColor);
 
diff --git a/chrome/browser/ui/views/sharesheet/sharesheet_target_button.cc b/chrome/browser/ui/views/sharesheet/sharesheet_target_button.cc
index 3757dd51..a5420b0b 100644
--- a/chrome/browser/ui/views/sharesheet/sharesheet_target_button.cc
+++ b/chrome/browser/ui/views/sharesheet/sharesheet_target_button.cc
@@ -6,6 +6,7 @@
 
 #include <memory>
 
+#include "ash/public/cpp/ash_typography.h"
 #include "base/strings/strcat.h"
 #include "base/strings/utf_string_conversions.h"
 #include "third_party/skia/include/core/SkColor.h"
@@ -28,9 +29,6 @@
 constexpr int kButtonMaxLines = 2;
 constexpr int kButtonPadding = 8;
 
-constexpr char kButtonLabelFont[] = "Roboto, Medium, 14px";
-constexpr char kButtonSecondaryLabelFont[] = "Roboto, Regular, 13px";
-
 constexpr SkColor kShareTargetTitleColor = gfx::kGoogleGrey700;
 constexpr SkColor kShareTargetSecondaryTitleColor = gfx::kGoogleGrey600;
 
@@ -82,18 +80,20 @@
   label_view->SetLayoutManager(std::make_unique<views::BoxLayout>(
       views::BoxLayout::Orientation::kVertical, gfx::Insets(), 0, true));
 
-  auto* label =
-      label_view->AddChildView(std::make_unique<views::Label>(display_name));
-  label->SetFontList(gfx::FontList(kButtonLabelFont));
+  auto* label = label_view->AddChildView(std::make_unique<views::Label>(
+      display_name, ash::CONTEXT_SHARESHEET_BUBBLE_BODY,
+      ash::STYLE_SHARESHEET));
   label->SetEnabledColor(kShareTargetTitleColor);
   SetLabelProperties(label);
 
   base::string16 accessible_name = display_name;
   if (secondary_display_name != base::string16() &&
       secondary_display_name != display_name) {
-    auto* secondary_label = label_view->AddChildView(
-        std::make_unique<views::Label>(secondary_display_name));
-    secondary_label->SetFontList(gfx::FontList(kButtonSecondaryLabelFont));
+    auto* secondary_label =
+        label_view->AddChildView(std::make_unique<views::Label>(
+            secondary_display_name,
+            ash::CONTEXT_SHARESHEET_BUBBLE_BODY_SECONDARY,
+            ash::STYLE_SHARESHEET));
     secondary_label->SetEnabledColor(kShareTargetSecondaryTitleColor);
     SetLabelProperties(secondary_label);
     accessible_name = base::StrCat(
diff --git a/chrome/browser/ui/views/tabs/tab_drag_controller.cc b/chrome/browser/ui/views/tabs/tab_drag_controller.cc
index 96e0925..9132856 100644
--- a/chrome/browser/ui/views/tabs/tab_drag_controller.cc
+++ b/chrome/browser/ui/views/tabs/tab_drag_controller.cc
@@ -413,8 +413,7 @@
   if (g_tab_drag_controller == this)
     g_tab_drag_controller = nullptr;
 
-  if (widget_observation_.IsObserving())
-    widget_observation_.RemoveObservation();
+  widget_observation_.Reset();
 
   if (is_dragging_window())
     GetAttachedBrowserWidget()->EndMoveLoop();
@@ -690,8 +689,7 @@
 }
 
 void TabDragController::OnWidgetDestroyed(views::Widget* widget) {
-  DCHECK(widget_observation_.IsObservingSource(widget));
-  widget_observation_.RemoveObservation();
+  widget_observation_.Reset();
 }
 
 void TabDragController::OnSourceTabStripEmpty() {
@@ -883,8 +881,7 @@
     // results in a move). That'll cause all sorts of problems.  Reset the
     // observer so we don't get notified and process the event.
 #if BUILDFLAG(IS_CHROMEOS_ASH)
-    if (widget_observation_.IsObservingSource(move_loop_widget_))
-      widget_observation_.RemoveObservation();
+    widget_observation_.Reset();
     move_loop_widget_ = nullptr;
 #endif  // BUILDFLAG(IS_CHROMEOS_ASH)
     views::Widget* browser_widget = GetAttachedBrowserWidget();
diff --git a/chrome/browser/ui/views/tabs/tab_drag_controller_interactive_uitest.cc b/chrome/browser/ui/views/tabs/tab_drag_controller_interactive_uitest.cc
index 057035b..3b69bcc 100644
--- a/chrome/browser/ui/views/tabs/tab_drag_controller_interactive_uitest.cc
+++ b/chrome/browser/ui/views/tabs/tab_drag_controller_interactive_uitest.cc
@@ -1368,9 +1368,16 @@
 
 }  // namespace
 
+#if defined(OS_MAC) && defined(ARCH_CPU_ARM64)
+// Bulk-disabled for arm64 bot stabilization: https://crbug.com/1154345
+#define MAYBE_DragToSeparateWindow DISABLED_DragToSeparateWindow
+#else
+#define MAYBE_DragToSeparateWindow DragToSeparateWindow
+#endif
+
 // Creates two browsers, drags from first into second.
 IN_PROC_BROWSER_TEST_P(DetachToBrowserTabDragControllerTest,
-                       DragToSeparateWindow) {
+                       MAYBE_DragToSeparateWindow) {
   TabStrip* tab_strip = GetTabStripForBrowser(browser());
 
   AddTabsAndResetBrowser(browser(), 1);
@@ -1993,9 +2000,16 @@
 
 }  // namespace
 
+#if defined(OS_MAC) && defined(ARCH_CPU_ARM64)
+// Bulk-disabled for arm64 bot stabilization: https://crbug.com/1154345
+#define MAYBE_DragAllToSeparateWindow DISABLED_DragAllToSeparateWindow
+#else
+#define MAYBE_DragAllToSeparateWindow DragAllToSeparateWindow
+#endif
+
 // Creates two browsers, selects all tabs in first and drags into second.
 IN_PROC_BROWSER_TEST_P(DetachToBrowserTabDragControllerTest,
-                       DragAllToSeparateWindow) {
+                       MAYBE_DragAllToSeparateWindow) {
   TabStrip* tab_strip = GetTabStripForBrowser(browser());
 
   AddTabsAndResetBrowser(browser(), 1);
diff --git a/chrome/browser/ui/webauthn/authenticator_dialog_browsertest.cc b/chrome/browser/ui/webauthn/authenticator_dialog_browsertest.cc
index 7d7ef3a..cbb1d70d 100644
--- a/chrome/browser/ui/webauthn/authenticator_dialog_browsertest.cc
+++ b/chrome/browser/ui/webauthn/authenticator_dialog_browsertest.cc
@@ -144,11 +144,42 @@
       model->SetCurrentStep(
           AuthenticatorRequestDialogModel::Step::kStorageFull);
     } else if (name == "account_select") {
+      // These strings attempt to exercise the encoding of direction and
+      // language from https://github.com/w3c/webauthn/pull/1530.
+
+      // lang_and_dir_encoded contains a string with right-to-left and ar-SA
+      // tags. It's the UTF-8 encoding of the code points {0xE0001, 0xE0061,
+      // 0xE0072, 0xE002D, 0xE0053, 0xE0041, 0x200F, 0xFEA2, 0xFE92, 0xFBFF,
+      // 0xFE91, 0x20, 0xFE8E, 0xFEDF, 0xFEAE, 0xFEA4, 0xFEE3, 0xFE8E, 0xFEE7}.
+      const std::string lang_and_dir_encoded =
+          "\xf3\xa0\x80\x81\xf3\xa0\x81\xa1\xf3\xa0\x81\xb2\xf3\xa0\x80\xad\xf3"
+          "\xa0\x81\x93\xf3\xa0\x81\x81\xe2\x80\x8f\xef\xba\xa2\xef\xba\x92\xef"
+          "\xaf\xbf\xef\xba\x91\x20\xef\xba\x8e\xef\xbb\x9f\xef\xba\xae\xef\xba"
+          "\xa4\xef\xbb\xa3\xef\xba\x8e\xef\xbb\xa7";
+      // lang_jp_encoded specifies a kanji with language jp. This is the middle
+      // glyph from the example given in
+      // https://www.w3.org/TR/string-meta/#capturing-the-text-processing-language.
+      // It's the UTF-8 encoding of the code points {0xE0001, 0xE006a, 0xE0070,
+      // 0x76f4}.
+      const std::string lang_jp_encoded =
+          "\xf3\xa0\x80\x81\xf3\xa0\x81\xaa\xf3\xa0\x81\xb0\xe7\x9b\xb4";
+      // lang_zh_hant_encoded specifies the same code point as
+      // |lang_jp_encoded|, but with the language set to zh-Hant. According to
+      // the W3C document referenced above, this should display differently.
+      // It's the UTF-8 encoding of the code points {0xE0001, 0xe007a, 0xe0068,
+      // 0xe002d, 0xe0048, 0xe0061, 0xe006e, 0xe0074}.
+      const std::string lang_zh_hant_encoded =
+          "\xf3\xa0\x80\x81\xf3\xa0\x81\xba\xf3\xa0\x81\xa8\xf3\xa0\x80\xad\xf3"
+          "\xa0\x81\x88\xf3\xa0\x81\xa1\xf3\xa0\x81\xae\xf3\xa0\x81\xb4";
+
       const std::vector<std::pair<std::string, std::string>> infos = {
           {"foo@example.com", "Test User 1"},
           {"", "Test User 2"},
           {"", ""},
           {"bat@example.com", "Test User 4"},
+          {"encoded@example.com", lang_and_dir_encoded},
+          {"encoded2@example.com", lang_jp_encoded},
+          {"encoded3@example.com", lang_zh_hant_encoded},
           {"verylong@"
            "reallylongreallylongreallylongreallylongreallylongreallylong.com",
            "Very Long String Very Long String Very Long String Very Long "
diff --git a/chrome/browser/ui/webui/nearby_share/shared_resources.cc b/chrome/browser/ui/webui/nearby_share/shared_resources.cc
index 66a7ed0..e803f28 100644
--- a/chrome/browser/ui/webui/nearby_share/shared_resources.cc
+++ b/chrome/browser/ui/webui/nearby_share/shared_resources.cc
@@ -80,6 +80,8 @@
       {"nearbyShareFeatureName", IDS_NEARBY_SHARE_FEATURE_NAME},
       {"nearbyShareOnboardingPageDeviceName",
        IDS_NEARBY_ONBOARDING_PAGE_DEVICE_NAME},
+      {"nearbyShareOnboardingPageDeviceNameHelp",
+       IDS_NEARBY_ONBOARDING_PAGE_DEVICE_NAME_HELP},
       {"nearbyShareOnboardingPageSubtitle",
        IDS_NEARBY_ONBOARDING_PAGE_SUBTITLE},
       {"nearbyShareOnboardingPageTitle", IDS_NEARBY_ONBOARDING_PAGE_TITLE},
diff --git a/chrome/browser/ui/webui/reset_password/BUILD.gn b/chrome/browser/ui/webui/reset_password/BUILD.gn
index bd425a30..e10270e 100644
--- a/chrome/browser/ui/webui/reset_password/BUILD.gn
+++ b/chrome/browser/ui/webui/reset_password/BUILD.gn
@@ -6,4 +6,5 @@
 
 mojom("mojo_bindings") {
   sources = [ "reset_password.mojom" ]
+  webui_module_path = "/"
 }
diff --git a/chrome/browser/ui/webui/reset_password/reset_password_ui.cc b/chrome/browser/ui/webui/reset_password/reset_password_ui.cc
index 0168e3c0..0f67bfa 100644
--- a/chrome/browser/ui/webui/reset_password/reset_password_ui.cc
+++ b/chrome/browser/ui/webui/reset_password/reset_password_ui.cc
@@ -115,8 +115,8 @@
       content::WebUIDataSource::Create(chrome::kChromeUIResetPasswordHost));
   html_source->DisableTrustedTypesCSP();
   html_source->AddResourcePath("reset_password.js", IDR_RESET_PASSWORD_JS);
-  html_source->AddResourcePath("reset_password.mojom-lite.js",
-                               IDR_RESET_PASSWORD_MOJOM_LITE_JS);
+  html_source->AddResourcePath("reset_password.mojom-webui.js",
+                               IDR_RESET_PASSWORD_MOJOM_WEBUI_JS);
   html_source->SetDefaultResource(IDR_RESET_PASSWORD_HTML);
   html_source->AddLocalizedStrings(PopulateStrings());
 
diff --git a/chrome/browser/ui/webui/settings/chromeos/kerberos_accounts_handler.cc b/chrome/browser/ui/webui/settings/chromeos/kerberos_accounts_handler.cc
index b271e0e..b971238 100644
--- a/chrome/browser/ui/webui/settings/chromeos/kerberos_accounts_handler.cc
+++ b/chrome/browser/ui/webui/settings/chromeos/kerberos_accounts_handler.cc
@@ -20,6 +20,7 @@
 #include "chrome/common/pref_names.h"
 #include "chrome/common/url_constants.h"
 #include "chrome/grit/generated_resources.h"
+#include "chromeos/constants/chromeos_features.h"
 #include "components/prefs/pref_service.h"
 #include "content/public/browser/web_ui_data_source.h"
 #include "third_party/skia/include/core/SkBitmap.h"
@@ -50,6 +51,18 @@
   AddLocalizedStringsBulk(html_source, kLocalizedStrings);
 }
 
+// Adds flags related to Kerberos settings visibility and its corresponding
+// settings section.
+void AddKerberosSettingsVisibilityFlags(
+    content::WebUIDataSource* html_source,
+    KerberosCredentialsManager* kerberos_credentials_manager) {
+  html_source->AddBoolean("isKerberosEnabled",
+                          IsKerberosEnabled(kerberos_credentials_manager));
+  html_source->AddBoolean(
+      "isKerberosSettingsSectionEnabled",
+      chromeos::features::IsKerberosSettingsSectionEnabled());
+}
+
 // Adds load time strings to Kerberos Add Accounts dialog.
 void AddKerberosAddAccountDialogStrings(content::WebUIDataSource* html_source) {
   static constexpr webui::LocalizedString kLocalizedStrings[] = {
@@ -118,9 +131,7 @@
 }
 
 // Adds load time strings to Kerberos Accounts page.
-void AddKerberosAccountsPageStrings(
-    content::WebUIDataSource* html_source,
-    KerberosCredentialsManager* kerberos_credentials_manager) {
+void AddKerberosAccountsPageStrings(content::WebUIDataSource* html_source) {
   static constexpr webui::LocalizedString kLocalizedStrings[] = {
       {"kerberosAccountsAddAccountLabel",
        IDS_SETTINGS_KERBEROS_ACCOUNTS_ADD_ACCOUNT_LABEL},
@@ -145,11 +156,6 @@
   };
   AddLocalizedStringsBulk(html_source, kLocalizedStrings);
 
-  // Toggles the Chrome OS Kerberos Accounts submenu in the People section.
-  // Note that the handler is also dependent on this pref.
-  html_source->AddBoolean("isKerberosEnabled",
-                          IsKerberosEnabled(kerberos_credentials_manager));
-
   PrefService* local_state = g_browser_process->local_state();
 
   // Whether new Kerberos accounts may be added.
@@ -182,8 +188,9 @@
 void KerberosAccountsHandler::AddLoadTimeKerberosStrings(
     content::WebUIDataSource* html_source,
     KerberosCredentialsManager* kerberos_credentials_manager) {
+  AddKerberosSettingsVisibilityFlags(html_source, kerberos_credentials_manager);
   AddKerberosTitleStrings(html_source);
-  AddKerberosAccountsPageStrings(html_source, kerberos_credentials_manager);
+  AddKerberosAccountsPageStrings(html_source);
   AddKerberosAddAccountDialogStrings(html_source);
 }
 
diff --git a/chrome/browser/ui/webui/settings/chromeos/kerberos_section.cc b/chrome/browser/ui/webui/settings/chromeos/kerberos_section.cc
index 1b1a043b..35a3ca2a 100644
--- a/chrome/browser/ui/webui/settings/chromeos/kerberos_section.cc
+++ b/chrome/browser/ui/webui/settings/chromeos/kerberos_section.cc
@@ -53,8 +53,8 @@
 }
 
 void KerberosSection::AddLoadTimeData(content::WebUIDataSource* html_source) {
-  // TODO(fsandrade): add Kerberos section title to corresponding UI element,
-  // when it's created.
+  html_source->AddLocalizedString("kerberosPageTitle",
+                                  IDS_OS_SETTINGS_KERBEROS);
 
   KerberosAccountsHandler::AddLoadTimeKerberosStrings(
       html_source, kerberos_credentials_manager_);
diff --git a/chrome/browser/ui/webui/settings/chromeos/multidevice_section.cc b/chrome/browser/ui/webui/settings/chromeos/multidevice_section.cc
index f2b8a5e..ee9b3817 100644
--- a/chrome/browser/ui/webui/settings/chromeos/multidevice_section.cc
+++ b/chrome/browser/ui/webui/settings/chromeos/multidevice_section.cc
@@ -285,6 +285,10 @@
        IDS_SETTINGS_MULTIDEVICE_NOTIFICATION_ACCESS_SETUP_DIALOG_ACK_TITLE},
       {"multideviceNotificationAccessSetupConnectingTitle",
        IDS_SETTINGS_MULTIDEVICE_NOTIFICATION_ACCESS_SETUP_DIALOG_CONNECTING_TITLE},
+      {"multideviceNotificationAccessSetupAwaitingResponseTitle",
+       IDS_SETTINGS_MULTIDEVICE_NOTIFICATION_ACCESS_SETUP_DIALOG_AWAITING_RESPONSE_TITLE},
+      {"multideviceNotificationAccessSetupAwaitingResponseSummary",
+       IDS_SETTINGS_MULTIDEVICE_NOTIFICATION_ACCESS_SETUP_DIALOG_AWAITING_RESPONSE_SUMMARY},
       {"multideviceNotificationAccessSetupInstructions",
        IDS_SETTINGS_MULTIDEVICE_NOTIFICATION_ACCESS_SETUP_DIALOG_INSTRUCTIONS},
       {"multideviceNotificationAccessSetupCompletedTitle",
diff --git a/chrome/build/linux.pgo.txt b/chrome/build/linux.pgo.txt
index bc96d9a2..16214c0 100644
--- a/chrome/build/linux.pgo.txt
+++ b/chrome/build/linux.pgo.txt
@@ -1 +1 @@
-chrome-linux-master-1607341806-34092e6e948e6283aae1770f567faca0b14a9512.profdata
+chrome-linux-master-1607363880-fd3f1baf2a5dc6b74a86d40eb9ec18d09a3815d8.profdata
diff --git a/chrome/build/mac.pgo.txt b/chrome/build/mac.pgo.txt
index 1b2a2213..da4f6e4 100644
--- a/chrome/build/mac.pgo.txt
+++ b/chrome/build/mac.pgo.txt
@@ -1 +1 @@
-chrome-mac-master-1607341806-857507b5a91b3ce5824fe454e7d197a8b05189bf.profdata
+chrome-mac-master-1607363880-e91185c7ee902dd489788046475ba4c3a284e8fb.profdata
diff --git a/chrome/build/win32.pgo.txt b/chrome/build/win32.pgo.txt
index 036047e..e54b088 100644
--- a/chrome/build/win32.pgo.txt
+++ b/chrome/build/win32.pgo.txt
@@ -1 +1 @@
-chrome-win32-master-1607331580-9909f67f911bba407df7ff9d177d8d5f0f5ef14c.profdata
+chrome-win32-master-1607353071-d7cc2aeaf74b32bdf69634e0f6483d7e4b0ffed2.profdata
diff --git a/chrome/build/win64.pgo.txt b/chrome/build/win64.pgo.txt
index c61eb98..7d922ff 100644
--- a/chrome/build/win64.pgo.txt
+++ b/chrome/build/win64.pgo.txt
@@ -1 +1 @@
-chrome-win64-master-1607341806-af6783e2515ff922f8cbb2f88290f0ca953ce5b4.profdata
+chrome-win64-master-1607353071-6048a593794456949e3ffd6a87397fecfdc4317e.profdata
diff --git a/chrome/test/BUILD.gn b/chrome/test/BUILD.gn
index 6baebea..73f8419 100644
--- a/chrome/test/BUILD.gn
+++ b/chrome/test/BUILD.gn
@@ -540,7 +540,7 @@
       "//chrome:chrome_android_core",
       "//chrome/android:app_hooks_java",
       "//chrome/browser/metrics:test_support",
-      "//chrome/browser/payments:browsertests",
+      "//chrome/browser/payments:browser_tests",
       "//chrome/browser/privacy_budget:browser_tests",
       "//chrome/browser/profiling_host:profiling_browsertests",
       "//components/browser_ui/widget/android:java",
@@ -779,7 +779,7 @@
       "//chrome/browser/image_decoder:browser_tests",
       "//chrome/browser/metrics:test_support",
       "//chrome/browser/notifications/scheduler/test:test_support",
-      "//chrome/browser/payments:browsertests",
+      "//chrome/browser/payments:browser_tests",
       "//chrome/browser/privacy_budget:browser_tests",
       "//chrome/browser/profiling_host:profiling_browsertests",
       "//chrome/browser/web_applications:browser_tests",
diff --git a/chrome/test/chromedriver/net/adb_client_socket.cc b/chrome/test/chromedriver/net/adb_client_socket.cc
index f452795..49110db5 100644
--- a/chrome/test/chromedriver/net/adb_client_socket.cc
+++ b/chrome/test/chromedriver/net/adb_client_socket.cc
@@ -500,8 +500,9 @@
   // on IPv4. So just try IPv4 first, then fall back to IPv6.
   net::IPAddressList list = {net::IPAddress::IPv4Localhost(),
                              net::IPAddress::IPv6Localhost()};
-  net::AddressList ip_list = net::AddressList::CreateFromIPAddressList(
-      list, "localhost");
+  std::vector<std::string> aliases({"localhost"});
+  net::AddressList ip_list =
+      net::AddressList::CreateFromIPAddressList(list, std::move(aliases));
   net::AddressList address_list = net::AddressList::CopyWithPort(
       ip_list, port_);
 
diff --git a/chrome/test/data/webui/BUILD.gn b/chrome/test/data/webui/BUILD.gn
index 4c34766..c4175ce 100644
--- a/chrome/test/data/webui/BUILD.gn
+++ b/chrome/test/data/webui/BUILD.gn
@@ -329,6 +329,7 @@
         "$root_gen_dir/chrome/test/data/webui/settings/chromeos/internet_known_networks_page_tests.m.js",
         "$root_gen_dir/chrome/test/data/webui/settings/chromeos/internet_subpage_tests.m.js",
         "$root_gen_dir/chrome/test/data/webui/settings/chromeos/internet_page_tests.m.js",
+        "$root_gen_dir/chrome/test/data/webui/settings/chromeos/kerberos_page_test.m.js",
         "$root_gen_dir/chrome/test/data/webui/settings/chromeos/localized_link_test.m.js",
         "$root_gen_dir/chrome/test/data/webui/settings/chromeos/multidevice_feature_item_tests.m.js",
         "$root_gen_dir/chrome/test/data/webui/settings/chromeos/multidevice_feature_toggle_tests.m.js",
diff --git a/chrome/test/data/webui/media/media_feeds_webui_browsertest.js b/chrome/test/data/webui/media/media_feeds_webui_browsertest.js
index 06854f4..dc0ed3b 100644
--- a/chrome/test/data/webui/media/media_feeds_webui_browsertest.js
+++ b/chrome/test/data/webui/media/media_feeds_webui_browsertest.js
@@ -36,7 +36,8 @@
     GEN('    browser()->profile());');
     GEN('auto* feeds_service =');
     GEN('  media_feeds::MediaFeedsService::Get(browser()->profile());');
-    GEN('feeds_service->DiscoverMediaFeed(GURL("' + EXAMPLE_URL_1 + '"));');
+    GEN('feeds_service->DiscoverMediaFeed(GURL("' + EXAMPLE_URL_1 + '"), ');
+    GEN('  GURL("https://example.com/icon.png"));');
     GEN('auto items = std::vector<media_feeds::mojom::MediaFeedItemPtr>();');
     GEN('auto item = media_feeds::mojom::MediaFeedItem::New();');
     GEN('item->name = base::ASCIIToUTF16("The Movie");');
@@ -178,12 +179,26 @@
 
     assertDeepEquals(
         [
-          'ID', 'Url', 'Display Name', 'Last Discovery Time', 'Last Fetch Time',
-          'User Status', 'User ID', 'Last Fetch Result', 'Fetch Failed Count',
-          'Last Fetch Time (not cache hit)', 'Last Fetch Item Count',
-          'Last Fetch Play Next Count', 'Last Fetch Content Types',
-          'Last Display Time', 'Reset Reason', 'Cookie Name Filter',
-          'Safe Search Result', 'Logos', 'Actions'
+          'ID',
+          'Url',
+          'Display Name',
+          'Last Discovery Time',
+          'Last Fetch Time',
+          'User Status',
+          'User ID',
+          'Last Fetch Result',
+          'Fetch Failed Count',
+          'Last Fetch Time (not cache hit)',
+          'Last Fetch Item Count',
+          'Last Fetch Play Next Count',
+          'Last Fetch Content Types',
+          'Last Display Time',
+          'Reset Reason',
+          'Cookie Name Filter',
+          'Safe Search Result',
+          'Favicon',
+          'Logos',
+          'Actions'
         ],
         feedsHeaders.map(x => x.textContent.trim()));
 
@@ -210,14 +225,17 @@
     assertEquals('TEST', feedsContents.childNodes[15].textContent.trim());
     assertEquals('Unknown', feedsContents.childNodes[16].textContent.trim());
     assertEquals(
-        'https://www.example.org/logo1.pngContentAttributes=HasTitle, ForLightBackgroundhttps://www.example.org/logo2.pngContentAttributes=NoTitle, ForDarkBackground',
+        'https://example.com/icon.png',
         feedsContents.childNodes[17].textContent.trim());
     assertEquals(
-        'Show ContentsFetch Feed',
+        'https://www.example.org/logo1.pngContentAttributes=HasTitle, ForLightBackgroundhttps://www.example.org/logo2.pngContentAttributes=NoTitle, ForDarkBackground',
         feedsContents.childNodes[18].textContent.trim());
+    assertEquals(
+        'Show ContentsFetch Feed',
+        feedsContents.childNodes[19].textContent.trim());
 
     // Click on the show contents button.
-    feedsContents.childNodes[18].firstChild.click();
+    feedsContents.childNodes[19].firstChild.click();
 
     return whenFeedTableIsPopulatedForTest().then(() => {
       assertEquals(
diff --git a/chrome/test/data/webui/new_tab_page/app_test.js b/chrome/test/data/webui/new_tab_page/app_test.js
index 260c57ea..5da2218 100644
--- a/chrome/test/data/webui/new_tab_page/app_test.js
+++ b/chrome/test/data/webui/new_tab_page/app_test.js
@@ -480,12 +480,10 @@
           {
             id: 'foo',
             element: document.createElement('div'),
-            title: 'Foo Title',
           },
           {
             id: 'bar',
             element: document.createElement('div'),
-            title: 'Bar Title',
           }
         ]);
         $$(app, 'ntp-middle-slot-promo')
@@ -507,45 +505,43 @@
 
     test('modules can be dismissed and restored', async () => {
       // Arrange.
-      let dismissCalled = false;
       let restoreCalled = false;
+      const moduleElement = document.createElement('div');
 
       // Act.
       moduleResolver.resolve([{
         id: 'foo',
-        element: document.createElement('div'),
-        title: 'Foo Title',
-        actions: {
-          dismiss: () => {
-            dismissCalled = true;
-            return 'Foo was removed';
-          },
-          restore: () => {
-            restoreCalled = true;
-          },
-        }
+        element: moduleElement,
       }]);
       await flushTasks();  // Wait for module descriptor resolution.
 
       // Assert.
       const modules = app.shadowRoot.querySelectorAll('ntp-module-wrapper');
       assertEquals(1, modules.length);
-      assertNotStyle($$(modules[0], '#dismissButton'), 'display', 'none');
       assertFalse($$(app, '#dismissModuleToast').open);
 
       // Act.
-      $$(modules[0], '#dismissButton').click();
+      moduleElement.dispatchEvent(new CustomEvent('dismiss-module', {
+        bubbles: true,
+        composed: true,
+        detail: {
+          message: 'Foo',
+          restoreCallback: _ => {
+            restoreCalled = true;
+          },
+        },
+      }));
       await flushTasks();
 
       // Assert.
       assertTrue($$(app, '#dismissModuleToast').open);
       assertEquals(
-          'Foo was removed',
+          'Removed Foo',
           $$(app, '#dismissModuleToastMessage').textContent.trim());
       assertNotStyle($$(app, '#undoDismissModuleButton'), 'display', 'none');
-      assertTrue(dismissCalled);
       assertEquals(
           'foo', await testProxy.handler.whenCalled('onDismissModule'));
+      assertFalse(restoreCalled);
 
       // Act.
       $$(app, '#undoDismissModuleButton').click();
diff --git a/chrome/test/data/webui/new_tab_page/modules/module_registry_test.js b/chrome/test/data/webui/new_tab_page/modules/module_registry_test.js
index 2792cc5..0b4ac38 100644
--- a/chrome/test/data/webui/new_tab_page/modules/module_registry_test.js
+++ b/chrome/test/data/webui/new_tab_page/modules/module_registry_test.js
@@ -12,10 +12,7 @@
     const bazModule = document.createElement('div');
     const bazModuleResolver = new PromiseResolver();
     ModuleRegistry.getInstance().registerModules([
-      new ModuleDescriptor('foo', 100, () => Promise.resolve({
-        element: fooModule,
-        title: 'Foo Title',
-      })),
+      new ModuleDescriptor('foo', 100, () => Promise.resolve(fooModule)),
       new ModuleDescriptor('bar', 200, () => null),
       new ModuleDescriptor('baz', 300, () => bazModuleResolver.promise),
     ]);
@@ -23,21 +20,16 @@
     // Act.
     const modulesPromise = ModuleRegistry.getInstance().initializeModules();
     // Delayed promise resolution to test async module instantiation.
-    bazModuleResolver.resolve({
-      element: bazModule,
-      title: 'Baz Title',
-    });
+    bazModuleResolver.resolve(bazModule);
     const modules = await modulesPromise;
 
     // Assert.
     assertEquals(2, modules.length);
     assertEquals('foo', modules[0].id);
     assertEquals(100, modules[0].heightPx);
-    assertEquals('Foo Title', modules[0].title);
     assertDeepEquals(fooModule, modules[0].element);
     assertEquals('baz', modules[1].id);
     assertEquals(300, modules[1].heightPx);
-    assertEquals('Baz Title', modules[1].title);
     assertDeepEquals(bazModule, modules[1].element);
   });
 });
diff --git a/chrome/test/data/webui/new_tab_page/modules/module_wrapper_test.js b/chrome/test/data/webui/new_tab_page/modules/module_wrapper_test.js
index f340bf9..66ba2cf 100644
--- a/chrome/test/data/webui/new_tab_page/modules/module_wrapper_test.js
+++ b/chrome/test/data/webui/new_tab_page/modules/module_wrapper_test.js
@@ -22,12 +22,10 @@
     moduleWrapper.descriptor = {
       id: 'foo',
       heightPx: 100,
-      title: 'Foo Title',
       element: moduleElement,
     };
 
     // Assert.
-    assertEquals('Foo Title', moduleWrapper.$.title.textContent);
     assertEquals(100, $$(moduleWrapper, '#moduleElement').offsetHeight);
     assertDeepEquals(
         moduleElement, $$(moduleWrapper, '#moduleElement').children[0]);
@@ -38,14 +36,12 @@
     moduleWrapper.descriptor = {
       id: 'foo',
       heightPx: 100,
-      title: 'Foo Title',
       element: moduleElement,
     };
     assertThrows(() => {
       moduleWrapper.descriptor = {
         id: 'foo',
         heightPx: 100,
-        title: 'Foo Title',
         element: moduleElement,
       };
     });
diff --git a/chrome/test/data/webui/new_tab_page/modules/task_module/module_test.js b/chrome/test/data/webui/new_tab_page/modules/task_module/module_test.js
index dff5ed7..99a77f0e 100644
--- a/chrome/test/data/webui/new_tab_page/modules/task_module/module_test.js
+++ b/chrome/test/data/webui/new_tab_page/modules/task_module/module_test.js
@@ -4,7 +4,7 @@
 
 import {shoppingTasksDescriptor, TaskModuleHandlerProxy} from 'chrome://new-tab-page/new_tab_page.js';
 import {TestBrowserProxy} from 'chrome://test/test_browser_proxy.m.js';
-import {eventToPromise} from 'chrome://test/test_util.m.js';
+import {eventToPromise, flushTasks} from 'chrome://test/test_util.m.js';
 
 suite('NewTabPageModulesTaskModuleTest', () => {
   /**
@@ -180,25 +180,30 @@
     };
     testProxy.handler.setResultFor('getPrimaryTask', Promise.resolve({task}));
 
-
-    // Act.
+    // Arrange.
     await shoppingTasksDescriptor.initialize();
-
-    // Assert.
-    assertEquals('function', typeof shoppingTasksDescriptor.actions.dismiss);
-    assertEquals('function', typeof shoppingTasksDescriptor.actions.restore);
+    const moduleElement = shoppingTasksDescriptor.element;
+    document.body.append(moduleElement);
+    await flushTasks();
 
     // Act.
-    const toastMessage = shoppingTasksDescriptor.actions.dismiss();
+    const waitForDismissEvent = eventToPromise('dismiss-module', moduleElement);
+    const dismissButton =
+        moduleElement.shadowRoot.querySelector('ntp-module-header')
+            .shadowRoot.querySelector('#dismissButton');
+    dismissButton.click();
+    const dismissEvent = await waitForDismissEvent;
+    const toastMessage = dismissEvent.detail.message;
+    const restoreCallback = dismissEvent.detail.restoreCallback;
 
     // Assert.
-    assertEquals('Removed Hello world', toastMessage);
+    assertEquals('Hello world', toastMessage);
     assertDeepEquals(
         [taskModule.mojom.TaskModuleType.kShopping, 'Hello world'],
         await testProxy.handler.whenCalled('dismissTask'));
 
     // Act.
-    shoppingTasksDescriptor.actions.restore();
+    restoreCallback();
 
     // Assert.
     assertDeepEquals(
diff --git a/chrome/test/data/webui/settings/chromeos/BUILD.gn b/chrome/test/data/webui/settings/chromeos/BUILD.gn
index 7dd15a7..23b52e96f 100644
--- a/chrome/test/data/webui/settings/chromeos/BUILD.gn
+++ b/chrome/test/data/webui/settings/chromeos/BUILD.gn
@@ -57,6 +57,7 @@
     "internet_known_networks_page_tests.js",
     "internet_page_tests.js",
     "internet_subpage_tests.js",
+    "kerberos_page_test.js",
     "localized_link_test.js",
     "multidevice_feature_item_tests.js",
     "multidevice_feature_toggle_tests.js",
diff --git a/chrome/test/data/webui/settings/chromeos/cellular_networks_list_test.js b/chrome/test/data/webui/settings/chromeos/cellular_networks_list_test.js
index f11e0a20..3b843f3 100644
--- a/chrome/test/data/webui/settings/chromeos/cellular_networks_list_test.js
+++ b/chrome/test/data/webui/settings/chromeos/cellular_networks_list_test.js
@@ -50,18 +50,34 @@
   }
 
   test('Tether plus cellular', async () => {
+    const eSimNetwork1 = OncMojo.getDefaultNetworkState(
+        mojom.NetworkType.kCellular, 'cellular_esim1');
+    const eSimNetwork2 = OncMojo.getDefaultNetworkState(
+        mojom.NetworkType.kCellular, 'cellular_esim2');
     setNetworksForTest(mojom.NetworkType.kCellular, [
       OncMojo.getDefaultNetworkState(mojom.NetworkType.kCellular, 'cellular1'),
       OncMojo.getDefaultNetworkState(mojom.NetworkType.kCellular, 'cellular2'),
+      eSimNetwork1,
+      eSimNetwork2,
       OncMojo.getDefaultNetworkState(mojom.NetworkType.kTether, 'tether1'),
       OncMojo.getDefaultNetworkState(mojom.NetworkType.kTether, 'tether2'),
     ]);
-    Polymer.dom.flush();
+
+    const eSimManagedProperties1 = OncMojo.getDefaultManagedProperties(
+        mojom.NetworkType.kCellular, eSimNetwork1.guid, eSimNetwork1.name);
+    const eSimManagedProperties2 = OncMojo.getDefaultManagedProperties(
+        mojom.NetworkType.kCellular, eSimNetwork2.guid, eSimNetwork2.name);
+    eSimManagedProperties1.typeProperties.cellular.eid =
+        '11111111111111111111111111111111';
+    eSimManagedProperties2.typeProperties.cellular.eid =
+        '22222222222222222222222222222222';
+    mojoApi_.setManagedPropertiesForTest(eSimManagedProperties1);
+    mojoApi_.setManagedPropertiesForTest(eSimManagedProperties2);
 
     await flushAsync();
 
-    assertEquals(2, cellularNetworkList.pSimNetworks_.length);
-    assertEquals(2, cellularNetworkList.tetherNetworks_.length);
+    const eSimNetworkList = cellularNetworkList.$$('#esimNetworkList');
+    assertTrue(!!eSimNetworkList);
 
     const pSimNetworkList = cellularNetworkList.$$('#psimNetworkList');
     assertTrue(!!pSimNetworkList);
@@ -69,6 +85,7 @@
     const tetherNetworkList = cellularNetworkList.$$('#tetherNetworkList');
     assertTrue(!!tetherNetworkList);
 
+    assertEquals(2, eSimNetworkList.networks.length);
     assertEquals(2, pSimNetworkList.networks.length);
     assertEquals(2, tetherNetworkList.networks.length);
   });
@@ -109,6 +126,7 @@
             pSimCellularEvent.detail.pageName,
             cellularSetup.CellularSetupPageName.PSIM_FLOW_UI);
       });
+
   test('Show EID and QR code popup', async () => {
     let eidPopup = cellularNetworkList.$$('.eid-popup');
     assertFalse(!!eidPopup);
diff --git a/chrome/test/data/webui/settings/chromeos/kerberos_page_test.js b/chrome/test/data/webui/settings/chromeos/kerberos_page_test.js
new file mode 100644
index 0000000..d69f3c1
--- /dev/null
+++ b/chrome/test/data/webui/settings/chromeos/kerberos_page_test.js
@@ -0,0 +1,58 @@
+// Copyright 2020 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// clang-format off
+// #import 'chrome://os-settings/chromeos/os_settings.js';
+
+// #import {Router, Route, routes} from 'chrome://os-settings/chromeos/os_settings.js';
+// #import {assertEquals, assertFalse, assertTrue} from '../../chai_assert.js';
+// #import {flush} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js';
+
+// clang-format on
+
+cr.define('settings_kerberos_page', function() {
+  suite('KerberosPageTests', function() {
+    /** @type {SettingsKerberosPageElement} */
+    let kerberosPage = null;
+
+    setup(function() {
+      settings.routes.KERBEROS = settings.routes.BASIC.createSection(
+          '/' + chromeos.settings.mojom.KERBEROS_SECTION_PATH,
+          chromeos.settings.mojom.KERBEROS_SECTION_PATH);
+      settings.routes.KERBEROS_ACCOUNTS_V2 =
+          settings.routes.KERBEROS.createChild(
+              '/' + chromeos.settings.mojom.KERBEROS_ACCOUNTS_V2_SUBPAGE_PATH);
+
+      settings.Router.resetInstanceForTesting(
+          new settings.Router(settings.routes));
+
+      PolymerTest.clearBody();
+    });
+
+    teardown(function() {
+      kerberosPage.remove();
+      settings.Router.getInstance().resetRouteForTesting();
+    });
+
+    test('Kerberos Section contains a link to Kerberos Accounts', () => {
+      kerberosPage = document.createElement('settings-kerberos-page');
+      document.body.appendChild(kerberosPage);
+      Polymer.dom.flush();
+
+      // Sub-page trigger is shown.
+      const subpageTrigger = kerberosPage.shadowRoot.querySelector(
+          '#kerberos-accounts-v2-subpage-trigger');
+      assertFalse(subpageTrigger.hidden);
+
+      // Sub-page trigger navigates to Kerberos Accounts V2.
+      subpageTrigger.click();
+      assertEquals(
+          settings.Router.getInstance().getCurrentRoute(),
+          settings.routes.KERBEROS_ACCOUNTS_V2);
+    });
+  });
+
+  // #cr_define_end
+  return {};
+});
diff --git a/chrome/test/data/webui/settings/chromeos/multidevice_notification_access_setup_dialog_tests.js b/chrome/test/data/webui/settings/chromeos/multidevice_notification_access_setup_dialog_tests.js
index fa72081..b8bef55 100644
--- a/chrome/test/data/webui/settings/chromeos/multidevice_notification_access_setup_dialog_tests.js
+++ b/chrome/test/data/webui/settings/chromeos/multidevice_notification_access_setup_dialog_tests.js
@@ -31,6 +31,11 @@
     Polymer.dom.flush();
   }
 
+  /** @return {boolean} */
+  function isSetupInstructionsShownSeparately() {
+    return notificationAccessSetupDialog.shouldShowSetupInstructionsSeparately_;
+  }
+
   setup(() => {
     PolymerTest.clearBody();
     browserProxy = new multidevice.TestMultideviceBrowserProxy();
@@ -46,6 +51,7 @@
   });
 
   test('Test success flow', async () => {
+    assertTrue(isSetupInstructionsShownSeparately());
     assertTrue(!!buttonContainer.querySelector('#cancelButton'));
     assertTrue(!!buttonContainer.querySelector('#getStartedButton'));
     assertFalse(!!buttonContainer.querySelector('#doneButton'));
@@ -55,12 +61,14 @@
 
     simulateStatusChanged(
       NotificationAccessSetupOperationStatus.CONNECTION_REQUESTED);
+    assertTrue(isSetupInstructionsShownSeparately());
     assertTrue(!!buttonContainer.querySelector('#cancelButton'));
     assertFalse(!!buttonContainer.querySelector('#getStartedButton'));
     assertFalse(!!buttonContainer.querySelector('#doneButton'));
     assertFalse(!!buttonContainer.querySelector('#tryAgainButton'));
 
     simulateStatusChanged(NotificationAccessSetupOperationStatus.CONNECTING);
+    assertTrue(isSetupInstructionsShownSeparately());
     assertTrue(!!buttonContainer.querySelector('#cancelButton'));
     assertFalse(!!buttonContainer.querySelector('#getStartedButton'));
     assertFalse(!!buttonContainer.querySelector('#doneButton'));
@@ -68,6 +76,7 @@
 
     simulateStatusChanged(NotificationAccessSetupOperationStatus.
         SENT_MESSAGE_TO_PHONE_AND_WAITING_FOR_RESPONSE);
+    assertFalse(isSetupInstructionsShownSeparately());
     assertTrue(!!buttonContainer.querySelector('#cancelButton'));
     assertFalse(!!buttonContainer.querySelector('#getStartedButton'));
     assertFalse(!!buttonContainer.querySelector('#doneButton'));
@@ -75,7 +84,7 @@
 
     simulateStatusChanged(
         NotificationAccessSetupOperationStatus.COMPLETED_SUCCESSFULLY);
-
+    assertFalse(isSetupInstructionsShownSeparately());
     assertFalse(!!buttonContainer.querySelector('#cancelButton'));
     assertFalse(!!buttonContainer.querySelector('#getStartedButton'));
     assertTrue(!!buttonContainer.querySelector('#doneButton'));
diff --git a/chrome/test/data/webui/settings/chromeos/os_settings_browsertest.js b/chrome/test/data/webui/settings/chromeos/os_settings_browsertest.js
index 0cdf8c9..f3b9127 100644
--- a/chrome/test/data/webui/settings/chromeos/os_settings_browsertest.js
+++ b/chrome/test/data/webui/settings/chromeos/os_settings_browsertest.js
@@ -1088,11 +1088,29 @@
   }
 };
 
-TEST_F(
-    'OSSettingsCellularSetupDialogTest', 'CellularSetupDialog',
-    () => {
-      mocha.run();
-    });
+TEST_F('OSSettingsCellularSetupDialogTest', 'CellularSetupDialog', () => {
+  mocha.run();
+});
+
+// Tests for the Kerberos section.
+// eslint-disable-next-line no-var
+var OSSettingsKerberosPageTest = class extends OSSettingsBrowserTest {
+  /** @override */
+  get browsePreload() {
+    return super.browsePreload + 'chromeos/kerberos_page/kerberos_page.html';
+  }
+
+  /** @override */
+  get extraLibraries() {
+    return super.extraLibraries.concat([
+      'kerberos_page_test.js',
+    ]);
+  }
+};
+
+TEST_F('OSSettingsKerberosPageTest', 'AllJsTests', () => {
+  mocha.run();
+});
 
 // Test fixture for the main settings page.
 // eslint-disable-next-line no-var
diff --git a/chrome/test/data/webui/settings/chromeos/os_settings_page_test.js b/chrome/test/data/webui/settings/chromeos/os_settings_page_test.js
index 1db2500..d34ac81 100644
--- a/chrome/test/data/webui/settings/chromeos/os_settings_page_test.js
+++ b/chrome/test/data/webui/settings/chromeos/os_settings_page_test.js
@@ -18,6 +18,9 @@
     settingsPage = settingsMain.$$('os-settings-page');
     assertTrue(!!settingsPage);
 
+    // Simulate Kerberos settings section enabled.
+    settingsPage.showKerberosSection = true;
+
     const idleRender =
         settingsMain.$$('os-settings-page').$$('settings-idle-load');
     assert(!!idleRender);
@@ -66,7 +69,7 @@
 
   test('Basic sections', function() {
     const sectionNames = [
-      'internet', 'bluetooth', 'multidevice', 'osPeople', 'device',
+      'internet', 'bluetooth', 'multidevice', 'osPeople', 'kerberos', 'device',
       'personalization', 'osSearch', 'apps'
     ];
 
@@ -114,8 +117,9 @@
     }
 
     const visibleSections = [
-      'internet', 'bluetooth', 'device', 'osSearch', 'apps', 'osPrivacy',
-      'osLanguages', 'files', 'osReset', 'dateTime', 'osAccessibility'
+      'internet', 'bluetooth', 'kerberos', 'device', 'osSearch', 'apps',
+      'osPrivacy', 'osLanguages', 'files', 'osReset', 'dateTime',
+      'osAccessibility'
     ];
     for (const name of visibleSections) {
       const section = settingsPage.shadowRoot.querySelector(
diff --git a/chrome/test/data/webui/settings/chromeos/os_settings_v3_browsertest.js b/chrome/test/data/webui/settings/chromeos/os_settings_v3_browsertest.js
index 813c210..4c57b1ec 100644
--- a/chrome/test/data/webui/settings/chromeos/os_settings_v3_browsertest.js
+++ b/chrome/test/data/webui/settings/chromeos/os_settings_v3_browsertest.js
@@ -146,6 +146,7 @@
  ['InternetKnownNetworksPage', 'internet_known_networks_page_tests.m.js'],
  ['InternetSubpage', 'internet_subpage_tests.m.js'],
  ['InternetPage', 'internet_page_tests.m.js'],
+ ['KerberosPage', 'kerberos_page_test.m.js'],
  ['LocalizedLink', 'localized_link_test.m.js'],
  ['MultideviceFeatureItem', 'multidevice_feature_item_tests.m.js'],
  ['MultideviceFeatureToggle', 'multidevice_feature_toggle_tests.m.js'],
diff --git a/chromecast/browser/webview/client/webview.cc b/chromecast/browser/webview/client/webview.cc
index 4d35cd5..76a825a 100644
--- a/chromecast/browser/webview/client/webview.cc
+++ b/chromecast/browser/webview/client/webview.cc
@@ -17,8 +17,6 @@
 #include "chromecast/browser/webview/proto/webview.pb.h"
 #include "third_party/grpc/src/include/grpcpp/grpcpp.h"
 #include "third_party/skia/include/gpu/GrDirectContext.h"
-#include "ui/events/keycodes/dom/keycode_converter.h"
-#include "ui/events/keycodes/keyboard_code_conversion.h"
 #include "ui/gl/gl_bindings.h"
 
 namespace chromecast {
@@ -444,46 +442,24 @@
   int id;
   if (tokens.size() != 3 || !base::StringToInt(tokens[0], &id) ||
       tokens[2].empty()) {
-    LOG(ERROR) << "Usage: ID key [dom_code]";
+    LOG(ERROR) << "Usage: ID key [key_string]";
     return;
   }
 
   const auto& webview = webviews_[id];
 
-  ui::DomCode dom_code = ui::KeycodeConverter::CodeStringToDomCode(tokens[2]);
-  if (dom_code == ui::DomCode::NONE) {
-    LOG(ERROR) << "Unknown DomCode CodeString: " << tokens[2];
-    return;
-  }
-
-  ui::DomKey dom_key;
-  ui::KeyboardCode keyboard_code;
-  if (!ui::DomCodeToUsLayoutDomKey(dom_code, 0 /* flags */, &dom_key,
-                                   &keyboard_code)) {
-    LOG(ERROR) << "Could not convert DomCode to US Layout key: " << tokens[2];
-    return;
-  }
-
   SendKeyEvent(webview.get(), base::Time::Now().ToDeltaSinceWindowsEpoch(),
-               dom_key, dom_code, keyboard_code, true);
+               tokens[2], true);
   SendKeyEvent(webview.get(), base::Time::Now().ToDeltaSinceWindowsEpoch(),
-               dom_key, dom_code, keyboard_code, false);
+               tokens[2], false);
 }
 
 void WebviewClient::SendKeyEvent(const Webview* webview,
                                  const base::TimeDelta& time,
-                                 ui::DomKey dom_key,
-                                 ui::DomCode dom_code,
-                                 ui::KeyboardCode keyboard_code,
+                                 const std::string& key_string,
                                  bool down) {
   auto key_input = std::make_unique<KeyInput>();
-  key_input->set_key_code(keyboard_code);
-  key_input->set_dom_code(static_cast<int32_t>(dom_code));
-  key_input->set_dom_key(static_cast<int32_t>(dom_key));
-
-  // Hardcoded to true for our purposes, as IsCharacter doesn't seem to work
-  // here. Just means we can't test with modifier keys.
-  key_input->set_is_char(true);
+  key_input->set_key_string(key_string);
 
   auto key_event = std::make_unique<InputEvent>();
   key_event->set_event_type(down ? ui::EventType::ET_KEY_PRESSED
diff --git a/chromecast/browser/webview/client/webview.h b/chromecast/browser/webview/client/webview.h
index aedae69..4540f378 100644
--- a/chromecast/browser/webview/client/webview.h
+++ b/chromecast/browser/webview/client/webview.h
@@ -16,9 +16,6 @@
 #include "components/exo/wayland/clients/client_base.h"
 #include "third_party/grpc/src/include/grpcpp/grpcpp.h"
 #include "ui/events/event_constants.h"
-#include "ui/events/keycodes/dom/dom_code.h"
-#include "ui/events/keycodes/dom/dom_key.h"
-#include "ui/events/keycodes/keyboard_codes.h"
 #include "ui/events/types/event_type.h"
 #include "ui/gfx/geometry/point.h"
 
@@ -98,9 +95,7 @@
                       int32_t id);
   void SendKeyEvent(const Webview* webview,
                     const base::TimeDelta& time,
-                    ui::DomKey dom_key,
-                    ui::DomCode dom_code,
-                    ui::KeyboardCode keyboard_code,
+                    const std::string& key_string,
                     bool down);
 
   void SetPosition(const std::vector<std::string>& tokens);
diff --git a/chromecast/browser/webview/proto/webview.proto b/chromecast/browser/webview/proto/webview.proto
index 57d43de2..6835749 100644
--- a/chromecast/browser/webview/proto/webview.proto
+++ b/chromecast/browser/webview/proto/webview.proto
@@ -35,12 +35,11 @@
   AccessibilityTreeInfo accessibility_info = 1;
 }
 
-// These are a translation of ui::Event and children.
 message KeyInput {
-  int32 key_code = 1;
-  int32 dom_code = 2;
-  int32 dom_key = 3;
-  bool is_char = 4;
+  // A string value representing the key character or descriptive key name.
+  // Values of non-character keys follow the web standard key names:
+  // https://www.w3.org/TR/uievents-key/#key-attr-values
+  string key_string = 1;
 }
 
 message TouchInput {
diff --git a/chromecast/browser/webview/web_content_controller.cc b/chromecast/browser/webview/web_content_controller.cc
index 38df6f5..5beda14 100644
--- a/chromecast/browser/webview/web_content_controller.cc
+++ b/chromecast/browser/webview/web_content_controller.cc
@@ -30,6 +30,9 @@
 #include "ui/base/ime/constants.h"
 #include "ui/events/event.h"
 #include "ui/events/event_constants.h"
+#include "ui/events/keycodes/dom/dom_code.h"
+#include "ui/events/keycodes/dom/keycode_converter.h"
+#include "ui/events/keycodes/keyboard_code_conversion.h"
 
 namespace chromecast {
 
@@ -323,14 +326,19 @@
     case ui::ET_KEY_PRESSED:
     case ui::ET_KEY_RELEASED:
       if (ev.has_key()) {
-        ui::KeyEvent evt(
-            type, static_cast<ui::KeyboardCode>(ev.key().key_code()),
-            static_cast<ui::DomCode>(ev.key().dom_code()),
-            ev.flags() | ui::EF_IS_SYNTHESIZED, ui::DomKey(ev.key().dom_key()),
-            base::TimeTicks() +
-                base::TimeDelta::FromMicroseconds(ev.timestamp()),
-            ev.key().is_char());
-
+        ui::DomKey dom_key =
+            ui::KeycodeConverter::KeyStringToDomKey(ev.key().key_string());
+        bool is_char = dom_key.IsCharacter();
+        int32_t key_code = is_char ? dom_key.ToCharacter()
+                                   : NonPrintableDomKeyToKeyboardCode(dom_key);
+        ui::KeyboardCode keyboard_code =
+            static_cast<ui::KeyboardCode>(key_code);
+        ui::KeyEvent evt(type, keyboard_code,
+                         UsLayoutKeyboardCodeToDomCode(keyboard_code),
+                         ev.flags() | ui::EF_IS_SYNTHESIZED, dom_key,
+                         base::TimeTicks() +
+                             base::TimeDelta::FromMicroseconds(ev.timestamp()),
+                         is_char);
         // Marks the simulated key event is from a Virtual Keyboard.
         ui::Event::Properties properties;
         properties[ui::kPropertyFromVK] =
diff --git a/chromeos/BUILD.gn b/chromeos/BUILD.gn
index 1ee2f40..db8343e 100644
--- a/chromeos/BUILD.gn
+++ b/chromeos/BUILD.gn
@@ -271,59 +271,17 @@
       # crbug.com/1115622
       "ui.ChromeLoginGAIA",
 
-      # crbug.com/1097630
-      "security.OpenFDs",
-
-      # crbug.com/1051059
-      "security.SELinuxProcessesARC",
-
-      # crbug.com/1062289
-      "security.NetworkListenersARC",
-      "security.NetworkListenersNonARC",
-
-      # crbug.com/1056163
-      "hwsec.LoginGuest",
-
-      # crbug.com/1059426
-      "ui.ChromeCrashNotLoggedInDirect.breakpad",
-      "ui.ChromeCrashLoggedInDirect.breakpad",
-
-      # crbug.com/1073084
-      "crostini.CopyPaste.wayland_to_x11_stretch_amd64_stable",
-      "crostini.CopyPaste.wayland_to_x11_stretch_arm_stable",
-      "crostini.CopyPaste.wayland_to_x11_buster_amd64_stable",
-      "crostini.CopyPaste.wayland_to_x11_buster_arm_stable",
-
-      # crbug.com/1114654
-      "crostini.Restart.stretch_amd64_stable",
-      "crostini.Restart.stretch_arm_stable",
-      "crostini.Restart.buster_amd64_stable",
-      "crostini.Restart.buster_arm_stable",
-
-      # crbug.com/1098810
-      "security.SELinuxFilesSystem",
-
       # crbug.com/1099695
       "platform.Drivefs",
 
-      # crbug.com/1114752
-      "arc.ContainerMount",
-
       # crbug.com/1131496
       "apps.LaunchHelpApp.clamshell_oobe_stable",
       "apps.LaunchHelpApp.tablet_oobe_stable",
 
-      # crbug.com/1131304
-      "printer.PinPrintLexmark.no_pin",
-      "printer.PinPrintLexmark.pin",
-
       # crbug.com/1148036
       "ui.ExistingUserLogin",
       "ui.SigninProfileExtension",
 
-      # crbug.com/1148401
-      "debugd.Printer",
-
       # crbug.com/1154794
       "policy.DefaultGeolocationSetting",
 
diff --git a/chromeos/CHROMEOS_LKGM b/chromeos/CHROMEOS_LKGM
index 18c2b02..765e183e 100644
--- a/chromeos/CHROMEOS_LKGM
+++ b/chromeos/CHROMEOS_LKGM
@@ -1 +1 @@
-13648.0.0
\ No newline at end of file
+13649.0.0
\ No newline at end of file
diff --git a/chromeos/assistant/assistant.gni b/chromeos/assistant/assistant.gni
index c28a144..0f462c2 100644
--- a/chromeos/assistant/assistant.gni
+++ b/chromeos/assistant/assistant.gni
@@ -4,7 +4,6 @@
 declare_args() {
   # Enable assistant implementation based on libassistant.
   enable_cros_libassistant = is_chromeos_ash && is_chrome_branded
-  enable_cros_on_device_assistant = false
 
   # Enable a fake microphone, which can replay audio files as microphone input.
   # See chromeos/assistant/tools/send-audio.sh
diff --git a/chromeos/components/BUILD.gn b/chromeos/components/BUILD.gn
index ce673c01..a152209 100644
--- a/chromeos/components/BUILD.gn
+++ b/chromeos/components/BUILD.gn
@@ -20,7 +20,6 @@
     "//base/test:test_support",
     "//build:chromeos_buildflags",
     "//chromeos/components/account_manager:unit_tests",
-    "//chromeos/components/bloom:unit_tests",
     "//chromeos/components/cdm_factory_daemon:unit_tests",
     "//chromeos/components/diagnostics_ui/backend:unit_tests",
     "//chromeos/components/drivefs:unit_tests",
diff --git a/chromeos/components/bloom/BUILD.gn b/chromeos/components/bloom/BUILD.gn
deleted file mode 100644
index e74fb1c..0000000
--- a/chromeos/components/bloom/BUILD.gn
+++ /dev/null
@@ -1,59 +0,0 @@
-# Copyright 2020 The Chromium Authors. All rights reserved.
-# Use of this source code is governed by a BSD-style license that can be
-# found in the LICENSE file.
-
-source_set("bloom") {
-  sources = [
-    "bloom_controller_impl.cc",
-    "bloom_controller_impl.h",
-    "bloom_interaction.cc",
-    "bloom_interaction.h",
-    "bloom_result_builder.cc",
-    "bloom_result_builder.h",
-    "server/bloom_server_proxy.h",
-    "server/bloom_server_proxy_impl.cc",
-    "server/bloom_server_proxy_impl.h",
-    "server/bloom_url_loader.h",
-    "server/bloom_url_loader_impl.cc",
-    "server/bloom_url_loader_impl.h",
-  ]
-
-  deps = [
-    "//ash/public/cpp",
-    "//base",
-    "//chromeos/components/bloom/public/cpp",
-    "//chromeos/components/bloom/public/cpp:future",
-    "//chromeos/services/assistant/public/shared",
-    "//components/signin/public/identity_manager",
-    "//services/data_decoder/public/cpp",
-    "//services/network/public/cpp",
-    "//ui/gfx",
-  ]
-}
-
-source_set("unit_tests") {
-  testonly = true
-
-  sources = [
-    "bloom_controller_impl_unittest.cc",
-    "bloom_result_builder_unittest.cc",
-    "server/bloom_server_proxy_impl_unittest.cc",
-  ]
-
-  deps = [
-    ":bloom",
-    "//ash/public/cpp",
-    "//base/test:test_support",
-    "//chromeos/components/bloom/public/cpp",
-    "//chromeos/services/assistant/public/shared",
-    "//components/signin/public/identity_manager",
-    "//components/signin/public/identity_manager:test_support",
-    "//services/data_decoder/public/cpp:test_support",
-    "//services/network:test_support",
-    "//services/network/public/cpp",
-    "//testing/gmock",
-    "//testing/gtest",
-    "//ui/gfx",
-    "//ui/gfx:test_support",
-  ]
-}
diff --git a/chromeos/components/bloom/DEPS b/chromeos/components/bloom/DEPS
deleted file mode 100644
index 39c67035..0000000
--- a/chromeos/components/bloom/DEPS
+++ /dev/null
@@ -1,7 +0,0 @@
-include_rules = [
-  "+ash/public",
-  "+components/signin/public/identity_manager",
-  "+services/data_decoder/public/cpp",
-  "+services/network/public",
-  "+ui/gfx",
-]
diff --git a/chromeos/components/bloom/DIR_METADATA b/chromeos/components/bloom/DIR_METADATA
deleted file mode 100644
index 5cf9e51..0000000
--- a/chromeos/components/bloom/DIR_METADATA
+++ /dev/null
@@ -1,3 +0,0 @@
-monorail {
-  component: "UI>Shell>Assistant"
-}
diff --git a/chromeos/components/bloom/OWNERS b/chromeos/components/bloom/OWNERS
deleted file mode 100644
index dd0c97af..0000000
--- a/chromeos/components/bloom/OWNERS
+++ /dev/null
@@ -1 +0,0 @@
-file://chromeos/assistant/OWNERS
diff --git a/chromeos/components/bloom/bloom_controller_impl.cc b/chromeos/components/bloom/bloom_controller_impl.cc
deleted file mode 100644
index 77129b0..0000000
--- a/chromeos/components/bloom/bloom_controller_impl.cc
+++ /dev/null
@@ -1,80 +0,0 @@
-// Copyright 2020 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "chromeos/components/bloom/bloom_controller_impl.h"
-
-#include "base/logging.h"
-#include "chromeos/components/bloom/bloom_interaction.h"
-#include "chromeos/components/bloom/public/cpp/bloom_result.h"
-#include "chromeos/components/bloom/public/cpp/bloom_screenshot_delegate.h"
-#include "chromeos/components/bloom/public/cpp/bloom_ui_delegate.h"
-#include "chromeos/components/bloom/server/bloom_server_proxy.h"
-
-namespace chromeos {
-namespace bloom {
-
-BloomControllerImpl::BloomControllerImpl(
-    signin::IdentityManager* identity_manager,
-    std::unique_ptr<BloomServerProxy> server_proxy)
-    : identity_manager_(identity_manager),
-      screenshot_delegate_(nullptr),
-      ui_delegate_(nullptr),
-      server_proxy_(std::move(server_proxy)) {
-  DCHECK(identity_manager_);
-  DCHECK(server_proxy_);
-}
-
-BloomControllerImpl::~BloomControllerImpl() = default;
-
-void BloomControllerImpl::SetScreenshotDelegate(
-    std::unique_ptr<BloomScreenshotDelegate> value) {
-  DCHECK(value);
-  screenshot_delegate_ = std::move(value);
-}
-
-void BloomControllerImpl::SetUiDelegate(
-    std::unique_ptr<BloomUiDelegate> value) {
-  DCHECK(value);
-  ui_delegate_ = std::move(value);
-}
-
-void BloomControllerImpl::StartInteraction() {
-  DCHECK(screenshot_delegate_);
-  DCHECK(ui_delegate_);
-  DCHECK(!current_interaction_);
-
-  DVLOG(1) << "Starting Bloom interaction";
-
-  current_interaction_ = std::make_unique<BloomInteraction>(this);
-  current_interaction_->Start();
-
-  ui_delegate_->OnInteractionStarted();
-}
-
-bool BloomControllerImpl::HasInteraction() const {
-  return current_interaction_ != nullptr;
-}
-
-void BloomControllerImpl::ShowUI() {
-  ui_delegate_->OnShowUI();
-}
-
-void BloomControllerImpl::ShowResult(const BloomResult& result) {
-  ui_delegate_->OnShowResult(result);
-}
-
-void BloomControllerImpl::StopInteraction(
-    BloomInteractionResolution resolution) {
-  DCHECK(current_interaction_);
-
-  DVLOG(1) << "Stopping Bloom interaction with resolution "
-           << ToString(resolution);
-
-  current_interaction_ = nullptr;
-
-  ui_delegate_->OnInteractionFinished(resolution);
-}
-
-}  // namespace bloom
-}  // namespace chromeos
diff --git a/chromeos/components/bloom/bloom_controller_impl.h b/chromeos/components/bloom/bloom_controller_impl.h
deleted file mode 100644
index 55f1e354..0000000
--- a/chromeos/components/bloom/bloom_controller_impl.h
+++ /dev/null
@@ -1,63 +0,0 @@
-// Copyright 2020 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef CHROMEOS_COMPONENTS_BLOOM_BLOOM_CONTROLLER_IMPL_H_
-#define CHROMEOS_COMPONENTS_BLOOM_BLOOM_CONTROLLER_IMPL_H_
-
-#include <memory>
-
-#include "chromeos/components/bloom/public/cpp/bloom_controller.h"
-
-namespace signin {
-class IdentityManager;
-}  // namespace signin
-
-namespace chromeos {
-namespace bloom {
-
-class BloomInteraction;
-class BloomScreenshotDelegate;
-class BloomServerProxy;
-class BloomUiDelegate;
-struct BloomResult;
-
-class BloomControllerImpl : public BloomController {
- public:
-  BloomControllerImpl(signin::IdentityManager* identity_manager,
-                      std::unique_ptr<BloomServerProxy> server_proxy);
-  BloomControllerImpl(const BloomControllerImpl&) = delete;
-  BloomControllerImpl& operator=(const BloomControllerImpl&) = delete;
-  ~BloomControllerImpl() override;
-
-  // BloomController implementation:
-  void StartInteraction() override;
-  bool HasInteraction() const override;
-  void StopInteraction(BloomInteractionResolution resolution) override;
-
-  void ShowUI();
-  void ShowResult(const BloomResult& result);
-
-  void SetScreenshotDelegate(
-      std::unique_ptr<BloomScreenshotDelegate> delegate);
-  void SetUiDelegate(std::unique_ptr<BloomUiDelegate> delegate);
-
-  BloomScreenshotDelegate* screenshot_delegate() {
-    return screenshot_delegate_.get();
-  }
-  BloomServerProxy* server_proxy() { return server_proxy_.get(); }
-  signin::IdentityManager* identity_manager() { return identity_manager_; }
-
- private:
-  signin::IdentityManager* const identity_manager_;
-  std::unique_ptr<BloomScreenshotDelegate> screenshot_delegate_;
-  std::unique_ptr<BloomUiDelegate> ui_delegate_;
-  std::unique_ptr<BloomServerProxy> server_proxy_;
-
-  std::unique_ptr<BloomInteraction> current_interaction_;
-};
-
-}  // namespace bloom
-}  // namespace chromeos
-
-#endif  // CHROMEOS_COMPONENTS_BLOOM_BLOOM_CONTROLLER_IMPL_H_
diff --git a/chromeos/components/bloom/bloom_controller_impl_unittest.cc b/chromeos/components/bloom/bloom_controller_impl_unittest.cc
deleted file mode 100644
index 3b787a2e..0000000
--- a/chromeos/components/bloom/bloom_controller_impl_unittest.cc
+++ /dev/null
@@ -1,364 +0,0 @@
-// Copyright 2020 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "chromeos/components/bloom/bloom_controller_impl.h"
-#include "base/test/task_environment.h"
-#include "chromeos/components/bloom/public/cpp/bloom_interaction_resolution.h"
-#include "chromeos/components/bloom/public/cpp/bloom_result.h"
-#include "chromeos/components/bloom/public/cpp/bloom_screenshot_delegate.h"
-#include "chromeos/components/bloom/public/cpp/bloom_ui_delegate.h"
-#include "chromeos/components/bloom/server/bloom_server_proxy.h"
-#include "chromeos/services/assistant/public/shared/constants.h"
-#include "components/signin/public/identity_manager/identity_manager.h"
-#include "components/signin/public/identity_manager/identity_test_environment.h"
-#include "components/signin/public/identity_manager/scope_set.h"
-#include "testing/gmock/include/gmock/gmock.h"
-#include "testing/gtest/include/gtest/gtest.h"
-#include "ui/gfx/image/image.h"
-#include "ui/gfx/image/image_unittest_util.h"
-
-namespace chromeos {
-namespace bloom {
-
-namespace {
-
-using ::testing::_;
-using ::testing::AnyNumber;
-using ::testing::Invoke;
-using ::testing::NiceMock;
-using ::testing::WithArgs;
-
-const char kEmail[] = "test@gmail.com";
-
-#define EXPECT_NO_CALLS(args...) EXPECT_CALL(args).Times(0)
-
-BloomResult ResultWithQuery(const std::string& query) {
-  BloomResult result;
-  result.query = query;
-  return result;
-}
-
-class ScreenshotDelegateMock : public BloomScreenshotDelegate {
- public:
-  ScreenshotDelegateMock() {
-    ON_CALL(*this, TakeScreenshot).WillByDefault([this](Callback callback) {
-      // Store the callback passed to TakeScreenshot() so we can invoke it
-      // later from our tests.
-      this->callback_ = std::move(callback);
-    });
-  }
-  ~ScreenshotDelegateMock() override = default;
-
-  MOCK_METHOD(void, TakeScreenshot, (Callback callback));
-
-  // Sends the given screenshot to the callback passed to TakeScreenshot()
-  void SendScreenshot(
-      const base::Optional<gfx::Image>& screenshot = gfx::Image()) {
-    EXPECT_TRUE(callback_) << "TakeScreenshot() was never called.";
-
-    if (callback_)
-      std::move(callback_).Run(screenshot);
-  }
-
-  // Signal that taking the screenshot has failed.
-  void SendScreenshotFailed() { SendScreenshot(base::nullopt); }
-
- private:
-  Callback callback_;
-};
-
-class BloomUiDelegateMock : public BloomUiDelegate {
- public:
-  MOCK_METHOD(void, OnInteractionStarted, ());
-  MOCK_METHOD(void, OnShowUI, ());
-  MOCK_METHOD(void, OnShowResult, (const BloomResult& result));
-  MOCK_METHOD(void,
-              OnInteractionFinished,
-              (BloomInteractionResolution resolution));
-};
-
-// Helper class that will track the state of the Bloom interaction,
-// So we can easily test if interactions are started/stopped correctly.
-class BloomInteractionTracker : public BloomUiDelegate {
- public:
-  void OnInteractionStarted() override {
-    EXPECT_FALSE(has_interaction_);
-    has_interaction_ = true;
-  }
-
-  void OnShowUI() override { EXPECT_TRUE(has_interaction_); }
-
-  void OnShowResult(const BloomResult& html) override {
-    EXPECT_TRUE(has_interaction_);
-  }
-
-  void OnInteractionFinished(BloomInteractionResolution resolution) override {
-    EXPECT_TRUE(has_interaction_);
-    has_interaction_ = false;
-    last_resolution_ = resolution;
-  }
-
-  bool HasInteraction() const { return has_interaction_; }
-  BloomInteractionResolution GetLastInteractionResolution() const {
-    return last_resolution_;
-  }
-
- private:
-  bool has_interaction_ = false;
-  BloomInteractionResolution last_resolution_ =
-      BloomInteractionResolution::kNormal;
-};
-
-class BloomServerProxyMock : public BloomServerProxy {
- public:
-  BloomServerProxyMock() {
-    ON_CALL(*this, AnalyzeProblem)
-        .WillByDefault([this](const std::string& access_token,
-                              const gfx::Image& screenshot, Callback callback) {
-          // Store the callback passed to AnalyzeProblem() so we can invoke it
-          // later from our tests.
-          this->callback_ = std::move(callback);
-        });
-  }
-  MOCK_METHOD(void,
-              AnalyzeProblem,
-              (const std::string& access_token,
-               const gfx::Image& screenshot,
-               Callback callback));
-
-  void SendResponse(base::Optional<BloomResult> result = BloomResult()) {
-    EXPECT_TRUE(callback_) << "AnalyzeProblem() was never called.";
-
-    if (callback_)
-      std::move(callback_).Run(std::move(result));
-  }
-
-  void SendResponseFailure() { SendResponse(base::nullopt); }
-
- private:
-  Callback callback_;
-};
-
-}  // namespace
-
-void PrintTo(const BloomInteractionResolution& value, std::ostream* output) {
-#define CASE(name)                         \
-  ({                                       \
-    case BloomInteractionResolution::name: \
-      *output << #name;                    \
-      break;                               \
-  })
-
-  switch (value) {
-    CASE(kNormal);
-    CASE(kNoScreenshot);
-    CASE(kNoAccessToken);
-    CASE(kServerError);
-  }
-}
-
-class BloomControllerImplTest : public testing::Test {
- public:
-  void SetUp() override {
-    controller_.SetScreenshotDelegate(
-        std::make_unique<NiceMock<ScreenshotDelegateMock>>());
-    controller_.SetUiDelegate(
-        std::make_unique<NiceMock<BloomUiDelegateMock>>());
-
-    identity_test_env_.MakePrimaryAccountAvailable(kEmail);
-  }
-
- protected:
-  void StartInteractionAndSendAccessTokenAndScreenshot(
-      std::string access_token = "<access-token>",
-      gfx::Image screenshot = gfx::Image()) {
-    controller().StartInteraction();
-    IssueAccessToken(access_token);
-    screenshot_delegate_mock().SendScreenshot(screenshot);
-  }
-
-  // Returns the |ScopeSet| that was passed to the access token request.
-  // Fails the test and returns an empty |ScopeSet| if there were no access
-  // token requests.
-  signin::ScopeSet GetRequestedAccessTokenScopes() {
-    std::vector<signin::IdentityTestEnvironment::PendingRequest> requests =
-        identity_test_env_.GetPendingAccessTokenRequests();
-    EXPECT_EQ(requests.size(), 1u);
-
-    if (requests.size())
-      return requests.begin()->scopes;
-    else
-      return signin::ScopeSet();
-  }
-
-  BloomControllerImpl& controller() { return controller_; }
-
-  ScreenshotDelegateMock& screenshot_delegate_mock() {
-    return *static_cast<ScreenshotDelegateMock*>(
-        controller_.screenshot_delegate());
-  }
-
-  BloomUiDelegateMock* AddUiDelegateMock() {
-    auto delegate = std::make_unique<NiceMock<BloomUiDelegateMock>>();
-    auto* raw_ptr = delegate.get();
-    controller().SetUiDelegate(std::move(delegate));
-    return raw_ptr;
-  }
-
-  BloomInteractionTracker* AddInteractionTracker() {
-    auto delegate = std::make_unique<BloomInteractionTracker>();
-    auto* raw_ptr = delegate.get();
-    controller().SetUiDelegate(std::move(delegate));
-    return raw_ptr;
-  }
-
-  BloomServerProxyMock& bloom_server() {
-    return *static_cast<BloomServerProxyMock*>(controller_.server_proxy());
-  }
-
-  void IssueAccessToken(std::string token = std::string("<access-token>")) {
-    identity_test_env_.WaitForAccessTokenRequestIfNecessaryAndRespondWithToken(
-        token, /*expiration=*/base::Time::Max());
-  }
-
-  void FailAccessToken(GoogleServiceAuthError::State error =
-                           GoogleServiceAuthError::CONNECTION_FAILED) {
-    identity_test_env_.WaitForAccessTokenRequestIfNecessaryAndRespondWithError(
-        GoogleServiceAuthError(error));
-  }
-
-  base::test::TaskEnvironment task_env_;
-  signin::IdentityTestEnvironment identity_test_env_;
-
-  BloomControllerImpl controller_{
-      identity_test_env_.identity_manager(),
-      std::make_unique<NiceMock<BloomServerProxyMock>>()};
-};
-
-TEST_F(BloomControllerImplTest, ShouldBeReturnedWhenCallingGet) {
-  EXPECT_EQ(&controller(), BloomController::Get());
-}
-
-TEST_F(BloomControllerImplTest, ShouldFetchAccessToken) {
-  controller().StartInteraction();
-
-  ASSERT_TRUE(identity_test_env_.IsAccessTokenRequestPending());
-  signin::ScopeSet expected_scopes;
-  expected_scopes.insert(assistant::kBloomScope);
-  signin::ScopeSet actual_scopes = GetRequestedAccessTokenScopes();
-  EXPECT_EQ(expected_scopes, actual_scopes);
-}
-
-TEST_F(BloomControllerImplTest, ShouldTakeScreenshot) {
-  EXPECT_CALL(screenshot_delegate_mock(), TakeScreenshot);
-
-  controller().StartInteraction();
-}
-
-TEST_F(BloomControllerImplTest, ShouldAbortWhenFetchingAccessTokenFails) {
-  auto* interaction_tracker = AddInteractionTracker();
-
-  controller().StartInteraction();
-  screenshot_delegate_mock().SendScreenshot();
-
-  FailAccessToken();
-
-  EXPECT_FALSE(interaction_tracker->HasInteraction());
-  EXPECT_EQ(BloomInteractionResolution::kNoAccessToken,
-            interaction_tracker->GetLastInteractionResolution());
-}
-
-TEST_F(BloomControllerImplTest, ShouldAbortWhenFetchingScreenshotFails) {
-  auto* interaction_tracker = AddInteractionTracker();
-
-  controller().StartInteraction();
-  IssueAccessToken();
-
-  screenshot_delegate_mock().SendScreenshotFailed();
-
-  EXPECT_FALSE(interaction_tracker->HasInteraction());
-  EXPECT_EQ(BloomInteractionResolution::kNoScreenshot,
-            interaction_tracker->GetLastInteractionResolution());
-}
-
-TEST_F(BloomControllerImplTest,
-       ShouldPassAccessTokenAndScreenshotToBloomServer) {
-  const std::string& access_token = "<the-access-token>";
-  const gfx::Image screenshot = gfx::test::CreateImage(10, 20);
-
-  EXPECT_CALL(bloom_server(), AnalyzeProblem(access_token, screenshot, _));
-
-  StartInteractionAndSendAccessTokenAndScreenshot(access_token, screenshot);
-}
-
-TEST_F(BloomControllerImplTest, ShouldAbortWhenBloomServerFails) {
-  auto* interaction_tracker = AddInteractionTracker();
-  StartInteractionAndSendAccessTokenAndScreenshot();
-
-  bloom_server().SendResponseFailure();
-
-  EXPECT_FALSE(interaction_tracker->HasInteraction());
-  EXPECT_EQ(BloomInteractionResolution::kServerError,
-            interaction_tracker->GetLastInteractionResolution());
-}
-
-////////////////////////////////////////////////////////////////////////////////
-///
-/// Below are the tests to ensure the BloomUiDelegate is invoked.
-///
-////////////////////////////////////////////////////////////////////////////////
-
-using BloomUiDelegateTest = BloomControllerImplTest;
-
-TEST_F(BloomUiDelegateTest,
-       ShouldCallOnInteractionStartedWhenBloomInteractionStarts) {
-  auto* delegate = AddUiDelegateMock();
-  EXPECT_CALL(*delegate, OnInteractionStarted);
-
-  controller().StartInteraction();
-}
-
-TEST_F(BloomUiDelegateTest,
-       ShouldCallOnShowUIWhenAccessTokenAndScreenshotAreReady) {
-  auto* delegate = AddUiDelegateMock();
-
-  EXPECT_CALL(*delegate, OnShowUI);
-
-  controller().StartInteraction();
-  IssueAccessToken();
-  screenshot_delegate_mock().SendScreenshot();
-}
-
-TEST_F(BloomUiDelegateTest, ShouldNotCallOnShowUIBeforeAccessTokenArrives) {
-  auto* delegate = AddUiDelegateMock();
-
-  EXPECT_NO_CALLS(*delegate, OnShowUI);
-
-  controller().StartInteraction();
-  screenshot_delegate_mock().SendScreenshot();
-}
-
-TEST_F(BloomUiDelegateTest, ShouldNotCallOnShowUIBeforeScreenshotArrives) {
-  auto* delegate = AddUiDelegateMock();
-
-  EXPECT_NO_CALLS(*delegate, OnShowUI);
-
-  controller().StartInteraction();
-  IssueAccessToken();
-}
-
-TEST_F(BloomUiDelegateTest, ShouldForwardServerResponse) {
-  auto* delegate = AddUiDelegateMock();
-  StartInteractionAndSendAccessTokenAndScreenshot();
-
-  EXPECT_CALL(*delegate, OnShowResult)
-      .WillOnce(WithArgs<0>(Invoke([](const BloomResult& result) {
-        EXPECT_EQ("The expected result", result.query);
-      })));
-
-  bloom_server().SendResponse(ResultWithQuery("The expected result"));
-}
-
-}  // namespace bloom
-}  // namespace chromeos
diff --git a/chromeos/components/bloom/bloom_interaction.cc b/chromeos/components/bloom/bloom_interaction.cc
deleted file mode 100644
index 482ef23..0000000
--- a/chromeos/components/bloom/bloom_interaction.cc
+++ /dev/null
@@ -1,109 +0,0 @@
-// Copyright 2020 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "chromeos/components/bloom/bloom_interaction.h"
-
-#include "base/bind.h"
-#include "base/memory/weak_ptr.h"
-#include "chromeos/components/bloom/bloom_controller_impl.h"
-#include "chromeos/components/bloom/bloom_interaction.h"
-#include "chromeos/components/bloom/public/cpp/bloom_result.h"
-#include "chromeos/components/bloom/public/cpp/bloom_screenshot_delegate.h"
-#include "chromeos/components/bloom/public/cpp/future_value.h"
-#include "chromeos/components/bloom/server/bloom_server_proxy.h"
-#include "chromeos/services/assistant/public/shared/constants.h"
-#include "components/signin/public/identity_manager/access_token_info.h"
-#include "components/signin/public/identity_manager/primary_account_access_token_fetcher.h"
-#include "components/signin/public/identity_manager/scope_set.h"
-#include "ui/gfx/image/image.h"
-
-namespace chromeos {
-namespace bloom {
-
-BloomInteraction::BloomInteraction(BloomControllerImpl* controller)
-    : controller_(controller), weak_ptr_factory_(this) {}
-
-BloomInteraction::~BloomInteraction() {
-  // TODO(jeroendh): Cancel ongoing processes here, like the screenshot fetcher
-  // and the bloom server requests.
-}
-
-void BloomInteraction::Start() {
-  FetchAccessTokenAsync();
-  FetchScreenshotAsync();
-
-  WhenBothAreReady(access_token_future_.get(), screenshot_future_.get(),
-                   Bind(&BloomInteraction::StartAssistantInteraction));
-}
-
-void BloomInteraction::StartAssistantInteraction(std::string&& access_token,
-                                                 gfx::Image&& screenshot) {
-  DVLOG(2) << "Opening assistant UI";
-  controller_->ShowUI();
-  DVLOG(2) << "Contacting Bloom server";
-  controller_->server_proxy()->AnalyzeProblem(
-      access_token, std::move(screenshot),
-      Bind(&BloomInteraction::OnServerResponse));
-}
-
-void BloomInteraction::OnServerResponse(base::Optional<BloomResult> result) {
-  if (!result) {
-    controller_->StopInteraction(BloomInteractionResolution ::kServerError);
-    return;
-  }
-
-  DVLOG(2) << "Got server response";
-  controller_->ShowResult(std::move(result.value()));
-}
-
-void BloomInteraction::FetchAccessTokenAsync() {
-  DVLOG(2) << "Fetching access token";
-
-  signin::ScopeSet scopes;
-  scopes.insert(assistant::kBloomScope);
-
-  auto mode =
-      signin::PrimaryAccountAccessTokenFetcher::Mode::kWaitUntilAvailable;
-
-  access_token_fetcher_ =
-      std::make_unique<signin::PrimaryAccountAccessTokenFetcher>(
-          /*consumer_name=*/"BloomAccessTokenFetcher",
-          controller_->identity_manager(), scopes,
-          Bind(&BloomInteraction::OnAccessTokenRequestCompleted), mode);
-  access_token_future_ = std::make_unique<AccessTokenFuture>();
-}
-
-void BloomInteraction::FetchScreenshotAsync() {
-  controller_->screenshot_delegate()->TakeScreenshot(
-      Bind(&BloomInteraction::OnScreenshotReady));
-  screenshot_future_ = std::make_unique<ScreenshotFuture>();
-}
-
-void BloomInteraction::OnAccessTokenRequestCompleted(
-    GoogleServiceAuthError error,
-    signin::AccessTokenInfo access_token_info) {
-  if (error.state() != GoogleServiceAuthError::NONE) {
-    LOG(WARNING) << "Failed to fetch the access token";
-    controller_->StopInteraction(BloomInteractionResolution::kNoAccessToken);
-    return;
-  }
-
-  DVLOG(2) << "Received access token";
-  access_token_future_->SetValue(std::move(access_token_info.token));
-}
-
-void BloomInteraction::OnScreenshotReady(
-    base::Optional<gfx::Image> screenshot) {
-  if (!screenshot) {
-    LOG(WARNING) << "Failed to take the screenshot";
-    controller_->StopInteraction(BloomInteractionResolution::kNoScreenshot);
-    return;
-  }
-
-  DVLOG(2) << "Received screenshot";
-  screenshot_future_->SetValue(std::move(screenshot.value()));
-}
-
-}  // namespace bloom
-}  // namespace chromeos
diff --git a/chromeos/components/bloom/bloom_interaction.h b/chromeos/components/bloom/bloom_interaction.h
deleted file mode 100644
index ea31f7f..0000000
--- a/chromeos/components/bloom/bloom_interaction.h
+++ /dev/null
@@ -1,84 +0,0 @@
-// Copyright 2020 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef CHROMEOS_COMPONENTS_BLOOM_BLOOM_INTERACTION_H_
-#define CHROMEOS_COMPONENTS_BLOOM_BLOOM_INTERACTION_H_
-
-#include <string>
-#include "base/bind.h"
-#include "base/callback_forward.h"
-#include "base/optional.h"
-
-class GoogleServiceAuthError;
-
-namespace gfx {
-class Image;
-}
-
-namespace signin {
-struct AccessTokenInfo;
-class PrimaryAccountAccessTokenFetcher;
-}  // namespace signin
-
-namespace chromeos {
-namespace bloom {
-
-class BloomControllerImpl;
-struct BloomResult;
-
-template <typename _Type>
-class FutureValue;
-using AccessTokenFuture = FutureValue<std::string>;
-using ScreenshotFuture = FutureValue<gfx::Image>;
-
-// A single Bloom interaction. This will:
-//    * Fetch the access token and screenshot.
-//    * Start the Assistant interaction (and open the UI).
-//    * Fetch the Bloom response and forward it to the Assistant interaction.
-class BloomInteraction {
-  using StartCallback = base::OnceCallback<void(const std::string& access_token,
-                                                gfx::Image&& screenshot)>;
-
- public:
-  explicit BloomInteraction(BloomControllerImpl* controller);
-
-  BloomInteraction(const BloomInteraction&) = delete;
-  BloomInteraction& operator=(const BloomInteraction&) = delete;
-  ~BloomInteraction();
-
-  void Start();
-
- private:
-  void StartAssistantInteraction(std::string&& access_token,
-                                 gfx::Image&& screenshot);
-
-  void OnServerResponse(base::Optional<BloomResult> html);
-
-  void FetchAccessTokenAsync();
-  void FetchScreenshotAsync();
-
-  void OnAccessTokenRequestCompleted(GoogleServiceAuthError error,
-                                     signin::AccessTokenInfo access_token_info);
-  void OnScreenshotReady(base::Optional<gfx::Image> screenshot);
-
-  template <typename _Method, typename... Args>
-  auto Bind(_Method method, Args&&... args) {
-    return base::BindOnce(method, weak_ptr_factory_.GetWeakPtr(),
-                          std::forward<Args>(args)...);
-  }
-
-  BloomControllerImpl* const controller_;
-
-  std::unique_ptr<signin::PrimaryAccountAccessTokenFetcher>
-      access_token_fetcher_;
-  std::unique_ptr<AccessTokenFuture> access_token_future_;
-  std::unique_ptr<ScreenshotFuture> screenshot_future_;
-
-  base::WeakPtrFactory<BloomInteraction> weak_ptr_factory_;
-};
-
-}  // namespace bloom
-}  // namespace chromeos
-
-#endif  // CHROMEOS_COMPONENTS_BLOOM_BLOOM_INTERACTION_H_
diff --git a/chromeos/components/bloom/bloom_result_builder.cc b/chromeos/components/bloom/bloom_result_builder.cc
deleted file mode 100644
index eb71671..0000000
--- a/chromeos/components/bloom/bloom_result_builder.cc
+++ /dev/null
@@ -1,248 +0,0 @@
-// Copyright 2020 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "chromeos/components/bloom/bloom_result_builder.h"
-
-#include <memory>
-#include <utility>
-
-#include "base/json/json_writer.h"
-#include "base/logging.h"
-#include "base/strings/string_piece.h"
-#include "base/strings/stringprintf.h"
-#include "base/values.h"
-
-namespace chromeos {
-namespace bloom {
-
-namespace {
-
-std::string ToString(const base::Value& json) {
-  std::string result;
-  base::JSONWriter::WriteWithOptions(
-      json, base::JSONWriter::OPTIONS_PRETTY_PRINT, &result);
-  return result;
-}
-
-}  // namespace
-
-BloomResultBuilder::BloomResultBuilder() = default;
-BloomResultBuilder::~BloomResultBuilder() = default;
-
-BloomResult BloomResultBuilder::Build(const base::Value& root) {
-  BloomResult result;
-
-  result.query = GetQuery(root);
-
-  for (const auto& section : FindList("contentGroups", root).GetList())
-    result.sections.push_back(BuildSection(section));
-
-  return result;
-}
-
-std::string BloomResultBuilder::GetQuery(const base::Value& root) {
-  return FindString("query.text", root);
-}
-
-BloomResultSection BloomResultBuilder::BuildSection(
-    const base::Value& section) {
-  BloomResultSection result;
-
-  result.title = FindString("title", section);
-
-  for (const auto& entry : FindList("results", section).GetList()) {
-    const std::string& type = FindString("type", entry);
-
-    if (type == "QA")
-      result.entries.push_back(BuildQuestionAndAnswer(entry));
-    else if (type == "EXPLAINER")
-      result.entries.push_back(BuildExplainer(entry));
-    else if (type == "VIDEO_PROCEDURAL")
-      result.entries.push_back(BuildVideo(entry));
-    else if (type == "WEB_RESULT")
-      result.entries.push_back(BuildWebResult(entry));
-    else
-      LOG(WARNING) << "Unknown section type '" << type << "'";
-  }
-
-  return result;
-}
-
-std::unique_ptr<BloomQuestionAndAnswerEntry>
-BloomResultBuilder::BuildQuestionAndAnswer(const base::Value& entry) {
-  auto result = std::make_unique<BloomQuestionAndAnswerEntry>();
-
-  result->question = BuildTextElement(FindNthElement(entry, 0));
-  result->answer = BuildTextElement(FindNthElement(entry, 1));
-  result->source = BuildSourceElement(FindNthElement(entry, 2));
-
-  return result;
-}
-
-std::unique_ptr<BloomExplainerEntry> BloomResultBuilder::BuildExplainer(
-    const base::Value& entry) {
-  auto result = std::make_unique<BloomExplainerEntry>();
-
-  result->title = BuildTitleElement(FindNthElement(entry, 0));
-  result->image = BuildImageElement(FindNthElement(entry, 1));
-
-  auto elements = FindList("elements", entry).GetList();
-  // |index| starts at 2 because we've already consumed the title and the
-  // image.
-  for (size_t index = 2; index < elements.size(); index++) {
-    auto el = BuildElement(elements[index]);
-    if (el)
-      result->elements.push_back(std::move(el));
-  }
-
-  return result;
-}
-
-std::unique_ptr<BloomVideoEntry> BloomResultBuilder::BuildVideo(
-    const base::Value& entry) {
-  auto result = std::make_unique<BloomVideoEntry>();
-
-  result->video = BuildVideoElement(FindNthElement(entry, 0));
-  result->source = BuildSourceElement(FindNthElement(entry, 1));
-
-  return result;
-}
-
-std::unique_ptr<BloomWebResultEntry> BloomResultBuilder::BuildWebResult(
-    const base::Value& entry) {
-  auto result = std::make_unique<BloomWebResultEntry>();
-
-  result->title = BuildTextElement(FindNthElement(entry, 0));
-  result->snippet = BuildTextElement(FindNthElement(entry, 1));
-  result->source = BuildSourceElement(FindNthElement(entry, 2));
-
-  return result;
-}
-
-std::unique_ptr<BloomElement> BloomResultBuilder::BuildElement(
-    const base::Value& element) {
-  if (HasKey("text", element))
-    return std::make_unique<BloomTextElement>(BuildTextElement(element));
-  if (HasKey("image", element))
-    return std::make_unique<BloomImageElement>(BuildImageElement(element));
-  if (HasKey("math", element))
-    return std::make_unique<BloomMathElement>(BuildMathElement(element));
-  if (HasKey("title", element))
-    return std::make_unique<BloomTitleElement>(BuildTitleElement(element));
-  if (HasKey("attribution", element))
-    return std::make_unique<BloomSourceElement>(BuildSourceElement(element));
-  if (HasKey("video", element))
-    return std::make_unique<BloomVideoElement>(BuildVideoElement(element));
-
-  LOG(WARNING) << "Received element of unknown type. " << ToString(element);
-  return nullptr;
-}
-
-BloomImageElement BloomResultBuilder::BuildImageElement(
-    const base::Value& element) {
-  BloomImageElement result;
-  result.description = FindString("image.description", element);
-  result.url = GURL(FindString("image.url", element));
-  result.width = FindInt("image.width", element);
-  result.height = FindInt("image.height", element);
-  return result;
-}
-
-BloomMathElement BloomResultBuilder::BuildMathElement(
-    const base::Value& element) {
-  BloomMathElement result;
-  result.description = FindString("math.accessibilityDescription", element);
-  result.latex = FindString("math.latex", element);
-  return result;
-}
-
-BloomSourceElement BloomResultBuilder::BuildSourceElement(
-    const base::Value& element) {
-  BloomSourceElement result;
-  result.text = FindString("attribution.title", element);
-  result.favicon_url = GURL(FindString("attribution.faviconUrl", element));
-  result.url = GURL(FindString("url", element));
-  return result;
-}
-
-BloomTextElement BloomResultBuilder::BuildTextElement(
-    const base::Value& element) {
-  BloomTextElement result;
-  result.text = FindString("text.markdown", element);
-  return result;
-}
-
-BloomTitleElement BloomResultBuilder::BuildTitleElement(
-    const base::Value& element) {
-  BloomTitleElement result;
-  result.text = FindString("title.text", element);
-  return result;
-}
-
-BloomVideoElement BloomResultBuilder::BuildVideoElement(
-    const base::Value& element) {
-  BloomVideoElement result;
-  result.url = GURL(FindString("video.url", element));
-  result.title = FindString("video.title", element);
-  result.description = FindString("video.description", element);
-  result.thumbnail_url = GURL(FindString("video.thumbnailUrl", element));
-  result.video_id = FindString("video.videoId", element);
-  result.start_time = FindString("video.startTime", element);
-  result.duration = FindString("video.duration", element);
-  result.channel_title = FindString("video.channelTitle", element);
-  result.number_of_likes =
-      base::StringPrintf("%i", FindInt("video.numberOfLikes", element));
-  result.published_time = FindString("video.publishedTime", element);
-  result.number_of_views = FindString("video.numberOfViews", element);
-  return result;
-}
-
-bool BloomResultBuilder::HasKey(base::StringPiece key,
-                                const base::Value& parent) const {
-  return parent.FindKey(key) != nullptr;
-}
-
-const base::Value& BloomResultBuilder::FindList(
-    base::StringPiece key_path,
-    const base::Value& parent) const {
-  const base::Value* value = parent.FindListPath(key_path);
-  if (value)
-    return *value;
-
-  return default_list_;
-}
-
-int BloomResultBuilder::FindInt(base::StringPiece key_path,
-                                const base::Value& parent) const {
-  base::Optional<int> value = parent.FindIntPath(key_path);
-  return value.value_or(0);
-}
-
-const std::string& BloomResultBuilder::FindString(
-    base::StringPiece key_path,
-    const base::Value& parent) const {
-  const std::string* value = parent.FindStringPath(key_path);
-  if (value)
-    return *value;
-
-  return default_string_;
-}
-
-const base::Value& BloomResultBuilder::FindElement(const ConstListView& list,
-                                                   size_t index) const {
-  if (list.size() > index)
-    return list[index];
-
-  // Return a dictionary because element is a dictionary.
-  return default_dict_;
-}
-
-const base::Value& BloomResultBuilder::FindNthElement(const base::Value& entry,
-                                                      size_t index) const {
-  auto elements = FindList("elements", entry).GetList();
-  return FindElement(elements, index);
-}
-
-}  // namespace bloom
-}  // namespace chromeos
diff --git a/chromeos/components/bloom/bloom_result_builder.h b/chromeos/components/bloom/bloom_result_builder.h
deleted file mode 100644
index 4d1ef96..0000000
--- a/chromeos/components/bloom/bloom_result_builder.h
+++ /dev/null
@@ -1,74 +0,0 @@
-// Copyright 2020 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef CHROMEOS_COMPONENTS_BLOOM_BLOOM_RESULT_BUILDER_H_
-#define CHROMEOS_COMPONENTS_BLOOM_BLOOM_RESULT_BUILDER_H_
-
-#include <memory>
-
-#include "base/strings/string_piece_forward.h"
-#include "base/values.h"
-#include "chromeos/components/bloom/public/cpp/bloom_result.h"
-
-namespace base {
-class Value;
-}  // namespace base
-
-namespace chromeos {
-namespace bloom {
-
-// Helper class that converts the Bloom server response into a formatted
-// result that can be displayed in the Assistant UI.
-class BloomResultBuilder {
- public:
-  BloomResultBuilder();
-  BloomResultBuilder(BloomResultBuilder&) = delete;
-  BloomResultBuilder& operator=(BloomResultBuilder&) = delete;
-  ~BloomResultBuilder();
-
-  BloomResult Build(const base::Value& root);
-
- private:
-  using ConstListView = base::Value::ConstListView;
-
-  std::string GetQuery(const base::Value& root);
-  BloomResultSection BuildSection(const base::Value& section);
-
-  std::unique_ptr<BloomQuestionAndAnswerEntry> BuildQuestionAndAnswer(
-      const base::Value& entry);
-  std::unique_ptr<BloomExplainerEntry> BuildExplainer(const base::Value& entry);
-  std::unique_ptr<BloomVideoEntry> BuildVideo(const base::Value& entry);
-  std::unique_ptr<BloomWebResultEntry> BuildWebResult(const base::Value& entry);
-
-  // This can be |nullptr| if the element is of an unknown type.
-  std::unique_ptr<BloomElement> BuildElement(const base::Value& element);
-  BloomImageElement BuildImageElement(const base::Value& element);
-  BloomMathElement BuildMathElement(const base::Value& element);
-  BloomSourceElement BuildSourceElement(const base::Value& element);
-  BloomTextElement BuildTextElement(const base::Value& element);
-  BloomTitleElement BuildTitleElement(const base::Value& element);
-  BloomVideoElement BuildVideoElement(const base::Value& element);
-
-  bool HasKey(base::StringPiece key, const base::Value& parent) const;
-  const base::Value& FindList(base::StringPiece key_path,
-                              const base::Value& parent) const;
-  int FindInt(base::StringPiece key_path, const base::Value& parent) const;
-  const std::string& FindString(base::StringPiece key_path,
-                                const base::Value& parent) const;
-  const base::Value& FindElement(const ConstListView& list, size_t index) const;
-  const base::Value& FindNthElement(const base::Value& entry,
-                                    size_t index) const;
-
-  // Default values returned when a JSON field is absent.
-  // We use this instead of nullptr to make the code robust to a bug on the
-  // server causing it to send invalid responses.
-  const base::Value default_dict_{base::Value::Type::DICTIONARY};
-  const base::Value default_list_{base::Value::Type::LIST};
-  const std::string default_string_;
-};
-
-}  // namespace bloom
-}  // namespace chromeos
-
-#endif  // CHROMEOS_COMPONENTS_BLOOM_BLOOM_RESULT_BUILDER_H_
diff --git a/chromeos/components/bloom/bloom_result_builder_unittest.cc b/chromeos/components/bloom/bloom_result_builder_unittest.cc
deleted file mode 100644
index 587ab105..0000000
--- a/chromeos/components/bloom/bloom_result_builder_unittest.cc
+++ /dev/null
@@ -1,300 +0,0 @@
-// Copyright 2020 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "chromeos/components/bloom/bloom_result_builder.h"
-
-#include "base/check.h"
-#include "base/json/json_reader.h"
-#include "base/logging.h"
-#include "base/optional.h"
-#include "base/values.h"
-#include "chromeos/components/bloom/bloom_result_builder.h"
-#include "chromeos/components/bloom/public/cpp/bloom_result.h"
-#include "testing/gmock/include/gmock/gmock.h"
-#include "testing/gtest/include/gtest/gtest.h"
-
-namespace chromeos {
-namespace bloom {
-
-namespace {
-
-// Implemented as a macro so we can fail the test when any of the |ASSERT| fail.
-#define GET_NTH_ELEMENT(result, index)       \
-  ({                                         \
-    ASSERT_GE(result.size(), (size_t)index); \
-    result[index].get();                     \
-  })
-
-// Implemented as a macro so we can fail the test when any of the |ASSERT| fail.
-#define GET_FIRST_ENTRY(result)                       \
-  ({                                                  \
-    ASSERT_GE(result.sections.size(), 1u);            \
-    ASSERT_GE(result.sections[0].entries.size(), 1u); \
-    result.sections[0].entries[0].get();              \
-  })
-
-}  // namespace
-
-void PrintTo(BloomResultEntry::Type type, std::ostream* os) {
-  *os << ToString(type);
-}
-
-class BloomResultBuilderTest : public ::testing::Test {
- public:
-  BloomResult BuildResult(const std::string& json_string) {
-    base::JSONReader::ValueWithError json_value =
-        base::JSONReader::ReadAndReturnValueWithError(json_string);
-
-    CHECK(json_value.value) << "Invalid JSON.\n"
-                            << "    Error: " << json_value.error_message << "\n"
-                            << "    JSON: " << json_string;
-
-    return BloomResultBuilder().Build(json_value.value.value());
-  }
-};
-
-TEST_F(BloomResultBuilderTest, ShouldSetQuery) {
-  BloomResult result = BuildResult(R"(
-    {
-      "query": { "text": "The Query" }
-    }
-  )");
-
-  EXPECT_EQ("The Query", result.query);
-}
-
-TEST_F(BloomResultBuilderTest, ShouldAddSectionTitles) {
-  BloomResult result = BuildResult(R"(
-    {
-      "contentGroups": [
-        { "title": "The First Title" },
-        { "title": "The Second Title" }
-      ]
-    }
-  )");
-
-  ASSERT_EQ(2u, result.sections.size());
-  EXPECT_EQ("The First Title", result.sections[0].title);
-  EXPECT_EQ("The Second Title", result.sections[1].title);
-}
-
-TEST_F(BloomResultBuilderTest, ShouldAddQuestionAndAnswerEntry) {
-  BloomResult result = BuildResult(R"(
-    {
-      "contentGroups": [
-        {
-          "results": [
-            {
-              "type": "QA",
-              "elements": [
-                {
-                  "text": { "markdown": "The question" }
-                },
-                {
-                  "text": { "markdown": "The answer" }
-                },
-                {
-                  "attribution": {
-                    "title": "The source",
-                    "faviconUrl": "https://fav.icon"
-                  },
-                  "url": "https://source.url"
-                }
-              ]
-            }
-          ]
-        }
-      ]
-    }
-  )");
-
-  const BloomResultEntry& entry = *GET_FIRST_ENTRY(result);
-
-  ASSERT_EQ(BloomResultEntry::Type::kQuestionAndAnswer, entry.type());
-
-  const BloomQuestionAndAnswerEntry& qa_entry = *entry.AsQuestionAndAnswer();
-
-  EXPECT_EQ("The question", qa_entry.question.text);
-  EXPECT_EQ("The answer", qa_entry.answer.text);
-
-  EXPECT_EQ("The source", qa_entry.source.text);
-  EXPECT_EQ(GURL("https://fav.icon"), qa_entry.source.favicon_url);
-  EXPECT_EQ(GURL("https://source.url"), qa_entry.source.url);
-}
-
-TEST_F(BloomResultBuilderTest, ShouldAddExplainer) {
-  BloomResult result = BuildResult(R"(
-    {
-      "contentGroups": [
-        {
-          "results": [
-            {
-              "type": "EXPLAINER",
-              "elements": [
-                {
-                  "title": { "text": "The title" }
-                },
-                {
-                  "image":  {
-                    "url": "https://image.url",
-                    "description": "The image",
-                    "width": 111,
-                    "height": 222
-                  }
-                },
-                {
-                  "text": { "markdown": "The explanation" }
-                },
-                {
-                  "text": { "markdown": "More explanation" }
-                },
-                {
-                  "math": {
-                    "latex": "The latex formula",
-                    "accessibilityDescription": "A Math result"
-                  }
-                }
-              ]
-            }
-          ]
-        }
-      ]
-    }
-  )");
-
-  const BloomResultEntry& entry = *GET_FIRST_ENTRY(result);
-
-  ASSERT_EQ(BloomResultEntry::Type::kExplainer, entry.type());
-
-  const BloomExplainerEntry& explainer = *entry.AsExplainer();
-
-  EXPECT_EQ("The title", explainer.title.text);
-
-  EXPECT_EQ("The image", explainer.image.description);
-  EXPECT_EQ(GURL("https://image.url"), explainer.image.url);
-  EXPECT_EQ(111, explainer.image.width);
-  EXPECT_EQ(222, explainer.image.height);
-
-  const BloomElement& first_element = *GET_NTH_ELEMENT(explainer.elements, 0);
-  ASSERT_EQ(BloomElement::Type::kText, first_element.type());
-  EXPECT_EQ("The explanation", first_element.AsText()->text);
-
-  const BloomElement& second_element = *GET_NTH_ELEMENT(explainer.elements, 1);
-  ASSERT_EQ(BloomElement::Type::kText, second_element.type());
-  EXPECT_EQ("More explanation", second_element.AsText()->text);
-
-  const BloomElement& third_element = *GET_NTH_ELEMENT(explainer.elements, 2);
-  ASSERT_EQ(BloomElement::Type::kMath, third_element.type());
-  EXPECT_EQ("The latex formula", third_element.AsMath()->latex);
-  EXPECT_EQ("A Math result", third_element.AsMath()->description);
-}
-
-TEST_F(BloomResultBuilderTest, ShouldAddVideo) {
-  BloomResult result = BuildResult(R"(
-    {
-      "contentGroups": [
-        {
-          "results": [
-            {
-              "type": "VIDEO_PROCEDURAL",
-              "elements": [
-                {
-                  "video":  {
-                    "url": "https://video.url",
-                    "title": "The video title",
-                    "description": "The video description",
-                    "thumbnailUrl": "https://thumbnail.url",
-                    "videoId": "The video id",
-                    "startTime": "The start time",
-                    "duration": "The duration",
-                    "channelTitle": "The channel title",
-                    "numberOfLikes": 333,
-                    "publishedTime": "The published time",
-                    "numberOfViews": "666"
-                  }
-                },
-                {
-                  "attribution": {
-                    "title": "The source",
-                    "faviconUrl": "https://fav.icon"
-                  },
-                  "url": "https://source.url"
-                }
-              ]
-            }
-          ]
-        }
-      ]
-    }
-  )");
-
-  const BloomResultEntry& entry = *GET_FIRST_ENTRY(result);
-
-  ASSERT_EQ(BloomResultEntry::Type::kVideo, entry.type());
-
-  const BloomVideoEntry& video = *entry.AsVideo();
-
-  EXPECT_EQ(GURL("https://video.url"), video.video.url);
-  EXPECT_EQ("The video title", video.video.title);
-  EXPECT_EQ("The video description", video.video.description);
-  EXPECT_EQ(GURL("https://thumbnail.url"), video.video.thumbnail_url);
-  EXPECT_EQ("The video id", video.video.video_id);
-  EXPECT_EQ("The start time", video.video.start_time);
-  EXPECT_EQ("The duration", video.video.duration);
-  EXPECT_EQ("The channel title", video.video.channel_title);
-  EXPECT_EQ("333", video.video.number_of_likes);
-  EXPECT_EQ("The published time", video.video.published_time);
-  EXPECT_EQ("666", video.video.number_of_views);
-
-  EXPECT_EQ("The source", video.source.text);
-  EXPECT_EQ(GURL("https://fav.icon"), video.source.favicon_url);
-  EXPECT_EQ(GURL("https://source.url"), video.source.url);
-}
-
-TEST_F(BloomResultBuilderTest, ShouldAddWebResult) {
-  BloomResult result = BuildResult(R"(
-    {
-      "contentGroups": [
-        {
-          "results": [
-            {
-              "type": "WEB_RESULT",
-              "elements": [
-                {
-                  "text": { "markdown": "The title" }
-                },
-                {
-                  "text": { "markdown": "The snippet" }
-                },
-                {
-                  "attribution": {
-                    "title": "The source",
-                    "faviconUrl": "https://fav.icon"
-                  },
-                  "url": "https://source.url"
-                }
-              ]
-            }
-          ]
-        }
-      ]
-    }
-  )");
-
-  const BloomResultEntry& entry = *GET_FIRST_ENTRY(result);
-
-  ASSERT_EQ(BloomResultEntry::Type::kWebResult, entry.type());
-
-  const BloomWebResultEntry& web_result = *entry.AsWebResult();
-
-  EXPECT_EQ("The title", web_result.title.text);
-  EXPECT_EQ("The snippet", web_result.snippet.text);
-
-  EXPECT_EQ("The source", web_result.source.text);
-  EXPECT_EQ(GURL("https://fav.icon"), web_result.source.favicon_url);
-  EXPECT_EQ(GURL("https://source.url"), web_result.source.url);
-}
-
-}  // namespace bloom
-}  // namespace chromeos
diff --git a/chromeos/components/bloom/bloom_server_proxy_impl.cc b/chromeos/components/bloom/bloom_server_proxy_impl.cc
deleted file mode 100644
index 8a36b97..0000000
--- a/chromeos/components/bloom/bloom_server_proxy_impl.cc
+++ /dev/null
@@ -1,20 +0,0 @@
-// Copyright 2020 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "chromeos/components/bloom/bloom_server_proxy_impl.h"
-
-namespace chromeos {
-namespace bloom {
-
-BloomServerProxyImpl::BloomServerProxyImpl() = default;
-BloomServerProxyImpl::~BloomServerProxyImpl() = default;
-
-void BloomServerProxyImpl::AnalyzeProblem(const std::string& access_token,
-                                          const gfx::Image& screenshot,
-                                          Callback callback) {
-  // TODO(jeroendh): implement
-}
-
-}  // namespace bloom
-}  // namespace chromeos
diff --git a/chromeos/components/bloom/bloom_server_proxy_impl.h b/chromeos/components/bloom/bloom_server_proxy_impl.h
deleted file mode 100644
index af6ead3..0000000
--- a/chromeos/components/bloom/bloom_server_proxy_impl.h
+++ /dev/null
@@ -1,26 +0,0 @@
-// Copyright 2020 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef CHROMEOS_COMPONENTS_BLOOM_BLOOM_SERVER_PROXY_IMPL_H_
-#define CHROMEOS_COMPONENTS_BLOOM_BLOOM_SERVER_PROXY_IMPL_H_
-
-#include "chromeos/components/bloom/bloom_server_proxy.h"
-
-namespace chromeos {
-namespace bloom {
-
-class BloomServerProxyImpl : public BloomServerProxy {
- public:
-  BloomServerProxyImpl();
-  ~BloomServerProxyImpl() override;
-
-  void AnalyzeProblem(const std::string& access_token,
-                      const gfx::Image& screenshot,
-                      Callback callback) override;
-};
-
-}  // namespace bloom
-}  // namespace chromeos
-
-#endif  // CHROMEOS_COMPONENTS_BLOOM_BLOOM_SERVER_PROXY_IMPL_H_
diff --git a/chromeos/components/bloom/public/cpp/BUILD.gn b/chromeos/components/bloom/public/cpp/BUILD.gn
deleted file mode 100644
index d068762..0000000
--- a/chromeos/components/bloom/public/cpp/BUILD.gn
+++ /dev/null
@@ -1,54 +0,0 @@
-# Copyright 2020 The Chromium Authors. All rights reserved.
-# Use of this source code is governed by a BSD-style license that can be
-# found in the LICENSE file.
-
-assert(is_chromeos, "Non-Chrome-OS builds must not depend on //chromeos")
-
-component("cpp") {
-  sources = [
-    "bloom_controller.cc",
-    "bloom_controller.h",
-    "bloom_interaction_resolution.cc",
-    "bloom_interaction_resolution.h",
-    "bloom_result.cc",
-    "bloom_result.h",
-    "bloom_screenshot_delegate.h",
-    "bloom_ui_controller.cc",
-    "bloom_ui_controller.h",
-    "bloom_ui_delegate.h",
-  ]
-
-  deps = [
-    "//base",
-    "//url",
-  ]
-
-  defines = [ "IS_BLOOM_IMPL" ]
-
-  # Prevent conflict with other targets called 'cpp'.
-  output_name = "bloom_public"
-}
-
-component("bloom_controller_factory") {
-  sources = [
-    "bloom_controller_factory.cc",
-    "bloom_controller_factory.h",
-  ]
-
-  deps = [
-    ":cpp",
-    "//base",
-    "//chromeos/components/bloom",
-    "//services/network/public/cpp",
-  ]
-
-  defines = [ "IS_BLOOM_IMPL" ]
-}
-
-source_set("future") {
-  sources = [ "future_value.h" ]
-
-  deps = [ "//base" ]
-
-  defines = [ "IS_BLOOM_IMPL" ]
-}
diff --git a/chromeos/components/bloom/public/cpp/bloom_controller.cc b/chromeos/components/bloom/public/cpp/bloom_controller.cc
deleted file mode 100644
index ad7981d..0000000
--- a/chromeos/components/bloom/public/cpp/bloom_controller.cc
+++ /dev/null
@@ -1,33 +0,0 @@
-// Copyright 2020 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "chromeos/components/bloom/public/cpp/bloom_controller.h"
-#include "base/check_op.h"
-
-namespace chromeos {
-namespace bloom {
-
-namespace {
-
-BloomController* g_instance = nullptr;
-
-}  // namespace
-
-// static
-BloomController* BloomController::Get() {
-  return g_instance;
-}
-
-BloomController::BloomController() {
-  DCHECK_EQ(g_instance, nullptr);
-  g_instance = this;
-}
-
-BloomController::~BloomController() {
-  DCHECK_EQ(g_instance, this);
-  g_instance = nullptr;
-}
-
-}  // namespace bloom
-}  // namespace chromeos
diff --git a/chromeos/components/bloom/public/cpp/bloom_controller.h b/chromeos/components/bloom/public/cpp/bloom_controller.h
deleted file mode 100644
index 8eca7d6..0000000
--- a/chromeos/components/bloom/public/cpp/bloom_controller.h
+++ /dev/null
@@ -1,37 +0,0 @@
-// Copyright 2020 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef CHROMEOS_COMPONENTS_BLOOM_PUBLIC_CPP_BLOOM_CONTROLLER_H_
-#define CHROMEOS_COMPONENTS_BLOOM_PUBLIC_CPP_BLOOM_CONTROLLER_H_
-
-#include <memory>
-
-#include "base/component_export.h"
-#include "chromeos/components/bloom/public/cpp/bloom_interaction_resolution.h"
-
-namespace chromeos {
-namespace bloom {
-
-// Main controller for the Bloom integration.
-class COMPONENT_EXPORT(BLOOM) BloomController {
- public:
-  BloomController();
-  BloomController(const BloomController&) = delete;
-  BloomController& operator=(const BloomController&) = delete;
-  virtual ~BloomController();
-
-  // Access the existing Bloom controller.
-  static BloomController* Get();
-
-  // Starts an interaction. This will ask the user for a screenshot, analyze the
-  // content and display the result.
-  virtual void StartInteraction() = 0;
-  virtual bool HasInteraction() const = 0;
-  virtual void StopInteraction(BloomInteractionResolution resolution) = 0;
-};
-
-}  // namespace bloom
-}  // namespace chromeos
-
-#endif  // CHROMEOS_COMPONENTS_BLOOM_PUBLIC_CPP_BLOOM_CONTROLLER_H_
diff --git a/chromeos/components/bloom/public/cpp/bloom_controller_factory.cc b/chromeos/components/bloom/public/cpp/bloom_controller_factory.cc
deleted file mode 100644
index 07daa3f..0000000
--- a/chromeos/components/bloom/public/cpp/bloom_controller_factory.cc
+++ /dev/null
@@ -1,81 +0,0 @@
-// Copyright 2020 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "chromeos/components/bloom/public/cpp/bloom_controller_factory.h"
-
-#include <memory>
-
-#include "base/callback.h"
-#include "chromeos/components/bloom/bloom_controller_impl.h"
-#include "chromeos/components/bloom/public/cpp/bloom_ui_controller.h"
-#include "chromeos/components/bloom/public/cpp/bloom_ui_delegate.h"
-#include "chromeos/components/bloom/server/bloom_server_proxy_impl.h"
-#include "chromeos/components/bloom/server/bloom_url_loader_impl.h"
-#include "services/network/public/cpp/shared_url_loader_factory.h"
-
-namespace chromeos {
-namespace bloom {
-
-namespace {
-
-// Wrapper class that will forward all requests to the |BloomUiController|,
-// and handles the case where the controller is nullptr.
-class BloomUiDelegateWrapper : public BloomUiDelegate {
- public:
-  BloomUiDelegateWrapper() = default;
-  BloomUiDelegateWrapper(BloomUiDelegateWrapper&) = delete;
-  BloomUiDelegateWrapper& operator=(BloomUiDelegateWrapper&) = delete;
-  ~BloomUiDelegateWrapper() override = default;
-
-  void OnInteractionStarted() override {
-    if (!delegate())
-      return;
-    return delegate()->OnInteractionStarted();
-  }
-
-  void OnShowUI() override {
-    if (!delegate())
-      return;
-    return delegate()->OnShowUI();
-  }
-
-  void OnShowResult(const BloomResult& result) override {
-    if (!delegate())
-      return;
-    return delegate()->OnShowResult(result);
-  }
-
-  void OnInteractionFinished(BloomInteractionResolution resolution) override {
-    if (!delegate())
-      return;
-    return delegate()->OnInteractionFinished(resolution);
-  }
-
- private:
-  BloomUiDelegate* delegate() {
-    BloomUiController* controller = BloomUiController::Get();
-    if (controller)
-      return &controller->GetUiDelegate();
-    return nullptr;
-  }
-};
-
-}  // namespace
-
-// static
-std::unique_ptr<BloomController> BloomControllerFactory::Create(
-    std::unique_ptr<network::PendingSharedURLLoaderFactory> url_loader_factory,
-    signin::IdentityManager* identity_manager) {
-  auto result = std::make_unique<BloomControllerImpl>(
-      identity_manager,
-      std::make_unique<BloomServerProxyImpl>(
-          std::make_unique<BloomURLLoaderImpl>(std::move(url_loader_factory))));
-
-  result->SetUiDelegate(std::make_unique<BloomUiDelegateWrapper>());
-
-  return result;
-}
-
-}  // namespace bloom
-}  // namespace chromeos
diff --git a/chromeos/components/bloom/public/cpp/bloom_controller_factory.h b/chromeos/components/bloom/public/cpp/bloom_controller_factory.h
deleted file mode 100644
index dc91e55..0000000
--- a/chromeos/components/bloom/public/cpp/bloom_controller_factory.h
+++ /dev/null
@@ -1,38 +0,0 @@
-// Copyright 2020 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef CHROMEOS_COMPONENTS_BLOOM_PUBLIC_CPP_BLOOM_CONTROLLER_FACTORY_H_
-#define CHROMEOS_COMPONENTS_BLOOM_PUBLIC_CPP_BLOOM_CONTROLLER_FACTORY_H_
-
-#include <memory>
-
-#include "base/component_export.h"
-#include "base/memory/scoped_refptr.h"
-
-namespace network {
-class PendingSharedURLLoaderFactory;
-}  // namespace network
-
-namespace signin {
-class IdentityManager;
-}  // namespace signin
-
-namespace chromeos {
-namespace bloom {
-
-class BloomController;
-
-class COMPONENT_EXPORT(BLOOM) BloomControllerFactory {
- public:
-  // Create the Bloom controller. Can only be invoked once.
-  static std::unique_ptr<BloomController> Create(
-      std::unique_ptr<network::PendingSharedURLLoaderFactory>
-          url_loader_factory,
-      signin::IdentityManager* identity_manager);
-};
-
-}  // namespace bloom
-}  // namespace chromeos
-
-#endif  // CHROMEOS_COMPONENTS_BLOOM_PUBLIC_CPP_BLOOM_CONTROLLER_FACTORY_H_
diff --git a/chromeos/components/bloom/public/cpp/bloom_interaction_resolution.cc b/chromeos/components/bloom/public/cpp/bloom_interaction_resolution.cc
deleted file mode 100644
index 70f665c..0000000
--- a/chromeos/components/bloom/public/cpp/bloom_interaction_resolution.cc
+++ /dev/null
@@ -1,24 +0,0 @@
-// Copyright 2020 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "chromeos/components/bloom/public/cpp/bloom_interaction_resolution.h"
-
-namespace chromeos {
-namespace bloom {
-
-#define CASE(name)                       \
-  case BloomInteractionResolution::name: \
-    return #name;
-
-std::string ToString(BloomInteractionResolution resolution) {
-  switch (resolution) {
-    CASE(kNormal);
-    CASE(kNoAccessToken);
-    CASE(kNoScreenshot);
-    CASE(kServerError);
-  }
-}
-
-}  // namespace bloom
-}  // namespace chromeos
diff --git a/chromeos/components/bloom/public/cpp/bloom_interaction_resolution.h b/chromeos/components/bloom/public/cpp/bloom_interaction_resolution.h
deleted file mode 100644
index 8b76684..0000000
--- a/chromeos/components/bloom/public/cpp/bloom_interaction_resolution.h
+++ /dev/null
@@ -1,33 +0,0 @@
-// Copyright 2020 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef CHROMEOS_COMPONENTS_BLOOM_PUBLIC_CPP_BLOOM_INTERACTION_RESOLUTION_H_
-#define CHROMEOS_COMPONENTS_BLOOM_PUBLIC_CPP_BLOOM_INTERACTION_RESOLUTION_H_
-
-#include <string>
-
-#include "base/component_export.h"
-
-namespace chromeos {
-namespace bloom {
-
-enum class BloomInteractionResolution {
-  // Bloom interaction completed normally.
-  kNormal = 0,
-  // Bloom interaction failed to fetch an access token.
-  kNoAccessToken,
-  // Bloom interaction failed to take a screenshot
-  // (or the user aborted while taking a screenshot).
-  kNoScreenshot,
-  // Bloom server returned an error.
-  kServerError,
-};
-
-std::string COMPONENT_EXPORT(BLOOM)
-    ToString(BloomInteractionResolution resolution);
-
-}  // namespace bloom
-}  // namespace chromeos
-
-#endif  // CHROMEOS_COMPONENTS_BLOOM_PUBLIC_CPP_BLOOM_INTERACTION_RESOLUTION_H_
diff --git a/chromeos/components/bloom/public/cpp/bloom_result.cc b/chromeos/components/bloom/public/cpp/bloom_result.cc
deleted file mode 100644
index e4823d9..0000000
--- a/chromeos/components/bloom/public/cpp/bloom_result.cc
+++ /dev/null
@@ -1,256 +0,0 @@
-// Copyright 2020 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "chromeos/components/bloom/public/cpp/bloom_result.h"
-
-namespace chromeos {
-namespace bloom {
-
-// BloomElement.
-
-const BloomImageElement* BloomElement::AsImage() const {
-  DCHECK(false);
-  return nullptr;
-}
-
-const BloomMathElement* BloomElement::AsMath() const {
-  DCHECK(false);
-  return nullptr;
-}
-
-const BloomSourceElement* BloomElement::AsSource() const {
-  DCHECK(false);
-  return nullptr;
-}
-
-const BloomTextElement* BloomElement::AsText() const {
-  DCHECK(false);
-  return nullptr;
-}
-
-const BloomTitleElement* BloomElement::AsTitle() const {
-  DCHECK(false);
-  return nullptr;
-}
-
-const BloomVideoElement* BloomElement::AsVideo() const {
-  DCHECK(false);
-  return nullptr;
-}
-
-std::string ToString(BloomElement::Type type) {
-#define CASE(name)               \
-  case BloomElement::Type::name: \
-    return #name;
-
-  switch (type) {
-    CASE(kImage);
-    CASE(kMath);
-    CASE(kSource);
-    CASE(kText);
-    CASE(kTitle);
-    CASE(kVideo);
-  }
-
-#undef CASE
-}
-
-// Image element.
-
-BloomImageElement::BloomImageElement() = default;
-BloomImageElement::BloomImageElement(BloomImageElement&&) = default;
-BloomImageElement& BloomImageElement::operator=(BloomImageElement&&) = default;
-BloomImageElement::~BloomImageElement() = default;
-
-BloomElement::Type BloomImageElement::type() const {
-  return Type::kImage;
-}
-
-const BloomImageElement* BloomImageElement::AsImage() const {
-  return this;
-}
-
-// Source element.
-
-BloomSourceElement::BloomSourceElement() = default;
-BloomSourceElement::BloomSourceElement(BloomSourceElement&&) = default;
-BloomSourceElement& BloomSourceElement::operator=(BloomSourceElement&&) =
-    default;
-BloomSourceElement::~BloomSourceElement() = default;
-
-BloomElement::Type BloomSourceElement::type() const {
-  return Type::kSource;
-}
-
-const BloomSourceElement* BloomSourceElement::AsSource() const {
-  return this;
-}
-
-// Math element.
-
-BloomMathElement::BloomMathElement() = default;
-BloomMathElement::BloomMathElement(BloomMathElement&&) = default;
-BloomMathElement& BloomMathElement::operator=(BloomMathElement&&) = default;
-BloomMathElement::~BloomMathElement() = default;
-
-BloomElement::Type BloomMathElement::type() const {
-  return Type::kMath;
-}
-
-const BloomMathElement* BloomMathElement::AsMath() const {
-  return this;
-}
-
-// Text element.
-
-BloomTextElement::BloomTextElement() = default;
-BloomTextElement::BloomTextElement(BloomTextElement&&) = default;
-BloomTextElement& BloomTextElement::operator=(BloomTextElement&&) = default;
-BloomTextElement::~BloomTextElement() = default;
-
-BloomElement::Type BloomTextElement::type() const {
-  return Type::kText;
-}
-
-const BloomTextElement* BloomTextElement::AsText() const {
-  return this;
-}
-
-// Title element.
-
-BloomTitleElement::BloomTitleElement() = default;
-BloomTitleElement::BloomTitleElement(BloomTitleElement&&) = default;
-BloomTitleElement& BloomTitleElement::operator=(BloomTitleElement&&) = default;
-BloomTitleElement::~BloomTitleElement() = default;
-
-BloomElement::Type BloomTitleElement::type() const {
-  return Type::kTitle;
-}
-
-const BloomTitleElement* BloomTitleElement::AsTitle() const {
-  return this;
-}
-
-// Video element.
-
-BloomVideoElement::BloomVideoElement() = default;
-BloomVideoElement::BloomVideoElement(BloomVideoElement&&) = default;
-BloomVideoElement& BloomVideoElement::operator=(BloomVideoElement&&) = default;
-BloomVideoElement::~BloomVideoElement() = default;
-
-BloomElement::Type BloomVideoElement::type() const {
-  return Type::kVideo;
-}
-
-const BloomVideoElement* BloomVideoElement::AsVideo() const {
-  return this;
-}
-
-// BloomResultEntry.
-
-BloomResultEntry::BloomResultEntry() = default;
-BloomResultEntry::~BloomResultEntry() = default;
-
-const BloomQuestionAndAnswerEntry* BloomResultEntry::AsQuestionAndAnswer()
-    const {
-  DCHECK(false);
-  return nullptr;
-}
-
-const BloomExplainerEntry* BloomResultEntry::AsExplainer() const {
-  DCHECK(false);
-  return nullptr;
-}
-
-const BloomVideoEntry* BloomResultEntry::AsVideo() const {
-  DCHECK(false);
-  return nullptr;
-}
-
-const BloomWebResultEntry* BloomResultEntry::AsWebResult() const {
-  DCHECK(false);
-  return nullptr;
-}
-
-std::string ToString(BloomResultEntry::Type type) {
-#define CASE(name)                   \
-  case BloomResultEntry::Type::name: \
-    return #name;
-
-  switch (type) {
-    CASE(kQuestionAndAnswer);
-    CASE(kExplainer);
-    CASE(kVideo);
-    CASE(kWebResult);
-  }
-
-#undef CASE
-}
-
-// Question and Answer.
-
-BloomQuestionAndAnswerEntry::BloomQuestionAndAnswerEntry() = default;
-BloomQuestionAndAnswerEntry::~BloomQuestionAndAnswerEntry() = default;
-
-BloomResultEntry::Type BloomQuestionAndAnswerEntry::type() const {
-  return Type::kQuestionAndAnswer;
-}
-
-const BloomQuestionAndAnswerEntry*
-BloomQuestionAndAnswerEntry::AsQuestionAndAnswer() const {
-  return this;
-}
-
-// Explainer.
-
-BloomExplainerEntry::BloomExplainerEntry() = default;
-BloomExplainerEntry::~BloomExplainerEntry() = default;
-
-BloomResultEntry::Type BloomExplainerEntry::type() const {
-  return Type::kExplainer;
-}
-
-const BloomExplainerEntry* BloomExplainerEntry::AsExplainer() const {
-  return this;
-}
-
-// Video.
-
-BloomVideoEntry::BloomVideoEntry() = default;
-BloomVideoEntry::~BloomVideoEntry() = default;
-
-BloomResultEntry::Type BloomVideoEntry::type() const {
-  return Type::kVideo;
-}
-
-const BloomVideoEntry* BloomVideoEntry::AsVideo() const {
-  return this;
-}
-
-// WebResult.
-
-BloomWebResultEntry::BloomWebResultEntry() = default;
-BloomWebResultEntry::~BloomWebResultEntry() = default;
-
-BloomResultEntry::Type BloomWebResultEntry::type() const {
-  return Type::kWebResult;
-}
-
-const BloomWebResultEntry* BloomWebResultEntry::AsWebResult() const {
-  return this;
-}
-
-BloomResultSection::BloomResultSection() = default;
-BloomResultSection::BloomResultSection(BloomResultSection&&) = default;
-BloomResultSection& BloomResultSection::operator=(BloomResultSection&&) =
-    default;
-BloomResultSection::~BloomResultSection() = default;
-
-BloomResult::BloomResult() = default;
-BloomResult::BloomResult(BloomResult&&) = default;
-BloomResult& BloomResult::operator=(BloomResult&&) = default;
-BloomResult::~BloomResult() = default;
-
-}  // namespace bloom
-}  // namespace chromeos
diff --git a/chromeos/components/bloom/public/cpp/bloom_result.h b/chromeos/components/bloom/public/cpp/bloom_result.h
deleted file mode 100644
index 601fe647..0000000
--- a/chromeos/components/bloom/public/cpp/bloom_result.h
+++ /dev/null
@@ -1,279 +0,0 @@
-// Copyright 2020 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef CHROMEOS_COMPONENTS_BLOOM_PUBLIC_CPP_BLOOM_RESULT_H_
-#define CHROMEOS_COMPONENTS_BLOOM_PUBLIC_CPP_BLOOM_RESULT_H_
-
-#include <memory>
-#include <string>
-#include <vector>
-
-#include "base/component_export.h"
-#include "url/gurl.h"
-
-namespace chromeos {
-namespace bloom {
-
-struct BloomImageElement;
-struct BloomMathElement;
-struct BloomSourceElement;
-struct BloomTextElement;
-struct BloomTitleElement;
-struct BloomVideoElement;
-
-// Abstract base class representing individual elements (a text, a video, an
-// image, ...) that are used to compose the Bloom response entries.
-struct COMPONENT_EXPORT(BLOOM) BloomElement {
-  BloomElement() = default;
-  BloomElement(const BloomElement&) = delete;
-  BloomElement& operator=(const BloomElement&) = delete;
-  BloomElement(BloomElement&&) = default;
-  BloomElement& operator=(BloomElement&&) = default;
-  virtual ~BloomElement() = default;
-
-  enum class Type {
-    kImage,
-    kMath,
-    kSource,
-    kText,
-    kTitle,
-    kVideo,
-  };
-
-  virtual Type type() const = 0;
-
-  // Methods for checked downcasting to derived types.
-  // DCHECK when called on a wrong type.
-
-  virtual const BloomImageElement* AsImage() const;
-  virtual const BloomMathElement* AsMath() const;
-  virtual const BloomSourceElement* AsSource() const;
-  virtual const BloomTextElement* AsText() const;
-  virtual const BloomTitleElement* AsTitle() const;
-  virtual const BloomVideoElement* AsVideo() const;
-};
-
-std::string COMPONENT_EXPORT(BLOOM) ToString(BloomElement::Type type);
-
-struct COMPONENT_EXPORT(BLOOM) BloomImageElement : public BloomElement {
-  BloomImageElement();
-  BloomImageElement(const BloomImageElement&) = delete;
-  BloomImageElement& operator=(const BloomImageElement&) = delete;
-  BloomImageElement(BloomImageElement&&);
-  BloomImageElement& operator=(BloomImageElement&&);
-  ~BloomImageElement() override;
-
-  // BloomResultElement implementation:
-  Type type() const override;
-  const BloomImageElement* AsImage() const override;
-
-  GURL url;
-  std::string description;
-  int width;
-  int height;
-};
-
-struct COMPONENT_EXPORT(BLOOM) BloomMathElement : public BloomElement {
-  BloomMathElement();
-  BloomMathElement(const BloomMathElement&) = delete;
-  BloomMathElement& operator=(const BloomMathElement&) = delete;
-  BloomMathElement(BloomMathElement&&);
-  BloomMathElement& operator=(BloomMathElement&&);
-  ~BloomMathElement() override;
-
-  // BloomResultElement implementation:
-  Type type() const override;
-  const BloomMathElement* AsMath() const override;
-
-  std::string description;
-  std::string latex;
-};
-
-struct COMPONENT_EXPORT(BLOOM) BloomSourceElement : public BloomElement {
-  BloomSourceElement();
-  BloomSourceElement(const BloomSourceElement&) = delete;
-  BloomSourceElement& operator=(const BloomSourceElement&) = delete;
-  BloomSourceElement(BloomSourceElement&&);
-  BloomSourceElement& operator=(BloomSourceElement&&);
-  ~BloomSourceElement() override;
-
-  // BloomResultElement implementation:
-  Type type() const override;
-  const BloomSourceElement* AsSource() const override;
-
-  std::string text;
-  GURL favicon_url;
-  GURL url;
-};
-
-struct COMPONENT_EXPORT(BLOOM) BloomTextElement : public BloomElement {
-  BloomTextElement();
-  BloomTextElement(const BloomTextElement&) = delete;
-  BloomTextElement& operator=(const BloomTextElement&) = delete;
-  BloomTextElement(BloomTextElement&&);
-  BloomTextElement& operator=(BloomTextElement&&);
-  ~BloomTextElement() override;
-
-  // BloomResultElement implementation:
-  Type type() const override;
-  const BloomTextElement* AsText() const override;
-
-  std::string text;
-};
-
-struct COMPONENT_EXPORT(BLOOM) BloomTitleElement : public BloomElement {
-  BloomTitleElement();
-  BloomTitleElement(const BloomTitleElement&) = delete;
-  BloomTitleElement& operator=(const BloomTitleElement&) = delete;
-  BloomTitleElement(BloomTitleElement&&);
-  BloomTitleElement& operator=(BloomTitleElement&&);
-  ~BloomTitleElement() override;
-
-  // BloomResultElement implementation:
-  Type type() const override;
-  const BloomTitleElement* AsTitle() const override;
-
-  std::string text;
-};
-
-struct COMPONENT_EXPORT(BLOOM) BloomVideoElement : public BloomElement {
-  BloomVideoElement();
-  BloomVideoElement(const BloomVideoElement&) = delete;
-  BloomVideoElement& operator=(const BloomVideoElement&) = delete;
-  BloomVideoElement(BloomVideoElement&&);
-  BloomVideoElement& operator=(BloomVideoElement&&);
-  ~BloomVideoElement() override;
-
-  // BloomResultElement implementation:
-  Type type() const override;
-  const BloomVideoElement* AsVideo() const override;
-
-  GURL url;
-  std::string title;
-  std::string description;
-  GURL thumbnail_url;
-  std::string video_id;
-  std::string start_time;
-  std::string duration;
-  std::string channel_title;
-  std::string published_time;
-  std::string number_of_likes;
-  std::string number_of_views;
-};
-
-struct BloomQuestionAndAnswerEntry;
-struct BloomExplainerEntry;
-struct BloomVideoEntry;
-struct BloomWebResultEntry;
-
-// Abstract base class representing the different entries in the Bloom response.
-// Each entry contains a single answer, and is composed of multiple elements.
-struct COMPONENT_EXPORT(BLOOM) BloomResultEntry {
-  BloomResultEntry();
-  BloomResultEntry(const BloomResultEntry&) = delete;
-  BloomResultEntry& operator=(const BloomResultEntry&) = delete;
-  virtual ~BloomResultEntry();
-
-  enum class Type {
-    kQuestionAndAnswer,
-    kExplainer,
-    kVideo,
-    kWebResult,
-  };
-
-  virtual Type type() const = 0;
-
-  // Methods for checked downcasting to derived types.
-  // DCHECK when called on a wrong type.
-
-  virtual const BloomQuestionAndAnswerEntry* AsQuestionAndAnswer() const;
-  virtual const BloomExplainerEntry* AsExplainer() const;
-  virtual const BloomVideoEntry* AsVideo() const;
-  virtual const BloomWebResultEntry* AsWebResult() const;
-};
-
-std::string COMPONENT_EXPORT(BLOOM) ToString(BloomResultEntry::Type type);
-
-struct COMPONENT_EXPORT(BLOOM) BloomQuestionAndAnswerEntry
-    : public BloomResultEntry {
-  BloomQuestionAndAnswerEntry();
-  ~BloomQuestionAndAnswerEntry() override;
-
-  // BloomResultEntry implementation:
-  Type type() const override;
-  const BloomQuestionAndAnswerEntry* AsQuestionAndAnswer() const override;
-
-  BloomTextElement question;
-  BloomTextElement answer;
-  BloomSourceElement source;
-};
-
-struct COMPONENT_EXPORT(BLOOM) BloomExplainerEntry : public BloomResultEntry {
-  BloomExplainerEntry();
-  ~BloomExplainerEntry() override;
-
-  // BloomResultEntry implementation:
-  Type type() const override;
-  const BloomExplainerEntry* AsExplainer() const override;
-
-  BloomTitleElement title;
-  BloomImageElement image;
-  // An explainer ends with a variable amount of elements.
-  std::vector<std::unique_ptr<BloomElement>> elements;
-};
-
-struct COMPONENT_EXPORT(BLOOM) BloomVideoEntry : public BloomResultEntry {
-  BloomVideoEntry();
-  ~BloomVideoEntry() override;
-
-  // BloomResultEntry implementation:
-  Type type() const override;
-  const BloomVideoEntry* AsVideo() const override;
-
-  BloomVideoElement video;
-  BloomSourceElement source;
-};
-
-struct COMPONENT_EXPORT(BLOOM) BloomWebResultEntry : public BloomResultEntry {
-  BloomWebResultEntry();
-  ~BloomWebResultEntry() override;
-
-  // BloomResultEntry implementation:
-  Type type() const override;
-  const BloomWebResultEntry* AsWebResult() const override;
-
-  BloomTextElement title;
-  BloomTextElement snippet;
-  BloomSourceElement source;
-};
-
-struct COMPONENT_EXPORT(BLOOM) BloomResultSection {
-  BloomResultSection();
-  BloomResultSection(const BloomResultSection&) = delete;
-  BloomResultSection& operator=(const BloomResultSection&) = delete;
-  BloomResultSection(BloomResultSection&&);
-  BloomResultSection& operator=(BloomResultSection&&);
-  ~BloomResultSection();
-
-  std::string title;
-  std::vector<std::unique_ptr<BloomResultEntry>> entries;
-};
-
-struct COMPONENT_EXPORT(BLOOM) BloomResult {
- public:
-  BloomResult();
-  BloomResult(const BloomResult&) = delete;
-  BloomResult& operator=(const BloomResult&) = delete;
-  BloomResult(BloomResult&&);
-  BloomResult& operator=(BloomResult&&);
-  ~BloomResult();
-
-  std::string query;
-  std::vector<BloomResultSection> sections;
-};
-
-}  // namespace bloom
-}  // namespace chromeos
-
-#endif  // CHROMEOS_COMPONENTS_BLOOM_PUBLIC_CPP_BLOOM_RESULT_H_
diff --git a/chromeos/components/bloom/public/cpp/bloom_screenshot_delegate.h b/chromeos/components/bloom/public/cpp/bloom_screenshot_delegate.h
deleted file mode 100644
index e8f52c5..0000000
--- a/chromeos/components/bloom/public/cpp/bloom_screenshot_delegate.h
+++ /dev/null
@@ -1,32 +0,0 @@
-// Copyright 2020 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef CHROMEOS_COMPONENTS_BLOOM_PUBLIC_CPP_BLOOM_SCREENSHOT_DELEGATE_H_
-#define CHROMEOS_COMPONENTS_BLOOM_PUBLIC_CPP_BLOOM_SCREENSHOT_DELEGATE_H_
-
-#include "base/callback_forward.h"
-#include "base/optional.h"
-
-namespace gfx {
-class Image;
-}
-
-namespace chromeos {
-namespace bloom {
-
-// Prompts the user to select a part of the screen, and invokes the callback
-// with a screenshot of the selected area.
-class BloomScreenshotDelegate {
- public:
-  using Callback = base::OnceCallback<void(base::Optional<gfx::Image>)>;
-
-  virtual ~BloomScreenshotDelegate() = default;
-
-  virtual void TakeScreenshot(Callback ready_callback) = 0;
-};
-
-}  // namespace bloom
-}  // namespace chromeos
-
-#endif  // CHROMEOS_COMPONENTS_BLOOM_PUBLIC_CPP_BLOOM_SCREENSHOT_DELEGATE_H_
diff --git a/chromeos/components/bloom/public/cpp/bloom_ui_controller.cc b/chromeos/components/bloom/public/cpp/bloom_ui_controller.cc
deleted file mode 100644
index c5529519..0000000
--- a/chromeos/components/bloom/public/cpp/bloom_ui_controller.cc
+++ /dev/null
@@ -1,29 +0,0 @@
-// Copyright 2020 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "chromeos/components/bloom/public/cpp/bloom_ui_controller.h"
-#include "base/check.h"
-
-namespace chromeos {
-namespace bloom {
-
-// static
-BloomUiController* BloomUiController::g_instance_ = nullptr;
-
-// static
-BloomUiController* BloomUiController::Get() {
-  return g_instance_;
-}
-
-BloomUiController::BloomUiController() {
-  DCHECK(g_instance_ == nullptr);
-  g_instance_ = this;
-}
-
-BloomUiController::~BloomUiController() {
-  g_instance_ = nullptr;
-}
-
-}  // namespace bloom
-}  // namespace chromeos
diff --git a/chromeos/components/bloom/public/cpp/bloom_ui_controller.h b/chromeos/components/bloom/public/cpp/bloom_ui_controller.h
deleted file mode 100644
index 6b25bc6..0000000
--- a/chromeos/components/bloom/public/cpp/bloom_ui_controller.h
+++ /dev/null
@@ -1,36 +0,0 @@
-// Copyright 2020 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef CHROMEOS_COMPONENTS_BLOOM_PUBLIC_CPP_BLOOM_UI_CONTROLLER_H_
-#define CHROMEOS_COMPONENTS_BLOOM_PUBLIC_CPP_BLOOM_UI_CONTROLLER_H_
-
-#include <memory>
-
-#include "base/component_export.h"
-
-namespace chromeos {
-namespace bloom {
-
-class BloomUiDelegate;
-
-// Controller for all UI specific elements used by the Bloom feature.
-// Implemented as a singleton (which is registered automatically through the
-// constructor).
-class COMPONENT_EXPORT(BLOOM) BloomUiController {
- public:
-  static BloomUiController* Get();
-
-  BloomUiController();
-  virtual ~BloomUiController();
-
-  virtual BloomUiDelegate& GetUiDelegate() = 0;
-
- private:
-  static BloomUiController* g_instance_;
-};
-
-}  // namespace bloom
-}  // namespace chromeos
-
-#endif  // CHROMEOS_COMPONENTS_BLOOM_PUBLIC_CPP_BLOOM_UI_CONTROLLER_H_
diff --git a/chromeos/components/bloom/public/cpp/bloom_ui_delegate.h b/chromeos/components/bloom/public/cpp/bloom_ui_delegate.h
deleted file mode 100644
index cf2dd0a..0000000
--- a/chromeos/components/bloom/public/cpp/bloom_ui_delegate.h
+++ /dev/null
@@ -1,33 +0,0 @@
-// Copyright 2020 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef CHROMEOS_COMPONENTS_BLOOM_PUBLIC_CPP_BLOOM_UI_DELEGATE_H_
-#define CHROMEOS_COMPONENTS_BLOOM_PUBLIC_CPP_BLOOM_UI_DELEGATE_H_
-
-#include "chromeos/components/bloom/public/cpp/bloom_interaction_resolution.h"
-
-namespace chromeos {
-namespace bloom {
-
-struct BloomResult;
-
-class BloomUiDelegate {
- public:
-  virtual ~BloomUiDelegate() = default;
-
-  virtual void OnInteractionStarted() = 0;
-
-  // Called when the Assistant UI should be shown.
-  virtual void OnShowUI() = 0;
-
-  // Called when the result is ready.
-  virtual void OnShowResult(const BloomResult& result) = 0;
-
-  virtual void OnInteractionFinished(BloomInteractionResolution resolution) = 0;
-};
-
-}  // namespace bloom
-}  // namespace chromeos
-
-#endif  // CHROMEOS_COMPONENTS_BLOOM_PUBLIC_CPP_BLOOM_UI_DELEGATE_H_
diff --git a/chromeos/components/bloom/public/cpp/future_value.h b/chromeos/components/bloom/public/cpp/future_value.h
deleted file mode 100644
index 581c144..0000000
--- a/chromeos/components/bloom/public/cpp/future_value.h
+++ /dev/null
@@ -1,131 +0,0 @@
-// Copyright 2020 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef CHROMEOS_COMPONENTS_BLOOM_PUBLIC_CPP_FUTURE_VALUE_H_
-#define CHROMEOS_COMPONENTS_BLOOM_PUBLIC_CPP_FUTURE_VALUE_H_
-
-#include "base/bind.h"
-#include "base/callback.h"
-#include "base/check.h"
-#include "base/component_export.h"
-
-namespace chromeos {
-namespace bloom {
-
-// A future object that will invoke the given callback when the value becomes
-// available.
-//
-// This is especially useful if your code needs to wait for 2 values to be
-// fetched, as you can then simply:
-//   * Fetch the first value asynchronously, and pass it to the first future.
-//   * Fetch the second value asynchronously, and pass it to the second future.
-//   * Call WaitForBothValues() and pass it a callback that will be called with
-//     both values.
-//
-// Example:
-//
-// // Waits for 2 values to be fetched asynchronously.
-// // Calls |MyWaiter::OnValuesReady()| when both values are available.
-// class MyWaiter {
-//  public:
-//   void Wait() {
-//     // Fetch first value and pass it to the first future. Note you must use a
-//     // weak_ptr if |first_fetcher_| is not owned by this class.
-//     first_fetcher_.FetchValue(
-//         base::BindOnce([](FutureValue<FirstType> * future, FirstType &&
-//         value)) {
-//           future->SetValue(std::move(value));
-//         },
-//         &first_future_);
-//
-//     // Fetch second value and pass it to the second future. Note you must use
-//     // a weak_ptr if |second_fetcher_| is not owned by this class.
-//     second_fetcher_.FetchValue(
-//         base::BindOnce([](FutureValue<SecondType> * future, SecondType &&
-//         value))
-//         {
-//           future->SetValue(std::move(value));
-//         },
-//         &second_future_);
-//
-//     // Now wait for both. OnValuesReady() will be called when both values are
-//     // available. Note that we can always use |base::Unretained| here, as
-//     // both |FutureValue| objects are owned by this class.
-//     WhenBothAreReady(
-//         &first_future_, &second_future_,
-//         base::BindOnce(&MyWaiter::OnValuesReady, base::Unretained(this)));
-//   }
-//
-//  private:
-//   void OnValuesReady(FirstType&& first_value, SecondType&& second_value) {
-//     // Both values are available now.
-//   }
-//
-//   FirstFetcher first_fetcher_;
-//   FutureValue<FirstType> first_future_;
-//
-//   SecondFetcher second_fetcher_;
-//   FutureValue<SecondType> second_future_;
-// };
-//
-template <typename _Type>
-class COMPONENT_EXPORT(BLOOM) FutureValue {
- public:
-  using Callback = base::OnceCallback<void(_Type&& value)>;
-
-  void WhenReady(Callback callback) {
-    DCHECK(!callback_);
-    callback_ = std::move(callback);
-    RunCallbackIfReady();
-  }
-
-  void SetValue(_Type&& value) {
-    DCHECK(!value_);
-    value_ = std::move(value);
-    RunCallbackIfReady();
-  }
-
- private:
-  void RunCallbackIfReady() {
-    if (value_ && callback_)
-      std::move(callback_).Run(std::move(value_).value());
-  }
-
-  base::Optional<_Type> value_;
-  Callback callback_;
-};
-
-template <typename _First, typename _Second>
-using DoubleCallback =
-    base::OnceCallback<void(_First&& first_result, _Second&& second_result)>;
-
-// Waits for both futures to be ready, and then passes both results to
-// |callback|.
-template <typename _First, typename _Second>
-void COMPONENT_EXPORT(BLOOM)
-    WhenBothAreReady(FutureValue<_First>* first_future,
-                     FutureValue<_Second>* second_future,
-                     DoubleCallback<_First, _Second> callback) {
-  using Callback = DoubleCallback<_First, _Second>;
-
-  first_future->WhenReady(base::BindOnce(
-      [](Callback callback, FutureValue<_Second>* second_future,
-         _First&& first_value) {
-        // We've got the first value, now wait for the second.
-        second_future->WhenReady(base::BindOnce(
-            [](Callback callback, _First&& first_value,
-               _Second&& second_value) {
-              // We've got both values, so call the callback.
-              std::move(callback).Run(std::move(first_value),
-                                      std::move(second_value));
-            },
-            std::move(callback), std::move(first_value)));
-      },
-      std::move(callback), second_future));
-}
-
-}  // namespace bloom
-}  // namespace chromeos
-
-#endif  // CHROMEOS_COMPONENTS_BLOOM_PUBLIC_CPP_FUTURE_VALUE_H_
diff --git a/chromeos/components/bloom/server/bloom_server_proxy.h b/chromeos/components/bloom/server/bloom_server_proxy.h
deleted file mode 100644
index 3892260..0000000
--- a/chromeos/components/bloom/server/bloom_server_proxy.h
+++ /dev/null
@@ -1,41 +0,0 @@
-// Copyright 2020 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef CHROMEOS_COMPONENTS_BLOOM_SERVER_BLOOM_SERVER_PROXY_H_
-#define CHROMEOS_COMPONENTS_BLOOM_SERVER_BLOOM_SERVER_PROXY_H_
-
-#include <string>
-#include "base/callback.h"
-
-namespace gfx {
-class Image;
-}
-
-namespace chromeos {
-namespace bloom {
-
-struct BloomResult;
-
-// Local object that handles all communication with the Bloom servers.
-class BloomServerProxy {
- public:
-  using Callback =
-      base::OnceCallback<void(base::Optional<BloomResult> response)>;
-
-  BloomServerProxy() = default;
-  BloomServerProxy(BloomServerProxy&) = delete;
-  BloomServerProxy& operator=(BloomServerProxy&) = delete;
-  virtual ~BloomServerProxy() = default;
-
-  // Send the screenshot to the Bloom server for analysis, and send the response
-  // to |callback|.
-  virtual void AnalyzeProblem(const std::string& access_token,
-                              const gfx::Image& screenshot,
-                              Callback callback) = 0;
-};
-
-}  // namespace bloom
-}  // namespace chromeos
-
-#endif  // CHROMEOS_COMPONENTS_BLOOM_SERVER_BLOOM_SERVER_PROXY_H_
diff --git a/chromeos/components/bloom/server/bloom_server_proxy_impl.cc b/chromeos/components/bloom/server/bloom_server_proxy_impl.cc
deleted file mode 100644
index 6cc80b7..0000000
--- a/chromeos/components/bloom/server/bloom_server_proxy_impl.cc
+++ /dev/null
@@ -1,244 +0,0 @@
-// Copyright 2020 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "chromeos/components/bloom/server/bloom_server_proxy_impl.h"
-
-#include <memory>
-
-#include "base/base64.h"
-#include "base/bind.h"
-#include "base/check.h"
-#include "base/json/json_writer.h"
-#include "base/logging.h"
-#include "base/memory/weak_ptr.h"
-#include "base/values.h"
-#include "chromeos/components/bloom/bloom_result_builder.h"
-#include "chromeos/components/bloom/public/cpp/bloom_result.h"
-#include "chromeos/components/bloom/server/bloom_url_loader.h"
-#include "chromeos/services/assistant/public/shared/constants.h"
-#include "services/data_decoder/public/cpp/data_decoder.h"
-#include "ui/gfx/image/image.h"
-
-namespace chromeos {
-namespace bloom {
-
-namespace {
-
-using ValueOrError = data_decoder::DataDecoder::ValueOrError;
-
-constexpr char kJsonMimeType[] = "application/json";
-
-std::string EncodeImage(const gfx::Image& image) {
-  auto bytes = image.As1xPNGBytes();
-
-  return base::Base64Encode({bytes->front_as<uint8_t>(), bytes->size()});
-}
-
-GURL GetUrlWithPath(base::StringPiece path) {
-  return GURL(assistant::kBloomServiceUrl + path.as_string());
-}
-
-GURL GetCreateImageURL() {
-  return GetUrlWithPath(assistant::kBloomCreateImagePath);
-}
-
-GURL GetOcrImageURL(base::StringPiece image_id) {
-  return GetUrlWithPath(assistant::kBloomOcrImagePath + image_id.as_string());
-}
-
-GURL GetSearchProblemURL(base::StringPiece metadata_blob) {
-  return GetUrlWithPath(assistant::kBloomSearchProblemPath +
-                        metadata_blob.as_string());
-}
-
-std::string JSONToString(const base::Value& json) {
-  std::string result;
-  bool success = base::JSONWriter::Write(json, &result);
-  DCHECK(success);
-  return result;
-}
-
-}  // namespace
-
-class BloomServerProxyImpl::Worker {
- public:
-  using ServerCallback = BloomURLLoader::Callback;
-
-  Worker(BloomServerProxyImpl* parent,
-         const std::string& access_token,
-         Callback callback)
-      : parent_(parent),
-        access_token_(access_token),
-        callback_(std::move(callback)) {
-    DCHECK(parent_);
-  }
-
-  ~Worker() {
-    if (callback_)
-      std::move(callback_).Run(base::nullopt);
-  }
-
-  void AnalyzeProblem(const gfx::Image& screenshot) {
-    SendCreateImageRequest(screenshot);
-  }
-
- private:
-  typedef void (Worker::*JsonCallback)(ValueOrError);
-
-  BloomURLLoader* url_loader() { return parent_->url_loader_.get(); }
-
-  void SendCreateImageRequest(const gfx::Image& screenshot) {
-    DVLOG(3) << "Sending create image request to Bloom servers";
-    base::Value body{base::Value::Type::DICTIONARY};
-    body.SetKey("raw_data", base::Value(EncodeImage(screenshot)));
-
-    SendPostJSONRequest(GetCreateImageURL(), body,
-                        base::Bind(&Worker::OnCreateImageResponse,
-                                   weak_ptr_factory_.GetWeakPtr()));
-  }
-
-  void SendOcrImageRequest(const std::string& image_id) {
-    DVLOG(3) << "Sending OCR image request to Bloom servers";
-    SendGetRequest(GetOcrImageURL(image_id),
-                   base::Bind(&Worker::OnOcrImageResponse,
-                              weak_ptr_factory_.GetWeakPtr()));
-  }
-
-  void SendSearchProblemRequest(const std::string& metadata_blob) {
-    DVLOG(3) << "Sending search problem request to Bloom servers";
-    SendGetRequest(GetSearchProblemURL(metadata_blob),
-                   base::Bind(&Worker::OnSearchProblemResponse,
-                              weak_ptr_factory_.GetWeakPtr()));
-  }
-
-  void OnCreateImageResponse(base::Optional<std::string> reply) {
-    if (!reply) {
-      DVLOG(3) << "Bloom servers responded with ERROR";
-      FinishWithError();
-      return;
-    }
-
-    ParseJson(reply.value(), &Worker::OnCreateImageResponseParsed);
-  }
-
-  void OnCreateImageResponseParsed(ValueOrError json_reply) {
-    if (!json_reply.value) {
-      LOG(WARNING) << "Bloom servers responded with invalid JSON: "
-                   << json_reply.error.value();
-      FinishWithError();
-      return;
-    }
-
-    const std::string* image_id =
-        json_reply.value.value().FindStringKey("imageId");
-    if (!image_id) {
-      LOG(WARNING) << "'imageId' tag is missing from Bloom server response";
-      FinishWithError();
-      return;
-    }
-
-    DVLOG(3) << "Bloom servers responded with image_id '" << image_id << "'";
-    SendOcrImageRequest(*image_id);
-  }
-
-  void OnOcrImageResponse(base::Optional<std::string> reply) {
-    if (!reply) {
-      DVLOG(3) << "Bloom servers responded with ERROR";
-      FinishWithError();
-      return;
-    }
-
-    ParseJson(reply.value(), &Worker::OnOcrImageResponseParsed);
-  }
-
-  void OnOcrImageResponseParsed(ValueOrError json_reply) {
-    if (!json_reply.value) {
-      LOG(WARNING) << "Bloom servers responded with invalid JSON: "
-                   << json_reply.error.value();
-      FinishWithError();
-      return;
-    }
-
-    const std::string* metadata_blob =
-        json_reply.value.value().FindStringKey("metadataBlob");
-    if (!metadata_blob) {
-      LOG(WARNING)
-          << "'metadataBlob' tag is missing from Bloom server response.";
-      FinishWithError();
-      return;
-    }
-
-    DVLOG(3) << "Bloom servers responded with valid response";
-    SendSearchProblemRequest(*metadata_blob);
-  }
-
-  void OnSearchProblemResponse(base::Optional<std::string> reply) {
-    if (!reply) {
-      DVLOG(3) << "Bloom servers responded with error";
-      FinishWithError();
-      return;
-    }
-
-    ParseJson(reply.value(), &Worker::OnSearchProblemResponseParsed);
-  }
-
-  void OnSearchProblemResponseParsed(ValueOrError json) {
-    if (!json.value) {
-      LOG(WARNING) << "Bloom servers responded with invalid JSON: "
-                   << json.error.value();
-      FinishWithError();
-      return;
-    }
-
-    DVLOG(3) << "Bloom servers responded with success";
-    BloomResult result = BloomResultBuilder().Build(json.value.value());
-    FinishWithReply(std::move(result));
-  }
-
-  void SendPostJSONRequest(const GURL& url,
-                           const base::Value& json,
-                           ServerCallback callback) {
-    url_loader()->SendPostRequest(url, access_token_, JSONToString(json),
-                                  kJsonMimeType, std::move(callback));
-  }
-
-  void SendGetRequest(const GURL& url, ServerCallback callback) {
-    url_loader()->SendGetRequest(url, access_token_, std::move(callback));
-  }
-
-  void ParseJson(const std::string& json, JsonCallback callback) {
-    data_decoder::DataDecoder::ParseJsonIsolated(
-        json, base::BindOnce(callback, weak_ptr_factory_.GetWeakPtr()));
-  }
-
-  void FinishWithError() { FinishWithReply(base::nullopt); }
-
-  void FinishWithReply(base::Optional<BloomResult> reply) {
-    std::move(callback_).Run(std::move(reply));
-  }
-
-  BloomServerProxyImpl* const parent_;
-  const std::string access_token_;
-  Callback callback_;
-
-  base::WeakPtrFactory<Worker> weak_ptr_factory_{this};
-};
-
-BloomServerProxyImpl::BloomServerProxyImpl(
-    std::unique_ptr<BloomURLLoader> url_loader)
-    : url_loader_(std::move(url_loader)) {
-  DCHECK(url_loader_);
-}
-
-BloomServerProxyImpl::~BloomServerProxyImpl() = default;
-
-void BloomServerProxyImpl::AnalyzeProblem(const std::string& access_token,
-                                          const gfx::Image& screenshot,
-                                          Callback callback) {
-  worker_ = std::make_unique<Worker>(this, access_token, std::move(callback));
-  worker_->AnalyzeProblem(screenshot);
-}
-
-}  // namespace bloom
-}  // namespace chromeos
diff --git a/chromeos/components/bloom/server/bloom_server_proxy_impl.h b/chromeos/components/bloom/server/bloom_server_proxy_impl.h
deleted file mode 100644
index 4d522c2..0000000
--- a/chromeos/components/bloom/server/bloom_server_proxy_impl.h
+++ /dev/null
@@ -1,40 +0,0 @@
-// Copyright 2020 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef CHROMEOS_COMPONENTS_BLOOM_SERVER_BLOOM_SERVER_PROXY_IMPL_H_
-#define CHROMEOS_COMPONENTS_BLOOM_SERVER_BLOOM_SERVER_PROXY_IMPL_H_
-
-#include <memory>
-
-#include "chromeos/components/bloom/server/bloom_server_proxy.h"
-
-namespace chromeos {
-namespace bloom {
-
-class BloomURLLoader;
-
-class BloomServerProxyImpl : public BloomServerProxy {
- public:
-  explicit BloomServerProxyImpl(std::unique_ptr<BloomURLLoader> url_loader);
-  ~BloomServerProxyImpl() override;
-
-  void AnalyzeProblem(const std::string& access_token,
-                      const gfx::Image& screenshot,
-                      Callback callback) override;
-
-  BloomURLLoader* url_loader() { return url_loader_.get(); }
-
- private:
-  class Worker;
-
-  void OnWorkerComplete(Worker* worker);
-
-  std::unique_ptr<BloomURLLoader> url_loader_;
-  std::unique_ptr<Worker> worker_;
-};
-
-}  // namespace bloom
-}  // namespace chromeos
-
-#endif  // CHROMEOS_COMPONENTS_BLOOM_SERVER_BLOOM_SERVER_PROXY_IMPL_H_
diff --git a/chromeos/components/bloom/server/bloom_server_proxy_impl_unittest.cc b/chromeos/components/bloom/server/bloom_server_proxy_impl_unittest.cc
deleted file mode 100644
index 1988571..0000000
--- a/chromeos/components/bloom/server/bloom_server_proxy_impl_unittest.cc
+++ /dev/null
@@ -1,366 +0,0 @@
-// Copyright 2020 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "chromeos/components/bloom/server/bloom_server_proxy_impl.h"
-
-#include "base/base64.h"
-#include "base/bind.h"
-#include "base/optional.h"
-#include "base/run_loop.h"
-#include "base/test/task_environment.h"
-#include "chromeos/components/bloom/public/cpp/bloom_result.h"
-#include "chromeos/components/bloom/server/bloom_url_loader.h"
-#include "chromeos/services/assistant/public/shared/constants.h"
-#include "services/data_decoder/public/cpp/test_support/in_process_data_decoder.h"
-#include "services/network/test/test_shared_url_loader_factory.h"
-#include "testing/gmock/include/gmock/gmock.h"
-#include "testing/gtest/include/gtest/gtest.h"
-#include "ui/gfx/image/image_unittest_util.h"
-
-namespace chromeos {
-namespace bloom {
-
-namespace {
-
-using ::testing::_;
-using ::testing::AnyNumber;
-using ::testing::SaveArgPointee;
-
-using assistant::kBloomCreateImagePath;
-using assistant::kBloomOcrImagePath;
-using assistant::kBloomSearchProblemPath;
-
-std::string Quote(const std::string& data) {
-  return "\"" + data + "\"";
-}
-
-std::string ToJSON(const std::string& name, const std::string& value) {
-  return "{" + Quote(name) + ":" + Quote(value) + "}";
-}
-
-std::string ImageToJSON(const std::string& name, const gfx::Image& value) {
-  auto bytes = value.As1xPNGBytes();
-  return ToJSON(
-      name, base::Base64Encode({bytes->front_as<uint8_t>(), bytes->size()}));
-}
-
-// Mock for |BloomServerProxy::Callback|.
-class CallbackMock {
- public:
-  MOCK_METHOD(void, Call, (base::Optional<BloomResult>));
-
-  auto BindOnce() {
-    return base::BindOnce(&CallbackMock::Call, base::Unretained(this));
-  }
-};
-
-MATCHER_P(BloomResultWithQuery, query, "") {
-  if (!arg.has_value()) {
-    *result_listener << "Received nullopt.";
-    return false;
-  }
-  if (arg.value().query != query) {
-    *result_listener << "Received BloomResult with wrong query.\n"
-                     << "  Expected:  '" << query << "'\n"
-                     << "  Actual:    '" << arg.value().query << "'\n";
-    return false;
-  }
-  return true;
-}
-
-MATCHER(NullBloomResult, "") {
-  if (arg.has_value()) {
-    *result_listener << "Expected nullopt but got BloomResult with query '"
-                     << arg.value().query << "'";
-    return false;
-  }
-  return true;
-}
-
-class BloomURLLoaderMock : public BloomURLLoader {
- public:
-  BloomURLLoaderMock() {
-    ON_CALL(*this, SendPostRequest)
-        .WillByDefault([this](const GURL&, const std::string&, std::string&&,
-                              const std::string&, Callback callback) {
-          this->post_callback_ = std::move(callback);
-        });
-
-    ON_CALL(*this, SendGetRequest)
-        .WillByDefault(
-            [this](const GURL&, const std::string&, Callback callback) {
-              this->get_callback_ = std::move(callback);
-            });
-  }
-
-  MOCK_METHOD(void,
-              SendPostRequest,
-              (const GURL& url,
-               const std::string& access_token,
-               std::string&& body,
-               const std::string& mime_type,
-               Callback callback));
-  MOCK_METHOD(void,
-              SendGetRequest,
-              (const GURL& url,
-               const std::string& access_token,
-               Callback callback));
-
-  void SendPostServerReply(base::Optional<std::string> reply) {
-    DCHECK(post_callback_)
-        << "Asked to send a reply but haven't received a POST request";
-    std::move(post_callback_).Run(std::move(reply));
-  }
-
-  void SendGetServerReply(base::Optional<std::string> reply) {
-    DCHECK(get_callback_)
-        << "Asked to send a reply but haven't received a GET request";
-    std::move(get_callback_).Run(std::move(reply));
-  }
-
- private:
-  Callback post_callback_;
-  Callback get_callback_;
-};
-
-}  // namespace
-
-class BloomServerProxyImplTest : public ::testing::Test {
- protected:
-  BloomURLLoaderMock& url_loader_mock() {
-    return *static_cast<BloomURLLoaderMock*>(server_proxy_.url_loader());
-  }
-
-  BloomServerProxyImpl& server_proxy() { return server_proxy_; }
-
-  GURL GetUrlWithPath(const std::string& path) {
-    return GURL(std::string(assistant::kBloomServiceUrl) + path);
-  }
-
-  auto any_screenshot() { return gfx::test::CreateImage(5, 5); }
-
-  auto any_callback() {
-    return base::BindOnce([](base::Optional<BloomResult>) {});
-  }
-
-  // Add mock expectations for all server calls.
-  void ExpectServerCalls() {
-    EXPECT_CALL(url_loader_mock(), SendPostRequest).Times(AnyNumber());
-    EXPECT_CALL(url_loader_mock(), SendGetRequest).Times(AnyNumber());
-  }
-
-  void RespondToUploadImageCall(base::Optional<std::string> json_response =
-                                    ToJSON("imageId", "default-image-id")) {
-    url_loader_mock().SendPostServerReply(json_response);
-    // Give the JSON Decoder a chance to run.
-    base::RunLoop().RunUntilIdle();
-  }
-
-  void RespondToOcrImageCall(base::Optional<std::string> json_response =
-                                 ToJSON("metadataBlob",
-                                        "default-metadata-blob")) {
-    url_loader_mock().SendGetServerReply(json_response);
-    // Give the JSON Decoder a chance to run.
-    base::RunLoop().RunUntilIdle();
-  }
-
-  void RespondToProblemSearchCall(
-      base::Optional<std::string> server_response = "default-server-response") {
-    url_loader_mock().SendGetServerReply(server_response);
-    // Give the JSON Decoder a chance to run.
-    base::RunLoop().RunUntilIdle();
-  }
-
- private:
-  base::test::TaskEnvironment scoped_task_env_;
-  data_decoder::test::InProcessDataDecoder scoped_json_decoder_;
-
-  BloomServerProxyImpl server_proxy_{std::make_unique<BloomURLLoaderMock>()};
-};
-
-TEST_F(BloomServerProxyImplTest, ShouldUploadScreenshot) {
-  gfx::Image screenshot = gfx::test::CreateImage(10, 20);
-
-  std::string expected_request = ImageToJSON("raw_data", screenshot);
-
-  EXPECT_CALL(
-      url_loader_mock(),
-      SendPostRequest(GetUrlWithPath(kBloomCreateImagePath), "access_token",
-                      std::move(expected_request), "application/json", _));
-
-  server_proxy().AnalyzeProblem("access_token", std::move(screenshot),
-                                any_callback());
-}
-
-TEST_F(BloomServerProxyImplTest, ShouldSendOcrRequestAfterUploadingScreenshot) {
-  const std::string image_id = "the-image-id";
-
-  // First we expect a call to upload the image.
-  EXPECT_CALL(url_loader_mock(), SendPostRequest);
-
-  // Next we expect a call to perform OCR.
-  EXPECT_CALL(url_loader_mock(),
-              SendGetRequest(GetUrlWithPath(kBloomOcrImagePath + image_id),
-                             "access_token", _));
-
-  server_proxy().AnalyzeProblem("access_token", any_screenshot(),
-                                any_callback());
-
-  RespondToUploadImageCall(ToJSON("imageId", "the-image-id"));
-}
-
-TEST_F(BloomServerProxyImplTest,
-       ShouldSendSearchProblemRequestAfterOcrRequest) {
-  const std::string metadata_blob = "the-metadata-blob";
-
-  // First we expect a call to upload the image.
-  EXPECT_CALL(url_loader_mock(), SendPostRequest);
-  // Next we expect a call to perform OCR.
-  EXPECT_CALL(url_loader_mock(), SendGetRequest);
-
-  // Finally we expect a call to search the problem
-  EXPECT_CALL(
-      url_loader_mock(),
-      SendGetRequest(GetUrlWithPath(kBloomSearchProblemPath + metadata_blob),
-                     "access_token", _));
-
-  server_proxy().AnalyzeProblem("access_token", any_screenshot(),
-                                any_callback());
-
-  RespondToUploadImageCall();
-  RespondToOcrImageCall(ToJSON("metadataBlob", metadata_blob));
-  RespondToProblemSearchCall();
-}
-
-TEST_F(BloomServerProxyImplTest, ShouldSendServerResponseToTheCallback) {
-  CallbackMock callback;
-
-  ExpectServerCalls();
-
-  EXPECT_CALL(callback, Call(BloomResultWithQuery("The Server Response")));
-
-  server_proxy().AnalyzeProblem("access_token", any_screenshot(),
-                                callback.BindOnce());
-
-  RespondToUploadImageCall();
-  RespondToOcrImageCall();
-  RespondToProblemSearchCall(R"(
-    {
-      "query": { "text": "The Server Response" }
-    }
-  )");
-}
-
-TEST_F(BloomServerProxyImplTest,
-       ShouldSendNulloptToCallbackIfCreateImageFails) {
-  CallbackMock callback;
-  ExpectServerCalls();
-
-  EXPECT_CALL(callback, Call(NullBloomResult()));
-
-  server_proxy().AnalyzeProblem("access_token", any_screenshot(),
-                                callback.BindOnce());
-
-  RespondToUploadImageCall(/*json_response=*/base::nullopt);
-}
-
-TEST_F(BloomServerProxyImplTest,
-       ShouldSendNulloptToCallbackIfCreateImageReturnsInvalidJSON) {
-  CallbackMock callback;
-  ExpectServerCalls();
-
-  EXPECT_CALL(callback, Call(NullBloomResult()));
-
-  server_proxy().AnalyzeProblem("access_token", any_screenshot(),
-                                callback.BindOnce());
-
-  RespondToUploadImageCall(/*json_response=*/"invalid-json");
-}
-
-TEST_F(BloomServerProxyImplTest,
-       ShouldSendNulloptToCallbackIfCreateImageReturnsNoImageId) {
-  CallbackMock callback;
-  ExpectServerCalls();
-
-  EXPECT_CALL(callback, Call(NullBloomResult()));
-
-  server_proxy().AnalyzeProblem("access_token", any_screenshot(),
-                                callback.BindOnce());
-
-  RespondToUploadImageCall(ToJSON("wrongJSONTag", "value"));
-}
-
-TEST_F(BloomServerProxyImplTest, ShouldSendNulloptToCallbackIfOcrImageFails) {
-  CallbackMock callback;
-  ExpectServerCalls();
-
-  EXPECT_CALL(callback, Call(NullBloomResult()));
-
-  server_proxy().AnalyzeProblem("access_token", any_screenshot(),
-                                callback.BindOnce());
-
-  RespondToUploadImageCall();
-  RespondToOcrImageCall(/*json_response=*/base::nullopt);
-}
-
-TEST_F(BloomServerProxyImplTest,
-       ShouldSendNulloptToCallbackIfOcrImageReturnsInvalidJSON) {
-  CallbackMock callback;
-  ExpectServerCalls();
-
-  EXPECT_CALL(callback, Call(NullBloomResult()));
-
-  server_proxy().AnalyzeProblem("access_token", any_screenshot(),
-                                callback.BindOnce());
-
-  RespondToUploadImageCall();
-  RespondToOcrImageCall(/*json_response=*/base::nullopt);
-}
-
-TEST_F(BloomServerProxyImplTest,
-       ShouldSendNulloptToCallbackIfOcrImageReturnsNoMetadataBlob) {
-  CallbackMock callback;
-  ExpectServerCalls();
-
-  EXPECT_CALL(callback, Call(NullBloomResult()));
-
-  server_proxy().AnalyzeProblem("access_token", any_screenshot(),
-                                callback.BindOnce());
-
-  RespondToUploadImageCall();
-  RespondToOcrImageCall(ToJSON("wrongJSONTag", "value"));
-}
-
-TEST_F(BloomServerProxyImplTest,
-       ShouldSendNulloptToCallbackIfProblemSearchReturnsInvalidJSON) {
-  CallbackMock callback;
-  ExpectServerCalls();
-
-  EXPECT_CALL(callback, Call(NullBloomResult()));
-
-  server_proxy().AnalyzeProblem("access_token", any_screenshot(),
-                                callback.BindOnce());
-
-  RespondToUploadImageCall();
-  RespondToOcrImageCall();
-  RespondToProblemSearchCall("This is NOT valid JSON");
-}
-
-TEST_F(BloomServerProxyImplTest,
-       ShouldSendNulloptToCallbackIfProblemSearchFails) {
-  CallbackMock callback;
-  ExpectServerCalls();
-
-  EXPECT_CALL(callback, Call(NullBloomResult()));
-
-  server_proxy().AnalyzeProblem("access_token", any_screenshot(),
-                                callback.BindOnce());
-
-  RespondToUploadImageCall();
-  RespondToOcrImageCall();
-  RespondToProblemSearchCall(/*json_response=*/base::nullopt);
-}
-
-}  // namespace bloom
-}  // namespace chromeos
diff --git a/chromeos/components/bloom/server/bloom_url_loader.h b/chromeos/components/bloom/server/bloom_url_loader.h
deleted file mode 100644
index b5d1390..0000000
--- a/chromeos/components/bloom/server/bloom_url_loader.h
+++ /dev/null
@@ -1,39 +0,0 @@
-// Copyright 2020 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef CHROMEOS_COMPONENTS_BLOOM_SERVER_BLOOM_URL_LOADER_H_
-#define CHROMEOS_COMPONENTS_BLOOM_SERVER_BLOOM_URL_LOADER_H_
-
-#include <cstdint>
-#include <string>
-
-#include "base/callback.h"
-#include "base/optional.h"
-#include "url/gurl.h"
-
-namespace chromeos {
-namespace bloom {
-
-// A wrapper class around |SimpleURLLoader| that allows us to provide fake data
-// during unittests.
-class BloomURLLoader {
- public:
-  using Callback = base::OnceCallback<void(base::Optional<std::string> reply)>;
-
-  virtual ~BloomURLLoader() = default;
-
-  virtual void SendPostRequest(const GURL& url,
-                               const std::string& access_token,
-                               std::string&& body,
-                               const std::string& mime_type,
-                               Callback callback) = 0;
-  virtual void SendGetRequest(const GURL& url,
-                              const std::string& access_token,
-                              Callback callback) = 0;
-};
-
-}  // namespace bloom
-}  // namespace chromeos
-
-#endif  // CHROMEOS_COMPONENTS_BLOOM_SERVER_BLOOM_URL_LOADER_H_
diff --git a/chromeos/components/bloom/server/bloom_url_loader_impl.cc b/chromeos/components/bloom/server/bloom_url_loader_impl.cc
deleted file mode 100644
index eb6c32d..0000000
--- a/chromeos/components/bloom/server/bloom_url_loader_impl.cc
+++ /dev/null
@@ -1,183 +0,0 @@
-// Copyright 2020 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "chromeos/components/bloom/server/bloom_url_loader_impl.h"
-
-#include "base/logging.h"
-#include "base/notreached.h"
-#include "base/optional.h"
-#include "net/base/net_errors.h"
-#include "net/traffic_annotation/network_traffic_annotation.h"
-#include "services/network/public/cpp/resource_request.h"
-#include "services/network/public/cpp/resource_request_body.h"
-#include "services/network/public/cpp/shared_url_loader_factory.h"
-#include "services/network/public/cpp/simple_url_loader.h"
-
-namespace chromeos {
-namespace bloom {
-
-namespace {
-
-// TODO(jeroendh) Investigate how big the actual images are (and potentially
-// improve compression by using JPEG).
-constexpr int kMaxImageSizeInBytes = 5 * 1024 * 1024;
-
-int GetResponseCode(const network::SimpleURLLoader& simple_loader) {
-  if (simple_loader.ResponseInfo() && simple_loader.ResponseInfo()->headers) {
-    return simple_loader.ResponseInfo()->headers->response_code();
-  }
-
-  return -1;
-}
-
-// Transient stack object that creates and sends a request to the given URL.
-// Can safely be deleted at any time.
-class HttpRequest {
- public:
-  using Callback = network::SimpleURLLoader::BodyAsStringCallback;
-
-  explicit HttpRequest(
-      scoped_refptr<network::SharedURLLoaderFactory> url_loader_factory)
-      : url_loader_factory_(url_loader_factory),
-        request_(std::make_unique<network::ResourceRequest>()) {
-    request()->credentials_mode = network::mojom::CredentialsMode::kOmit;
-  }
-
-  HttpRequest(HttpRequest&) = delete;
-  HttpRequest& operator=(HttpRequest&) = delete;
-  ~HttpRequest() = default;
-
-  HttpRequest& SetURL(const GURL& url) {
-    request()->url = GURL(url);
-    return *this;
-  }
-
-  HttpRequest& SetMethod(const char* method) {
-    request()->method = method;
-    return *this;
-  }
-
-  HttpRequest& SetAccessToken(const std::string& access_token) {
-    return AddHeader("Authorization", "Bearer " + access_token);
-  }
-
-  HttpRequest& AddHeader(base::StringPiece name, base::StringPiece value) {
-    request()->headers.SetHeader(name, value);
-    return *this;
-  }
-
-  HttpRequest& SetBody(std::string&& body, const std::string& mime_type) {
-    DCHECK(!request_body_.has_value());
-    request_body_ = std::move(body);
-    mime_type_ = mime_type;
-    return *this;
-  }
-
-  void Send(Callback callback) {
-    auto simple_loader = network::SimpleURLLoader::Create(
-        std::move(request_), NO_TRAFFIC_ANNOTATION_YET);
-
-    if (request_body_) {
-      DCHECK(mime_type_);
-      simple_loader->AttachStringForUpload(request_body_.value(),
-                                           mime_type_.value());
-    }
-
-    auto* loader_ptr = simple_loader.get();
-    loader_ptr->DownloadToString(
-        url_loader_factory_.get(),
-        base::BindOnce(HttpRequest::OnDownloadCompleted, std::move(callback),
-                       std::move(simple_loader)),
-        kMaxImageSizeInBytes);
-  }
-
- private:
-  network::ResourceRequest* request() { return request_.get(); }
-
-  static void OnDownloadCompleted(
-      Callback callback,
-      std::unique_ptr<network::SimpleURLLoader> url_loader,
-      std::unique_ptr<std::string> response_body) {
-    if (url_loader->NetError() != net::OK) {
-      LOG(WARNING) << "Error contacting Bloom server: "
-                   << net::ErrorToString(url_loader->NetError())
-                   << ", error code " << GetResponseCode(*url_loader);
-    }
-
-    std::move(callback).Run(std::move(response_body));
-  }
-
-  scoped_refptr<network::SharedURLLoaderFactory> url_loader_factory_;
-  std::unique_ptr<network::ResourceRequest> request_;
-
-  base::Optional<std::string> request_body_;
-  base::Optional<std::string> mime_type_;
-};
-
-class PostRequest : public HttpRequest {
- public:
-  explicit PostRequest(
-      scoped_refptr<network::SharedURLLoaderFactory> url_loader_factory)
-      : HttpRequest(std::move(url_loader_factory)) {
-    SetMethod(net::HttpRequestHeaders::kPostMethod);
-  }
-};
-
-class GetRequest : public HttpRequest {
- public:
-  explicit GetRequest(
-      scoped_refptr<network::SharedURLLoaderFactory> url_loader_factory)
-      : HttpRequest(std::move(url_loader_factory)) {
-    SetMethod(net::HttpRequestHeaders::kGetMethod);
-  }
-};
-
-}  // namespace
-
-BloomURLLoaderImpl::BloomURLLoaderImpl(
-    std::unique_ptr<network::PendingSharedURLLoaderFactory> url_loader_factory)
-    : url_loader_factory_(network::SharedURLLoaderFactory::Create(
-          std::move(url_loader_factory))),
-      weak_ptr_factory_(this) {}
-
-BloomURLLoaderImpl::~BloomURLLoaderImpl() = default;
-
-void BloomURLLoaderImpl::SendPostRequest(const GURL& url,
-                                         const std::string& access_token,
-                                         std::string&& body,
-                                         const std::string& mime_type,
-                                         Callback callback) {
-  PostRequest(url_loader_factory_)
-      .SetURL(url)
-      .SetAccessToken(access_token)
-      .SetBody(std::move(body), mime_type)
-      .Send(base::BindOnce(&BloomURLLoaderImpl::OnServerResponse,
-                           weak_ptr_factory_.GetWeakPtr(),
-                           std::move(callback)));
-}
-
-void BloomURLLoaderImpl::SendGetRequest(const GURL& url,
-                                        const std::string& access_token,
-                                        Callback callback) {
-  GetRequest(url_loader_factory_)
-      .SetURL(url)
-      .SetAccessToken(access_token)
-      .Send(base::BindOnce(&BloomURLLoaderImpl::OnServerResponse,
-                           weak_ptr_factory_.GetWeakPtr(),
-                           std::move(callback)));
-}
-
-void BloomURLLoaderImpl::OnServerResponse(
-    Callback callback,
-    std::unique_ptr<std::string> response_body) {
-  if (!response_body) {
-    std::move(callback).Run(base::nullopt);
-    return;
-  }
-
-  std::move(callback).Run(std::move(*response_body));
-}
-
-}  // namespace bloom
-}  // namespace chromeos
diff --git a/chromeos/components/bloom/server/bloom_url_loader_impl.h b/chromeos/components/bloom/server/bloom_url_loader_impl.h
deleted file mode 100644
index 8462460..0000000
--- a/chromeos/components/bloom/server/bloom_url_loader_impl.h
+++ /dev/null
@@ -1,49 +0,0 @@
-// Copyright 2020 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef CHROMEOS_COMPONENTS_BLOOM_SERVER_BLOOM_URL_LOADER_IMPL_H_
-#define CHROMEOS_COMPONENTS_BLOOM_SERVER_BLOOM_URL_LOADER_IMPL_H_
-
-#include "base/memory/scoped_refptr.h"
-#include "base/memory/weak_ptr.h"
-#include "chromeos/components/bloom/server/bloom_url_loader.h"
-
-namespace network {
-class PendingSharedURLLoaderFactory;
-class SharedURLLoaderFactory;
-}  // namespace network
-
-namespace chromeos {
-namespace bloom {
-
-class BloomURLLoaderImpl : public BloomURLLoader {
- public:
-  explicit BloomURLLoaderImpl(
-      std::unique_ptr<network::PendingSharedURLLoaderFactory>
-          url_loader_factory);
-  BloomURLLoaderImpl(BloomURLLoaderImpl&) = delete;
-  BloomURLLoaderImpl& operator=(BloomURLLoaderImpl&) = delete;
-  ~BloomURLLoaderImpl() override;
-
-  void SendPostRequest(const GURL& url,
-                       const std::string& access_token,
-                       std::string&& body,
-                       const std::string& mime_type,
-                       Callback callback) override;
-  void SendGetRequest(const GURL& url,
-                      const std::string& access_token,
-                      Callback callback) override;
-
- private:
-  void OnServerResponse(Callback callback,
-                        std::unique_ptr<std::string> response_body);
-
-  scoped_refptr<network::SharedURLLoaderFactory> url_loader_factory_;
-  base::WeakPtrFactory<BloomURLLoaderImpl> weak_ptr_factory_;
-};
-
-}  // namespace bloom
-}  // namespace chromeos
-
-#endif  // CHROMEOS_COMPONENTS_BLOOM_SERVER_BLOOM_URL_LOADER_IMPL_H_
diff --git a/components/component_updater/component_updater_service.cc b/components/component_updater/component_updater_service.cc
index 49ce676..b5220a3 100644
--- a/components/component_updater/component_updater_service.cc
+++ b/components/component_updater/component_updater_service.cc
@@ -320,9 +320,6 @@
     UpdateScheduler::OnFinishedCallback on_finished) {
   DCHECK(thread_checker_.CalledOnValidThread());
 
-  // TODO(xiaochu): remove this log after https://crbug.com/851151 is fixed.
-  VLOG(1) << "CheckForUpdates: automatic updatecheck for components.";
-
   UMA_HISTOGRAM_ENUMERATION("ComponentUpdater.Calls", UPDATE_TYPE_AUTOMATIC,
                             UPDATE_TYPE_COUNT);
 
diff --git a/components/messages/android/BUILD.gn b/components/messages/android/BUILD.gn
index d0c2108..26829231 100644
--- a/components/messages/android/BUILD.gn
+++ b/components/messages/android/BUILD.gn
@@ -20,6 +20,8 @@
     "java/src/org/chromium/components/messages/MessageDispatcherBridge.java",
     "java/src/org/chromium/components/messages/MessageDispatcherProvider.java",
     "java/src/org/chromium/components/messages/MessageStateHandler.java",
+    "java/src/org/chromium/components/messages/MessageUtils.java",
+    "java/src/org/chromium/components/messages/MessageUtilsBridge.java",
     "java/src/org/chromium/components/messages/MessageWrapper.java",
     "java/src/org/chromium/components/messages/SingleActionMessage.java",
   ]
@@ -54,6 +56,7 @@
 generate_jni("jni_headers") {
   sources = [
     "java/src/org/chromium/components/messages/MessageDispatcherBridge.java",
+    "java/src/org/chromium/components/messages/MessageUtilsBridge.java",
     "java/src/org/chromium/components/messages/MessageWrapper.java",
   ]
 }
@@ -62,6 +65,8 @@
   sources = [
     "message_dispatcher_bridge.cc",
     "message_dispatcher_bridge.h",
+    "message_utils_bridge.cc",
+    "message_utils_bridge.h",
     "message_wrapper.cc",
     "message_wrapper.h",
   ]
@@ -99,7 +104,10 @@
     "messages_feature.cc",
     "messages_feature.h",
   ]
-  deps = [ "//base" ]
+  deps = [
+    ":android",
+    "//base",
+  ]
 }
 
 android_library("javatests") {
diff --git a/components/messages/android/java/src/org/chromium/components/messages/MessageUtils.java b/components/messages/android/java/src/org/chromium/components/messages/MessageUtils.java
new file mode 100644
index 0000000..e6f39e9
--- /dev/null
+++ b/components/messages/android/java/src/org/chromium/components/messages/MessageUtils.java
@@ -0,0 +1,31 @@
+// Copyright 2020 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+package org.chromium.components.messages;
+
+import org.chromium.ui.util.AccessibilityUtil;
+
+/**
+ * A util class designed for messages.
+ */
+public class MessageUtils {
+    private static AccessibilityUtil sUtil;
+
+    /**
+     * @return True if a11y is enabled.
+     */
+    public static boolean isA11yEnabled() {
+        assert sUtil != null;
+        return sUtil.isAccessibilityEnabled();
+    }
+
+    /**
+     * Set an {@link AccessibilityUtil} to know if a11y is enabled.
+     * Should set null when message infra is destroyed.
+     * @param util The {@link AccessibilityUtil} instance.
+     */
+    public static void setAccessibilityUtil(AccessibilityUtil util) {
+        sUtil = util;
+    }
+}
diff --git a/components/messages/android/java/src/org/chromium/components/messages/MessageUtilsBridge.java b/components/messages/android/java/src/org/chromium/components/messages/MessageUtilsBridge.java
new file mode 100644
index 0000000..979d404
--- /dev/null
+++ b/components/messages/android/java/src/org/chromium/components/messages/MessageUtilsBridge.java
@@ -0,0 +1,20 @@
+// Copyright 2020 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+package org.chromium.components.messages;
+
+import org.chromium.base.annotations.CalledByNative;
+import org.chromium.base.annotations.JNINamespace;
+
+/**
+ * Java counterpart to MessageUtilsBridge. Enables C++ feature code to know
+ * if it is okay to show message ui.
+ */
+@JNINamespace("messages")
+public class MessageUtilsBridge {
+    @CalledByNative
+    private static boolean isA11yEnabled() {
+        return MessageUtils.isA11yEnabled();
+    }
+}
diff --git a/components/messages/android/message_utils_bridge.cc b/components/messages/android/message_utils_bridge.cc
new file mode 100644
index 0000000..03ea3a4
--- /dev/null
+++ b/components/messages/android/message_utils_bridge.cc
@@ -0,0 +1,20 @@
+// Copyright 2020 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "components/messages/android/message_utils_bridge.h"
+
+#include <jni.h>
+
+#include "base/android/jni_android.h"
+#include "components/messages/android/jni_headers/MessageUtilsBridge_jni.h"
+
+namespace messages {
+
+// static
+bool MessageUtilsBridge::IsA11yEnabled() {
+  JNIEnv* env = base::android::AttachCurrentThread();
+  return Java_MessageUtilsBridge_isA11yEnabled(env);
+}
+
+}  // namespace messages
\ No newline at end of file
diff --git a/components/messages/android/message_utils_bridge.h b/components/messages/android/message_utils_bridge.h
new file mode 100644
index 0000000..2b7dd13
--- /dev/null
+++ b/components/messages/android/message_utils_bridge.h
@@ -0,0 +1,18 @@
+// Copyright 2020 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef COMPONENTS_MESSAGES_ANDROID_MESSAGE_UTILS_BRIDGE_H_
+#define COMPONENTS_MESSAGES_ANDROID_MESSAGE_UTILS_BRIDGE_H_
+
+namespace messages {
+
+// C++ counterpart to MessageUtilsBridge.java.
+class MessageUtilsBridge {
+ public:
+  static bool IsA11yEnabled();
+};
+
+}  // namespace messages
+
+#endif  // COMPONENTS_MESSAGES_ANDROID_MESSAGE_UTILS_BRIDGE_H_
\ No newline at end of file
diff --git a/components/messages/android/messages_feature.cc b/components/messages/android/messages_feature.cc
index 7dfcb8e2..a6e946a 100644
--- a/components/messages/android/messages_feature.cc
+++ b/components/messages/android/messages_feature.cc
@@ -3,6 +3,7 @@
 // found in the LICENSE file.
 
 #include "components/messages/android/messages_feature.h"
+#include "components/messages/android/message_utils_bridge.h"
 
 namespace messages {
 
@@ -14,7 +15,8 @@
 
 bool IsPasswordMessagesUiEnabled() {
   return base::FeatureList::IsEnabled(kMessagesForAndroidInfrastructure) &&
-         base::FeatureList::IsEnabled(kMessagesForAndroidPasswords);
+         base::FeatureList::IsEnabled(kMessagesForAndroidPasswords) &&
+         !messages::MessageUtilsBridge::IsA11yEnabled();
 }
 
 }  // namespace messages
diff --git a/components/omnibox/browser/document_provider.cc b/components/omnibox/browser/document_provider.cc
index 93e6d92..ad3e730 100644
--- a/components/omnibox/browser/document_provider.cc
+++ b/components/omnibox/browser/document_provider.cc
@@ -527,7 +527,7 @@
           static_cast<size_t>(base::GetFieldTrialParamByFeatureAsInt(
               omnibox::kDocumentProvider,
               "DocumentProviderMaxQueryLength",
-              -1))),
+              200))),
       min_query_show_length_(
           static_cast<size_t>(base::GetFieldTrialParamByFeatureAsInt(
               omnibox::kDocumentProvider,
@@ -561,7 +561,7 @@
         "DebounceDocumentProviderFromLastRun", true);
     int delay_ms = base::GetFieldTrialParamByFeatureAsInt(
         omnibox::kDebounceDocumentProvider, "DebounceDocumentProviderDelayMs",
-        100);
+        300);
     debouncer_ = std::make_unique<AutocompleteProviderDebouncer>(from_last_run,
                                                                  delay_ms);
   } else
@@ -705,7 +705,7 @@
   // two scores will be used.
   // If both are false, the server score will be used.
   bool use_client_score = base::GetFieldTrialParamByFeatureAsBool(
-      omnibox::kDocumentProvider, "DocumentUseClientScore", false);
+      omnibox::kDocumentProvider, "DocumentUseClientScore", true);
   bool use_server_score = base::GetFieldTrialParamByFeatureAsBool(
       omnibox::kDocumentProvider, "DocumentUseServerScore", true);
 
@@ -799,7 +799,7 @@
 
       // Decrement scores if necessary to ensure suggestion order is preserved.
       // Don't decrement client scores which don't necessarily rank suggestions
-      // the same as the server.
+      // the same order as the server.
       if (!use_client_score && score >= previous_score)
         score = std::max(previous_score - 1, 0);
       previous_score = score;
diff --git a/components/omnibox/browser/document_provider_unittest.cc b/components/omnibox/browser/document_provider_unittest.cc
index 9b269ec..36de1f4 100644
--- a/components/omnibox/browser/document_provider_unittest.cc
+++ b/components/omnibox/browser/document_provider_unittest.cc
@@ -305,13 +305,13 @@
       R"({
       "results": [
         {
-          "title": "Document 1",
+          "title": "Document 1 longer title",
           "url": "https://documentprovider.tld/doc?id=1",
           "score": 1234,
           "originalUrl": "%s"
         },
         {
-          "title": "Document 2",
+          "title": "Document 2 longer title",
           "url": "https://documentprovider.tld/doc?id=2"
         }
       ]
@@ -323,17 +323,21 @@
   ASSERT_TRUE(response);
   ASSERT_TRUE(response->is_dict());
 
-  provider_->input_.UpdateText(base::UTF8ToUTF16("input"), 0, {});
+  // Docs scores are the min of the server and client scores. To avoid client
+  // scores coming into play in this test, set the input to match the title
+  // similarly enough that the client score will surpass the server score.
+  provider_->input_.UpdateText(base::UTF8ToUTF16("document longer title"), 0,
+                               {});
   ACMatches matches = provider_->ParseDocumentSearchResults(*response);
   EXPECT_EQ(matches.size(), 2u);
 
-  EXPECT_EQ(matches[0].contents, base::ASCIIToUTF16("Document 1"));
+  EXPECT_EQ(matches[0].contents, base::ASCIIToUTF16("Document 1 longer title"));
   EXPECT_EQ(matches[0].destination_url,
             GURL("https://documentprovider.tld/doc?id=1"));
   EXPECT_EQ(matches[0].relevance, 1234);  // Server-specified.
   EXPECT_EQ(matches[0].stripped_destination_url, GURL(SAMPLE_STRIPPED_URL));
 
-  EXPECT_EQ(matches[1].contents, base::ASCIIToUTF16("Document 2"));
+  EXPECT_EQ(matches[1].contents, base::ASCIIToUTF16("Document 2 longer title"));
   EXPECT_EQ(matches[1].destination_url,
             GURL("https://documentprovider.tld/doc?id=2"));
   EXPECT_EQ(matches[1].relevance, 0);
@@ -547,6 +551,11 @@
 }
 
 TEST_F(DocumentProviderTest, ParseDocumentSearchResultsBreakTies) {
+  // Tie breaking is disabled when client scoring is enabled.
+  base::test::ScopedFeatureList feature_list;
+  feature_list.InitAndEnableFeatureWithParameters(
+      omnibox::kDocumentProvider, {{"DocumentUseClientScore", "false"}});
+
   const std::string kGoodJSONResponseWithTies = base::StringPrintf(
       R"({
       "results": [
@@ -603,6 +612,11 @@
 }
 
 TEST_F(DocumentProviderTest, ParseDocumentSearchResultsBreakTiesCascade) {
+  // Tie breaking is disabled when client scoring is enabled.
+  base::test::ScopedFeatureList feature_list;
+  feature_list.InitAndEnableFeatureWithParameters(
+      omnibox::kDocumentProvider, {{"DocumentUseClientScore", "false"}});
+
   const std::string kGoodJSONResponseWithTies = base::StringPrintf(
       R"({
       "results": [
@@ -661,6 +675,11 @@
 }
 
 TEST_F(DocumentProviderTest, ParseDocumentSearchResultsBreakTiesZeroLimit) {
+  // Tie breaking is disabled when client scoring is enabled.
+  base::test::ScopedFeatureList feature_list;
+  feature_list.InitAndEnableFeatureWithParameters(
+      omnibox::kDocumentProvider, {{"DocumentUseClientScore", "false"}});
+
   const std::string kGoodJSONResponseWithTies = base::StringPrintf(
       R"({
       "results": [
@@ -978,7 +997,7 @@
     for (auto doc_id : doc_ids)
       results += base::StringPrintf(
           R"({
-              "title": "Document %s",
+              "title": "Document %s longer title",
               "score": 1150,
               "url": "https://drive.google.com/open?id=%s",
               "originalUrl": "https://drive.google.com/open?id=%s",
@@ -998,79 +1017,95 @@
   auto matches =
       GetTestProviderMatches("input", MakeTestResponse({"0", "1", "2"}));
   EXPECT_EQ(matches.size(), size_t(3));
-  EXPECT_EQ(matches[0].contents, base::UTF8ToUTF16("Document 0"));
-  EXPECT_EQ(matches[1].contents, base::UTF8ToUTF16("Document 1"));
-  EXPECT_EQ(matches[2].contents, base::UTF8ToUTF16("Document 2"));
+  EXPECT_EQ(matches[0].contents, base::UTF8ToUTF16("Document 0 longer title"));
+  EXPECT_EQ(matches[1].contents, base::UTF8ToUTF16("Document 1 longer title"));
+  EXPECT_EQ(matches[2].contents, base::UTF8ToUTF16("Document 2 longer title"));
 
   // Cache should remove duplicates.
   matches = GetTestProviderMatches("input", MakeTestResponse({"1", "2", "3"}));
   EXPECT_EQ(matches.size(), size_t(4));
-  EXPECT_EQ(matches[0].contents, base::UTF8ToUTF16("Document 1"));
-  EXPECT_EQ(matches[1].contents, base::UTF8ToUTF16("Document 2"));
-  EXPECT_EQ(matches[2].contents, base::UTF8ToUTF16("Document 3"));
-  EXPECT_EQ(matches[3].contents, base::UTF8ToUTF16("Document 0"));
+  EXPECT_EQ(matches[0].contents, base::UTF8ToUTF16("Document 1 longer title"));
+  EXPECT_EQ(matches[1].contents, base::UTF8ToUTF16("Document 2 longer title"));
+  EXPECT_EQ(matches[2].contents, base::UTF8ToUTF16("Document 3 longer title"));
+  EXPECT_EQ(matches[3].contents, base::UTF8ToUTF16("Document 0 longer title"));
 
   // Cache size (4) should not restrict number of matches from the current
   // response.
   matches = GetTestProviderMatches("input", MakeTestResponse({"3", "4", "5"}));
   EXPECT_EQ(matches.size(), size_t(6));
-  EXPECT_EQ(matches[0].contents, base::UTF8ToUTF16("Document 3"));
-  EXPECT_EQ(matches[1].contents, base::UTF8ToUTF16("Document 4"));
-  EXPECT_EQ(matches[2].contents, base::UTF8ToUTF16("Document 5"));
-  EXPECT_EQ(matches[3].contents, base::UTF8ToUTF16("Document 1"));
-  EXPECT_EQ(matches[4].contents, base::UTF8ToUTF16("Document 2"));
-  EXPECT_EQ(matches[5].contents, base::UTF8ToUTF16("Document 0"));
+  EXPECT_EQ(matches[0].contents, base::UTF8ToUTF16("Document 3 longer title"));
+  EXPECT_EQ(matches[1].contents, base::UTF8ToUTF16("Document 4 longer title"));
+  EXPECT_EQ(matches[2].contents, base::UTF8ToUTF16("Document 5 longer title"));
+  EXPECT_EQ(matches[3].contents, base::UTF8ToUTF16("Document 1 longer title"));
+  EXPECT_EQ(matches[4].contents, base::UTF8ToUTF16("Document 2 longer title"));
+  EXPECT_EQ(matches[5].contents, base::UTF8ToUTF16("Document 0 longer title"));
 
   // Cache size (4) should restrict number of cached matches appended.
   matches = GetTestProviderMatches("input", MakeTestResponse({"0", "4", "6"}));
   EXPECT_EQ(matches.size(), size_t(6));
-  EXPECT_EQ(matches[0].contents, base::UTF8ToUTF16("Document 0"));
-  EXPECT_EQ(matches[1].contents, base::UTF8ToUTF16("Document 4"));
-  EXPECT_EQ(matches[2].contents, base::UTF8ToUTF16("Document 6"));
-  EXPECT_EQ(matches[3].contents, base::UTF8ToUTF16("Document 3"));
-  EXPECT_EQ(matches[4].contents, base::UTF8ToUTF16("Document 5"));
-  EXPECT_EQ(matches[5].contents, base::UTF8ToUTF16("Document 1"));
+  EXPECT_EQ(matches[0].contents, base::UTF8ToUTF16("Document 0 longer title"));
+  EXPECT_EQ(matches[1].contents, base::UTF8ToUTF16("Document 4 longer title"));
+  EXPECT_EQ(matches[2].contents, base::UTF8ToUTF16("Document 6 longer title"));
+  EXPECT_EQ(matches[3].contents, base::UTF8ToUTF16("Document 3 longer title"));
+  EXPECT_EQ(matches[4].contents, base::UTF8ToUTF16("Document 5 longer title"));
+  EXPECT_EQ(matches[5].contents, base::UTF8ToUTF16("Document 1 longer title"));
 
   // Cached results should update match |additional_info|, |relevance|, and
   // |contents_class|.
-  matches = GetTestProviderMatches("docum", MakeTestResponse({"5", "4", "7"}));
+  // Docs scores are the min of the server and client scores. To avoid client
+  // scores coming into play in this test, set the input to match the title
+  // similarly enough that the client score will surpass the server score.
+  matches = GetTestProviderMatches("docum longer title",
+                                   MakeTestResponse({"5", "4", "7"}));
   EXPECT_EQ(matches.size(), size_t(6));
-  EXPECT_EQ(matches[0].contents, base::UTF8ToUTF16("Document 5"));
+  EXPECT_EQ(matches[0].contents, base::UTF8ToUTF16("Document 5 longer title"));
   EXPECT_EQ(matches[0].GetAdditionalInfo("from cache"), "");
   EXPECT_EQ(matches[0].relevance, 1150);
   EXPECT_THAT(matches[0].contents_class,
-              testing::ElementsAre(ACMatchClassification{0, 2},
-                                   ACMatchClassification{5, 0}));
-  EXPECT_EQ(matches[1].contents, base::UTF8ToUTF16("Document 4"));
+              testing::ElementsAre(
+                  ACMatchClassification{0, 2}, ACMatchClassification{5, 0},
+                  ACMatchClassification{11, 2}, ACMatchClassification{17, 0},
+                  ACMatchClassification{18, 2}));
+  EXPECT_EQ(matches[1].contents, base::UTF8ToUTF16("Document 4 longer title"));
   EXPECT_EQ(matches[1].GetAdditionalInfo("from cache"), "");
-  EXPECT_EQ(matches[1].relevance, 1149);
+  EXPECT_EQ(matches[1].relevance, 1150);
   EXPECT_THAT(matches[1].contents_class,
-              testing::ElementsAre(ACMatchClassification{0, 2},
-                                   ACMatchClassification{5, 0}));
-  EXPECT_EQ(matches[2].contents, base::UTF8ToUTF16("Document 7"));
+              testing::ElementsAre(
+                  ACMatchClassification{0, 2}, ACMatchClassification{5, 0},
+                  ACMatchClassification{11, 2}, ACMatchClassification{17, 0},
+                  ACMatchClassification{18, 2}));
+  EXPECT_EQ(matches[2].contents, base::UTF8ToUTF16("Document 7 longer title"));
   EXPECT_EQ(matches[2].GetAdditionalInfo("from cache"), "");
-  EXPECT_EQ(matches[2].relevance, 1148);
+  EXPECT_EQ(matches[2].relevance, 1150);
   EXPECT_THAT(matches[2].contents_class,
-              testing::ElementsAre(ACMatchClassification{0, 2},
-                                   ACMatchClassification{5, 0}));
-  EXPECT_EQ(matches[3].contents, base::UTF8ToUTF16("Document 0"));
+              testing::ElementsAre(
+                  ACMatchClassification{0, 2}, ACMatchClassification{5, 0},
+                  ACMatchClassification{11, 2}, ACMatchClassification{17, 0},
+                  ACMatchClassification{18, 2}));
+  EXPECT_EQ(matches[3].contents, base::UTF8ToUTF16("Document 0 longer title"));
   EXPECT_EQ(matches[3].GetAdditionalInfo("from cache"), "true");
   EXPECT_EQ(matches[3].relevance, 0);
   EXPECT_THAT(matches[3].contents_class,
-              testing::ElementsAre(ACMatchClassification{0, 2},
-                                   ACMatchClassification{5, 0}));
-  EXPECT_EQ(matches[4].contents, base::UTF8ToUTF16("Document 6"));
+              testing::ElementsAre(
+                  ACMatchClassification{0, 2}, ACMatchClassification{5, 0},
+                  ACMatchClassification{11, 2}, ACMatchClassification{17, 0},
+                  ACMatchClassification{18, 2}));
+  EXPECT_EQ(matches[4].contents, base::UTF8ToUTF16("Document 6 longer title"));
   EXPECT_EQ(matches[4].GetAdditionalInfo("from cache"), "true");
   EXPECT_EQ(matches[4].relevance, 0);
   EXPECT_THAT(matches[4].contents_class,
-              testing::ElementsAre(ACMatchClassification{0, 2},
-                                   ACMatchClassification{5, 0}));
-  EXPECT_EQ(matches[5].contents, base::UTF8ToUTF16("Document 3"));
+              testing::ElementsAre(
+                  ACMatchClassification{0, 2}, ACMatchClassification{5, 0},
+                  ACMatchClassification{11, 2}, ACMatchClassification{17, 0},
+                  ACMatchClassification{18, 2}));
+  EXPECT_EQ(matches[5].contents, base::UTF8ToUTF16("Document 3 longer title"));
   EXPECT_EQ(matches[5].GetAdditionalInfo("from cache"), "true");
   EXPECT_EQ(matches[5].relevance, 0);
   EXPECT_THAT(matches[5].contents_class,
-              testing::ElementsAre(ACMatchClassification{0, 2},
-                                   ACMatchClassification{5, 0}));
+              testing::ElementsAre(
+                  ACMatchClassification{0, 2}, ACMatchClassification{5, 0},
+                  ACMatchClassification{11, 2}, ACMatchClassification{17, 0},
+                  ACMatchClassification{18, 2}));
 }
 
 TEST_F(DocumentProviderTest, MinQueryLength) {
diff --git a/components/policy/core/common/cloud/cloud_policy_client.cc b/components/policy/core/common/cloud/cloud_policy_client.cc
index 3c99d0f3..1129796 100644
--- a/components/policy/core/common/cloud/cloud_policy_client.cc
+++ b/components/policy/core/common/cloud/cloud_policy_client.cc
@@ -609,10 +609,10 @@
 void CloudPolicyClient::UploadEncryptedReport(
     const ::reporting::EncryptedRecord& record,
     base::Optional<base::Value> context,
-    StatusCallback callback) {
+    ResponseCallback callback) {
   DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
   if (!is_registered()) {
-    std::move(callback).Run(false);
+    std::move(callback).Run(base::nullopt);
     return;
   }
 
@@ -1295,20 +1295,23 @@
 
 // |job| can be null if the owning EncryptedReportingJobConfiguration is
 // destroyed prior to calling OnUploadComplete. In that case, callback will be
-// called with false value.
+// called with nullopt value.
 void CloudPolicyClient::OnEncryptedReportUploadCompleted(
-    StatusCallback callback,
+    ResponseCallback callback,
     DeviceManagementService::Job* job,
     DeviceManagementStatus status,
     int net_error,
     const base::Value& response) {
   if (job == nullptr) {
-    std::move(callback).Run(false);
+    std::move(callback).Run(base::nullopt);
     return;
   }
-
-  OnRealtimeReportUploadCompleted(std::move(callback), job, status, net_error,
-                                  response);
+  status_ = status;
+  if (status != DM_STATUS_SUCCESS) {
+    NotifyClientError();
+  }
+  std::move(callback).Run(response.Clone());
+  RemoveJob(job);
 }
 
 void CloudPolicyClient::OnRemoteCommandsFetched(
diff --git a/components/policy/core/common/cloud/cloud_policy_client.h b/components/policy/core/common/cloud/cloud_policy_client.h
index 0cfa551..5c8ac380 100644
--- a/components/policy/core/common/cloud/cloud_policy_client.h
+++ b/components/policy/core/common/cloud/cloud_policy_client.h
@@ -79,6 +79,11 @@
   using DeviceDMTokenCallback = base::RepeatingCallback<std::string(
       const std::vector<std::string>& user_affiliation_ids)>;
 
+  // A callback that processes response value received from the server,
+  // or nullopt, if there was a failure.
+  using ResponseCallback =
+      base::OnceCallback<void(base::Optional<base::Value>)>;
+
   using ClientCertProvisioningStartCsrCallback = base::OnceCallback<void(
       DeviceManagementStatus,
       base::Optional<
@@ -319,7 +324,7 @@
   // completes.
   virtual void UploadEncryptedReport(const ::reporting::EncryptedRecord& record,
                                      base::Optional<base::Value> context,
-                                     StatusCallback callback);
+                                     ResponseCallback callback);
 
   // Uploads a report on the status of app push-installs. The client must be in
   // a registered state. The |callback| will be called when the operation
@@ -647,7 +652,7 @@
                                        const base::Value& response);
 
   // Callback for encrypted report upload requests.
-  void OnEncryptedReportUploadCompleted(StatusCallback callback,
+  void OnEncryptedReportUploadCompleted(ResponseCallback callback,
                                         DeviceManagementService::Job* job,
                                         DeviceManagementStatus status,
                                         int net_error,
diff --git a/components/policy/core/common/cloud/cloud_policy_client_unittest.cc b/components/policy/core/common/cloud/cloud_policy_client_unittest.cc
index 08072fb..b5ba858 100644
--- a/components/policy/core/common/cloud/cloud_policy_client_unittest.cc
+++ b/components/policy/core/common/cloud/cloud_policy_client_unittest.cc
@@ -46,10 +46,16 @@
 using testing::DoAll;
 using testing::ElementsAre;
 using testing::Mock;
+using testing::Not;
 using testing::Return;
 using testing::SaveArg;
 using testing::StrictMock;
 
+// Matcher for base::Optional. Can be combined with Not().
+MATCHER(HasValue, "Has value") {
+  return arg.has_value();
+}
+
 // The type for variables containing an error from DM Server response.
 using CertProvisioningResponseErrorType =
     enterprise_management::ClientCertificateProvisioningResponse::Error;
@@ -142,6 +148,13 @@
                void(DeviceManagementStatus, const std::string&));
 };
 
+class MockResponseCallbackObserver {
+ public:
+  MockResponseCallbackObserver() = default;
+
+  MOCK_METHOD1(OnResponseReceived, void(base::Optional<base::Value>));
+};
+
 }  // namespace
 
 class CloudPolicyClientTest : public testing::Test {
@@ -595,11 +608,11 @@
   void AttemptUploadEncryptedWaitUntilIdle(
       const ::reporting::EncryptedRecord& record,
       base::Optional<base::Value> context = base::nullopt) {
-    CloudPolicyClient::StatusCallback callback =
-        base::BindOnce(&MockStatusCallbackObserver::OnCallbackComplete,
-                       base::Unretained(&callback_observer_));
+    CloudPolicyClient::ResponseCallback response_callback =
+        base::BindOnce(&MockResponseCallbackObserver::OnResponseReceived,
+                       base::Unretained(&response_callback_observer_));
     client_->UploadEncryptedReport(record, std::move(context),
-                                   std::move(callback));
+                                   std::move(response_callback));
     base::RunLoop().RunUntilIdle();
   }
 
@@ -652,6 +665,7 @@
       device_dmtoken_callback_observer_;
   StrictMock<MockRobotAuthCodeCallbackObserver>
       robot_auth_code_callback_observer_;
+  StrictMock<MockResponseCallbackObserver> response_callback_observer_;
   FakeSigningService fake_signing_service_;
   std::unique_ptr<CloudPolicyClient> client_;
   network::TestURLLoaderFactory url_loader_factory_;
@@ -1676,7 +1690,8 @@
   RegisterClient();
   ExpectEncryptedReport();
 
-  EXPECT_CALL(callback_observer_, OnCallbackComplete(true)).Times(1);
+  EXPECT_CALL(response_callback_observer_, OnResponseReceived(HasValue()))
+      .Times(1);
   AttemptUploadEncryptedWaitUntilIdle(record);
 
   EXPECT_EQ(
@@ -1691,17 +1706,23 @@
   // Create empty record
   ::reporting::EncryptedRecord record;
 
-  EXPECT_CALL(callback_observer_, OnCallbackComplete(false)).Times(4);
-
+  EXPECT_CALL(response_callback_observer_, OnResponseReceived(Not(HasValue())))
+      .Times(1);
   AttemptUploadEncryptedWaitUntilIdle(record);
 
   // Add encrypted_wrapped_record without sequencing information.
   record.set_encrypted_wrapped_record("Enterprise");
+
+  EXPECT_CALL(response_callback_observer_, OnResponseReceived(Not(HasValue())))
+      .Times(1);
   AttemptUploadEncryptedWaitUntilIdle(record);
 
   // Incorrectly set sequencing information by only setting sequencing id.
   auto* sequencing_information = record.mutable_sequencing_information();
   sequencing_information->set_sequencing_id(1701);
+
+  EXPECT_CALL(response_callback_observer_, OnResponseReceived(Not(HasValue())))
+      .Times(1);
   AttemptUploadEncryptedWaitUntilIdle(record);
 
   // Finish correctly setting sequencing information but incorrectly set
@@ -1712,12 +1733,15 @@
   auto* encryption_info = record.mutable_encryption_info();
   encryption_info->set_encryption_key("Key");
 
+  EXPECT_CALL(response_callback_observer_, OnResponseReceived(Not(HasValue())))
+      .Times(1);
   AttemptUploadEncryptedWaitUntilIdle(record);
 
   // Finish correctly setting encryption info - expect complete call.
   encryption_info->set_public_key_id(1234);
 
-  EXPECT_CALL(callback_observer_, OnCallbackComplete(true)).Times(1);
+  EXPECT_CALL(response_callback_observer_, OnResponseReceived(HasValue()))
+      .Times(1);
   ExpectEncryptedReport();
 
   AttemptUploadEncryptedWaitUntilIdle(record);
diff --git a/components/policy/core/common/cloud/mock_cloud_policy_client.h b/components/policy/core/common/cloud/mock_cloud_policy_client.h
index bfa3d7d..07c0efc6 100644
--- a/components/policy/core/common/cloud/mock_cloud_policy_client.h
+++ b/components/policy/core/common/cloud/mock_cloud_policy_client.h
@@ -113,7 +113,7 @@
   MOCK_METHOD3(UploadEncryptedReport,
                void(const ::reporting::EncryptedRecord&,
                     base::Optional<base::Value>,
-                    StatusCallback));
+                    ResponseCallback));
 
   void UploadAppInstallReport(base::Value value,
                               StatusCallback callback) override {
diff --git a/components/policy/resources/policy_templates_de.xtb b/components/policy/resources/policy_templates_de.xtb
index caf0f16d..6ca0a17e 100644
--- a/components/policy/resources/policy_templates_de.xtb
+++ b/components/policy/resources/policy_templates_de.xtb
@@ -83,6 +83,11 @@
 <translation id="1099282607296956954">Website-Isolierung für jede Website aktivieren</translation>
 <translation id="1117535567637097036">Die über diese Richtlinie festgelegten Protokoll-Handler werden bei der Verarbeitung von Android-Intents nicht verwendet.</translation>
 <translation id="1118093128235245168">Websites dürfen den Nutzer um Zugriff auf ein angeschlossenes USB-Gerät bitten</translation>
+<translation id="1133814529606590009">Ist diese Richtlinie aktiviert, ist die anonymisierte URL-Datenerfassung immer aktiv. Das heißt, URLs der von Nutzern besuchten Seiten werden an Google gesendet, um Suchanfragen und das Surfen zu verbessern.
+
+      Wenn die Richtlinie deaktiviert ist, erfolgt keine anonymisierte URL-Datenerfassung.
+
+      Wenn Sie diese Richtlinie konfigurieren, kann sie von Nutzern nicht geändert werden. Wird sie nicht konfiguriert, ist die anonymisierte URL-Datenerfassung aktiv, kann aber von Nutzern geändert werden.</translation>
 <translation id="1138294736309071213">Diese Richtlinie ist nur im Händlermodus aktiv.
 
       Legt fest, wie lange es dauert, bis für Geräte im Händlermodus der Bildschirmschoner auf der Anmeldeseite erscheint.
@@ -173,6 +178,13 @@
 <translation id="1265053460044691532">Zeit beschränken, für die sich ein über SAML authentifizierter Nutzer offline anmelden kann</translation>
 <translation id="127264587838521316">Mit dieser Richtlinie werden Anfragen für die Installation von Erweiterungen für <ph name="PRODUCT_NAME" /> aktiviert</translation>
 <translation id="127699919157094139">Deaktiviert die Datensynchronisierung in <ph name="PRODUCT_NAME" /> über von Google gehostete Synchronisierungsdienste und verhindert, dass Nutzer diese Einstellung ändern. Wenn Sie diese Einstellung aktivieren, so können Nutzer diese Einstellung in <ph name="PRODUCT_NAME" /> nicht ändern oder außer Kraft setzen. Sollte die Richtlinie nicht konfiguriert sein, so können die Nutzer entscheiden, ob Sie Google Sync in Anspruch nehmen möchten. Zur vollständigen Deaktivierung von Google Sync sollten Sie den Google Sync-Dienst in der Google Admin-Konsole deaktivieren.</translation>
+<translation id="128059397544257017">Wenn diese Richtlinie aktiviert ist und <ph name="CHROME_CLEANUP_NAME" /> unerwünschte Software erkennt, können gemäß der durch <ph name="SAFE_BROWSING_EXTENDED_REPORTING_ENABLED_POLICY_NAME" /> festgelegten Richtlinie Informationen zum Scan an Google gesendet werden. <ph name="CHROME_CLEANUP_NAME" /> fragt den Nutzer, ob die Bereinigung erwünscht ist. Ergebnisse werden an Google gesendet.
+
+      Wenn die Richtlinie deaktiviert ist und <ph name="CHROME_CLEANUP_NAME" /> unerwünschte Software erkennt, werden unabhängig davon, wie <ph name="SAFE_BROWSING_EXTENDED_REPORTING_ENABLED_POLICY_NAME" /> festgelegt ist, keine Informationen zum Scan an Google gesendet. <ph name="CHROME_CLEANUP_NAME" /> fragt den Nutzer, ob die Bereinigung erwünscht ist. Die Ergebnisse werden nicht an Google gesendet.
+
+      Wenn die Richtlinie nicht konfiguriert wird und <ph name="CHROME_CLEANUP_NAME" /> unerwünschte Software erkennt, können gemäß der durch <ph name="SAFE_BROWSING_EXTENDED_REPORTING_ENABLED_POLICY_NAME" /> festgelegten Richtlinie Informationen zum Scan an Google gesendet werden. <ph name="CHROME_CLEANUP_NAME" /> fragt den Nutzer, ob die Bereinigung erwünscht ist, und bittet ihn, die Ergebnisse mit Google zu teilen, damit unerwünschte Software zukünftig besser erkannt werden kann. Diese Ergebnisse enthalten Dateimetadaten, automatisch installierte Erweiterungen und Registrierungsschlüssel, wie es im Whitepaper zum Datenschutz bei Chrome beschrieben ist.
+
+      Unter <ph name="MS_WIN_NAME" /> steht diese Funktion nur bei Instanzen zur Verfügung, die Teil einer <ph name="MS_AD_NAME" />-Domain sind, auf denen Windows 10 Pro läuft oder die über <ph name="CHROME_BROWSER_CLOUD_MANAGEMENT_NAME" /> verwaltet werden.</translation>
 <translation id="1290634681382861275">Legt sonstige Einstellungen fest, u. a. für USB, Bluetooth, Richtlinienaktualisierung, Entwicklermodus und mehr.</translation>
 <translation id="1291880496936992484">Achtung: RC4 wird nach Version 52, etwa im September 2016, vollständig aus <ph name="PRODUCT_NAME" /> entfernt. Anschließend funktioniert diese Richtlinie nicht mehr.
 
@@ -688,6 +700,9 @@
       Wenn diese Richtlinie nicht konfiguriert oder eine leere Liste festgelegt ist, stehen auf verwalteten Geräten keine Modi für das schnelle Entsperren zur Verfügung.
 
       Diese Richtlinie wurde eingestellt. Bitte verwenden Sie stattdessen die Richtlinie „<ph name="QUICK_UNLOCK_MODE_ALLOW_LIST_POLICY_NAME" />“.</translation>
+<translation id="2033784678146670379">Wenn diese Richtlinie aktiviert wird, ist die Remote-Attestierung der Identität gegenüber der Datenschutz-Zertifizierungsstelle anhand der Hardware von <ph name="PRODUCT_OS_NAME" />-Geräten möglich. Dies geschieht mithilfe der Funktion „<ph name="CHALLENGE_USER_KEY_FUNCTION" />“ über die <ph name="ENTERPRISE_PLATFORM_KEYS_API" />.
+
+      Wenn die Richtlinie deaktiviert ist oder nicht konfiguriert wird, schlagen API-Aufrufe fehl und ein Fehlercode wird angezeigt.</translation>
 <translation id="2036522553891755455">Wenn die Richtlinie aktiviert ist, verwendet die Freigabeerkennung, also die Funktion zur Netzwerkfreigabe für <ph name="PRODUCT_NAME" />, das <ph name="NETBIOS_PROTOCOL" />, um Dateifreigaben im Netzwerk zu erkennen. Wenn die Richtlinie deaktiviert ist, kann die Freigabeerkennung dieses Protokoll nicht verwenden, um Freigaben zu erkennen.
 
       Ist sie nicht konfiguriert, wird dieses Verhalten für verwaltete Nutzer standardmäßig deaktiviert und für andere Nutzer hingegen aktiviert.</translation>
@@ -717,6 +732,9 @@
 <translation id="2082205219176343977">Konfigurieren Sie die für das Gerät erforderliche Mindestversion von Chrome.</translation>
 <translation id="208566302163036794">Deaktivierte Funktionen sperren</translation>
 <translation id="208623333578980446">Bildschirm-Wakelocks für die Energieverwaltung zulassen</translation>
+<translation id="2090939118981888335">Wenn diese Richtlinie aktiviert ist, wird der Proxy zur Datenkomprimierung zugelassen. Ist die Richtlinie deaktiviert, kann der Proxy nicht verwendet werden.
+
+      Wenn Sie diese Richtlinie konfigurieren, kann sie von Nutzern nicht geändert werden. Wenn sie nicht konfiguriert ist, können Nutzer entscheiden, ob die Funktion genutzt werden soll.</translation>
 <translation id="209586405398070749">Stabiler Kanal</translation>
 <translation id="2098658257603918882">Berichte mit Nutzungs- und Absturzdaten erstellen</translation>
 <translation id="2104418465060359056">Daten von Erweiterungen und Plug-ins erfassen</translation>
@@ -1124,6 +1142,9 @@
       Wenn die Richtlinie deaktiviert oder nicht konfiguriert ist, werden diese Empfehlungen nicht angezeigt.
 
       Wenn diese Richtlinie konfiguriert ist, kann sie von Nutzern nicht geändert werden.</translation>
+<translation id="2724313944474873275">Wenn diese Richtlinie aktiviert oder nicht konfiguriert ist, können <ph name="PRODUCT_OS_NAME" />-Geräte mithilfe der Remote-Attestierung (bestätigter Zugriff) von der <ph name="PRODUCT_OS_NAME" />-Zertifizierungsstelle ein Zertifikat erhalten, das die Berechtigung des Geräts für die Wiedergabe geschützter Inhalte nachweist. Bei diesem Vorgang werden Informationen zur Bestätigung der Hardware an die <ph name="PRODUCT_OS_NAME" />-Zertifizierungsstelle gesendet, anhand derer das Gerät eindeutig identifiziert werden kann.
+
+      Wenn die Richtlinie deaktiviert ist, verwendet das Gerät keine Remote-Attestierung für geschützte Inhalte, sodass darauf möglicherweise keine geschützten Inhalte wiedergegeben werden können.</translation>
 <translation id="2725855586003209701">Wenn die Richtlinie aktiviert oder nicht konfiguriert ist, werden über registrierte Geräte alle Gerätenutzer gemeldet, die sich vor Kurzem angemeldet haben.
 
       Ist die Richtlinie deaktiviert, melden die registrierten Geräte keine Nutzer.</translation>
@@ -2099,6 +2120,13 @@
 <translation id="4089849819635523136">Wenn "<ph name="DEFAULT_SEARCH_PROVIDER_ENABLED_POLICY_NAME" />" aktiviert ist, gibt "<ph name="DEFAULT_SEARCH_PROVIDER_KEYWORD_POLICY_NAME" />" den Suchbegriff oder die Verknüpfung an, die in der Adressleiste zum Starten der Suche für diesen Anbieter verwendet wird.
 
       Wenn "<ph name="DEFAULT_SEARCH_PROVIDER_KEYWORD_POLICY_NAME" />" nicht konfiguriert ist, lässt sich der Suchanbieter nicht durch einen Suchbegriff aktivieren.</translation>
+<translation id="409035987613226003">Wenn diese Richtlinie aktiviert ist, werden anonyme Nutzungs- und Absturzdaten für Chrome an Google gesendet und Nutzer können die Einstellung nicht ändern. Wenn die Richtlinie deaktiviert ist, werden diese Informationen nicht an Google gesendet.
+
+      Wenn Sie diese Richtlinie konfigurieren, kann sie von Nutzern nicht geändert werden. Wird die Richtlinie nicht konfiguriert, kann sie vom Nutzer bei der Installation oder beim ersten Ausführen festgelegt werden.
+
+      Die Richtlinie steht nur bei Windows-Instanzen zur Verfügung, die Teil einer <ph name="MS_AD_NAME" />-Domain sind, oder bei Windows 10 Pro- oder Enterprise-Instanzen, die für die Geräteverwaltung angemeldet sind, sowie macOS-Instanzen, die über die Mobilgeräteverwaltung verwaltet werden oder per MCX mit einer Domain verbunden sind.
+
+      Informationen zu Chrome OS finden Sie unter „DeviceMetricsReportingEnabled“.</translation>
 <translation id="4097556069183835428">Wenn Sie die Richtlinie auf "None" setzen, ist die Lupe deaktiviert.
 
       Wenn Sie diese Richtlinie konfigurieren, kann sie von Nutzern nicht geändert werden. Wird sie nicht konfiguriert, ist die Lupe erst einmal deaktiviert, kann aber jederzeit von Nutzern aktiviert werden.</translation>
@@ -2462,6 +2490,9 @@
 <translation id="4725528134735324213">Android Backup Service aktivieren</translation>
 <translation id="4725801978265372736">Verlangen, dass der Name des lokalen Nutzers und des Host-Inhabers des Remotezugriffs übereinstimmen</translation>
 <translation id="4733471537137819387">Strategien im Hinblick auf die integrierte HTTP-Authentifizierung</translation>
+<translation id="4735099388031364207">Ist diese Richtlinie aktiviert, ist die Remote-Attestierung für das Gerät erlaubt. Ein Zertifikat wird automatisch erstellt und auf den Geräteverwaltungsserver hochgeladen.
+
+      Wenn die Richtlinie deaktiviert oder nicht konfiguriert ist, wird kein Zertifikat erstellt und Aufrufe der <ph name="ENTERPRISE_PLATFORM_KEYS_API" /> schlagen fehl.</translation>
 <translation id="4742973303930120836">Druckmodus mit Hintergrundgrafiken einschränken</translation>
 <translation id="4752880493649142945">Clientzertifikat zur Herstellung einer Verbindung zu RemoteAccessHostTokenValidationUrl</translation>
 <translation id="4757053978738874325">Mit dieser Richtlinie wird die Bedienungshilfe "Mono-Audio" aktiviert.
@@ -2548,6 +2579,11 @@
 <translation id="489803897780524242">Parameter zur Steuerung der Suchbegriffersetzung für den Standardsuchanbieter</translation>
 <translation id="4899708173828500852">Safe Browsing aktivieren</translation>
 <translation id="4906194810004762807">Aktualisierungsrate für Geräterichtlinien</translation>
+<translation id="49093841899738146">Wenn diese Richtlinie aktiviert ist, darf <ph name="PRODUCT_NAME" /> WebRTC-Ereignisprotokolle aus Google-Diensten wie Hangouts Meet speichern und die Protokolle bei Google hochladen. Diese Protokolle enthalten Diagnoseinformationen, die für die Fehlerbehebung bei Audioanrufen oder Videokonferenzen in <ph name="PRODUCT_NAME" /> hilfreich sein können. Dazu zählen die Sende- und Empfangszeit sowie die Größe von RTP-Paketen, Feedback zur Auslastung des Netzwerks und Metadaten zur Länge und Qualität von Audio- und Videoframes. Audio- oder Videoinhalte von Anrufen bzw. Konferenzen gehören nicht dazu. Damit Fehler leichter behoben werden können, verknüpft Google diese Protokolle anhand einer Sitzungs-ID unter Umständen mit anderen Protokollen, die vom Google-Dienst selbst erfasst wurden.
+
+      Wenn die Richtlinie deaktiviert ist, werden solche Protokolle weder erfasst noch hochgeladen.
+
+      Ist diese Richtlinie nicht konfiguriert (bis einschließlich Version M76), kann <ph name="PRODUCT_NAME" /> diese Protokolle standardmäßig weder erfassen noch hochladen. Ab Version M77 kann <ph name="PRODUCT_NAME" /> diese Protokolle standardmäßig von den meisten Profilen erfassen und hochladen, für die cloudbasierte Unternehmensrichtlinien auf Nutzerebene gelten. Ab Version M77 bis einschließlich M80 kann <ph name="PRODUCT_NAME" /> diese Protokolle außerdem standardmäßig von Profilen erfassen und hochladen, die mit <ph name="PRODUCT_NAME" /> lokal verwaltet werden.</translation>
 <translation id="4910101362791876581">Gibt die Drucker an, die ein Nutzer verwenden kann.
 
       Diese Richtlinie wird nur verwendet, wenn <ph name="PRINTERS_WHITELIST" /> für <ph name="DEVICE_PRINTERS_ACCESS_MODE_POLICY_NAME" /> ausgewählt wurde.
@@ -2559,6 +2595,9 @@
 <translation id="4917385247580444890">Stark</translation>
 <translation id="4919122295221518724">Strengere Handhabung gemischter Inhalte aktivieren</translation>
 <translation id="4923806312383904642">WebDriver erlauben, nicht kompatible Richtlinien zu überschreiben</translation>
+<translation id="4927214690104703256">Wenn die Richtlinie konfiguriert ist, wird festgelegt, welche Erweiterungen die <ph name="ENTERPRISE_PLATFORM_KEYS_API" />-Funktionen für die Remote-Attestierung nutzen können. Damit eine Erweiterung die API verwenden darf, muss sie in dieser Liste enthalten sein.
+
+      Wenn eine Erweiterung nicht in der Liste enthalten ist oder keine Liste festgelegt wurde, schlägt der API-Aufruf fehl und ein Fehlercode wird angezeigt.</translation>
 <translation id="4927797103413916381">Wenn die Richtlinie "<ph name="SAFE_BROWSING_ENABLED_POLICY_NAME" />" nicht deaktiviert ist und "<ph name="ABUSIVE_EXPERIENCE_INTERVENTION_ENFORCE_POLICY_NAME" />" aktiviert oder nicht konfiguriert wird, werden Websites mit irreführenden Inhalten daran gehindert, neue Fenster oder Tabs zu öffnen.
 
        Ist "<ph name="SAFE_BROWSING_ENABLED_POLICY_NAME" />" oder "<ph name="ABUSIVE_EXPERIENCE_INTERVENTION_ENFORCE_POLICY_NAME" />" deaktiviert, können Websites mit irreführenden Inhalten neue Fenster oder Tabs öffnen.</translation>
@@ -2671,6 +2710,13 @@
 <translation id="5090209345759901501">Einstellung für Flash-Inhalt auf alle Inhalte anwenden</translation>
 <translation id="5090791951240382356">Zusammenführen von Wörterbuchrichtlinien aus unterschiedlichen Quellen erlauben</translation>
 <translation id="5091315650312105069"><ph name="BASIC_AUTH" /> die Authentifizierung für HTTP erlauben</translation>
+<translation id="5103112931744164177">Mit dieser Richtlinie wird festgelegt, welcher Software-Stack zur Kommunikation mit dem DNS-Server verwendet wird: der DNS-Client des Betriebssystems oder der integrierte DNS-Client von <ph name="PRODUCT_NAME" />. Sie beeinflusst nicht, welche DNS-Server verwendet werden. Wenn beispielsweise das Betriebssystem für die Verwendung eines Unternehmens-DNS-Servers konfiguriert ist, verwendet der integrierte DNS-Client genau diesen Server. Mit der Richtlinie wird auch nicht gesteuert, ob DoH (DNS over HTTPS) verwendet wird. <ph name="PRODUCT_NAME" /> nutzt immer den integrierten Resolver für DoH-Anfragen. Weitere Informationen zum Steuern von DoH finden Sie in der Richtlinie „<ph name="DNS_OVER_HTTPS_MODE_POLICY_NAME" />“.
+
+      Wenn diese Richtlinie aktiviert ist, wird, falls verfügbar, der integrierte DNS-Client verwendet.
+
+      Wenn die Richtlinie deaktiviert ist, wird der integrierte DNS-Client nur bei Nutzung von DoH verwendet.
+
+      Wird die Richtlinie nicht konfiguriert, ist der integrierte DNS-Client unter <ph name="MAC_OS_NAME" />, <ph name="ANDROID_NAME" /> – sofern weder ein privates DNS noch ein VPN aktiviert ist – und <ph name="PRODUCT_OS_NAME" /> standardmäßig aktiviert.</translation>
 <translation id="5105313908130842249">Verzögerung für die Bildschirmsperre im Akkubetrieb</translation>
 <translation id="5108031557082757679">Deaktivierte, an Geräte gebundene Unternehmensdrucker</translation>
 <translation id="5109383437323376357">Die Verfügbarkeit von Variationen bestimmen</translation>
@@ -3548,6 +3594,11 @@
 
       Falls diese Richtlinie nicht konfiguriert oder die Liste leer ist, besteht in <ph name="PRODUCT_NAME" /> Zugriff auf alle Schemas.</translation>
 <translation id="6338982178236723271">Systeminformationen melden</translation>
+<translation id="6347363725343851058">Wenn diese Richtlinie aktiviert ist, wird der Hintergrundmodus aktiviert. Im Hintergrundmodus beginnt bei der Anmeldung im Betriebssystem ein <ph name="PRODUCT_NAME" />-Prozess, der bis zum Schließen des letzten Browserfensters ausgeführt wird. So bleiben Hintergrund-Apps und die Browsersitzung einschließlich aller Sitzungscookies aktiv. Der Hintergrundprozess kann jederzeit über ein entsprechendes Symbol in der Taskleiste beendet werden.
+
+      Ist die Richtlinie deaktiviert, wird der Hintergrundmodus deaktiviert.
+
+      Wenn die Richtlinie konfiguriert ist, kann der Nutzer sie nicht über die Browsereinstellungen ändern. Wird die Richtlinie nicht konfiguriert, ist der Hintergrundmodus zuerst deaktiviert, aber der Nutzer hat die Möglichkeit, das zu ändern.</translation>
 <translation id="6353890097388312479">Wenn die Richtlinie auf „Alle“ (0) gesetzt oder nicht konfiguriert ist, können Nutzer Vertrauenseinstellungen für alle CA-Zertifikate bearbeiten, von Nutzern importierte Zertifikate entfernen und Zertifikate mit dem Zertifikat-Manager importieren. Wenn die Richtlinie auf „Nur Nutzer“ (1) gesetzt ist, können Nutzer zwar von Nutzern importierte Zertifikate verwalten, aber die Vertrauenseinstellungen integrierter Zertifikate nicht ändern. Ist sie auf „Keine“ (2) gesetzt, können Nutzer CA-Zertifikate ansehen, aber nicht verwalten.</translation>
 <translation id="6362856770865555544">Wenn die Richtlinie aktiviert oder nicht konfiguriert ist, wird die WPAD (Web Proxy Auto-Discovery)-Optimierung in <ph name="PRODUCT_NAME" /> aktiviert.
 
@@ -3873,6 +3924,9 @@
 <translation id="6815483833848348029">Wenn die Richtlinie aktiviert oder nicht konfiguriert und ein lokales Gerätekonto für die automatische Anmeldung ohne Verzögerung bei einem Gerät im Offlinemodus konfiguriert ist, zeigt <ph name="PRODUCT_OS_NAME" /> eine Eingabeaufforderung zur Netzwerkkonfiguration an.
 
       Wenn die Richtlinie deaktiviert ist, wird stattdessen eine Fehlermeldung angezeigt,</translation>
+<translation id="6819838337315703072">Wenn der Support für die <ph name="LINUX_OS_NAME" />-App und die Richtlinie aktiviert sind, werden Informationen zur Nutzung von <ph name="LINUX_OS_NAME" />-Apps an den Server zurückgesendet.
+
+      Ist diese Richtlinie deaktiviert oder nicht konfiguriert, werden keine Informationen zur App-Nutzung gesendet.</translation>
 <translation id="6821268164692776674"><ph name="CLOUD_PRINT_NAME" />- und "In Google Drive speichern"-Ziele</translation>
 <translation id="6823711520976094072">Wenn Sie einen Wert unter 1 MB oder gar keinen Wert festlegen, verwendet <ph name="PRODUCT_OS_NAME" /> beim Installieren durch mehrere Nutzer auf demselben Gerät die Standardgröße von 256 MiB zum Speichern von Apps und Erweiterungen im Cache. Hierdurch wird ein nochmaliges Herunterladen für jeden Nutzer vermieden.</translation>
 <translation id="682408981080798691">Ist die Richtlinie aktiviert oder nicht konfiguriert, wird die Renderer-Codeintegrität aktiviert.
@@ -3912,6 +3966,9 @@
 
       Diese Richtlinie existiert nicht mehr. Bitte verwenden Sie stattdessen <ph name="PRINTING_API_EXTENSIONS_ALLOWLIST_POLICY_NAME" />.</translation>
 <translation id="684856667300805181">Diese Richtlinie wurde in Version 68 von <ph name="PRODUCT_NAME" /> entfernt und durch "<ph name="ARC_GLS_POLICY_NAME" />" ersetzt.</translation>
+<translation id="6848721032946289937">Wenn diese Richtlinie aktiviert oder nicht konfiguriert ist, wird die Hardwarebeschleunigung aktiviert (sofern verfügbar).
+
+      Wenn die Richtlinie deaktiviert ist, wird die Hardwarebeschleunigung deaktiviert.</translation>
 <translation id="6851199885688265233">Bedienungshilfe "Mauszeiger hervorheben" aktivieren</translation>
 <translation id="6851315055469993882">Globales HTTP-Auth-Cache aktivieren</translation>
 <translation id="6854767649023671426">Wenn die Richtlinie aktiviert oder nicht konfiguriert ist, wird beim Zugriff für Videoaufnahmen beim Nutzer nachgefragt. Ausgenommen sind URLs in der Liste "VideoCaptureAllowedUrls".
@@ -4060,6 +4117,9 @@
 <translation id="7027785306666625591">Hiermit wird die Energieverwaltung in <ph name="PRODUCT_OS_NAME" /> konfiguriert.
 
       Mit diesen Richtlinien können Sie festlegen, wie <ph name="PRODUCT_OS_NAME" /> sich verhalten soll, wenn der Nutzer für einen bestimmten Zeitraum inaktiv ist.</translation>
+<translation id="7027923238554618852">Mit dieser Richtlinie wird <ph name="PRODUCT_OS_NAME" /> angewiesen, die jeweils angegebene Konfiguration des Aufgabenplaners zu nutzen. Die Richtlinie kann auf <ph name="CONSERVATIVE_VALUE" /> oder <ph name="PERFORMANCE_VALUE" /> gesetzt werden. Dadurch wird entweder eine Aufgabenplaner-Konfiguration für optimale Stabilität oder für optimale Leistung ausgewählt.
+
+      Wenn die Richtlinie nicht konfiguriert ist, kann der Nutzer selbst wählen.</translation>
 <translation id="7030205756530739128">Wenn „<ph name="DEVICE_BATTERY_CHARGE_MODE_NAME" />“ auf „<ph name="DEVICE_BATTERY_CHARGE_CUSTOM_MODE_NAME" />“ gesetzt ist, passt die Einstellung „<ph name="DEVICE_BATTERY_CHARGE_CUSTOM_START_CHARGING_POLICY_NAME" />“ basierend auf dem Prozentsatz des Akkustands an, wann der Ladevorgang startet. Der Wert muss mindestens fünf Prozentpunkte unter „<ph name="DEVICE_BATTERY_CHARGE_CUSTOM_STOP_CHARGING_POLICY_NAME" />“ liegen.
 
       Wenn die Richtlinie nicht konfiguriert ist, wird der Standardakkulademodus verwendet.</translation>
@@ -4188,6 +4248,11 @@
 <translation id="718126088895133062">Mit dieser Richtlinie wird die Nutzer-ID zur <ph name="PLUGIN_VM_NAME" />-Lizenzierung für dieses Gerät angegeben.</translation>
 <translation id="7185078796915954712">TLS 1.3</translation>
 <translation id="7185630966939835143">Rechtschreibfehler mithilfe eines Google-Webdienstes korrigieren</translation>
+<translation id="718850220532931090">Diese Richtlinie wurde eingestellt. Bitte verwenden Sie stattdessen die Richtlinie „<ph name="ATTESTATION_EXTENSION_ALLOWLIST_POLICY_NAME" />“.
+
+      Wenn die Richtlinie konfiguriert ist, wird festgelegt, welche Erweiterungen die <ph name="ENTERPRISE_PLATFORM_KEYS_API" />-Funktion „<ph name="CHALLENGE_USER_KEY_FUNCTION" />“ für die Remote-Attestierung nutzen können. Damit eine Erweiterung die API verwenden darf, muss sie in dieser Liste enthalten sein.
+
+      Wenn eine Erweiterung nicht in der Liste enthalten ist oder keine Liste festgelegt wurde, schlägt der API-Aufruf fehl und ein Fehlercode wird angezeigt.</translation>
 <translation id="718956142899066210">Für Updates zugelassene Verbindungstypen</translation>
 <translation id="7190286937411178540">Bedienungshilfe "Objekt mit Tastaturfokus hervorheben" aktivieren</translation>
 <translation id="7193489339723768342">Wenn Sie diese Richtlinie konfigurieren, geben Sie eine Liste von URLs an, deren Muster mit dem SecurityOrigin-Objekt der anfragenden URL abgeglichen werden. Bei einer Übereinstimmung wird ohne Nachfrage Zugriff auf Audioaufnahmegeräte gewährt.
@@ -4980,6 +5045,9 @@
 <translation id="8357681633047935212">Dauer einer Nutzersitzung beschränken</translation>
 <translation id="8357989008292691856">Zulassungsliste für Nutzer, die sich anmelden dürfen</translation>
 <translation id="8359734107661430198">ExampleDeprecatedFeature API bis zum 02.09.2008 aktivieren</translation>
+<translation id="8367069206652407172">Wenn diese Richtlinie deaktiviert ist, können Nutzer Prozesse nicht im Task-Manager beenden.
+
+      Wenn die Richtlinie aktiviert ist oder nicht konfiguriert wird, können Nutzer Prozesse im Task-Manager beenden.</translation>
 <translation id="8367209241899435947">Chrome Cleanup Tool unter Windows aktivieren</translation>
 <translation id="8367473200119029349">Cloud-Berichterstellung</translation>
 <translation id="8369602308428138533">Verzögerung für die Bildschirmabschaltung im Netzbetrieb</translation>
diff --git a/components/policy/resources/policy_templates_id.xtb b/components/policy/resources/policy_templates_id.xtb
index a839840..bf73c7b 100644
--- a/components/policy/resources/policy_templates_id.xtb
+++ b/components/policy/resources/policy_templates_id.xtb
@@ -83,6 +83,11 @@
 <translation id="1099282607296956954">Aktifkan Isolasi Situs untuk setiap situs</translation>
 <translation id="1117535567637097036">Penanganan protokol yang disetel melalui kebijakan ini tidak digunakan ketika menangani maksud Android.</translation>
 <translation id="1118093128235245168">Izinkan situs meminta pengguna memberikan akses ke perangkat USB yang tersambung</translation>
+<translation id="1133814529606590009">Jika kebijakan disetel ke Aktif, pengumpulan data anonim yang menyertakan URL, yang mengirimkan informasi URL halaman yang dikunjungi oleh pengguna kepada Google untuk menyempurnakan penelusuran dan penjelajahan, akan selalu aktif.
+
+      Jika kebijakan disetel ke Nonaktif, pengumpulan data anonim yang menyertakan URL tidak akan ditemukan.
+
+      Jika Anda menyetel kebijakan, pengguna tidak dapat mengubahnya. Jika tidak disetel, setel pengumpulan data anonim yang menyertakan URL terlebih dahulu, tetapi pengguna tidak dapat mengubahnya.</translation>
 <translation id="1138294736309071213">Kebijakan ini aktif dalam mode eceran saja.
 
       Menentukan durasi sebelum tirai layar ditampilkan di layar masuk dalam mode eceran.
@@ -179,6 +184,13 @@
       Jika kebijakan ini dibiarkan tidak tersetel, Google Sync akan tersedia bagi pengguna tersebut untuk memilih menggunakannya atau tidak.
 
       Untuk menonaktifkan Google Sync sepenuhnya, sebaiknya Anda menonaktifkan layanan Google Sync di konsol Google Admin.</translation>
+<translation id="128059397544257017">Jika kebijakan disetel ke Aktif dan <ph name="CHROME_CLEANUP_NAME" /> mendeteksi software yang tidak diinginkan, kebijakan dapat melaporkan pemindaian software tersebut ke Google, sesuai dengan kebijakan yang disetel oleh <ph name="SAFE_BROWSING_EXTENDED_REPORTING_ENABLED_POLICY_NAME" />. <ph name="CHROME_CLEANUP_NAME" /> meminta izin pengguna untuk melakukan pembersihan. Kemudian hasilnya dikirimkan ke Google.
+
+      Jika kebijakan disetel ke Nonaktif dan <ph name="CHROME_CLEANUP_NAME" /> mendeteksi software yang tidak diinginkan, kebijakan tidak akan melaporkan pemindaian software tersebut ke Google apa pun nilai dari <ph name="SAFE_BROWSING_EXTENDED_REPORTING_ENABLED_POLICY_NAME" />. <ph name="CHROME_CLEANUP_NAME" /> meminta izin pengguna untuk melakukan pembersihan. Hasilnya tidak dilaporkan ke Google.
+
+      Jika kebijakan tidak disetel, <ph name="CHROME_CLEANUP_NAME" /> dapat melaporkan pemindaian deteksi software yang tidak diinginkan ke Google, sesuai dengan kebijakan yang disetel oleh <ph name="SAFE_BROWSING_EXTENDED_REPORTING_ENABLED_POLICY_NAME" />. <ph name="CHROME_CLEANUP_NAME" /> meminta izin pengguna untuk melakukan pembersihan dan membagikan hasilnya dengan Google guna membantu mendeteksi software yang tidak diinginkan di masa mendatang. Hasil ini berisi metadata file, ekstensi yang terinstal otomatis, dan kunci registry sebagaimana dijelaskan dalam Laporan Resmi Privasi Chrome.
+
+      Di <ph name="MS_WIN_NAME" />, fungsi ini hanya tersedia di instance yang dihubungkan ke domain <ph name="MS_AD_NAME" />, dijalankan di Windows 10 Pro, atau didaftarkan di <ph name="CHROME_BROWSER_CLOUD_MANAGEMENT_NAME" />.</translation>
 <translation id="1290634681382861275">Mengontrol berbagai setelan antara lain USB, bluetooth, pembaruan kebijakan, mode developer, dan lainnya.</translation>
 <translation id="1291880496936992484">Peringatan: RC4 akan dihapus sepenuhnya dari <ph name="PRODUCT_NAME" /> setelah versi 52 (sekitar September 2016) dan sejak saat itu kebijakan ini tidak akan berlaku lagi.
 
@@ -720,6 +732,9 @@
       Jika kebijakan tidak disetel atau disetel ke daftar kosong, tidak akan ada mode buka kunci cepat yang tersedia bagi perangkat terkelola.
 
       Kebijakan ini tidak digunakan lagi. Sebagai gantinya, gunakan <ph name="QUICK_UNLOCK_MODE_ALLOW_LIST_POLICY_NAME" /></translation>
+<translation id="2033784678146670379">Jika kebijakan disetel ke Aktif, pengguna akan dapat menggunakan hardware di perangkat <ph name="PRODUCT_OS_NAME" /> untuk mengesahkan identitasnya dari jarak jauh ke CA privasi melalui <ph name="ENTERPRISE_PLATFORM_KEYS_API" /> menggunakan <ph name="CHALLENGE_USER_KEY_FUNCTION" />.
+
+      Jika kebijakan disetel ke Nonaktif atau tidak disetel, panggilan ke API akan gagal yang disertai kode error.</translation>
 <translation id="2036522553891755455">Jika kebijakan disetel ke Aktif, penemuan berbagi (fitur Berbagi File Jaringan untuk <ph name="PRODUCT_NAME" />) akan menggunakan <ph name="NETBIOS_PROTOCOL" /> untuk menemukan berbagi di jaringan. Jika kebijakan disetel ke Nonaktif, penemuan berbagi tidak akan menggunakan protokol ini untuk menemukan berbagi.
 
       Jika kebijakan tidak disetel, perilaku default akan dinonaktifkan bagi pengguna terkelola dan aktif bagi pengguna lainnya.</translation>
@@ -749,6 +764,9 @@
 <translation id="2082205219176343977">Mengonfigurasi versi minimum Chrome yang diizinkan untuk perangkat.</translation>
 <translation id="208566302163036794">Blokir fitur yang dinonaktifkan</translation>
 <translation id="208623333578980446">Izinkan penguncian layar saat aktif untuk pengelolaan daya</translation>
+<translation id="2090939118981888335">Jika kebijakan disetel ke Aktif, proxy kompresi data akan diizinkan. Jika kebijakan disetel ke Nonaktif, proxy tidak akan diizinkan.
+
+      Jika kebijakan disetel, pengguna tidak dapat mengubahnya. Jika tidak disetel, pengguna dapat memilih menggunakan fitur tersebut.</translation>
 <translation id="209586405398070749">Saluran stabil</translation>
 <translation id="2098658257603918882">Aktifkan laporan data penggunaan dan yang terkait error</translation>
 <translation id="2104418465060359056">Melaporkan informasi Ekstensi dan Plugin</translation>
@@ -1161,6 +1179,9 @@
       Jika kebijakan ini disetel ke Nonaktif atau tidak disetel, rekomendasi ini tidak akan muncul.
 
       Jika kebijakan ini disetel, pengguna tidak dapat mengubahnya.</translation>
+<translation id="2724313944474873275">Jika kebijakan disetel ke Aktif atau tidak disetel, perangkat <ph name="PRODUCT_OS_NAME" /> dapat menggunakan pengesahan jarak jauh (Akses Terverifikasi) untuk mendapatkan sertifikat yang diterbitkan oleh CA <ph name="PRODUCT_OS_NAME" /> yang mengesahkan bahwa perangkat bersifat valid untuk memutar konten yang dilindungi. Proses ini melibatkan pengiriman informasi endorsement hardware ke CA<ph name="PRODUCT_OS_NAME" /> yang mengidentifikasi perangkat secara unik.
+
+      Jika kebijakan disetel ke Nonaktif, perangkat tidak akan menggunakan pengesahan jarak jauh untuk perlindungan konten dan perangkat tidak boleh memutar konten yang dilindungi.</translation>
 <translation id="2725855586003209701">Jika kebijakan disetel ke Aktif atau tidak disetel, perangkat yang terdaftar akan melaporkan daftar pengguna perangkat yang login baru-baru ini.
 
       Jika kebijakan disetel ke Nonaktif, perangkat yang terdaftar tidak akan melaporkan daftar pengguna.</translation>
@@ -2137,6 +2158,13 @@
 <translation id="4089849819635523136">Jika <ph name="DEFAULT_SEARCH_PROVIDER_ENABLED_POLICY_NAME" /> aktif, menyetel <ph name="DEFAULT_SEARCH_PROVIDER_KEYWORD_POLICY_NAME" /> akan menentukan kata kunci atau pintasan yang digunakan di kolom URL untuk memicu penelusuran bagi penyedia ini.
 
       Jika <ph name="DEFAULT_SEARCH_PROVIDER_KEYWORD_POLICY_NAME" /> tidak disetel, tidak ada kata kunci untuk mengaktifkan penyedia penelusuran.</translation>
+<translation id="409035987613226003">Jika kebijakan ini disetel ke Aktif, pelaporan penggunaan anonim dan data yang berhubungan dengan error tentang Chrome ke Google akan aktif dan pengguna tidak akan dapat mengubah setelan ini. Jika kebijakan disetel ke Nonaktif, informasi ini tidak akan dikirim ke Google.
+
+      Jika kebijakan disetel, pengguna tidak dapat mengubahnya. Jika tidak disetel, pengguna akan memilih perilaku saat penginstalan atau dijalankan pertama kali
+
+      Kebijakan ini hanya tersedia pada instance Windows yang dihubungkan ke domain <ph name="MS_AD_NAME" />, atau instance Windows 10 Pro atau Enterprise yang terdaftar untuk pengelolaan perangkat, dan instance macOS yang dikelola melalui MDM atau dihubungkan ke domain melalui MCX.
+
+      (Untuk Chrome OS, lihat DeviceMetricsReportingEnabled.)</translation>
 <translation id="4097556069183835428">Jika kebijakan ditetapkan ke Tidak ada (None), kaca pembesar layar akan dinonaktifkan.
 
       Jika kebijakan ditetapkan, pengguna tidak dapat mengubahnya. Jika tidak ditetapkan, kaca pembesar layar mula-mula akan dinonaktifkan, tetapi pengguna dapat mengaktifkannya kapan saja.</translation>
@@ -2500,6 +2528,9 @@
 <translation id="4725528134735324213">Aktifkan Android Backup Service</translation>
 <translation id="4725801978265372736">Wajibkan pencocokan nama pengguna lokal dengan pemilik host akses jarak jauh</translation>
 <translation id="4733471537137819387">Kebijakan yang terkait dengan autentikasi HTTP terintegrasi.</translation>
+<translation id="4735099388031364207">Jika kebijakan disetel ke Aktif, pengesahan jarak jauh perangkat lunak dapat dilakukan. Sertifikat secara otomatis dibuat dan diupload ke Server Pengelolaan Perangkat.
+
+      Jika kebijakan disetel ke Nonaktif atau tidak disetel, tidak akan ada sertifikat yang dihasilkan dan panggilan ke <ph name="ENTERPRISE_PLATFORM_KEYS_API" /> akan gagal.</translation>
 <translation id="4742973303930120836">Membatasi mode pencetakan grafis latar belakang</translation>
 <translation id="4752880493649142945">Sertifikat klien untuk menyambung ke RemoteAccessHostTokenValidationUrl</translation>
 <translation id="4757053978738874325">Mengaktifkan fitur aksesibilitas audio mono.
@@ -2588,6 +2619,11 @@
 <translation id="489803897780524242">Parameter yang mengendalikan penempatan istilah penelusuran untuk penyedia penelusuran default</translation>
 <translation id="4899708173828500852">Aktifkan Safe Browsing</translation>
 <translation id="4906194810004762807">Segarkan peringkat untuk Kebijakan Perangkat</translation>
+<translation id="49093841899738146">Jika kebijakan tersebut disetel ke Aktif, <ph name="PRODUCT_NAME" /> dapat mengumpulkan log aktivitas WebRTC dari layanan Google seperti Hangouts Meet dan menguploadnya ke Google. Log ini berisi informasi diagnostik untuk menangani masalah proses debug pada audio atau rapat video di <ph name="PRODUCT_NAME" />, seperti waktu dan ukuran paket RTP, masukan tentang kemacetan pada jaringan, dan metadata tentang waktu dan kualitas frame audio dan video. Log ini tidak memiliki konten audio atau video dari rapat. Untuk mempermudah proses debug, Google dapat mengaitkan log ini dengan log lain, yang dikumpulkan oleh layanan Google sendiri, menggunakan ID sesi.
+
+      Jika kebijakan disetel ke Nonaktif, kemungkinan log tersebut tidak akan dikumpulkan atau diupload.
+
+      Tidak menyetel kebijakan pada versi hingga dan termasuk M76 berarti default <ph name="PRODUCT_NAME" /> tidak dapat mengumpulkan atau mengupload log tersebut. Mulai versi M77, default <ph name="PRODUCT_NAME" /> akan dapat mengumpulkan dan mengupload log tersebut dari sebagian besar profil yang terdampak oleh kebijakan perusahaan tingkat pengguna berbasis cloud. Mulai versi M77 hingga dan termasuk M80, <ph name="PRODUCT_NAME" /> juga dapat mengumpulkan dan mengupload log secara default dari profil yang terdampak oleh manajemen lokal <ph name="PRODUCT_NAME" />.</translation>
 <translation id="4910101362791876581">Menentukan printer yang dapat digunakan pengguna.
 
       Kebijakan ini hanya digunakan jika <ph name="PRINTERS_WHITELIST" /> dipilih untuk <ph name="DEVICE_PRINTERS_ACCESS_MODE_POLICY_NAME" />
@@ -2599,6 +2635,9 @@
 <translation id="4917385247580444890">Kuat</translation>
 <translation id="4919122295221518724">Aktifkan perlakuan yang lebih ketat untuk konten campuran</translation>
 <translation id="4923806312383904642">Izinkan WebDriver Mengganti Kebijakan yang Tidak Kompatibel</translation>
+<translation id="4927214690104703256">Menyetel kebijakan akan menentukan ekstensi yang diizinkan untuk menggunakan fungsi <ph name="ENTERPRISE_PLATFORM_KEYS_API" /> untuk pengesahan jarak jauh. Ekstensi harus ada dalam daftar ini agar dapat menggunakan API.
+
+      Jika ekstensi tidak ada dalam daftar, atau daftar tidak disetel, panggilan ke API akan gagal yang disertai kode error.</translation>
 <translation id="4927797103413916381">Jika <ph name="SAFE_BROWSING_ENABLED_POLICY_NAME" /> tidak Dinonaktifkan, menyetel <ph name="ABUSIVE_EXPERIENCE_INTERVENTION_ENFORCE_POLICY_NAME" /> ke Aktif atau tidak menyetelnya akan mencegah situs dengan pengalaman yang menyesatkan pengguna terbuka di jendela atau tab baru.
 
        Jika <ph name="SAFE_BROWSING_ENABLED_POLICY_NAME" /> atau <ph name="ABUSIVE_EXPERIENCE_INTERVENTION_ENFORCE_POLICY_NAME" /> disetel ke Nonaktif, situs dengan pengalaman yang menyesatkan pengguna akan terbuka di jendela dan tab baru.</translation>
@@ -2708,6 +2747,13 @@
 <translation id="5090209345759901501">Memperluas setelan konten Flash untuk semua konten</translation>
 <translation id="5090791951240382356">Mengizinkan penggabungan kebijakan kamus dari sumber berbeda</translation>
 <translation id="5091315650312105069">Mengizinkan autentikasi <ph name="BASIC_AUTH" /> untuk HTTP</translation>
+<translation id="5103112931744164177">Kebijakan ini mengontrol stack software yang digunakan untuk berkomunikasi dengan server DNS: klien DNS Sistem Operasi, atau klien DNS bawaan dari <ph name="PRODUCT_NAME" />. Kebijakan ini tidak memengaruhi server DNS mana yang digunakan: misalnya, jika sistem operasi dikonfigurasi untuk menggunakan server DNS perusahaan, server yang sama tersebut akan digunakan oleh klien DNS bawaan. Kebijakan ini juga tidak akan mengontrol jika DNS-over-HTTPS digunakan; <ph name="PRODUCT_NAME" /> akan selalu menggunakan resolver bawaan untuk permintaan DNS-over-HTTPS. Silakan lihat kebijakan <ph name="DNS_OVER_HTTPS_MODE_POLICY_NAME" /> untuk mengetahui informasi mengenai pengontrolan DNS-over-HTTPS.
+
+      Jika kebijakan ini disetel ke Aktif, klien DNS bawaan akan digunakan, jika tersedia.
+
+      Jika kebijakan ini disetel ke Nonaktif, klien DNS bawaan hanya akan digunakan jika DNS-over-HTTPS sedang digunakan.
+
+      Jika kebijakan ini tidak disetel, klien DNS bawaan akan diaktifkan secara default di <ph name="MAC_OS_NAME" />, <ph name="ANDROID_NAME" /> (jika DNS Pribadi atau VPN tidak diaktifkan) dan <ph name="PRODUCT_OS_NAME" />.</translation>
 <translation id="5105313908130842249">Penundaan penguncian layar saat menggunakan daya baterai</translation>
 <translation id="5108031557082757679">Menonaktifkan printer yang merupakan perangkat perusahaan</translation>
 <translation id="5109383437323376357">Menentukan ketersediaan variasi</translation>
@@ -3587,6 +3633,11 @@
 
       Jika kebijakan ini tidak disetel atau daftar kosong, semua skema akan dapat diakses di <ph name="PRODUCT_NAME" />.</translation>
 <translation id="6338982178236723271">Melaporkan info sistem</translation>
+<translation id="6347363725343851058">Jika kebijakan disetel ke Aktif, mode latar belakang akan aktif. Pada mode latar belakang, proses <ph name="PRODUCT_NAME" /> dimulai saat login OS dan terus berjalan saat jendela browser terakhir ditutup sehingga aplikasi latar belakang dan sesi penjelajahan dapat tetap aktif, termasuk cookie sesi apa pun. Proses latar belakang menampilkan ikon di baki sistem dan selalu dapat ditutup dari sana.
+
+      Jika kebijakan disetel ke Nonaktif, mode latar belakang menjadi nonaktif.
+
+      Jika Anda menyetel kebijakan tersebut, pengguna tidak dapat mengubahnya di setelan browser. Jika tidak disetel, mode latar belakang akan nonaktif terlebih dahulu dan pengguna dapat mengubahnya.</translation>
 <translation id="6353890097388312479">Jika kebijakan disetel ke Semua (0) atau tidak disetel, pengguna akan dapat mengedit setelan kepercayaan untuk semua Sertifikat CA, menghapus sertifikat yang diimpor oleh pengguna, dan mengimpor sertifikat menggunakan Pengelola Sertifikat. Jika kebijakan disetel ke Khusus Pengguna (1), pengguna hanya dapat mengelola sertifikat yang diimpor pengguna, dan tidak dapat mengubah setelan kepercayaan dari sertifikat bawaan. Jika kebijakan disetel ke Tidak Ada (2), pengguna akan dapat melihat (tidak mengelola) Sertifikat CA.</translation>
 <translation id="6362856770865555544">Jika kebijakan disetel ke Aktif atau tidak disetel, pengoptimalan WPAD (Web Proxy Auto-Discovery) akan diaktifkan di <ph name="PRODUCT_NAME" />.
 
@@ -3913,6 +3964,9 @@
 <translation id="6815483833848348029">Jika kebijakan disetel ke Aktif atau tidak disetel dan akun lokal perangkat disetel untuk login otomatis tanpa penundaan, <ph name="PRODUCT_OS_NAME" /> akan menampilkan perintah konfigurasi jaringan saat perangkat offline.
 
       Jika kebijakan disetel ke Nonaktif, pesan error akan ditampilkan.</translation>
+<translation id="6819838337315703072">Jika dukungan aplikasi <ph name="LINUX_OS_NAME" /> aktif, menyetel kebijakan menjadi Aktif akan mengirimkan kembali informasi penggunaan aplikasi <ph name="LINUX_OS_NAME" /> ke server.
+
+      Jika kebijakan disetel ke Nonaktif atau tidak disetel, tidak ada penggunaan informasi yang dilaporkan.</translation>
 <translation id="6821268164692776674">Tujuan <ph name="CLOUD_PRINT_NAME" /> dan 'Simpan ke Google Drive'</translation>
 <translation id="6823711520976094072">Jika disetel di bawah 1 MB atau tidak disetel, <ph name="PRODUCT_OS_NAME" /> akan menggunakan ukuran default 256 MiB untuk menyimpan cache aplikasi dan ekstensi yang akan diinstal oleh beberapa pengguna di satu perangkat, sehingga setiap pengguna tidak perlu mendownload ulang satu per satu aplikasi dan ekstensi tersebut.</translation>
 <translation id="682408981080798691">Jika kebijakan disetel ke Aktif atau tidak disetel, Integritas Kode Perender akan diaktifkan.
@@ -3952,6 +4006,9 @@
 
       Kebijakan ini tidak digunakan lagi. Sebagai gantinya, gunakan <ph name="PRINTING_API_EXTENSIONS_ALLOWLIST_POLICY_NAME" />.</translation>
 <translation id="684856667300805181">Kebijakan ini dihapus dalam <ph name="PRODUCT_NAME" /> 68 dan digantikan oleh <ph name="ARC_GLS_POLICY_NAME" />.</translation>
+<translation id="6848721032946289937">Jika kebijakan disetel ke Aktif atau tidak disetel, akselerasi hardware akan diaktifkan jika tersedia.
+
+      Jika kebijakan disetel ke Nonaktif, akselerasi hardware akan dinonaktifkan.</translation>
 <translation id="6851199885688265233">Mengaktifkan fitur aksesibilitas sorotan kursor</translation>
 <translation id="6851315055469993882">Mengaktifkan cache autentikasi HTTP yang tercakup secara global</translation>
 <translation id="6854767649023671426">Jika kebijakan disetel ke Aktif atau tidak disetel, pengguna akan dimintai akses perekaman video kecuali untuk URL yang ditentukan dalam daftar VideoCaptureAllowedUrls.
@@ -4099,6 +4156,9 @@
 <translation id="7027785306666625591">Mengonfigurasi pengelolaan daya di <ph name="PRODUCT_OS_NAME" />.
 
       Kebijakan ini memungkinkan Anda mengonfigurasi cara <ph name="PRODUCT_OS_NAME" /> berperilaku saat pengguna tetap menganggur dalam beberapa waktu.</translation>
+<translation id="7027923238554618852">Menyetel kebijakan akan menginstruksikan <ph name="PRODUCT_OS_NAME" /> untuk menggunakan konfigurasi penjadwal tugas yang diidentifikasi berdasarkan nama yang ditentukan. Kebijakan ini dapat disetel ke <ph name="CONSERVATIVE_VALUE" />atau <ph name="PERFORMANCE_VALUE" />, yang masing-masing menyesuaikan penjadwal tugas untuk stabilitas atau kinerja maksimum.
+
+      Jika tidak disetel, pengguna akan memilih sendiri.</translation>
 <translation id="7030205756530739128">Jika <ph name="DEVICE_BATTERY_CHARGE_MODE_NAME" /> disetel ke <ph name="DEVICE_BATTERY_CHARGE_CUSTOM_MODE_NAME" />, menyetel <ph name="DEVICE_BATTERY_CHARGE_CUSTOM_START_CHARGING_POLICY_NAME" /> akan menyesuaikan waktu mulai pengisian daya baterai, berdasarkan persentase pengisian daya baterai. Nilai harus setidaknya 5 persen di bawah <ph name="DEVICE_BATTERY_CHARGE_CUSTOM_STOP_CHARGING_POLICY_NAME" />.
 
       Tidak menyetel kebijakan akan memberlakukan mode pengisian daya baterai standar.</translation>
@@ -4227,6 +4287,11 @@
 <translation id="718126088895133062">Kebijakan ini menetapkan ID pengguna lisensi <ph name="PLUGIN_VM_NAME" /> untuk perangkat ini.</translation>
 <translation id="7185078796915954712">TLS 1.3</translation>
 <translation id="7185630966939835143">Gunakan layanan web Google untuk membantu mengatasi kesalahan ejaan</translation>
+<translation id="718850220532931090">Kebijakan ini tidak digunakan lagi. Sebagai gantinya, gunakan <ph name="ATTESTATION_EXTENSION_ALLOWLIST_POLICY_NAME" />.
+
+      Menyetel kebijakan akan menentukan ekstensi yang diizinkan untuk menggunakan <ph name="CHALLENGE_USER_KEY_FUNCTION" /> fungsi <ph name="ENTERPRISE_PLATFORM_KEYS_API" /> untuk pengesahan jarak jauh. Ekstensi harus ada dalam daftar ini agar dapat menggunakan API.
+
+      Jika ekstensi tidak ada dalam daftar, atau daftar tidak disetel, panggilan ke API akan gagal yang disertai kode error.</translation>
 <translation id="718956142899066210">Jenis sambungan yang diizinkan untuk pembaruan</translation>
 <translation id="7190286937411178540">Mengaktifkan fitur aksesibilitas penyorotan fokus keyboard</translation>
 <translation id="7193489339723768342">Jika kebijakan disetel, artinya Anda menentukan daftar URL yang polanya cocok dengan asal keamanan URL yang meminta. Jika terdapat kecocokan, akses ke perangkat perekaman audio akan diberikan tanpa permintaan izin
@@ -5022,6 +5087,9 @@
 <translation id="8357681633047935212">Membatasi durasi sesi pengguna</translation>
 <translation id="8357989008292691856">Daftar pengguna login yang diizinkan</translation>
 <translation id="8359734107661430198">Aktifkan API ExampleDeprecatedFeature hingga 02/09/2008</translation>
+<translation id="8367069206652407172">Jika kebijakan disetel ke Nonaktif, pengguna akan dicegah untuk mengakhiri proses di Pengelola Tugas.
+
+      Jika kebijakan disetel ke Aktif atau tidak disetel, pengguna diizinkan untuk mengakhiri proses di Pengelola Tugas.</translation>
 <translation id="8367209241899435947">Aktifkan Pembersih Chrome di Windows</translation>
 <translation id="8367473200119029349">Pelaporan Cloud</translation>
 <translation id="8369602308428138533">Penundaan mematikan layar saat menggunakan daya AC</translation>
diff --git a/components/policy/resources/policy_templates_ko.xtb b/components/policy/resources/policy_templates_ko.xtb
index f56e7fc5..60d126d 100644
--- a/components/policy/resources/policy_templates_ko.xtb
+++ b/components/policy/resources/policy_templates_ko.xtb
@@ -83,6 +83,11 @@
 <translation id="1099282607296956954">모든 사이트에 사이트 격리 사용 설정</translation>
 <translation id="1117535567637097036">Android 인텐트를 처리할 때 이 정책을 통해 설정된 프로토콜 핸들러는 사용되지 않습니다.</translation>
 <translation id="1118093128235245168">사이트에서 사용자에게 연결된 USB 기기의 액세스 권한을 부여할지 묻도록 허용합니다.</translation>
+<translation id="1133814529606590009">정책을 사용 설정하면 검색결과와 탐색을 개선하기 위해 사용자가 방문하는 페이지 URL을 Google로 전송하는 URL로 입력되며 익명으로 처리되는 데이터 수집이 항상 활성화됩니다.
+
+      정책을 사용 중지하면 URL로 입력되며 익명으로 처리되는 데이터 수집을 사용하지 않습니다.
+
+      정책을 설정하면 사용자가 변경할 수 없습니다. 정책을 설정하지 않으면 처음에는 URL로 입력되며 익명으로 처리되는 데이터 수집을 사용하지만 사용자가 변경할 수 있습니다.</translation>
 <translation id="1138294736309071213">이 정책은 판매 모드일 때만 사용할 수 있습니다.
 
       판매 모드의 로그인 화면에 화면 보호기가 표시되기 전에 비활성화 상태의 지속 시간을 결정합니다.
@@ -179,6 +184,13 @@
       정책을 설정하지 않으면 사용자가 Google 동기화를 사용할지 선택할 수 있습니다.
 
       Google 동기화를 완전히 중지하려면 Google 관리 콘솔에서 Google 동기화 서비스를 사용 중지하는 것이 좋습니다.</translation>
+<translation id="128059397544257017">정책을 사용 설정하면 <ph name="CHROME_CLEANUP_NAME" />에서 원치 않는 소프트웨어를 감지할 경우 <ph name="SAFE_BROWSING_EXTENDED_REPORTING_ENABLED_POLICY_NAME" />에 의해 설정된 정책에 따라 Google에 스캔에 관해 보고할 수 있습니다. <ph name="CHROME_CLEANUP_NAME" />에서 사용자에게 정리를 원하는지 묻습니다. 결과를 Google에 보냅니다.
+
+      정책을 사용 중지하면 <ph name="CHROME_CLEANUP_NAME" />에서 원치 않는 소프트웨어를 감지할 경우 <ph name="SAFE_BROWSING_EXTENDED_REPORTING_ENABLED_POLICY_NAME" /> 값과 상관없이 Google에 스캔에 관해 보고하지 않습니다. <ph name="CHROME_CLEANUP_NAME" />에서 사용자에게 정리를 원하는지 묻습니다. 결과는 Google에 보고되지 않습니다.
+
+      정책을 설정하지 않으면 <ph name="CHROME_CLEANUP_NAME" />에서는 <ph name="SAFE_BROWSING_EXTENDED_REPORTING_ENABLED_POLICY_NAME" />에 의해 설정된 정책에 따라 Google에 원치 않는 소프트웨어 감지를 위한 스캔에 관해 보고할 수 있습니다. <ph name="CHROME_CLEANUP_NAME" />에서는 사용자에게 정리를 진행하고 향후 원치 않는 소프트웨어 감지를 지원할 수 있도록 Google과 결과를 공유할 것인지 물어봅니다. 이러한 결과에는 Chrome 개인정보 보호 백서에 명시된 대로 파일 메타데이터, 자동 설치된 확장 프로그램, 레지스트리 키가 포함됩니다.
+
+      <ph name="MS_WIN_NAME" />의 경우 이 기능은 <ph name="MS_AD_NAME" /> 도메인에 연결된 인스턴스, Windows 10 Pro에서 실행되는 인스턴스 또는 <ph name="CHROME_BROWSER_CLOUD_MANAGEMENT_NAME" />에 등록된 인스턴스에서만 사용할 수 있습니다.</translation>
 <translation id="1290634681382861275">USB, 블루투스, 정책 새로고침, 개발자 모드 등을 포함하여 기타 설정을 제어합니다.</translation>
 <translation id="1291880496936992484">경고: 버전 52(2016년 9월경)부터 <ph name="PRODUCT_NAME" />에서 RC4가 완전히 제거되며, 이후 이 정책은 적용되지 않습니다.
 
@@ -717,6 +729,9 @@
       정책을 설정하지 않거나 빈 목록으로 설정하면 관리 기기에서 빠른 잠금 해제 모드를 사용할 수 없습니다.
 
       이 정책은 지원 중단되었으므로 <ph name="QUICK_UNLOCK_MODE_ALLOW_LIST_POLICY_NAME" /> 정책을 대신 사용하세요.</translation>
+<translation id="2033784678146670379">정책을 사용 설정하면 사용자가 <ph name="PRODUCT_OS_NAME" /> 기기의 하드웨어로 <ph name="CHALLENGE_USER_KEY_FUNCTION" />를 사용하는 <ph name="ENTERPRISE_PLATFORM_KEYS_API" />를 통해 개인정보 보호 CA에 원격으로 신원을 증명할 수 있습니다.
+
+      정책을 사용 중지하거나 설정하지 않으면 API 호출이 실패하고 오류 코드가 표시됩니다.</translation>
 <translation id="2036522553891755455">정책을 사용 설정하면 공유 검색(<ph name="PRODUCT_NAME" />의 네트워크 파일 공유 기능)에서 <ph name="NETBIOS_PROTOCOL" />을 사용해 네트워크에서 공유 항목을 검색합니다. 사용 중지하면 공유 검색에서 이 프로토콜을 사용해 공유 항목을 검색하지 않습니다.
 
       정책이 설정되지 않으면 관리 대상인 사용자에게는 이 동작이 사용 중지되며 다른 사용자에게는 기본적으로 사용 설정됩니다.</translation>
@@ -746,6 +761,9 @@
 <translation id="2082205219176343977">기기에 허용되는 최소 Chrome 버전을 설정합니다.</translation>
 <translation id="208566302163036794">사용 중지된 기능 차단</translation>
 <translation id="208623333578980446">전원 관리를 위해 화면 wake lock 허용</translation>
+<translation id="2090939118981888335">정책을 사용 설정하면 데이터 압축 프록시가 허용됩니다. 정책을 사용 중지하면 프록시가 허용되지 않습니다.
+
+      정책을 설정하면 사용자가 변경할 수 없습니다. 정책을 설정하지 않으면 사용자가 기능을 사용하도록 선택할 수 있습니다.</translation>
 <translation id="209586405398070749">정식 채널</translation>
 <translation id="2098658257603918882">사용 및 비정상 종료 관련 데이터 보고 사용</translation>
 <translation id="2104418465060359056">확장 프로그램 및 플러그인 정보 보고</translation>
@@ -1158,6 +1176,9 @@
       이 정책을 사용 중지하거나 설정하지 않으면 이러한 추천이 표시되지 않습니다.
 
       이 정책이 설정된 경우 사용자가 변경할 수 없습니다.</translation>
+<translation id="2724313944474873275">정책을 사용 설정하거나 설정하지 않으면 <ph name="PRODUCT_OS_NAME" /> 기기에서 원격 증명(인증 액세스)으로 기기에서 보호된 콘텐츠를 재생할 수 있음을 인증하기 위해 <ph name="PRODUCT_OS_NAME" /> CA에서 발급한 인증서를 가져옵니다. 여기에는 기기를 고유하게 식별하는 <ph name="PRODUCT_OS_NAME" /> CA로 하드웨어 보증 정보를 전송하는 과정이 포함됩니다.
+
+      정책을 사용 중지하면 기기는 콘텐츠 보호에 원격 증명을 사용하지 않고 기기에서 보호된 콘텐츠를 재생할 수 없게 됩니다.</translation>
 <translation id="2725855586003209701">정책을 사용 설정하거나 설정하지 않으면 등록된 기기에서 최근에 로그인한 기기 사용자 목록을 보고합니다.
 
       정책을 사용 중지하면 등록된 기기에서 사용자 목록을 보고하지 않습니다.</translation>
@@ -2131,6 +2152,13 @@
 <translation id="4089849819635523136"><ph name="DEFAULT_SEARCH_PROVIDER_ENABLED_POLICY_NAME" />가 사용 설정되어 있으면 <ph name="DEFAULT_SEARCH_PROVIDER_KEYWORD_POLICY_NAME" />을(를) 설정할 경우 이 공급자의 검색을 트리거하기 위해 주소 표시줄에서 사용되는 키워드 또는 단축키를 지정합니다.
 
       <ph name="DEFAULT_SEARCH_PROVIDER_KEYWORD_POLICY_NAME" />를 설정하지 않으면 어떤 키워드도 검색 공급자를 활성화하지 않습니다.</translation>
+<translation id="409035987613226003">정책을 사용 설정하면 Chrome의 사용량 및 비정상 종료 관련 데이터가 Google에 익명으로 보고되며 사용자는 이 설정을 변경할 수 없습니다. 정책을 사용 중지하면 이 정보가 Google로 전송됩니다.
+
+      정책을 설정하면 사용자가 변경할 수 없습니다. 정책을 설정하지 않으면 사용자가 설치 또는 최초 실행 시 동작을 선택할 수 있습니다.
+
+      이 정책은 <ph name="MS_AD_NAME" /> 도메인에 연결된 Windows 인스턴스, 기기 관리에 등록된 Windows 10 Pro 또는 Enterprise 인스턴스, MDM을 통해 관리되거나 MCX를 통해 도메인에 연결된 macOS 인스턴스에서만 사용할 수 있습니다.
+
+      (Chrome OS의 경우 DeviceMetricsReportingEnabled 참고)</translation>
 <translation id="4097556069183835428">정책을 None으로 설정하면 화면 돋보기가 사용 중지됩니다.
 
       정책을 설정하면 사용자가 변경할 수 없습니다. 설정하지 않으면 처음에는 화면 돋보기가 사용 중지되지만 사용자가 언제든지 사용 설정할 수 있습니다.</translation>
@@ -2494,6 +2522,9 @@
 <translation id="4725528134735324213">Android Backup Service 사용</translation>
 <translation id="4725801978265372736">로컬 사용자의 이름과 원격 액세스 호스트 소유자가 일치해야 함</translation>
 <translation id="4733471537137819387">통합 HTTP 인증과 관련된 정책입니다.</translation>
+<translation id="4735099388031364207">정책을 사용 설정하면 기기의 원격 증명이 허용됩니다. 인증서가 자동으로 생성되고 기기 관리 서버에 업로드됩니다.
+
+      정책을 사용 중지하거나 설정하지 않으면 인증서가 생성되지 않고 <ph name="ENTERPRISE_PLATFORM_KEYS_API" /> 호출이 실패합니다.</translation>
 <translation id="4742973303930120836">배경 그래픽 인쇄 모드 제한</translation>
 <translation id="4752880493649142945">RemoteAccessHostTokenValidationUrl에 연결하기 위한 클라이언트 인증서</translation>
 <translation id="4757053978738874325">모노 오디오 접근성 기능을 사용합니다.
@@ -2582,6 +2613,11 @@
 <translation id="489803897780524242">기본 검색 공급자의 검색어 위치를 조정하는 매개변수</translation>
 <translation id="4899708173828500852">세이프 브라우징 사용</translation>
 <translation id="4906194810004762807">기기 정책 새로고침 빈도</translation>
+<translation id="49093841899738146">정책을 사용 설정하면 <ph name="PRODUCT_NAME" />에서 행아웃 Meet과 같은 Google 서비스의 WebRTC 이벤트 로그를 수집하고 Google에 업로드할 수 있습니다. 이러한 로그에는 RTP 패킷의 시간 및 크기, 네트워크 혼잡에 관한 의견, 오디오/동영상 프레임의 시간 및 품질에 관한 메타데이터 등 <ph name="PRODUCT_NAME" />에서 음성/화상 회의에서 발생하는 문제를 디버깅하는 데 유용한 진단 정보가 포함됩니다. 이러한 로그에는 회의의 오디오 또는 동영상 콘텐츠가 포함되지 않습니다. 디버깅을 더 용이하게 하기 위해 Google에서는 세션 ID를 통해 이러한 로그를 Google 서비스에서 수집한 다른 로그와 연결할 수 있습니다.
+
+      정책을 사용 중지하면 이러한 로그를 수집하거나 업로드하지 않습니다.
+
+      M76 이하 버전에서 정책을 설정하지 않으면 기본적으로 <ph name="PRODUCT_NAME" />에서 이러한 로그를 수집하거나 업로드할 수 없습니다. M77부터는 <ph name="PRODUCT_NAME" />에서 기본적으로 클라우드 기반 사용자 수준 엔터프라이즈 정책의 영향을 받는 대부분의 프로필에서 이러한 로그를 수집하고 업로드할 수 있습니다. M77부터 M80까지는 <ph name="PRODUCT_NAME" />에서 기본적으로 <ph name="PRODUCT_NAME" /> 온프레미스 관리의 영향을 받는 프로필에서 이러한 로그를 수집하고 업로드할 수도 있습니다.</translation>
 <translation id="4910101362791876581">사용자가 사용할 수 있는 프린터를 지정합니다.
 
       <ph name="PRINTERS_WHITELIST" />가 <ph name="DEVICE_PRINTERS_ACCESS_MODE_POLICY_NAME" />로 선택된 경우에만 이 정책이 사용됩니다.
@@ -2593,6 +2629,9 @@
 <translation id="4917385247580444890">강력</translation>
 <translation id="4919122295221518724">혼합 콘텐츠에 엄격한 처리 방식 사용</translation>
 <translation id="4923806312383904642">WebDriver가 호환되지 않는 정책을 재정의하도록 허용</translation>
+<translation id="4927214690104703256">정책을 설정하면 원격 증명에 <ph name="ENTERPRISE_PLATFORM_KEYS_API" /> 함수를 사용하도록 허용되는 확장 프로그램이 지정됩니다. 이 목록에 확장 프로그램이 포함되어야 API를 사용할 수 있습니다.
+
+      확장 프로그램이 목록에 없거나 목록이 설정되지 않으면 API 호출이 실패하고 오류 코드가 표시됩니다.</translation>
 <translation id="4927797103413916381"><ph name="SAFE_BROWSING_ENABLED_POLICY_NAME" />가 사용 안함으로 설정된 경우 <ph name="ABUSIVE_EXPERIENCE_INTERVENTION_ENFORCE_POLICY_NAME" />를 사용으로 설정하거나 설정하지 않으면 악의적 사용자 환경이 포함된 사이트에서 새 창 또는 탭을 열 수 없습니다.
 
        <ph name="SAFE_BROWSING_ENABLED_POLICY_NAME" /> 또는 <ph name="ABUSIVE_EXPERIENCE_INTERVENTION_ENFORCE_POLICY_NAME" />를 사용 안함으로 설정하면 악의적 사용자 환경이 포함된 사이트가 새 창 또는 탭을 열 수 있습니다.</translation>
@@ -2705,6 +2744,13 @@
 <translation id="5090209345759901501">플래시 콘텐츠 설정을 모든 콘텐츠로 확장</translation>
 <translation id="5090791951240382356">출처가 서로 다른 사전 정책의 병합 허용</translation>
 <translation id="5091315650312105069">HTTP 연결에 <ph name="BASIC_AUTH" /> 인증 허용</translation>
+<translation id="5103112931744164177">이 정책은 운영 체제 DNS 서버나 <ph name="PRODUCT_NAME" />의 내장 DNS 클라이언트와 같이 DNS 서버와의 통신에 사용되는 소프트웨어 스택을 제어합니다. 이 정책은 사용되는 DNS 서버에 영향을 미치지 않습니다. 예를 들어 엔터프라이즈 DNS 서버를 사용하도록 운영 체제가 구성된 경우 내장 DNS 클라이언트에도 동일한 서버가 사용됩니다. DNS-over-HTTPS가 사용되는 경우에도 영향을 미치지 않습니다. <ph name="PRODUCT_NAME" />에서는 항상 DNS-over-HTTPS 요청에 관한 내장 리졸버를 사용합니다. DNS-over-HTTPS 제어에 관한 자세한 내용은 <ph name="DNS_OVER_HTTPS_MODE_POLICY_NAME" /> 정책을 참고하세요.
+
+      정책을 사용 설정하면 가능한 경우 내장 DNS 클라이언트를 사용합니다.
+
+      정책을 사용 중지하면 DNS-over-HTTPS가 사용 중인 경우에만 내장 DNS 클라이언트가 사용됩니다.
+
+      정책을 설정하지 않으면 내장 DNS 클라이언트가 <ph name="MAC_OS_NAME" />, <ph name="ANDROID_NAME" />(비공개 DNS와 VPN이 사용 설정되지 않은 경우) 및 <ph name="PRODUCT_OS_NAME" />에서 기본으로 사용 설정됩니다.</translation>
 <translation id="5105313908130842249">배터리 전원으로 실행할 때 화면 잠금 지연</translation>
 <translation id="5108031557082757679">사용 중지된 엔터프라이즈 기기 프린터</translation>
 <translation id="5109383437323376357">변형 사용 가능 여부 결정</translation>
@@ -3583,6 +3629,11 @@
 
       이 정책을 설정하지 않거나 목록이 비어 있으면 <ph name="PRODUCT_NAME" />에서 모든 스키마에 액세스할 수 있게 됩니다.</translation>
 <translation id="6338982178236723271">시스템 정보 보고</translation>
+<translation id="6347363725343851058">정책을 사용 설정하면 백그라운드 모드가 사용 설정됩니다. 백그라운드 모드에서 <ph name="PRODUCT_NAME" /> 프로세스는 OS 로그인 시 시작되고 마지막 브라우저 창이 닫힐 때에도 실행이 유지되므로 세션 쿠키를 포함한 백그라운드 앱과 탐색 세션도 활성 상태를 유지할 수 있습니다. 백그라운드 프로세스 아이콘은 작업 표시줄에 표시되며 이곳에서 언제든 닫을 수 있습니다.
+
+      정책을 사용 중지하면 백그라운드 모드가 사용 중지됩니다.
+
+      정책을 설정하면 사용자가 브라우저 설정에서 변경할 수 없습니다. 정책을 설정하지 않으면 처음에는 백그라운드 모드가 사용 중지되지만 사용자가 변경할 수 있습니다.</translation>
 <translation id="6353890097388312479">정책을 모두(0)로 설정하거나 설정하지 않으면 사용자는 모든 CA 인증서의 신뢰 설정을 수정하고 사용자가 가져온 인증서를 삭제하며 인증서 관리자를 사용하여 인증서를 가져올 수 있습니다. 정책을 사용자전용(1)으로 설정하면 사용자는 사용자가 가져온 인증서만 관리할 수 있으며 내장 인증서의 신뢰 설정은 변경할 수 없습니다. 정책을 없음(2)으로 설정하면 사용자는 CA 인증서를 볼 수만 있고 관리할 수는 없습니다.</translation>
 <translation id="6362856770865555544">정책을 사용 설정하거나 설정하지 않으면 <ph name="PRODUCT_NAME" />에서 WPAD(웹 프록시 자동 검색) 최적화가 사용 설정됩니다.
 
@@ -3909,6 +3960,9 @@
 <translation id="6815483833848348029">정책을 사용으로 설정하거나 설정하지 않으면 기기가 오프라인일 때 기기 로컬 계정이 지연 없는 자동 로그인으로 설정된 경우 <ph name="PRODUCT_OS_NAME" />에 네트워크 구성 메시지가 표시됩니다.
 
       정책을 사용 안함으로 설정하면 오류 메시지가 대신 표시됩니다.</translation>
+<translation id="6819838337315703072"><ph name="LINUX_OS_NAME" /> 앱 지원이 제공될 경우 정책을 사용 설정하면 <ph name="LINUX_OS_NAME" /> 앱 사용 관련 정보가 서버로 다시 전송됩니다.
+
+      정책을 사용 중지하거나 설정하지 않으면 사용 정보가 보고되지 않습니다.</translation>
 <translation id="6821268164692776674"><ph name="CLOUD_PRINT_NAME" /> 및 'Google 드라이브에 저장' 목적지</translation>
 <translation id="6823711520976094072">1MB 미만으로 설정하거나 설정하지 않으면 <ph name="PRODUCT_OS_NAME" />에서 하나의 기기에서 여러 사용자가 앱 및 확장 프로그램을 설치할 때 캐시에 기본 크기(256MiB)를 사용하여 모든 사용자가 매번 다시 다운로드하지 않아도 됩니다.</translation>
 <translation id="682408981080798691">정책을 사용 설정하거나 설정하지 않으면 렌더러 코드 무결성이 사용 설정됩니다.
@@ -3948,6 +4002,9 @@
 
       이 정책은 지원 중단되었으므로 <ph name="PRINTING_API_EXTENSIONS_ALLOWLIST_POLICY_NAME" /> 정책을 대신 사용하세요.</translation>
 <translation id="684856667300805181">이 정책은 <ph name="PRODUCT_NAME" /> 68에서 삭제되었으며 <ph name="ARC_GLS_POLICY_NAME" />(으)로 교체되었습니다.</translation>
+<translation id="6848721032946289937">정책을 사용 설정하거나 설정하지 않으면 가능한 경우 하드웨어 가속이 사용 설정됩니다.
+
+      정책을 사용 중지하면 하드웨어 가속이 사용 중지됩니다.</translation>
 <translation id="6851199885688265233">커서 강조표시 접근성 기능 사용</translation>
 <translation id="6851315055469993882">전역적으로 범위가 지정된 HTTP 인증 캐시 사용 설정</translation>
 <translation id="6854767649023671426">정책을 '사용'으로 설정하거나 설정하지 않으면 VideoCaptureAllowedUrls 목록에 설정된 URL은 제외하고 사용자에게 동영상 캡처 액세스 권한에 대한 메시지가 표시됩니다.
@@ -4095,6 +4152,9 @@
 <translation id="7027785306666625591"><ph name="PRODUCT_OS_NAME" />에서 전원 관리를 설정합니다.
 
       이 정책으로 사용자가 일정 시간 동안 유휴 상태일 때 <ph name="PRODUCT_OS_NAME" />에서 수행할 동작을 설정할 수 있습니다.</translation>
+<translation id="7027923238554618852">정책을 설정하면 <ph name="PRODUCT_OS_NAME" />에서 지정된 이름으로 식별된 작업 스케줄러 구성을 사용하도록 지시합니다. 이 정책은 <ph name="CONSERVATIVE_VALUE" /> 또는 <ph name="PERFORMANCE_VALUE" />로 설정될 수 있으며 이 값은 각각 안정성 또는 최대 성능을 기준으로 작업 스케줄러를 조정합니다.
+
+      정책을 설정하지 않으면 사용자가 직접 선택할 수 있습니다.</translation>
 <translation id="7030205756530739128"><ph name="DEVICE_BATTERY_CHARGE_MODE_NAME" />를 <ph name="DEVICE_BATTERY_CHARGE_CUSTOM_MODE_NAME" />으로 설정하고 <ph name="DEVICE_BATTERY_CHARGE_CUSTOM_START_CHARGING_POLICY_NAME" />을 설정하면 배터리 충전 백분율을 기준으로 배터리 충전 시작 시기가 맞춤설정됩니다. 값은 <ph name="DEVICE_BATTERY_CHARGE_CUSTOM_STOP_CHARGING_POLICY_NAME" />보다 최소 5퍼센트 포인트 낮아야 합니다.
 
       정책을 설정하지 않으면 표준 배터리 충전 모드가 적용됩니다.</translation>
@@ -4223,6 +4283,11 @@
 <translation id="718126088895133062">이 정책은 이 기기의 <ph name="PLUGIN_VM_NAME" /> 라이선스 사용자 ID를 지정합니다.</translation>
 <translation id="7185078796915954712">TLS 1.3</translation>
 <translation id="7185630966939835143">맞춤법 오류를 해결하는 데 도움이 되는 Google 웹 서비스 사용</translation>
+<translation id="718850220532931090">이 정책은 지원 중단되었으므로 <ph name="ATTESTATION_EXTENSION_ALLOWLIST_POLICY_NAME" />를 대신 사용하세요.
+
+      정책을 설정하면 원격 증명에 <ph name="ENTERPRISE_PLATFORM_KEYS_API" /> 함수 <ph name="CHALLENGE_USER_KEY_FUNCTION" />를 사용하도록 허용되는 확장 프로그램을 지정합니다. 이 목록에 확장 프로그램이 포함되어야 API를 사용할 수 있습니다.
+
+      확장 프로그램이 목록에 없거나 목록이 설정되지 않으면 API 호출이 실패하고 오류 코드가 표시됩니다.</translation>
 <translation id="718956142899066210">업데이트에 허용되어 있는 연결 유형</translation>
 <translation id="7190286937411178540">키보드 포커스 강조표시 접근성 기능 사용</translation>
 <translation id="7193489339723768342">정책을 설정하면 URL 목록에 지정한 URL 패턴이 요청 URL의 보안 원본과 비교됩니다. 비교 후 일치 여부가 확인되면 오디오 캡처 기기에 액세스 권한이 부여되며 메시지가 표시되지 않습니다.
@@ -5027,6 +5092,9 @@
 <translation id="8357681633047935212">사용자 세션의 길이를 제한합니다.</translation>
 <translation id="8357989008292691856">로그인이 허용된 사용자 목록</translation>
 <translation id="8359734107661430198">ExampleDeprecatedFeature API를 2008년 9월 2일까지 사용하도록 설정</translation>
+<translation id="8367069206652407172">정책을 사용 중지하면 사용자가 작업 관리자에서 프로세스를 종료할 수 없습니다.
+
+      정책을 사용 설정하거나 설정하지 않으면 사용자가 작업 관리자에서 프로세스를 종료할 수 있습니다.</translation>
 <translation id="8367209241899435947">Windows에서 Chrome 정리도구 사용 설정</translation>
 <translation id="8367473200119029349">클라우드 보고</translation>
 <translation id="8369602308428138533">AC 전원으로 실행할 때 화면 꺼짐 지연</translation>
diff --git a/components/policy/resources/policy_templates_nl.xtb b/components/policy/resources/policy_templates_nl.xtb
index b25958b..6659651 100644
--- a/components/policy/resources/policy_templates_nl.xtb
+++ b/components/policy/resources/policy_templates_nl.xtb
@@ -83,6 +83,11 @@
 <translation id="1099282607296956954">Site-isolatie inschakelen voor elke site</translation>
 <translation id="1117535567637097036">De protocolhandlers die via dit beleid zijn ingesteld, worden niet gebruikt bij de verwerking van Android-intenties.</translation>
 <translation id="1118093128235245168">Toestaan dat sites de gebruiker vragen om toegang te verlenen tot een aangesloten USB-apparaat</translation>
+<translation id="1133814529606590009">Als je het beleid inschakelt, wordt geanonimiseerde gegevensverzameling met URL-sleutel altijd actief. Hiermee worden de URL's van pagina's die de gebruiker bezoekt naar Google gestuurd om zoekopdrachten en browsen te verbeteren.
+
+      Als je het beleid uitschakelt, wordt geanonimiseerde gegevensverzameling met URL-sleutel niet ingeschakeld.
+
+      Als je het beleid instelt, kunnen gebruikers het niet aanpassen. Als je het beleid niet instelt, is geanonimiseerde gegevensverzameling met URL-sleutel aanvankelijk ingeschakeld, maar kunnen gebruikers dit aanpassen.</translation>
 <translation id="1138294736309071213">Dit beleid is alleen ingeschakeld in de winkelmodus.
 
       Bepaalt de periode waarna de schermbeveiliging wordt weergegeven in het inlogvenster voor apparaten in de winkelmodus.
@@ -179,6 +184,13 @@
       Als je dit beleid niet instelt, kan de gebruiker zelf besluiten Google Sync wel of niet te gebruiken.
 
       Als je Google Sync volledig wilt uitschakelen, kun je de Google Sync-service het beste uitschakelen in de Google Beheerdersconsole.</translation>
+<translation id="128059397544257017">Als je het beleid inschakelt en <ph name="CHROME_CLEANUP_NAME" /> ongewenste software detecteert, kan dit beleid (in overeenstemming met het beleid ingesteld door <ph name="SAFE_BROWSING_EXTENDED_REPORTING_ENABLED_POLICY_NAME" />) over de scan rapporteren aan Google. <ph name="CHROME_CLEANUP_NAME" /> vraagt gebruikers of ze willen opschonen. De resultaten worden naar Google gestuurd.
+
+      Als je het beleid uitschakelt en <ph name="CHROME_CLEANUP_NAME" /> ongewenste software detecteert, wordt er niet gerapporteerd aan Google over de scan, ongeacht de waarde van <ph name="SAFE_BROWSING_EXTENDED_REPORTING_ENABLED_POLICY_NAME" />. <ph name="CHROME_CLEANUP_NAME" /> vraagt gebruikers of ze willen opschonen. De resultaten worden niet aan Google gerapporteerd.
+
+      Als je het beleid niet instelt, kan <ph name="CHROME_CLEANUP_NAME" /> (in overeenstemming met het beleid ingesteld door <ph name="SAFE_BROWSING_EXTENDED_REPORTING_ENABLED_POLICY_NAME" />) over scans op ongewenste software rapporteren aan Google. <ph name="CHROME_CLEANUP_NAME" /> vraagt gebruikers of ze willen opschonen en de resultaten willen delen met Google om bij te dragen aan de toekomstige detectie van ongewenste software. Deze resultaten bevatten metadata van bestanden, automatisch geïnstalleerde extensies en registersleutels zoals beschreven in de whitepaper over het privacybeleid voor Chrome.
+
+      In <ph name="MS_WIN_NAME" /> is deze functionaliteit alleen beschikbaar voor instanties die zijn gekoppeld aan een <ph name="MS_AD_NAME" />-domein, worden uitgevoerd in Windows 10 Pro of zijn ingeschreven voor <ph name="CHROME_BROWSER_CLOUD_MANAGEMENT_NAME" />.</translation>
 <translation id="1290634681382861275">Beheert diverse instellingen, waaronder USB, Bluetooth, vernieuwingsinterval voor beleid, ontwikkelaarsmodus en meer.</translation>
 <translation id="1291880496936992484">Waarschuwing: RC4 wordt volledig verwijderd van <ph name="PRODUCT_NAME" /> na versie 52 (rond september 2016) en dit beleid werkt vanaf dan niet meer.
 
@@ -698,6 +710,9 @@
       Als je het beleid niet instelt of instelt op een lege lijst, zijn er geen standen voor snel ontgrendelen beschikbaar voor beheerde apparaten.
 
       Dit beleid is verouderd. Gebruik in plaats daarvan <ph name="QUICK_UNLOCK_MODE_ALLOW_LIST_POLICY_NAME" />.</translation>
+<translation id="2033784678146670379">Als je het beleid inschakelt, kunnen gebruikers de hardware op <ph name="PRODUCT_OS_NAME" />-apparaten gebruiken om de identiteit ervan extern te bewijzen aan de privacy-CA via de <ph name="ENTERPRISE_PLATFORM_KEYS_API" /> met <ph name="CHALLENGE_USER_KEY_FUNCTION" />.
+
+      Als je het beleid uitschakelt of niet instelt, mislukken de aanroepen van de API en wordt er een foutcode weergegeven.</translation>
 <translation id="2036522553891755455">Als je het beleid inschakelt, wordt voor het ontdekken van fileshares (de functie Network File Shares van <ph name="PRODUCT_NAME" />) <ph name="NETBIOS_PROTOCOL" /> gebruikt om fileshares op het netwerk te ontdekken. Als je het beleid uitschakelt, wordt dit protocol niet gebruikt om fileshares te ontdekken.
 
       Als je dit beleid niet instelt, wordt dit gedrag standaard uitgeschakeld voor beheerde gebruikers en ingeschakeld voor andere gebruikers.</translation>
@@ -727,6 +742,9 @@
 <translation id="2082205219176343977">Configureer de minimaal toegestane Chrome-versie voor het apparaat.</translation>
 <translation id="208566302163036794">De uitgeschakelde functies blokkeren</translation>
 <translation id="208623333578980446">Wake locks voor het scherm toestaan voor stroombeheer</translation>
+<translation id="2090939118981888335">Als je dit beleid inschakelt, wordt de proxy voor gegevenscompressie toegestaan. Als je het beleid uitschakelt, wordt de proxy niet toegestaan.
+
+      Als je het beleid instelt, kunnen gebruikers het niet aanpassen. Als je het beleid niet instelt, kunnen gebruikers ervoor kiezen de functie te gebruiken.</translation>
 <translation id="209586405398070749">Stabiel kanaal</translation>
 <translation id="2098658257603918882">Rapportage van gebruiks- en crashgegevens inschakelen</translation>
 <translation id="2104418465060359056">Gegevens over extensies en plug-ins rapporteren</translation>
@@ -1134,6 +1152,9 @@
       Als je het beleid uitschakelt of niet instelt, worden deze aanbevelingen niet weergegeven.
 
       Als dit beleid is ingesteld, kunnen gebruikers het niet wijzigen.</translation>
+<translation id="2724313944474873275">Als je het beleid inschakelt of niet instelt, kunnen <ph name="PRODUCT_OS_NAME" />-apparaten externe attesten (Geverifieerde toegang) gebruiken om een certificaat door <ph name="PRODUCT_OS_NAME" /> te laten uitgeven. Hiermee wordt bevestigd dat het apparaat geschikt is om beschermde content af te spelen. Met dit proces wordt de informatie over hardwaregoedkeuring naar de <ph name="PRODUCT_OS_NAME" />-certificeringsinstantie gestuurd die het apparaat uniek identificeert.
+
+      Als je dit beleid uitschakelt, gebruikt het apparaat geen externe bevestiging voor contentbescherming en kan het apparaat geen beschermde content afspelen.</translation>
 <translation id="2725855586003209701">Als je het beleid inschakelt of niet instelt, rapporteren ingeschreven apparaten de lijst met apparaatgebruikers die onlangs zijn ingelogd.
 
       Als je het beleid uitschakelt, rapporteren ingeschreven apparaten de lijst met gebruikers niet.</translation>
@@ -2103,6 +2124,13 @@
 <translation id="4089849819635523136">Als <ph name="DEFAULT_SEARCH_PROVIDER_ENABLED_POLICY_NAME" /> is ingeschakeld en je <ph name="DEFAULT_SEARCH_PROVIDER_KEYWORD_POLICY_NAME" /> instelt, wordt het zoekwoord of de snelkoppeling gespecificeerd die in de adresbalk wordt gebruikt om de zoekfunctie voor deze provider te activeren.
 
       Als je <ph name="DEFAULT_SEARCH_PROVIDER_KEYWORD_POLICY_NAME" /> niet instelt, wordt de zoekprovider niet geactiveerd door een zoekwoord.</translation>
+<translation id="409035987613226003">Als je het beleid inschakelt, wordt anonieme rapportage over gebruiks- en crashgegevens van Chrome aan Google ingeschakeld. Gebruikers kunnen deze instelling niet wijzigen. Als je het beleid uitschakelt, wordt deze informatie niet naar Google gestuurd.
+
+      Als je het beleid instelt, kunnen gebruikers het niet aanpassen. Als je het niet instelt, kunnen gebruikers het gedrag kiezen tijdens de installatie of eerste uitvoering.
+
+      Dit beleid is alleen beschikbaar voor Windows-instanties die zijn gekoppeld aan een <ph name="MS_AD_NAME" />-domein, voor Windows 10 Pro- of Enterprise-instanties die zijn ingeschreven voor apparaatbeheer en voor macOS-instanties die worden beheerd via MDM of aan een domein zijn gekoppeld via MCX.
+
+      (Zie DeviceMetricsReportingEnabled voor Chrome OS.)</translation>
 <translation id="4097556069183835428">Als het beleid is ingesteld op None, wordt het vergrootglas uitgeschakeld.
 
       Als je dit beleid instelt, kunnen gebruikers het niet wijzigen. Als je dit beleid niet instelt, is het vergrootglas in eerste instantie uitgeschakeld, maar kunnen gebruikers dit op elk moment inschakelen.</translation>
@@ -2466,6 +2494,9 @@
 <translation id="4725528134735324213">Android Backup Service inschakelen</translation>
 <translation id="4725801978265372736">Vereisen dat de naam van de lokale gebruiker en de eigenaar van de host voor externe toegang met elkaar overeenkomen</translation>
 <translation id="4733471537137819387">Beleid met betrekking tot geïntegreerde HTTP-authenticatie.</translation>
+<translation id="4735099388031364207">Als je het beleid inschakelt, wordt externe bevestiging voor het apparaat toegestaan. Er wordt automatisch een certificaat gegenereerd en naar de Device Management Server geüpload.
+
+      Als je het beleid uitschakelt of niet instelt, wordt er geen certificaat gegenereerd en mislukken aanroepen naar de <ph name="ENTERPRISE_PLATFORM_KEYS_API" />.</translation>
 <translation id="4742973303930120836">De modus voor afdrukken met achtergrondbeelden beperken</translation>
 <translation id="4752880493649142945">Clientcertificaat voor verbinding maken met RemoteAccessHostTokenValidationUrl</translation>
 <translation id="4757053978738874325">De toegankelijkheidsfunctie voor monogeluid inschakelen.
@@ -2552,6 +2583,11 @@
 <translation id="489803897780524242">Parameter die plaatsing van zoektermen beheert voor de standaardzoekprovider</translation>
 <translation id="4899708173828500852">Safe Browsing inschakelen</translation>
 <translation id="4906194810004762807">Vernieuwingsfrequentie voor apparaatbeleid</translation>
+<translation id="49093841899738146">Als je het beleid inschakelt, kan <ph name="PRODUCT_NAME" /> WebRTC-gebeurtenislogboeken verzamelen van Google-services (zoals Hangouts Meet) en deze logboeken uploaden naar Google. Deze logboeken bevatten diagnostische informatie voor het oplossen van problemen met audio- of videovergaderingen in <ph name="PRODUCT_NAME" />. Deze informatie betreft bijvoorbeeld het tijdstip en de grootte van RTP-pakketten, feedback over overbelasting van het netwerk en metadata over de duur en kwaliteit van audio- en videoframes. Deze logboeken bevatten geen audio- of videocontent van de vergadering. Google kan deze logboeken aan de hand van de sessie-ID koppelen aan andere logboeken die door de Google-service zelf zijn verzameld. Het doel hiervan is dat fouten makkelijker kunnen worden opgespoord.
+
+      Als je het beleid uitschakelt, worden dergelijke logboeken niet verzameld of geüpload.
+
+      Als het beleid niet is ingesteld in versies tot en met M76, kan <ph name="PRODUCT_NAME" /> deze logboeken standaard niet verzamelen en uploaden. Vanaf M77 kan <ph name="PRODUCT_NAME" /> deze logboeken standaard verzamelen en uploaden vanuit de meeste profielen waarop cloudgebaseerde bedrijfsbeleidsregels op gebruikersniveau van toepassing zijn. Vanaf M77 tot en met M80 kan <ph name="PRODUCT_NAME" /> deze logboeken ook standaard verzamelen en uploaden vanuit profielen waarop <ph name="PRODUCT_NAME" />-beheer op locatie van toepassing is.</translation>
 <translation id="4910101362791876581">Hiermee worden de printers gespecificeerd die een gebruiker kan gebruiken.
 
       Dit beleid wordt alleen gebruikt als <ph name="PRINTERS_WHITELIST" /> is gekozen voor <ph name="DEVICE_PRINTERS_ACCESS_MODE_POLICY_NAME" />
@@ -2563,6 +2599,9 @@
 <translation id="4917385247580444890">Sterk</translation>
 <translation id="4919122295221518724">Strengere behandeling van gecombineerde content inschakelen</translation>
 <translation id="4923806312383904642">WebDriver toestaan niet-compatibele beleidsregels te negeren</translation>
+<translation id="4927214690104703256">Als je het beleid instelt, geef je de toegestane extensies op die de <ph name="ENTERPRISE_PLATFORM_KEYS_API" />-functies moeten gebruiken voor externe attesten. Extensies moeten op deze lijst staan om de API te gebruiken.
+
+      Als een extensie niet in de lijst voorkomt of als de lijst niet is ingesteld, mislukt de API-aanroep en wordt er een foutcode weergegeven.</translation>
 <translation id="4927797103413916381">Als je <ph name="SAFE_BROWSING_ENABLED_POLICY_NAME" /> niet hebt uitgeschakeld, voorkomt het inschakelen van <ph name="ABUSIVE_EXPERIENCE_INTERVENTION_ENFORCE_POLICY_NAME" /> of dit niet instellen dat sites met misleidende functionaliteit nieuwe vensters of tabbladen openen.
 
        Als je <ph name="SAFE_BROWSING_ENABLED_POLICY_NAME" /> uitschakelt of <ph name="ABUSIVE_EXPERIENCE_INTERVENTION_ENFORCE_POLICY_NAME" /> uitschakelt, kunnen sites met misleidende functionaliteit nieuwe vensters of tabbladen openen.</translation>
@@ -2672,6 +2711,13 @@
 <translation id="5090209345759901501">Instelling voor Flash-content uitbreiden naar alle content</translation>
 <translation id="5090791951240382356">Toestaan dat woordenboekbeleid van verschillende bronnen wordt samengevoegd</translation>
 <translation id="5091315650312105069"><ph name="BASIC_AUTH" />-verificatie toestaan voor HTTP</translation>
+<translation id="5103112931744164177">Dit beleid beheert welke softwarestack wordt gebruikt voor communicatie met de DNS-server: de DNS-client van het besturingssysteem of de ingebouwde DNS-client van <ph name="PRODUCT_NAME" />. Dit beleid heeft geen invloed op welke DNS-servers worden gebruikt: als het besturingssysteem bijvoorbeeld is geconfigureerd voor gebruik van een zakelijke DNS-server, wordt diezelfde server gebruikt door de ingebouwde DNS-client. Ook wordt met dit beleid niet beheerd of DNS-over-HTTPS wordt gebruikt: <ph name="PRODUCT_NAME" /> gebruikt altijd de ingebouwde resolver voor DNS-over-HTTPS-verzoeken. Zie het <ph name="DNS_OVER_HTTPS_MODE_POLICY_NAME" />-beleid voor informatie over het beheer van DNS-over-HTTPS.
+
+      Als dit beleid is ingeschakeld, wordt de ingebouwde DNS-client gebruikt (indien beschikbaar).
+
+      Als je dit beleid uitschakelt, wordt de ingebouwde DNS-client alleen gebruikt als DNS-over-HTTPS wordt gebruikt.
+
+      Als je dit beleid niet instelt, wordt de ingebouwde DNS-client standaard ingeschakeld op <ph name="MAC_OS_NAME" />, <ph name="ANDROID_NAME" /> (als Privé-DNS en VPN niet zijn ingeschakeld) en <ph name="PRODUCT_OS_NAME" />.</translation>
 <translation id="5105313908130842249">Vertraging van schermvergrendeling wanneer op de batterij wordt gewerkt</translation>
 <translation id="5108031557082757679">Zakelijke apparaatprinters uitgeschakeld</translation>
 <translation id="5109383437323376357">De beschikbaarheid van varianten bepalen</translation>
@@ -3548,6 +3594,11 @@
 
       Als dit beleid niet is ingesteld of als de lijst leeg is, zijn alle schema's toegankelijk in <ph name="PRODUCT_NAME" />.</translation>
 <translation id="6338982178236723271">Systeemgegevens rapporteren</translation>
+<translation id="6347363725343851058">Als je het beleid inschakelt, wordt de achtergrondmodus ingeschakeld. In de achtergrondmodus wordt een <ph name="PRODUCT_NAME" />-proces gestart bij het inloggen bij het OS. Dit proces blijft actief als het laatste browservenster wordt gesloten, waardoor achtergrond-apps en de browsersessie, inclusief sessiecookies, actief kunnen blijven. Voor het achtergrondproces wordt een icoon weergegeven in het systeemvak, waarmee het proces altijd kan worden gesloten.
+
+      Als je het beleid uitschakelt, wordt de achtergrondmodus uitgeschakeld.
+
+Als je het beleid instelt, kunnen gebruikers dit niet aanpassen in de browserinstellingen. Als het niet instelt, is de achtergrondmodus aanvankelijk uitgeschakeld, maar kunnen gebruikers dit aanpassen.</translation>
 <translation id="6353890097388312479">Als je het beleid instelt op All (0) of niet instelt, kunnen gebruikers vertrouwensinstellingen bewerken voor alle CA-certificaten, door de gebruiker geïmporteerde certificaten verwijderen en certificaten importeren met Certificaatbeheer. Als je het beleid instelt op UserOnly (1), kunnen gebruikers alleen door de gebruiker geïmporteerde certificaten beheren, maar niet de vertrouwensinstellingen van ingebouwde certificaten wijzigen. Als je het beleid instelt op None (2), kunnen gebruikers CA-certificaten bekijken (maar niet beheren).</translation>
 <translation id="6362856770865555544">Als je het beleid inschakelt of niet instelt, wordt WPAD-optimalisatie (Web Proxy Auto-Discovery) ingeschakeld in <ph name="PRODUCT_NAME" />.
 
@@ -3873,6 +3924,9 @@
 <translation id="6815483833848348029">Als je het beleid inschakelt of niet instelt, geeft <ph name="PRODUCT_OS_NAME" /> een netwerkconfiguratieprompt weer als een apparaat offline is en een lokaal account op het apparaat is ingesteld voor automatisch inloggen zonder vertraging.
 
       Als je het beleid uitschakelt, wordt in plaats daarvan een foutmelding weergegeven.</translation>
+<translation id="6819838337315703072">Als app-support voor <ph name="LINUX_OS_NAME" /> is ingeschakeld en je dit beleid inschakelt, wordt de informatie over het gebruik van <ph name="LINUX_OS_NAME" />-apps teruggestuurd naar de server.
+
+      Als je het beleid uitschakelt of niet instelt, wordt er geen gebruiksinformatie gerapporteerd.</translation>
 <translation id="6821268164692776674">De bestemmingen <ph name="CLOUD_PRINT_NAME" /> en 'Opslaan in Google Drive'</translation>
 <translation id="6823711520976094072">Als je het beleid instelt op een waarde lager dan 1 MB of als je dit beleid niet instelt, gebruikt <ph name="PRODUCT_OS_NAME" /> de standaardgrootte van 256 MB voor het opslaan van apps en extensies in het cachegeheugen voor installaties door meerdere gebruikers van één apparaat. Hierdoor is het niet nodig om elke app of extensie voor elke gebruiker opnieuw te downloaden.</translation>
 <translation id="682408981080798691">Als je dit beleid inschakelt of niet instelt, is Code-integriteit van weergaveprogramma ingeschakeld.
@@ -3912,6 +3966,9 @@
 
       Dit beleid is verouderd. Gebruik in plaats daarvan <ph name="PRINTING_API_EXTENSIONS_ALLOWLIST_POLICY_NAME" />.</translation>
 <translation id="684856667300805181">Dit beleid is in <ph name="PRODUCT_NAME" /> 68 verwijderd en vervangen door <ph name="ARC_GLS_POLICY_NAME" />.</translation>
+<translation id="6848721032946289937">Als je dit beleid inschakelt of niet instelt, wordt hardwareversnelling ingeschakeld als dit beschikbaar is.
+
+      Als je het beleid uitschakelt, wordt hardwareversnelling uitgeschakeld.</translation>
 <translation id="6851199885688265233">De toegankelijkheidsfunctie voor cursormarkering inschakelen</translation>
 <translation id="6851315055469993882">HTTP auth-cache met wereldwijd bereik inschakelen</translation>
 <translation id="6854767649023671426">Als je het beleid inschakelt of niet instelt, wordt gebruikers in een prompt om toegang tot video-opnamen gevraagd, met uitzondering van de URL's die zijn ingesteld in de lijst VideoCaptureAllowedUrls.
@@ -4059,6 +4116,9 @@
 <translation id="7027785306666625591">Energiebeheer in <ph name="PRODUCT_OS_NAME" /> configureren.
 
       Met dit beleid kun je configureren hoe <ph name="PRODUCT_OS_NAME" /> zich gedraagt wanneer de gebruiker enige tijd inactief is.</translation>
+<translation id="7027923238554618852">Als je dit beleid instelt, krijgt <ph name="PRODUCT_OS_NAME" /> de instructie de taakplannerconfiguratie met de opgegeven naam te gebruiken. Dit beleid kan worden ingesteld op <ph name="CONSERVATIVE_VALUE" /> of <ph name="PERFORMANCE_VALUE" />. Hiermee wordt de taakplanner respectievelijk afgesteld op stabiliteit of maximale prestaties.
+
+      Als je het beleid niet instelt, kunnen gebruikers een eigen keuze maken.</translation>
 <translation id="7030205756530739128">Als <ph name="DEVICE_BATTERY_CHARGE_MODE_NAME" /> is ingesteld op <ph name="DEVICE_BATTERY_CHARGE_CUSTOM_MODE_NAME" />, stel je met <ph name="DEVICE_BATTERY_CHARGE_CUSTOM_START_CHARGING_POLICY_NAME" /> in wanneer de batterij begint met opladen, op basis van het percentage van de batterijlading. De waarde moet ten minste 5 procentpunten lager zijn dan <ph name="DEVICE_BATTERY_CHARGE_CUSTOM_STOP_CHARGING_POLICY_NAME" />.
 
       Als je het beleid niet instelt, is de standaard batterijoplaadmodus van toepassing.</translation>
@@ -4187,6 +4247,11 @@
 <translation id="718126088895133062">Met dit beleid wordt de licentiegebruikers-ID voor <ph name="PLUGIN_VM_NAME" /> voor dit apparaat opgegeven.</translation>
 <translation id="7185078796915954712">TLS 1.3</translation>
 <translation id="7185630966939835143">Een Google-webservice gebruiken om spelfouten op te lossen</translation>
+<translation id="718850220532931090">Dit beleid is verouderd. Gebruik in plaats daarvan <ph name="ATTESTATION_EXTENSION_ALLOWLIST_POLICY_NAME" />.
+
+      Als je het beleid instelt, geef je de toegestane extensies op die de <ph name="ENTERPRISE_PLATFORM_KEYS_API" />-functie <ph name="CHALLENGE_USER_KEY_FUNCTION" /> moet gebruiken voor externe bevestiging. Extensies moeten op deze lijst staan om de API te gebruiken.
+
+      Als een extensie niet in de lijst voorkomt of als de lijst niet is ingesteld, mislukt de API-aanroep en wordt er een foutcode weergegeven.</translation>
 <translation id="718956142899066210">Verbindingstypen die zijn toegestaan voor updates</translation>
 <translation id="7190286937411178540">De toegankelijkheidsfunctie voor markeren via toetsenbordfocus inschakelen</translation>
 <translation id="7193489339723768342">Als je het beleid instelt, specificeer je de lijst met URL's waarvan de patronen worden vergeleken met de beveiligingsoorsprong van de aanvragende URL. Bij een overeenkomst wordt zonder prompt toegang verleend tot apparaten voor audio-opnamen.
@@ -4991,6 +5056,9 @@
 <translation id="8357681633047935212">Beperk de duur van een gebruikerssessie</translation>
 <translation id="8357989008292691856">Toelatingslijst met gebruikers die mogen inloggen</translation>
 <translation id="8359734107661430198">API voor ExampleDeprecatedFeature tot en met 02-09-2008 inschakelen</translation>
+<translation id="8367069206652407172">Als je het beleid uitschakelt, kunnen gebruikers geen processen beëindigen in Taakbeheer.
+
+      Als je het beleid inschakelt of niet instelt, kunnen gebruikers processen beëindigen in Taakbeheer.</translation>
 <translation id="8367209241899435947">Chrome Cleanup inschakelen op Windows</translation>
 <translation id="8367473200119029349">Cloudrapportage</translation>
 <translation id="8369602308428138533">Vertraging van scherm uitschakelen wanneer op netstroom wordt gewerkt</translation>
diff --git a/components/policy/resources/policy_templates_pt-BR.xtb b/components/policy/resources/policy_templates_pt-BR.xtb
index c52aa67..7ddbc9b2 100644
--- a/components/policy/resources/policy_templates_pt-BR.xtb
+++ b/components/policy/resources/policy_templates_pt-BR.xtb
@@ -83,6 +83,11 @@
 <translation id="1099282607296956954">Ativar o Isolamento de todos os sites</translation>
 <translation id="1117535567637097036">Os gerenciadores de protocolo definidos por esta política não são usados na manipulação de intents do Android.</translation>
 <translation id="1118093128235245168">Permitir que os sites peçam ao usuário para conceder acesso a um dispositivo USB conectado</translation>
+<translation id="1133814529606590009">Se a política for definida como "Ativada", a coleta de dados anônimos inseridos no URL, que envia os URLs das páginas acessadas pelo usuário ao Google para melhorar a pesquisa e navegação, ficará sempre ativa.
+
+      Se a política for definida como "Desativada", não haverá coleta de dados anônimos inseridos no URL.
+
+      Se você definir a política, os usuários não poderão mudá-la. Se não for definida, a coleta de dados anônimos inseridos no URL será feita, mas os usuários poderão mudar isso.</translation>
 <translation id="1138294736309071213">Esta política é ativa somente no modo de varejo. Determina o tempo antes do protetor de tela ser mostrado na tela de login para os dispositivos no modo de varejo. O valor da política deve ser especificado em milésimos de segundos.</translation>
 <translation id="1144540226829648811">Especifica o canal de liberação ao qual este dispositivo precisa ser vinculado.
 
@@ -175,6 +180,13 @@
       Se esta política for deixada sem definição, o Google Sync estará disponível e os usuários poderão escolher usá-lo ou não.
 
       Para desativar o Google Sync completamente, é recomendado desativar os serviços do Google Sync no Google Admin Console.</translation>
+<translation id="128059397544257017">Quando a política for definida como "Ativada", se a <ph name="CHROME_CLEANUP_NAME" /> detectar softwares indesejados, ela poderá enviar o registro da varredura ao Google, de acordo com a política definida por <ph name="SAFE_BROWSING_EXTENDED_REPORTING_ENABLED_POLICY_NAME" />. A <ph name="CHROME_CLEANUP_NAME" /> perguntará aos usuários se desejam realizar a varredura. Os resultados serão enviados ao Google.
+
+      Quando a política for definida como "Desativada", se a <ph name="CHROME_CLEANUP_NAME" /> detectar software indesejado, os resultados não serão enviados ao Google, independente do valor de <ph name="SAFE_BROWSING_EXTENDED_REPORTING_ENABLED_POLICY_NAME" />. A <ph name="CHROME_CLEANUP_NAME" /> perguntará aos usuários se desejam realizar a varredura. Os resultados não serão enviados ao Google.
+
+      Se a política não for definida, a <ph name="CHROME_CLEANUP_NAME" /> poderá enviar os resultados da varredura de software indesejado ao Google de acordo com a política definida por <ph name="SAFE_BROWSING_EXTENDED_REPORTING_ENABLED_POLICY_NAME" />. A <ph name="CHROME_CLEANUP_NAME" /> perguntará aos usuários se querem fazer a varredura e compartilhar os resultados com o Google para ajudar na detecção de software indesejado no futuro. Esses resultados contêm metadados de arquivos, extensões instaladas automaticamente e chaves de registro, conforme descrito no Whitepaper de Privacidade do Chrome.
+
+      No <ph name="MS_WIN_NAME" />, essa funcionalidade está disponível apenas em instâncias associadas a um domínio do <ph name="MS_AD_NAME" />, executadas no Windows 10 Pro ou registradas no <ph name="CHROME_BROWSER_CLOUD_MANAGEMENT_NAME" />.</translation>
 <translation id="1290634681382861275">Controla diversas configurações, inclusive USB, Bluetooth, atualização de políticas, modo de desenvolvedor, entre outras.</translation>
 <translation id="1291880496936992484">Atenção: o RC4 será completamente removido de <ph name="PRODUCT_NAME" /> após a versão 52 (por volta de setembro de 2016), e esta política parará de funcionar.
 
@@ -703,6 +715,9 @@
       Se a política não for definida ou se ela for definida como uma lista vazia, nenhum modo de desbloqueio rápido estará disponível nos dispositivos gerenciados.
 
       Esta política está obsoleta. Use a <ph name="QUICK_UNLOCK_MODE_ALLOW_LIST_POLICY_NAME" />.</translation>
+<translation id="2033784678146670379">Se a política for definida como "Ativada", os usuários poderão usar o hardware de dispositivos <ph name="PRODUCT_OS_NAME" /> para fazer o atestado remoto da identidade para a Privacy CA usando a <ph name="CHALLENGE_USER_KEY_FUNCTION" /> com a <ph name="ENTERPRISE_PLATFORM_KEYS_API" />.
+
+      Se a política for definida como "Desativada" ou não for definida, as chamadas para a API falharão com um código de erro.</translation>
 <translation id="2036522553891755455">Se a política for definida como "Ativada", a detecção de compartilhamento de arquivos de rede do <ph name="PRODUCT_NAME" /> usará o <ph name="NETBIOS_PROTOCOL" /> para detectar compartilhamentos na rede. Se a política for definida como "Desativada", a detecção de compartilhamentos não usará esse protocolo.
 
       Se a política não for definida, o comportamento ficará desativado por padrão para usuários gerenciados e ativado para outros usuários.</translation>
@@ -732,6 +747,9 @@
 <translation id="2082205219176343977">Configurar a versão mínima permitida do Chrome para o dispositivo.</translation>
 <translation id="208566302163036794">Bloquear recursos desativados</translation>
 <translation id="208623333578980446">Permitir wake locks de tela para gerenciamento de energia</translation>
+<translation id="2090939118981888335">Se a política for definida como "Ativada", o proxy de compressão de dados será permitido. Se a política for definida como "Desativada", o proxy não será permitido.
+
+      Se você definir a política, os usuários não poderão mudá-la. Se ela não for definida, os usuários poderão escolher como usar o recurso.</translation>
 <translation id="209586405398070749">Canal Stable</translation>
 <translation id="2098658257603918882">Ativar relato de uso e dados relacionados a falhas</translation>
 <translation id="2104418465060359056">Fornecer informações sobre extensões e plug-ins</translation>
@@ -1144,6 +1162,9 @@
       Se a política for definida como "Desativada" ou não for definida, essas recomendações não serão exibidas.
 
       Se a política for definida, os usuários não poderão mudá-la.</translation>
+<translation id="2724313944474873275">Se a política for definida como "Ativada" ou deixada sem definição, dispositivos <ph name="PRODUCT_OS_NAME" /> poderão usar atestados remotos (acesso verificado) para receber um certificado emitido pela CA do <ph name="PRODUCT_OS_NAME" />, que declara que o dispositivo está qualificado para reproduzir conteúdo protegido. Esse processo envolve o envio de informações de endosso de hardware para a CA do <ph name="PRODUCT_OS_NAME" /> que identificam de forma exclusiva o dispositivo.
+
+      Se a política for definida como "Desativada", o dispositivo não usará o atestado remoto para proteção de conteúdo e não poderá reproduzir conteúdo protegido.</translation>
 <translation id="2725855586003209701">Se a política for definida como "Ativada" ou não for definida, os dispositivos registrados informarão a lista de usuários que fizeram login recentemente.
 
       Se a política for definida como "Desativada", os dispositivos registrados não informarão a lista de usuários.</translation>
@@ -2112,6 +2133,13 @@
 <translation id="4089849819635523136">Se a <ph name="DEFAULT_SEARCH_PROVIDER_ENABLED_POLICY_NAME" /> estiver ativada, definir <ph name="DEFAULT_SEARCH_PROVIDER_KEYWORD_POLICY_NAME" /> especificará a palavra-chave ou o atalho utilizados na barra de endereço para acionar a pesquisa desse provedor.
 
       Se a <ph name="DEFAULT_SEARCH_PROVIDER_KEYWORD_POLICY_NAME" /> não for definida, nenhuma palavra-chave ativará o provedor de pesquisa.</translation>
+<translation id="409035987613226003">Se a política for definida como "Ativada", os relatórios de uso anônimo e dados de falha do Chrome serão enviados ao Google. Os usuários não poderão mudar isso. Se a política for definida como "Desativada", as informações não serão enviadas ao Google.
+
+      Se você definir a política, os usuários não poderão mudá-la. Se não for definida, os usuários poderão escolher o comportamento durante a instalação ou a primeira execução.
+
+      Esta política está disponível apenas em instâncias do Windows associadas a um domínio do <ph name="MS_AD_NAME" /> ou instâncias do Windows 10 Pro ou Enterprise registradas no gerenciamento de dispositivos e instâncias do macOS gerenciadas via MDM ou associadas a um domínio via MCX.
+
+      Para o Chrome OS, consulte DeviceMetricsReportingEnabled.</translation>
 <translation id="4097556069183835428">Se a política for definida como "Nenhuma", a lupa será desativada.
 
       Se você definir a política, os usuários não poderão mudá-la. Se a política não for definida, a lupa será inicialmente desativada, mas os usuários poderão ativá-la quando quiserem.</translation>
@@ -2475,6 +2503,9 @@
 <translation id="4725528134735324213">Ativar o Android Backup Service</translation>
 <translation id="4725801978265372736">Exigir correspondência entre o nome do usuário local e o proprietário do host de acesso remoto</translation>
 <translation id="4733471537137819387">Políticas relacionadas à autenticação integrada de HTTP.</translation>
+<translation id="4735099388031364207">Se a política for definida como "Ativada", o atestado remoto do dispositivo será permitido. Um certificado será gerado automaticamente e enviado ao Servidor de gerenciamento de dispositivos.
+
+      Se a política for definida como "Desativada" ou deixada sem definição, nenhum certificado será gerado e as chamadas para <ph name="ENTERPRISE_PLATFORM_KEYS_API" /> falharão.</translation>
 <translation id="4742973303930120836">Restringir modo de impressão de gráficos de segundo plano</translation>
 <translation id="4752880493649142945">Certificado de cliente para conexão a RemoteAccessHostTokenValidationUrl</translation>
 <translation id="4757053978738874325">Ativar o recurso de acessibilidade de áudio mono.
@@ -2561,6 +2592,11 @@
 <translation id="489803897780524242">Parâmetro que controla o posicionamento do termo de pesquisa para o provedor de pesquisa padrão</translation>
 <translation id="4899708173828500852">Ativar Navegação segura</translation>
 <translation id="4906194810004762807">Taxa de atualização da Política de dispositivos</translation>
+<translation id="49093841899738146">Se a política for definida como "Ativada", o <ph name="PRODUCT_NAME" /> poderá coletar logs de eventos WebRTC em Serviços do Google (por exemplo, no Hangouts Meet) e fazer upload deles para o Google. Esses registros contêm informações de diagnóstico que são úteis para depurar problemas com chamadas de áudio ou videochamadas no <ph name="PRODUCT_NAME" />, como o horário e o tamanho de pacotes RTP, feedback sobre congestionamento na rede e metadados sobre o tempo e a qualidade de frames de áudio e vídeo. Esses registros não têm conteúdo de áudio ou vídeo da chamada. Por meio de um código de sessão, o Google pode associar esses registros a outros coletados pelo próprio serviço do Google. Isso é feito para facilitar a depuração.
+
+      Se a política for definida como "Desativada", não haverá coleta ou envio dos registros.
+
+      Se a política não for definida em versões até a M76, o <ph name="PRODUCT_NAME" /> terá como padrão não coletar esses registros nem fazer upload deles. A partir da versão M77, o <ph name="PRODUCT_NAME" /> terá como padrão coletar os registros e fazer upload deles da maioria dos perfis afetados por políticas de empresas no nível de usuário baseadas em nuvem. A partir da versão M77 até a M80, o <ph name="PRODUCT_NAME" /> também pode coletar esses registros e fazer upload deles por padrão a partir de perfis afetados pelo gerenciamento local do <ph name="PRODUCT_NAME" />.</translation>
 <translation id="4910101362791876581">Especifica quais impressoras o usuário pode usar.
 
       Esta política só será usada se <ph name="PRINTERS_WHITELIST" /> for escolhida para <ph name="DEVICE_PRINTERS_ACCESS_MODE_POLICY_NAME" />
@@ -2572,6 +2608,9 @@
 <translation id="4917385247580444890">Forte</translation>
 <translation id="4919122295221518724">Ativar tratamento mais rigoroso para conteúdo misto</translation>
 <translation id="4923806312383904642">Permitir que o WebDriver modifique políticas incompatíveis</translation>
+<translation id="4927214690104703256">Definir a política especifica as extensões com permissão para usar as funções <ph name="ENTERPRISE_PLATFORM_KEYS_API" /> para atestado remoto. As extensões precisam estar nesta lista para usar a API.
+
+      Se uma extensão não estiver na lista ou se a lista não for definida, a chamada para a API falhará com um código de erro.</translation>
 <translation id="4927797103413916381">Se <ph name="SAFE_BROWSING_ENABLED_POLICY_NAME" /> não estiver definida como "Desativada", definir <ph name="ABUSIVE_EXPERIENCE_INTERVENTION_ENFORCE_POLICY_NAME" /> como "Ativada" ou deixá-la sem definição impedirá sites com experiências ofensivas de serem abertos em novas janelas ou guias.
 
        Se <ph name="SAFE_BROWSING_ENABLED_POLICY_NAME" /> ou <ph name="ABUSIVE_EXPERIENCE_INTERVENTION_ENFORCE_POLICY_NAME" /> forem definidas como "Desativadas", sites com experiências ofensivas poderão ser abertos em novas janelas ou guias.</translation>
@@ -2681,6 +2720,13 @@
 <translation id="5090209345759901501">Estender a configuração de conteúdo em Flash a todos os conteúdos</translation>
 <translation id="5090791951240382356">Permitir a mescla de políticas de dicionário de diferentes fontes</translation>
 <translation id="5091315650312105069">Permitir autenticação <ph name="BASIC_AUTH" /> para conexões HTTP</translation>
+<translation id="5103112931744164177">Esta política controla qual pilha de software é usada para se comunicar com o servidor DNS: o cliente DNS do sistema operacional ou o cliente DNS integrado do <ph name="PRODUCT_NAME" />. Esta política não afeta qual servidor DNS será usado. Se, por exemplo, o sistema operacional estiver configurado para usar um servidor DNS empresarial, o mesmo servidor será usado pelo cliente DNS integrado. Ela também não controla como o DNS sobre HTTPS é usado. O <ph name="PRODUCT_NAME" /> sempre usará o resolvedor integrado para solicitações DNS sobre HTTPS. Consulte a política <ph name="DNS_OVER_HTTPS_MODE_POLICY_NAME" /> para ver informações sobre como controlar o DNS sobre HTTPS.
+
+      Se a política for definida como "Ativada", o cliente DNS integrado será usado, se disponível.
+
+      Se a política for definida como "Desativada", o cliente DNS integrado será usado apenas quando o DNS sobre HTTPS estiver em uso.
+
+      Se esta política não for definida, o cliente de DNS integrado será ativado por padrão no <ph name="MAC_OS_NAME" />, no <ph name="ANDROID_NAME" /> (quando não houver um DNS particular ou uma VPN ativos) e no <ph name="PRODUCT_OS_NAME" />.</translation>
 <translation id="5105313908130842249">Intervalo de bloqueio da tela no funcionamento com energia da bateria</translation>
 <translation id="5108031557082757679">Impressoras empresariais desativadas</translation>
 <translation id="5109383437323376357">Determinar a disponibilidade de variações</translation>
@@ -3552,6 +3598,11 @@
 
       Se esta política não for definida ou a lista estiver vazia, será possível acessar todos os esquemas no <ph name="PRODUCT_NAME" />.</translation>
 <translation id="6338982178236723271">Enviar informações do sistema</translation>
+<translation id="6347363725343851058">Se a política for definida como "Ativada", o modo de segundo plano será ativado. No modo de segundo plano, um processo do <ph name="PRODUCT_NAME" /> será iniciado ao fazer login no SO e continuará em execução quando a última janela do navegador for fechada. Isso permite que apps em segundo plano e a sessão de navegação continuem ativos, incluindo os cookies da sessão. O processo em segundo plano exibirá um ícone na bandeja do sistema, onde poderá ser fechado.
+
+      Se a política for definida como "Desativada", o modo de segundo plano será desativado.
+
+      Se a política for definida, os usuários não poderão mudá-la nas configurações do navegador. Se não for definida, o modo de segundo plano ficará desativado, mas os usuários poderão ativá-lo.</translation>
 <translation id="6353890097388312479">Se a política for definida como "Todos (0)" ou não for definida, os usuários poderão editar as configurações de confiança para todos os certificados de CA, remover certificados importados e importar outros usando o Gerenciador de certificados. Se a política for definida como "Somente usuário (1)", os usuários poderão gerenciar os certificados importados, mas não poderão mudar as configurações de confiança dos certificados integrados. Se ela for definida como "Nenhum (2)", os usuários poderão ver os certificados de CA, mas não gerenciá-los.</translation>
 <translation id="6362856770865555544">Se a política for definida como "Ativada" ou não for definida, a otimização da descoberta automática de proxies da Web (WPAD, na sigla em inglês) será ativada no <ph name="PRODUCT_NAME" />.
 
@@ -3877,6 +3928,9 @@
 <translation id="6815483833848348029">Definir a política como "Ativada" ou deixá-la sem definição faz com que o <ph name="PRODUCT_OS_NAME" /> mostre uma solicitação de configuração da rede quando um dispositivo ficar off-line, se uma conta local do dispositivo estiver definida para login automático sem atraso.
 
       A desativação da política faz com que uma mensagem de erro seja exibida.</translation>
+<translation id="6819838337315703072">Se a compatibilidade com apps <ph name="LINUX_OS_NAME" /> estiver ativada, definir a política como "Ativada" enviará informações sobre o uso dos apps <ph name="LINUX_OS_NAME" /> ao servidor.
+
+      Se a política for definida como "Desativada" ou deixada sem definição, as informações de uso não serão enviadas.</translation>
 <translation id="6821268164692776674">Destinos do <ph name="CLOUD_PRINT_NAME" /> e "Salvar no Google Drive"</translation>
 <translation id="6823711520976094072">Definir como menos de 1 MB ou deixar sem definição significa que o <ph name="PRODUCT_OS_NAME" /> usará o tamanho padrão de 256 MB no cache de apps e extensões para instalações feitas por vários usuários em um mesmo dispositivo, evitando a necessidade de um novo download para cada usuário.</translation>
 <translation id="682408981080798691">Se a política for definida como "Ativada" ou não for definida, a integridade do código renderizador será ativada.
@@ -3916,6 +3970,9 @@
 
       Esta política está obsoleta. Use a <ph name="PRINTING_API_EXTENSIONS_ALLOWLIST_POLICY_NAME" />.</translation>
 <translation id="684856667300805181">Esta política foi removida no <ph name="PRODUCT_NAME" /> 68 e substituída por <ph name="ARC_GLS_POLICY_NAME" />.</translation>
+<translation id="6848721032946289937">Se a política for definida como "Ativada" ou deixada sem definição, a aceleração de hardware será ativada, se disponível.
+
+      Se a política for definida como "Desativada", a aceleração de hardware será desativada.</translation>
 <translation id="6851199885688265233">Ativar o recurso de acessibilidade que destaca o cursor</translation>
 <translation id="6851315055469993882">Ativa o cache de autenticação de HTTP com escopo global</translation>
 <translation id="6854767649023671426">Se a política for definida como ativada ou não for definida, o usuário receberá uma solicitação para autorizar a captura de vídeo, exceto para URLs configurados na lista VideoCaptureAllowedUrls.
@@ -4061,6 +4118,9 @@
 <translation id="7027785306666625591">Configura o gerenciamento de energia no <ph name="PRODUCT_OS_NAME" />.
 
       Essas políticas permitem configurar a forma como o <ph name="PRODUCT_OS_NAME" /> se comporta quando o usuário permanece inativo por um período de tempo específico.</translation>
+<translation id="7027923238554618852">Se a política for definida, o <ph name="PRODUCT_OS_NAME" /> será instruído a usar a configuração do programador de tarefas identificada pelo nome especificado. A política pode ser definida como <ph name="CONSERVATIVE_VALUE" /> ou <ph name="PERFORMANCE_VALUE" />, o que define o gerenciador de tarefas para máxima estabilidade ou desempenho, respectivamente.
+
+      Se ela não for definida, os usuários poderão escolher como usá-la.</translation>
 <translation id="7030205756530739128">Se <ph name="DEVICE_BATTERY_CHARGE_MODE_NAME" /> for definida como <ph name="DEVICE_BATTERY_CHARGE_CUSTOM_MODE_NAME" />, a definição de <ph name="DEVICE_BATTERY_CHARGE_CUSTOM_START_CHARGING_POLICY_NAME" /> personalizará quando o carregamento da bateria será iniciado, com base na porcentagem de carga da bateria. O valor precisa estar pelo menos 5% abaixo de <ph name="DEVICE_BATTERY_CHARGE_CUSTOM_STOP_CHARGING_POLICY_NAME" />.
 
       Se a política não for definida, o modo padrão de carregamento da bateria será aplicado.</translation>
@@ -4189,6 +4249,11 @@
 <translation id="718126088895133062">Esta política especifica o código de licenciamento do usuário do <ph name="PLUGIN_VM_NAME" /> para este dispositivo.</translation>
 <translation id="7185078796915954712">TLS 1.3</translation>
 <translation id="7185630966939835143">Usar um serviço da Web do Google para ajudar a solucionar erros de ortografia</translation>
+<translation id="718850220532931090">Esta política está obsoleta. Use a <ph name="ATTESTATION_EXTENSION_ALLOWLIST_POLICY_NAME" />.
+
+      Definir a política especifica as extensões com permissão para usar a função <ph name="ENTERPRISE_PLATFORM_KEYS_API" /> de <ph name="CHALLENGE_USER_KEY_FUNCTION" /> para atestado remoto. As extensões precisam estar nesta lista para usar a API.
+
+      Se uma extensão não estiver na lista ou se a lista não for definida, a chamada para a API falhará com um código de erro.</translation>
 <translation id="718956142899066210">Tipos de conexão permitidos para atualizações</translation>
 <translation id="7190286937411178540">Ativar o recurso de acessibilidade que destaca o objeto em foco por meio do teclado</translation>
 <translation id="7193489339723768342">Se a política for definida, você especificará a lista de URLs cujos padrões devem corresponder à origem de segurança do URL solicitante. Quando houver correspondência de padrão, o acesso a dispositivos de captura de áudio será permitido sem o envio de uma solicitação ao usuário.
@@ -4981,6 +5046,9 @@
 <translation id="8357681633047935212">Limitar a duração de uma sessão de usuário</translation>
 <translation id="8357989008292691856">Lista de permissões de login de usuário</translation>
 <translation id="8359734107661430198">Ativar a API ExampleDeprecatedFeature até 02/09/2008</translation>
+<translation id="8367069206652407172">Se a política for definida como "Desativada", os usuários não poderão finalizar processos no gerenciador de tarefas.
+
+      Se a política for definida como "Ativada" ou deixada sem definição, os usuários poderão encerrar processos no gerenciador de tarefas.</translation>
 <translation id="8367209241899435947">Ativa o recurso "Varredura do Chrome" no Windows</translation>
 <translation id="8367473200119029349">Relatórios de nuvem</translation>
 <translation id="8369602308428138533">Intervalo de desligamento da tela no funcionamento com alimentação CA</translation>
diff --git a/components/policy/resources/policy_templates_ru.xtb b/components/policy/resources/policy_templates_ru.xtb
index 64c78d7..a40f0342 100644
--- a/components/policy/resources/policy_templates_ru.xtb
+++ b/components/policy/resources/policy_templates_ru.xtb
@@ -83,6 +83,11 @@
 <translation id="1099282607296956954">Включить изоляцию для всех сайтов</translation>
 <translation id="1117535567637097036">Обработчики протоколов, настроенные с помощью этого правила, не используются при обработке намерений Android.</translation>
 <translation id="1118093128235245168">Разрешить сайтам запрашивать доступ к подключенному USB-устройству</translation>
+<translation id="1133814529606590009">Если правило включено, всегда выполняется анонимный сбор данных о URL. Эти сведения отправляются в Google для улучшения поиска и просмотра веб-страниц.
+
+      Если правило отключено, сбор не выполняется.
+
+      Если правило настроено, пользователи не могут изменить его. Если правило не настроено, анонимный сбор данных включен по умолчанию, однако пользователи могут изменить эту настройку.</translation>
 <translation id="1138294736309071213">Эти правила действуют только в коммерческой версии.
      Определяет длительность отображения заставки на экране входа в коммерческой версии.
 
@@ -176,6 +181,13 @@
       Если правило не задано, пользователи смогут самостоятельно решать, использовать ли им Google Sync.
 
       Чтобы полностью запретить использование Google Sync, рекомендуем отключить этот сервис в консоли администратора Google.</translation>
+<translation id="128059397544257017">Если правило включено, при обнаружении нежелательного ПО <ph name="CHROME_CLEANUP_NAME" /> может отправить отчет о сканировании в Google в соответствии с правилом <ph name="SAFE_BROWSING_EXTENDED_REPORTING_ENABLED_POLICY_NAME" />. <ph name="CHROME_CLEANUP_NAME" /> запрашивает у пользователей разрешение на очистку от нежелательного ПО. Результаты отправляются в Google.
+
+      Если правило отключено, при обнаружении нежелательного ПО <ph name="CHROME_CLEANUP_NAME" /> не отправляет отчет о сканировании в Google вне зависимости от значения правила <ph name="SAFE_BROWSING_EXTENDED_REPORTING_ENABLED_POLICY_NAME" />. <ph name="CHROME_CLEANUP_NAME" /> запрашивает у пользователей разрешение на очистку от нежелательного ПО. Результаты в Google не отправляются.
+
+      Если правило не настроено, <ph name="CHROME_CLEANUP_NAME" /> может отправлять в Google отчеты о сканировании в соответствии с правилом <ph name="SAFE_BROWSING_EXTENDED_REPORTING_ENABLED_POLICY_NAME" />. <ph name="CHROME_CLEANUP_NAME" /> запрашивает у пользователей разрешение на очистку от нежелательного ПО и отправку отчета с результатами сканирования в Google, чтобы улучшить функцию обнаружения такого ПО. Отчет включает метаданные файлов, сведения об автоматически установленных расширениях и ключи реестра в соответствии с Технической публикацией о конфиденциальности в Google Chrome.
+
+      В <ph name="MS_WIN_NAME" /> это правило можно настроить только на устройствах домена <ph name="MS_AD_NAME" />, на которых установлена ОС Windows 10 Pro или которые зарегистрированы в программе "<ph name="CHROME_BROWSER_CLOUD_MANAGEMENT_NAME" />".</translation>
 <translation id="1290634681382861275">Регулирует дополнительные настройки, например для USB, Bluetooth, обновления правил, режима разработчика и другие.</translation>
 <translation id="1291880496936992484">Внимание! Поддержка RC4 в <ph name="PRODUCT_NAME" /> будет полностью прекращена после выхода версии 52 в сентябре 2016 года. После этого правило перестанет действовать.
 
@@ -708,6 +720,9 @@
       Если правило не настроено или указан пустой список, ни один способ быстрой разблокировки не будет использоваться на устройстве.
 
       Это правило больше не поддерживается. Используйте вместо него правило <ph name="QUICK_UNLOCK_MODE_ALLOW_LIST_POLICY_NAME" />.</translation>
+<translation id="2033784678146670379">Если правило включено, пользователи могут использовать аппаратное обеспечение устройства <ph name="PRODUCT_OS_NAME" /> для удаленной проверки личных данных в Центре сертификации с помощью функции <ph name="CHALLENGE_USER_KEY_FUNCTION" />, входящей в <ph name="ENTERPRISE_PLATFORM_KEYS_API" />.
+
+      Если правило отключено или не настроено, при вызовах API будет появляться ошибка.</translation>
 <translation id="2036522553891755455">Включенное правило определяет, будет ли функция обнаружения общих папок в <ph name="PRODUCT_NAME" /> использовать протокол <ph name="NETBIOS_PROTOCOL" /> для обнаружения папок в сети. Если правило отключено, этот протокол использоваться не будет.
 
       Если правило не задано, оно будет по умолчанию считаться выключенным для профилей, управляемых администратором, и включенным для остальных.</translation>
@@ -737,6 +752,9 @@
 <translation id="2082205219176343977">Настройка версии Chrome, минимально допустимой для устройства</translation>
 <translation id="208566302163036794">Блокировать отключенные функции</translation>
 <translation id="208623333578980446">Разрешить использование запретов блокировки через API расширения управления питанием</translation>
+<translation id="2090939118981888335">Если правило включено, для сжатия трафика используется прокси-сервер. Если правило отключено, эта функция не работает.
+
+      Если правило настроено, пользователи не могут изменить его. Если правило не настроено, пользователи могут самостоятельно выбирать, использовать ли эту функцию.</translation>
 <translation id="209586405398070749">Стабильный канал</translation>
 <translation id="2098658257603918882">Включить в отчеты данные об использовании и сбоях</translation>
 <translation id="2104418465060359056">Передавать информацию о расширениях и плагинах</translation>
@@ -1144,6 +1162,9 @@
       Если правило отключено или не настроено, рекомендации появляться не будут.
 
       Если правило настроено, пользователи не смогут изменить его.</translation>
+<translation id="2724313944474873275">Если правило включено или не настроено, устройства с <ph name="PRODUCT_OS_NAME" /> могут проходить удаленную проверку (подтверждение доступа) для получения сертификата Центра сертификации <ph name="PRODUCT_OS_NAME" />. Этот сертификат подтверждает разрешение воспроизводить защищенный контент на устройстве. В Центр сертификации <ph name="PRODUCT_OS_NAME" /> отправляется информация об аппаратной части устройства, позволяющая определить его уникальный идентификатор.
+
+      Если правило отключено, устройство не сможет проходить удаленную проверку, а воспроизведение защищенного контента на нем может не поддерживаться.</translation>
 <translation id="2725855586003209701">Если правило включено или не настроено, зарегистрированные устройства отправляют данные о том, какие пользователи недавно выполняли на них вход.
 
       Если правило выключено, эти устройства не отправляют данные о пользователях.</translation>
@@ -2119,6 +2140,13 @@
 <translation id="4089849819635523136">Если правило <ph name="DEFAULT_SEARCH_PROVIDER_ENABLED_POLICY_NAME" /> включено, то параметр <ph name="DEFAULT_SEARCH_PROVIDER_KEYWORD_POLICY_NAME" /> задает ключевое слово или сочетание клавиш, которое используется в адресной строке, чтобы запустить поиск в поисковой системе.
 
       Если параметр <ph name="DEFAULT_SEARCH_PROVIDER_KEYWORD_POLICY_NAME" /> не задан, то поисковая система с помощью ключевого слова не активируется.</translation>
+<translation id="409035987613226003">Если правило включено, анонимные отчеты об использовании и сбоях браузера Chrome отправляются в Google, а пользователи не могут менять эту настройку. Если правило отключено, данные не передаются в Google.
+
+      Если правило настроено, пользователи не могут изменить его. В противном случае пользователи могут выбрать нужный вариант при установке или первом запуске браузера.
+
+      Правило можно использовать только на устройствах Windows, входящих в домен <ph name="MS_AD_NAME" />, на устройствах Windows 10 Pro или Enterprise с регистрацией в консоли администратора, а также на устройствах macOS, которые контролируются с помощью управления мобильными устройствами или добавлены в домен через MCX.
+
+      Аналогичное правило для Chrome OS называется DeviceMetricsReportingEnabled.</translation>
 <translation id="4097556069183835428">Если задано значение None, лупа будет выключена.
 
       Если вы настроите это правило, пользователи не смогут его изменить. Если правило не настроено, изначально лупа будет выключена, но пользователи в любое время смогут ее включить.</translation>
@@ -2482,6 +2510,9 @@
 <translation id="4725528134735324213">Включить сервис Android Backup</translation>
 <translation id="4725801978265372736">Требовать, чтобы имена локального пользователя и владельца хоста удаленного доступа совпадали</translation>
 <translation id="4733471537137819387">Правила в отношении интегрированной HTTP-аутентификации.</translation>
+<translation id="4735099388031364207">Если правило включено, удаленная проверка устройства разрешена. При этом сертификат генерируется и отправляется на сервер управления устройствами автоматически.
+
+      Если правило отключено или не настроено, сертификаты не генерируются, а вызовы <ph name="ENTERPRISE_PLATFORM_KEYS_API" /> происходят с ошибкой.</translation>
 <translation id="4742973303930120836">Ограничить режим печати фоновых цветов и изображений</translation>
 <translation id="4752880493649142945">Сертификат клиента для подключения к RemoteAccessHostTokenValidationUrl</translation>
 <translation id="4757053978738874325">Включает специальную возможность – монофонический звук.
@@ -2570,6 +2601,11 @@
 <translation id="489803897780524242">Параметр, контролирующий размещение поискового запроса для поисковой системы по умолчанию</translation>
 <translation id="4899708173828500852">Включить безопасный просмотр</translation>
 <translation id="4906194810004762807">Частота обновлений политики устройств</translation>
+<translation id="49093841899738146">Если правило включено, <ph name="PRODUCT_NAME" /> может собирать журналы событий WebRTC из сервисов Google (например, Hangouts Meet) и загружать их в Google. В журналах содержится такая информация, как размер пакетов RTP, время их отправки и получения, данные о перегрузке сети, а также метаданные о продолжительности и качестве аудио и видео. Такая информация полезна для отладки звонков и видеовстреч в <ph name="PRODUCT_NAME" />. В журналах нет самого аудио- и видеоконтента. Для упрощения отладки эти журналы могут быть связаны с журналами сервисов Google с помощью идентификатора сеанса.
+
+      Если правило отключено, сбор и загрузка журналов не выполняются.
+
+      Если правило не настроено и используется версия не выше M76, <ph name="PRODUCT_NAME" /> по умолчанию не может собирать и загружать эти журналы. Если используется версия не ниже M77, <ph name="PRODUCT_NAME" /> по умолчанию может собирать и загружать эти журналы из большинства профилей, к которым применяются корпоративные облачные правила на уровне пользователя. Если используется версия от M77 до M80 включительно, <ph name="PRODUCT_NAME" /> также по умолчанию может собирать и загружать эти журналы из профилей, которые находятся под локальным управлением <ph name="PRODUCT_NAME" />.</translation>
 <translation id="4910101362791876581">Это правило определяет, какие принтеры доступны пользователю.
 
       Оно используется только в том случае, если для правила <ph name="DEVICE_PRINTERS_ACCESS_MODE_POLICY_NAME" /> выбран параметр <ph name="PRINTERS_WHITELIST" />.
@@ -2581,6 +2617,9 @@
 <translation id="4917385247580444890">Сильный</translation>
 <translation id="4919122295221518724">Включение более строгой обработки смешанного контента</translation>
 <translation id="4923806312383904642">Разрешить WebDriver переопределять несовместимые правила</translation>
+<translation id="4927214690104703256">Правило позволяет указать расширения, которым разрешено использовать функции <ph name="ENTERPRISE_PLATFORM_KEYS_API" /> для удаленной проверки. Чтобы разрешить использование API, расширения необходимо добавить в список.
+
+      Если расширения нет в списке или список не создан, при вызове API будет появляться ошибка.</translation>
 <translation id="4927797103413916381">Если правило <ph name="SAFE_BROWSING_ENABLED_POLICY_NAME" /> отключено, а правило <ph name="ABUSIVE_EXPERIENCE_INTERVENTION_ENFORCE_POLICY_NAME" /> включено или не настроено, то на сайтах, злоупотребляющих доверием, будет заблокировано открытие новых окон и вкладок.
 
        Если правила <ph name="SAFE_BROWSING_ENABLED_POLICY_NAME" /> или <ph name="ABUSIVE_EXPERIENCE_INTERVENTION_ENFORCE_POLICY_NAME" /> отключены, то новые окна и вкладки на сайтах, злоупотребляющих доверием, блокироваться не будут.</translation>
@@ -2688,6 +2727,13 @@
 <translation id="5090209345759901501">Применить настройки Flash ко всему контенту</translation>
 <translation id="5090791951240382356">Разрешить объединять правила со словарями из разных источников</translation>
 <translation id="5091315650312105069">Разрешить аутентификацию типа "<ph name="BASIC_AUTH" />" при подключении по HTTP</translation>
+<translation id="5103112931744164177">Правило позволяет выбрать, какой программный стек использовать для взаимодействия с DNS-сервером: клиент DNS операционной системы или встроенный в <ph name="PRODUCT_NAME" /> клиент DNS. Это не влияет на выбор DNS-серверов. Например, если операционная система использует корпоративный DNS-сервер, то встроенный клиент DNS будет использовать этот же сервер. Это правило также не влияет на режим "DNS поверх HTTPS". <ph name="PRODUCT_NAME" /> всегда отправляет запросы по этому протоколу через встроенный преобразователь. Подробные сведения об управлении режимом "DNS поверх HTTPS" можно найти в правиле <ph name="DNS_OVER_HTTPS_MODE_POLICY_NAME" />.
+
+      Если правило включено, используется встроенный клиент DNS (если есть).
+
+      Если правило отключено, встроенный клиент DNS используется, только если включен режим "DNS поверх HTTPS".
+
+      Если правило не настроено, встроенный клиент DNS работает по умолчанию на устройствах с <ph name="MAC_OS_NAME" />, <ph name="ANDROID_NAME" /> (при выключенном частном DNS-сервере и VPN), а также <ph name="PRODUCT_OS_NAME" />.</translation>
 <translation id="5105313908130842249">Задержка блокировки экрана при работе от батареи</translation>
 <translation id="5108031557082757679">Принтеры, недоступные на устройствах компании</translation>
 <translation id="5109383437323376357">Определение наличия вариантов</translation>
@@ -3560,6 +3606,11 @@
 
       Если это правило не задано или список пуст, в <ph name="PRODUCT_NAME" /> будут доступны URL с любыми протоколами.</translation>
 <translation id="6338982178236723271">Передача информации о системе</translation>
+<translation id="6347363725343851058">Если правило включено, работает фоновый режим. В этом режиме процесс <ph name="PRODUCT_NAME" /> запускается при входе в операционную систему и продолжает работать даже после того, как закрывается последнее окно браузера. Благодаря этому фоновые приложения и сеанс, в том числе его файлы cookie, остаются активными. Когда браузер работает в фоновом режиме, в области уведомлений виден значок, позволяющий завершить процесс.
+
+      Если правило отключено, фоновый режим не работает.
+
+      Если правило настроено, пользователи не могут изменить его в настройках браузера. В противном случае пользователи могут вносить изменения.</translation>
 <translation id="6353890097388312479">Если выбрано значение 0 (All) или правило не настроено, пользователи смогут менять настройки доверия для всех сертификатов ЦС, удалять пользовательские сертификаты и импортировать сертификаты с помощью Менеджера сертификатов. Если выбрано значение 1 (UserOnly), пользователи смогут управлять только сертификатами пользователей, но не смогут менять настройки доверия для встроенных сертификатов. Если задано значение 2 (None), пользователи смогут только просматривать сертификаты ЦС, но не управлять ими.</translation>
 <translation id="6362856770865555544">Если правило включено или не настроено, в <ph name="PRODUCT_NAME" /> будет работать оптимизация протокола автоматического обнаружения прокси-сервера (WPAD).
 
@@ -3885,6 +3936,9 @@
 <translation id="6815483833848348029">Если правило включено или не задано, а вход в локальный аккаунт на устройстве должен выполняться автоматически без задержки, то при отсутствии подключения к Интернету <ph name="PRODUCT_OS_NAME" /> показывает запрос на настройку сети.
 
       Если правило отключено, показывается сообщение об ошибке.</translation>
+<translation id="6819838337315703072">Если правило включено, информация об использовании приложений для <ph name="LINUX_OS_NAME" /> передается на сервер. Это правило работает, если включена поддержка приложений для <ph name="LINUX_OS_NAME" />.
+
+      Если правило отключено или не настроено, данные не передаются.</translation>
 <translation id="6821268164692776674">Варианты "<ph name="CLOUD_PRINT_NAME" />" и "Сохранить на Google Диске"</translation>
 <translation id="6823711520976094072">Если правило не настроено или задано значение меньше 1 МБ, <ph name="PRODUCT_OS_NAME" /> по умолчанию выделит 256 МБ для кеширования приложений и расширений при их установке несколькими пользователями устройства. Это позволяет избежать повторного скачивания контента.</translation>
 <translation id="682408981080798691">Если правило включено или не настроено, будет использоваться инструмент Renderer Code Integrity.
@@ -3924,6 +3978,9 @@
 
       Это правило больше не поддерживается. Вместо него используется правило <ph name="PRINTING_API_EXTENSIONS_ALLOWLIST_POLICY_NAME" />.</translation>
 <translation id="684856667300805181">В <ph name="PRODUCT_NAME" /> 68 правило было заменено на <ph name="ARC_GLS_POLICY_NAME" />.</translation>
+<translation id="6848721032946289937">Если правило включено или не настроено, на устройстве используется аппаратное ускорение (если есть).
+
+      Если правило отключено, аппаратное ускорение не используется.</translation>
 <translation id="6851199885688265233">Включить подсветку указателя мыши (специальная возможность)</translation>
 <translation id="6851315055469993882">Включить глобальное применение кеша авторизации HTTP</translation>
 <translation id="6854767649023671426">Если правило включено или не задано, то все сайты, кроме перечисленных в списке VideoCaptureAllowedUrls, должны отправлять пользователю запрос, чтобы получить разрешение на запись.
@@ -4071,6 +4128,9 @@
 <translation id="7027785306666625591">Настройка режима энергопотребления в <ph name="PRODUCT_OS_NAME" />
 
       Эти правила определяют режим работы <ph name="PRODUCT_OS_NAME" />, когда пользователь неактивен в течение определенного времени.</translation>
+<translation id="7027923238554618852">Правило позволяет выбрать конфигурацию планировщика задач <ph name="PRODUCT_OS_NAME" />. Можно указать одно из двух значений: <ph name="CONSERVATIVE_VALUE" /> или <ph name="PERFORMANCE_VALUE" />. В первом случае будет выбрана конфигурация для стабильной работы, а во втором – для максимальной производительности.
+
+      Если правило не настроено, пользователи могут сделать выбор самостоятельно.</translation>
 <translation id="7030205756530739128">Если для правила <ph name="DEVICE_BATTERY_CHARGE_MODE_NAME" /> задано значение "<ph name="DEVICE_BATTERY_CHARGE_CUSTOM_MODE_NAME" />", то правило <ph name="DEVICE_BATTERY_CHARGE_CUSTOM_START_CHARGING_POLICY_NAME" /> позволяет определить условия для начала зарядки с учетом уровня заряда. Значение должно быть как минимум на 5 процентных пунктов меньше значения, указанного для правила <ph name="DEVICE_BATTERY_CHARGE_CUSTOM_STOP_CHARGING_POLICY_NAME" />.
 
       Если правило не настроено, применяется стандартный режим зарядки батареи.</translation>
@@ -4199,6 +4259,11 @@
 <translation id="718126088895133062">Правило позволяет задать идентификатор пользователя <ph name="PLUGIN_VM_NAME" /> для этого устройства.</translation>
 <translation id="7185078796915954712">TLS 1.3</translation>
 <translation id="7185630966939835143">Использовать веб-сервис Google для проверки правописания</translation>
+<translation id="718850220532931090">Это правило больше не поддерживается. Вместо него используется правило <ph name="ATTESTATION_EXTENSION_ALLOWLIST_POLICY_NAME" />.
+
+      Правило позволяет указать, какие расширения могут проходить удаленную проверку с помощью функции <ph name="CHALLENGE_USER_KEY_FUNCTION" />, входящей в <ph name="ENTERPRISE_PLATFORM_KEYS_API" />. Чтобы разрешить использование API, расширения необходимо добавить в список.
+
+      Если расширения нет в списке или список не создан, при вызове API будет происходить ошибка.</translation>
 <translation id="718956142899066210">Разрешенные типы подключений для загрузки обновлений</translation>
 <translation id="7190286937411178540">Включить выделение объектов, выбранных с помощью клавиатуры (специальная возможность)</translation>
 <translation id="7193489339723768342">Если правило задано, значит вы указали список URL, шаблоны которых сверяются с запрашивающим URL. В случае соответствия доступ записывающим аудиоустройствам предоставляется без запроса.
@@ -4990,6 +5055,9 @@
 <translation id="8357681633047935212">Ограничить продолжительность сеанса пользователя</translation>
 <translation id="8357989008292691856">Список пользователей с правом на вход в систему</translation>
 <translation id="8359734107661430198">Включить ExampleDeprecatedFeature API (2008/09/02)</translation>
+<translation id="8367069206652407172">Если правило отключено, пользователи не могут завершать процессы в диспетчере задач.
+
+      Если правило включено или не настроено, пользователи могут это делать.</translation>
 <translation id="8367209241899435947">Правило определяет, включать ли Инструмент очистки Chrome в Windows</translation>
 <translation id="8367473200119029349">Отправка отчетов в консоль администратора</translation>
 <translation id="8369602308428138533">Задержка отключения экрана при работе от сети</translation>
diff --git a/components/policy/resources/policy_templates_th.xtb b/components/policy/resources/policy_templates_th.xtb
index e79abd7..fa9d1df 100644
--- a/components/policy/resources/policy_templates_th.xtb
+++ b/components/policy/resources/policy_templates_th.xtb
@@ -83,6 +83,11 @@
 <translation id="1099282607296956954">เปิดใช้การแยกเว็บไซต์สำหรับทุกเว็บไซต์</translation>
 <translation id="1117535567637097036">ไม่มีการใช้เครื่องจัดการโปรโตคอลที่ตั้งค่าผ่านนโยบายนี้ระหว่างการจัดการ Intent ของ Android</translation>
 <translation id="1118093128235245168">อนุญาตให้เว็บไซต์ขอสิทธิ์จากผู้ใช้เพื่อเข้าถึงอุปกรณ์ USB ที่เชื่อมต่ออยู่</translation>
+<translation id="1133814529606590009">การตั้งค่านโยบายเป็น "เปิดใช้" จะทำให้มีการรวบรวมข้อมูลที่ไม่ระบุตัวบุคคลซึ่งผูกกับ URL อยู่เสมอ ข้อมูลนี้จะส่ง URL ของหน้าเว็บที่ผู้ใช้เข้าชมไปยัง Google เพื่อช่วยให้การค้นหาและการท่องเว็บดีขึ้น
+
+      การตั้งค่านโยบายเป็น "ปิดใช้" จะทำให้ไม่มีการรวบรวมข้อมูลที่ไม่ระบุตัวบุคคลซึ่งผูกกับ URL
+
+      หากคุณตั้งค่านโยบายไว้ ผู้ใช้จะเปลี่ยนไม่ได้ หากไม่ได้ตั้งค่า ในตอนแรกระบบจะรวบรวมข้อมูลที่ไม่ระบุตัวบุคคลซึ่งผูกกับ URL แต่ผู้ใช้เปลี่ยนการตั้งค่าได้</translation>
 <translation id="1138294736309071213">นโยบายนี้ใช้งานได้ในโหมดปลีกเท่านั้น
 
       กำหนดระยะเวลาการไม่ใช้งานก่อนที่โปรแกรมรักษาหน้าจอจะแสดงขึ้นบนหน้าจอลงชื่อเข้าใช้สำหรับอุปกรณ์ในโหมดปลีก
@@ -179,6 +184,13 @@
       หากไม่ได้ตั้งค่านโยบายนี้ ผู้ใช้จะเลือกได้ว่าจะใช้ Google Sync หรือไม่
 
       หากต้องการปิดใช้ Google Sync โดยสมบูรณ์ ขอแนะนำให้คุณปิดใช้บริการ Google Sync ในคอนโซล Google Admin</translation>
+<translation id="128059397544257017">หากตั้งค่านโยบายนี้เป็น "เปิดใช้" หมายความว่าหาก <ph name="CHROME_CLEANUP_NAME" /> ตรวจพบซอฟต์แวร์ไม่พึงประสงค์ ก็จะรายงานเกี่ยวกับการสแกนดังกล่าวให้ Google ทราบ โดยเป็นไปตามนโยบายที่กำหนดไว้โดย <ph name="SAFE_BROWSING_EXTENDED_REPORTING_ENABLED_POLICY_NAME" /> <ph name="CHROME_CLEANUP_NAME" /> จะถามผู้ใช้ว่าต้องการทำความสะอาดไหม แล้วส่งผลลัพธ์ไปยัง Google
+
+      หากตั้งค่านโยบายนี้เป็น "ปิดใช้" หมายความว่าหาก <ph name="CHROME_CLEANUP_NAME" /> ตรวจพบซอฟต์แวร์ไม่พึงประสงค์ ก็จะไม่รายงานเกี่ยวกับการสแกนดังกล่าวให้ Google ทราบ ไม่ว่าค่าของ <ph name="SAFE_BROWSING_EXTENDED_REPORTING_ENABLED_POLICY_NAME" /> จะเป็นอะไรก็ตาม <ph name="CHROME_CLEANUP_NAME" /> จะถามผู้ใช้ว่าต้องการทำความสะอาดไหม แต่ไม่รายงานผลลัพธ์ให้ Google ทราบ
+
+      การไม่ตั้งค่านโยบายจะทำให้ <ph name="CHROME_CLEANUP_NAME" /> รายงานเกี่ยวกับการสแกนเพื่อตรวจหาซอฟต์แวร์ไม่พึงประสงค์ให้ Google ทราบ โดยเป็นไปตามนโยบายที่กำหนดไว้โดย <ph name="SAFE_BROWSING_EXTENDED_REPORTING_ENABLED_POLICY_NAME" /> <ph name="CHROME_CLEANUP_NAME" /> จะถามผู้ใช้ว่าต้องการทำความสะอาดไหม และต้องการแชร์ผลลัพธ์กับ Google เพื่อช่วยในการตรวจหาซอฟต์แวร์ไม่พึงประสงค์ในอนาคตไหม ผลลัพธ์จะมีข้อมูลเมตาของไฟล์ ส่วนขยายที่ติดตั้งอัตโนมัติ และคีย์รีจิสทรีตามที่อธิบายไว้ในสมุดปกขาวเรื่องความเป็นส่วนตัวของ Chrome
+
+      ใน <ph name="MS_WIN_NAME" /> ฟังก์ชันการทำงานนี้ใช้ได้เฉพาะในอินสแตนซ์ที่เข้าร่วมโดเมน <ph name="MS_AD_NAME" />, ทำงานใน Windows 10 Pro หรือลงทะเบียนใน<ph name="CHROME_BROWSER_CLOUD_MANAGEMENT_NAME" /></translation>
 <translation id="1290634681382861275">ควบคุมการตั้งค่าเบ็ดเตล็ด เช่น USB บลูทูธ การรีเฟรชนโยบาย โหมดนักพัฒนาซอฟต์แวร์ และอื่นๆ</translation>
 <translation id="1291880496936992484">คำเตือน: ระบบจะนำ RC4 ออกจาก <ph name="PRODUCT_NAME" /> โดยสมบูรณ์หลังจากเวอร์ชัน 52 (ประมาณเดือนกันยายน 2016) จากนั้นนโยบายนี้จะหยุดทำงาน
 
@@ -696,6 +708,9 @@
       หากไม่ได้ตั้งค่านโยบายหรือตั้งค่าเป็นรายการที่ว่างเปล่า อุปกรณ์ที่มีการจัดการจะใช้โหมดปลดล็อกด่วนใดๆ ไม่ได้เลย
 
       นโยบายนี้เลิกใช้งานไปแล้ว โปรดใช้ <ph name="QUICK_UNLOCK_MODE_ALLOW_LIST_POLICY_NAME" /> แทน</translation>
+<translation id="2033784678146670379">การตั้งค่านโยบายเป็น "เปิดใช้" ทำให้ผู้ใช้สามารถใช้ฮาร์ดแวร์ในอุปกรณ์ <ph name="PRODUCT_OS_NAME" /> เพื่อรับรองตัวตนจากระยะไกลไปยัง CA ความเป็นส่วนตัวผ่านทาง <ph name="ENTERPRISE_PLATFORM_KEYS_API" /> โดยใช้ <ph name="CHALLENGE_USER_KEY_FUNCTION" />
+
+      การตั้งค่านโยบายเป็น "ปิดใช้" หรือไม่ได้ตั้งค่าจะทำให้เรียกใช้ API ไม่สำเร็จและมีรหัสข้อผิดพลาด</translation>
 <translation id="2036522553891755455">การตั้งค่านโยบายเป็น "เปิดใช้" จะทำให้การสำรวจพื้นที่แชร์ (ฟีเจอร์พื้นที่แชร์ไฟล์ของเครือข่ายสำหรับ <ph name="PRODUCT_NAME" />) ใช้ <ph name="NETBIOS_PROTOCOL" /> เพื่อสำรวจพื้นที่แชร์ในเครือข่าย การตั้งค่านโยบายเป็น "ปิดใช้" จะทำให้การสำรวจพื้นที่แชร์ไม่ใช้โปรโตคอลนี้ในการสำรวจพื้นที่แชร์
 
       การไม่ตั้งค่านโยบายจะทำให้ลักษณะการทำงานตามค่าเริ่มต้นเป็น "ปิด" สำหรับผู้ใช้ที่มีการจัดการและเป็น "เปิด" สำหรับผู้ใช้อื่นๆ</translation>
@@ -725,6 +740,9 @@
 <translation id="2082205219176343977">กำหนดค่าเวอร์ชัน Chrome ขั้นต่ำที่อุปกรณ์จะใช้ได้</translation>
 <translation id="208566302163036794">บล็อกฟีเจอร์ที่ปิดใช้</translation>
 <translation id="208623333578980446">อนุญาต Wake Lock สำหรับหน้าจอเพื่อการจัดการพลังงาน</translation>
+<translation id="2090939118981888335">การตั้งค่านโยบายเป็น "เปิดใช้" จะทำให้พร็อกซีการบีบอัดข้อมูลทำงาน การตั้งค่านโยบายเป็น "ปิดใช้" จะทำให้พร็อกซีไม่ทำงาน
+
+      หากคุณตั้งค่านโยบายไว้ ผู้ใช้จะเปลี่ยนไม่ได้ หากไม่ได้ตั้งค่า ผู้ใช้จะเลือกใช้ฟีเจอร์ได้</translation>
 <translation id="209586405398070749">เวอร์ชันเสถียร</translation>
 <translation id="2098658257603918882">เปิดใช้งานการรายงานการใช้และข้อมูลเกี่ยวกับการขัดข้อง</translation>
 <translation id="2104418465060359056">รายงานข้อมูลเกี่ยวกับส่วนขยายและปลั๊กอิน</translation>
@@ -1132,6 +1150,9 @@
       การตั้งค่านโยบายเป็น "ปิดใช้" หรือไม่ตั้งค่าจะทำให้การแนะนำดังกล่าวไม่ปรากฏขึ้น
 
       หากตั้งค่านโยบายนี้ไว้ ผู้ใช้จะเปลี่ยนแปลงไม่ได้</translation>
+<translation id="2724313944474873275">การตั้งค่านโยบายเป็น "เปิดใช้" หรือไม่ตั้งค่าจะทำให้อุปกรณ์ <ph name="PRODUCT_OS_NAME" /> สามารถใช้เอกสารรับรองระยะไกล (การเข้าถึงที่ยืนยันแล้ว) เพื่อรับใบรับรองที่ออกโดย CA ของ <ph name="PRODUCT_OS_NAME" /> ซึ่งยืนยันว่าอุปกรณ์มีสิทธิ์เล่นเนื้อหาที่มีการคุ้มครอง กระบวนการนี้มีการส่งข้อมูลการรับรองฮาร์ดแวร์ไปยัง CA ของ <ph name="PRODUCT_OS_NAME" /> ที่ระบุอุปกรณ์โดยไม่ซ้ำกัน
+
+      การตั้งค่านโยบายเป็น "ปิดใช้" จะทำให้อุปกรณ์ไม่ใช้เอกสารรับรองระยะไกลกับการปกป้องเนื้อหาและอาจไม่เล่นเนื้อหาที่มีการคุ้มครอง</translation>
 <translation id="2725855586003209701">การตั้งค่านโยบายเป็น "เปิดใช้" หรือไม่ได้ตั้งค่าจะทำให้อุปกรณ์ที่ลงทะเบียนไว้รายงานรายชื่อผู้ใช้อุปกรณ์ที่ลงชื่อเข้าใช้เมื่อเร็วๆ นี้
 
       การตั้งค่านโยบายเป็น "ปิดใช้" จะทำให้อุปกรณ์ที่ลงทะเบียนไว้ไม่รายงานรายชื่อผู้ใช้</translation>
@@ -2099,6 +2120,13 @@
 <translation id="4089849819635523136">หาก <ph name="DEFAULT_SEARCH_PROVIDER_ENABLED_POLICY_NAME" /> เปิดอยู่ การตั้งค่า <ph name="DEFAULT_SEARCH_PROVIDER_KEYWORD_POLICY_NAME" /> จะระบุคีย์เวิร์ดหรือทางลัดที่ใช้ในแถบที่อยู่เพื่อทริกเกอร์การค้นหาสำหรับผู้ให้บริการรายนี้
 
       หากไม่ตั้งค่า <ph name="DEFAULT_SEARCH_PROVIDER_KEYWORD_POLICY_NAME" /> จะไม่มีคีย์เวิร์ดใดเลยที่เปิดใช้งานผู้ให้บริการค้นหาดังกล่าว</translation>
+<translation id="409035987613226003">การตั้งค่านโยบายเป็น "เปิดใช้" จะเปิดใช้การรายงานแบบไม่ระบุชื่อของข้อมูลที่เกี่ยวข้องกับการใช้งานและข้อขัดข้องเกี่ยวกับ Chrome ไปยัง Google และป้องกันไม่ให้ผู้ใช้เปลี่ยนการตั้งค่านี้ การตั้งค่านโยบายเป็น "ปิดใช้" จะทำให้ระบบไม่ส่งข้อมูลนี้ไปยัง Google
+
+      หากคุณตั้งค่านโยบายไว้ ผู้ใช้จะเปลี่ยนไม่ได้ หากไม่ได้ตั้งค่า ผู้ใช้จะเลือกลักษณะการทำงานเมื่อทำการติดตั้งหรือเรียกใช้ครั้งแรกได้
+
+      นโยบายนี้ใช้ได้เฉพาะในอินสแตนซ์ Windows ซึ่งเข้าร่วมโดเมน <ph name="MS_AD_NAME" /> หรืออินสแตนซ์ Windows 10 Pro หรือ Enterprise ที่เข้าร่วมการจัดการอุปกรณ์ และอินสแตนซ์ macOS ที่ได้รับการจัดการผ่าน MDM หรือเข้าร่วมโดเมนผ่าน MCX
+
+      (สำหรับ Chrome OS โปรดดู DeviceMetricsReportingEnabled)</translation>
 <translation id="4097556069183835428">การตั้งค่านโยบายเป็น "ไม่มี" จะปิดแว่นขยายหน้าจอ
 
 หากคุณตั้งค่านโยบายนี้ ผู้ใช้จะเปลี่ยนไม่ได้ หากไม่ได้ตั้งค่า แว่นขยายหน้าจอจะปิดอยู่ในตอนแรก แต่ผู้ใช้จะเปิดได้ทุกเมื่อ</translation>
@@ -2462,6 +2490,9 @@
 <translation id="4725528134735324213">เปิดใช้ Android Backup Service</translation>
 <translation id="4725801978265372736">กำหนดให้ชื่อผู้ใช้ในเครื่องและเจ้าของโฮสต์การเข้าถึงระยะไกลต้องตรงกัน</translation>
 <translation id="4733471537137819387">นโยบายที่เกี่ยวข้องกับการตรวจสอบสิทธิ์ HTTP ในตัว</translation>
+<translation id="4735099388031364207">การตั้งค่านโยบายเป็น "เปิดใช้" จะทำใช้เอกสารรับรองระยะไกลกับอุปกรณ์ได้ ระบบจะสร้างใบรับรองโดยอัตโนมัติแล้วอัปโหลดไปยังเซิร์ฟเวอร์การจัดการอุปกรณ์โดยอัตโนมัติ
+
+      การตั้งค่านโยบายเป็น "ปิดใช้" หรือไม่ได้ตั้งค่าจะทำให้ไม่มีการสร้างใบรับรองและเรียกใช้ <ph name="ENTERPRISE_PLATFORM_KEYS_API" /> ไม่สำเร็จ</translation>
 <translation id="4742973303930120836">จำกัดโหมดการพิมพ์กราฟิกพื้นหลัง</translation>
 <translation id="4752880493649142945">ใบรับรองไคลเอ็นต์สำหรับการเชื่อมต่อกับ RemoteAccessHostTokenValidationUrl</translation>
 <translation id="4757053978738874325">เปิดใช้ฟีเจอร์การช่วยเหลือพิเศษสำหรับเสียงโมโน
@@ -2548,6 +2579,11 @@
 <translation id="489803897780524242">พารามิเตอร์ที่ควบคุมตำแหน่งข้อความค้นหาสำหรับผู้ให้บริการค้นหาในค่าเริ่มต้น</translation>
 <translation id="4899708173828500852">เปิดใช้ Google Safe Browsing</translation>
 <translation id="4906194810004762807">อัตราการรีเฟรชสำหรับนโยบายอุปกรณ์</translation>
+<translation id="49093841899738146">หากตั้งค่านโยบายนี้เป็น "เปิดใช้" จะทำให้ <ph name="PRODUCT_NAME" /> รวบรวมบันทึกเหตุการณ์ WebRTC จากบริการของ Google เช่น Hangouts Meet และอัปโหลดบันทึกไปยัง Google ได้ บันทึกเหล่านี้มีข้อมูลการวินิจฉัยสำหรับแก้ไขข้อบกพร่องเกี่ยวกับการประชุมด้วยเสียงหรือการประชุมทางวิดีโอใน <ph name="PRODUCT_NAME" /> เช่น เวลาและขนาดของแพ็กเก็ต RTP, ผลป้อนกลับเกี่ยวกับความหนาแน่นในเครือข่าย ตลอดจนข้อมูลเมตาเกี่ยวกับระยะเวลาและคุณภาพของเสียงและเฟรมของวิดีโอ บันทึกเหล่านี้ไม่มีเนื้อหาเสียงหรือวิดีโอจากการประชุม เพื่อให้แก้ไขข้อบกพร่องได้ง่ายขึ้น Google อาจเชื่อมโยงบันทึกเหล่านี้ (โดยใช้รหัสเซสชัน) กับบันทึกอื่นๆ ที่บริการของ Google รวบรวมไว้เอง
+
+      การตั้งค่านโยบายนี้เป็น "ปิดใช้" จะส่งผลให้ไม่มีการรวบรวมหรืออัปโหลดบันทึกดังกล่าว
+
+      หากไม่ได้ตั้งค่านโยบายนี้ในเวอร์ชันตั้งแต่ M76 ลงมา โดยค่าเริ่มต้นของ <ph name="PRODUCT_NAME" /> จะรวบรวมหรืออัปโหลดบันทึกเหล่านี้ไม่ได้ เริ่มตั้งแต่เวอร์ชัน M77 ขึ้นไป ค่าเริ่มต้นของ <ph name="PRODUCT_NAME" /> จะรวบรวมและอัปโหลดบันทึกเหล่านี้ได้จากโปรไฟล์ส่วนใหญ่ที่ได้รับผลกระทบจากนโยบายองค์กรในระดับผู้ใช้บนระบบคลาวด์ ตั้งแต่เวอร์ชัน M77 ขึ้นไปจนถึงเวอร์ชัน M80 โดยค่าเริ่มต้น <ph name="PRODUCT_NAME" /> จะรวบรวมและอัปโหลดบันทึกเหล่านี้ได้จากโปรไฟล์ที่ได้รับผลกระทบจากการจัดการภายในองค์กรของ <ph name="PRODUCT_NAME" /></translation>
 <translation id="4910101362791876581">ระบุเครื่องพิมพ์ที่ผู้ใช้จะใช้ได้
 
       นโยบายนี้ใช้ในกรณีที่มีการเลือก <ph name="PRINTERS_WHITELIST" /> สำหรับ <ph name="DEVICE_PRINTERS_ACCESS_MODE_POLICY_NAME" />
@@ -2559,6 +2595,9 @@
 <translation id="4917385247580444890">แรง</translation>
 <translation id="4919122295221518724">เปิดใช้การดูแลที่เข้มงวดขึ้นสำหรับเนื้อหาผสม</translation>
 <translation id="4923806312383904642">อนุญาตให้ WebDriver ลบล้างนโยบายที่ใช้งานร่วมกันไม่ได้</translation>
+<translation id="4927214690104703256">การตั้งค่านโยบายจะกำหนดส่วนขยายที่ใช้ฟังก์ชันการทำงาน <ph name="ENTERPRISE_PLATFORM_KEYS_API" /> สำหรับเอกสารรับรองระยะไกลได้ ส่วนขยายต้องอยู่ในรายการนี้เพื่อใช้ API ดังกล่าว
+
+      หากส่วนขยายใดไม่อยู่ในรายการหรือไม่มีการตั้งค่ารายการไว้ จะเรียกใช้ API ไม่สำเร็จและมีรหัสข้อผิดพลาด</translation>
 <translation id="4927797103413916381">หาก <ph name="SAFE_BROWSING_ENABLED_POLICY_NAME" /> ไม่ได้ตั้งค่าเป็น "ปิดใช้" การตั้งค่า <ph name="ABUSIVE_EXPERIENCE_INTERVENTION_ENFORCE_POLICY_NAME" /> เป็น "เปิดใช้" หรือการไม่ตั้งค่าก็จะป้องกันไม่ให้เว็บไซต์ที่มีประสบการณ์การใช้งานที่ไม่เหมาะสมเปิดหน้าต่างหรือแท็บใหม่
 
        การตั้งค่า <ph name="SAFE_BROWSING_ENABLED_POLICY_NAME" /> หรือ <ph name="ABUSIVE_EXPERIENCE_INTERVENTION_ENFORCE_POLICY_NAME" /> เป็น "ปิดใช้" จะอนุญาตให้เว็บไซต์ที่มีประสบการณ์การใช้งานที่ไม่เหมาะสมเปิดหน้าต่างหรือแท็บใหม่</translation>
@@ -2668,6 +2707,13 @@
 <translation id="5090209345759901501">ขยายการตั้งค่าเนื้อหา Flash ไปยังเนื้อหาทั้งหมด</translation>
 <translation id="5090791951240382356">อนุญาตให้รวมนโยบายพจนานุกรมจากแหล่งที่มาต่างๆ</translation>
 <translation id="5091315650312105069">อนุญาตการตรวจสอบสิทธิ์<ph name="BASIC_AUTH" />สำหรับ HTTP</translation>
+<translation id="5103112931744164177">นโยบายนี้ควบคุมกลุ่มซอฟต์แวร์ที่จะใช้เพื่อสื่อสารกับเซิร์ฟเวอร์ DNS ซึ่งได้แก่ ไคลเอ็นต์ DNS ของระบบปฏิบัติการ หรือไคลเอ็นต์ DNS ในตัวของ <ph name="PRODUCT_NAME" /> นโยบายนี้ไม่มีผลกับเซิร์ฟเวอร์ DNS ที่จะใช้ เช่น หากมีการกำหนดค่าให้ระบบปฏิบัติการใช้เซิร์ฟเวอร์ DNS ขององค์กร ไคลเอ็นต์ DNS ในตัวก็จะใช้เซิร์ฟเวอร์เดียวกันนี้ด้วย นอกจากนี้ นโยบายยังไม่ได้ควบคุมว่าจะใช้ DNS-over-HTTPS หรือไม่ <ph name="PRODUCT_NAME" /> จะใช้รีโซลเวอร์ในตัวเมื่อมีคำขอ DNS-over-HTTPS เสมอ โปรดดูข้อมูลเกี่ยวกับการควบคุม DNS-over-HTTPS ในนโยบาย <ph name="DNS_OVER_HTTPS_MODE_POLICY_NAME" />
+
+      หากตั้งค่านโยบายนี้เป็น "เปิดใช้" ระบบจะใช้ไคลเอ็นต์ DNS ในตัว (หากมี)
+
+      หากตั้งค่านโยบายนี้เป็น "ปิดใช้" จะมีการใช้ไคลเอ็นต์ DNS ในตัวเฉพาะเมื่อมีการใช้งาน DNS-over-HTTPS อยู่เท่านั้น
+
+      หากไม่มีการตั้งค่านโยบายนี้ ไคลเอ็นต์ DNS ในตัวจะเปิดใช้โดยค่าเริ่มต้นใน <ph name="MAC_OS_NAME" />, <ph name="ANDROID_NAME" /> (เมื่อปิดใช้ทั้ง DNS ส่วนตัวและ VPN) และ <ph name="PRODUCT_OS_NAME" /></translation>
 <translation id="5105313908130842249">ระยะหน่วงเวลาการล็อกหน้าจอเมื่อทำงานโดยใช้พลังงานแบตเตอรี่</translation>
 <translation id="5108031557082757679">เครื่องพิมพ์สำหรับอุปกรณ์ขององค์กรที่มีการปิดใช้</translation>
 <translation id="5109383437323376357">กำหนดความพร้อมใช้งานของรูปแบบต่างๆ</translation>
@@ -3539,6 +3585,11 @@
 
       หากไม่ได้ตั้งค่านโยบายนี้หรือรายการยังว่างอยู่ รูปแบบทั้งหมดจะเข้าถึงได้ใน <ph name="PRODUCT_NAME" /></translation>
 <translation id="6338982178236723271">รายงานข้อมูลระบบ</translation>
+<translation id="6347363725343851058">การตั้งค่านโยบายเป็น "เปิดใช้" จะเปิดใช้โหมดเบื้องหลัง ในโหมดเบื้องหลัง การประมวลผลของ <ph name="PRODUCT_NAME" /> จะเริ่มต้นเมื่อมีการลงชื่อเข้าใช้ระบบปฏิบัติการและจะยังทำงานต่อไปเมื่อมีการปิดหน้าต่างเบราว์เซอร์สุดท้าย ซึ่งทำให้แอปในเบื้องหลังและเซสชันการท่องเว็บทำงานอยู่ รวมถึงคุกกี้ของเซสชันด้วย การประมวลผลในเบื้องหลังจะแสดงไอคอนในถาดระบบและปิดได้ทุกเมื่อจากตำแหน่งดังกล่าว
+
+      การตั้งค่านโยบายเป็น "ปิดใช้" จะปิดใช้โหมดเบื้องหลัง
+
+      หากคุณตั้งค่านโยบายไว้ ผู้ใช้จะเปลี่ยนในการตั้งค่าเบราว์เซอร์ไม่ได้ หากไม่ได้ตั้งค่า โหมดเบื้องหลังจะปิดอยู่ในตอนแรก แต่ผู้ใช้เปลี่ยนการตั้งค่าได้</translation>
 <translation id="6353890097388312479">การตั้งค่านโยบายเป็น "All" (0) หรือไม่ได้ตั้งค่าจะทำให้ผู้ใช้สามารถแก้ไขการตั้งค่าความน่าเชื่อถือของใบรับรอง CA ทั้งหมด ลบใบรับรองที่ผู้ใช้นำเข้า และนำเข้าใบรับรองโดยใช้ตัวจัดการใบรับรองได้ การตั้งค่านโยบายเป็น "UserOnly" (1) ทำให้ผู้ใช้จัดการได้เฉพาะใบรับรองที่ผู้ใช้นำเข้า และจะเปลี่ยนแปลงการตั้งค่าความน่าเชื่อถือของใบรับรองในเครื่องไม่ได้ การตั้งค่าเป็น "None" (2) ทำให้ผู้ใช้ดูใบรับรอง CA ได้ (จัดการไม่ได้)</translation>
 <translation id="6362856770865555544">การตั้งค่านโยบายเป็น "เปิดใช้" หรือไม่ตั้งค่าจะเปิดการเพิ่มประสิทธิภาพ WPAD (Web Proxy Auto-Discovery) ใน <ph name="PRODUCT_NAME" />
 
@@ -3864,6 +3915,9 @@
 <translation id="6815483833848348029">การตั้งค่านโยบายเป็น "เปิดใช้" หรือไม่ได้ตั้งค่าหมายความว่า เมื่ออุปกรณ์ออฟไลน์ หากบัญชีในอุปกรณ์มีการตั้งค่าเป็นลงชื่อเข้าใช้โดยอัตโนมัติด้วยความล่าช้าเป็น 0 <ph name="PRODUCT_OS_NAME" /> จะแสดงข้อความแจ้งการกำหนดค่าเครือข่าย
 
       การตั้งค่านโยบายเป็น "ปิดใช้" จะมีข้อความแสดงข้อผิดพลาดขึ้นมาแทน</translation>
+<translation id="6819838337315703072">หากเปิดใช้การสนับสนุนสำหรับแอป <ph name="LINUX_OS_NAME" /> การตั้งค่านโยบายเป็น "เปิดใช้" จะส่งข้อมูลเกี่ยวกับการใช้งานแอป <ph name="LINUX_OS_NAME" /> กลับไปที่เซิร์ฟเวอร์
+
+      การตั้งค่านโยบายเป็น "ปิดใช้" หรือไม่ตั้งค่าจะทำให้ไม่มีการรายงานข้อมูลการใช้งาน</translation>
 <translation id="6821268164692776674">ปลายทาง <ph name="CLOUD_PRINT_NAME" /> และ "บันทึกลงใน Google ไดรฟ์"</translation>
 <translation id="6823711520976094072">การตั้งค่าต่ำกว่า 1 MB หรือไม่ได้ตั้งค่าจะทำให้ <ph name="PRODUCT_OS_NAME" /> ใช้ขนาดเริ่มต้นซึ่งก็คือ 256 เมบิไบต์สำหรับการแคชแอปและส่วนขยายสำหรับการติดตั้งโดยผู้ใช้หลายคนในอุปกรณ์เดียว เพื่อที่จะได้ไม่ต้องดาวน์โหลดใหม่ทุกครั้งสำหรับผู้ใช้แต่ละคน</translation>
 <translation id="682408981080798691">การตั้งค่านโยบายเป็น "เปิดใช้" หรือไม่ได้ตั้งค่าจะเปิดฟีเจอร์ความสมบูรณ์ของโค้ดในการแสดงผล
@@ -3903,6 +3957,9 @@
 
       นโยบายนี้เลิกใช้งานไปแล้ว โปรดใช้ <ph name="PRINTING_API_EXTENSIONS_ALLOWLIST_POLICY_NAME" /> แทน</translation>
 <translation id="684856667300805181">เราได้นำนโยบายนี้ออกจาก <ph name="PRODUCT_NAME" /> 68 และใช้ <ph name="ARC_GLS_POLICY_NAME" /> แทน</translation>
+<translation id="6848721032946289937">การตั้งค่านโยบายเป็น "เปิดใช้" หรือไม่ตั้งค่าจะเปิดใช้การเร่งฮาร์ดแวร์ (หากมี)
+
+      การตั้งค่านโยบายเป็น "ปิดใช้" จะปิดการเร่งฮาร์ดแวร์</translation>
 <translation id="6851199885688265233">เปิดใช้ฟีเจอร์การช่วยเหลือพิเศษสำหรับการไฮไลต์เคอร์เซอร์</translation>
 <translation id="6851315055469993882">เปิดใช้แคชการตรวจสอบสิทธิ์ HTTP ที่มีขอบเขตทั่วไป</translation>
 <translation id="6854767649023671426">เมื่อตั้งค่านโยบายเป็น "เปิดใช้" หรือไม่ได้ตั้งค่า ผู้ใช้จะได้รับข้อความแจ้งหากมีการเข้าถึงการจับภาพวิดีโอ ยกเว้นใน URL ที่ตั้งค่าไว้ในรายการ VideoCaptureAllowedUrls
@@ -4050,6 +4107,9 @@
 <translation id="7027785306666625591">กำหนดค่าการจัดการพลังงานใน <ph name="PRODUCT_OS_NAME" />
 
       นโยบายเหล่านี้ช่วยให้คุณกำหนดพฤติกรรมของ <ph name="PRODUCT_OS_NAME" /> เมื่อผู้ใช้ไม่มีการใช้งานในช่วงระยะเวลาหนึ่งได้</translation>
+<translation id="7027923238554618852">การตั้งค่านโยบายจะสั่งให้ <ph name="PRODUCT_OS_NAME" /> ใช้การกำหนดค่าเครื่องจัดตารางเวลางานที่ระบุโดยชื่อที่เจาะจง นโยบายนี้จะตั้งค่าเป็น <ph name="CONSERVATIVE_VALUE" /> หรือ <ph name="PERFORMANCE_VALUE" /> ก็ได้ ซึ่งจะปรับแต่งเครื่องจัดตารางเวลางานเพื่อความเสถียรหรือประสิทธิภาพสูงสุดตามลำดับ
+
+      หากไม่ได้ตั้งค่า ผู้ใช้จะเลือกการตั้งค่าเองได้</translation>
 <translation id="7030205756530739128">หากตั้งค่า <ph name="DEVICE_BATTERY_CHARGE_MODE_NAME" /> เป็น <ph name="DEVICE_BATTERY_CHARGE_CUSTOM_MODE_NAME" /> การตั้งค่า <ph name="DEVICE_BATTERY_CHARGE_CUSTOM_START_CHARGING_POLICY_NAME" /> จะปรับแต่งเวลาที่แบตเตอรี่เริ่มชาร์จ โดยอิงตามเปอร์เซ็นต์ของการชาร์จแบตเตอรี่ ค่านี้ต้องอยู่ที่จุดต่ำกว่า <ph name="DEVICE_BATTERY_CHARGE_CUSTOM_STOP_CHARGING_POLICY_NAME" /> อย่างน้อย 5%
 
       การไม่ตั้งค่านโยบายจะทำให้มีการใช้โหมดการชาร์จแบตเตอรี่แบบมาตรฐาน</translation>
@@ -4178,6 +4238,11 @@
 <translation id="718126088895133062">นโยบายนี้ระบุ User ID การอนุญาตให้ใช้สิทธิของ <ph name="PLUGIN_VM_NAME" /> สำหรับอุปกรณ์นี้</translation>
 <translation id="7185078796915954712">TLS 1.3</translation>
 <translation id="7185630966939835143">ใช้บริการเว็บของ Google เพื่อช่วยแก้ไขข้อผิดพลาดของการสะกดคำ</translation>
+<translation id="718850220532931090">นโยบายนี้เลิกใช้งานไปแล้ว โปรดใช้ <ph name="ATTESTATION_EXTENSION_ALLOWLIST_POLICY_NAME" /> แทน
+
+      การตั้งค่านโยบายจะกำหนดส่วนขยายที่สามารถใช้ฟังก์ชันการทำงาน <ph name="CHALLENGE_USER_KEY_FUNCTION" /> ของ <ph name="ENTERPRISE_PLATFORM_KEYS_API" /> สำหรับเอกสารรับรองระยะไกล ส่วนขยายต้องอยู่ในรายการนี้เพื่อใช้ API ดังกล่าว
+
+      หากส่วนขยายใดไม่อยู่ในรายการหรือไม่มีการตั้งค่ารายการไว้ จะเรียกใช้ API ไม่สำเร็จและมีรหัสข้อผิดพลาด</translation>
 <translation id="718956142899066210">ประเภทการเชื่อมต่อที่อนุญาตสำหรับการอัปเดต</translation>
 <translation id="7190286937411178540">เปิดใช้ฟีเจอร์การช่วยเหลือพิเศษสำหรับการไฮไลต์โฟกัสของแป้นพิมพ์</translation>
 <translation id="7193489339723768342">การตั้งค่านโยบายนี้เป็นการระบุรายการ URL ที่จะมีการจับคู่รูปแบบกับต้นทางการรักษาความปลอดภัยของ URL ที่ขอ หากรูปแบบตรงกัน ระบบจะให้สิทธิ์เข้าถึงอุปกรณ์จับเสียงโดยไม่แสดงข้อความแจ้ง
@@ -4974,6 +5039,9 @@
 <translation id="8357681633047935212">จำกัดระยะเวลาเซสชันของผู้ใช้</translation>
 <translation id="8357989008292691856">รายชื่อผู้ใช้ที่อนุญาตให้เข้าสู่ระบบ</translation>
 <translation id="8359734107661430198">เปิดใช้ ExampleDeprecatedFeature API ได้ถึง 02/09/2008</translation>
+<translation id="8367069206652407172">การตั้งค่านโยบายเป็น "ปิดใช้" จะป้องกันไม่ให้ผู้ใช้หยุดกระบวนการในตัวจัดการงาน
+
+      การตั้งค่านโยบายเป็น "เปิดใช้" หรือไม่ตั้งค่าจะทำให้ผู้ใช้หยุดกระบวนการในตัวจัดการงานได้</translation>
 <translation id="8367209241899435947">เปิดใช้การทำความสะอาด Chrome ใน Windows</translation>
 <translation id="8367473200119029349">การรายงานในระบบคลาวด์</translation>
 <translation id="8369602308428138533">ระยะหน่วงเวลาการปิดหน้าจอเมื่อทำงานโดยใช้ไฟ AC</translation>
diff --git a/components/policy/resources/policy_templates_zh-CN.xtb b/components/policy/resources/policy_templates_zh-CN.xtb
index 05c27ce..8113841 100644
--- a/components/policy/resources/policy_templates_zh-CN.xtb
+++ b/components/policy/resources/policy_templates_zh-CN.xtb
@@ -1471,7 +1471,7 @@
 
       如果您未设置此政策,<ph name="PRODUCT_NAME" /> 便会加载已安装的所有本地消息传递主机。</translation>
 <translation id="3211426942294667684">浏览器登录设置</translation>
-<translation id="3219421230122020860">隐身模式已启用</translation>
+<translation id="3219421230122020860">可使用无痕模式</translation>
 <translation id="3220624000494482595">如果自助服务终端应用是一款 Android 应用,它将无法控制 <ph name="PRODUCT_OS_NAME" />版本,即使此政策设为 <ph name="TRUE" /> 也是如此。</translation>
 <translation id="322359555555487980">确定变体在 <ph name="PRODUCT_OS_NAME" />中的可用情况</translation>
 <translation id="3231837273069128027">通过设置此政策,您可以配置 <ph name="TPM_FIRMWARE_UPDATE_TPM" /> 固件更新的可用性和行为。
@@ -2835,7 +2835,7 @@
 
       如果您未设置此政策,使用快速解锁功能的用户需要每天在锁定屏幕上输入其密码一次。</translation>
 <translation id="5306186200045823863">信任 Symantec Corporation 的旧版 PKI 基础架构</translation>
-<translation id="5307432759655324440">隐身模式的可用性</translation>
+<translation id="5307432759655324440">无痕模式的可用性</translation>
 <translation id="5311275381462687162">默认旧版 <ph name="ATTRIBUTE_SAMESITE_NAME" /> Cookie 行为设置</translation>
 <translation id="5315367501385698459">通过设置此政策,您可以罗列一些网址格式,从而指定自动授权哪些网站在登录屏幕上访问具有给定供应商 ID 和产品 ID 的 USB 设备。列表中的每项内容都必须同时包含“<ph name="DEVICES_FIELD_NAME" />”和“<ph name="URLS_FIELD_NAME" />”字段,此政策才有效。“<ph name="DEVICES_FIELD_NAME" />”字段中的每项内容都可以包含“<ph name="VENDOR_ID_FIELD_NAME" />”和“<ph name="PRODUCT_ID_FIELD_NAME" />”字段。如果您省略“<ph name="VENDOR_ID_FIELD_NAME" />”字段,系统将会创建一项与所有设备都匹配的政策。如果您省略“<ph name="PRODUCT_ID_FIELD_NAME" />”字段,系统将会创建一项与所有具有给定供应商 ID 的设备都匹配的政策。包含“<ph name="PRODUCT_ID_FIELD_NAME" />”字段但不含“<ph name="VENDOR_ID_FIELD_NAME" />”字段的政策无效。
 
diff --git a/components/policy/resources/policy_templates_zh-TW.xtb b/components/policy/resources/policy_templates_zh-TW.xtb
index 46aaac0..66cfa614 100644
--- a/components/policy/resources/policy_templates_zh-TW.xtb
+++ b/components/policy/resources/policy_templates_zh-TW.xtb
@@ -1137,7 +1137,7 @@
       如果將這項政策設為停用或不設定,這類建議不會顯示。
 
       如果設定這項政策,使用者將無法變更設定。</translation>
-<translation id="2724313944474873275">如果將這項政策設為啟用或不設定,<ph name="PRODUCT_OS_NAME" />裝置將可使用遠端認證 (已驗證存取權),取得由 <ph name="PRODUCT_OS_NAME" />憑證授權單位核發的憑證,聲明該裝置有資格播放受保護的內容。在這項程序中,必須將可準確識別裝置的硬體背書資訊傳送給 <ph name="PRODUCT_OS_NAME" />憑證授權單位。
+<translation id="2724313944474873275">如果將這項政策設為啟用或不設定,<ph name="PRODUCT_OS_NAME" />裝置將可使用遠端認證 (已驗證存取權),取得由 <ph name="PRODUCT_OS_NAME" />憑證授權單位核發的憑證,聲明該裝置有資格播放受保護的內容。在這項程序中,必須將可準確識別裝置的硬體簽署資訊傳送給 <ph name="PRODUCT_OS_NAME" />憑證授權單位。
 
       如果將這項政策設為停用,則裝置不會使用遠端認證來保護內容,也無法播放受保護的內容。</translation>
 <translation id="2725855586003209701">如果將這項政策設為啟用或不設定,已註冊的裝置會回報近期登入的裝置使用者清單。
@@ -2098,7 +2098,7 @@
 <translation id="4089849819635523136">如果已啟用 <ph name="DEFAULT_SEARCH_PROVIDER_ENABLED_POLICY_NAME" /> 政策,你可以設定 <ph name="DEFAULT_SEARCH_PROVIDER_KEYWORD_POLICY_NAME" /> 政策來指定關鍵字或快速鍵,之後就可以在網址列中輸入內容搜尋這個搜尋引擎。
 
       如果未設定 <ph name="DEFAULT_SEARCH_PROVIDER_KEYWORD_POLICY_NAME" /> 政策,沒有任何關鍵字會啟動搜尋引擎。</translation>
-<translation id="409035987613226003">如果將這項政策設為停用,系統會以匿名方式將 Chrome 的使用情況和當機相關資料回報給 Google,並禁止使用者變更這項設定。如果將這項政策設為停用,則系統不會將這些資訊傳送給 Google。
+<translation id="409035987613226003">如果將這項政策設為啟用,系統會以匿名方式將 Chrome 的使用情況和當機相關資料回報給 Google,並禁止使用者變更這項設定。如果將這項政策設為停用,則系統不會將這些資訊傳送給 Google。
 
       如果設定這項政策,使用者將無法變更設定。如果不設定,使用者可在安裝或初次執行 Chrome 時指定相關行為。
 
@@ -2560,7 +2560,7 @@
 
       如果將這項政策設為停用,則系統不會收集或上傳這類記錄。
 
-      如果不設定這項政策,<ph name="PRODUCT_NAME" /> M76 以下版本預設將無法收集與上傳這類記錄。自 M77 版起,針對大多數適用雲端式使用者層級企業政策的工作夾,<ph name="PRODUCT_NAME" /> 預設可收集與上傳這類記錄。從 M77 版到 M80 版,針對適用 <ph name="PRODUCT_NAME" /> 內部部署管理設定的工作夾,<ph name="PRODUCT_NAME" /> 預設也可收集與上傳這類記錄。</translation>
+      如果不設定這項政策,<ph name="PRODUCT_NAME" /> M76 以下版本預設將無法收集與上傳這類記錄。自 M77 版起,針對大多數適用雲端式使用者層級企業政策的工作資料夾,<ph name="PRODUCT_NAME" /> 預設可收集與上傳這類記錄。從 M77 版到 M80 版,針對適用 <ph name="PRODUCT_NAME" /> 內部部署管理設定的工作資料夾,<ph name="PRODUCT_NAME" /> 預設也可收集與上傳這類記錄。</translation>
 <translation id="4910101362791876581">指定可供使用的印表機。
 
       只有在為 <ph name="DEVICE_PRINTERS_ACCESS_MODE_POLICY_NAME" /> 選擇 <ph name="PRINTERS_WHITELIST" /> 的情況下,系統才會使用這項政策
diff --git a/components/safe_browsing/core/common/safe_browsing_prefs.cc b/components/safe_browsing/core/common/safe_browsing_prefs.cc
index 6ee7328..e210755 100644
--- a/components/safe_browsing/core/common/safe_browsing_prefs.cc
+++ b/components/safe_browsing/core/common/safe_browsing_prefs.cc
@@ -71,6 +71,8 @@
 const char kSafeBrowsingEnhanced[] = "safebrowsing.enhanced";
 const char kSafeBrowsingEnterpriseRealTimeUrlCheckMode[] =
     "safebrowsing.enterprise_real_time_url_check_mode";
+const char kSafeBrowsingEnterpriseRealTimeUrlCheckScope[] =
+    "safebrowsing.enterprise_real_time_url_check_scope";
 const char kSafeBrowsingExtendedReportingOptInAllowed[] =
     "safebrowsing.extended_reporting_opt_in_allowed";
 const char kSafeBrowsingIncidentsSent[] = "safebrowsing.incidents_sent";
@@ -213,6 +215,8 @@
   registry->RegisterIntegerPref(
       prefs::kSafeBrowsingEnterpriseRealTimeUrlCheckMode,
       REAL_TIME_CHECK_DISABLED);
+  registry->RegisterIntegerPref(
+      prefs::kSafeBrowsingEnterpriseRealTimeUrlCheckScope, 0);
   registry->RegisterInt64Pref(prefs::kSafeBrowsingMetricsLastLogTime, 0);
 }
 
diff --git a/components/safe_browsing/core/common/safe_browsing_prefs.h b/components/safe_browsing/core/common/safe_browsing_prefs.h
index 6df1d10..45e837b5 100644
--- a/components/safe_browsing/core/common/safe_browsing_prefs.h
+++ b/components/safe_browsing/core/common/safe_browsing_prefs.h
@@ -30,6 +30,10 @@
 // enterprise policy.
 extern const char kSafeBrowsingEnterpriseRealTimeUrlCheckMode[];
 
+// Integer indicating the scope at which the
+// kSafeBrowsingEnterpriseRealTimeUrlCheckMode pref is set.
+extern const char kSafeBrowsingEnterpriseRealTimeUrlCheckScope[];
+
 // Boolean that tells us whether users are given the option to opt in to Safe
 // Browsing extended reporting. This is exposed as a preference that can be
 // overridden by enterprise policy.
diff --git a/components/search_engines/prepopulated_engines.json b/components/search_engines/prepopulated_engines.json
index 57a376d..7c1938aad 100644
--- a/components/search_engines/prepopulated_engines.json
+++ b/components/search_engines/prepopulated_engines.json
@@ -208,7 +208,7 @@
       "alternate_urls": [
         "https://m.sogou.com/web/{google:pathWildcard}?ie={inputEncoding}&keyword={searchTerms}"
       ],
-      "suggest_url": "http://api.sugg.sogou.com/su?type=addrbar&key={searchTerms}&ie={inputEncoding}",
+      "suggest_url": "https://sugg.sogou.com/sugg/ajaj_json.jsp?type=addrbar&key={searchTerms}&ie={inputEncoding}&from=google",
       "type": "SEARCH_ENGINE_SOGOU",
       "id": 56
     },
diff --git a/components/shared_highlighting/core/common/shared_highlighting_metrics.cc b/components/shared_highlighting/core/common/shared_highlighting_metrics.cc
index 8f414652..b4bd12a 100644
--- a/components/shared_highlighting/core/common/shared_highlighting_metrics.cc
+++ b/components/shared_highlighting/core/common/shared_highlighting_metrics.cc
@@ -72,6 +72,16 @@
   LogLinkGenerationErrorReason(LinkGenerationError::kIFrame);
 }
 
+void LogGenerateSuccessLatency(base::TimeDelta latency) {
+  base::UmaHistogramTimes("SharedHighlights.LinkGenerated.TimeToGenerate",
+                          latency);
+}
+
+void LogGenerateErrorLatency(base::TimeDelta latency) {
+  base::UmaHistogramTimes("SharedHighlights.LinkGenerated.Error.TimeToGenerate",
+                          latency);
+}
+
 void LogLinkOpenedUkmEvent(ukm::SourceId source_id,
                            const GURL& referrer,
                            bool success) {
diff --git a/components/shared_highlighting/core/common/shared_highlighting_metrics.h b/components/shared_highlighting/core/common/shared_highlighting_metrics.h
index 71bc8ea..ea6befea 100644
--- a/components/shared_highlighting/core/common/shared_highlighting_metrics.h
+++ b/components/shared_highlighting/core/common/shared_highlighting_metrics.h
@@ -5,6 +5,7 @@
 #ifndef COMPONENTS_SHARED_HIGHLIGHTING_CORE_COMMON_SHARED_HIGHLIGHTING_METRICS_H_
 #define COMPONENTS_SHARED_HIGHLIGHTING_CORE_COMMON_SHARED_HIGHLIGHTING_METRICS_H_
 
+#include "base/time/time.h"
 #include "services/metrics/public/cpp/ukm_recorder.h"
 #include "services/metrics/public/cpp/ukm_source_id.h"
 #include "url/gurl.h"
@@ -34,7 +35,10 @@
   // Selection happened on iframe.
   kIFrame = 10,
 
-  kMaxValue = kIFrame
+  // Timed-out waiting for a link to be generated.
+  kTimeout = 11,
+
+  kMaxValue = kTimeout
 };
 
 // These values are persisted to logs. Entries should not be renumbered and
@@ -82,6 +86,12 @@
 // iframe.
 void LogGenerateErrorIFrame();
 
+// Records the latency for successfully generating a link.
+void LogGenerateSuccessLatency(base::TimeDelta latency);
+
+// Records the latency for failing to generate a link.
+void LogGenerateErrorLatency(base::TimeDelta latency);
+
 // Records a UKM event for opening a link with text fragments. |source_id|
 // refers to the navigation action's ID, |referrer| will be used to record the
 // source and |success| should be true only if fragments highlighting was a
diff --git a/components/shared_highlighting/core/common/shared_highlighting_metrics_unittest.cc b/components/shared_highlighting/core/common/shared_highlighting_metrics_unittest.cc
index b30a7c5b..122ac2d 100644
--- a/components/shared_highlighting/core/common/shared_highlighting_metrics_unittest.cc
+++ b/components/shared_highlighting/core/common/shared_highlighting_metrics_unittest.cc
@@ -41,111 +41,102 @@
                                static_cast<int64_t>(source));
   }
 
+  base::HistogramTester histogram_tester_;
+
  private:
   base::test::SingleThreadTaskEnvironment task_environment_;
 };
 
 TEST_F(SharedHighlightingMetricsTest, LogTextFragmentAmbiguousMatch) {
-  base::HistogramTester histogram_tester;
-
   LogTextFragmentAmbiguousMatch(true);
-  histogram_tester.ExpectBucketCount("TextFragmentAnchor.AmbiguousMatch", 1, 1);
+  histogram_tester_.ExpectBucketCount("TextFragmentAnchor.AmbiguousMatch", 1,
+                                      1);
 
   LogTextFragmentAmbiguousMatch(false);
-  histogram_tester.ExpectBucketCount("TextFragmentAnchor.AmbiguousMatch", 0, 1);
-  histogram_tester.ExpectTotalCount("TextFragmentAnchor.AmbiguousMatch", 2);
+  histogram_tester_.ExpectBucketCount("TextFragmentAnchor.AmbiguousMatch", 0,
+                                      1);
+  histogram_tester_.ExpectTotalCount("TextFragmentAnchor.AmbiguousMatch", 2);
 }
 
 TEST_F(SharedHighlightingMetricsTest, LogTextFragmentLinkOpenSource) {
-  base::HistogramTester histogram_tester;
-
   GURL search_engine_url(kSearchEngineUrl);
   LogTextFragmentLinkOpenSource(search_engine_url);
-  histogram_tester.ExpectBucketCount("TextFragmentAnchor.LinkOpenSource",
-                                     TextFragmentLinkOpenSource::kSearchEngine,
-                                     1);
+  histogram_tester_.ExpectBucketCount("TextFragmentAnchor.LinkOpenSource",
+                                      TextFragmentLinkOpenSource::kSearchEngine,
+                                      1);
 
   GURL non_search_engine_url("https://example.com");
   LogTextFragmentLinkOpenSource(non_search_engine_url);
-  histogram_tester.ExpectBucketCount("TextFragmentAnchor.LinkOpenSource",
-                                     TextFragmentLinkOpenSource::kUnknown, 1);
-  histogram_tester.ExpectTotalCount("TextFragmentAnchor.LinkOpenSource", 2);
+  histogram_tester_.ExpectBucketCount("TextFragmentAnchor.LinkOpenSource",
+                                      TextFragmentLinkOpenSource::kUnknown, 1);
+  histogram_tester_.ExpectTotalCount("TextFragmentAnchor.LinkOpenSource", 2);
 
   GURL empty_gurl("");
   LogTextFragmentLinkOpenSource(empty_gurl);
-  histogram_tester.ExpectBucketCount("TextFragmentAnchor.LinkOpenSource",
-                                     TextFragmentLinkOpenSource::kUnknown, 2);
-  histogram_tester.ExpectTotalCount("TextFragmentAnchor.LinkOpenSource", 3);
+  histogram_tester_.ExpectBucketCount("TextFragmentAnchor.LinkOpenSource",
+                                      TextFragmentLinkOpenSource::kUnknown, 2);
+  histogram_tester_.ExpectTotalCount("TextFragmentAnchor.LinkOpenSource", 3);
 }
 
 TEST_F(SharedHighlightingMetricsTest, LogTextFragmentMatchRate) {
-  base::HistogramTester histogram_tester;
+  LogTextFragmentMatchRate(/*matches=*/2, /*text_fragments=*/2);
+  histogram_tester_.ExpectBucketCount("TextFragmentAnchor.MatchRate", 100, 1);
 
-  LogTextFragmentMatchRate(/*matches=*/2, /*nb_selectors=*/2);
-  histogram_tester.ExpectBucketCount("TextFragmentAnchor.MatchRate", 100, 1);
-
-  LogTextFragmentMatchRate(/*matches=*/1, /*nb_selectors=*/2);
-  histogram_tester.ExpectBucketCount("TextFragmentAnchor.MatchRate", 50, 1);
-  histogram_tester.ExpectTotalCount("TextFragmentAnchor.MatchRate", 2);
+  LogTextFragmentMatchRate(/*matches=*/1, /*text_fragments=*/2);
+  histogram_tester_.ExpectBucketCount("TextFragmentAnchor.MatchRate", 50, 1);
+  histogram_tester_.ExpectTotalCount("TextFragmentAnchor.MatchRate", 2);
 }
 
 TEST_F(SharedHighlightingMetricsTest, LogTextFragmentSelectorCount) {
-  base::HistogramTester histogram_tester;
-
   LogTextFragmentSelectorCount(1);
-  histogram_tester.ExpectBucketCount("TextFragmentAnchor.SelectorCount", 1, 1);
+  histogram_tester_.ExpectBucketCount("TextFragmentAnchor.SelectorCount", 1, 1);
 
   LogTextFragmentSelectorCount(20);
-  histogram_tester.ExpectBucketCount("TextFragmentAnchor.SelectorCount", 20, 1);
-  histogram_tester.ExpectTotalCount("TextFragmentAnchor.SelectorCount", 2);
+  histogram_tester_.ExpectBucketCount("TextFragmentAnchor.SelectorCount", 20,
+                                      1);
+  histogram_tester_.ExpectTotalCount("TextFragmentAnchor.SelectorCount", 2);
 }
 
 TEST_F(SharedHighlightingMetricsTest, LogLinkGenerationStatus) {
-  base::HistogramTester histogram_tester;
-
   LogLinkGenerationStatus(true);
-  histogram_tester.ExpectUniqueSample("SharedHighlights.LinkGenerated", true,
-                                      1);
+  histogram_tester_.ExpectUniqueSample("SharedHighlights.LinkGenerated", true,
+                                       1);
 
   LogLinkGenerationStatus(false);
-  histogram_tester.ExpectBucketCount("SharedHighlights.LinkGenerated", false,
-                                     1);
-  histogram_tester.ExpectTotalCount("SharedHighlights.LinkGenerated", 2);
+  histogram_tester_.ExpectBucketCount("SharedHighlights.LinkGenerated", false,
+                                      1);
+  histogram_tester_.ExpectTotalCount("SharedHighlights.LinkGenerated", 2);
 }
 
 TEST_F(SharedHighlightingMetricsTest, LogLinkGenerationErrorReason) {
-  base::HistogramTester histogram_tester;
-
   LogLinkGenerationErrorReason(LinkGenerationError::kIncorrectSelector);
-  histogram_tester.ExpectBucketCount("SharedHighlights.LinkGenerated.Error",
-                                     LinkGenerationError::kIncorrectSelector,
-                                     1);
+  histogram_tester_.ExpectBucketCount("SharedHighlights.LinkGenerated.Error",
+                                      LinkGenerationError::kIncorrectSelector,
+                                      1);
 
   LogLinkGenerationErrorReason(LinkGenerationError::kEmptySelection);
-  histogram_tester.ExpectBucketCount("SharedHighlights.LinkGenerated.Error",
-                                     LinkGenerationError::kEmptySelection, 1);
-  histogram_tester.ExpectTotalCount("SharedHighlights.LinkGenerated.Error", 2);
+  histogram_tester_.ExpectBucketCount("SharedHighlights.LinkGenerated.Error",
+                                      LinkGenerationError::kEmptySelection, 1);
+  histogram_tester_.ExpectTotalCount("SharedHighlights.LinkGenerated.Error", 2);
 }
 
 TEST_F(SharedHighlightingMetricsTest, LogAndroidLinkGenerationErrorReason) {
-  base::HistogramTester histogram_tester;
-
   LogGenerateErrorTabHidden();
-  histogram_tester.ExpectBucketCount("SharedHighlights.LinkGenerated.Error",
-                                     LinkGenerationError::kTabHidden, 1);
+  histogram_tester_.ExpectBucketCount("SharedHighlights.LinkGenerated.Error",
+                                      LinkGenerationError::kTabHidden, 1);
 
   LogGenerateErrorOmniboxNavigation();
-  histogram_tester.ExpectBucketCount("SharedHighlights.LinkGenerated.Error",
-                                     LinkGenerationError::kOmniboxNavigation,
-                                     1);
+  histogram_tester_.ExpectBucketCount("SharedHighlights.LinkGenerated.Error",
+                                      LinkGenerationError::kOmniboxNavigation,
+                                      1);
 
   LogGenerateErrorTabCrash();
-  histogram_tester.ExpectBucketCount("SharedHighlights.LinkGenerated.Error",
-                                     LinkGenerationError::kTabCrash, 1);
-  histogram_tester.ExpectTotalCount("SharedHighlights.LinkGenerated.Error", 3);
+  histogram_tester_.ExpectBucketCount("SharedHighlights.LinkGenerated.Error",
+                                      LinkGenerationError::kTabCrash, 1);
+  histogram_tester_.ExpectTotalCount("SharedHighlights.LinkGenerated.Error", 3);
 }
 
-TEST_F(SharedHighlightingMetricsTest, LinkOpenedUkm_Success_SearchEngine) {
+TEST_F(SharedHighlightingMetricsTest, LinkOpenedUkmSuccessSearchEngine) {
   ukm::TestAutoSetUkmRecorder ukm_recorder;
   ukm::SourceId source_id = 1;
   bool success = true;
@@ -156,7 +147,7 @@
                         TextFragmentLinkOpenSource::kSearchEngine);
 }
 
-TEST_F(SharedHighlightingMetricsTest, LinkOpenedUkm_Fail_SearchEngine) {
+TEST_F(SharedHighlightingMetricsTest, LinkOpenedUkmFailSearchEngine) {
   ukm::TestAutoSetUkmRecorder ukm_recorder;
   ukm::SourceId source_id = 1;
   bool success = false;
@@ -167,7 +158,7 @@
                         TextFragmentLinkOpenSource::kSearchEngine);
 }
 
-TEST_F(SharedHighlightingMetricsTest, LinkOpenedUkm_Success_UnknownSource) {
+TEST_F(SharedHighlightingMetricsTest, LinkOpenedUkmSuccessUnknownSource) {
   ukm::TestAutoSetUkmRecorder ukm_recorder;
   ukm::SourceId source_id = 1;
   bool success = true;
@@ -178,7 +169,7 @@
                         TextFragmentLinkOpenSource::kUnknown);
 }
 
-TEST_F(SharedHighlightingMetricsTest, LinkOpenedUkm_Fail_UnknownSource) {
+TEST_F(SharedHighlightingMetricsTest, LinkOpenedUkmFailUnknownSource) {
   ukm::TestAutoSetUkmRecorder ukm_recorder;
   ukm::SourceId source_id = 1;
   bool success = false;
@@ -189,7 +180,7 @@
                         TextFragmentLinkOpenSource::kUnknown);
 }
 
-TEST_F(SharedHighlightingMetricsTest, LinkOpenedUkm_InvalidSourceId) {
+TEST_F(SharedHighlightingMetricsTest, LinkOpenedUkmInvalidSourceId) {
   ukm::TestAutoSetUkmRecorder ukm_recorder;
 
   LogLinkOpenedUkmEvent(ukm::kInvalidSourceId, GURL(kSearchEngineUrl),
@@ -202,7 +193,7 @@
 
 // Tests that using the endpoints with a custom recorder won't use the static
 // UKM recorder.
-TEST_F(SharedHighlightingMetricsTest, LinkOpenedUkm_CustomRecorder) {
+TEST_F(SharedHighlightingMetricsTest, LinkOpenedUkmCustomRecorder) {
   ukm::TestAutoSetUkmRecorder static_ukm_recorder;
   ukm::TestUkmRecorder custom_ukm_recorder;
   ukm::SourceId source_id = 1;
@@ -219,7 +210,7 @@
   EXPECT_EQ(1U, custom_entries.size());
 }
 
-TEST_F(SharedHighlightingMetricsTest, LinkGeneratedUkm_Success) {
+TEST_F(SharedHighlightingMetricsTest, LinkGeneratedUkmSuccess) {
   ukm::TestAutoSetUkmRecorder ukm_recorder;
   ukm::SourceId source_id = 1;
 
@@ -234,7 +225,7 @@
   EXPECT_FALSE(ukm_recorder.GetEntryMetric(entry, kErrorUkmMetric));
 }
 
-TEST_F(SharedHighlightingMetricsTest, LinkGeneratedUkm_Error) {
+TEST_F(SharedHighlightingMetricsTest, LinkGeneratedUkmError) {
   ukm::TestAutoSetUkmRecorder ukm_recorder;
   ukm::SourceId source_id = 1;
   LinkGenerationError error = LinkGenerationError::kEmptySelection;
@@ -251,8 +242,7 @@
                                  static_cast<int64_t>(error));
 }
 
-TEST_F(SharedHighlightingMetricsTest,
-       LinkGeneratedUkm_Success_InvalidSourceId) {
+TEST_F(SharedHighlightingMetricsTest, LinkGeneratedUkmSuccessInvalidSourceId) {
   ukm::TestAutoSetUkmRecorder ukm_recorder;
 
   LogLinkGeneratedSuccessUkmEvent(ukm::kInvalidSourceId);
@@ -264,7 +254,7 @@
 
 // Tests that using the endpoints with a custom recorder won't use the static
 // UKM recorder.
-TEST_F(SharedHighlightingMetricsTest, LinkGeneratedUkm_CustomRecorder) {
+TEST_F(SharedHighlightingMetricsTest, LinkGeneratedUkmCustomRecorder) {
   ukm::TestAutoSetUkmRecorder static_ukm_recorder;
   ukm::TestUkmRecorder custom_ukm_recorder;
   ukm::SourceId source_id = 1;
@@ -282,6 +272,26 @@
   EXPECT_EQ(2U, custom_entries.size());
 }
 
+// Tests that link generation success latency logs to the right histogram.
+TEST_F(SharedHighlightingMetricsTest, LinkGeneratedSuccessLatency) {
+  base::TimeDelta test_delta = base::TimeDelta::FromMilliseconds(2000);
+
+  LogGenerateSuccessLatency(test_delta);
+
+  histogram_tester_.ExpectTimeBucketCount(
+      "SharedHighlights.LinkGenerated.TimeToGenerate", test_delta, 1);
+}
+
+// Tests that link generation failure latency logs to the right histogram.
+TEST_F(SharedHighlightingMetricsTest, LinkGeneratedErrorLatency) {
+  base::TimeDelta test_delta = base::TimeDelta::FromMilliseconds(2000);
+
+  LogGenerateErrorLatency(test_delta);
+
+  histogram_tester_.ExpectTimeBucketCount(
+      "SharedHighlights.LinkGenerated.Error.TimeToGenerate", test_delta, 1);
+}
+
 }  // namespace
 
 }  // namespace shared_highlighting
diff --git a/components/test/android/DIR_METADATA b/components/test/android/DIR_METADATA
new file mode 100644
index 0000000..9d880f7
--- /dev/null
+++ b/components/test/android/DIR_METADATA
@@ -0,0 +1,3 @@
+monorail {
+  component: "Tests"
+}
diff --git a/components/test/android/OWNERS b/components/test/android/OWNERS
index 709192b..e822ec4 100644
--- a/components/test/android/OWNERS
+++ b/components/test/android/OWNERS
@@ -1,3 +1,2 @@
 jaekyun@chromium.org
 tedchoc@chromium.org
-# COMPONENT: Tests
diff --git a/components/test/data/DIR_METADATA b/components/test/data/DIR_METADATA
new file mode 100644
index 0000000..9d880f7
--- /dev/null
+++ b/components/test/data/DIR_METADATA
@@ -0,0 +1,3 @@
+monorail {
+  component: "Tests"
+}
diff --git a/components/test/data/OWNERS b/components/test/data/OWNERS
index feecc5c..72e8ffc 100644
--- a/components/test/data/OWNERS
+++ b/components/test/data/OWNERS
@@ -1,2 +1 @@
 *
-# COMPONENT: Tests
diff --git a/components/test/data/autofill/DIR_METADATA b/components/test/data/autofill/DIR_METADATA
new file mode 100644
index 0000000..b597ffd
--- /dev/null
+++ b/components/test/data/autofill/DIR_METADATA
@@ -0,0 +1,3 @@
+monorail {
+  component: "UI>Browser>Autofill"
+}
diff --git a/components/test/data/autofill/OWNERS b/components/test/data/autofill/OWNERS
index fd8b01a..50a21bb 100644
--- a/components/test/data/autofill/OWNERS
+++ b/components/test/data/autofill/OWNERS
@@ -1,3 +1 @@
 file://components/autofill/OWNERS
-
-# COMPONENT: UI>Browser>Autofill
diff --git a/components/test/data/password_manager/DIR_METADATA b/components/test/data/password_manager/DIR_METADATA
new file mode 100644
index 0000000..43d76b8
--- /dev/null
+++ b/components/test/data/password_manager/DIR_METADATA
@@ -0,0 +1,3 @@
+monorail {
+  component: "UI>Browser>Passwords"
+}
diff --git a/components/test/data/password_manager/OWNERS b/components/test/data/password_manager/OWNERS
index d7aa5cac..066e0d37 100644
--- a/components/test/data/password_manager/OWNERS
+++ b/components/test/data/password_manager/OWNERS
@@ -1,3 +1 @@
 file://components/password_manager/OWNERS
-
-# COMPONENT: UI>Browser>Passwords
diff --git a/components/test/data/performance_manager/DIR_METADATA b/components/test/data/performance_manager/DIR_METADATA
new file mode 100644
index 0000000..148c2f5
--- /dev/null
+++ b/components/test/data/performance_manager/DIR_METADATA
@@ -0,0 +1,3 @@
+monorail {
+  component: "Internals>ResourceCoordinator"
+}
diff --git a/components/test/data/performance_manager/OWNERS b/components/test/data/performance_manager/OWNERS
index 982cc08..6ef4e6d 100644
--- a/components/test/data/performance_manager/OWNERS
+++ b/components/test/data/performance_manager/OWNERS
@@ -1,3 +1 @@
 file://components/performance_manager/OWNERS
-
-# COMPONENT: Internals>ResourceCoordinator
diff --git a/components/test/data/update_client/DIR_METADATA b/components/test/data/update_client/DIR_METADATA
new file mode 100644
index 0000000..f29e6cf
--- /dev/null
+++ b/components/test/data/update_client/DIR_METADATA
@@ -0,0 +1,5 @@
+monorail {
+  component: "Internals>Installer>Components"
+}
+
+team_email: "chrome-updates-dev@chromium.org"
diff --git a/components/test/data/update_client/OWNERS b/components/test/data/update_client/OWNERS
index c40fe17..f29f5ea 100644
--- a/components/test/data/update_client/OWNERS
+++ b/components/test/data/update_client/OWNERS
@@ -1,4 +1 @@
 file://components/update_client/OWNERS
-
-# COMPONENT: Internals>Installer>Components
-# TEAM: chrome-updates-dev@chromium.org
diff --git a/components/test/data/web_database/DIR_METADATA b/components/test/data/web_database/DIR_METADATA
new file mode 100644
index 0000000..7779236
--- /dev/null
+++ b/components/test/data/web_database/DIR_METADATA
@@ -0,0 +1,3 @@
+monorail {
+  component: "Test"
+}
diff --git a/components/test/data/web_database/OWNERS b/components/test/data/web_database/OWNERS
index 2818213..1310ba4c 100644
--- a/components/test/data/web_database/OWNERS
+++ b/components/test/data/web_database/OWNERS
@@ -3,5 +3,3 @@
 
 # For sqlite stuff:
 pwnall@chromium.org
-
-# COMPONENT: Test
diff --git a/components/viz/service/display_embedder/output_presenter_x11.cc b/components/viz/service/display_embedder/output_presenter_x11.cc
index 2bf62b4..926f5f0 100644
--- a/components/viz/service/display_embedder/output_presenter_x11.cc
+++ b/components/viz/service/display_embedder/output_presenter_x11.cc
@@ -30,6 +30,7 @@
 #include "ui/gfx/buffer_format_util.h"
 #include "ui/gfx/geometry/rect_conversions.h"
 #include "ui/gfx/overlay_transform.h"
+#include "ui/gfx/x/future.h"
 #include "ui/gl/gl_fence.h"
 
 #define VK_STRUCTURE_TYPE_WSI_IMAGE_CREATE_INFO_MESA (VkStructureType)1000001002
diff --git a/components/viz/test/data/backdrop_filter_blur_rounded.png b/components/viz/test/data/backdrop_filter_blur_rounded.png
index 1c6a19a..aa43e15 100644
--- a/components/viz/test/data/backdrop_filter_blur_rounded.png
+++ b/components/viz/test/data/backdrop_filter_blur_rounded.png
Binary files differ
diff --git a/components/viz/test/data/backdrop_filter_on_scaled_layer_gl.png b/components/viz/test/data/backdrop_filter_on_scaled_layer_gl.png
index e08e814f..675ea63 100644
--- a/components/viz/test/data/backdrop_filter_on_scaled_layer_gl.png
+++ b/components/viz/test/data/backdrop_filter_on_scaled_layer_gl.png
Binary files differ
diff --git a/components/viz/test/data/backdrop_filter_on_scaled_layer_legacy_swiftshader_gl.png b/components/viz/test/data/backdrop_filter_on_scaled_layer_legacy_swiftshader_gl.png
deleted file mode 100644
index 5e054f43..0000000
--- a/components/viz/test/data/backdrop_filter_on_scaled_layer_legacy_swiftshader_gl.png
+++ /dev/null
Binary files differ
diff --git a/components/viz/test/data/backdrop_filter_on_scaled_layer_legacy_swiftshader_skia_gl.png b/components/viz/test/data/backdrop_filter_on_scaled_layer_legacy_swiftshader_skia_gl.png
deleted file mode 100644
index f62dad95..0000000
--- a/components/viz/test/data/backdrop_filter_on_scaled_layer_legacy_swiftshader_skia_gl.png
+++ /dev/null
Binary files differ
diff --git a/components/viz/test/data/backdrop_filter_on_scaled_layer_legacy_swiftshader_sw.png b/components/viz/test/data/backdrop_filter_on_scaled_layer_legacy_swiftshader_sw.png
deleted file mode 100644
index 1ab0d2b4..0000000
--- a/components/viz/test/data/backdrop_filter_on_scaled_layer_legacy_swiftshader_sw.png
+++ /dev/null
Binary files differ
diff --git a/components/viz/test/data/backdrop_filter_on_scaled_layer_skia_gl.png b/components/viz/test/data/backdrop_filter_on_scaled_layer_skia_gl.png
index 667ec94d..6337e5a 100644
--- a/components/viz/test/data/backdrop_filter_on_scaled_layer_skia_gl.png
+++ b/components/viz/test/data/backdrop_filter_on_scaled_layer_skia_gl.png
Binary files differ
diff --git a/components/viz/test/data/backdrop_filter_rotated_gl.png b/components/viz/test/data/backdrop_filter_rotated_gl.png
index ff18be1..3b3081a 100644
--- a/components/viz/test/data/backdrop_filter_rotated_gl.png
+++ b/components/viz/test/data/backdrop_filter_rotated_gl.png
Binary files differ
diff --git a/components/viz/test/data/backdrop_filter_rotated_skia_gl.png b/components/viz/test/data/backdrop_filter_rotated_skia_gl.png
index 8d15722..32416ee 100644
--- a/components/viz/test/data/backdrop_filter_rotated_skia_gl.png
+++ b/components/viz/test/data/backdrop_filter_rotated_skia_gl.png
Binary files differ
diff --git a/components/viz/test/data/backdrop_filter_rotated_skia_vk.png b/components/viz/test/data/backdrop_filter_rotated_skia_vk.png
index 94243c15..113d6fb 100644
--- a/components/viz/test/data/backdrop_filter_rotated_skia_vk.png
+++ b/components/viz/test/data/backdrop_filter_rotated_skia_vk.png
Binary files differ
diff --git a/components/viz/test/data/backdrop_filter_rotated_sw.png b/components/viz/test/data/backdrop_filter_rotated_sw.png
index 034ab8a..0a4fe04 100644
--- a/components/viz/test/data/backdrop_filter_rotated_sw.png
+++ b/components/viz/test/data/backdrop_filter_rotated_sw.png
Binary files differ
diff --git a/components/viz/test/data/green_alpha.png b/components/viz/test/data/green_alpha.png
index d88a07f..46cece30 100644
--- a/components/viz/test/data/green_alpha.png
+++ b/components/viz/test/data/green_alpha.png
Binary files differ
diff --git a/components/viz/test/data/green_alpha_vertex_opacity.png b/components/viz/test/data/green_alpha_vertex_opacity.png
index 316c2cb..f13ab7a 100644
--- a/components/viz/test/data/green_alpha_vertex_opacity.png
+++ b/components/viz/test/data/green_alpha_vertex_opacity.png
Binary files differ
diff --git a/components/viz/test/data/scaled_mask_with_effect_gl.png b/components/viz/test/data/scaled_mask_with_effect_gl.png
index e309bf2..f02eace8 100644
--- a/components/viz/test/data/scaled_mask_with_effect_gl.png
+++ b/components/viz/test/data/scaled_mask_with_effect_gl.png
Binary files differ
diff --git a/components/viz/test/data/scaled_mask_with_effect_skia_vk.png b/components/viz/test/data/scaled_mask_with_effect_skia_vk.png
index 3693484..93736c7 100644
--- a/components/viz/test/data/scaled_mask_with_effect_skia_vk.png
+++ b/components/viz/test/data/scaled_mask_with_effect_skia_vk.png
Binary files differ
diff --git a/components/viz/test/data/scaled_render_surface_layer_gl.png b/components/viz/test/data/scaled_render_surface_layer_gl.png
index fbf764b..f6ea69d 100644
--- a/components/viz/test/data/scaled_render_surface_layer_gl.png
+++ b/components/viz/test/data/scaled_render_surface_layer_gl.png
Binary files differ
diff --git a/components/viz/test/data/scaled_render_surface_layer_legacy_swiftshader_gl.png b/components/viz/test/data/scaled_render_surface_layer_legacy_swiftshader_gl.png
deleted file mode 100644
index 8376ea8..0000000
--- a/components/viz/test/data/scaled_render_surface_layer_legacy_swiftshader_gl.png
+++ /dev/null
Binary files differ
diff --git a/components/viz/test/data/scaled_render_surface_layer_legacy_swiftshader_skia_gl.png b/components/viz/test/data/scaled_render_surface_layer_legacy_swiftshader_skia_gl.png
deleted file mode 100644
index 1894419..0000000
--- a/components/viz/test/data/scaled_render_surface_layer_legacy_swiftshader_skia_gl.png
+++ /dev/null
Binary files differ
diff --git a/components/viz/test/data/scaled_render_surface_layer_legacy_swiftshader_sw.png b/components/viz/test/data/scaled_render_surface_layer_legacy_swiftshader_sw.png
deleted file mode 100644
index 6ef530a8..0000000
--- a/components/viz/test/data/scaled_render_surface_layer_legacy_swiftshader_sw.png
+++ /dev/null
Binary files differ
diff --git a/components/viz/test/data/scaled_render_surface_layer_sw.png b/components/viz/test/data/scaled_render_surface_layer_sw.png
index 6ef530a8..b177b511 100644
--- a/components/viz/test/data/scaled_render_surface_layer_sw.png
+++ b/components/viz/test/data/scaled_render_surface_layer_sw.png
Binary files differ
diff --git a/components/viz/test/data/spiral_64_scale.png b/components/viz/test/data/spiral_64_scale.png
index 58bb818a..8dbfd76 100644
--- a/components/viz/test/data/spiral_64_scale.png
+++ b/components/viz/test/data/spiral_64_scale.png
Binary files differ
diff --git a/components/viz/test/data/spiral_64_scale_legacy_swiftshader.png b/components/viz/test/data/spiral_64_scale_legacy_swiftshader.png
deleted file mode 100644
index ec26b202..0000000
--- a/components/viz/test/data/spiral_64_scale_legacy_swiftshader.png
+++ /dev/null
Binary files differ
diff --git a/components/viz/test/data/spiral_64_scale_legacy_swiftshader_vk.png b/components/viz/test/data/spiral_64_scale_legacy_swiftshader_vk.png
deleted file mode 100644
index 6953f66..0000000
--- a/components/viz/test/data/spiral_64_scale_legacy_swiftshader_vk.png
+++ /dev/null
Binary files differ
diff --git a/components/viz/test/data/spiral_64_scale_vk.png b/components/viz/test/data/spiral_64_scale_vk.png
index 482119c..6953f66 100644
--- a/components/viz/test/data/spiral_64_scale_vk.png
+++ b/components/viz/test/data/spiral_64_scale_vk.png
Binary files differ
diff --git a/components/viz/test/data/srgb_green_in_p3.png b/components/viz/test/data/srgb_green_in_p3.png
index 0139b18..fcbbe0a 100644
--- a/components/viz/test/data/srgb_green_in_p3.png
+++ b/components/viz/test/data/srgb_green_in_p3.png
Binary files differ
diff --git a/components/viz/test/data/yuv_stripes.png b/components/viz/test/data/yuv_stripes.png
index e32cb632..1e64aa3 100644
--- a/components/viz/test/data/yuv_stripes.png
+++ b/components/viz/test/data/yuv_stripes.png
Binary files differ
diff --git a/components/viz/test/data/yuv_stripes_alpha.png b/components/viz/test/data/yuv_stripes_alpha.png
index bab22be9..90ef195 100644
--- a/components/viz/test/data/yuv_stripes_alpha.png
+++ b/components/viz/test/data/yuv_stripes_alpha.png
Binary files differ
diff --git a/components/viz/test/data/yuv_stripes_clipped.png b/components/viz/test/data/yuv_stripes_clipped.png
index 24cc7a05..e6459b3 100644
--- a/components/viz/test/data/yuv_stripes_clipped.png
+++ b/components/viz/test/data/yuv_stripes_clipped.png
Binary files differ
diff --git a/components/viz/test/data/yuv_stripes_offset.png b/components/viz/test/data/yuv_stripes_offset.png
index e1d92af..be36012 100644
--- a/components/viz/test/data/yuv_stripes_offset.png
+++ b/components/viz/test/data/yuv_stripes_offset.png
Binary files differ
diff --git a/content/browser/accessibility/browser_accessibility_cocoa.mm b/content/browser/accessibility/browser_accessibility_cocoa.mm
index 212d2ebe..653de1a 100644
--- a/content/browser/accessibility/browser_accessibility_cocoa.mm
+++ b/content/browser/accessibility/browser_accessibility_cocoa.mm
@@ -1272,7 +1272,8 @@
   if (![self instanceActive])
     return nil;
   ax::mojom::Role role = [self internalRole];
-  if (role == ax::mojom::Role::kRow || role == ax::mojom::Role::kTreeItem) {
+  if (role == ax::mojom::Role::kRow || role == ax::mojom::Role::kTreeItem ||
+      role == ax::mojom::Role::kHeading) {
     int level =
         _owner->GetIntAttribute(ax::mojom::IntAttribute::kHierarchicalLevel);
     // Mac disclosureLevel is 0-based, but web levels are 1-based.
@@ -3475,6 +3476,10 @@
     } else {
       [ret addObject:NSAccessibilityIndexAttribute];
     }
+  } else if ([self internalRole] == ax::mojom::Role::kHeading) {
+    // Heading level is exposed in both AXDisclosureLevel and AXValue.
+    // Safari also exposes the level in both.
+    [ret addObject:NSAccessibilityDisclosureLevelAttribute];
   } else if ([role isEqualToString:NSAccessibilityListRole]) {
     [ret addObjectsFromArray:@[
       NSAccessibilitySelectedChildrenAttribute,
diff --git a/content/browser/child_process_security_policy_impl.cc b/content/browser/child_process_security_policy_impl.cc
index 7e81d9e..ab3170d 100644
--- a/content/browser/child_process_security_policy_impl.cc
+++ b/content/browser/child_process_security_policy_impl.cc
@@ -590,10 +590,6 @@
     return browsing_instance_ids_;
   }
 
-  unsigned max_browsing_instance_count() const {
-    return max_browsing_instance_count_;
-  }
-
   void ClearBrowsingInstanceId(const BrowsingInstanceId& id) {
     browsing_instance_ids_.erase(id);
   }
@@ -1640,21 +1636,6 @@
         // BrowsingInstances are registered in the process. Allow this for now,
         // to maintain legacy behavior, until we rule out all the ways it can
         // happen.
-        // Since |security_state| is non-null (see above), and if it's not in
-        // the list |security_state_|, then it must have been moved to
-        // |pending_remove_state_| which indicates the associated process is
-        // being shut down.
-        bool shutting_down =
-            security_state_.find(child_id) == security_state_.end();
-        failure_reason = base::StringPrintf(
-            "no BrowsingInstanceIds (max count %d) shutdown:%s",
-            security_state->max_browsing_instance_count(),
-            shutting_down ? "y" : "n");
-        LogCanAccessDataForOriginCrashKeys(
-            expected_process_lock.ToString(),
-            GetKilledProcessOriginLock(security_state), url.GetOrigin().spec(),
-            failure_reason);
-        base::debug::DumpWithoutCrashing();
         return true;
       }
       for (auto browsing_instance_id :
diff --git a/content/browser/quota/quota_change_browsertest.cc b/content/browser/quota/quota_change_browsertest.cc
new file mode 100644
index 0000000..0c0634a
--- /dev/null
+++ b/content/browser/quota/quota_change_browsertest.cc
@@ -0,0 +1,136 @@
+// Copyright 2020 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include <stdint.h>
+#include <tuple>
+
+#include "base/bind.h"
+#include "base/callback_helpers.h"
+#include "base/command_line.h"
+#include "base/files/file_path.h"
+#include "base/single_thread_task_runner.h"
+#include "base/test/scoped_feature_list.h"
+#include "base/test/thread_test_helper.h"
+#include "content/browser/web_contents/web_contents_impl.h"
+#include "content/public/browser/browser_context.h"
+#include "content/public/browser/browser_task_traits.h"
+#include "content/public/browser/browser_thread.h"
+#include "content/public/browser/storage_partition.h"
+#include "content/public/common/content_switches.h"
+#include "content/public/test/browser_test.h"
+#include "content/public/test/browser_test_utils.h"
+#include "content/public/test/content_browser_test.h"
+#include "content/public/test/content_browser_test_utils.h"
+#include "content/public/test/test_navigation_observer.h"
+#include "content/shell/browser/shell.h"
+#include "storage/browser/quota/quota_device_info_helper.h"
+#include "storage/browser/quota/quota_features.h"
+#include "storage/browser/quota/quota_manager.h"
+#include "third_party/blink/public/mojom/quota/quota_types.mojom-shared.h"
+
+using storage::QuotaManager;
+
+namespace {
+
+constexpr int64_t kMBytes = 1024 * 1024;
+
+std::tuple<int64_t, int64_t> GetVolumeInfoForStoragePressure(
+    const base::FilePath& path) {
+  return std::make_tuple<int64_t, int64_t>(100 * kMBytes, 2 * kMBytes);
+}
+
+}  // namespace
+
+namespace content {
+
+// This browser test is aimed towards exercising the quotachange event bindings
+// and the implementation that lives in the browser side.
+class QuotaChangeBrowserTest : public ContentBrowserTest,
+                               public testing::WithParamInterface<bool> {
+ public:
+  QuotaChangeBrowserTest() : is_incognito_(GetParam()) {
+    feature_list_.InitAndEnableFeature(
+        storage::features::kStoragePressureEvent);
+  }
+
+  void SetUpOnMainThread() override {
+    ASSERT_TRUE(embedded_test_server()->Start());
+  }
+
+  void SetUpCommandLine(base::CommandLine* command_line) override {
+    // TODO(crbug.com/1088004): Remove this when the QuotaChange
+    // RuntimeEnabledFeature becomes "stable".
+    command_line->AppendSwitch(
+        switches::kEnableExperimentalWebPlatformFeatures);
+    // Disable the notification's rate limiting mechanism.
+    command_line->AppendSwitchASCII(switches::kQuotaChangeEventInterval, "0");
+  }
+
+  // Posts a task that causes the quota system to call
+  // GetVolumeInfoForStoragePressure and eventually fire a QuotaChange event.
+  void TriggerStoragePressureCheck(const GURL& test_url) {
+    GetIOThreadTaskRunner({})->PostTask(
+        FROM_HERE,
+        base::BindOnce(&QuotaManager::GetUsageAndQuotaForWebApps,
+                       quota_manager(), url::Origin::Create(test_url),
+                       blink::mojom::StorageType::kTemporary,
+                       base::DoNothing::Once<blink::mojom::QuotaStatusCode,
+                                             int64_t, int64_t>()));
+  }
+
+  Shell* browser() {
+    if (!browser_) {
+      browser_ = is_incognito() ? CreateOffTheRecordBrowser() : shell();
+    }
+    return browser_;
+  }
+
+  bool is_incognito() const { return is_incognito_; }
+
+  QuotaManager* quota_manager() {
+    return BrowserContext::GetDefaultStoragePartition(
+               browser()->web_contents()->GetBrowserContext())
+        ->GetQuotaManager();
+  }
+
+ private:
+  bool is_incognito_;
+  Shell* browser_ = nullptr;
+  base::test::ScopedFeatureList feature_list_;
+};
+
+INSTANTIATE_TEST_SUITE_P(All, QuotaChangeBrowserTest, ::testing::Bool());
+
+IN_PROC_BROWSER_TEST_P(QuotaChangeBrowserTest, DispatchEvent) {
+  // TODO(crbug.com/1131242): Implement this test for incognito contexts after
+  // device information collection is unified into a single code path within
+  // quota.
+  if (is_incognito()) {
+    return;
+  }
+
+  quota_manager()->SetGetVolumeInfoFnForTesting(
+      &GetVolumeInfoForStoragePressure);
+  auto test_url =
+      embedded_test_server()->GetURL("/storage/quota_change_test.html");
+  // The test page will perform tests on QuotaManagerHost, then navigate to
+  // either a #pass or #fail ref.
+  NavigateToURLBlockUntilNavigationsComplete(browser(), test_url,
+                                             /*number_of_navigations=*/1);
+
+  TestNavigationObserver observer(browser()->web_contents(),
+                                  /*number_of_navigations=*/1);
+  TriggerStoragePressureCheck(test_url);
+  observer.WaitForNavigationFinished();
+  const GURL& last_url = browser()->web_contents()->GetLastCommittedURL();
+  if (last_url.ref() != "pass") {
+    std::string js_result;
+    ASSERT_TRUE(ExecuteScriptAndExtractString(
+        browser(), "window.domAutomationController.send(getLog())",
+        &js_result));
+    FAIL() << "Failed: " << last_url << "\n" << js_result;
+  }
+}
+
+}  // namespace content
diff --git a/content/browser/quota/quota_change_dispatcher.cc b/content/browser/quota/quota_change_dispatcher.cc
index 28b8c7b..9b467b27 100644
--- a/content/browser/quota/quota_change_dispatcher.cc
+++ b/content/browser/quota/quota_change_dispatcher.cc
@@ -8,16 +8,24 @@
 #include <utility>
 
 #include "base/bind.h"
+#include "base/command_line.h"
+#include "base/memory/ref_counted_delete_on_sequence.h"
 #include "base/rand_util.h"
+#include "base/strings/string_number_conversions.h"
 #include "base/task/post_task.h"
 #include "base/threading/sequenced_task_runner_handle.h"
 #include "base/time/time.h"
 #include "content/browser/quota/quota_manager_host.h"
+#include "content/public/common/content_switches.h"
 #include "mojo/public/cpp/bindings/receiver.h"
 #include "mojo/public/cpp/bindings/remote.h"
 
 namespace {
 
+// The minimum delay between successive storage pressure events.
+constexpr base::TimeDelta kDefaultQuotaChangeIntervalSeconds =
+    base::TimeDelta::FromSeconds(60);
+
 base::TimeDelta GetRandomDelay() {
   int64_t delay_micros = static_cast<int64_t>(
       base::RandInt(0, 2 * base::Time::kMicrosecondsPerSecond));
@@ -33,16 +41,27 @@
 QuotaChangeDispatcher::DelayedOriginListener::~DelayedOriginListener() =
     default;
 
-QuotaChangeDispatcher::QuotaChangeDispatcher() {
-  DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
+QuotaChangeDispatcher::QuotaChangeDispatcher(
+    scoped_refptr<base::SequencedTaskRunner> io_thread)
+    : base::RefCountedDeleteOnSequence<QuotaChangeDispatcher>(
+          std::move(io_thread)) {
+  DETACH_FROM_SEQUENCE(sequence_checker_);
 }
+
 QuotaChangeDispatcher::~QuotaChangeDispatcher() {
   DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
 }
 
-void QuotaChangeDispatcher::DispatchEvents() {
+void QuotaChangeDispatcher::MaybeDispatchEvents() {
   DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
 
+  if (!last_event_dispatched_at_.is_null() &&
+      (base::TimeTicks::Now() - last_event_dispatched_at_) <
+          GetQuotaChangeEventInterval()) {
+    return;
+  }
+  last_event_dispatched_at_ = base::TimeTicks::Now();
+
   for (auto& kvp : listeners_by_origin_) {
     const url::Origin& origin = kvp.first;
     DelayedOriginListener& origin_listener = kvp.second;
@@ -98,4 +117,23 @@
   }
 }
 
-}  // namespace content
\ No newline at end of file
+const base::TimeDelta QuotaChangeDispatcher::GetQuotaChangeEventInterval() {
+  if (!is_quota_change_interval_cached_) {
+    base::CommandLine* command_line = base::CommandLine::ForCurrentProcess();
+    if (command_line->HasSwitch(switches::kQuotaChangeEventInterval)) {
+      const std::string string_value = command_line->GetSwitchValueASCII(
+          switches::kQuotaChangeEventInterval);
+
+      int int_value;
+      if (base::StringToInt(string_value, &int_value) && int_value >= 0) {
+        return base::TimeDelta::FromSeconds(int_value);
+      }
+    } else {
+      quota_change_event_interval_ = kDefaultQuotaChangeIntervalSeconds;
+    }
+    is_quota_change_interval_cached_ = true;
+  }
+  return quota_change_event_interval_;
+}
+
+}  // namespace content
diff --git a/content/browser/quota/quota_change_dispatcher.h b/content/browser/quota/quota_change_dispatcher.h
index cfd3937..38969e08 100644
--- a/content/browser/quota/quota_change_dispatcher.h
+++ b/content/browser/quota/quota_change_dispatcher.h
@@ -8,6 +8,7 @@
 #include <map>
 #include <utility>
 
+#include "base/memory/ref_counted_delete_on_sequence.h"
 #include "base/memory/scoped_refptr.h"
 #include "base/memory/weak_ptr.h"
 #include "base/sequence_checker.h"
@@ -28,15 +29,16 @@
 // There is one instance per QuotaContext instance. All methods must
 // be called on the same sequence.
 class CONTENT_EXPORT QuotaChangeDispatcher
-    : public base::RefCountedThreadSafe<QuotaChangeDispatcher> {
+    : public base::RefCountedDeleteOnSequence<QuotaChangeDispatcher> {
  public:
-  QuotaChangeDispatcher();
+  explicit QuotaChangeDispatcher(
+      scoped_refptr<base::SequencedTaskRunner> io_thread);
 
   QuotaChangeDispatcher(const QuotaChangeDispatcher&) = delete;
   QuotaChangeDispatcher& operator=(const QuotaChangeDispatcher&) = delete;
 
   // Dispatch OnQuotaChange for every origin and its corresponding listeners.
-  void DispatchEvents();
+  void MaybeDispatchEvents();
   void DispatchEventsForOrigin(const url::Origin& origin);
   void AddChangeListener(
       const url::Origin& origin,
@@ -47,9 +49,11 @@
  private:
   friend class QuotaChangeDispatcherTest;
   friend class QuotaContext;
-  friend class base::RefCountedThreadSafe<QuotaChangeDispatcher>;
+  friend class RefCountedDeleteOnSequence<QuotaChangeDispatcher>;
+  friend class base::DeleteHelper<QuotaChangeDispatcher>;
 
   ~QuotaChangeDispatcher();
+  const base::TimeDelta GetQuotaChangeEventInterval();
 
   struct DelayedOriginListener {
     DelayedOriginListener();
@@ -63,10 +67,21 @@
   // Stores all of the listeners associated with a unique origin
   // corresponding to a randomized delay for that origin.
   std::map<url::Origin, DelayedOriginListener> listeners_by_origin_;
+
+  // Keeps track of last time events were dispatched for debouncing events.
+  base::TimeTicks last_event_dispatched_at_;
+
+  // Cache the event interval to avoid checking command line switches
+  // each time the interval is checked. See kDefaultQuotaChangeIntervalSeconds
+  // for the default value. See switches::kQuotaChangeEventInterval for a
+  // command-line override.
+  base::TimeDelta quota_change_event_interval_;
+  bool is_quota_change_interval_cached_ = false;
+
   SEQUENCE_CHECKER(sequence_checker_);
   base::WeakPtrFactory<QuotaChangeDispatcher> weak_ptr_factory_{this};
 };
 
 }  // namespace content
 
-#endif  // CONTENT_BROWSER_QUOTA_QUOTA_CHANGE_DISPATCHER_H_
\ No newline at end of file
+#endif  // CONTENT_BROWSER_QUOTA_QUOTA_CHANGE_DISPATCHER_H_
diff --git a/content/browser/quota/quota_change_dispatcher_unittest.cc b/content/browser/quota/quota_change_dispatcher_unittest.cc
index c799c993..c4cbf7d 100644
--- a/content/browser/quota/quota_change_dispatcher_unittest.cc
+++ b/content/browser/quota/quota_change_dispatcher_unittest.cc
@@ -7,11 +7,13 @@
 #include <utility>
 
 #include "base/barrier_closure.h"
+#include "base/command_line.h"
 #include "base/run_loop.h"
 #include "base/task/post_task.h"
 #include "base/task/task_traits.h"
 #include "base/test/task_environment.h"
 #include "base/threading/thread_task_runner_handle.h"
+#include "content/public/common/content_switches.h"
 #include "mojo/public/cpp/bindings/remote.h"
 #include "testing/gmock/include/gmock/gmock-matchers.h"
 #include "testing/gtest/include/gtest/gtest.h"
@@ -55,7 +57,8 @@
   ~QuotaChangeDispatcherTest() override = default;
 
   void SetUp() override {
-    quota_change_dispatcher_ = base::MakeRefCounted<QuotaChangeDispatcher>();
+    quota_change_dispatcher_ = base::MakeRefCounted<QuotaChangeDispatcher>(
+        task_environment_.GetMainThreadTaskRunner());
   }
 
   std::map<url::Origin, QuotaChangeDispatcher::DelayedOriginListener>*
@@ -157,13 +160,16 @@
                         base::Unretained(this)));
   listener.SetQuotaChangeCallback(barrier);
 
-  quota_change_dispatcher_->DispatchEvents();
+  quota_change_dispatcher_->MaybeDispatchEvents();
   WaitForChange();
 
   EXPECT_EQ(1, listener.quota_change_call_count());
 }
 
 TEST_F(QuotaChangeDispatcherTest, DispatchEvents_Multiple) {
+  base::CommandLine* command_line = base::CommandLine::ForCurrentProcess();
+  command_line->AppendSwitchASCII(switches::kQuotaChangeEventInterval, "0");
+
   const url::Origin& url_foo_ = url::Origin::Create(GURL("http://foo.com/"));
 
   mojo::PendingRemote<blink::mojom::QuotaChangeListener> mojo_listener_1;
@@ -190,7 +196,7 @@
   listener_1.SetQuotaChangeCallback(barrier);
   listener_2.SetQuotaChangeCallback(barrier);
 
-  quota_change_dispatcher_->DispatchEvents();
+  quota_change_dispatcher_->MaybeDispatchEvents();
   WaitForChange();
 
   EXPECT_EQ(1, listener_1.quota_change_call_count());
@@ -202,7 +208,7 @@
   listener_1.SetQuotaChangeCallback(barrier);
   listener_2.SetQuotaChangeCallback(barrier);
 
-  quota_change_dispatcher_->DispatchEvents();
+  quota_change_dispatcher_->MaybeDispatchEvents();
   WaitForChange();
 
   EXPECT_EQ(2, listener_1.quota_change_call_count());
@@ -210,6 +216,9 @@
 }
 
 TEST_F(QuotaChangeDispatcherTest, RemoveThenDispatch) {
+  base::CommandLine* command_line = base::CommandLine::ForCurrentProcess();
+  command_line->AppendSwitchASCII(switches::kQuotaChangeEventInterval, "0");
+
   const url::Origin& url_foo_ = url::Origin::Create(GURL("http://foo.com/"));
   const url::Origin& url_bar_ = url::Origin::Create(GURL("http://bar.com/"));
   mojo::PendingRemote<blink::mojom::QuotaChangeListener> mojo_listener_1;
@@ -236,7 +245,7 @@
   listener_1.SetQuotaChangeCallback(barrier);
   listener_2.SetQuotaChangeCallback(barrier);
 
-  quota_change_dispatcher_->DispatchEvents();
+  quota_change_dispatcher_->MaybeDispatchEvents();
   WaitForChange();
 
   EXPECT_EQ(1, listener_1.quota_change_call_count());
@@ -249,11 +258,11 @@
                         base::Unretained(this)));
   listener_1.SetQuotaChangeCallback(barrier);
 
-  quota_change_dispatcher_->DispatchEvents();
+  quota_change_dispatcher_->MaybeDispatchEvents();
   WaitForChange();
 
   EXPECT_EQ(2, listener_1.quota_change_call_count());
   EXPECT_EQ(1, listener_2.quota_change_call_count());
 }
 
-}  // namespace content
\ No newline at end of file
+}  // namespace content
diff --git a/content/browser/quota/quota_context.cc b/content/browser/quota/quota_context.cc
index 5caec91..d84517b 100644
--- a/content/browser/quota/quota_context.cc
+++ b/content/browser/quota/quota_context.cc
@@ -10,6 +10,7 @@
 #include "base/memory/ref_counted_delete_on_sequence.h"
 #include "base/memory/scoped_refptr.h"
 #include "base/single_thread_task_runner.h"
+#include "content/browser/quota/quota_change_dispatcher.h"
 #include "content/browser/quota/quota_manager_host.h"
 #include "content/public/browser/browser_task_traits.h"
 #include "content/public/browser/browser_thread.h"
@@ -30,10 +31,14 @@
     storage::GetQuotaSettingsFunc get_settings_function)
     : base::RefCountedDeleteOnSequence<QuotaContext>(GetIOThreadTaskRunner({})),
       io_thread_(GetIOThreadTaskRunner({})),
+      quota_change_dispatcher_(
+          base::MakeRefCounted<QuotaChangeDispatcher>(io_thread_)),
       quota_manager_(base::MakeRefCounted<storage::QuotaManager>(
           is_incognito,
           profile_path,
           io_thread_,
+          base::BindRepeating(&QuotaChangeDispatcher::MaybeDispatchEvents,
+                              quota_change_dispatcher_),
           std::move(special_storage_policy),
           std::move(get_settings_function))),
       permission_context_(
@@ -63,10 +68,6 @@
     mojo::PendingReceiver<blink::mojom::QuotaManagerHost> receiver) {
   DCHECK_CURRENTLY_ON(BrowserThread::IO);
 
-  if (!quota_change_dispatcher_) {
-    quota_change_dispatcher_ = base::MakeRefCounted<QuotaChangeDispatcher>();
-  }
-
   // The quota manager currently runs on the I/O thread.
   auto host = std::make_unique<QuotaManagerHost>(
       process_id, render_frame_id, origin, quota_manager_.get(),
diff --git a/content/browser/quota/quota_context.h b/content/browser/quota/quota_context.h
index 1ac8533..f215f893 100644
--- a/content/browser/quota/quota_context.h
+++ b/content/browser/quota/quota_context.h
@@ -82,14 +82,14 @@
   // QuotaManager runs on the IO thread, so mojo receivers must be bound there.
   const scoped_refptr<base::SingleThreadTaskRunner> io_thread_;
 
+  // Owning reference for the QuotaChangeDispatcher.
+  scoped_refptr<QuotaChangeDispatcher> quota_change_dispatcher_;
+
   // Owning reference for the QuotaManager.
   //
   // This is not const because of OverrideQuotaManagerForTesting().
   scoped_refptr<storage::QuotaManager> quota_manager_;
 
-  // Owning reference for the QuotaChangeDispatcher.
-  scoped_refptr<QuotaChangeDispatcher> quota_change_dispatcher_;
-
   // Owning reference for the QuotaPermissionContext.
   const scoped_refptr<QuotaPermissionContext> permission_context_;
 
diff --git a/content/browser/renderer_host/pepper/pepper_host_resolver_message_filter.cc b/content/browser/renderer_host/pepper/pepper_host_resolver_message_filter.cc
index ed36e45f..ad4aaba 100644
--- a/content/browser/renderer_host/pepper/pepper_host_resolver_message_filter.cc
+++ b/content/browser/renderer_host/pepper/pepper_host_resolver_message_filter.cc
@@ -189,7 +189,7 @@
   if (net_result != net::OK) {
     SendResolveError(NetErrorToPepperError(net_result), context);
   } else {
-    const std::string& canonical_name = addresses.value().canonical_name();
+    const std::string& canonical_name = addresses.value().GetCanonicalName();
     NetAddressList net_address_list;
     CreateNetAddressListFromAddressList(addresses.value(), &net_address_list);
     if (net_address_list.empty())
diff --git a/content/browser/renderer_host/render_widget_host_view_aura.cc b/content/browser/renderer_host/render_widget_host_view_aura.cc
index d2e2368..f42092b 100644
--- a/content/browser/renderer_host/render_widget_host_view_aura.cc
+++ b/content/browser/renderer_host/render_widget_host_view_aura.cc
@@ -689,6 +689,7 @@
 }
 
 void RenderWidgetHostViewAura::SetInsets(const gfx::Insets& insets) {
+  TRACE_EVENT0("vk", "RenderWidgetHostViewAura::SetInsets");
   if (insets != insets_) {
     insets_ = insets;
     window_->AllocateLocalSurfaceId();
@@ -1229,8 +1230,11 @@
 
   const TextInputManager::SelectionRegion* region =
       text_input_manager_->GetSelectionRegion();
-  return ConvertRectToScreen(
+  gfx::Rect caret_rect = ConvertRectToScreen(
       gfx::RectBetweenSelectionBounds(region->anchor, region->focus));
+  TRACE_EVENT1("ime", "RenderWidgetHostViewAura::GetCaretBounds", "caret_rect",
+               caret_rect.ToString());
+  return caret_rect;
 }
 
 bool RenderWidgetHostViewAura::GetCompositionCharacterBounds(
@@ -1247,6 +1251,8 @@
   if (index >= composition_range_info->character_bounds.size())
     return false;
   *rect = ConvertRectToScreen(composition_range_info->character_bounds[index]);
+  TRACE_EVENT1("ime", "RenderWidgetHostViewAura::GetCompositionCharacterBounds",
+               "comp_char_rect", rect->ToString());
   return true;
 }
 
@@ -1521,14 +1527,20 @@
     const ui::mojom::TextInputState* state =
         text_input_manager_->GetTextInputState();
     if (state) {
-      if (state->edit_context_control_bounds)
+      if (state->edit_context_control_bounds) {
         *control_bounds =
             ConvertRectToScreen(state->edit_context_control_bounds.value());
+        TRACE_EVENT1(
+            "ime",
+            "RenderWidgetHostViewAura::GetActiveTextInputControlLayoutBounds",
+            "control_bounds_rect", control_bounds->value().ToString());
+      }
       // Selection bounds are currently populated only for EditContext.
       // For editable elements we use GetCompositionCharacterBounds.
-      if (state->edit_context_selection_bounds)
+      if (state->edit_context_selection_bounds) {
         *selection_bounds =
             ConvertRectToScreen(state->edit_context_selection_bounds.value());
+      }
     }
   }
 }
diff --git a/content/browser/renderer_host/text_input_manager.cc b/content/browser/renderer_host/text_input_manager.cc
index b2114c9..010a05f 100644
--- a/content/browser/renderer_host/text_input_manager.cc
+++ b/content/browser/renderer_host/text_input_manager.cc
@@ -117,6 +117,19 @@
   // TextInputState.
   bool changed = ShouldUpdateTextInputState(*text_input_state_map_[view],
                                             text_input_state);
+  TRACE_EVENT2(
+      "ime", "TextInputManager::UpdateTextInputState", "changed", changed,
+      "text_input_state - type, selection, composition, "
+      "show_ime_if_needed, control_bounds",
+      std::to_string(text_input_state.type) + ", " +
+          text_input_state.selection.ToString() + ", " +
+          (text_input_state.composition.has_value()
+               ? text_input_state.composition->ToString()
+               : "") +
+          ", " + std::to_string(text_input_state.show_ime_if_needed) + ", " +
+          (text_input_state.edit_context_control_bounds.has_value()
+               ? text_input_state.edit_context_control_bounds->ToString()
+               : ""));
   text_input_state_map_[view] = text_input_state.Clone();
   for (const auto& ime_text_span_info :
        text_input_state_map_[view]->ime_text_spans_info) {
diff --git a/content/browser/site_per_process_browsertest.cc b/content/browser/site_per_process_browsertest.cc
index 05595dd..99676bf 100644
--- a/content/browser/site_per_process_browsertest.cc
+++ b/content/browser/site_per_process_browsertest.cc
@@ -1693,7 +1693,9 @@
 
 // Test that scrolling a nested out-of-process iframe bubbles unused scroll
 // delta to a parent frame.
-IN_PROC_BROWSER_TEST_P(SitePerProcessBrowserTest, ScrollBubblingFromOOPIFTest) {
+// Flaky on all platforms: https://crbug.com/1148741
+IN_PROC_BROWSER_TEST_P(SitePerProcessBrowserTest,
+                       DISABLED_ScrollBubblingFromOOPIFTest) {
   ScrollBubblingProxyObserver scroll_bubbling_proxy_observer;
 
   ui::GestureConfiguration::GetInstance()->set_scroll_debounce_interval_in_ms(
diff --git a/content/browser/webui/content_web_ui_controller_factory.cc b/content/browser/webui/content_web_ui_controller_factory.cc
index 6012229..8c9af56 100644
--- a/content/browser/webui/content_web_ui_controller_factory.cc
+++ b/content/browser/webui/content_web_ui_controller_factory.cc
@@ -21,6 +21,7 @@
 #include "content/public/browser/web_contents.h"
 #include "content/public/browser/web_ui.h"
 #include "content/public/common/url_constants.h"
+#include "media/base/media_switches.h"
 #include "media/media_buildflags.h"
 
 namespace content {
@@ -76,8 +77,6 @@
     return std::make_unique<HistogramsInternalsUI>(web_ui);
   if (url.host_piece() == kChromeUIIndexedDBInternalsHost)
     return std::make_unique<IndexedDBInternalsUI>(web_ui);
-  if (url.host_piece() == kChromeUIMediaInternalsHost)
-    return std::make_unique<MediaInternalsUI>(web_ui);
   if (url.host_piece() == kChromeUIServiceWorkerInternalsHost)
     return std::make_unique<ServiceWorkerInternalsUI>(web_ui);
   if (url.host_piece() == kChromeUINetworkErrorsListingHost)
@@ -94,6 +93,11 @@
     return std::make_unique<ConversionInternalsUI>(web_ui);
   if (url.host_piece() == kChromeUIUkmHost)
     return std::make_unique<UkmInternalsUI>(web_ui);
+  if (url.host_piece() == kChromeUIMediaInternalsHost) {
+    if (base::FeatureList::IsEnabled(media::kEnableMediaInternals))
+      return std::make_unique<MediaInternalsUI>(web_ui);
+    return nullptr;
+  }
   return nullptr;
 }
 
diff --git a/content/public/common/BUILD.gn b/content/public/common/BUILD.gn
index 288ff8d..df6b4852 100644
--- a/content/public/common/BUILD.gn
+++ b/content/public/common/BUILD.gn
@@ -323,7 +323,6 @@
 
   sources = [
     "drop_data.mojom",
-    "fullscreen_video_element.mojom",
     "resource_usage_reporter.mojom",
     "was_activated_option.mojom",
     "webplugininfo.mojom",
diff --git a/content/public/common/content_switches.cc b/content/public/common/content_switches.cc
index 21b56c26..3139a07 100644
--- a/content/public/common/content_switches.cc
+++ b/content/public/common/content_switches.cc
@@ -631,6 +631,11 @@
 // Defaults to disabled.
 const char kPullToRefresh[] = "pull-to-refresh";
 
+// Specifies the minimum amount of time, in seconds, that must pass before
+// consecutive quota change events can be fired. Set the value to '0' to disable
+// the debounce mechanimsm.
+const char kQuotaChangeEventInterval[] = "quota-change-event-interval";
+
 // Register Pepper plugins (see pepper_plugin_list.cc for its format).
 const char kRegisterPepperPlugins[]         = "register-pepper-plugins";
 
diff --git a/content/public/common/content_switches.h b/content/public/common/content_switches.h
index 949fdee3..a48873f 100644
--- a/content/public/common/content_switches.h
+++ b/content/public/common/content_switches.h
@@ -180,6 +180,7 @@
 CONTENT_EXPORT extern const char kProcessType[];
 CONTENT_EXPORT extern const char kProxyServer[];
 CONTENT_EXPORT extern const char kPullToRefresh[];
+CONTENT_EXPORT extern const char kQuotaChangeEventInterval[];
 CONTENT_EXPORT extern const char kRegisterPepperPlugins[];
 CONTENT_EXPORT extern const char kRemoteDebuggingPipe[];
 CONTENT_EXPORT extern const char kRemoteDebuggingPort[];
diff --git a/content/renderer/media/media_factory.cc b/content/renderer/media/media_factory.cc
index 819de0e9..24ecfaf 100644
--- a/content/renderer/media/media_factory.cc
+++ b/content/renderer/media/media_factory.cc
@@ -398,9 +398,10 @@
           "enable_instant_source_buffer_gc", false);
 
   std::vector<std::unique_ptr<BatchingMediaLog::EventHandler>> handlers;
-  handlers.push_back(std::make_unique<RenderMediaEventHandler>());
   handlers.push_back(
       std::make_unique<InspectorMediaEventHandler>(inspector_context));
+  if (base::FeatureList::IsEnabled(media::kEnableMediaInternals))
+    handlers.push_back(std::make_unique<RenderMediaEventHandler>());
 
   // This must be created for every new WebMediaPlayer, each instance generates
   // a new player id which is used to collate logs on the browser side.
@@ -690,9 +691,10 @@
       video_frame_compositor_task_runner;
 
   std::vector<std::unique_ptr<BatchingMediaLog::EventHandler>> handlers;
-  handlers.push_back(std::make_unique<RenderMediaEventHandler>());
   handlers.push_back(
       std::make_unique<InspectorMediaEventHandler>(inspector_context));
+  if (base::FeatureList::IsEnabled(media::kEnableMediaInternals))
+    handlers.push_back(std::make_unique<RenderMediaEventHandler>());
 
   // This must be created for every new WebMediaPlayer, each instance generates
   // a new player id which is used to collate logs on the browser side.
diff --git a/content/renderer/render_frame_impl.cc b/content/renderer/render_frame_impl.cc
index 059cb6d..be4c68f5 100644
--- a/content/renderer/render_frame_impl.cc
+++ b/content/renderer/render_frame_impl.cc
@@ -2231,14 +2231,6 @@
   }
 }
 
-void RenderFrameImpl::BindFullscreen(
-    mojo::PendingAssociatedReceiver<mojom::FullscreenVideoElementHandler>
-        receiver) {
-  fullscreen_receiver_.Bind(
-      std::move(receiver),
-      GetTaskRunner(blink::TaskType::kInternalNavigationAssociated));
-}
-
 void RenderFrameImpl::BindAutoplayConfiguration(
     mojo::PendingAssociatedReceiver<blink::mojom::AutoplayConfigurationClient>
         receiver) {
@@ -2844,22 +2836,6 @@
   return GetLocalRootWebFrameWidget()->IsPasting();
 }
 
-// blink::mojom::FullscreenVideoElementHandler implementation ------------------
-void RenderFrameImpl::RequestFullscreenVideoElement() {
-  WebElement video_element =
-      frame_->GetDocument().GetElementsByHTMLTagName("video").FirstItem();
-
-  if (!video_element.IsNull()) {
-    // This is always initiated from browser side (which should require the user
-    // interacting with ui) which suffices for a user gesture even though there
-    // will have been no input to the frame at this point.
-    frame_->NotifyUserActivation(
-        blink::mojom::UserActivationNotificationType::kInteraction);
-
-    video_element.RequestFullscreen();
-  }
-}
-
 // blink::mojom::AutoplayConfigurationClient implementation
 // --------------------------
 
@@ -6148,9 +6124,6 @@
       &RenderFrameImpl::BindNavigationClient, weak_factory_.GetWeakPtr()));
 
   GetAssociatedInterfaceRegistry()->AddInterface(base::BindRepeating(
-      &RenderFrameImpl::BindFullscreen, weak_factory_.GetWeakPtr()));
-
-  GetAssociatedInterfaceRegistry()->AddInterface(base::BindRepeating(
       &RenderFrameImpl::BindMhtmlFileWriter, base::Unretained(this)));
 
   GetAssociatedInterfaceRegistry()->AddInterface(base::BindRepeating(
diff --git a/content/renderer/render_frame_impl.h b/content/renderer/render_frame_impl.h
index 3a72bb5..1a9b998 100644
--- a/content/renderer/render_frame_impl.h
+++ b/content/renderer/render_frame_impl.h
@@ -40,7 +40,6 @@
 #include "content/common/render_accessibility.mojom.h"
 #include "content/common/renderer.mojom.h"
 #include "content/common/web_ui.mojom.h"
-#include "content/public/common/fullscreen_video_element.mojom.h"
 #include "content/public/common/referrer.h"
 #include "content/public/common/stop_find_action.h"
 #include "content/public/common/widget_type.h"
@@ -166,7 +165,6 @@
       blink::mojom::AutoplayConfigurationClient,
       mojom::Frame,
       mojom::FrameNavigationControl,
-      mojom::FullscreenVideoElementHandler,
       mojom::FrameBindingsControl,
       mojom::MhtmlFileWriter,
       public blink::WebLocalFrameClient,
@@ -526,9 +524,6 @@
       JavaScriptExecuteRequestInIsolatedWorldCallback callback) override;
   void SwapIn() override;
 
-  // mojom::FullscreenVideoElementHandler implementation:
-  void RequestFullscreenVideoElement() override;
-
   // mojom::MhtmlFileWriter implementation:
   void SerializeAsMHTML(const mojom::SerializeAsMHTMLParamsPtr params,
                         SerializeAsMHTMLCallback callback) override;
@@ -709,11 +704,6 @@
       base::ReadOnlySharedMemoryRegion shared_memory) override;
   blink::WebURL LastCommittedUrlForUKM() override;
 
-  // Binds to the fullscreen service in the browser.
-  void BindFullscreen(
-      mojo::PendingAssociatedReceiver<mojom::FullscreenVideoElementHandler>
-          receiver);
-
   // Binds to the MHTML file generation service in the browser.
   void BindMhtmlFileWriter(
       mojo::PendingAssociatedReceiver<mojom::MhtmlFileWriter> receiver);
@@ -1324,8 +1314,6 @@
       frame_bindings_control_receiver_{this};
   mojo::AssociatedReceiver<mojom::FrameNavigationControl>
       frame_navigation_control_receiver_{this};
-  mojo::AssociatedReceiver<mojom::FullscreenVideoElementHandler>
-      fullscreen_receiver_{this};
   mojo::AssociatedReceiver<mojom::MhtmlFileWriter> mhtml_file_writer_receiver_{
       this};
 
diff --git a/content/test/BUILD.gn b/content/test/BUILD.gn
index b60fcb6..bf098db 100644
--- a/content/test/BUILD.gn
+++ b/content/test/BUILD.gn
@@ -1088,6 +1088,7 @@
     "../browser/power_monitor_browsertest.cc",
     "../browser/prerender/prerender_browsertest.cc",
     "../browser/process_internals/process_internals_browsertest.cc",
+    "../browser/quota/quota_change_browsertest.cc",
     "../browser/renderer_host/ancestor_throttle_browsertest.cc",
     "../browser/renderer_host/back_forward_cache_metrics_browsertest.cc",
     "../browser/renderer_host/blocked_scheme_navigation_browsertest.cc",
diff --git a/content/test/data/accessibility/aria/aria-level-expected-mac.txt b/content/test/data/accessibility/aria/aria-level-expected-mac.txt
index 19b7c2b..761884b 100644
--- a/content/test/data/accessibility/aria/aria-level-expected-mac.txt
+++ b/content/test/data/accessibility/aria/aria-level-expected-mac.txt
@@ -1,17 +1,17 @@
 AXWebArea
-++AXHeading AXTitle='Level 2' AXValue=2
+++AXHeading AXDisclosureLevel=1 AXTitle='Level 2' AXValue=2
 ++++AXStaticText AXValue='Level 2'
-++AXHeading AXTitle='Level 9' AXValue=9
+++AXHeading AXDisclosureLevel=8 AXTitle='Level 9' AXValue=9
 ++++AXStaticText AXValue='Level 9'
-++AXHeading AXTitle='Level 1' AXValue=1
+++AXHeading AXDisclosureLevel=0 AXTitle='Level 1' AXValue=1
 ++++AXStaticText AXValue='Level 1'
-++AXHeading AXTitle='Level 3' AXValue=3
+++AXHeading AXDisclosureLevel=2 AXTitle='Level 3' AXValue=3
 ++++AXStaticText AXValue='Level 3'
-++AXHeading AXTitle='Level 3' AXValue=3
+++AXHeading AXDisclosureLevel=2 AXTitle='Level 3' AXValue=3
 ++++AXStaticText AXValue='Level 3'
-++AXHeading AXTitle='Level 4' AXValue=4
+++AXHeading AXDisclosureLevel=3 AXTitle='Level 4' AXValue=4
 ++++AXStaticText AXValue='Level 4'
-++AXHeading AXTitle='Level 5' AXValue=5
+++AXHeading AXDisclosureLevel=4 AXTitle='Level 5' AXValue=5
 ++++AXStaticText AXValue='Level 5'
 ++AXOutline
 ++++AXRow AXSubrole=AXOutlineRow AXDisclosing=1 AXDisclosureLevel=0 AXIndex=0 AXTitle='Tree item at level 1'
diff --git a/content/test/data/accessibility/html/heading-expected-mac.txt b/content/test/data/accessibility/html/heading-expected-mac.txt
index e7dba1a6..a9a93ec 100644
--- a/content/test/data/accessibility/html/heading-expected-mac.txt
+++ b/content/test/data/accessibility/html/heading-expected-mac.txt
@@ -1,13 +1,13 @@
 AXWebArea
-++AXHeading AXTitle='Heading 1' AXValue=1
+++AXHeading AXDisclosureLevel=0 AXTitle='Heading 1' AXValue=1
 ++++AXStaticText AXValue='Heading 1'
-++AXHeading AXTitle='Heading 2' AXValue=2
+++AXHeading AXDisclosureLevel=1 AXTitle='Heading 2' AXValue=2
 ++++AXStaticText AXValue='Heading 2'
-++AXHeading AXTitle='Heading 3' AXValue=3
+++AXHeading AXDisclosureLevel=2 AXTitle='Heading 3' AXValue=3
 ++++AXStaticText AXValue='Heading 3'
-++AXHeading AXTitle='Heading 4' AXValue=4
+++AXHeading AXDisclosureLevel=3 AXTitle='Heading 4' AXValue=4
 ++++AXStaticText AXValue='Heading 4'
-++AXHeading AXTitle='Heading 5' AXValue=5
+++AXHeading AXDisclosureLevel=4 AXTitle='Heading 5' AXValue=5
 ++++AXStaticText AXValue='Heading 5'
-++AXHeading AXTitle='Heading 6' AXValue=6
+++AXHeading AXDisclosureLevel=5 AXTitle='Heading 6' AXValue=6
 ++++AXStaticText AXValue='Heading 6'
diff --git a/content/test/data/accessibility/html/heading.html b/content/test/data/accessibility/html/heading.html
index cb9eac1..7cf44d2 100644
--- a/content/test/data/accessibility/html/heading.html
+++ b/content/test/data/accessibility/html/heading.html
@@ -1,5 +1,6 @@
 <!--
 @BLINK-ALLOW:hierarchicalLevel*
+@MAC-ALLOW:AXDisclosureLevel
 @WIN-ALLOW:level:*
 @WIN-ALLOW:xml-roles*
 @AURALINUX-ALLOW:level:*
diff --git a/content/test/data/storage/common.js b/content/test/data/storage/common.js
new file mode 100644
index 0000000..8729abe
--- /dev/null
+++ b/content/test/data/storage/common.js
@@ -0,0 +1,26 @@
+// Copyright 2020 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+function debug(message) {
+  document.getElementById('status').textContent += `\n${message}`;
+}
+
+function done(message) {
+  if (document.location.hash == '#fail')
+    return;
+  if (message)
+    debug('PASS: ' + message);
+  else
+    debug('PASS');
+  document.location.hash = '#pass';
+}
+
+function fail(message) {
+  debug('FAILED: ' + message);
+  document.location.hash = '#fail';
+}
+
+function getLog() {
+  return '' + document.getElementById('status').textContent;
+}
diff --git a/content/test/data/storage/quota_change_test.html b/content/test/data/storage/quota_change_test.html
new file mode 100644
index 0000000..fe5ffcb
--- /dev/null
+++ b/content/test/data/storage/quota_change_test.html
@@ -0,0 +1,8 @@
+<!doctype html>
+<meta charset="utf-8">
+  <title>Quota change test</title>
+  <script type="text/javascript" src="common.js"></script>
+  <script type="text/javascript" src="quota_change_test.js"></script>
+<body onLoad="test()">
+  <div id="status">Starting...</div>
+</body>
diff --git a/content/test/data/storage/quota_change_test.js b/content/test/data/storage/quota_change_test.js
new file mode 100644
index 0000000..197f24a
--- /dev/null
+++ b/content/test/data/storage/quota_change_test.js
@@ -0,0 +1,20 @@
+// Copyright 2020 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+function onQuotaChange(e) {
+  done();
+}
+
+function test() {
+  if (!navigator.storage.onquotachange) {
+    debug('Adding change listener.');
+
+    navigator.storage.addEventListener('quotachange',
+                                         onQuotaChange);
+    debug('Change listener added, navigating to #ready.');
+    document.location.hash = '#ready';
+  } else {
+    debug('This test requires navigator.storage.onquotachange');
+  }
+}
diff --git a/content/test/gpu/gpu_tests/test_expectations/pixel_expectations.txt b/content/test/gpu/gpu_tests/test_expectations/pixel_expectations.txt
index aecbdbf..4c1e7ec1 100644
--- a/content/test/gpu/gpu_tests/test_expectations/pixel_expectations.txt
+++ b/content/test/gpu/gpu_tests/test_expectations/pixel_expectations.txt
@@ -56,9 +56,6 @@
 # results: [ Failure RetryOnFailure Skip ]
 # END TAG HEADER
 
-# Seems to be flaky on the new AMD R7 240 drivers.
-crbug.com/653538 [ win amd-0x6613 ] Pixel_GpuRasterization_BlueBox [ RetryOnFailure ]
-
 # Software compositing is not supported on Android/ChromeOS/Fuchsia: we skip the
 # tests that disable GPU compositing (--disable-gpu-compositing).
 [ android ] Pixel_OffscreenCanvasUnaccelerated2D [ Skip ]
@@ -112,7 +109,6 @@
 crbug.com/1115673 [ fuchsia ] Pixel_CanvasLowLatencyWebGLDrawImage [ Skip ]
 crbug.com/1115673 [ fuchsia ] Pixel_CanvasLowLatencyWebGLRoundedCorners [ Skip ]
 crbug.com/1115673 [ fuchsia ] Pixel_CanvasLowLatencyWebGLOccluded [ Skip ]
-crbug.com/1136742 [ fuchsia ] Pixel_WebGLTransparentGreenTriangle_NoAlpha_ImplicitClear [ RetryOnFailure ]
 
 # Tests running with SwiftShader are skipped on platforms where SwiftShader
 # isn't supported.
@@ -146,45 +142,17 @@
 
 crbug.com/521588 [ android ] Pixel_ScissorTestWithPreserveDrawingBuffer [ Failure ]
 
-# TODO(vmiura) check / generate reference images for Android devices
-crbug.com/624256 [ mac ] Pixel_SolidColorBackground [ Failure ]
-
 crbug.com/624256 [ android ] Pixel_SolidColorBackground [ Failure ]
 
-crbug.com/690277 [ mac intel-0xd26 debug ] Pixel_CSSFilterEffects [ Failure ]
-
-# Became flaky on 10.13.6. When it flakes, it flakes 3 times, so
-# mark failing, unfortunately.
-crbug.com/872423 [ highsierra amd ] Pixel_CSSFilterEffects [ Failure ]
-
-# TODO(kbr): flakily timing out on this configuration.
-crbug.com/648369 [ linux debug intel ] * [ RetryOnFailure ]
-
-# Flaky for unknown reasons only on macOS. Not planning to investigate
-# further.
-crbug.com/660461 [ mac ] Pixel_ScissorTestWithPreserveDrawingBuffer [ RetryOnFailure ]
-
 # Failing on Nexus 5; haven't investigated why yet.
 crbug.com/773293 [ android android-nexus-5 ] Pixel_WebGL2_BlitFramebuffer_Result_Displayed [ Skip ]
 crbug.com/773293 [ android android-nexus-5 ] Pixel_WebGL2_ClearBufferfv_Result_Displayed [ Skip ]
 
 crbug.com/774809 [ mac intel ] Pixel_WebGLGreenTriangle_NonChromiumImage_NoAA_NoAlpha [ Failure ]
 
-crbug.com/857578 [ highsierra intel-0xa2e ] Pixel_OffscreenCanvasTransferBeforeStyleResize [ RetryOnFailure ]
-
 # Failing on NVIDIA Shield TV; not sure why yet.
 crbug.com/791733 [ android nvidia ] Pixel_WebGL_PremultipliedAlpha_False [ Failure ]
 
-# Failing on retina Macs
-crbug.com/744658 [ mac amd-0x6821 ] Pixel_Canvas2DRedBox_NoGpuProcess [ Failure ]
-crbug.com/744658 [ mac amd-0x6821 ] Pixel_CSS3DBlueBox_NoGpuProcess [ Failure ]
-
-# TODO(fserb): temporarily suppress this test.
-crbug.com/840394 [ linux skia-renderer-disabled ] Pixel_OffscreenCanvas2DResizeOnWorker [ RetryOnFailure ]
-crbug.com/840394 [ linux skia-renderer-gl ] Pixel_OffscreenCanvas2DResizeOnWorker [ RetryOnFailure ]
-crbug.com/840394 [ linux skia-renderer-vulkan ] Pixel_OffscreenCanvas2DResizeOnWorker [ RetryOnFailure ]
-crbug.com/840394 [ mac ] Pixel_OffscreenCanvas2DResizeOnWorker [ RetryOnFailure ]
-
 # TODO(kbr): temporary suppression for new test.
 crbug.com/575305 [ linux ] Pixel_WebGLSadCanvas [ Skip ]
 crbug.com/575305 [ win ] Pixel_WebGLSadCanvas [ Skip ]
@@ -192,11 +160,7 @@
 crbug.com/575305 [ android ] Pixel_WebGLSadCanvas [ Skip ]
 crbug.com/575305 [ fuchsia ] Pixel_WebGLSadCanvas [ Skip ]
 
-crbug.com/868596 [ android android-chromium android-nexus-9 ] Pixel_CanvasLowLatencyWebGL [ Failure ]
-crbug.com/868596 [ android android-chromium android-shield-android-tv ] Pixel_CanvasLowLatencyWebGL [ Failure ]
-
 crbug.com/868596 [ android android-chromium android-nexus-9 ] Pixel_OffscreenCanvasWebGLPaintAfterResize [ Failure ]
-crbug.com/868596 [ android android-chromium android-shield-android-tv ] Pixel_OffscreenCanvasWebGLPaintAfterResize [ Failure ]
 
 # float16 is not yet supported for accelerated canvases
 crbug.com/948141 Pixel_CanvasDisplaySRGBAccelerated2D [ Skip ]
@@ -208,7 +172,6 @@
 
 # Flakes on Nexus 5X.
 crbug.com/883500 [ android-chromium android-nexus-5x ] Pixel_BackgroundImage [ RetryOnFailure ]
-crbug.com/1068620 [ android android-chromium android-nexus-5x ] Pixel_OffscreenCanvasWebGLPaintAfterResize [ RetryOnFailure ]
 crbug.com/1065514 [ android android-chromium android-nexus-5x ] Pixel_WebGLReadPixelsTabSwitch [ RetryOnFailure ]
 crbug.com/1121476 [ android android-chromium android-nexus-5x ] Pixel_Canvas2DTabSwitch [ RetryOnFailure ]
 
@@ -260,12 +223,8 @@
 
 # Producing incorrect image on Win10 Intel HD 630 and UHD 630 w/ 26.20.100.6912
 # or later drivers.
-crbug.com/997313 [ win intel-0x5912 skia-renderer-disabled ] Pixel_WebGL_PremultipliedAlpha_False [ Failure ]
 crbug.com/997313 [ win intel-0x5912 skia-renderer-gl ] Pixel_WebGL_PremultipliedAlpha_False [ Failure ]
-crbug.com/997313 [ win intel-0x5912 skia-renderer-vulkan ] Pixel_WebGL_PremultipliedAlpha_False [ Failure ]
-crbug.com/997313 [ win intel-0x3e92 skia-renderer-disabled ] Pixel_WebGL_PremultipliedAlpha_False [ Failure ]
 crbug.com/997313 [ win intel-0x3e92 skia-renderer-gl ] Pixel_WebGL_PremultipliedAlpha_False [ Failure ]
-crbug.com/997313 [ win intel-0x3e92 skia-renderer-vulkan ] Pixel_WebGL_PremultipliedAlpha_False [ Failure ]
 
 # Flakes on Nexus 9 or NVIDIA Shield TV
 crbug.com/1019462 [ android android-nexus-9 skia-renderer-disabled ] Pixel_Video_MP4_FourColors_Aspect_4x3 [ RetryOnFailure ]
@@ -276,12 +235,7 @@
 crbug.com/1019462 [ android android-nexus-9 skia-renderer-disabled ] Pixel_Video_Context_Loss_VP9 [ RetryOnFailure ]
 crbug.com/1019462 [ android android-nexus-9 skia-renderer-disabled ] Pixel_WebGL2_BlitFramebuffer_Result_Displayed [ RetryOnFailure ]
 crbug.com/1019462 [ android android-shield-android-tv skia-renderer-disabled ] Pixel_Video_MP4_FourColors_Aspect_4x3 [ RetryOnFailure ]
-crbug.com/1019462 [ android android-shield-android-tv skia-renderer-disabled ] Pixel_Video_MP4_FourColors_Rot_180 [ RetryOnFailure ]
-crbug.com/1019462 [ android android-shield-android-tv skia-renderer-disabled ] Pixel_Video_MP4_FourColors_Rot_270 [ RetryOnFailure ]
 crbug.com/1019462 [ android android-shield-android-tv skia-renderer-disabled ] Pixel_Video_MP4_FourColors_Rot_90 [ RetryOnFailure ]
-crbug.com/1019462 [ android android-shield-android-tv skia-renderer-disabled ] Pixel_Video_MP4_Rounded_Corner [ RetryOnFailure ]
-crbug.com/1019462 [ android android-shield-android-tv skia-renderer-disabled ] Pixel_Video_Context_Loss_VP9 [ RetryOnFailure ]
-crbug.com/1019462 [ android android-shield-android-tv skia-renderer-disabled ] Pixel_WebGL2_BlitFramebuffer_Result_Displayed [ RetryOnFailure ]
 
 # Skip dual gpu switching tests on Mac Nvidia because this
 # configuration has been forced to use only the low-power GPU due to
@@ -292,16 +246,8 @@
 crbug.com/1048892 [ mac nvidia ] Pixel_OffscreenCanvasIBRCWebGLHighPerfMain [ Skip ]
 crbug.com/1048892 [ mac nvidia ] Pixel_OffscreenCanvasIBRCWebGLHighPerfWorker [ Skip ]
 
-# Flakes on Linux, Mac and Windows
+# Flakes on Linux
 crbug.com/1028975 [ linux ] Pixel_PrecisionRoundedCorner [ RetryOnFailure ]
-crbug.com/1028975 [ mac ] Pixel_PrecisionRoundedCorner [ RetryOnFailure ]
-crbug.com/1028975 [ win ] Pixel_PrecisionRoundedCorner [ RetryOnFailure ]
-crbug.com/1069339 [ mac intel-0xd26 ] Pixel_OffscreenCanvasIBRCWebGLHighPerfWorker [ RetryOnFailure ]
-
-# VP9 appears to not recover correctly after GPU process crashes on Windows.
-crbug.com/1033982 [ win nvidia skia-renderer-disabled ] Pixel_Video_Context_Loss_VP9 [ RetryOnFailure ]
-crbug.com/1033982 [ win nvidia skia-renderer-gl ] Pixel_Video_Context_Loss_VP9 [ RetryOnFailure ]
-crbug.com/1033982 [ win nvidia skia-renderer-vulkan ] Pixel_Video_Context_Loss_VP9 [ RetryOnFailure ]
 
 # HDR rendering with PQ color space appears to be broken on Windows RS2.
 # TODO(sunnyps): Revert this temporary suppression after ensuring pixel tests
@@ -414,9 +360,6 @@
 # DirectComposition tests are not expected to work properly on Windows 7.
 crbug.com/1086758 [ win7 ] Pixel_DirectComposition* [ Skip ]
 
-# 3D box is shaded incorrectly using SkiaRenderer Dawn on Windows.
-crbug.com/1082769 [ win skia-renderer-dawn ] Pixel_CSS3DBlueBox [ Failure ]
-
 # Flakes on gpu-fyi-try-chromeos-kevin and Fuchsia x64, produces notably different image.
 crbug.com/1086687 [ chromeos chromeos-board-kevin ] Pixel_PrecisionRoundedCorner [ Skip ]
 crbug.com/1136875 [ fuchsia ] Pixel_PrecisionRoundedCorner [ Skip ]
@@ -427,9 +370,6 @@
 # Produces blank images on gpu-fyi-try-chromeos-kevin, gpu-fyi-try-chromeos-amd64-generic.
 crbug.com/1086690 [ chromeos ] Pixel_WebGLSadCanvas [ Skip ]
 
-# Likely produces a Dawn validation errors that makes rendering skipped.
-crbug.com/1097735 [ skia-renderer-dawn ] Pixel_PaintWorkletTransform [ Failure ]
-
 # Cannot use file in Chromium checkout for fake video capture device on Android
 # or ChromeOS.
 crbug.com/1129879 [ android ] Pixel_Video_Media_Stream_Incompatible_Stride [ Skip ]
diff --git a/content/test/gpu/gpu_tests/test_expectations/webgl2_conformance_expectations.txt b/content/test/gpu/gpu_tests/test_expectations/webgl2_conformance_expectations.txt
index e9af929..98e4a189 100644
--- a/content/test/gpu/gpu_tests/test_expectations/webgl2_conformance_expectations.txt
+++ b/content/test/gpu/gpu_tests/test_expectations/webgl2_conformance_expectations.txt
@@ -122,9 +122,6 @@
 # under crbug.com/963205 once these two failures are fixed.
 crbug.com/1136231 [ win ] conformance/extensions/s3tc-and-rgtc.html [ Failure ]
 crbug.com/1136231 [ linux ] conformance/extensions/s3tc-and-rgtc.html [ Failure ]
-crbug.com/1152259 [ win ] conformance/reading/read-pixels-test.html [ Failure ]
-crbug.com/1152259 [ linux ] conformance/reading/read-pixels-test.html [ Failure ]
-crbug.com/1152259 [ mac passthrough ] conformance/reading/read-pixels-test.html [ Failure ]
 
 crbug.com/953120 conformance/programs/program-handling.html [ Failure ]
 
diff --git a/content/test/gpu/gpu_tests/test_expectations/webgl_conformance_expectations.txt b/content/test/gpu/gpu_tests/test_expectations/webgl_conformance_expectations.txt
index dc6d03e..bb9c8d4 100644
--- a/content/test/gpu/gpu_tests/test_expectations/webgl_conformance_expectations.txt
+++ b/content/test/gpu/gpu_tests/test_expectations/webgl_conformance_expectations.txt
@@ -205,8 +205,6 @@
 # under crbug.com/963205 and crbug.com/964321 once these two failures are fixed.
 crbug.com/1136231 [ win ] conformance/extensions/s3tc-and-rgtc.html [ Failure ]
 crbug.com/1136231 [ linux ] conformance/extensions/s3tc-and-rgtc.html [ Failure ]
-crbug.com/1152259 [ win ] conformance/reading/read-pixels-test.html [ Failure ]
-crbug.com/1152259 [ linux ] conformance/reading/read-pixels-test.html [ Failure ]
 
 # Skipping new tests
 crbug.com/angleproject/5038 conformance/extensions/ext-color-buffer-half-float.html [ Skip ]
diff --git a/docs/mac_lld.md b/docs/mac_lld.md
new file mode 100644
index 0000000..c950ba7
--- /dev/null
+++ b/docs/mac_lld.md
@@ -0,0 +1,97 @@
+# LLD for Mac builds
+
+*Disclaimer* We don't use LLD for Mac builds. Using it is not supported, and
+if you try to use it, it likely won't work. Only keep reading if you want to
+work on the build.
+
+## Background
+
+Chromium uses [LLD](https://lld.llvm.org/) as linker on all platforms,
+except when targeting macOS or iOS. LLD is faster than other ELF linkers (ELF
+is the executable file format used on most OSs, including Linux, Android,
+Chrome OS, Fuchsia), and it's faster than other COFF linkers (the executable
+file format on Windows).
+
+ld64, the standard Mach-O linker (the executable file format on iOS and macOS),
+is on the other hand already fast and works well, so there are fewer advantages
+to using LLD here.
+
+LLD does have a few advantages unrelated to speed, however:
+
+- It's developed in the LLVM repository, and we ship it in our clang package
+  (except on macOS, where it's not in the default clang package but an opt-in
+  download instead). We can fix issues upstream and quickly deploy fixed
+  versions, instead of having to wait for Xcode releases (which is where ld64
+  ships).
+
+- For the same reason, it has a much simpler LTO setup: Clang and LLD both link
+  in the same LLVM libraries that are built at the same revision, and compiler
+  and linker bitcodes are interopable for that reason. With ld64, the LTO code
+  has to be built as a plugin that's loaded by the linker.
+
+- LLD/Mach-O supports "LLVM-y" features that the ELF and COFF LLDs support as
+  well, such as thin archives and response files (ld64 supports this too as of
+  Xcode 12, but we had to wait many years for it, and it's currently
+  [too crashy](https://crbug.com/1147968) to be usable).
+
+For that reason, it's possible to opt in to LLD for macOS builds (not for
+iOS builds, and that's intentionally not in scope).
+
+A background note: There are two versions of LLD upstream: The newer ports
+that are nowadays used for ELF and COFF, and an older design that's still the
+default Mach-O LLD. There's however an effort underway to write a new Mach-O
+LLD that's built on the same design as the ELF and COFF ports. Chromium Mac
+builds uses the new Mach-O port of LLD ("`ld64.lld.darwinnew`").
+
+Just like the LLD ELF port tries to be commandline-compatible with other ELF
+linkers and the LLD COFF port tries to be commandline-compatible with the
+Visual Studio linker link.exe, the LLD Mach-O port tries to be
+commandline-compatible with ld64. This means LLD accepts different flags on
+different platforms.
+
+## Known issues
+
+- LLD/Mach-O is moving quickly, so things usually work best with a trunk build
+  of LLD instead of the prebuilt one
+- LLD does not yet have any ARM support
+  ([in-progress patch](https://reviews.llvm.org/D88629))
+- LLD-linked binaries don't work on macOS 10.13 or older
+  ([bug](https://llvm.org/PR48395))
+- LLD cannot yet link swiftshader binaries ([bug](https://llvm.org/PR48332)) --
+  but other than that, all targets build
+- LLD likely produces bad debug info, and LLD-linked binaries likely don't
+  yet work in a debugger
+- LLD-linked base\_unittests fails some unwind-related tests
+  ([bug](https://llvm.org/PR48389))
+- We haven't tried actually running any other binaries, so chances are many
+  other tests fail
+- LLD doesn't yet implement `-dead_strip`, leading to many linker warnings
+- LLD doesn't yet implement deduplication (aka "ICF").
+- LLD doesn't yet implement `-exported_symbol` or `-exported_symbols_list`,
+  leading to some linker warnings
+
+## Opting in
+
+1. First, obtain lld. Do either of:
+
+   1. build `lld` locally and copy it to
+      `third_party/llvm-build/Relase+Asserts/bin`
+   2. run `src/tools/clang/scripts/update.py --package=lld_mac` to download a
+      prebuilt lld binary.
+
+   You have to do this again every time `runhooks` updates the clang
+   package.
+
+   The prebuilt might work less well than a more up-to-date, locally-built
+   version.
+
+2. Add `use_lld = true` to your args.gn
+
+3. Add `fatal_linker_warnings = false` to your args.gn -- builds that use LLD
+   currently emit all kinds of warnings (see "Known issues" above).
+
+4. Then just build normally.
+
+`use_lld = true` makes the build use thin archives. For that reason, `use_lld`
+also switches from `libtool` to `llvm-ar`.
+
diff --git a/docs/win_cross.md b/docs/win_cross.md
index 6d76c16..790f78c 100644
--- a/docs/win_cross.md
+++ b/docs/win_cross.md
@@ -41,7 +41,7 @@
 If this fails with an error:
 
     Please follow the instructions at
-    https://chromium.googlesource.com/chromium/src/+/master/docs/win_cross.md
+    https://chromium.googlesource.com/chromium/src/+/HEAD/docs/win_cross.md
 
 then you may need to re-authenticate via:
 
diff --git a/fuchsia/runners/cast/cast_runner.cc b/fuchsia/runners/cast/cast_runner.cc
index 0be7cf4..ddff930 100644
--- a/fuchsia/runners/cast/cast_runner.cc
+++ b/fuchsia/runners/cast/cast_runner.cc
@@ -122,11 +122,14 @@
 // Populates |params| with web data settings. Web data persistence is only
 // enabled if a soft quota is explicitly specified via config-data.
 void SetDataParamsForMainContext(fuchsia::web::CreateContextParams* params) {
-  // Set web and CDM data quotas based on the CastRunner configuration.
+  // Set the web data quota based on the CastRunner configuration.
   const base::Optional<base::Value>& config = cr_fuchsia::LoadPackageConfig();
+  if (!config)
+    return;
+
   constexpr char kDataQuotaBytesSwitch[] = "data-quota-bytes";
   const base::Optional<int> data_quota_bytes =
-      config && config->FindIntPath(kDataQuotaBytesSwitch);
+      config->FindIntPath(kDataQuotaBytesSwitch);
   if (!data_quota_bytes)
     return;
 
@@ -146,11 +149,13 @@
 // CDM data persistence is always enabled, with an optional soft quota.
 void SetCdmParamsForMainContext(fuchsia::web::CreateContextParams* params) {
   const base::Optional<base::Value>& config = cr_fuchsia::LoadPackageConfig();
-  constexpr char kCdmDataQuotaBytesSwitch[] = "cdm-data-quota-bytes";
-  const base::Optional<int> cdm_data_quota_bytes =
-      config && config->FindIntPath(kCdmDataQuotaBytesSwitch);
-  if (cdm_data_quota_bytes)
-    params->set_cdm_data_quota_bytes(*cdm_data_quota_bytes);
+  if (config) {
+    constexpr char kCdmDataQuotaBytesSwitch[] = "cdm-data-quota-bytes";
+    const base::Optional<int> cdm_data_quota_bytes =
+        config->FindIntPath(kCdmDataQuotaBytesSwitch);
+    if (cdm_data_quota_bytes)
+      params->set_cdm_data_quota_bytes(*cdm_data_quota_bytes);
+  }
 
   // TODO(b/154204041): Consider using isolated-persistent-storage for CDM data.
   // Create an isolated-cache-storage sub-directory for CDM data.
@@ -694,4 +699,4 @@
   pending_components_.emplace(std::make_unique<PendingCastComponent>(
       this, std::move(startup_context), std::move(controller_request),
       url.GetContent()));
-}
\ No newline at end of file
+}
diff --git a/google_apis/gaia/oauth2_api_call_flow.cc b/google_apis/gaia/oauth2_api_call_flow.cc
index 1a1fa80..eb829ab0 100644
--- a/google_apis/gaia/oauth2_api_call_flow.cc
+++ b/google_apis/gaia/oauth2_api_call_flow.cc
@@ -13,6 +13,7 @@
 #include "google_apis/gaia/gaia_urls.h"
 #include "net/base/escape.h"
 #include "net/base/load_flags.h"
+#include "net/http/http_request_headers.h"
 #include "net/http/http_status_code.h"
 #include "services/network/public/cpp/resource_request.h"
 #include "services/network/public/cpp/shared_url_loader_factory.h"
@@ -30,7 +31,7 @@
 OAuth2ApiCallFlow::OAuth2ApiCallFlow() : state_(INITIAL) {
 }
 
-OAuth2ApiCallFlow::~OAuth2ApiCallFlow() {}
+OAuth2ApiCallFlow::~OAuth2ApiCallFlow() = default;
 
 void OAuth2ApiCallFlow::Start(
     scoped_refptr<network::SharedURLLoaderFactory> url_loader_factory,
@@ -45,6 +46,10 @@
                      base::Unretained(this)));
 }
 
+net::HttpRequestHeaders OAuth2ApiCallFlow::CreateApiCallHeaders() {
+  return net::HttpRequestHeaders();
+}
+
 void OAuth2ApiCallFlow::EndApiCall(std::unique_ptr<std::string> body) {
   CHECK_EQ(API_CALL_STARTED, state_);
   std::unique_ptr<network::SimpleURLLoader> source = std::move(url_loader_);
@@ -52,8 +57,7 @@
   int status_code = 0;
   if (source->ResponseInfo() && source->ResponseInfo()->headers)
     status_code = source->ResponseInfo()->headers->response_code();
-  if (source->NetError() != net::OK ||
-      (status_code != net::HTTP_OK && status_code != net::HTTP_NO_CONTENT)) {
+  if (source->NetError() != net::OK || !IsExpectedSuccessCode(status_code)) {
     state_ = ERROR_STATE;
     ProcessApiCallFailure(source->NetError(), source->ResponseInfo(),
                           std::move(body));
@@ -71,6 +75,10 @@
   return body.empty() ? "GET" : "POST";
 }
 
+bool OAuth2ApiCallFlow::IsExpectedSuccessCode(int code) const {
+  return code == net::HTTP_OK || code == net::HTTP_NO_CONTENT;
+}
+
 void OAuth2ApiCallFlow::OnURLLoadComplete(std::unique_ptr<std::string> body) {
   CHECK_EQ(API_CALL_STARTED, state_);
   EndApiCall(std::move(body));
@@ -91,8 +99,10 @@
   request->url = CreateApiCallUrl();
   request->method = request_type;
   request->credentials_mode = network::mojom::CredentialsMode::kOmit;
+  request->headers = CreateApiCallHeaders();
   request->headers.SetHeader("Authorization",
                              MakeAuthorizationValue(access_token));
+
   std::unique_ptr<network::SimpleURLLoader> result =
       network::SimpleURLLoader::Create(std::move(request), traffic_annotation);
 
diff --git a/google_apis/gaia/oauth2_api_call_flow.h b/google_apis/gaia/oauth2_api_call_flow.h
index a74226e..f9910d6 100644
--- a/google_apis/gaia/oauth2_api_call_flow.h
+++ b/google_apis/gaia/oauth2_api_call_flow.h
@@ -19,6 +19,10 @@
 class SharedURLLoaderFactory;
 }
 
+namespace net {
+class HttpRequestHeaders;
+}
+
 // Base class for all classes that implement a flow to call OAuth2 enabled APIs,
 // given an access token to the service.  This class abstracts the basic steps
 // and exposes template methods for sub-classes to implement for API specific
@@ -39,6 +43,7 @@
 
   // Methods to help create the API request.
   virtual GURL CreateApiCallUrl() = 0;
+  virtual net::HttpRequestHeaders CreateApiCallHeaders();
   virtual std::string CreateApiCallBody() = 0;
   virtual std::string CreateApiCallBodyContentType();
 
@@ -46,6 +51,11 @@
   // with the request.
   virtual std::string GetRequestTypeForBody(const std::string& body);
 
+  // Called when the API call ends to check whether it succeeded, and decide
+  // which of the following 2 process functions to call. Should be overriden by
+  // subclasses if the expected success response code is not 200 or 204.
+  virtual bool IsExpectedSuccessCode(int code) const;
+
   // Sub-classes can expose an appropriate observer interface by implementing
   // these template methods.
   // Called when the API call finished successfully. |body| may be null.
diff --git a/google_apis/gaia/oauth2_api_call_flow_unittest.cc b/google_apis/gaia/oauth2_api_call_flow_unittest.cc
index e1a50374..17f1088 100644
--- a/google_apis/gaia/oauth2_api_call_flow_unittest.cc
+++ b/google_apis/gaia/oauth2_api_call_flow_unittest.cc
@@ -54,6 +54,7 @@
 
   MOCK_METHOD0(CreateApiCallUrl, GURL());
   MOCK_METHOD0(CreateApiCallBody, std::string());
+  MOCK_METHOD0(CreateApiCallHeaders, net::HttpRequestHeaders());
   MOCK_METHOD2(ProcessApiCallSuccess,
                void(const network::mojom::URLResponseHead* head,
                     std::unique_ptr<std::string> body));
@@ -92,11 +93,13 @@
         network::URLLoaderCompletionStatus(error));
   }
 
+ protected:
   void SetupApiCall(bool succeeds, net::HttpStatusCode status) {
     std::string body(CreateBody());
     GURL url(CreateApiUrl());
     EXPECT_CALL(flow_, CreateApiCallBody()).WillOnce(Return(body));
     EXPECT_CALL(flow_, CreateApiCallUrl()).WillOnce(Return(url));
+    EXPECT_CALL(flow_, CreateApiCallHeaders());
 
     AddFetchResult(url, succeeds, status, std::string());
   }
@@ -150,3 +153,39 @@
   EXPECT_EQ("Bearer access_token", auth_header);
   EXPECT_EQ(body, network::GetUploadData(pending[0].request));
 }
+
+net::HttpRequestHeaders CreateHeaders() {
+  net::HttpRequestHeaders headers;
+  headers.SetHeader("Test-Header-Field", "test content");
+  return headers;
+}
+
+TEST_F(OAuth2ApiCallFlowTest, ExpectedMultipleHTTPHeaders) {
+  std::string body = CreateBody();
+  GURL url(CreateApiUrl());
+  SetupApiCall(true, net::HTTP_OK);
+
+  // Overwrite EXPECT_CALL default return so that we get multiple headers.
+  ON_CALL(flow_, CreateApiCallHeaders).WillByDefault(Return(CreateHeaders()));
+
+  // ... never mind the HTTP response part of the setup --- don't want
+  // TestURLLoaderFactory replying to it just yet as it would prevent examining
+  // the request headers.
+  test_url_loader_factory_.ClearResponses();
+
+  flow_.Start(shared_factory_, kAccessToken);
+  const std::vector<network::TestURLLoaderFactory::PendingRequest>& pending =
+      *test_url_loader_factory_.pending_requests();
+  ASSERT_EQ(1u, pending.size());
+  EXPECT_EQ(url, pending[0].request.url);
+
+  const auto& headers = pending[0].request.headers;
+  std::string auth_header;
+  EXPECT_TRUE(headers.GetHeader("Authorization", &auth_header));
+  EXPECT_EQ("Bearer access_token", auth_header);
+  std::string test_header_content;
+  EXPECT_TRUE(headers.GetHeader("Test-Header-Field", &test_header_content));
+  EXPECT_EQ("test content", test_header_content);
+
+  EXPECT_EQ(body, network::GetUploadData(pending[0].request));
+}
diff --git a/gpu/command_buffer/common/gles2_cmd_utils.cc b/gpu/command_buffer/common/gles2_cmd_utils.cc
index dec0cfb..0b6e26a 100644
--- a/gpu/command_buffer/common/gles2_cmd_utils.cc
+++ b/gpu/command_buffer/common/gles2_cmd_utils.cc
@@ -1092,7 +1092,6 @@
     case GL_R16UI:
     case GL_RG16UI:
     case GL_RGBA16UI:
-    case GL_RGB10_A2:
     case GL_RGB10_A2UI:
     case GL_R16_EXT:
     case GL_RG16_EXT:
diff --git a/infra/config/generated/cr-buildbucket.cfg b/infra/config/generated/cr-buildbucket.cfg
index 8507263a..51105ee 100644
--- a/infra/config/generated/cr-buildbucket.cfg
+++ b/infra/config/generated/cr-buildbucket.cfg
@@ -34266,12 +34266,11 @@
       name: "linux-rel"
       swarming_host: "chromium-swarm.appspot.com"
       swarming_tags: "vpython:native-python-wrapper"
-      dimensions: "builderless:1"
+      dimensions: "builder:linux-rel"
       dimensions: "cores:8"
       dimensions: "cpu:x86-64"
       dimensions: "os:Ubuntu-16.04"
       dimensions: "pool:luci.chromium.try"
-      dimensions: "ssd:0"
       exe {
         cipd_package: "infra/recipe_bundles/chromium.googlesource.com/chromium/tools/build"
         cipd_version: "refs/heads/master"
diff --git a/infra/config/subprojects/chromium/try.star b/infra/config/subprojects/chromium/try.star
index 4d63f28..99feda62 100644
--- a/infra/config/subprojects/chromium/try.star
+++ b/infra/config/subprojects/chromium/try.star
@@ -1028,6 +1028,7 @@
 try_.chromium_linux_builder(
     name = "linux-rel",
     branch_selector = branches.STANDARD_MILESTONE,
+    builderless = not settings.is_master,
     goma_jobs = goma.jobs.J150,
     main_list_view = "try",
     tryjob = try_.job(),
diff --git a/ios/chrome/browser/link_to_text/BUILD.gn b/ios/chrome/browser/link_to_text/BUILD.gn
index 4f138b9c..b6d6db7 100644
--- a/ios/chrome/browser/link_to_text/BUILD.gn
+++ b/ios/chrome/browser/link_to_text/BUILD.gn
@@ -25,6 +25,8 @@
 source_set("internal") {
   sources = [
     "link_generation_outcome.h",
+    "link_to_text_constants.h",
+    "link_to_text_constants.mm",
     "link_to_text_utils.h",
     "link_to_text_utils.mm",
   ]
diff --git a/ios/chrome/browser/link_to_text/link_to_text_constants.h b/ios/chrome/browser/link_to_text/link_to_text_constants.h
new file mode 100644
index 0000000..d78224de
--- /dev/null
+++ b/ios/chrome/browser/link_to_text/link_to_text_constants.h
@@ -0,0 +1,15 @@
+// Copyright 2020 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef IOS_CHROME_BROWSER_LINK_TO_TEXT_LINK_TO_TEXT_CONSTANTS_H_
+#define IOS_CHROME_BROWSER_LINK_TO_TEXT_LINK_TO_TEXT_CONSTANTS_H_
+
+namespace link_to_text {
+
+// Number of milliseconds before timing out link generation requests.
+extern const double kLinkGenerationTimeoutInMs;
+
+}  // namespace link_to_text
+
+#endif  // IOS_CHROME_BROWSER_LINK_TO_TEXT_LINK_TO_TEXT_CONSTANTS_H_
diff --git a/ios/chrome/browser/link_to_text/link_to_text_constants.mm b/ios/chrome/browser/link_to_text/link_to_text_constants.mm
new file mode 100644
index 0000000..c9d2c3f
--- /dev/null
+++ b/ios/chrome/browser/link_to_text/link_to_text_constants.mm
@@ -0,0 +1,15 @@
+// Copyright 2020 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#import "ios/chrome/browser/link_to_text/link_to_text_constants.h"
+
+#if !defined(__has_feature) || !__has_feature(objc_arc)
+#error "This file requires ARC support."
+#endif
+
+namespace link_to_text {
+
+const double kLinkGenerationTimeoutInMs = 500.0;
+
+}  // namespace link_to_text
diff --git a/ios/chrome/browser/link_to_text/link_to_text_response.h b/ios/chrome/browser/link_to_text/link_to_text_response.h
index 400340b..29ccb3a 100644
--- a/ios/chrome/browser/link_to_text/link_to_text_response.h
+++ b/ios/chrome/browser/link_to_text/link_to_text_response.h
@@ -29,9 +29,11 @@
 - (instancetype)init NS_UNAVAILABLE;
 
 // Parses a serialized response stored in |value| into a LinkToTextResponse
-// instance.
+// instance, along with the associated |webState| and |latency| for generating
+// the response.
 + (instancetype)linkToTextResponseWithValue:(const base::Value*)value
-                                   webState:(web::WebState*)webState;
+                                   webState:(web::WebState*)webState
+                                    latency:(base::TimeDelta)latency;
 
 // Response payload. Nil when an error occurred.
 @property(nonatomic, readonly) LinkToTextPayload* payload;
@@ -45,6 +47,9 @@
 // Source ID for the associated WebState.
 @property(nonatomic, readonly) ukm::SourceId sourceID;
 
+// Time taken to generate a link.
+@property(nonatomic, readonly) base::TimeDelta latency;
+
 @end
 
 #endif  // IOS_CHROME_BROWSER_LINK_TO_TEXT_LINK_TO_TEXT_RESPONSE_H_
diff --git a/ios/chrome/browser/link_to_text/link_to_text_response.mm b/ios/chrome/browser/link_to_text/link_to_text_response.mm
index 0c31be0..bd6147bb 100644
--- a/ios/chrome/browser/link_to_text/link_to_text_response.mm
+++ b/ios/chrome/browser/link_to_text/link_to_text_response.mm
@@ -25,72 +25,93 @@
 
 @interface LinkToTextResponse ()
 
-// Initializes an object with a |sourceID| representing the current WebState.
+// Initializes an object with a |sourceID| representing the current WebState,
+// along with the |latency| for link generation.
 - (instancetype)initWithSourceID:(ukm::SourceId)sourceID
+                         latency:(base::TimeDelta)latency
     NS_DESIGNATED_INITIALIZER;
 
 // Initializes an object with the given |payload| of the link generation
-// request, and a |sourceID| representing the current WebState.
+// request, a |sourceID| representing the current WebState and the |latency| for
+// link generation.
 - (instancetype)initWithPayload:(LinkToTextPayload*)payload
-                       sourceID:(ukm::SourceId)sourceID;
+                       sourceID:(ukm::SourceId)sourceID
+                        latency:(base::TimeDelta)latency;
 
 // Initializes an object with the given |error| which occurred while trying to
-// generate a link, and a |sourceID| representing the current WebState.
+// generate a link, a |sourceID| representing the current WebState and the
+// |latency| for link generation.
 - (instancetype)initWithError:(LinkGenerationError)error
-                     sourceID:(ukm::SourceId)sourceID;
+                     sourceID:(ukm::SourceId)sourceID
+                      latency:(base::TimeDelta)latency;
 
 @end
 
 @implementation LinkToTextResponse
 
-- (instancetype)initWithSourceID:(ukm::SourceId)sourceID {
+- (instancetype)initWithSourceID:(ukm::SourceId)sourceID
+                         latency:(base::TimeDelta)latency {
   if (self = [super init]) {
     _sourceID = sourceID;
+    _latency = latency;
   }
   return self;
 }
 
 - (instancetype)initWithPayload:(LinkToTextPayload*)payload
-                       sourceID:(ukm::SourceId)sourceID {
+                       sourceID:(ukm::SourceId)sourceID
+                        latency:(base::TimeDelta)latency {
   DCHECK(payload);
   DCHECK(sourceID != ukm::kInvalidSourceId);
-  if (self = [self initWithSourceID:sourceID]) {
+  if (self = [self initWithSourceID:sourceID latency:latency]) {
     _payload = payload;
   }
   return self;
 }
 
 - (instancetype)initWithError:(LinkGenerationError)error
-                     sourceID:(ukm::SourceId)sourceID {
-  if (self = [self initWithSourceID:sourceID]) {
+                     sourceID:(ukm::SourceId)sourceID
+                      latency:(base::TimeDelta)latency {
+  if (self = [self initWithSourceID:sourceID latency:latency]) {
     _error = error;
   }
   return self;
 }
 
 + (instancetype)linkToTextResponseWithValue:(const base::Value*)value
-                                   webState:(web::WebState*)webState {
+                                   webState:(web::WebState*)webState
+                                    latency:(base::TimeDelta)latency {
   if (!webState) {
-    return [LinkToTextResponse linkToTextResponseWithUnknownError];
+    return [LinkToTextResponse
+        linkToTextResponseWithUnknownErrorAndLatency:latency];
   }
 
   ukm::SourceId sourceID = ukm::GetSourceIdForWebStateDocument(webState);
 
   if (!link_to_text::IsValidDictValue(value)) {
-    return [self linkToTextResponseWithUnknownErrorAndSourceID:sourceID];
+    if (link_to_text::IsLinkGenerationTimeout(latency)) {
+      return [[self alloc] initWithError:LinkGenerationError::kTimeout
+                                sourceID:sourceID
+                                 latency:latency];
+    }
+
+    return [self linkToTextResponseWithUnknownErrorAndSourceID:sourceID
+                                                       latency:latency];
   }
 
   base::Optional<LinkGenerationOutcome> outcome =
       link_to_text::ParseStatus(value->FindDoubleKey("status"));
   if (!outcome.has_value()) {
-    return [self linkToTextResponseWithUnknownErrorAndSourceID:sourceID];
+    return [self linkToTextResponseWithUnknownErrorAndSourceID:sourceID
+                                                       latency:latency];
   }
 
   if (outcome.value() != LinkGenerationOutcome::kSuccess) {
     // Convert to Error.
     return [[self alloc]
         initWithError:link_to_text::OutcomeToError(outcome.value())
-             sourceID:sourceID];
+             sourceID:sourceID
+              latency:latency];
   }
 
   // Attempts to parse a payload from the response.
@@ -104,7 +125,8 @@
   // All values must be present to have a valid payload.
   if (!title || !fragment || !selectedText || !sourceRect) {
     // Library replied Success but some values are missing.
-    return [self linkToTextResponseWithUnknownErrorAndSourceID:sourceID];
+    return [self linkToTextResponseWithUnknownErrorAndSourceID:sourceID
+                                                       latency:latency];
   }
 
   // Create the deep-link.
@@ -118,20 +140,26 @@
         sourceView:webState->GetView()
         sourceRect:link_to_text::ConvertToBrowserRect(sourceRect.value(),
                                                       webState)];
-  return [[self alloc] initWithPayload:payload sourceID:sourceID];
+  return [[self alloc] initWithPayload:payload
+                              sourceID:sourceID
+                               latency:latency];
 }
 
 #pragma mark - Private
 
-+ (instancetype)linkToTextResponseWithUnknownError {
++ (instancetype)linkToTextResponseWithUnknownErrorAndLatency:
+    (base::TimeDelta)latency {
   return [[self alloc] initWithError:LinkGenerationError::kUnknown
-                            sourceID:ukm::kInvalidSourceId];
+                            sourceID:ukm::kInvalidSourceId
+                             latency:latency];
 }
 
-+ (instancetype)linkToTextResponseWithUnknownErrorAndSourceID:
-    (ukm::SourceId)sourceID {
++ (instancetype)
+    linkToTextResponseWithUnknownErrorAndSourceID:(ukm::SourceId)sourceID
+                                          latency:(base::TimeDelta)latency {
   return [[self alloc] initWithError:LinkGenerationError::kUnknown
-                            sourceID:sourceID];
+                            sourceID:sourceID
+                             latency:latency];
 }
 
 @end
diff --git a/ios/chrome/browser/link_to_text/link_to_text_tab_helper.h b/ios/chrome/browser/link_to_text/link_to_text_tab_helper.h
index d11f68b..36aaba1 100644
--- a/ios/chrome/browser/link_to_text/link_to_text_tab_helper.h
+++ b/ios/chrome/browser/link_to_text/link_to_text_tab_helper.h
@@ -7,10 +7,15 @@
 
 #import "base/macros.h"
 #import "base/memory/weak_ptr.h"
+#import "base/timer/elapsed_timer.h"
 #import "ios/chrome/browser/link_to_text/link_to_text_response.h"
 #import "ios/web/public/web_state_observer.h"
 #import "ios/web/public/web_state_user_data.h"
 
+namespace base {
+class ElapsedTimer;
+}  // namespace base
+
 @protocol CRWWebViewProxy;
 
 // A tab helper that observes WebState and triggers the link to text generation
@@ -56,6 +61,9 @@
   // WebStateDestroyed has been called.
   web::WebState* web_state_ = nullptr;
 
+  // Timer used to calculate the link generation latency.
+  std::unique_ptr<base::ElapsedTimer> link_generation_timer_;
+
   base::WeakPtrFactory<LinkToTextTabHelper> weak_ptr_factory_;
 
   WEB_STATE_USER_DATA_KEY_DECL();
diff --git a/ios/chrome/browser/link_to_text/link_to_text_tab_helper.mm b/ios/chrome/browser/link_to_text/link_to_text_tab_helper.mm
index f978804..b97ce8ca 100644
--- a/ios/chrome/browser/link_to_text/link_to_text_tab_helper.mm
+++ b/ios/chrome/browser/link_to_text/link_to_text_tab_helper.mm
@@ -6,7 +6,9 @@
 
 #import "base/bind.h"
 #import "base/optional.h"
+#import "base/timer/elapsed_timer.h"
 #import "base/values.h"
+#import "ios/chrome/browser/link_to_text/link_to_text_constants.h"
 #import "ios/web/public/js_messaging/web_frame.h"
 #import "ios/web/public/js_messaging/web_frames_manager.h"
 #import "ios/web/public/ui/crw_web_view_proxy.h"
@@ -18,7 +20,6 @@
 #endif
 
 namespace {
-const double kJavaScriptFunctionCallTimeoutMs = 200.0;
 const char kGetLinkToTextJavaScript[] = "linkToText.getLinkToText";
 }  // namespace
 
@@ -44,6 +45,8 @@
 }
 
 void LinkToTextTabHelper::GetLinkToText(LinkToTextCallback callback) {
+  link_generation_timer_ = std::make_unique<base::ElapsedTimer>();
+
   base::WeakPtr<LinkToTextTabHelper> weak_ptr = weak_ptr_factory_.GetWeakPtr();
   web_state_->GetWebFramesManager()->GetMainWebFrame()->CallJavaScriptFunction(
       kGetLinkToTextJavaScript, {},
@@ -52,15 +55,26 @@
           weak_ptr->OnJavaScriptResponseReceived(callback, response);
         }
       }),
-      base::TimeDelta::FromMilliseconds(kJavaScriptFunctionCallTimeoutMs));
+      base::TimeDelta::FromMilliseconds(
+          link_to_text::kLinkGenerationTimeoutInMs));
 }
 
 void LinkToTextTabHelper::OnJavaScriptResponseReceived(
     LinkToTextCallback callback,
     const base::Value* response) {
   if (callback) {
+    base::TimeDelta latency;
+    if (link_generation_timer_) {
+      // Compute latency.
+      latency = link_generation_timer_->Elapsed();
+
+      // Reset variable.
+      link_generation_timer_.reset();
+    }
+
     callback([LinkToTextResponse linkToTextResponseWithValue:response
-                                                    webState:web_state_]);
+                                                    webState:web_state_
+                                                     latency:latency]);
   }
 }
 
diff --git a/ios/chrome/browser/link_to_text/link_to_text_utils.h b/ios/chrome/browser/link_to_text/link_to_text_utils.h
index 20d165b..a38e1bc2 100644
--- a/ios/chrome/browser/link_to_text/link_to_text_utils.h
+++ b/ios/chrome/browser/link_to_text/link_to_text_utils.h
@@ -13,6 +13,7 @@
 #import "ios/chrome/browser/link_to_text/link_generation_outcome.h"
 
 namespace base {
+class TimeDelta;
 class Value;
 }  // namespace base
 
@@ -41,9 +42,12 @@
 // returned.
 base::Optional<CGRect> ParseRect(const base::Value* value);
 
-// Converts a given |webViewRect| into its browser coordinates counterpart. Uses
-// the given |webState| to do the conversion.
-CGRect ConvertToBrowserRect(CGRect webViewRect, web::WebState* webState);
+// Converts a given |web_view_rect| into its browser coordinates counterpart.
+// Uses the given |web_state| to do the conversion.
+CGRect ConvertToBrowserRect(CGRect web_view_rect, web::WebState* web_state);
+
+// Returns YES if |latency| exceeds the timeout limit for link generation.
+BOOL IsLinkGenerationTimeout(base::TimeDelta latency);
 
 }  // namespace link_to_text
 
diff --git a/ios/chrome/browser/link_to_text/link_to_text_utils.mm b/ios/chrome/browser/link_to_text/link_to_text_utils.mm
index 12a1636..47121f7 100644
--- a/ios/chrome/browser/link_to_text/link_to_text_utils.mm
+++ b/ios/chrome/browser/link_to_text/link_to_text_utils.mm
@@ -4,8 +4,10 @@
 
 #import "ios/chrome/browser/link_to_text/link_to_text_utils.h"
 
+#import "base/time/time.h"
 #import "base/values.h"
 #import "components/shared_highlighting/core/common/text_fragment.h"
+#import "ios/chrome/browser/link_to_text/link_to_text_constants.h"
 #import "ios/web/public/ui/crw_web_view_proxy.h"
 #import "ios/web/public/ui/crw_web_view_scroll_view_proxy.h"
 #import "ios/web/public/web_state.h"
@@ -80,18 +82,23 @@
                     widthValue->GetDouble(), heightValue->GetDouble());
 }
 
-CGRect ConvertToBrowserRect(CGRect webViewRect, web::WebState* webState) {
-  if (CGRectEqualToRect(webViewRect, CGRectZero) || !webState) {
-    return webViewRect;
+CGRect ConvertToBrowserRect(CGRect web_view_rect, web::WebState* web_state) {
+  if (CGRectEqualToRect(web_view_rect, CGRectZero) || !web_state) {
+    return web_view_rect;
   }
 
-  id<CRWWebViewProxy> webViewProxy = webState->GetWebViewProxy();
-  CGFloat zoomScale = webViewProxy.scrollViewProxy.zoomScale;
-  UIEdgeInsets inset = webViewProxy.scrollViewProxy.contentInset;
+  id<CRWWebViewProxy> web_view_proxy = web_state->GetWebViewProxy();
+  CGFloat zoom_scale = web_view_proxy.scrollViewProxy.zoomScale;
+  UIEdgeInsets inset = web_view_proxy.scrollViewProxy.contentInset;
 
-  return CGRectMake((webViewRect.origin.x * zoomScale) + inset.left,
-                    (webViewRect.origin.y * zoomScale) + inset.top,
-                    (webViewRect.size.width * zoomScale) + kCaretWidth,
-                    webViewRect.size.height * zoomScale);
+  return CGRectMake((web_view_rect.origin.x * zoom_scale) + inset.left,
+                    (web_view_rect.origin.y * zoom_scale) + inset.top,
+                    (web_view_rect.size.width * zoom_scale) + kCaretWidth,
+                    web_view_rect.size.height * zoom_scale);
 }
+
+BOOL IsLinkGenerationTimeout(base::TimeDelta latency) {
+  return latency.InMilliseconds() >= kLinkGenerationTimeoutInMs;
+}
+
 }  // namespace link_to_text
diff --git a/ios/chrome/browser/link_to_text/link_to_text_utils_unittest.mm b/ios/chrome/browser/link_to_text/link_to_text_utils_unittest.mm
index c82fdb7..67d115bc 100644
--- a/ios/chrome/browser/link_to_text/link_to_text_utils_unittest.mm
+++ b/ios/chrome/browser/link_to_text/link_to_text_utils_unittest.mm
@@ -8,6 +8,7 @@
 
 #import "base/values.h"
 #import "ios/chrome/browser/link_to_text/link_generation_outcome.h"
+#import "ios/chrome/browser/link_to_text/link_to_text_constants.h"
 #import "testing/gtest/include/gtest/gtest.h"
 #import "testing/platform_test.h"
 #import "url/gurl.h"
@@ -76,4 +77,15 @@
   EXPECT_FALSE(ParseRect(&copied_value).has_value());
 }
 
+// Tests that IsLinkGenerationTimeout returns the right values based on
+// different input values.
+TEST_F(LinkToTextUtilsTest, IsLinkGenerationTimeout) {
+  EXPECT_TRUE(IsLinkGenerationTimeout(
+      base::TimeDelta::FromMilliseconds(kLinkGenerationTimeoutInMs)));
+  EXPECT_TRUE(IsLinkGenerationTimeout(
+      base::TimeDelta::FromMilliseconds(kLinkGenerationTimeoutInMs + 1)));
+  EXPECT_FALSE(IsLinkGenerationTimeout(
+      base::TimeDelta::FromMilliseconds(kLinkGenerationTimeoutInMs - 1)));
+}
+
 }  // namespace link_to_text
diff --git a/ios/chrome/browser/ui/content_suggestions/content_suggestions_view_controller.mm b/ios/chrome/browser/ui/content_suggestions/content_suggestions_view_controller.mm
index b820090..f902099a 100644
--- a/ios/chrome/browser/ui/content_suggestions/content_suggestions_view_controller.mm
+++ b/ios/chrome/browser/ui/content_suggestions/content_suggestions_view_controller.mm
@@ -54,7 +54,7 @@
 const CGFloat kCardBorderRadius = 11;
 const CGFloat kDiscoverFeedContentWith = 430;
 // Value representing offset from bottom of the page to trigger pagination.
-const CGFloat kPaginationOffset = 400;
+const CGFloat kPaginationOffset = 800;
 // Height for the Discover Feed section header.
 const CGFloat kDiscoverFeedFeaderHeight = 30;
 // Minimum height of the Discover feed content to indicate that the articles
diff --git a/ios/chrome/browser/ui/link_to_text/link_to_text_mediator.mm b/ios/chrome/browser/ui/link_to_text/link_to_text_mediator.mm
index 4968d8d..644e7a9 100644
--- a/ios/chrome/browser/ui/link_to_text/link_to_text_mediator.mm
+++ b/ios/chrome/browser/ui/link_to_text/link_to_text_mediator.mm
@@ -69,9 +69,11 @@
     LinkGenerationError error = response.error.value();
     shared_highlighting::LogLinkGeneratedErrorUkmEvent(response.sourceID,
                                                        error);
+    shared_highlighting::LogGenerateErrorLatency(response.latency);
     [self linkGenerationFailedWithError:error];
   } else {
     shared_highlighting::LogLinkGeneratedSuccessUkmEvent(response.sourceID);
+    shared_highlighting::LogGenerateSuccessLatency(response.latency);
     [self shareLinkToText:response.payload];
   }
 }
diff --git a/ios/chrome/browser/ui/link_to_text/link_to_text_mediator_unittest.mm b/ios/chrome/browser/ui/link_to_text/link_to_text_mediator_unittest.mm
index 4adc93c2a..b3635771 100644
--- a/ios/chrome/browser/ui/link_to_text/link_to_text_mediator_unittest.mm
+++ b/ios/chrome/browser/ui/link_to_text/link_to_text_mediator_unittest.mm
@@ -19,6 +19,7 @@
 #import "components/ukm/ios/ukm_url_recorder.h"
 #import "components/ukm/test_ukm_recorder.h"
 #import "ios/chrome/browser/link_to_text/link_generation_outcome.h"
+#import "ios/chrome/browser/link_to_text/link_to_text_constants.h"
 #import "ios/chrome/browser/link_to_text/link_to_text_payload.h"
 #import "ios/chrome/browser/link_to_text/link_to_text_tab_helper.h"
 #import "ios/chrome/browser/ui/link_to_text/link_to_text_consumer.h"
@@ -175,7 +176,9 @@
                                     static_cast<int64_t>(error));
   }
 
-  web::WebTaskEnvironment task_environment_;
+  web::WebTaskEnvironment task_environment_{
+      web::WebTaskEnvironment::Options::DEFAULT,
+      base::test::TaskEnvironment::TimeSource::MOCK_TIME};
   base::test::ScopedFeatureList feature_list_;
   TestWebStateListDelegate web_state_list_delegate_;
   WebStateList web_state_list_;
@@ -234,6 +237,8 @@
   histogram_tester.ExpectUniqueSample("SharedHighlights.LinkGenerated", true,
                                       1);
   ValidateLinkGeneratedSuccessUkm();
+  histogram_tester.ExpectTotalCount(
+      "SharedHighlights.LinkGenerated.TimeToGenerate", 1);
 }
 
 // Tests that the shareHighlight command is triggered with the right parameters
@@ -277,6 +282,8 @@
   histogram_tester.ExpectUniqueSample("SharedHighlights.LinkGenerated", true,
                                       1);
   ValidateLinkGeneratedSuccessUkm();
+  histogram_tester.ExpectTotalCount(
+      "SharedHighlights.LinkGenerated.TimeToGenerate", 1);
 }
 
 // Tests that the consumer is informed of a failure to generate a link when an
@@ -309,6 +316,8 @@
   histogram_tester.ExpectBucketCount("SharedHighlights.LinkGenerated.Error",
                                      error, 1);
   ValidateLinkGeneratedErrorUkm(error);
+  histogram_tester.ExpectTotalCount(
+      "SharedHighlights.LinkGenerated.Error.TimeToGenerate", 1);
 }
 
 // Tests that the consumer is informed of a failure to generate a link when an
@@ -340,6 +349,8 @@
   histogram_tester.ExpectBucketCount("SharedHighlights.LinkGenerated.Error",
                                      error, 1);
   ValidateLinkGeneratedErrorUkm(error);
+  histogram_tester.ExpectTotalCount(
+      "SharedHighlights.LinkGenerated.Error.TimeToGenerate", 1);
 }
 
 // Tests that the consumer is informed of a failure to generate a link when an
@@ -373,6 +384,8 @@
   histogram_tester.ExpectBucketCount("SharedHighlights.LinkGenerated.Error",
                                      error, 1);
   ValidateLinkGeneratedErrorUkm(error);
+  histogram_tester.ExpectTotalCount(
+      "SharedHighlights.LinkGenerated.Error.TimeToGenerate", 1);
 }
 
 // Tests that the consumer is informed of a failure to generate a link when an
@@ -405,6 +418,8 @@
   histogram_tester.ExpectBucketCount("SharedHighlights.LinkGenerated.Error",
                                      error, 1);
   ValidateLinkGeneratedErrorUkm(error);
+  histogram_tester.ExpectTotalCount(
+      "SharedHighlights.LinkGenerated.Error.TimeToGenerate", 1);
 }
 
 // Tests that the consumer is informed of a failure to generate a link when a
@@ -437,4 +452,48 @@
   histogram_tester.ExpectBucketCount("SharedHighlights.LinkGenerated.Error",
                                      error, 1);
   ValidateLinkGeneratedErrorUkm(error);
+  histogram_tester.ExpectTotalCount(
+      "SharedHighlights.LinkGenerated.Error.TimeToGenerate", 1);
+}
+
+// Tests that a timeout error is recorded when the link generation requests
+// actually times out.
+TEST_F(LinkToTextMediatorTest, LinkGenerationTimeout) {
+  base::HistogramTester histogram_tester;
+
+  // Set-up with any response, which doesn't matter since the mocked WebFrame
+  // will simply invoke the callback with nullptr (due to a timeout).
+  std::unique_ptr<base::Value> success_response =
+      CreateErrorResponse(LinkGenerationOutcome::kSuccess);
+  SetLinkToTextResponse(std::move(success_response), /*zoom=*/1.0);
+
+  main_frame_->set_force_timeout(true);
+
+  __block BOOL callback_invoked = NO;
+  [[[mocked_consumer_ expect] andDo:^(NSInvocation*) {
+    callback_invoked = YES;
+  }] linkGenerationFailed];
+
+  [mediator_ handleLinkToTextSelection];
+
+  // Advance time to skip waiting for the timeout.
+  task_environment_.FastForwardBy(base::TimeDelta::FromMilliseconds(
+      link_to_text::kLinkGenerationTimeoutInMs + 10));
+
+  ASSERT_TRUE(WaitUntilConditionOrTimeout(kWaitForJSCompletionTimeout, ^BOOL {
+    base::RunLoop().RunUntilIdle();
+    return callback_invoked;
+  }));
+
+  [mocked_consumer_ verify];
+
+  // Make sure the correct metric were recorded.
+  LinkGenerationError error = LinkGenerationError::kTimeout;
+  histogram_tester.ExpectUniqueSample("SharedHighlights.LinkGenerated", false,
+                                      1);
+  histogram_tester.ExpectBucketCount("SharedHighlights.LinkGenerated.Error",
+                                     error, 1);
+  ValidateLinkGeneratedErrorUkm(error);
+  histogram_tester.ExpectTotalCount(
+      "SharedHighlights.LinkGenerated.Error.TimeToGenerate", 1);
 }
diff --git a/ios/google_internal/frameworks/chrome_internal_dynamic_framework.arm64.zip.sha1 b/ios/google_internal/frameworks/chrome_internal_dynamic_framework.arm64.zip.sha1
index d9d21a93..d250f38df 100644
--- a/ios/google_internal/frameworks/chrome_internal_dynamic_framework.arm64.zip.sha1
+++ b/ios/google_internal/frameworks/chrome_internal_dynamic_framework.arm64.zip.sha1
@@ -1 +1 @@
-01ff106b761c5001e0a0e4613d44ccd469e9d59d
\ No newline at end of file
+b454fae9849ece33c703d1a3bde06ee60197a0b2
\ No newline at end of file
diff --git a/ios/google_internal/frameworks/chrome_internal_dynamic_framework.x64.zip.sha1 b/ios/google_internal/frameworks/chrome_internal_dynamic_framework.x64.zip.sha1
index cf9c001..efa7611 100644
--- a/ios/google_internal/frameworks/chrome_internal_dynamic_framework.x64.zip.sha1
+++ b/ios/google_internal/frameworks/chrome_internal_dynamic_framework.x64.zip.sha1
@@ -1 +1 @@
-8b5a6c206c8467611657cff6782e56e316d53024
\ No newline at end of file
+a317078fa0a4d0079cbd5a275538552e1d9ede19
\ No newline at end of file
diff --git a/ios/google_internal/frameworks/chrome_sso_internal_dynamic_framework.arm64.zip.sha1 b/ios/google_internal/frameworks/chrome_sso_internal_dynamic_framework.arm64.zip.sha1
index 6d351544..ecc56cc 100644
--- a/ios/google_internal/frameworks/chrome_sso_internal_dynamic_framework.arm64.zip.sha1
+++ b/ios/google_internal/frameworks/chrome_sso_internal_dynamic_framework.arm64.zip.sha1
@@ -1 +1 @@
-8da2fa5876d6c33918a8813896ea4732d55e1b80
\ No newline at end of file
+562263f237c7382847b69ea22c1b0dba5853073f
\ No newline at end of file
diff --git a/ios/google_internal/frameworks/remoting_dogfood_internal_dynamic_framework.arm64.zip.sha1 b/ios/google_internal/frameworks/remoting_dogfood_internal_dynamic_framework.arm64.zip.sha1
index fef39a4..7f78e24 100644
--- a/ios/google_internal/frameworks/remoting_dogfood_internal_dynamic_framework.arm64.zip.sha1
+++ b/ios/google_internal/frameworks/remoting_dogfood_internal_dynamic_framework.arm64.zip.sha1
@@ -1 +1 @@
-a724628e1fec659323e7ba2b1b1ff93b2aa732d5
\ No newline at end of file
+cdbd06a1732ec1887617c5039a2dee8e0488e504
\ No newline at end of file
diff --git a/ios/google_internal/frameworks/remoting_dogfood_internal_dynamic_framework.x64.zip.sha1 b/ios/google_internal/frameworks/remoting_dogfood_internal_dynamic_framework.x64.zip.sha1
index 1e2edc49..c18d95f 100644
--- a/ios/google_internal/frameworks/remoting_dogfood_internal_dynamic_framework.x64.zip.sha1
+++ b/ios/google_internal/frameworks/remoting_dogfood_internal_dynamic_framework.x64.zip.sha1
@@ -1 +1 @@
-a0be55e12d60b4fff74c519dc832cf88398cea1a
\ No newline at end of file
+ea15561121422ae27385eeab1b08d7421a2ecfbd
\ No newline at end of file
diff --git a/ios/google_internal/frameworks/remoting_internal_dynamic_framework.arm64.zip.sha1 b/ios/google_internal/frameworks/remoting_internal_dynamic_framework.arm64.zip.sha1
index 6e9f39e..9cae45a 100644
--- a/ios/google_internal/frameworks/remoting_internal_dynamic_framework.arm64.zip.sha1
+++ b/ios/google_internal/frameworks/remoting_internal_dynamic_framework.arm64.zip.sha1
@@ -1 +1 @@
-1134510d04adbaab848bd2e3a6edc2347e05e750
\ No newline at end of file
+fffa3c78f5e0729e28c1861331165b0286d0a557
\ No newline at end of file
diff --git a/ios/google_internal/frameworks/remoting_internal_dynamic_framework.x64.zip.sha1 b/ios/google_internal/frameworks/remoting_internal_dynamic_framework.x64.zip.sha1
index db0be50..7456ff1 100644
--- a/ios/google_internal/frameworks/remoting_internal_dynamic_framework.x64.zip.sha1
+++ b/ios/google_internal/frameworks/remoting_internal_dynamic_framework.x64.zip.sha1
@@ -1 +1 @@
-883d8827475ada8564f242bfb0309efbb82f83e6
\ No newline at end of file
+421d1ab197fe12fbd664714a8a7dcab788f37891
\ No newline at end of file
diff --git a/ios/google_internal/frameworks/web_view_shell_internal_dynamic_framework.arm64.zip.sha1 b/ios/google_internal/frameworks/web_view_shell_internal_dynamic_framework.arm64.zip.sha1
index 7977e78..88a739cb 100644
--- a/ios/google_internal/frameworks/web_view_shell_internal_dynamic_framework.arm64.zip.sha1
+++ b/ios/google_internal/frameworks/web_view_shell_internal_dynamic_framework.arm64.zip.sha1
@@ -1 +1 @@
-b799016b63915888acdbd187f5737b922ba9e466
\ No newline at end of file
+d5d9fee309d9b734373e4402423c140b675b072d
\ No newline at end of file
diff --git a/ios/google_internal/frameworks/web_view_shell_internal_dynamic_framework.x64.zip.sha1 b/ios/google_internal/frameworks/web_view_shell_internal_dynamic_framework.x64.zip.sha1
index c8aa553..8d9c189 100644
--- a/ios/google_internal/frameworks/web_view_shell_internal_dynamic_framework.x64.zip.sha1
+++ b/ios/google_internal/frameworks/web_view_shell_internal_dynamic_framework.x64.zip.sha1
@@ -1 +1 @@
-dfbcd0b052745759d92e63255e46ccae2e36ff67
\ No newline at end of file
+13142588a0c496256f44259ec817da796d848e71
\ No newline at end of file
diff --git a/ios/web/navigation/navigation_manager_util_unittest.mm b/ios/web/navigation/navigation_manager_util_unittest.mm
index b00dfd9..2d2522c0 100644
--- a/ios/web/navigation/navigation_manager_util_unittest.mm
+++ b/ios/web/navigation/navigation_manager_util_unittest.mm
@@ -69,17 +69,6 @@
   EXPECT_EQ(item, GetItemWithUniqueID(manager_.get(), context.get()));
   EXPECT_EQ(0, GetCommittedItemIndexWithUniqueID(manager_.get(), unique_id));
 
-  // Commit another navigation so that the current item is updated.  This allows
-  // for removing the item with |unique_id|.
-  manager_->AddPendingItem(GURL("http://test.org"), Referrer(),
-                           ui::PAGE_TRANSITION_TYPED,
-                           web::NavigationInitiationType::BROWSER_INITIATED);
-  manager_->CommitPendingItem();
-  manager_->RemoveItemAtIndex(0);
-  EXPECT_FALSE(GetCommittedItemWithUniqueID(manager_.get(), unique_id));
-  EXPECT_FALSE(GetItemWithUniqueID(manager_.get(), context.get()));
-  EXPECT_EQ(-1, GetCommittedItemIndexWithUniqueID(manager_.get(), unique_id));
-
   // Add transient item.
   manager_->AddTransientItem(GURL("http://chromium.org"));
   item = manager_->GetTransientItem();
diff --git a/ios/web/navigation/wk_based_navigation_manager_impl.h b/ios/web/navigation/wk_based_navigation_manager_impl.h
index 54b500f84..7b17b16 100644
--- a/ios/web/navigation/wk_based_navigation_manager_impl.h
+++ b/ios/web/navigation/wk_based_navigation_manager_impl.h
@@ -122,7 +122,6 @@
   NavigationItem* GetItemAtIndex(size_t index) const override;
   int GetIndexOfItem(const NavigationItem* item) const override;
   int GetPendingItemIndex() const override;
-  bool RemoveItemAtIndex(int index) override;
   bool CanGoBack() const override;
   bool CanGoForward() const override;
   bool CanGoToOffset(int offset) const override;
@@ -130,8 +129,6 @@
   void GoForward() override;
   NavigationItemList GetBackwardItems() const override;
   NavigationItemList GetForwardItems() const override;
-  void CopyStateFromAndPrune(const NavigationManager* source) override;
-  bool CanPruneAllButLastCommittedItem() const override;
   void Restore(int last_committed_item_index,
                std::vector<std::unique_ptr<NavigationItem>> items) override;
   void LoadURLWithParams(const NavigationManager::WebLoadParams&) override;
diff --git a/ios/web/navigation/wk_based_navigation_manager_impl.mm b/ios/web/navigation/wk_based_navigation_manager_impl.mm
index 881f8fca..ca90df0 100644
--- a/ios/web/navigation/wk_based_navigation_manager_impl.mm
+++ b/ios/web/navigation/wk_based_navigation_manager_impl.mm
@@ -564,11 +564,6 @@
   return pending_item_index_;
 }
 
-bool WKBasedNavigationManagerImpl::RemoveItemAtIndex(int index) {
-  DLOG(WARNING) << "Not yet implemented.";
-  return true;
-}
-
 bool WKBasedNavigationManagerImpl::CanGoBack() const {
   return CanGoToOffset(-1);
 }
@@ -632,16 +627,6 @@
   return items;
 }
 
-void WKBasedNavigationManagerImpl::CopyStateFromAndPrune(
-    const NavigationManager* source) {
-  DLOG(WARNING) << "Not yet implemented.";
-}
-
-bool WKBasedNavigationManagerImpl::CanPruneAllButLastCommittedItem() const {
-  DLOG(WARNING) << "Not yet implemented.";
-  return true;
-}
-
 void WKBasedNavigationManagerImpl::
     ApplyWKWebViewForwardHistoryClobberWorkaround() {
   DCHECK(web_view_cache_.IsAttachedToWebView());
diff --git a/ios/web/public/navigation/navigation_manager.h b/ios/web/public/navigation/navigation_manager.h
index 90b6d64..6a38948 100644
--- a/ios/web/public/navigation/navigation_manager.h
+++ b/ios/web/public/navigation/navigation_manager.h
@@ -140,12 +140,6 @@
   // TODO(crbug.com/533848): Update to return size_t.
   virtual int GetPendingItemIndex() const = 0;
 
-  // Removes the item at the specified |index|.  If the index is the last
-  // committed index or the pending item, this does nothing and returns false.
-  // Otherwise this call discards any transient or pending entries.
-  // TODO(crbug.com/533848): Update to use size_t.
-  virtual bool RemoveItemAtIndex(int index) = 0;
-
   // Navigation relative to the current item.
   virtual bool CanGoBack() const = 0;
   virtual bool CanGoForward() const = 0;
@@ -191,26 +185,6 @@
   // TODO(crbug.com/904502): This API is only needed for clearing cookies.
   // Remove after //ios/web exposes a proper cookie clearing API.
   virtual void AddRestoreCompletionCallback(base::OnceClosure callback) = 0;
-
-  // Removes all items from this except the last committed item, and inserts
-  // copies of all items from |source| at the beginning of the session history.
-  //
-  // For example:
-  // source: A B *C* D
-  // this:   E F *G*
-  // result: A B C *G*
-  //
-  // If there is a pending item after *G* in |this|, it is also preserved.
-  // This ignores any pending or transient entries in |source|.  This will be a
-  // no-op if called while CanPruneAllButLastCommittedItem() is false.
-  virtual void CopyStateFromAndPrune(const NavigationManager* source) = 0;
-
-  // Whether the NavigationManager can prune all but the last committed item.
-  // This is true when all the following conditions are met:
-  // - There is a last committed NavigationItem.
-  // - There is no pending history navigation.
-  // - There is no transient NavigationItem.
-  virtual bool CanPruneAllButLastCommittedItem() const = 0;
 };
 
 }  // namespace web
diff --git a/ios/web/public/test/fakes/fake_web_frame.cc b/ios/web/public/test/fakes/fake_web_frame.cc
index 41dce154..3dc6d0b 100644
--- a/ios/web/public/test/fakes/fake_web_frame.cc
+++ b/ios/web/public/test/fakes/fake_web_frame.cc
@@ -75,9 +75,16 @@
   if (!success) {
     return false;
   }
-  const base::Value* js_result = result_map_[name].get();
-  base::PostTask(FROM_HERE, {WebThread::UI},
-                 base::BindOnce(std::move(callback), js_result));
+
+  if (force_timeout_) {
+    base::PostDelayedTask(FROM_HERE, {web::WebThread::UI},
+                          base::BindOnce(std::move(callback), nullptr),
+                          timeout);
+  } else {
+    const base::Value* js_result = result_map_[name].get();
+    base::PostTask(FROM_HERE, {WebThread::UI},
+                   base::BindOnce(std::move(callback), js_result));
+  }
   return true;
 }
 
diff --git a/ios/web/public/test/fakes/fake_web_frame.h b/ios/web/public/test/fakes/fake_web_frame.h
index 47245fa..43bfc496 100644
--- a/ios/web/public/test/fakes/fake_web_frame.h
+++ b/ios/web/public/test/fakes/fake_web_frame.h
@@ -62,6 +62,8 @@
   void AddJsResultForFunctionCall(std::unique_ptr<base::Value> js_result,
                                   const std::string& function_name);
 
+  void set_force_timeout(bool force_timeout) { force_timeout_ = force_timeout; }
+
   // Sets return value |can_call_function_| of CanCallJavaScriptFunction(),
   // which defaults to true.
   void set_can_call_function(bool can_call_function) {
@@ -85,6 +87,9 @@
   std::vector<std::string> java_script_calls_;
   // The return value of CanCallJavaScriptFunction().
   bool can_call_function_ = true;
+  // When set to true, will force calls to CallJavaScriptFunction to fail with
+  // timeout.
+  bool force_timeout_ = false;
 };
 
 // A fake web frame representing the main frame with a |frame_id_| of
diff --git a/ios/web/public/test/fakes/test_navigation_manager.h b/ios/web/public/test/fakes/test_navigation_manager.h
index 7b957861..e9818ad 100644
--- a/ios/web/public/test/fakes/test_navigation_manager.h
+++ b/ios/web/public/test/fakes/test_navigation_manager.h
@@ -35,7 +35,6 @@
   int GetIndexOfItem(const NavigationItem* item) const override;
   int GetPendingItemIndex() const override;
   int GetLastCommittedItemIndex() const override;
-  bool RemoveItemAtIndex(int index) override;
   bool CanGoBack() const override;
   bool CanGoForward() const override;
   bool CanGoToOffset(int offset) const override;
@@ -50,8 +49,6 @@
                std::vector<std::unique_ptr<NavigationItem>> items) override;
   bool IsRestoreSessionInProgress() const override;
   void AddRestoreCompletionCallback(base::OnceClosure callback) override;
-  void CopyStateFromAndPrune(const NavigationManager* source) override;
-  bool CanPruneAllButLastCommittedItem() const override;
 
   // Setters for test data.
   // Sets a value for last committed item that will be returned by
diff --git a/ios/web/public/test/fakes/test_navigation_manager.mm b/ios/web/public/test/fakes/test_navigation_manager.mm
index f08a47d..e00c0ce 100644
--- a/ios/web/public/test/fakes/test_navigation_manager.mm
+++ b/ios/web/public/test/fakes/test_navigation_manager.mm
@@ -113,16 +113,6 @@
   pending_item_index_ = index;
 }
 
-bool TestNavigationManager::RemoveItemAtIndex(int index) {
-  if (index < 0 || index >= GetItemCount())
-    return false;
-  DCHECK(items_index_ != index);
-  items_.erase(items_.begin() + index);
-  if (items_index_ > index)
-    --items_index_;
-  return true;
-}
-
 bool TestNavigationManager::CanGoBack() const {
   return items_index_ > 0;
 }
@@ -181,16 +171,6 @@
   NOTREACHED();
 }
 
-void TestNavigationManager::CopyStateFromAndPrune(
-    const NavigationManager* source) {
-  NOTREACHED();
-}
-
-bool TestNavigationManager::CanPruneAllButLastCommittedItem() const {
-  NOTREACHED();
-  return false;
-}
-
 // Adds a new navigation item of |transition| type at the end of this
 // navigation manager.
 void TestNavigationManager::AddItem(const GURL& url,
diff --git a/ipc/ipc_message_utils.cc b/ipc/ipc_message_utils.cc
index 07a9405..ec2d60e 100644
--- a/ipc/ipc_message_utils.cc
+++ b/ipc/ipc_message_utils.cc
@@ -409,6 +409,23 @@
   l->append(base::UTF16ToUTF8(p));
 }
 
+#if defined(OS_WIN) && defined(BASE_STRING16_IS_STD_U16STRING)
+bool ParamTraits<std::wstring>::Read(const base::Pickle* m,
+                                     base::PickleIterator* iter,
+                                     param_type* r) {
+  base::StringPiece16 piece16;
+  if (!iter->ReadStringPiece16(&piece16))
+    return false;
+
+  *r = base::AsWString(piece16);
+  return true;
+}
+
+void ParamTraits<std::wstring>::Log(const param_type& p, std::string* l) {
+  l->append(base::WideToUTF8(p));
+}
+#endif
+
 void ParamTraits<std::vector<char>>::Write(base::Pickle* m,
                                            const param_type& p) {
   if (p.empty()) {
diff --git a/ipc/ipc_message_utils.h b/ipc/ipc_message_utils.h
index e510743..6f95c86e 100644
--- a/ipc/ipc_message_utils.h
+++ b/ipc/ipc_message_utils.h
@@ -346,6 +346,20 @@
   COMPONENT_EXPORT(IPC) static void Log(const param_type& p, std::string* l);
 };
 
+#if defined(OS_WIN) && defined(BASE_STRING16_IS_STD_U16STRING)
+template <>
+struct ParamTraits<std::wstring> {
+  typedef std::wstring param_type;
+  static void Write(base::Pickle* m, const param_type& p) {
+    m->WriteString16(base::AsStringPiece16(p));
+  }
+  static bool Read(const base::Pickle* m,
+                   base::PickleIterator* iter,
+                   param_type* r);
+  COMPONENT_EXPORT(IPC) static void Log(const param_type& p, std::string* l);
+};
+#endif
+
 template <>
 struct COMPONENT_EXPORT(IPC) ParamTraits<std::vector<char>> {
   typedef std::vector<char> param_type;
diff --git a/media/base/media_switches.cc b/media/base/media_switches.cc
index be4e0f6..1680b6e 100644
--- a/media/base/media_switches.cc
+++ b/media/base/media_switches.cc
@@ -218,6 +218,10 @@
 const base::Feature kOverlayFullscreenVideo{"overlay-fullscreen-video",
                                             base::FEATURE_ENABLED_BY_DEFAULT};
 
+// TODO(crbug.com/1146594): Flip this to disabled in M92.
+const base::Feature kEnableMediaInternals{"enable-media-internals",
+                                          base::FEATURE_ENABLED_BY_DEFAULT};
+
 // Enable Picture-in-Picture.
 const base::Feature kPictureInPicture {
   "PictureInPicture",
diff --git a/media/base/media_switches.h b/media/base/media_switches.h
index 1b6792e..1c1a798 100644
--- a/media/base/media_switches.h
+++ b/media/base/media_switches.h
@@ -116,6 +116,7 @@
 MEDIA_EXPORT extern const base::Feature kD3D11VideoDecoderSkipMultithreaded;
 MEDIA_EXPORT extern const base::Feature kD3D11VideoDecoderAlwaysCopy;
 MEDIA_EXPORT extern const base::Feature kD3D11VideoDecoderAllowOverlay;
+MEDIA_EXPORT extern const base::Feature kEnableMediaInternals;
 MEDIA_EXPORT extern const base::Feature kExternalClearKeyForTesting;
 MEDIA_EXPORT extern const base::Feature kFFmpegDecodeOpaqueVP8;
 MEDIA_EXPORT extern const base::Feature kFailUrlProvisionFetcherForTesting;
diff --git a/media/gpu/vaapi/vaapi_picture_native_pixmap_angle.cc b/media/gpu/vaapi/vaapi_picture_native_pixmap_angle.cc
index 2f070bf6..9830e82 100644
--- a/media/gpu/vaapi/vaapi_picture_native_pixmap_angle.cc
+++ b/media/gpu/vaapi/vaapi_picture_native_pixmap_angle.cc
@@ -8,6 +8,7 @@
 #include "media/gpu/vaapi/vaapi_wrapper.h"
 #include "ui/base/ui_base_features.h"
 #include "ui/gfx/x/connection.h"
+#include "ui/gfx/x/future.h"
 #include "ui/gfx/x/xproto.h"
 #include "ui/gl/gl_bindings.h"
 #include "ui/gl/gl_image_egl_pixmap.h"
diff --git a/media/gpu/vaapi/vaapi_picture_tfp.cc b/media/gpu/vaapi/vaapi_picture_tfp.cc
index 7b604f19f..0b086ab6 100644
--- a/media/gpu/vaapi/vaapi_picture_tfp.cc
+++ b/media/gpu/vaapi/vaapi_picture_tfp.cc
@@ -8,6 +8,7 @@
 #include "media/gpu/vaapi/vaapi_wrapper.h"
 #include "ui/base/ui_base_features.h"
 #include "ui/gfx/x/connection.h"
+#include "ui/gfx/x/future.h"
 #include "ui/gl/gl_bindings.h"
 #include "ui/gl/gl_image_glx.h"
 #include "ui/gl/scoped_binders.h"
diff --git a/media/video/h265_parser.cc b/media/video/h265_parser.cc
index 295e247..7df38e9 100644
--- a/media/video/h265_parser.cc
+++ b/media/video/h265_parser.cc
@@ -603,9 +603,9 @@
     }
   }
   READ_UE_OR_RETURN(&sps->log2_min_luma_coding_block_size_minus3);
-  // This enforces that min_cb_log2_size_y below will be <= 31 and prevents
+  // This enforces that min_cb_log2_size_y below will be <= 30 and prevents
   // integer overflow math there.
-  TRUE_OR_RETURN(sps->log2_min_luma_coding_block_size_minus3 <= 28);
+  TRUE_OR_RETURN(sps->log2_min_luma_coding_block_size_minus3 <= 27);
   READ_UE_OR_RETURN(&sps->log2_diff_max_min_luma_coding_block_size);
 
   int min_cb_log2_size_y = sps->log2_min_luma_coding_block_size_minus3 + 3;
@@ -615,7 +615,7 @@
     return kInvalidStream;
 
   sps->ctb_log2_size_y = ctb_log2_size_y.ValueOrDefault(0);
-  TRUE_OR_RETURN(sps->ctb_log2_size_y <= 31);
+  TRUE_OR_RETURN(sps->ctb_log2_size_y <= 30);
   int min_cb_size_y = 1 << min_cb_log2_size_y;
   int ctb_size_y = 1 << sps->ctb_log2_size_y;
   sps->pic_width_in_ctbs_y = base::ClampCeil(
diff --git a/mojo/core/broker_host.cc b/mojo/core/broker_host.cc
index 817cc16..3b44ca3f 100644
--- a/mojo/core/broker_host.cc
+++ b/mojo/core/broker_host.cc
@@ -91,9 +91,9 @@
 
 #if defined(OS_WIN)
 
-void BrokerHost::SendNamedChannel(const base::StringPiece16& pipe_name) {
+void BrokerHost::SendNamedChannel(base::WStringPiece pipe_name) {
   InitData* data;
-  base::char16* name_data;
+  wchar_t* name_data;
   Channel::MessagePtr message = CreateBrokerMessage(
       BrokerMessageType::INIT, 0, sizeof(*name_data) * pipe_name.length(),
       &data, reinterpret_cast<void**>(&name_data));
diff --git a/mojo/core/broker_host.h b/mojo/core/broker_host.h
index ee8603c1..f17681c 100644
--- a/mojo/core/broker_host.h
+++ b/mojo/core/broker_host.h
@@ -37,7 +37,7 @@
 
 #if defined(OS_WIN)
   // Sends a named channel to the client. Like above, but for named pipes.
-  void SendNamedChannel(const base::StringPiece16& pipe_name);
+  void SendNamedChannel(base::WStringPiece pipe_name);
 #endif
 
  private:
diff --git a/mojo/core/broker_win.cc b/mojo/core/broker_win.cc
index 6c81319..e07cfc2 100644
--- a/mojo/core/broker_win.cc
+++ b/mojo/core/broker_win.cc
@@ -111,11 +111,10 @@
     CHECK_EQ(message->payload_size(),
              sizeof(BrokerMessageHeader) + sizeof(InitData) +
                  data->pipe_name_length * sizeof(base::char16));
-    const base::char16* name_data =
-        reinterpret_cast<const base::char16*>(data + 1);
+    auto* name_data = reinterpret_cast<const wchar_t*>(data + 1);
     CHECK(data->pipe_name_length);
     inviter_endpoint_ = NamedPlatformChannel::ConnectToServer(
-        base::string16(name_data, data->pipe_name_length));
+        NamedPlatformChannel::ServerName(name_data, data->pipe_name_length));
   }
 }
 
diff --git a/mojo/core/test/multiprocess_test_helper.cc b/mojo/core/test/multiprocess_test_helper.cc
index f06c4f2e..acf2d73 100644
--- a/mojo/core/test/multiprocess_test_helper.cc
+++ b/mojo/core/test/multiprocess_test_helper.cc
@@ -132,7 +132,7 @@
           temp_dir.AppendASCII(base::NumberToString(base::RandUint64()))
               .value();
 #elif defined(OS_WIN)
-      server_name = base::NumberToString16(base::RandUint64());
+      server_name = base::NumberToWString(base::RandUint64());
 #else
 #error "Platform not yet supported."
 #endif
diff --git a/mojo/public/cpp/base/file_path_mojom_traits.cc b/mojo/public/cpp/base/file_path_mojom_traits.cc
index 94aa132..6a9e025 100644
--- a/mojo/public/cpp/base/file_path_mojom_traits.cc
+++ b/mojo/public/cpp/base/file_path_mojom_traits.cc
@@ -14,8 +14,7 @@
 #if defined(OS_WIN)
   ArrayDataView<uint16_t> view;
   data.GetPathDataView(&view);
-  path_view = base::StringPiece16(
-      reinterpret_cast<const base::char16*>(view.data()), view.size());
+  path_view = {reinterpret_cast<const wchar_t*>(view.data()), view.size()};
 #else
   if (!data.ReadPath(&path_view)) {
     return false;
diff --git a/mojo/public/cpp/platform/named_platform_channel.cc b/mojo/public/cpp/platform/named_platform_channel.cc
index 277c868..0bc503d 100644
--- a/mojo/public/cpp/platform/named_platform_channel.cc
+++ b/mojo/public/cpp/platform/named_platform_channel.cc
@@ -29,7 +29,7 @@
 NamedPlatformChannel::ServerName NamedPlatformChannel::ServerNameFromUTF8(
     base::StringPiece name) {
 #if defined(OS_WIN)
-  return base::UTF8ToUTF16(name);
+  return base::UTF8ToWide(name);
 #else
   return name.as_string();
 #endif
diff --git a/mojo/public/cpp/platform/named_platform_channel.h b/mojo/public/cpp/platform/named_platform_channel.h
index e233341..6faad4e 100644
--- a/mojo/public/cpp/platform/named_platform_channel.h
+++ b/mojo/public/cpp/platform/named_platform_channel.h
@@ -5,6 +5,8 @@
 #ifndef MOJO_PUBLIC_CPP_PLATFORM_NAMED_PLATFORM_CHANNEL_H_
 #define MOJO_PUBLIC_CPP_PLATFORM_NAMED_PLATFORM_CHANNEL_H_
 
+#include <string>
+
 #include "base/command_line.h"
 #include "base/component_export.h"
 #include "base/macros.h"
@@ -13,9 +15,7 @@
 #include "mojo/public/cpp/platform/platform_channel_endpoint.h"
 #include "mojo/public/cpp/platform/platform_channel_server_endpoint.h"
 
-#if defined(OS_WIN)
-#include "base/strings/string16.h"
-#elif defined(OS_POSIX)
+#if defined(OS_POSIX)
 #include "base/files/file_path.h"
 #endif
 
@@ -35,7 +35,7 @@
   static const char kNamedHandleSwitch[];
 
 #if defined(OS_WIN)
-  using ServerName = base::string16;
+  using ServerName = std::wstring;
 #else
   using ServerName = std::string;
 #endif
@@ -49,7 +49,7 @@
     // If non-empty, a security descriptor to use when creating the pipe. If
     // empty, a default security descriptor will be used. See
     // |kDefaultSecurityDescriptor|.
-    base::string16 security_descriptor;
+    std::wstring security_descriptor;
 
     // If |true|, only a server endpoint will be allowed with the given name and
     // only one client will be able to connect. Otherwise many
diff --git a/mojo/public/cpp/platform/named_platform_channel_win.cc b/mojo/public/cpp/platform/named_platform_channel_win.cc
index b14c7ff..afae1272 100644
--- a/mojo/public/cpp/platform/named_platform_channel_win.cc
+++ b/mojo/public/cpp/platform/named_platform_channel_win.cc
@@ -27,16 +27,15 @@
 // SY = LOCAL_SYSTEM
 // BA = BUILTIN_ADMINISTRATORS
 // OW = OWNER_RIGHTS
-constexpr base::char16 kDefaultSecurityDescriptor[] =
+constexpr wchar_t kDefaultSecurityDescriptor[] =
     L"D:(A;;GA;;;SY)(A;;GA;;;BA)(A;;GA;;;OW)";
 
 NamedPlatformChannel::ServerName GenerateRandomServerName() {
-  return base::UTF8ToUTF16(
-      base::StringPrintf("%lu.%lu.%I64u", ::GetCurrentProcessId(),
-                         ::GetCurrentThreadId(), base::RandUint64()));
+  return base::StringPrintf(L"%lu.%lu.%I64u", ::GetCurrentProcessId(),
+                            ::GetCurrentThreadId(), base::RandUint64());
 }
 
-base::string16 GetPipeNameFromServerName(
+std::wstring GetPipeNameFromServerName(
     const NamedPlatformChannel::ServerName& server_name) {
   return L"\\\\.\\pipe\\mojo." + server_name;
 }
@@ -68,7 +67,7 @@
   const DWORD kPipeMode =
       PIPE_TYPE_BYTE | PIPE_READMODE_BYTE | PIPE_REJECT_REMOTE_CLIENTS;
 
-  base::string16 pipe_name = GetPipeNameFromServerName(name);
+  std::wstring pipe_name = GetPipeNameFromServerName(name);
   PlatformHandle handle(base::win::ScopedHandle(::CreateNamedPipeW(
       pipe_name.c_str(), kOpenMode, kPipeMode,
       options.enforce_uniqueness ? 1 : 255,  // Max instances.
@@ -84,7 +83,7 @@
 // static
 PlatformChannelEndpoint NamedPlatformChannel::CreateClientEndpoint(
     const ServerName& server_name) {
-  base::string16 pipe_name = GetPipeNameFromServerName(server_name);
+  std::wstring pipe_name = GetPipeNameFromServerName(server_name);
 
   // Note: This may block.
   if (!::WaitNamedPipeW(pipe_name.c_str(), NMPWAIT_USE_DEFAULT_WAIT))
diff --git a/mojo/public/cpp/platform/platform_channel.cc b/mojo/public/cpp/platform/platform_channel.cc
index 9010cbc..3005431 100644
--- a/mojo/public/cpp/platform/platform_channel.cc
+++ b/mojo/public/cpp/platform/platform_channel.cc
@@ -56,9 +56,9 @@
 #if defined(OS_WIN)
 void CreateChannel(PlatformHandle* local_endpoint,
                    PlatformHandle* remote_endpoint) {
-  base::string16 pipe_name = base::UTF8ToUTF16(base::StringPrintf(
-      "\\\\.\\pipe\\mojo.%lu.%lu.%I64u", ::GetCurrentProcessId(),
-      ::GetCurrentThreadId(), base::RandUint64()));
+  std::wstring pipe_name = base::StringPrintf(
+      L"\\\\.\\pipe\\mojo.%lu.%lu.%I64u", ::GetCurrentProcessId(),
+      ::GetCurrentThreadId(), base::RandUint64());
   DWORD kOpenMode =
       PIPE_ACCESS_DUPLEX | FILE_FLAG_OVERLAPPED | FILE_FLAG_FIRST_PIPE_INSTANCE;
   const DWORD kPipeMode = PIPE_TYPE_BYTE | PIPE_READMODE_BYTE;
diff --git a/net/base/address_list.cc b/net/base/address_list.cc
index 041c503..541a903 100644
--- a/net/base/address_list.cc
+++ b/net/base/address_list.cc
@@ -4,12 +4,16 @@
 
 #include "net/base/address_list.h"
 
+#include <iterator>
+#include <string>
 #include <utility>
+#include <vector>
 
 #include "base/bind.h"
 #include "base/callback.h"
 #include "base/containers/flat_map.h"
 #include "base/logging.h"
+#include "base/no_destructor.h"
 #include "base/values.h"
 #include "net/base/sys_addrinfo.h"
 #include "net/log/net_log_capture_mode.h"
@@ -32,6 +36,12 @@
   push_back(endpoint);
 }
 
+AddressList::AddressList(const IPEndPoint& endpoint,
+                         std::vector<std::string> aliases)
+    : dns_aliases_(std::move(aliases)) {
+  push_back(endpoint);
+}
+
 // static
 AddressList AddressList::CreateFromIPAddress(const IPAddress& address,
                                              uint16_t port) {
@@ -41,12 +51,12 @@
 // static
 AddressList AddressList::CreateFromIPAddressList(
     const IPAddressList& addresses,
-    const std::string& canonical_name) {
+    std::vector<std::string> aliases) {
   AddressList list;
-  list.set_canonical_name(canonical_name);
   for (auto iter = addresses.begin(); iter != addresses.end(); ++iter) {
     list.push_back(IPEndPoint(*iter, 0));
   }
+  list.SetDnsAliases(std::move(aliases));
   return list;
 }
 
@@ -54,8 +64,10 @@
 AddressList AddressList::CreateFromAddrinfo(const struct addrinfo* head) {
   DCHECK(head);
   AddressList list;
-  if (head->ai_canonname)
-    list.set_canonical_name(std::string(head->ai_canonname));
+  if (head->ai_canonname) {
+    std::vector<std::string> aliases({std::string(head->ai_canonname)});
+    list.SetDnsAliases(std::move(aliases));
+  }
   for (const struct addrinfo* ai = head; ai; ai = ai->ai_next) {
     IPEndPoint ipe;
     // NOTE: Ignoring non-INET* families.
@@ -70,15 +82,49 @@
 // static
 AddressList AddressList::CopyWithPort(const AddressList& list, uint16_t port) {
   AddressList out;
-  out.set_canonical_name(list.canonical_name());
-  for (size_t i = 0; i < list.size(); ++i)
-    out.push_back(IPEndPoint(list[i].address(), port));
+  out.SetDnsAliases(list.dns_aliases());
+  for (const auto& i : list)
+    out.push_back(IPEndPoint(i.address(), port));
   return out;
 }
 
+// TODO(cammie/ericorth): Consider changing the return value to
+// base::StringPiece (by non-const value), which  is often a better type
+// for passing/returning non-owned strings. In this case, because it could
+// point directly at a string literal/constant, it would allow us to avoid
+// creating a full std::string (and the annoyance of needing NoDestructor)
+// just to store empty.
+const std::string& AddressList::GetCanonicalName() const {
+  static const base::NoDestructor<std::string> nullstring_result;
+  return dns_aliases_.size() >= 1 ? dns_aliases_.front() : *nullstring_result;
+}
+
 void AddressList::SetDefaultCanonicalName() {
   DCHECK(!empty());
-  set_canonical_name(front().ToStringWithoutPort());
+  DCHECK(dns_aliases_.empty());
+  SetDnsAliases({front().ToStringWithoutPort()});
+}
+
+void AddressList::SetDnsAliases(std::vector<std::string> aliases) {
+  // TODO(cammie): Track down the callers who use {""} for `aliases` and
+  // update so that we can enforce by DCHECK below.
+  // The empty canonical name is represented by a empty `dns_aliases_`
+  // vector, so in this case we reset the field.
+  if (aliases == std::vector<std::string>({""})) {
+    dns_aliases_ = std::vector<std::string>();
+    return;
+  }
+
+  dns_aliases_ = std::move(aliases);
+}
+
+void AddressList::AppendDnsAliases(std::vector<std::string> aliases) {
+  DCHECK(aliases != std::vector<std::string>({""}));
+  using iter_t = std::vector<std::string>::iterator;
+
+  dns_aliases_.insert(dns_aliases_.end(),
+                      std::move_iterator<iter_t>(aliases.begin()),
+                      std::move_iterator<iter_t>(aliases.end()));
 }
 
 base::Value AddressList::NetLogParams() const {
@@ -89,7 +135,7 @@
     list.Append(ip_endpoint.ToString());
 
   dict.SetKey("address_list", std::move(list));
-  dict.SetStringKey("canonical_name", canonical_name());
+  dict.SetStringKey("canonical_name", GetCanonicalName());
   return dict;
 }
 
diff --git a/net/base/address_list.h b/net/base/address_list.h
index e1201f5..6542413 100644
--- a/net/base/address_list.h
+++ b/net/base/address_list.h
@@ -36,28 +36,43 @@
   // Creates an address list for a single IP literal.
   explicit AddressList(const IPEndPoint& endpoint);
 
+  // Creates an address list for a single IP literal and a list of DNS aliases.
+  AddressList(const IPEndPoint& endpoint, std::vector<std::string> aliases);
+
   static AddressList CreateFromIPAddress(const IPAddress& address,
                                          uint16_t port);
 
   static AddressList CreateFromIPAddressList(const IPAddressList& addresses,
-                                             const std::string& canonical_name);
+                                             std::vector<std::string> aliases);
 
-  // Copies the data from |head| and the chained list into an AddressList.
+  // Copies the data from `head` and the chained list into an AddressList.
   static AddressList CreateFromAddrinfo(const struct addrinfo* head);
 
-  // Returns a copy of |list| with port on each element set to |port|.
+  // Returns a copy of `list` with port on each element set to |port|.
   static AddressList CopyWithPort(const AddressList& list, uint16_t port);
 
-  // TODO(szym): Remove all three. http://crbug.com/126134
-  const std::string& canonical_name() const { return canonical_name_; }
+  // TODO(crbug.com/126134): Remove all references to canonical name
+  // in net::AddressList.
+  // Here and below, by "canonical name", we mean the value of the name for
+  // the DNS record that contained the stored-order first IP address stored
+  // by this class. Note that the canonical name, if set, is now stored as
+  // the first entry in the vector `dns_aliases_` below.
+  // Returns the first entry, if it exists, of `dns_aliases_` or an empty
+  // string otherwise.
+  const std::string& GetCanonicalName() const;
 
-  void set_canonical_name(const std::string& canonical_name) {
-    canonical_name_ = canonical_name;
-  }
-
-  // Sets canonical name to the literal of the first IP address on the list.
+  // Sets the first entry of `dns_aliases_` to the literal of the first IP
+  // address on the list. Assumes that `dns_aliases_` is empty.
   void SetDefaultCanonicalName();
 
+  // The alias chain is preserved in reverse order, from canonical name (i.e.
+  // address record name) through to query name.
+  const std::vector<std::string>& dns_aliases() const { return dns_aliases_; }
+
+  void SetDnsAliases(std::vector<std::string> aliases);
+
+  void AppendDnsAliases(std::vector<std::string> aliases);
+
   // Creates a value representation of the address list, appropriate for
   // inclusion in a NetLog.
   base::Value NetLogParams() const;
@@ -95,8 +110,11 @@
 
  private:
   std::vector<IPEndPoint> endpoints_;
-  // TODO(szym): Remove. http://crbug.com/126134
-  std::string canonical_name_;
+
+  // The first entry, if it exists, is the canonical name.
+  // The alias chain is preserved in reverse order, from canonical name (i.e.
+  // address record name) through to query name.
+  std::vector<std::string> dns_aliases_;
 };
 
 }  // namespace net
diff --git a/net/base/address_list_unittest.cc b/net/base/address_list_unittest.cc
index 93c973f..15c6770a 100644
--- a/net/base/address_list_unittest.cc
+++ b/net/base/address_list_unittest.cc
@@ -39,11 +39,11 @@
   // Copy the addrinfo struct into an AddressList object and
   // make sure it seems correct.
   AddressList addrlist1 = AddressList::CreateFromAddrinfo(&ai);
-  EXPECT_EQ("canonical.bar.com", addrlist1.canonical_name());
+  EXPECT_EQ("canonical.bar.com", addrlist1.GetCanonicalName());
 
   // Copy the AddressList to another one.
   AddressList addrlist2 = addrlist1;
-  EXPECT_EQ("canonical.bar.com", addrlist2.canonical_name());
+  EXPECT_EQ("canonical.bar.com", addrlist2.GetCanonicalName());
 }
 
 TEST(AddressListTest, CreateFromAddrinfo) {
@@ -132,13 +132,91 @@
     ip_list.push_back(ip_address);
   }
 
-  AddressList test_list = AddressList::CreateFromIPAddressList(ip_list,
-                                                               kCanonicalName);
+  // Wrap the canonical name in an alias vector.
+  std::vector<std::string> aliases({kCanonicalName});
+
+  AddressList test_list =
+      AddressList::CreateFromIPAddressList(ip_list, std::move(aliases));
   std::string canonical_name;
-  EXPECT_EQ(kCanonicalName, test_list.canonical_name());
+  EXPECT_EQ(kCanonicalName, test_list.GetCanonicalName());
   EXPECT_EQ(base::size(tests), test_list.size());
 }
 
+TEST(AddressListTest, GetCanonicalNameWhenUnset) {
+  const IPAddress kAddress(1, 2, 3, 4);
+  const IPEndPoint kEndpoint(kAddress, 0);
+  AddressList addrlist(kEndpoint);
+
+  EXPECT_TRUE(addrlist.dns_aliases().empty());
+  EXPECT_EQ(addrlist.GetCanonicalName(), "");
+}
+
+TEST(AddressListTest, SetDefaultCanonicalNameThenSetDnsAliases) {
+  const IPAddress kAddress(1, 2, 3, 4);
+  const IPEndPoint kEndpoint(kAddress, 0);
+  AddressList addrlist(kEndpoint);
+
+  addrlist.SetDefaultCanonicalName();
+
+  EXPECT_EQ(addrlist.GetCanonicalName(), "1.2.3.4");
+  EXPECT_THAT(addrlist.dns_aliases(), ElementsAre("1.2.3.4"));
+
+  std::vector<std::string> aliases({"alias1", "alias2", "alias3"});
+  addrlist.SetDnsAliases(std::move(aliases));
+
+  // Setting the aliases after setting the default canonical name
+  // replaces the default canonical name.
+  EXPECT_EQ(addrlist.GetCanonicalName(), "alias1");
+  EXPECT_THAT(addrlist.dns_aliases(),
+              ElementsAre("alias1", "alias2", "alias3"));
+}
+
+TEST(AddressListTest, SetDefaultCanonicalNameThenAppendDnsAliases) {
+  const IPAddress kAddress(1, 2, 3, 4);
+  const IPEndPoint kEndpoint(kAddress, 0);
+  AddressList addrlist(kEndpoint);
+
+  addrlist.SetDefaultCanonicalName();
+
+  EXPECT_EQ(addrlist.GetCanonicalName(), "1.2.3.4");
+  EXPECT_THAT(addrlist.dns_aliases(), ElementsAre("1.2.3.4"));
+
+  std::vector<std::string> aliases({"alias1", "alias2", "alias3"});
+  addrlist.AppendDnsAliases(std::move(aliases));
+
+  // Appending the aliases after setting the default canonical name
+  // does not replace the default canonical name.
+  EXPECT_EQ(addrlist.GetCanonicalName(), "1.2.3.4");
+  EXPECT_THAT(addrlist.dns_aliases(),
+              ElementsAre("1.2.3.4", "alias1", "alias2", "alias3"));
+}
+
+TEST(AddressListTest, DnsAliases) {
+  const IPAddress kAddress(1, 2, 3, 4);
+  const IPEndPoint kEndpoint(kAddress, 0);
+  std::vector<std::string> aliases({"alias1", "alias2", "alias3"});
+  AddressList addrlist(kEndpoint, std::move(aliases));
+
+  EXPECT_EQ(addrlist.GetCanonicalName(), "alias1");
+  EXPECT_THAT(addrlist.dns_aliases(),
+              ElementsAre("alias1", "alias2", "alias3"));
+
+  std::vector<std::string> more_aliases({"alias4", "alias5", "alias6"});
+  addrlist.AppendDnsAliases(std::move(more_aliases));
+
+  EXPECT_EQ(addrlist.GetCanonicalName(), "alias1");
+  EXPECT_THAT(
+      addrlist.dns_aliases(),
+      ElementsAre("alias1", "alias2", "alias3", "alias4", "alias5", "alias6"));
+
+  std::vector<std::string> new_aliases({"alias7", "alias8", "alias9"});
+  addrlist.SetDnsAliases(std::move(new_aliases));
+
+  EXPECT_EQ(addrlist.GetCanonicalName(), "alias7");
+  EXPECT_THAT(addrlist.dns_aliases(),
+              ElementsAre("alias7", "alias8", "alias9"));
+}
+
 TEST(AddressListTest, DeduplicatesEmptyAddressList) {
   AddressList empty;
   empty.Deduplicate();
diff --git a/net/dns/address_info.cc b/net/dns/address_info.cc
index 67a357a..9e7e1a5 100644
--- a/net/dns/address_info.cc
+++ b/net/dns/address_info.cc
@@ -150,8 +150,10 @@
 AddressList AddressInfo::CreateAddressList() const {
   AddressList list;
   auto canonical_name = GetCanonicalName();
-  if (canonical_name)
-    list.set_canonical_name(*canonical_name);
+  if (canonical_name) {
+    std::vector<std::string> aliases({*canonical_name});
+    list.SetDnsAliases(std::move(aliases));
+  }
   for (auto&& ai : *this) {
     IPEndPoint ipe;
     // NOTE: Ignoring non-INET* families.
diff --git a/net/dns/dns_response_result_extractor.cc b/net/dns/dns_response_result_extractor.cc
index 886efa59..ffcde3b1 100644
--- a/net/dns/dns_response_result_extractor.cc
+++ b/net/dns/dns_response_result_extractor.cc
@@ -7,6 +7,7 @@
 #include <limits.h>
 #include <stdint.h>
 
+#include <iterator>
 #include <map>
 #include <memory>
 #include <string>
@@ -133,15 +134,21 @@
 ExtractionError ValidateNamesAndAliases(
     base::StringPiece query_name,
     const AliasMap& aliases,
-    const std::vector<std::unique_ptr<const RecordParsed>>& results) {
+    const std::vector<std::unique_ptr<const RecordParsed>>& results,
+    std::vector<std::string>* out_ordered_aliases) {
+  DCHECK(out_ordered_aliases);
+
   // Validate that all aliases form a single non-looping chain, starting from
   // `query_name`.
   size_t aliases_in_chain = 0;
   base::StringPiece final_chain_name = query_name;
+  std::vector<std::string> reordered_aliases;
+  reordered_aliases.push_back(std::string(query_name));
   auto alias = aliases.find(std::string(query_name));
   while (alias != aliases.end() && aliases_in_chain <= aliases.size()) {
     aliases_in_chain++;
     final_chain_name = alias->second;
+    reordered_aliases.emplace_back(alias->second);
     alias = aliases.find(alias->second);
   }
 
@@ -156,6 +163,16 @@
     }
   }
 
+  // Reverse the ordered aliases so that `final_chain_name` is first and
+  // `query_name` is last.
+  using iter_t = std::vector<std::string>::reverse_iterator;
+  std::vector<std::string> reversed_aliases;
+  reversed_aliases.insert(
+      reversed_aliases.end(),
+      std::move_iterator<iter_t>(reordered_aliases.rbegin()),
+      std::move_iterator<iter_t>(reordered_aliases.rend()));
+  *out_ordered_aliases = reversed_aliases;
+
   return ExtractionError::kOk;
 }
 
@@ -163,7 +180,8 @@
     const DnsResponse& response,
     uint16_t result_qtype,
     std::vector<std::unique_ptr<const RecordParsed>>* out_records,
-    base::Optional<base::TimeDelta>* out_response_ttl) {
+    base::Optional<base::TimeDelta>* out_response_ttl,
+    std::vector<std::string>* out_aliases) {
   DCHECK(out_records);
   DCHECK(out_response_ttl);
 
@@ -210,8 +228,9 @@
     }
   }
 
-  ExtractionError name_and_alias_validation_error =
-      ValidateNamesAndAliases(response.GetDottedName(), aliases, records);
+  std::vector<std::string> out_ordered_aliases;
+  ExtractionError name_and_alias_validation_error = ValidateNamesAndAliases(
+      response.GetDottedName(), aliases, records, &out_ordered_aliases);
   if (name_and_alias_validation_error != ExtractionError::kOk)
     return name_and_alias_validation_error;
 
@@ -249,6 +268,8 @@
 
   *out_records = std::move(records);
   *out_response_ttl = response_ttl;
+  if (out_aliases)
+    *out_aliases = std::move(out_ordered_aliases);
 
   return ExtractionError::kOk;
 }
@@ -262,8 +283,9 @@
 
   std::vector<std::unique_ptr<const RecordParsed>> records;
   base::Optional<base::TimeDelta> response_ttl;
-  ExtractionError extraction_error =
-      ExtractResponseRecords(response, address_qtype, &records, &response_ttl);
+  std::vector<std::string> aliases;
+  ExtractionError extraction_error = ExtractResponseRecords(
+      response, address_qtype, &records, &response_ttl, &aliases);
 
   if (extraction_error != ExtractionError::kOk) {
     *out_results = HostCache::Entry(ERR_DNS_MALFORMED_RESPONSE,
@@ -272,13 +294,14 @@
   }
 
   AddressList addresses;
+  std::string canonical_name;
   for (const auto& record : records) {
     if (addresses.empty())
-      addresses.set_canonical_name(record->name());
+      canonical_name = record->name();
 
     // Expect that ExtractResponseRecords validates that all results correctly
     // have the same name.
-    DCHECK_EQ(addresses.canonical_name(), record->name());
+    DCHECK_EQ(canonical_name, record->name());
 
     IPAddress address;
     if (address_qtype == dns_protocol::kTypeA) {
@@ -294,6 +317,17 @@
     addresses.push_back(IPEndPoint(address, 0 /* port */));
   }
 
+  // If addresses were found, then a canonical name exists. Verify that the
+  // canonical name is the first entry in the alias vector to be stored in
+  // `addresses.dns_aliases_`. The alias chain order should have been preserved
+  // from canonical name (i.e. record name) through to query name.
+  if (!addresses.empty()) {
+    DCHECK(!aliases.empty());
+    DCHECK(aliases.front() == canonical_name);
+    DCHECK(aliases.back() == response.GetDottedName());
+    addresses.SetDnsAliases(std::move(aliases));
+  }
+
   *out_results = HostCache::Entry(
       addresses.empty() ? ERR_NAME_NOT_RESOLVED : OK, std::move(addresses),
       HostCache::Entry::SOURCE_DNS, response_ttl);
@@ -306,8 +340,9 @@
 
   std::vector<std::unique_ptr<const RecordParsed>> records;
   base::Optional<base::TimeDelta> response_ttl;
-  ExtractionError extraction_error = ExtractResponseRecords(
-      response, dns_protocol::kTypeTXT, &records, &response_ttl);
+  ExtractionError extraction_error =
+      ExtractResponseRecords(response, dns_protocol::kTypeTXT, &records,
+                             &response_ttl, nullptr /* out_aliases */);
 
   if (extraction_error != ExtractionError::kOk) {
     *out_results = HostCache::Entry(ERR_DNS_MALFORMED_RESPONSE,
@@ -334,8 +369,9 @@
 
   std::vector<std::unique_ptr<const RecordParsed>> records;
   base::Optional<base::TimeDelta> response_ttl;
-  ExtractionError extraction_error = ExtractResponseRecords(
-      response, dns_protocol::kTypePTR, &records, &response_ttl);
+  ExtractionError extraction_error =
+      ExtractResponseRecords(response, dns_protocol::kTypePTR, &records,
+                             &response_ttl, nullptr /* out_aliases */);
 
   if (extraction_error != ExtractionError::kOk) {
     *out_results = HostCache::Entry(ERR_DNS_MALFORMED_RESPONSE,
@@ -365,8 +401,9 @@
 
   std::vector<std::unique_ptr<const RecordParsed>> records;
   base::Optional<base::TimeDelta> response_ttl;
-  ExtractionError extraction_error = ExtractResponseRecords(
-      response, dns_protocol::kTypeSRV, &records, &response_ttl);
+  ExtractionError extraction_error =
+      ExtractResponseRecords(response, dns_protocol::kTypeSRV, &records,
+                             &response_ttl, nullptr /* out_aliases */);
 
   if (extraction_error != ExtractionError::kOk) {
     *out_results = HostCache::Entry(ERR_DNS_MALFORMED_RESPONSE,
@@ -399,9 +436,9 @@
 
   base::Optional<base::TimeDelta> response_ttl;
   std::vector<std::unique_ptr<const RecordParsed>> records;
-  ExtractionError extraction_error =
-      ExtractResponseRecords(response, dns_protocol::kExperimentalTypeIntegrity,
-                             &records, &response_ttl);
+  ExtractionError extraction_error = ExtractResponseRecords(
+      response, dns_protocol::kExperimentalTypeIntegrity, &records,
+      &response_ttl, nullptr /* out_aliases */);
 
   // If the response couldn't be parsed, assume no INTEGRITY records, and
   // pretend success. This is a temporary hack to keep errors with INTEGRITY
@@ -447,8 +484,9 @@
 
   base::Optional<base::TimeDelta> response_ttl;
   std::vector<std::unique_ptr<const RecordParsed>> records;
-  ExtractionError extraction_error = ExtractResponseRecords(
-      response, dns_protocol::kTypeHttps, &records, &response_ttl);
+  ExtractionError extraction_error =
+      ExtractResponseRecords(response, dns_protocol::kTypeHttps, &records,
+                             &response_ttl, nullptr /* out_aliases */);
 
   // If the response couldn't be parsed, assume no HTTPS records, and pretend
   // success. This is a temporary hack to keep errors with HTTPS (which is
diff --git a/net/dns/dns_response_result_extractor_unittest.cc b/net/dns/dns_response_result_extractor_unittest.cc
index a1ecfb9..6a0e32f 100644
--- a/net/dns/dns_response_result_extractor_unittest.cc
+++ b/net/dns/dns_response_result_extractor_unittest.cc
@@ -42,7 +42,9 @@
   ASSERT_TRUE(results.addresses());
   EXPECT_THAT(results.addresses().value().endpoints(),
               testing::ElementsAre(expected_endpoint));
-  EXPECT_EQ(results.addresses().value().canonical_name(), kName);
+  EXPECT_EQ(results.addresses().value().GetCanonicalName(), kName);
+  EXPECT_THAT(results.addresses().value().dns_aliases(),
+              testing::ElementsAre(kName));
 }
 
 TEST(DnsResponseResultExtractorTest, ExtractsSingleAAAARecord) {
@@ -63,7 +65,9 @@
   ASSERT_TRUE(results.addresses());
   EXPECT_THAT(results.addresses().value().endpoints(),
               testing::ElementsAre(expected_endpoint));
-  EXPECT_EQ(results.addresses().value().canonical_name(), kName);
+  EXPECT_EQ(results.addresses().value().GetCanonicalName(), kName);
+  EXPECT_THAT(results.addresses().value().dns_aliases(),
+              testing::ElementsAre(kName));
 }
 
 TEST(DnsResponseResultExtractorTest, ExtractsSingleARecordWithCname) {
@@ -83,7 +87,9 @@
   ASSERT_TRUE(results.addresses());
   EXPECT_THAT(results.addresses().value().endpoints(),
               testing::ElementsAre(expected_endpoint));
-  EXPECT_EQ(results.addresses().value().canonical_name(), kCanonicalName);
+  EXPECT_EQ(results.addresses().value().GetCanonicalName(), kCanonicalName);
+  EXPECT_THAT(results.addresses().value().dns_aliases(),
+              testing::ElementsAre(kCanonicalName, "address.test"));
 }
 
 TEST(DnsResponseResultExtractorTest, ExtractsARecordsWithCname) {
@@ -112,7 +118,9 @@
                   IPEndPoint(IPAddress(74, 125, 226, 180), 0 /* port */),
                   IPEndPoint(IPAddress(74, 125, 226, 176), 0 /* port */),
                   IPEndPoint(IPAddress(74, 125, 226, 177), 0 /* port */)));
-  EXPECT_EQ(results.addresses().value().canonical_name(), "alias.test");
+  EXPECT_EQ(results.addresses().value().GetCanonicalName(), "alias.test");
+  EXPECT_THAT(results.addresses().value().dns_aliases(),
+              testing::ElementsAre("alias.test", "addresses.test"));
 }
 
 TEST(DnsResponseResultExtractorTest, ExtractsNxdomainAResponses) {
@@ -130,7 +138,8 @@
   EXPECT_THAT(results.error(), test::IsError(ERR_NAME_NOT_RESOLVED));
   ASSERT_TRUE(results.addresses());
   EXPECT_TRUE(results.addresses().value().empty());
-  EXPECT_EQ(results.addresses().value().canonical_name(), "");
+  EXPECT_EQ(results.addresses().value().GetCanonicalName(), "");
+  EXPECT_TRUE(results.addresses().value().dns_aliases().empty());
 }
 
 TEST(DnsResponseResultExtractorTest, ExtractsNodataAResponses) {
@@ -145,7 +154,8 @@
   EXPECT_THAT(results.error(), test::IsError(ERR_NAME_NOT_RESOLVED));
   ASSERT_TRUE(results.addresses());
   EXPECT_TRUE(results.addresses().value().empty());
-  EXPECT_EQ(results.addresses().value().canonical_name(), "");
+  EXPECT_EQ(results.addresses().value().GetCanonicalName(), "");
+  EXPECT_TRUE(results.addresses().value().dns_aliases().empty());
 }
 
 TEST(DnsResponseResultExtractorTest, RejectsMalformedARecord) {
@@ -187,7 +197,8 @@
   EXPECT_THAT(results.error(), test::IsError(ERR_NAME_NOT_RESOLVED));
   ASSERT_TRUE(results.addresses());
   EXPECT_TRUE(results.addresses().value().empty());
-  EXPECT_EQ(results.addresses().value().canonical_name(), "");
+  EXPECT_EQ(results.addresses().value().GetCanonicalName(), "");
+  EXPECT_TRUE(results.addresses().value().dns_aliases().empty());
 }
 
 TEST(DnsResponseResultExtractorTest, IgnoresWrongTypeRecordsMixedWithARecords) {
@@ -209,7 +220,9 @@
   IPEndPoint expected_endpoint(kExpected, 0 /* port */);
   EXPECT_THAT(results.addresses().value().endpoints(),
               testing::ElementsAre(expected_endpoint));
-  EXPECT_EQ(results.addresses().value().canonical_name(), kName);
+  EXPECT_EQ(results.addresses().value().GetCanonicalName(), kName);
+  EXPECT_THAT(results.addresses().value().dns_aliases(),
+              testing::ElementsAre(kName));
 }
 
 TEST(DnsResponseResultExtractorTest, ExtractsMinATtl) {
@@ -723,6 +736,32 @@
               testing::Optional(testing::UnorderedElementsAre("foo", "bar")));
 }
 
+TEST(DnsResponseResultExtractorTest, HandlesInOrderCnameChainTypeA) {
+  const IPAddress kExpected(192, 168, 0, 1);
+  IPEndPoint expected_endpoint(kExpected, 0 /* port */);
+
+  DnsResponse response =
+      BuildTestDnsResponse("first.test", dns_protocol::kTypeA,
+                           {BuildTestCnameRecord("first.test", "second.test"),
+                            BuildTestCnameRecord("second.test", "third.test"),
+                            BuildTestCnameRecord("third.test", "fourth.test"),
+                            BuildTestAddressRecord("fourth.test", kExpected)});
+  DnsResponseResultExtractor extractor(&response);
+
+  HostCache::Entry results(ERR_FAILED, HostCache::Entry::SOURCE_UNKNOWN);
+  EXPECT_EQ(extractor.ExtractDnsResults(DnsQueryType::A, &results),
+            DnsResponseResultExtractor::ExtractionError::kOk);
+
+  EXPECT_THAT(results.error(), test::IsOk());
+  ASSERT_TRUE(results.addresses());
+  EXPECT_THAT(results.addresses().value().endpoints(),
+              testing::ElementsAre(expected_endpoint));
+
+  EXPECT_THAT(results.addresses().value().dns_aliases(),
+              testing::ElementsAre("fourth.test", "third.test", "second.test",
+                                   "first.test"));
+}
+
 TEST(DnsResponseResultExtractorTest, HandlesReverseOrderCnameChain) {
   DnsResponse response =
       BuildTestDnsResponse("first.test", dns_protocol::kTypeTXT,
@@ -741,6 +780,32 @@
               testing::Optional(testing::ElementsAre("foo")));
 }
 
+TEST(DnsResponseResultExtractorTest, HandlesReverseOrderCnameChainTypeA) {
+  const IPAddress kExpected(192, 168, 0, 1);
+  IPEndPoint expected_endpoint(kExpected, 0 /* port */);
+
+  DnsResponse response =
+      BuildTestDnsResponse("first.test", dns_protocol::kTypeA,
+                           {BuildTestAddressRecord("fourth.test", kExpected),
+                            BuildTestCnameRecord("third.test", "fourth.test"),
+                            BuildTestCnameRecord("second.test", "third.test"),
+                            BuildTestCnameRecord("first.test", "second.test")});
+  DnsResponseResultExtractor extractor(&response);
+
+  HostCache::Entry results(ERR_FAILED, HostCache::Entry::SOURCE_UNKNOWN);
+  EXPECT_EQ(extractor.ExtractDnsResults(DnsQueryType::A, &results),
+            DnsResponseResultExtractor::ExtractionError::kOk);
+
+  EXPECT_THAT(results.error(), test::IsOk());
+  ASSERT_TRUE(results.addresses());
+  EXPECT_THAT(results.addresses().value().endpoints(),
+              testing::ElementsAre(expected_endpoint));
+
+  EXPECT_THAT(results.addresses().value().dns_aliases(),
+              testing::ElementsAre("fourth.test", "third.test", "second.test",
+                                   "first.test"));
+}
+
 TEST(DnsResponseResultExtractorTest, HandlesArbitraryOrderCnameChain) {
   DnsResponse response =
       BuildTestDnsResponse("first.test", dns_protocol::kTypeTXT,
@@ -759,6 +824,34 @@
               testing::Optional(testing::ElementsAre("foo")));
 }
 
+TEST(DnsResponseResultExtractorTest, HandlesArbitraryOrderCnameChainTypeA) {
+  const IPAddress kExpected(192, 168, 0, 1);
+  IPEndPoint expected_endpoint(kExpected, 0 /* port */);
+
+  // Alias names are chosen so that the chain order is not in alphabetical
+  // order.
+  DnsResponse response = BuildTestDnsResponse(
+      "first.test", dns_protocol::kTypeA,
+      {BuildTestCnameRecord("qsecond.test", "athird.test"),
+       BuildTestAddressRecord("zfourth.test", kExpected),
+       BuildTestCnameRecord("athird.test", "zfourth.test"),
+       BuildTestCnameRecord("first.test", "qsecond.test")});
+  DnsResponseResultExtractor extractor(&response);
+
+  HostCache::Entry results(ERR_FAILED, HostCache::Entry::SOURCE_UNKNOWN);
+  EXPECT_EQ(extractor.ExtractDnsResults(DnsQueryType::A, &results),
+            DnsResponseResultExtractor::ExtractionError::kOk);
+
+  EXPECT_THAT(results.error(), test::IsOk());
+  ASSERT_TRUE(results.addresses());
+  EXPECT_THAT(results.addresses().value().endpoints(),
+              testing::ElementsAre(expected_endpoint));
+
+  EXPECT_THAT(results.addresses().value().dns_aliases(),
+              testing::ElementsAre("zfourth.test", "athird.test",
+                                   "qsecond.test", "first.test"));
+}
+
 TEST(DnsResponseResultExtractorTest, IgnoresNonResultTypesMixedWithCnameChain) {
   DnsResponse response = BuildTestDnsResponse(
       "first.test", dns_protocol::kTypeTXT,
@@ -780,6 +873,35 @@
   EXPECT_FALSE(results.addresses());
 }
 
+TEST(DnsResponseResultExtractorTest,
+     IgnoresNonResultTypesMixedWithCnameChainTypeA) {
+  const IPAddress kExpected(192, 168, 0, 1);
+  IPEndPoint expected_endpoint(kExpected, 0 /* port */);
+
+  DnsResponse response =
+      BuildTestDnsResponse("first.test", dns_protocol::kTypeA,
+                           {BuildTestCnameRecord("second.test", "third.test"),
+                            BuildTestTextRecord("fourth.test", {"foo"}),
+                            BuildTestCnameRecord("third.test", "fourth.test"),
+                            BuildTestCnameRecord("first.test", "second.test"),
+                            BuildTestAddressRecord("fourth.test", kExpected)});
+  DnsResponseResultExtractor extractor(&response);
+
+  HostCache::Entry results(ERR_FAILED, HostCache::Entry::SOURCE_UNKNOWN);
+  EXPECT_EQ(extractor.ExtractDnsResults(DnsQueryType::A, &results),
+            DnsResponseResultExtractor::ExtractionError::kOk);
+
+  EXPECT_THAT(results.error(), test::IsOk());
+  EXPECT_FALSE(results.text_records());
+  ASSERT_TRUE(results.addresses());
+  EXPECT_THAT(results.addresses().value().endpoints(),
+              testing::ElementsAre(expected_endpoint));
+
+  EXPECT_THAT(results.addresses().value().dns_aliases(),
+              testing::ElementsAre("fourth.test", "third.test", "second.test",
+                                   "first.test"));
+}
+
 TEST(DnsResponseResultExtractorTest, HandlesCnameChainWithoutResult) {
   DnsResponse response =
       BuildTestDnsResponse("first.test", dns_protocol::kTypeTXT,
@@ -796,6 +918,23 @@
   EXPECT_THAT(results.text_records(), testing::Optional(testing::IsEmpty()));
 }
 
+TEST(DnsResponseResultExtractorTest, HandlesCnameChainWithoutResultTypeA) {
+  DnsResponse response =
+      BuildTestDnsResponse("first.test", dns_protocol::kTypeA,
+                           {BuildTestCnameRecord("second.test", "third.test"),
+                            BuildTestCnameRecord("third.test", "fourth.test"),
+                            BuildTestCnameRecord("first.test", "second.test")});
+  DnsResponseResultExtractor extractor(&response);
+
+  HostCache::Entry results(ERR_FAILED, HostCache::Entry::SOURCE_UNKNOWN);
+  EXPECT_EQ(extractor.ExtractDnsResults(DnsQueryType::A, &results),
+            DnsResponseResultExtractor::ExtractionError::kOk);
+
+  EXPECT_THAT(results.error(), test::IsError(ERR_NAME_NOT_RESOLVED));
+  ASSERT_TRUE(results.addresses());
+  EXPECT_TRUE(results.addresses().value().dns_aliases().empty());
+}
+
 TEST(DnsResponseResultExtractorTest, RejectsCnameChainWithLoop) {
   DnsResponse response =
       BuildTestDnsResponse("first.test", dns_protocol::kTypeTXT,
diff --git a/net/dns/fuzzed_host_resolver_util.cc b/net/dns/fuzzed_host_resolver_util.cc
index 48e353dd..18a797d6 100644
--- a/net/dns/fuzzed_host_resolver_util.cc
+++ b/net/dns/fuzzed_host_resolver_util.cc
@@ -200,7 +200,8 @@
 
     if (host_resolver_flags & HOST_RESOLVER_CANONNAME) {
       // Don't bother to fuzz this - almost nothing cares.
-      result.set_canonical_name("foo.com");
+      std::vector<std::string> aliases({"foo.com"});
+      result.SetDnsAliases(std::move(aliases));
     }
 
     *addrlist = result;
diff --git a/net/dns/host_cache.cc b/net/dns/host_cache.cc
index 6084b40..b5677269 100644
--- a/net/dns/host_cache.cc
+++ b/net/dns/host_cache.cc
@@ -5,11 +5,15 @@
 #include "net/dns/host_cache.h"
 
 #include <algorithm>
+#include <string>
+#include <vector>
 
 #include "base/bind.h"
 #include "base/metrics/field_trial.h"
 #include "base/metrics/histogram_macros.h"
+#include "base/no_destructor.h"
 #include "base/numerics/safe_conversions.h"
+#include "base/optional.h"
 #include "base/strings/string_number_conversions.h"
 #include "base/time/default_tick_clock.h"
 #include "base/trace_event/trace_event.h"
@@ -162,12 +166,11 @@
   MergeLists(&front.hostnames_, back.hostnames());
   MergeLists(&front.experimental_results_, back.experimental_results());
 
-  // Use canonical name from |back| iff empty in |front|.
-  if (front.addresses() && front.addresses().value().canonical_name().empty() &&
-      back.addresses()) {
-    front.addresses_.value().set_canonical_name(
-        back.addresses().value().canonical_name());
-  }
+  // The DNS aliases include the canonical name(s), if any, each as the
+  // first entry in the field, which is an optional vector. If |front| has
+  // a canonical name, it will be used. Otherwise, if |back| has a
+  // canonical name, it will be in the first slot in the merged alias field.
+  front.MergeDnsAliasesFrom(back);
 
   // Only expected to merge entries from same source.
   DCHECK_EQ(front.source(), back.source());
@@ -195,8 +198,7 @@
       std::any_of(addresses().value().begin(), addresses().value().end(),
                   [](const IPEndPoint& e) { return e.port() == 0; })) {
     AddressList addresses_with_port;
-    addresses_with_port.set_canonical_name(
-        addresses().value().canonical_name());
+    addresses_with_port.SetDnsAliases(addresses()->dns_aliases());
     for (const IPEndPoint& endpoint : addresses().value()) {
       if (endpoint.port() == 0)
         addresses_with_port.push_back(IPEndPoint(endpoint.address(), port));
@@ -304,6 +306,50 @@
                    });
 }
 
+void HostCache::Entry::MergeDnsAliasesFrom(const HostCache::Entry& source) {
+  // No aliases to merge if source has no AddressList.
+  if (!source.addresses())
+    return;
+
+  // We expect this to be true because the address merging should have already
+  // created the AddressList if the source had one but the target didn't.
+  DCHECK(addresses());
+
+  // Nothing to merge.
+  if (source.addresses()->dns_aliases().empty())
+    return;
+
+  // No aliases pre-existing in target, so simply set target's aliases to
+  // source's. This takes care of the case where target does not have a usable
+  // canonical name, but source does.
+  if (addresses()->dns_aliases().empty()) {
+    addresses_->SetDnsAliases(source.addresses()->dns_aliases());
+    return;
+  }
+
+  DCHECK(addresses()->dns_aliases() != std::vector<std::string>({""}));
+  DCHECK(source.addresses()->dns_aliases() != std::vector<std::string>({""}));
+
+  // We need to check for possible blanks and duplicates in the source's
+  // aliases.
+  std::unordered_set<std::string> aliases_seen;
+  std::vector<std::string> deduplicated_source_aliases;
+
+  aliases_seen.insert(addresses()->dns_aliases().begin(),
+                      addresses()->dns_aliases().end());
+
+  for (const auto& alias : source.addresses()->dns_aliases()) {
+    if (alias != "" && aliases_seen.find(alias) == aliases_seen.end()) {
+      aliases_seen.insert(alias);
+      deduplicated_source_aliases.push_back(alias);
+    }
+  }
+
+  // The first entry of target's aliases must remain in place,
+  // as it's the canonical name, so we append source's aliases to the back.
+  addresses_->AppendDnsAliases(std::move(deduplicated_source_aliases));
+}
+
 base::Value HostCache::Entry::GetAsValue(bool include_staleness) const {
   base::Value entry_dict(base::Value::Type::DICTIONARY);
 
diff --git a/net/dns/host_cache.h b/net/dns/host_cache.h
index ae24c4ab..ddf58df 100644
--- a/net/dns/host_cache.h
+++ b/net/dns/host_cache.h
@@ -249,6 +249,10 @@
     // non-empty and therefore OK.
     void MergeAddressesFrom(const HostCache::Entry& source);
 
+    // Merges DNS aliases from |source| into the stored list of DNS aliases and
+    // deduplicates.
+    void MergeDnsAliasesFrom(const HostCache::Entry& source);
+
     base::Value GetAsValue(bool include_staleness) const;
 
     // The resolve results for this entry.
diff --git a/net/dns/host_cache_unittest.cc b/net/dns/host_cache_unittest.cc
index e67fc85f..925b5b5 100644
--- a/net/dns/host_cache_unittest.cc
+++ b/net/dns/host_cache_unittest.cc
@@ -1216,7 +1216,9 @@
 TEST(HostCacheTest, MergeEntries) {
   const IPAddress kAddressFront(1, 2, 3, 4);
   const IPEndPoint kEndpointFront(kAddressFront, 0);
-  HostCache::Entry front(OK, AddressList(kEndpointFront),
+  std::vector<std::string> aliases_front({"alias1", "alias2", "alias3"});
+  HostCache::Entry front(OK,
+                         AddressList(kEndpointFront, std::move(aliases_front)),
                          HostCache::Entry::SOURCE_DNS);
   front.set_text_records(std::vector<std::string>{"text1"});
   const HostPortPair kHostnameFront("host", 1);
@@ -1225,7 +1227,8 @@
   const IPAddress kAddressBack(0x20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                                0);
   const IPEndPoint kEndpointBack(kAddressBack, 0);
-  HostCache::Entry back(OK, AddressList(kEndpointBack),
+  std::vector<std::string> aliases_back({"alias2", "alias4", "alias5"});
+  HostCache::Entry back(OK, AddressList(kEndpointBack, std::move(aliases_back)),
                         HostCache::Entry::SOURCE_DNS);
   back.set_text_records(std::vector<std::string>{"text2"});
   const HostPortPair kHostnameBack("host", 2);
@@ -1245,6 +1248,10 @@
 
   EXPECT_THAT(result.hostnames(),
               Optional(ElementsAre(kHostnameFront, kHostnameBack)));
+
+  ASSERT_TRUE(result.addresses());
+  EXPECT_THAT(result.addresses().value().dns_aliases(),
+              ElementsAre("alias1", "alias2", "alias3", "alias4", "alias5"));
 }
 
 IPAddress MakeIP(base::StringPiece literal) {
@@ -1272,12 +1279,16 @@
   IPAddressList back_addresses =
       MakeIPList({"0.0.0.2", "0.0.0.2", "::3", "::3"});
 
-  HostCache::Entry front(
-      OK, AddressList::CreateFromIPAddressList(front_addresses, "front"),
-      HostCache::Entry::SOURCE_DNS);
-  HostCache::Entry back(
-      OK, AddressList::CreateFromIPAddressList(back_addresses, "back"),
-      HostCache::Entry::SOURCE_DNS);
+  std::vector<std::string> front_aliases({"front"});
+  HostCache::Entry front(OK,
+                         AddressList::CreateFromIPAddressList(
+                             front_addresses, std::move(front_aliases)),
+                         HostCache::Entry::SOURCE_DNS);
+  std::vector<std::string> back_aliases({"back"});
+  HostCache::Entry back(OK,
+                        AddressList::CreateFromIPAddressList(
+                            back_addresses, std::move(back_aliases)),
+                        HostCache::Entry::SOURCE_DNS);
 
   HostCache::Entry result =
       HostCache::Entry::MergeEntries(std::move(front), std::move(back));
@@ -1290,6 +1301,10 @@
       Optional(Property(
           &AddressList::endpoints,
           ElementsAreArray(MakeEndpoints({"::3", "0.0.0.1", "0.0.0.2"})))));
+
+  ASSERT_TRUE(result.addresses());
+  EXPECT_THAT(result.addresses().value().dns_aliases(),
+              ElementsAre("front", "back"));
 }
 
 TEST(HostCacheTest, PrefersAddressesWithIpv6) {
@@ -1297,12 +1312,16 @@
   IPAddressList back_addresses =
       MakeIPList({"0.0.0.2", "0.0.0.2", "::3", "::3", "0.0.0.4"});
 
-  HostCache::Entry front(
-      OK, AddressList::CreateFromIPAddressList(front_addresses, "front"),
-      HostCache::Entry::SOURCE_DNS);
-  HostCache::Entry back(
-      OK, AddressList::CreateFromIPAddressList(back_addresses, "back"),
-      HostCache::Entry::SOURCE_DNS);
+  std::vector<std::string> front_aliases({"front"});
+  HostCache::Entry front(OK,
+                         AddressList::CreateFromIPAddressList(
+                             front_addresses, std::move(front_aliases)),
+                         HostCache::Entry::SOURCE_DNS);
+  std::vector<std::string> back_aliases({"back"});
+  HostCache::Entry back(OK,
+                        AddressList::CreateFromIPAddressList(
+                            back_addresses, std::move(back_aliases)),
+                        HostCache::Entry::SOURCE_DNS);
 
   HostCache::Entry result =
       HostCache::Entry::MergeEntries(std::move(front), std::move(back));
@@ -1311,6 +1330,10 @@
               Optional(Property(&AddressList::endpoints,
                                 ElementsAreArray(MakeEndpoints(
                                     {"::1", "::3", "0.0.0.2", "0.0.0.4"})))));
+
+  ASSERT_TRUE(result.addresses());
+  EXPECT_THAT(result.addresses().value().dns_aliases(),
+              ElementsAre("front", "back"));
 }
 
 TEST(HostCacheTest, MergeEntries_frontEmpty) {
@@ -1319,7 +1342,8 @@
   const IPAddress kAddressBack(0x20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                                0);
   const IPEndPoint kEndpointBack(kAddressBack, 0);
-  HostCache::Entry back(OK, AddressList(kEndpointBack),
+  std::vector<std::string> aliases_back({"alias1", "alias2", "alias3"});
+  HostCache::Entry back(OK, AddressList(kEndpointBack, std::move(aliases_back)),
                         HostCache::Entry::SOURCE_DNS,
                         base::TimeDelta::FromHours(4));
   back.set_text_records(std::vector<std::string>{"text2"});
@@ -1339,14 +1363,19 @@
   EXPECT_THAT(result.hostnames(), Optional(ElementsAre(kHostnameBack)));
 
   EXPECT_EQ(base::TimeDelta::FromHours(4), result.ttl());
+
+  ASSERT_TRUE(result.addresses());
+  EXPECT_THAT(result.addresses().value().dns_aliases(),
+              ElementsAre("alias1", "alias2", "alias3"));
 }
 
 TEST(HostCacheTest, MergeEntries_backEmpty) {
   const IPAddress kAddressFront(1, 2, 3, 4);
   const IPEndPoint kEndpointFront(kAddressFront, 0);
-  HostCache::Entry front(OK, AddressList(kEndpointFront),
-                         HostCache::Entry::SOURCE_DNS,
-                         base::TimeDelta::FromMinutes(5));
+  std::vector<std::string> aliases_front({"alias1", "alias2", "alias3"});
+  HostCache::Entry front(
+      OK, AddressList(kEndpointFront, std::move(aliases_front)),
+      HostCache::Entry::SOURCE_DNS, base::TimeDelta::FromMinutes(5));
   front.set_text_records(std::vector<std::string>{"text1"});
   const HostPortPair kHostnameFront("host", 1);
   front.set_hostnames(std::vector<HostPortPair>{kHostnameFront});
@@ -1366,6 +1395,10 @@
   EXPECT_THAT(result.hostnames(), Optional(ElementsAre(kHostnameFront)));
 
   EXPECT_EQ(base::TimeDelta::FromMinutes(5), result.ttl());
+
+  ASSERT_TRUE(result.addresses());
+  EXPECT_THAT(result.addresses().value().dns_aliases(),
+              ElementsAre("alias1", "alias2", "alias3"));
 }
 
 TEST(HostCacheTest, MergeEntries_bothEmpty) {
@@ -1384,6 +1417,135 @@
   EXPECT_FALSE(result.has_ttl());
 }
 
+TEST(HostCacheTest, MergeEntries_frontWithAliasesNoAddressesBackWithBoth) {
+  HostCache::Entry front(ERR_NAME_NOT_RESOLVED, HostCache::Entry::SOURCE_DNS);
+  AddressList front_addresses;
+  std::vector<std::string> aliases_front({"alias0", "alias1", "alias2"});
+  front_addresses.SetDnsAliases(std::move(aliases_front));
+  front.set_addresses(front_addresses);
+
+  const IPAddress kAddressBack(0x20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+                               0);
+  const IPEndPoint kEndpointBack(kAddressBack, 0);
+  std::vector<std::string> aliases_back({"alias1", "alias2", "alias3"});
+  HostCache::Entry back(OK, AddressList(kEndpointBack, std::move(aliases_back)),
+                        HostCache::Entry::SOURCE_DNS,
+                        base::TimeDelta::FromHours(4));
+
+  HostCache::Entry result =
+      HostCache::Entry::MergeEntries(std::move(front), std::move(back));
+
+  EXPECT_EQ(OK, result.error());
+  EXPECT_EQ(HostCache::Entry::SOURCE_DNS, result.source());
+
+  ASSERT_TRUE(result.addresses());
+  EXPECT_THAT(result.addresses().value().endpoints(),
+              ElementsAre(kEndpointBack));
+
+  EXPECT_EQ(base::TimeDelta::FromHours(4), result.ttl());
+
+  ASSERT_TRUE(result.addresses());
+  EXPECT_THAT(result.addresses().value().dns_aliases(),
+              ElementsAre("alias0", "alias1", "alias2", "alias3"));
+}
+
+TEST(HostCacheTest, MergeEntries_backWithAliasesNoAddressesFrontWithBoth) {
+  HostCache::Entry back(ERR_NAME_NOT_RESOLVED, HostCache::Entry::SOURCE_DNS);
+  AddressList back_addresses;
+  std::vector<std::string> aliases_back({"alias1", "alias2", "alias3"});
+
+  back_addresses.SetDnsAliases(std::move(aliases_back));
+  back.set_addresses(back_addresses);
+
+  const IPAddress kAddressFront(0x20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+                                0);
+  const IPEndPoint kEndpointFront(kAddressFront, 0);
+  std::vector<std::string> aliases_front({"alias0", "alias1", "alias2"});
+  HostCache::Entry front(
+      OK, AddressList(kEndpointFront, std::move(aliases_front)),
+      HostCache::Entry::SOURCE_DNS, base::TimeDelta::FromHours(4));
+
+  HostCache::Entry result =
+      HostCache::Entry::MergeEntries(std::move(front), std::move(back));
+
+  EXPECT_EQ(OK, result.error());
+  EXPECT_EQ(HostCache::Entry::SOURCE_DNS, result.source());
+
+  ASSERT_TRUE(result.addresses());
+  EXPECT_THAT(result.addresses().value().endpoints(),
+              ElementsAre(kEndpointFront));
+
+  EXPECT_EQ(base::TimeDelta::FromHours(4), result.ttl());
+
+  ASSERT_TRUE(result.addresses());
+  EXPECT_THAT(result.addresses().value().dns_aliases(),
+              ElementsAre("alias0", "alias1", "alias2", "alias3"));
+}
+
+TEST(HostCacheTest, MergeEntries_frontWithAddressesNoAliasesBackWithBoth) {
+  const IPAddress kAddressFront(1, 2, 3, 4);
+  const IPEndPoint kEndpointFront(kAddressFront, 0);
+  HostCache::Entry front(OK, AddressList(kEndpointFront),
+                         HostCache::Entry::SOURCE_DNS,
+                         base::TimeDelta::FromHours(4));
+
+  const IPAddress kAddressBack(0x20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+                               0);
+  const IPEndPoint kEndpointBack(kAddressBack, 0);
+  std::vector<std::string> aliases_back({"alias1", "alias2", "alias3"});
+  HostCache::Entry back(OK, AddressList(kEndpointBack, std::move(aliases_back)),
+                        HostCache::Entry::SOURCE_DNS,
+                        base::TimeDelta::FromHours(4));
+
+  HostCache::Entry result =
+      HostCache::Entry::MergeEntries(std::move(front), std::move(back));
+
+  EXPECT_EQ(OK, result.error());
+  EXPECT_EQ(HostCache::Entry::SOURCE_DNS, result.source());
+
+  ASSERT_TRUE(result.addresses());
+  EXPECT_THAT(result.addresses().value().endpoints(),
+              ElementsAre(kEndpointBack, kEndpointFront));
+
+  EXPECT_EQ(base::TimeDelta::FromHours(4), result.ttl());
+
+  ASSERT_TRUE(result.addresses());
+  EXPECT_THAT(result.addresses().value().dns_aliases(),
+              ElementsAre("alias1", "alias2", "alias3"));
+}
+
+TEST(HostCacheTest, MergeEntries_backWithAddressesNoAliasesFrontWithBoth) {
+  const IPAddress kAddressFront(1, 2, 3, 4);
+  const IPEndPoint kEndpointFront(kAddressFront, 0);
+  std::vector<std::string> aliases_front({"alias1", "alias2", "alias3"});
+  HostCache::Entry front(
+      OK, AddressList(kEndpointFront, std::move(aliases_front)),
+      HostCache::Entry::SOURCE_DNS, base::TimeDelta::FromHours(4));
+
+  const IPAddress kAddressBack(0x20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+                               0);
+  const IPEndPoint kEndpointBack(kAddressBack, 0);
+  HostCache::Entry back(OK, AddressList(kEndpointBack),
+                        HostCache::Entry::SOURCE_DNS,
+                        base::TimeDelta::FromHours(4));
+
+  HostCache::Entry result =
+      HostCache::Entry::MergeEntries(std::move(front), std::move(back));
+
+  EXPECT_EQ(OK, result.error());
+  EXPECT_EQ(HostCache::Entry::SOURCE_DNS, result.source());
+
+  ASSERT_TRUE(result.addresses());
+  EXPECT_THAT(result.addresses().value().endpoints(),
+              ElementsAre(kEndpointBack, kEndpointFront));
+
+  EXPECT_EQ(base::TimeDelta::FromHours(4), result.ttl());
+
+  ASSERT_TRUE(result.addresses());
+  EXPECT_THAT(result.addresses().value().dns_aliases(),
+              ElementsAre("alias1", "alias2", "alias3"));
+}
+
 TEST(HostCacheTest, MergeEntries_differentTtl) {
   HostCache::Entry front(ERR_NAME_NOT_RESOLVED, HostCache::Entry::SOURCE_DNS,
                          base::TimeDelta::FromDays(12));
@@ -1399,38 +1561,45 @@
 TEST(HostCacheTest, MergeEntries_FrontCannonnamePreserved) {
   AddressList addresses_front;
   const std::string kCanonicalNameFront = "name1";
-  addresses_front.set_canonical_name(kCanonicalNameFront);
+  std::vector<std::string> front_aliases({kCanonicalNameFront});
+  addresses_front.SetDnsAliases(std::move(front_aliases));
   HostCache::Entry front(OK, addresses_front, HostCache::Entry::SOURCE_DNS);
 
   AddressList addresses_back;
   const std::string kCanonicalNameBack = "name2";
-  addresses_back.set_canonical_name(kCanonicalNameBack);
+  std::vector<std::string> back_aliases({kCanonicalNameBack});
+  addresses_back.SetDnsAliases(std::move(back_aliases));
   HostCache::Entry back(OK, addresses_back, HostCache::Entry::SOURCE_DNS);
 
   HostCache::Entry result =
       HostCache::Entry::MergeEntries(std::move(front), std::move(back));
 
   ASSERT_TRUE(result.addresses());
-  EXPECT_EQ(kCanonicalNameFront, result.addresses().value().canonical_name());
+  EXPECT_EQ(kCanonicalNameFront, result.addresses().value().GetCanonicalName());
+  EXPECT_THAT(result.addresses().value().dns_aliases(),
+              ElementsAre("name1", "name2"));
 }
 
 // Test that the back canonname can be used if there is no front cannonname.
 TEST(HostCacheTest, MergeEntries_BackCannonnameUsable) {
   AddressList addresses_front;
   const std::string kCanonicalNameFront = "";
-  addresses_front.set_canonical_name(kCanonicalNameFront);
+  std::vector<std::string> front_aliases({kCanonicalNameFront});
+  addresses_front.SetDnsAliases(std::move(front_aliases));
   HostCache::Entry front(OK, addresses_front, HostCache::Entry::SOURCE_DNS);
 
   AddressList addresses_back;
   const std::string kCanonicalNameBack = "name2";
-  addresses_back.set_canonical_name(kCanonicalNameBack);
+  std::vector<std::string> back_aliases({kCanonicalNameBack});
+  addresses_back.SetDnsAliases(std::move(back_aliases));
   HostCache::Entry back(OK, addresses_back, HostCache::Entry::SOURCE_DNS);
 
   HostCache::Entry result =
       HostCache::Entry::MergeEntries(std::move(front), std::move(back));
 
   ASSERT_TRUE(result.addresses());
-  EXPECT_EQ(kCanonicalNameBack, result.addresses().value().canonical_name());
+  EXPECT_EQ(kCanonicalNameBack, result.addresses().value().GetCanonicalName());
+  EXPECT_THAT(result.addresses().value().dns_aliases(), ElementsAre("name2"));
 }
 
 void GetMatchingKeyHelper(const HostCache::Key key, bool expect_match) {
diff --git a/net/dns/host_resolver_manager_unittest.cc b/net/dns/host_resolver_manager_unittest.cc
index 02f0091..6225868 100644
--- a/net/dns/host_resolver_manager_unittest.cc
+++ b/net/dns/host_resolver_manager_unittest.cc
@@ -2444,7 +2444,7 @@
   EXPECT_THAT(response.request()->GetAddressResults().value().endpoints(),
               testing::ElementsAre(CreateExpected("192.168.1.42", 80)));
   EXPECT_EQ("canon.name",
-            response.request()->GetAddressResults().value().canonical_name());
+            response.request()->GetAddressResults().value().GetCanonicalName());
 
   EXPECT_THAT(response_no_flag.result_error(), IsError(ERR_NAME_NOT_RESOLVED));
 }
@@ -4005,6 +4005,17 @@
         delay);
   }
 
+  static void AddDnsRule(MockDnsClientRuleList* rules,
+
+                         const std::string& prefix,
+                         uint16_t qtype,
+                         DnsResponse dns_test_response,
+                         bool delay) {
+    rules->emplace_back(prefix, qtype, false /* secure */,
+                        MockDnsClientRule::Result(std::move(dns_test_response)),
+                        delay);
+  }
+
   static void AddSecureDnsRule(MockDnsClientRuleList* rules,
                                const std::string& prefix,
                                uint16_t qtype,
@@ -6785,7 +6796,7 @@
 
   // HostResolver may still give name, but if so, it must be correct.
   std::string result_name =
-      response.request()->GetAddressResults().value().canonical_name();
+      response.request()->GetAddressResults().value().GetCanonicalName();
   EXPECT_TRUE(result_name.empty() || result_name == "canonical");
 }
 
@@ -6808,7 +6819,7 @@
       params, resolve_context_.get(), resolve_context_->host_cache()));
   ASSERT_THAT(response.result_error(), IsOk());
 
-  EXPECT_EQ(response.request()->GetAddressResults().value().canonical_name(),
+  EXPECT_EQ(response.request()->GetAddressResults().value().GetCanonicalName(),
             "canonical");
 }
 
@@ -6833,7 +6844,7 @@
   base::RunLoop().RunUntilIdle();
   dns_client_->CompleteDelayedTransactions();
   ASSERT_THAT(response.result_error(), IsOk());
-  EXPECT_EQ(response.request()->GetAddressResults().value().canonical_name(),
+  EXPECT_EQ(response.request()->GetAddressResults().value().GetCanonicalName(),
             "correct");
 }
 
@@ -6853,7 +6864,7 @@
       HostPortPair("alias", 80), NetworkIsolationKey(), NetLogWithSource(),
       params, resolve_context_.get(), resolve_context_->host_cache()));
   ASSERT_THAT(response.result_error(), IsOk());
-  EXPECT_EQ(response.request()->GetAddressResults().value().canonical_name(),
+  EXPECT_EQ(response.request()->GetAddressResults().value().GetCanonicalName(),
             "correct");
 }
 
@@ -6877,10 +6888,54 @@
       params, resolve_context_.get(), resolve_context_->host_cache()));
   ASSERT_THAT(response.result_error(), IsOk());
 
-  EXPECT_EQ(response.request()->GetAddressResults().value().canonical_name(),
+  EXPECT_EQ(response.request()->GetAddressResults().value().GetCanonicalName(),
             "canonical");
 }
 
+TEST_F(HostResolverManagerDnsTest, DnsAliases) {
+  MockDnsClientRuleList rules;
+
+  DnsResponse expected_A_response = BuildTestDnsResponse(
+      "first.test", dns_protocol::kTypeA,
+      {BuildTestAddressRecord("fourth.test", IPAddress::IPv4Localhost()),
+
+       BuildTestCnameRecord("third.test", "fourth.test"),
+       BuildTestCnameRecord("second.test", "third.test"),
+       BuildTestCnameRecord("first.test", "second.test")});
+
+  AddDnsRule(&rules, "first.test", dns_protocol::kTypeA,
+             std::move(expected_A_response), false /* delay */);
+
+  DnsResponse expected_AAAA_response = BuildTestDnsResponse(
+      "first.test", dns_protocol::kTypeAAAA,
+      {BuildTestAddressRecord("fourth.test", IPAddress::IPv6Localhost()),
+       BuildTestCnameRecord("third.test", "fourth.test"),
+       BuildTestCnameRecord("second.test", "third.test"),
+       BuildTestCnameRecord("first.test", "second.test")});
+
+  AddDnsRule(&rules, "first.test", dns_protocol::kTypeAAAA,
+             std::move(expected_AAAA_response), false /* delay */);
+
+  CreateResolver();
+  UseMockDnsClient(CreateValidDnsConfig(), std::move(rules));
+  set_allow_fallback_to_proctask(false);
+  HostResolver::ResolveHostParameters params;
+  params.include_canonical_name = true;
+  params.source = HostResolverSource::DNS;
+
+  ResolveHostResponseHelper response(resolver_->CreateRequest(
+      HostPortPair("first.test", 80), NetworkIsolationKey(), NetLogWithSource(),
+      params, resolve_context_.get(), resolve_context_->host_cache()));
+
+  ASSERT_THAT(response.result_error(), IsOk());
+  ASSERT_TRUE(response.request()->GetAddressResults());
+  EXPECT_EQ(response.request()->GetAddressResults().value().GetCanonicalName(),
+            "fourth.test");
+  EXPECT_THAT(response.request()->GetAddressResults().value().dns_aliases(),
+              testing::ElementsAre("fourth.test", "third.test", "second.test",
+                                   "first.test"));
+}
+
 TEST_F(HostResolverManagerDnsTest, SortsAndDeduplicatesAddresses) {
   MockDnsClientRuleList rules;
 
diff --git a/net/dns/mock_host_resolver.cc b/net/dns/mock_host_resolver.cc
index e0a23ae..de9e445 100644
--- a/net/dns/mock_host_resolver.cc
+++ b/net/dns/mock_host_resolver.cc
@@ -51,7 +51,8 @@
                      const std::string& canonical_name,
                      AddressList* addrlist) {
   *addrlist = AddressList();
-  addrlist->set_canonical_name(canonical_name);
+  std::vector<std::string> aliases({canonical_name});
+  addrlist->SetDnsAliases(std::move(aliases));
   for (const base::StringPiece& address : base::SplitStringPiece(
            host_list, ",", base::TRIM_WHITESPACE, base::SPLIT_WANT_ALL)) {
     IPAddress ip_address;
@@ -933,7 +934,8 @@
               addrlist->push_back(address);
             }
           }
-          addrlist->set_canonical_name(raw_addr_list.canonical_name());
+          std::vector<std::string> aliases({raw_addr_list.GetCanonicalName()});
+          addrlist->SetDnsAliases(std::move(aliases));
 
           if (result == OK && addrlist->empty())
             return ERR_NAME_NOT_RESOLVED;
diff --git a/net/http/http_auth_handler_negotiate.cc b/net/http/http_auth_handler_negotiate.cc
index 141ad867..010599b 100644
--- a/net/http/http_auth_handler_negotiate.cc
+++ b/net/http/http_auth_handler_negotiate.cc
@@ -360,7 +360,7 @@
     if (rv == OK) {
       DCHECK(resolve_host_request_->GetAddressResults());
       const std::string& canonical_name =
-          resolve_host_request_->GetAddressResults().value().canonical_name();
+          resolve_host_request_->GetAddressResults().value().GetCanonicalName();
       if (!canonical_name.empty())
         server = canonical_name;
     } else {
diff --git a/net/nqe/network_quality_estimator_unittest.cc b/net/nqe/network_quality_estimator_unittest.cc
index e5a9348b..421257e 100644
--- a/net/nqe/network_quality_estimator_unittest.cc
+++ b/net/nqe/network_quality_estimator_unittest.cc
@@ -2072,8 +2072,9 @@
   IPAddress ip_address;
   ASSERT_TRUE(ip_address.AssignFromIPLiteral("157.0.0.1"));
   ip_list.push_back(ip_address);
+  std::vector<std::string> aliases({"canonical.example.com"});
   AddressList address_list =
-      AddressList::CreateFromIPAddressList(ip_list, "canonical.example.com");
+      AddressList::CreateFromIPAddressList(ip_list, std::move(aliases));
 
   std::unique_ptr<SocketPerformanceWatcher> tcp_watcher =
       estimator.GetSocketPerformanceWatcherFactory()
@@ -2138,8 +2139,9 @@
   IPAddress ip_address;
   ASSERT_TRUE(ip_address.AssignFromIPLiteral("157.0.0.1"));
   ip_list.push_back(ip_address);
+  std::vector<std::string> aliases({"canonical.example.com"});
   AddressList address_list =
-      AddressList::CreateFromIPAddressList(ip_list, "canonical.example.com");
+      AddressList::CreateFromIPAddressList(ip_list, std::move(aliases));
   std::unique_ptr<SocketPerformanceWatcher> tcp_watcher =
       estimator.GetSocketPerformanceWatcherFactory()
           ->CreateSocketPerformanceWatcher(
diff --git a/net/nqe/socket_watcher_unittest.cc b/net/nqe/socket_watcher_unittest.cc
index 245ccadb..cada676 100644
--- a/net/nqe/socket_watcher_unittest.cc
+++ b/net/nqe/socket_watcher_unittest.cc
@@ -109,8 +109,9 @@
   IPAddress ip_address;
   ASSERT_TRUE(ip_address.AssignFromIPLiteral("157.0.0.1"));
   ip_list.push_back(ip_address);
+  std::vector<std::string> aliases({"canonical.example.com"});
   AddressList address_list =
-      AddressList::CreateFromIPAddressList(ip_list, "canonical.example.com");
+      AddressList::CreateFromIPAddressList(ip_list, std::move(aliases));
 
   SocketWatcher socket_watcher(
       SocketPerformanceWatcherFactory::PROTOCOL_TCP, address_list,
@@ -153,8 +154,9 @@
   IPAddress ip_address;
   ASSERT_TRUE(ip_address.AssignFromIPLiteral("157.0.0.1"));
   ip_list.push_back(ip_address);
+  std::vector<std::string> aliases({"canonical.example.com"});
   AddressList address_list =
-      AddressList::CreateFromIPAddressList(ip_list, "canonical.example.com");
+      AddressList::CreateFromIPAddressList(ip_list, std::move(aliases));
 
   SocketWatcher socket_watcher(
       SocketPerformanceWatcherFactory::PROTOCOL_QUIC, address_list,
@@ -214,8 +216,9 @@
     IPAddress ip_address;
     ASSERT_TRUE(ip_address.AssignFromIPLiteral(test.ip_address));
     ip_list.push_back(ip_address);
+    std::vector<std::string> aliases({"canonical.example.com"});
     AddressList address_list =
-        AddressList::CreateFromIPAddressList(ip_list, "canonical.example.com");
+        AddressList::CreateFromIPAddressList(ip_list, std::move(aliases));
 
     SocketWatcher socket_watcher(
         SocketPerformanceWatcherFactory::PROTOCOL_TCP, address_list,
@@ -253,8 +256,9 @@
     IPAddress ip_address;
     ASSERT_TRUE(ip_address.AssignFromIPLiteral(test.ip_address));
     ip_list.push_back(ip_address);
+    std::vector<std::string> aliases({"canonical.example.com"});
     AddressList address_list =
-        AddressList::CreateFromIPAddressList(ip_list, "canonical.example.com");
+        AddressList::CreateFromIPAddressList(ip_list, std::move(aliases));
 
     SocketWatcher socket_watcher(
         SocketPerformanceWatcherFactory::PROTOCOL_TCP, address_list,
diff --git a/net/socket/tcp_client_socket_unittest.cc b/net/socket/tcp_client_socket_unittest.cc
index 5b3f5212..525def8 100644
--- a/net/socket/tcp_client_socket_unittest.cc
+++ b/net/socket/tcp_client_socket_unittest.cc
@@ -293,8 +293,10 @@
       new TestSocketPerformanceWatcher());
   TestSocketPerformanceWatcher* watcher_ptr = watcher.get();
 
+  std::vector<std::string> aliases({"example.com"});
+
   TCPClientSocket socket(
-      AddressList::CreateFromIPAddressList(ip_list, "example.com"),
+      AddressList::CreateFromIPAddressList(ip_list, std::move(aliases)),
       std::move(watcher), nullptr, nullptr, NetLogSource());
 
   EXPECT_THAT(socket.Bind(IPEndPoint(IPAddress::IPv4Localhost(), 0)), IsOk());
diff --git a/remoting/host/curtain_mode_linux.cc b/remoting/host/curtain_mode_linux.cc
index 8501177..d0f3d6f5 100644
--- a/remoting/host/curtain_mode_linux.cc
+++ b/remoting/host/curtain_mode_linux.cc
@@ -11,6 +11,7 @@
 #include "remoting/base/logging.h"
 #include "remoting/host/client_session_control.h"
 #include "ui/gfx/x/connection.h"
+#include "ui/gfx/x/future.h"
 #include "ui/gfx/x/xinput.h"
 #include "ui/gfx/x/xproto_types.h"
 
diff --git a/remoting/host/desktop_resizer_x11.cc b/remoting/host/desktop_resizer_x11.cc
index 43e515b..323db73 100644
--- a/remoting/host/desktop_resizer_x11.cc
+++ b/remoting/host/desktop_resizer_x11.cc
@@ -12,6 +12,7 @@
 #include "base/numerics/ranges.h"
 #include "remoting/base/logging.h"
 #include "remoting/host/linux/x11_util.h"
+#include "ui/gfx/x/future.h"
 #include "ui/gfx/x/randr.h"
 #include "ui/gfx/x/scoped_ignore_errors.h"
 
diff --git a/remoting/host/input_injector_x11.cc b/remoting/host/input_injector_x11.cc
index 5706d35..35120ec 100644
--- a/remoting/host/input_injector_x11.cc
+++ b/remoting/host/input_injector_x11.cc
@@ -30,6 +30,7 @@
 #include "third_party/webrtc/modules/desktop_capture/desktop_geometry.h"
 #include "ui/events/keycodes/dom/dom_code.h"
 #include "ui/events/keycodes/dom/keycode_converter.h"
+#include "ui/gfx/x/future.h"
 #include "ui/gfx/x/keysyms/keysyms.h"
 #include "ui/gfx/x/xinput.h"
 #include "ui/gfx/x/xkb.h"
diff --git a/remoting/host/input_monitor/local_hotkey_input_monitor_x11.cc b/remoting/host/input_monitor/local_hotkey_input_monitor_x11.cc
index 84e9611..1934871 100644
--- a/remoting/host/input_monitor/local_hotkey_input_monitor_x11.cc
+++ b/remoting/host/input_monitor/local_hotkey_input_monitor_x11.cc
@@ -20,6 +20,8 @@
 #include "base/single_thread_task_runner.h"
 #include "ui/events/devices/x11/xinput_util.h"
 #include "ui/gfx/x/connection.h"
+#include "ui/gfx/x/event.h"
+#include "ui/gfx/x/future.h"
 #include "ui/gfx/x/keysyms/keysyms.h"
 #include "ui/gfx/x/xinput.h"
 
diff --git a/remoting/host/input_monitor/local_mouse_input_monitor_x11.cc b/remoting/host/input_monitor/local_mouse_input_monitor_x11.cc
index 07ce98e..470c1a3 100644
--- a/remoting/host/input_monitor/local_mouse_input_monitor_x11.cc
+++ b/remoting/host/input_monitor/local_mouse_input_monitor_x11.cc
@@ -22,6 +22,8 @@
 #include "ui/events/devices/x11/xinput_util.h"
 #include "ui/events/event.h"
 #include "ui/gfx/x/connection.h"
+#include "ui/gfx/x/event.h"
+#include "ui/gfx/x/future.h"
 #include "ui/gfx/x/xinput.h"
 #include "ui/gfx/x/xproto.h"
 
diff --git a/remoting/host/keyboard_layout_monitor_linux.cc b/remoting/host/keyboard_layout_monitor_linux.cc
index e7e568a..4dece52 100644
--- a/remoting/host/keyboard_layout_monitor_linux.cc
+++ b/remoting/host/keyboard_layout_monitor_linux.cc
@@ -19,6 +19,7 @@
 #include "ui/events/keycodes/dom/dom_code.h"
 #include "ui/events/keycodes/dom/keycode_converter.h"
 #include "ui/events/platform/x11/x11_event_source.h"
+#include "ui/gfx/x/future.h"
 #include "ui/gfx/x/xkb.h"
 #include "ui/gfx/x/xproto.h"
 #include "ui/gfx/x/xproto_types.h"
diff --git a/remoting/host/linux/x11_keyboard_impl.cc b/remoting/host/linux/x11_keyboard_impl.cc
index 080f54e..4e6d7d5 100644
--- a/remoting/host/linux/x11_keyboard_impl.cc
+++ b/remoting/host/linux/x11_keyboard_impl.cc
@@ -7,6 +7,7 @@
 #include "base/stl_util.h"
 #include "base/strings/stringprintf.h"
 #include "remoting/host/linux/unicode_to_keysym.h"
+#include "ui/gfx/x/future.h"
 #include "ui/gfx/x/xkb.h"
 #include "ui/gfx/x/xproto.h"
 #include "ui/gfx/x/xtest.h"
diff --git a/remoting/host/linux/x11_util.cc b/remoting/host/linux/x11_util.cc
index 0f6e032..5c7c68b2 100644
--- a/remoting/host/linux/x11_util.cc
+++ b/remoting/host/linux/x11_util.cc
@@ -5,6 +5,7 @@
 #include "remoting/host/linux/x11_util.h"
 
 #include "base/bind.h"
+#include "ui/gfx/x/future.h"
 #include "ui/gfx/x/xtest.h"
 
 namespace remoting {
diff --git a/remoting/host/linux/x_server_clipboard.cc b/remoting/host/linux/x_server_clipboard.cc
index e63cdaf..ca7dfbd0 100644
--- a/remoting/host/linux/x_server_clipboard.cc
+++ b/remoting/host/linux/x_server_clipboard.cc
@@ -14,6 +14,7 @@
 #include "remoting/base/logging.h"
 #include "remoting/base/util.h"
 #include "ui/gfx/x/extension_manager.h"
+#include "ui/gfx/x/future.h"
 #include "ui/gfx/x/xproto.h"
 #include "ui/gfx/x/xproto_util.h"
 
diff --git a/services/network/cookie_access_delegate_impl.cc b/services/network/cookie_access_delegate_impl.cc
index 7c7339a3..d520cbf 100644
--- a/services/network/cookie_access_delegate_impl.cc
+++ b/services/network/cookie_access_delegate_impl.cc
@@ -30,9 +30,15 @@
 
 net::CookieAccessSemantics CookieAccessDelegateImpl::GetAccessSemantics(
     const net::CanonicalCookie& cookie) const {
-  if (type_ == mojom::CookieAccessDelegateType::ALWAYS_LEGACY)
-    return net::CookieAccessSemantics::LEGACY;
-  return cookie_settings_->GetCookieAccessSemanticsForDomain(cookie.Domain());
+  switch (type_) {
+    case mojom::CookieAccessDelegateType::ALWAYS_LEGACY:
+      return net::CookieAccessSemantics::LEGACY;
+    case mojom::CookieAccessDelegateType::ALWAYS_NONLEGACY:
+      return net::CookieAccessSemantics::NONLEGACY;
+    case mojom::CookieAccessDelegateType::USE_CONTENT_SETTINGS:
+      return cookie_settings_->GetCookieAccessSemanticsForDomain(
+          cookie.Domain());
+  }
 }
 
 bool CookieAccessDelegateImpl::ShouldIgnoreSameSiteRestrictions(
diff --git a/services/network/host_resolver_unittest.cc b/services/network/host_resolver_unittest.cc
index 8b9a4b7..e98a83f 100644
--- a/services/network/host_resolver_unittest.cc
+++ b/services/network/host_resolver_unittest.cc
@@ -680,7 +680,7 @@
   EXPECT_THAT(response_client.result_addresses().value().endpoints(),
               testing::ElementsAre(CreateExpectedEndPoint("123.0.12.24", 80)));
   EXPECT_EQ("canonicalexample.com",
-            response_client.result_addresses().value().canonical_name());
+            response_client.result_addresses().value().GetCanonicalName());
 }
 
 TEST_F(HostResolverTest, LoopbackOnly) {
diff --git a/services/network/public/cpp/address_list_mojom_traits.cc b/services/network/public/cpp/address_list_mojom_traits.cc
index 0dac1c7..795bbb9a 100644
--- a/services/network/public/cpp/address_list_mojom_traits.cc
+++ b/services/network/public/cpp/address_list_mojom_traits.cc
@@ -16,10 +16,10 @@
   if (!data.ReadAddresses(&out->endpoints()))
     return false;
 
-  std::string canonical_name;
-  if (!data.ReadCanonicalName(&canonical_name))
+  std::vector<std::string> dns_aliases;
+  if (!data.ReadDnsAliases(&dns_aliases))
     return false;
-  out->set_canonical_name(canonical_name);
+  out->SetDnsAliases(std::move(dns_aliases));
 
   return true;
 }
diff --git a/services/network/public/cpp/address_list_mojom_traits.h b/services/network/public/cpp/address_list_mojom_traits.h
index 6c47b7c7..7186789 100644
--- a/services/network/public/cpp/address_list_mojom_traits.h
+++ b/services/network/public/cpp/address_list_mojom_traits.h
@@ -22,8 +22,9 @@
     return obj.endpoints();
   }
 
-  static const std::string& canonical_name(const net::AddressList& obj) {
-    return obj.canonical_name();
+  static const std::vector<std::string>& dns_aliases(
+      const net::AddressList& obj) {
+    return obj.dns_aliases();
   }
 
   static bool Read(network::mojom::AddressListDataView data,
diff --git a/services/network/public/mojom/address_list.mojom b/services/network/public/mojom/address_list.mojom
index 9af17c4..ca4b839 100644
--- a/services/network/public/mojom/address_list.mojom
+++ b/services/network/public/mojom/address_list.mojom
@@ -9,5 +9,8 @@
 // Mirror of net::AddressList.
 struct AddressList {
   array<IPEndPoint> addresses;
-  string canonical_name;
+  // The first entry of `dns_aliases`, if it exists, is the canonical name.
+  // The alias chain is preserved in reverse order, from canonical name (i.e.
+  // address record name) through to query name.
+  array<string> dns_aliases;
 };
diff --git a/services/network/public/mojom/cookie_manager.mojom b/services/network/public/mojom/cookie_manager.mojom
index c95b843..3c0ec0e 100644
--- a/services/network/public/mojom/cookie_manager.mojom
+++ b/services/network/public/mojom/cookie_manager.mojom
@@ -52,6 +52,8 @@
   USE_CONTENT_SETTINGS,
   // Always returns Legacy access semantics.
   ALWAYS_LEGACY,
+  // Always returns Non-Legacy access semantics.
+  ALWAYS_NONLEGACY,
 };
 
 enum CookiePriority {
diff --git a/services/proxy_resolver/host_resolver_mojo.cc b/services/proxy_resolver/host_resolver_mojo.cc
index d17dae3..018dbc9 100644
--- a/services/proxy_resolver/host_resolver_mojo.cc
+++ b/services/proxy_resolver/host_resolver_mojo.cc
@@ -97,7 +97,7 @@
       base::TimeDelta ttl =
           error == net::OK ? kCacheEntryTTL : kNegativeCacheEntryTTL;
       net::HostCache::Entry entry(
-          error, net::AddressList::CreateFromIPAddressList(result, ""),
+          error, net::AddressList::CreateFromIPAddressList(result, {}),
           net::HostCache::Entry::SOURCE_UNKNOWN, ttl);
       host_cache_->Set(
           CacheKeyForRequest(hostname_, network_isolation_key_, operation_),
diff --git a/storage/browser/file_system/obfuscated_file_util_unittest.cc b/storage/browser/file_system/obfuscated_file_util_unittest.cc
index ce28f2a..112a574 100644
--- a/storage/browser/file_system/obfuscated_file_util_unittest.cc
+++ b/storage/browser/file_system/obfuscated_file_util_unittest.cc
@@ -13,6 +13,7 @@
 #include <vector>
 
 #include "base/bind.h"
+#include "base/callback_helpers.h"
 #include "base/files/file.h"
 #include "base/files/file_path.h"
 #include "base/files/file_util.h"
@@ -174,7 +175,8 @@
 
     quota_manager_ = base::MakeRefCounted<QuotaManager>(
         is_incognito(), data_dir_.GetPath(),
-        base::ThreadTaskRunnerHandle::Get().get(), storage_policy_.get(),
+        base::ThreadTaskRunnerHandle::Get().get(),
+        /*quota_change_callback=*/base::DoNothing(), storage_policy_.get(),
         GetQuotaSettingsFunc());
     QuotaSettings settings;
     settings.per_host_quota = 25 * 1024 * 1024;
diff --git a/storage/browser/quota/quota_manager.cc b/storage/browser/quota/quota_manager.cc
index 4b1d43e..bd3dbf4 100644
--- a/storage/browser/quota/quota_manager.cc
+++ b/storage/browser/quota/quota_manager.cc
@@ -904,6 +904,7 @@
     bool is_incognito,
     const base::FilePath& profile_path,
     scoped_refptr<base::SingleThreadTaskRunner> io_thread,
+    base::RepeatingClosure quota_change_callback,
     scoped_refptr<SpecialStoragePolicy> special_storage_policy,
     const GetQuotaSettingsFunc& get_settings_function)
     : RefCountedDeleteOnSequence<QuotaManager>(io_thread),
@@ -917,6 +918,7 @@
           {base::MayBlock(), base::TaskPriority::USER_VISIBLE,
            base::TaskShutdownBehavior::BLOCK_SHUTDOWN})),
       get_settings_function_(get_settings_function),
+      quota_change_callback_(std::move(quota_change_callback)),
       is_getting_eviction_origin_(false),
       special_storage_policy_(std::move(special_storage_policy)),
       get_volume_info_fn_(&QuotaManager::GetVolumeInfo) {
@@ -1536,8 +1538,9 @@
   storage_pressure_callback_.Run(origin);
 }
 
-void QuotaManager::DetermineStoragePressure(int64_t free_space,
-                                            int64_t total_space) {
+void QuotaManager::DetermineStoragePressure(int64_t total_space,
+                                            int64_t free_space) {
+  DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
   if (!base::FeatureList::IsEnabled(features::kStoragePressureEvent)) {
     return;
   }
@@ -1548,10 +1551,8 @@
                            (kThresholdRandomizationPercent / 100.0)),
       kThresholdRandomizationPercent);
   threshold = std::min(threshold_bytes, threshold);
-
-  if (free_space < threshold) {
-    // TODO(https://crbug.com/1096549): Implement StoragePressureEvent
-    // dispatching.
+  if (free_space < threshold && !quota_change_callback_.is_null()) {
+    quota_change_callback_.Run();
   }
 }
 
@@ -1613,6 +1614,12 @@
   return devtools_overrides_[origin].quota_size;
 }
 
+void QuotaManager::SetQuotaChangeCallbackForTesting(
+    base::RepeatingClosure storage_pressure_event_callback) {
+  DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
+  quota_change_callback_ = std::move(storage_pressure_event_callback);
+}
+
 void QuotaManager::ReportHistogram() {
   DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
   DCHECK(!is_incognito_);
@@ -1908,11 +1915,12 @@
 void QuotaManager::DidGetStorageCapacity(
     const std::tuple<int64_t, int64_t>& total_and_available) {
   DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
+  int64_t total_space = std::get<0>(total_and_available);
+  int64_t available_space = std::get<1>(total_and_available);
   cached_disk_stats_for_storage_pressure_ =
-      std::make_tuple(base::TimeTicks::Now(), std::get<0>(total_and_available),
-                      std::get<1>(total_and_available));
-  storage_capacity_callbacks_.Run(std::get<0>(total_and_available),
-                                  std::get<1>(total_and_available));
+      std::make_tuple(base::TimeTicks::Now(), total_space, available_space);
+  storage_capacity_callbacks_.Run(total_space, available_space);
+  DetermineStoragePressure(total_space, available_space);
 }
 
 void QuotaManager::DidDatabaseWork(bool success) {
diff --git a/storage/browser/quota/quota_manager.h b/storage/browser/quota/quota_manager.h
index 75b74e9..db7da80 100644
--- a/storage/browser/quota/quota_manager.h
+++ b/storage/browser/quota/quota_manager.h
@@ -130,6 +130,12 @@
                               bool is_override_enabled,
                               blink::mojom::UsageBreakdownPtr usage_breakdown)>;
 
+  // Function pointer type used to store the function which returns
+  // information about the volume containing the given FilePath.
+  // The value returned is std::tuple<total_space, available_space>.
+  using GetVolumeInfoFn =
+      std::tuple<int64_t, int64_t> (*)(const base::FilePath&);
+
   static constexpr int64_t kGBytes = 1024 * 1024 * 1024;
   static constexpr int64_t kNoLimit = INT64_MAX;
   static constexpr int64_t kMBytes = 1024 * 1024;
@@ -138,6 +144,7 @@
   QuotaManager(bool is_incognito,
                const base::FilePath& profile_path,
                scoped_refptr<base::SingleThreadTaskRunner> io_thread,
+               base::RepeatingClosure quota_change_callback,
                scoped_refptr<SpecialStoragePolicy> special_storage_policy,
                const GetQuotaSettingsFunc& get_settings_function);
 
@@ -280,6 +287,7 @@
   void WithdrawOverridesForHandle(int handle_id);
 
   // Cap size for per-host persistent quota determined by the histogram.
+  // Cap size for per-host persistent quota determined by the histogram.
   // This is a bit lax value because the histogram says nothing about per-host
   // persistent storage usage and we determined by global persistent storage
   // usage that is less than 10GB for almost all users.
@@ -305,8 +313,14 @@
 
   void DisableDatabaseForTesting() { db_disabled_ = true; }
 
+  void SetGetVolumeInfoFnForTesting(GetVolumeInfoFn fn) {
+    get_volume_info_fn_ = fn;
+  }
+
  protected:
   ~QuotaManager() override;
+  void SetQuotaChangeCallbackForTesting(
+      base::RepeatingClosure storage_pressure_event_callback);
 
  private:
   friend class base::DeleteHelper<QuotaManager>;
@@ -348,12 +362,6 @@
 
   using QuotaSettingsCallback = base::OnceCallback<void(const QuotaSettings&)>;
 
-  // Function pointer type used to store the function which returns
-  // information about the volume containing the given FilePath.
-  // The value returned is std::tuple<total_space, available_space>.
-  using GetVolumeInfoFn =
-      std::tuple<int64_t, int64_t> (*)(const base::FilePath&);
-
   using DumpQuotaTableCallback =
       base::OnceCallback<void(const QuotaTableEntries&)>;
   using DumpOriginInfoTableCallback =
@@ -511,6 +519,7 @@
   GetQuotaSettingsFunc get_settings_function_;
   scoped_refptr<base::TaskRunner> get_settings_task_runner_;
   base::RepeatingCallback<void(url::Origin)> storage_pressure_callback_;
+  base::RepeatingClosure quota_change_callback_;
   QuotaSettings settings_;
   base::TimeTicks settings_timestamp_;
   std::tuple<base::TimeTicks, int64_t, int64_t>
diff --git a/storage/browser/quota/quota_manager_unittest.cc b/storage/browser/quota/quota_manager_unittest.cc
index 434521f..1083e61 100644
--- a/storage/browser/quota/quota_manager_unittest.cc
+++ b/storage/browser/quota/quota_manager_unittest.cc
@@ -13,6 +13,7 @@
 #include <vector>
 
 #include "base/bind.h"
+#include "base/callback_helpers.h"
 #include "base/containers/span.h"
 #include "base/files/file_util.h"
 #include "base/files/scoped_temp_dir.h"
@@ -58,6 +59,7 @@
 const int64_t kMustRemainAvailableForSystem = kAvailableSpaceForApp / 2;
 const int64_t kDefaultPoolSize = 1000;
 const int64_t kDefaultPerHostQuota = 200;
+const int64_t kGigabytes = QuotaManager::kMBytes * 1024;
 
 // Returns a deterministic value for the amount of available disk space.
 int64_t GetAvailableDiskSpaceForTest() {
@@ -105,6 +107,7 @@
     quota_manager_ = base::MakeRefCounted<QuotaManager>(
         is_incognito, data_dir_.GetPath(),
         base::ThreadTaskRunnerHandle::Get().get(),
+        /*quota_change_callback=*/base::DoNothing(),
         mock_special_storage_policy_.get(), GetQuotaSettingsFunc());
     SetQuotaSettings(kDefaultPoolSize, kDefaultPerHostQuota,
                      is_incognito ? INT64_C(0) : kMustRemainAvailableForSystem);
@@ -179,6 +182,13 @@
     quota_manager_->SetQuotaSettings(settings);
   }
 
+  using GetVolumeInfoFn =
+      std::tuple<int64_t, int64_t> (*)(const base::FilePath&);
+
+  void SetGetVolumeInfoFn(GetVolumeInfoFn fn) {
+    quota_manager_->SetGetVolumeInfoFnForTesting(fn);
+  }
+
   void GetPersistentHostQuota(const std::string& host) {
     quota_status_ = QuotaStatusCode::kUnknown;
     quota_ = -1;
@@ -453,6 +463,10 @@
     return quota_manager_->proxy()->GetQuotaOverrideHandle();
   }
 
+  void SetQuotaChangeCallback(base::RepeatingClosure cb) {
+    quota_manager_->SetQuotaChangeCallbackForTesting(std::move(cb));
+  }
+
   QuotaStatusCode status() const { return quota_status_; }
   const UsageInfoEntries& usage_info() const { return usage_info_; }
   int64_t usage() const { return usage_; }
@@ -2798,4 +2812,57 @@
   EXPECT_EQ(kDefaultPerHostQuota, quota());
 }
 
+TEST_F(QuotaManagerTest, QuotaChangeEvent_LargePartitionPressure) {
+  scoped_feature_list_.InitAndEnableFeature(features::kStoragePressureEvent);
+  bool quota_change_dispatched = false;
+
+  SetQuotaChangeCallback(
+      base::BindLambdaForTesting([&] { quota_change_dispatched = true; }));
+  SetGetVolumeInfoFn([](const base::FilePath&) -> std::tuple<int64_t, int64_t> {
+    int64_t total = kGigabytes * 100;
+    int64_t available = kGigabytes * 2;
+    return std::make_tuple(total, available);
+  });
+  GetStorageCapacity();
+  task_environment_.RunUntilIdle();
+  EXPECT_FALSE(quota_change_dispatched);
+
+  SetGetVolumeInfoFn([](const base::FilePath&) -> std::tuple<int64_t, int64_t> {
+    int64_t total = kGigabytes * 100;
+    int64_t available = QuotaManager::kMBytes * 512;
+    return std::make_tuple(total, available);
+  });
+  GetStorageCapacity();
+  task_environment_.RunUntilIdle();
+  EXPECT_TRUE(quota_change_dispatched);
+}
+
+TEST_F(QuotaManagerTest, QuotaChangeEvent_SmallPartitionPressure) {
+  scoped_feature_list_.InitAndEnableFeature(features::kStoragePressureEvent);
+  bool quota_change_dispatched = false;
+
+  SetQuotaChangeCallback(
+      base::BindLambdaForTesting([&] { quota_change_dispatched = true; }));
+  SetGetVolumeInfoFn([](const base::FilePath&) -> std::tuple<int64_t, int64_t> {
+    int64_t total = kGigabytes * 10;
+    int64_t available = total * 2;
+    return std::make_tuple(total, available);
+  });
+  GetStorageCapacity();
+  task_environment_.RunUntilIdle();
+  EXPECT_FALSE(quota_change_dispatched);
+
+  SetGetVolumeInfoFn([](const base::FilePath&) -> std::tuple<int64_t, int64_t> {
+    // DetermineStoragePressure flow will trigger the storage pressure flow
+    // when available disk space is below 5% (+/- 0.25%) of total disk space.
+    // Available is 2% here to guarantee that it falls below the threshold.
+    int64_t total = kGigabytes * 10;
+    int64_t available = total * 0.02;
+    return std::make_tuple(total, available);
+  });
+  GetStorageCapacity();
+  task_environment_.RunUntilIdle();
+  EXPECT_TRUE(quota_change_dispatched);
+}
+
 }  // namespace storage
diff --git a/storage/browser/test/mock_quota_manager.cc b/storage/browser/test/mock_quota_manager.cc
index 90c198b4..fbc8b74 100644
--- a/storage/browser/test/mock_quota_manager.cc
+++ b/storage/browser/test/mock_quota_manager.cc
@@ -9,6 +9,7 @@
 #include <utility>
 
 #include "base/bind.h"
+#include "base/callback_helpers.h"
 #include "base/location.h"
 #include "base/memory/ref_counted.h"
 #include "base/single_thread_task_runner.h"
@@ -46,6 +47,7 @@
     : QuotaManager(is_incognito,
                    profile_path,
                    std::move(io_thread),
+                   /*quota_change_callback=*/base::DoNothing(),
                    std::move(special_storage_policy),
                    GetQuotaSettingsFunc()) {}
 
diff --git a/testing/buildbot/chromium.clang.json b/testing/buildbot/chromium.clang.json
index b9aec83..3d42643c 100644
--- a/testing/buildbot/chromium.clang.json
+++ b/testing/buildbot/chromium.clang.json
@@ -24524,7 +24524,7 @@
   },
   "ToTMacASan": {
     "additional_compile_targets": [
-      "all"
+      "chromium_builder_asan"
     ],
     "gtest_tests": [
       {
diff --git a/testing/buildbot/chromium.fyi.json b/testing/buildbot/chromium.fyi.json
index aa59887..c23fe20 100644
--- a/testing/buildbot/chromium.fyi.json
+++ b/testing/buildbot/chromium.fyi.json
@@ -57370,7 +57370,7 @@
           "dimension_sets": [
             {
               "cpu": "arm64",
-              "os": "Mac-11.0|Mac-10.16",
+              "os": "Mac-11.0",
               "pool": "chromium.tests.mac-arm64"
             }
           ],
@@ -57389,7 +57389,7 @@
           "dimension_sets": [
             {
               "cpu": "arm64",
-              "os": "Mac-11.0|Mac-10.16",
+              "os": "Mac-11.0",
               "pool": "chromium.tests.mac-arm64"
             }
           ],
@@ -57411,7 +57411,7 @@
           "dimension_sets": [
             {
               "cpu": "arm64",
-              "os": "Mac-11.0|Mac-10.16",
+              "os": "Mac-11.0",
               "pool": "chromium.tests.mac-arm64"
             }
           ],
@@ -57431,7 +57431,7 @@
           "dimension_sets": [
             {
               "cpu": "arm64",
-              "os": "Mac-11.0|Mac-10.16",
+              "os": "Mac-11.0",
               "pool": "chromium.tests.mac-arm64"
             }
           ],
@@ -57450,7 +57450,7 @@
           "dimension_sets": [
             {
               "cpu": "arm64",
-              "os": "Mac-11.0|Mac-10.16",
+              "os": "Mac-11.0",
               "pool": "chromium.tests.mac-arm64"
             }
           ],
@@ -57469,7 +57469,7 @@
           "dimension_sets": [
             {
               "cpu": "arm64",
-              "os": "Mac-11.0|Mac-10.16",
+              "os": "Mac-11.0",
               "pool": "chromium.tests.mac-arm64"
             }
           ],
@@ -57488,7 +57488,7 @@
           "dimension_sets": [
             {
               "cpu": "arm64",
-              "os": "Mac-11.0|Mac-10.16",
+              "os": "Mac-11.0",
               "pool": "chromium.tests.mac-arm64"
             }
           ],
@@ -57507,7 +57507,7 @@
           "dimension_sets": [
             {
               "cpu": "arm64",
-              "os": "Mac-11.0|Mac-10.16",
+              "os": "Mac-11.0",
               "pool": "chromium.tests.mac-arm64"
             }
           ],
@@ -57526,7 +57526,7 @@
           "dimension_sets": [
             {
               "cpu": "arm64",
-              "os": "Mac-11.0|Mac-10.16",
+              "os": "Mac-11.0",
               "pool": "chromium.tests.mac-arm64"
             }
           ],
@@ -57545,7 +57545,7 @@
           "dimension_sets": [
             {
               "cpu": "arm64",
-              "os": "Mac-11.0|Mac-10.16",
+              "os": "Mac-11.0",
               "pool": "chromium.tests.mac-arm64"
             }
           ],
@@ -57565,7 +57565,7 @@
           "dimension_sets": [
             {
               "cpu": "arm64",
-              "os": "Mac-11.0|Mac-10.16",
+              "os": "Mac-11.0",
               "pool": "chromium.tests.mac-arm64"
             }
           ],
@@ -57584,7 +57584,7 @@
           "dimension_sets": [
             {
               "cpu": "arm64",
-              "os": "Mac-11.0|Mac-10.16",
+              "os": "Mac-11.0",
               "pool": "chromium.tests.mac-arm64"
             }
           ],
@@ -57603,7 +57603,7 @@
           "dimension_sets": [
             {
               "cpu": "arm64",
-              "os": "Mac-11.0|Mac-10.16",
+              "os": "Mac-11.0",
               "pool": "chromium.tests.mac-arm64"
             }
           ],
@@ -57622,7 +57622,7 @@
           "dimension_sets": [
             {
               "cpu": "arm64",
-              "os": "Mac-11.0|Mac-10.16",
+              "os": "Mac-11.0",
               "pool": "chromium.tests.mac-arm64"
             }
           ],
@@ -57645,7 +57645,7 @@
           "dimension_sets": [
             {
               "cpu": "arm64",
-              "os": "Mac-11.0|Mac-10.16",
+              "os": "Mac-11.0",
               "pool": "chromium.tests.mac-arm64"
             }
           ],
@@ -57664,7 +57664,7 @@
           "dimension_sets": [
             {
               "cpu": "arm64",
-              "os": "Mac-11.0|Mac-10.16",
+              "os": "Mac-11.0",
               "pool": "chromium.tests.mac-arm64"
             }
           ],
@@ -57683,7 +57683,7 @@
           "dimension_sets": [
             {
               "cpu": "arm64",
-              "os": "Mac-11.0|Mac-10.16",
+              "os": "Mac-11.0",
               "pool": "chromium.tests.mac-arm64"
             }
           ],
@@ -57702,7 +57702,7 @@
           "dimension_sets": [
             {
               "cpu": "arm64",
-              "os": "Mac-11.0|Mac-10.16",
+              "os": "Mac-11.0",
               "pool": "chromium.tests.mac-arm64"
             }
           ],
@@ -57721,7 +57721,7 @@
           "dimension_sets": [
             {
               "cpu": "arm64",
-              "os": "Mac-11.0|Mac-10.16",
+              "os": "Mac-11.0",
               "pool": "chromium.tests.mac-arm64"
             }
           ],
@@ -57740,7 +57740,7 @@
           "dimension_sets": [
             {
               "cpu": "arm64",
-              "os": "Mac-11.0|Mac-10.16",
+              "os": "Mac-11.0",
               "pool": "chromium.tests.mac-arm64"
             }
           ],
@@ -57759,7 +57759,7 @@
           "dimension_sets": [
             {
               "cpu": "arm64",
-              "os": "Mac-11.0|Mac-10.16",
+              "os": "Mac-11.0",
               "pool": "chromium.tests.mac-arm64"
             }
           ],
@@ -57778,7 +57778,7 @@
           "dimension_sets": [
             {
               "cpu": "arm64",
-              "os": "Mac-11.0|Mac-10.16",
+              "os": "Mac-11.0",
               "pool": "chromium.tests.mac-arm64"
             }
           ],
@@ -57798,7 +57798,7 @@
           "dimension_sets": [
             {
               "cpu": "arm64",
-              "os": "Mac-11.0|Mac-10.16",
+              "os": "Mac-11.0",
               "pool": "chromium.tests.mac-arm64"
             }
           ],
@@ -57817,7 +57817,7 @@
           "dimension_sets": [
             {
               "cpu": "arm64",
-              "os": "Mac-11.0|Mac-10.16",
+              "os": "Mac-11.0",
               "pool": "chromium.tests.mac-arm64"
             }
           ],
@@ -57836,7 +57836,7 @@
           "dimension_sets": [
             {
               "cpu": "arm64",
-              "os": "Mac-11.0|Mac-10.16",
+              "os": "Mac-11.0",
               "pool": "chromium.tests.mac-arm64"
             }
           ],
@@ -57855,7 +57855,7 @@
           "dimension_sets": [
             {
               "cpu": "arm64",
-              "os": "Mac-11.0|Mac-10.16",
+              "os": "Mac-11.0",
               "pool": "chromium.tests.mac-arm64"
             }
           ],
@@ -57874,7 +57874,7 @@
           "dimension_sets": [
             {
               "cpu": "arm64",
-              "os": "Mac-11.0|Mac-10.16",
+              "os": "Mac-11.0",
               "pool": "chromium.tests.mac-arm64"
             }
           ],
@@ -57893,7 +57893,7 @@
           "dimension_sets": [
             {
               "cpu": "arm64",
-              "os": "Mac-11.0|Mac-10.16",
+              "os": "Mac-11.0",
               "pool": "chromium.tests.mac-arm64"
             }
           ],
@@ -57912,7 +57912,7 @@
           "dimension_sets": [
             {
               "cpu": "arm64",
-              "os": "Mac-11.0|Mac-10.16",
+              "os": "Mac-11.0",
               "pool": "chromium.tests.mac-arm64"
             }
           ],
@@ -57931,7 +57931,7 @@
           "dimension_sets": [
             {
               "cpu": "arm64",
-              "os": "Mac-11.0|Mac-10.16",
+              "os": "Mac-11.0",
               "pool": "chromium.tests.mac-arm64"
             }
           ],
@@ -57950,7 +57950,7 @@
           "dimension_sets": [
             {
               "cpu": "arm64",
-              "os": "Mac-11.0|Mac-10.16",
+              "os": "Mac-11.0",
               "pool": "chromium.tests.mac-arm64"
             }
           ],
@@ -57969,7 +57969,7 @@
           "dimension_sets": [
             {
               "cpu": "arm64",
-              "os": "Mac-11.0|Mac-10.16",
+              "os": "Mac-11.0",
               "pool": "chromium.tests.mac-arm64"
             }
           ],
@@ -57988,7 +57988,7 @@
           "dimension_sets": [
             {
               "cpu": "arm64",
-              "os": "Mac-11.0|Mac-10.16",
+              "os": "Mac-11.0",
               "pool": "chromium.tests.mac-arm64"
             }
           ],
@@ -58007,7 +58007,7 @@
           "dimension_sets": [
             {
               "cpu": "arm64",
-              "os": "Mac-11.0|Mac-10.16",
+              "os": "Mac-11.0",
               "pool": "chromium.tests.mac-arm64"
             }
           ],
@@ -58026,7 +58026,7 @@
           "dimension_sets": [
             {
               "cpu": "arm64",
-              "os": "Mac-11.0|Mac-10.16",
+              "os": "Mac-11.0",
               "pool": "chromium.tests.mac-arm64"
             }
           ],
@@ -58045,7 +58045,7 @@
           "dimension_sets": [
             {
               "cpu": "arm64",
-              "os": "Mac-11.0|Mac-10.16",
+              "os": "Mac-11.0",
               "pool": "chromium.tests.mac-arm64"
             }
           ],
@@ -58064,7 +58064,7 @@
           "dimension_sets": [
             {
               "cpu": "arm64",
-              "os": "Mac-11.0|Mac-10.16",
+              "os": "Mac-11.0",
               "pool": "chromium.tests.mac-arm64"
             }
           ],
@@ -58083,7 +58083,7 @@
           "dimension_sets": [
             {
               "cpu": "arm64",
-              "os": "Mac-11.0|Mac-10.16",
+              "os": "Mac-11.0",
               "pool": "chromium.tests.mac-arm64"
             }
           ],
@@ -58102,7 +58102,7 @@
           "dimension_sets": [
             {
               "cpu": "arm64",
-              "os": "Mac-11.0|Mac-10.16",
+              "os": "Mac-11.0",
               "pool": "chromium.tests.mac-arm64"
             }
           ],
@@ -58121,7 +58121,7 @@
           "dimension_sets": [
             {
               "cpu": "arm64",
-              "os": "Mac-11.0|Mac-10.16",
+              "os": "Mac-11.0",
               "pool": "chromium.tests.mac-arm64"
             }
           ],
@@ -58140,7 +58140,7 @@
           "dimension_sets": [
             {
               "cpu": "arm64",
-              "os": "Mac-11.0|Mac-10.16",
+              "os": "Mac-11.0",
               "pool": "chromium.tests.mac-arm64"
             }
           ],
@@ -58159,7 +58159,7 @@
           "dimension_sets": [
             {
               "cpu": "arm64",
-              "os": "Mac-11.0|Mac-10.16",
+              "os": "Mac-11.0",
               "pool": "chromium.tests.mac-arm64"
             }
           ],
@@ -58179,7 +58179,7 @@
           "dimension_sets": [
             {
               "cpu": "arm64",
-              "os": "Mac-11.0|Mac-10.16",
+              "os": "Mac-11.0",
               "pool": "chromium.tests.mac-arm64"
             }
           ],
@@ -58198,7 +58198,7 @@
           "dimension_sets": [
             {
               "cpu": "arm64",
-              "os": "Mac-11.0|Mac-10.16",
+              "os": "Mac-11.0",
               "pool": "chromium.tests.mac-arm64"
             }
           ],
@@ -58217,7 +58217,7 @@
           "dimension_sets": [
             {
               "cpu": "arm64",
-              "os": "Mac-11.0|Mac-10.16",
+              "os": "Mac-11.0",
               "pool": "chromium.tests.mac-arm64"
             }
           ],
@@ -58236,7 +58236,7 @@
           "dimension_sets": [
             {
               "cpu": "arm64",
-              "os": "Mac-11.0|Mac-10.16",
+              "os": "Mac-11.0",
               "pool": "chromium.tests.mac-arm64"
             }
           ],
@@ -58255,7 +58255,7 @@
           "dimension_sets": [
             {
               "cpu": "arm64",
-              "os": "Mac-11.0|Mac-10.16",
+              "os": "Mac-11.0",
               "pool": "chromium.tests.mac-arm64"
             }
           ],
@@ -58274,7 +58274,7 @@
           "dimension_sets": [
             {
               "cpu": "arm64",
-              "os": "Mac-11.0|Mac-10.16",
+              "os": "Mac-11.0",
               "pool": "chromium.tests.mac-arm64"
             }
           ],
@@ -58293,7 +58293,7 @@
           "dimension_sets": [
             {
               "cpu": "arm64",
-              "os": "Mac-11.0|Mac-10.16",
+              "os": "Mac-11.0",
               "pool": "chromium.tests.mac-arm64"
             }
           ],
@@ -58312,7 +58312,7 @@
           "dimension_sets": [
             {
               "cpu": "arm64",
-              "os": "Mac-11.0|Mac-10.16",
+              "os": "Mac-11.0",
               "pool": "chromium.tests.mac-arm64"
             }
           ],
@@ -58331,7 +58331,7 @@
           "dimension_sets": [
             {
               "cpu": "arm64",
-              "os": "Mac-11.0|Mac-10.16",
+              "os": "Mac-11.0",
               "pool": "chromium.tests.mac-arm64"
             }
           ],
@@ -58350,7 +58350,7 @@
           "dimension_sets": [
             {
               "cpu": "arm64",
-              "os": "Mac-11.0|Mac-10.16",
+              "os": "Mac-11.0",
               "pool": "chromium.tests.mac-arm64"
             }
           ],
@@ -58369,7 +58369,7 @@
           "dimension_sets": [
             {
               "cpu": "arm64",
-              "os": "Mac-11.0|Mac-10.16",
+              "os": "Mac-11.0",
               "pool": "chromium.tests.mac-arm64"
             }
           ],
@@ -58388,7 +58388,7 @@
           "dimension_sets": [
             {
               "cpu": "arm64",
-              "os": "Mac-11.0|Mac-10.16",
+              "os": "Mac-11.0",
               "pool": "chromium.tests.mac-arm64"
             }
           ],
@@ -58407,7 +58407,7 @@
           "dimension_sets": [
             {
               "cpu": "arm64",
-              "os": "Mac-11.0|Mac-10.16",
+              "os": "Mac-11.0",
               "pool": "chromium.tests.mac-arm64"
             }
           ],
@@ -58426,7 +58426,7 @@
           "dimension_sets": [
             {
               "cpu": "arm64",
-              "os": "Mac-11.0|Mac-10.16",
+              "os": "Mac-11.0",
               "pool": "chromium.tests.mac-arm64"
             }
           ],
@@ -58445,7 +58445,7 @@
           "dimension_sets": [
             {
               "cpu": "arm64",
-              "os": "Mac-11.0|Mac-10.16",
+              "os": "Mac-11.0",
               "pool": "chromium.tests.mac-arm64"
             }
           ],
@@ -58464,7 +58464,7 @@
           "dimension_sets": [
             {
               "cpu": "arm64",
-              "os": "Mac-11.0|Mac-10.16",
+              "os": "Mac-11.0",
               "pool": "chromium.tests.mac-arm64"
             }
           ],
@@ -58483,7 +58483,7 @@
           "dimension_sets": [
             {
               "cpu": "arm64",
-              "os": "Mac-11.0|Mac-10.16",
+              "os": "Mac-11.0",
               "pool": "chromium.tests.mac-arm64"
             }
           ],
@@ -58502,7 +58502,7 @@
           "dimension_sets": [
             {
               "cpu": "arm64",
-              "os": "Mac-11.0|Mac-10.16",
+              "os": "Mac-11.0",
               "pool": "chromium.tests.mac-arm64"
             }
           ],
@@ -58521,7 +58521,7 @@
           "dimension_sets": [
             {
               "cpu": "arm64",
-              "os": "Mac-11.0|Mac-10.16",
+              "os": "Mac-11.0",
               "pool": "chromium.tests.mac-arm64"
             }
           ],
@@ -58540,7 +58540,7 @@
           "dimension_sets": [
             {
               "cpu": "arm64",
-              "os": "Mac-11.0|Mac-10.16",
+              "os": "Mac-11.0",
               "pool": "chromium.tests.mac-arm64"
             }
           ],
@@ -58559,7 +58559,7 @@
           "dimension_sets": [
             {
               "cpu": "arm64",
-              "os": "Mac-11.0|Mac-10.16",
+              "os": "Mac-11.0",
               "pool": "chromium.tests.mac-arm64"
             }
           ],
@@ -58578,7 +58578,7 @@
           "dimension_sets": [
             {
               "cpu": "arm64",
-              "os": "Mac-11.0|Mac-10.16",
+              "os": "Mac-11.0",
               "pool": "chromium.tests.mac-arm64"
             }
           ],
@@ -58597,7 +58597,7 @@
           "dimension_sets": [
             {
               "cpu": "arm64",
-              "os": "Mac-11.0|Mac-10.16",
+              "os": "Mac-11.0",
               "pool": "chromium.tests.mac-arm64"
             }
           ],
@@ -58616,7 +58616,7 @@
           "dimension_sets": [
             {
               "cpu": "arm64",
-              "os": "Mac-11.0|Mac-10.16",
+              "os": "Mac-11.0",
               "pool": "chromium.tests.mac-arm64"
             }
           ],
@@ -58635,7 +58635,7 @@
           "dimension_sets": [
             {
               "cpu": "arm64",
-              "os": "Mac-11.0|Mac-10.16",
+              "os": "Mac-11.0",
               "pool": "chromium.tests.mac-arm64"
             }
           ],
@@ -58654,7 +58654,7 @@
           "dimension_sets": [
             {
               "cpu": "arm64",
-              "os": "Mac-11.0|Mac-10.16",
+              "os": "Mac-11.0",
               "pool": "chromium.tests.mac-arm64"
             }
           ],
@@ -58673,7 +58673,7 @@
           "dimension_sets": [
             {
               "cpu": "arm64",
-              "os": "Mac-11.0|Mac-10.16",
+              "os": "Mac-11.0",
               "pool": "chromium.tests.mac-arm64"
             }
           ],
@@ -58692,7 +58692,7 @@
           "dimension_sets": [
             {
               "cpu": "arm64",
-              "os": "Mac-11.0|Mac-10.16",
+              "os": "Mac-11.0",
               "pool": "chromium.tests.mac-arm64"
             }
           ],
@@ -58711,7 +58711,7 @@
           "dimension_sets": [
             {
               "cpu": "arm64",
-              "os": "Mac-11.0|Mac-10.16",
+              "os": "Mac-11.0",
               "pool": "chromium.tests.mac-arm64"
             }
           ],
@@ -58730,7 +58730,7 @@
           "dimension_sets": [
             {
               "cpu": "arm64",
-              "os": "Mac-11.0|Mac-10.16",
+              "os": "Mac-11.0",
               "pool": "chromium.tests.mac-arm64"
             }
           ],
@@ -58749,7 +58749,7 @@
           "dimension_sets": [
             {
               "cpu": "arm64",
-              "os": "Mac-11.0|Mac-10.16",
+              "os": "Mac-11.0",
               "pool": "chromium.tests.mac-arm64"
             }
           ],
@@ -58768,7 +58768,7 @@
           "dimension_sets": [
             {
               "cpu": "arm64",
-              "os": "Mac-11.0|Mac-10.16",
+              "os": "Mac-11.0",
               "pool": "chromium.tests.mac-arm64"
             }
           ],
@@ -58787,7 +58787,7 @@
           "dimension_sets": [
             {
               "cpu": "arm64",
-              "os": "Mac-11.0|Mac-10.16",
+              "os": "Mac-11.0",
               "pool": "chromium.tests.mac-arm64"
             }
           ],
@@ -58806,7 +58806,7 @@
           "dimension_sets": [
             {
               "cpu": "arm64",
-              "os": "Mac-11.0|Mac-10.16",
+              "os": "Mac-11.0",
               "pool": "chromium.tests.mac-arm64"
             }
           ],
@@ -58826,7 +58826,7 @@
           "dimension_sets": [
             {
               "cpu": "arm64",
-              "os": "Mac-11.0|Mac-10.16",
+              "os": "Mac-11.0",
               "pool": "chromium.tests.mac-arm64"
             }
           ],
@@ -58845,7 +58845,7 @@
           "dimension_sets": [
             {
               "cpu": "arm64",
-              "os": "Mac-11.0|Mac-10.16",
+              "os": "Mac-11.0",
               "pool": "chromium.tests.mac-arm64"
             }
           ],
@@ -58871,7 +58871,7 @@
           "dimension_sets": [
             {
               "cpu": "arm64",
-              "os": "Mac-11.0|Mac-10.16",
+              "os": "Mac-11.0",
               "pool": "chromium.tests.mac-arm64"
             }
           ],
@@ -58900,7 +58900,7 @@
           "dimension_sets": [
             {
               "cpu": "arm64",
-              "os": "Mac-11.0|Mac-10.16",
+              "os": "Mac-11.0",
               "pool": "chromium.tests.mac-arm64"
             }
           ],
@@ -58924,7 +58924,7 @@
           "dimension_sets": [
             {
               "cpu": "arm64",
-              "os": "Mac-11.0|Mac-10.16",
+              "os": "Mac-11.0",
               "pool": "chromium.tests.mac-arm64"
             }
           ],
@@ -58944,7 +58944,7 @@
           "dimension_sets": [
             {
               "cpu": "arm64",
-              "os": "Mac-11.0|Mac-10.16",
+              "os": "Mac-11.0",
               "pool": "chromium.tests.mac-arm64"
             }
           ],
@@ -58969,7 +58969,7 @@
           "dimension_sets": [
             {
               "cpu": "arm64",
-              "os": "Mac-11.0|Mac-10.16",
+              "os": "Mac-11.0",
               "pool": "chromium.tests.mac-arm64"
             }
           ],
@@ -58993,7 +58993,7 @@
           "dimension_sets": [
             {
               "cpu": "arm64",
-              "os": "Mac-11.0|Mac-10.16",
+              "os": "Mac-11.0",
               "pool": "chromium.tests.mac-arm64"
             }
           ],
@@ -59016,7 +59016,7 @@
           "dimension_sets": [
             {
               "cpu": "arm64",
-              "os": "Mac-11.0|Mac-10.16",
+              "os": "Mac-11.0",
               "pool": "chromium.tests.mac-arm64"
             }
           ],
@@ -59040,7 +59040,7 @@
           "dimension_sets": [
             {
               "cpu": "arm64",
-              "os": "Mac-11.0|Mac-10.16",
+              "os": "Mac-11.0",
               "pool": "chromium.tests.mac-arm64"
             }
           ],
@@ -59063,7 +59063,7 @@
           "dimension_sets": [
             {
               "cpu": "arm64",
-              "os": "Mac-11.0|Mac-10.16",
+              "os": "Mac-11.0",
               "pool": "chromium.tests.mac-arm64"
             }
           ],
@@ -59083,7 +59083,7 @@
           "dimension_sets": [
             {
               "cpu": "arm64",
-              "os": "Mac-11.0|Mac-10.16",
+              "os": "Mac-11.0",
               "pool": "chromium.tests.mac-arm64"
             }
           ],
@@ -59106,7 +59106,7 @@
           "dimension_sets": [
             {
               "cpu": "arm64",
-              "os": "Mac-11.0|Mac-10.16",
+              "os": "Mac-11.0",
               "pool": "chromium.tests.mac-arm64"
             }
           ],
@@ -59129,7 +59129,7 @@
           "dimension_sets": [
             {
               "cpu": "arm64",
-              "os": "Mac-11.0|Mac-10.16",
+              "os": "Mac-11.0",
               "pool": "chromium.tests.mac-arm64"
             }
           ],
@@ -59152,7 +59152,7 @@
           "dimension_sets": [
             {
               "cpu": "arm64",
-              "os": "Mac-11.0|Mac-10.16",
+              "os": "Mac-11.0",
               "pool": "chromium.tests.mac-arm64"
             }
           ],
@@ -59179,7 +59179,7 @@
           "dimension_sets": [
             {
               "cpu": "arm64",
-              "os": "Mac-11.0|Mac-10.16",
+              "os": "Mac-11.0",
               "pool": "chromium.tests.mac-arm64"
             }
           ],
@@ -59208,7 +59208,7 @@
           "dimension_sets": [
             {
               "cpu": "arm64",
-              "os": "Mac-11.0|Mac-10.16",
+              "os": "Mac-11.0",
               "pool": "chromium.tests.mac-arm64"
             }
           ],
@@ -59235,7 +59235,7 @@
           "dimension_sets": [
             {
               "cpu": "arm64",
-              "os": "Mac-11.0|Mac-10.16",
+              "os": "Mac-11.0",
               "pool": "chromium.tests.mac-arm64"
             }
           ],
diff --git a/testing/buildbot/chromium.gpu.fyi.json b/testing/buildbot/chromium.gpu.fyi.json
index 2707bad..284726b 100644
--- a/testing/buildbot/chromium.gpu.fyi.json
+++ b/testing/buildbot/chromium.gpu.fyi.json
@@ -23499,7 +23499,7 @@
           "dimension_sets": [
             {
               "cpu": "arm64",
-              "os": "Mac-11.0|Mac-10.16",
+              "os": "Mac-11.0",
               "pool": "chromium.tests.mac-arm64"
             }
           ],
@@ -23524,7 +23524,7 @@
           "dimension_sets": [
             {
               "cpu": "arm64",
-              "os": "Mac-11.0|Mac-10.16",
+              "os": "Mac-11.0",
               "pool": "chromium.tests.mac-arm64"
             }
           ],
@@ -23552,7 +23552,7 @@
           "dimension_sets": [
             {
               "cpu": "arm64",
-              "os": "Mac-11.0|Mac-10.16",
+              "os": "Mac-11.0",
               "pool": "chromium.tests.mac-arm64"
             }
           ],
@@ -23578,7 +23578,7 @@
           "dimension_sets": [
             {
               "cpu": "arm64",
-              "os": "Mac-11.0|Mac-10.16",
+              "os": "Mac-11.0",
               "pool": "chromium.tests.mac-arm64"
             }
           ],
@@ -23603,7 +23603,7 @@
           "dimension_sets": [
             {
               "cpu": "arm64",
-              "os": "Mac-11.0|Mac-10.16",
+              "os": "Mac-11.0",
               "pool": "chromium.tests.mac-arm64"
             }
           ],
@@ -23626,7 +23626,7 @@
           "dimension_sets": [
             {
               "cpu": "arm64",
-              "os": "Mac-11.0|Mac-10.16",
+              "os": "Mac-11.0",
               "pool": "chromium.tests.mac-arm64"
             }
           ],
@@ -23649,7 +23649,7 @@
           "dimension_sets": [
             {
               "cpu": "arm64",
-              "os": "Mac-11.0|Mac-10.16",
+              "os": "Mac-11.0",
               "pool": "chromium.tests.mac-arm64"
             }
           ],
@@ -23669,7 +23669,7 @@
           "dimension_sets": [
             {
               "cpu": "arm64",
-              "os": "Mac-11.0|Mac-10.16",
+              "os": "Mac-11.0",
               "pool": "chromium.tests.mac-arm64"
             }
           ],
@@ -23693,7 +23693,7 @@
           "dimension_sets": [
             {
               "cpu": "arm64",
-              "os": "Mac-11.0|Mac-10.16",
+              "os": "Mac-11.0",
               "pool": "chromium.tests.mac-arm64"
             }
           ],
@@ -23713,7 +23713,7 @@
           "dimension_sets": [
             {
               "cpu": "arm64",
-              "os": "Mac-11.0|Mac-10.16",
+              "os": "Mac-11.0",
               "pool": "chromium.tests.mac-arm64"
             }
           ],
@@ -23749,7 +23749,7 @@
           "dimension_sets": [
             {
               "cpu": "arm64",
-              "os": "Mac-11.0|Mac-10.16",
+              "os": "Mac-11.0",
               "pool": "chromium.tests.mac-arm64"
             }
           ],
@@ -23783,7 +23783,7 @@
           "dimension_sets": [
             {
               "cpu": "arm64",
-              "os": "Mac-11.0|Mac-10.16",
+              "os": "Mac-11.0",
               "pool": "chromium.tests.mac-arm64"
             }
           ],
@@ -23817,7 +23817,7 @@
           "dimension_sets": [
             {
               "cpu": "arm64",
-              "os": "Mac-11.0|Mac-10.16",
+              "os": "Mac-11.0",
               "pool": "chromium.tests.mac-arm64"
             }
           ],
@@ -23851,7 +23851,7 @@
           "dimension_sets": [
             {
               "cpu": "arm64",
-              "os": "Mac-11.0|Mac-10.16",
+              "os": "Mac-11.0",
               "pool": "chromium.tests.mac-arm64"
             }
           ],
@@ -23885,7 +23885,7 @@
           "dimension_sets": [
             {
               "cpu": "arm64",
-              "os": "Mac-11.0|Mac-10.16",
+              "os": "Mac-11.0",
               "pool": "chromium.tests.mac-arm64"
             }
           ],
@@ -23923,7 +23923,7 @@
           "dimension_sets": [
             {
               "cpu": "arm64",
-              "os": "Mac-11.0|Mac-10.16",
+              "os": "Mac-11.0",
               "pool": "chromium.tests.mac-arm64"
             }
           ],
@@ -23966,7 +23966,7 @@
           "dimension_sets": [
             {
               "cpu": "arm64",
-              "os": "Mac-11.0|Mac-10.16",
+              "os": "Mac-11.0",
               "pool": "chromium.tests.mac-arm64"
             }
           ],
@@ -24009,7 +24009,7 @@
           "dimension_sets": [
             {
               "cpu": "arm64",
-              "os": "Mac-11.0|Mac-10.16",
+              "os": "Mac-11.0",
               "pool": "chromium.tests.mac-arm64"
             }
           ],
@@ -24052,7 +24052,7 @@
           "dimension_sets": [
             {
               "cpu": "arm64",
-              "os": "Mac-11.0|Mac-10.16",
+              "os": "Mac-11.0",
               "pool": "chromium.tests.mac-arm64"
             }
           ],
@@ -24095,7 +24095,7 @@
           "dimension_sets": [
             {
               "cpu": "arm64",
-              "os": "Mac-11.0|Mac-10.16",
+              "os": "Mac-11.0",
               "pool": "chromium.tests.mac-arm64"
             }
           ],
@@ -24121,7 +24121,7 @@
           "dimension_sets": [
             {
               "cpu": "arm64",
-              "os": "Mac-11.0|Mac-10.16",
+              "os": "Mac-11.0",
               "pool": "chromium.tests.mac-arm64"
             }
           ],
@@ -24155,7 +24155,7 @@
           "dimension_sets": [
             {
               "cpu": "arm64",
-              "os": "Mac-11.0|Mac-10.16",
+              "os": "Mac-11.0",
               "pool": "chromium.tests.mac-arm64"
             }
           ],
@@ -24190,7 +24190,7 @@
           "dimension_sets": [
             {
               "cpu": "arm64",
-              "os": "Mac-11.0|Mac-10.16",
+              "os": "Mac-11.0",
               "pool": "chromium.tests.mac-arm64"
             }
           ],
@@ -24224,7 +24224,7 @@
           "dimension_sets": [
             {
               "cpu": "arm64",
-              "os": "Mac-11.0|Mac-10.16",
+              "os": "Mac-11.0",
               "pool": "chromium.tests.mac-arm64"
             }
           ],
@@ -24260,7 +24260,7 @@
           "dimension_sets": [
             {
               "cpu": "arm64",
-              "os": "Mac-11.0|Mac-10.16",
+              "os": "Mac-11.0",
               "pool": "chromium.tests.mac-arm64"
             }
           ],
@@ -24297,7 +24297,7 @@
           "dimension_sets": [
             {
               "cpu": "arm64",
-              "os": "Mac-11.0|Mac-10.16",
+              "os": "Mac-11.0",
               "pool": "chromium.tests.mac-arm64"
             }
           ],
@@ -24333,7 +24333,7 @@
           "dimension_sets": [
             {
               "cpu": "arm64",
-              "os": "Mac-11.0|Mac-10.16",
+              "os": "Mac-11.0",
               "pool": "chromium.tests.mac-arm64"
             }
           ],
@@ -24369,7 +24369,7 @@
           "dimension_sets": [
             {
               "cpu": "arm64",
-              "os": "Mac-11.0|Mac-10.16",
+              "os": "Mac-11.0",
               "pool": "chromium.tests.mac-arm64"
             }
           ],
@@ -24405,7 +24405,7 @@
           "dimension_sets": [
             {
               "cpu": "arm64",
-              "os": "Mac-11.0|Mac-10.16",
+              "os": "Mac-11.0",
               "pool": "chromium.tests.mac-arm64"
             }
           ],
@@ -24440,7 +24440,7 @@
           "dimension_sets": [
             {
               "cpu": "arm64",
-              "os": "Mac-11.0|Mac-10.16",
+              "os": "Mac-11.0",
               "pool": "chromium.tests.mac-arm64"
             }
           ],
diff --git a/testing/buildbot/chromium.updater.json b/testing/buildbot/chromium.updater.json
index c3b94db..7c89535f 100644
--- a/testing/buildbot/chromium.updater.json
+++ b/testing/buildbot/chromium.updater.json
@@ -13,7 +13,7 @@
           "dimension_sets": [
             {
               "cpu": "arm64",
-              "os": "Mac-11.0|Mac-10.16",
+              "os": "Mac-11.0",
               "pool": "chromium.tests.mac-arm64"
             }
           ],
@@ -36,7 +36,7 @@
           "dimension_sets": [
             {
               "cpu": "arm64",
-              "os": "Mac-11.0|Mac-10.16",
+              "os": "Mac-11.0",
               "pool": "chromium.tests.mac-arm64"
             }
           ],
diff --git a/testing/buildbot/mixins.pyl b/testing/buildbot/mixins.pyl
index 63599b1..157b0430 100644
--- a/testing/buildbot/mixins.pyl
+++ b/testing/buildbot/mixins.pyl
@@ -551,7 +551,7 @@
     'swarming': {
       'dimensions': {
         'cpu': 'arm64',
-        'os': 'Mac-11.0|Mac-10.16',
+        'os': 'Mac-11.0',
         'pool': 'chromium.tests.mac-arm64',
       },
     },
diff --git a/testing/buildbot/waterfalls.pyl b/testing/buildbot/waterfalls.pyl
index edfb0b2e..8c7d8f9 100644
--- a/testing/buildbot/waterfalls.pyl
+++ b/testing/buildbot/waterfalls.pyl
@@ -1612,7 +1612,7 @@
           '--test-launcher-print-test-stdio=always',
         ],
         'additional_compile_targets': [
-          'all',
+          'chromium_builder_asan',
         ],
       },
       # Used on an internal builder.
diff --git a/testing/variations/fieldtrial_testing_config.json b/testing/variations/fieldtrial_testing_config.json
index 5f903d19..632f065 100644
--- a/testing/variations/fieldtrial_testing_config.json
+++ b/testing/variations/fieldtrial_testing_config.json
@@ -2035,6 +2035,21 @@
             ]
         }
     ],
+    "CriticalPersistedTabData": [
+        {
+            "platforms": [
+                "android"
+            ],
+            "experiments": [
+                {
+                    "name": "Enabled",
+                    "enable_features": [
+                        "CriticalPersistedTabData"
+                    ]
+                }
+            ]
+        }
+    ],
     "CrosSchedulerCore": [
         {
             "platforms": [
@@ -2304,6 +2319,25 @@
             ]
         }
     ],
+    "DesktopNtpShoppingTasksModule": [
+        {
+            "platforms": [
+                "chromeos",
+                "linux",
+                "mac",
+                "windows"
+            ],
+            "experiments": [
+                {
+                    "name": "Enabled",
+                    "enable_features": [
+                        "NtpModules",
+                        "NtpShoppingTasksModule"
+                    ]
+                }
+            ]
+        }
+    ],
     "DesktopTabGroupsCollapse": [
         {
             "platforms": [
@@ -4828,6 +4862,7 @@
                 {
                     "name": "AndroidExperiments",
                     "params": {
+                        "OmniboxLocalZeroSuggestAgeThreshold": "7",
                         "OmniboxMaxURLMatches": "7",
                         "OmniboxMaxZeroSuggestMatches": "15",
                         "UIMaxAutocompleteMatches": "8",
@@ -4836,6 +4871,8 @@
                     "enable_features": [
                         "OmniboxAdaptiveSuggestionsCount",
                         "OmniboxCompactSuggestions",
+                        "OmniboxLocalZeroSuggestAgeThreshold",
+                        "OmniboxLocalZeroSuggestFrecencyRanking",
                         "OmniboxMaxURLMatches",
                         "OmniboxMaxZeroSuggestMatches",
                         "OmniboxOnFocusSuggestionsContextualWebOnContent",
diff --git a/third_party/Python-Markdown/DIR_METADATA b/third_party/Python-Markdown/DIR_METADATA
new file mode 100644
index 0000000..983ea01
--- /dev/null
+++ b/third_party/Python-Markdown/DIR_METADATA
@@ -0,0 +1,3 @@
+monorail {
+  component: "Tools"
+}
diff --git a/third_party/Python-Markdown/OWNERS b/third_party/Python-Markdown/OWNERS
index f2a0f9e1..b4bc1e9 100644
--- a/third_party/Python-Markdown/OWNERS
+++ b/third_party/Python-Markdown/OWNERS
@@ -1,3 +1,2 @@
 dpranke@google.com
 nodir@chromium.org
-# COMPONENT: Tools
diff --git a/third_party/SPIRV-Tools/DIR_METADATA b/third_party/SPIRV-Tools/DIR_METADATA
new file mode 100644
index 0000000..376e229
--- /dev/null
+++ b/third_party/SPIRV-Tools/DIR_METADATA
@@ -0,0 +1,5 @@
+monorail {
+  component: "Internals>GPU>Internals"
+}
+
+team_email: "graphics-dev@chromium.org"
diff --git a/third_party/SPIRV-Tools/OWNERS b/third_party/SPIRV-Tools/OWNERS
index b17408a..caff5903 100644
--- a/third_party/SPIRV-Tools/OWNERS
+++ b/third_party/SPIRV-Tools/OWNERS
@@ -1,5 +1,2 @@
 vmiura@chromium.org
 dsinclair@chromium.org
-
-# COMPONENT: Internals>GPU>Internals
-# TEAM: graphics-dev@chromium.org
diff --git a/third_party/abseil-cpp/DIR_METADATA b/third_party/abseil-cpp/DIR_METADATA
new file mode 100644
index 0000000..2aaf8e2eed
--- /dev/null
+++ b/third_party/abseil-cpp/DIR_METADATA
@@ -0,0 +1,3 @@
+monorail {
+  component: "Internals>Core"
+}
diff --git a/third_party/abseil-cpp/OWNERS b/third_party/abseil-cpp/OWNERS
index af171cf..cc551a2 100644
--- a/third_party/abseil-cpp/OWNERS
+++ b/third_party/abseil-cpp/OWNERS
@@ -1,5 +1,3 @@
 danilchap@chromium.org
 kwiberg@chromium.org
 mbonadei@chromium.org
-
-# COMPONENT: Internals>Core
diff --git a/third_party/adobe/DIR_METADATA b/third_party/adobe/DIR_METADATA
new file mode 100644
index 0000000..b8105b6e
--- /dev/null
+++ b/third_party/adobe/DIR_METADATA
@@ -0,0 +1,3 @@
+monorail {
+  component: "Internals>Plugins>Flash"
+}
diff --git a/third_party/adobe/OWNERS b/third_party/adobe/OWNERS
index 345c012..a6dff391 100644
--- a/third_party/adobe/OWNERS
+++ b/third_party/adobe/OWNERS
@@ -2,5 +2,3 @@
 jschuh@chromium.org
 raymes@chromium.org
 viettrungluu@chromium.org
-
-# COMPONENT: Internals>Plugins>Flash
diff --git a/third_party/afl/DIR_METADATA b/third_party/afl/DIR_METADATA
new file mode 100644
index 0000000..b8bad67
--- /dev/null
+++ b/third_party/afl/DIR_METADATA
@@ -0,0 +1,5 @@
+monorail {
+  component: "Tools>Stability>AFL"
+}
+
+team_email: "chrome-security-bugs--@chromium.org"
diff --git a/third_party/afl/OWNERS b/third_party/afl/OWNERS
index 971934d8..c1cc0d6 100644
--- a/third_party/afl/OWNERS
+++ b/third_party/afl/OWNERS
@@ -2,5 +2,3 @@
 kcc@chromium.org
 metzman@chromium.org
 ochang@chromium.org
-# COMPONENT: Tools>Stability>AFL
-# TEAM: chrome-security-bugs--@chromium.org
diff --git a/third_party/apple_apsl/DIR_METADATA b/third_party/apple_apsl/DIR_METADATA
new file mode 100644
index 0000000..14b5edb
--- /dev/null
+++ b/third_party/apple_apsl/DIR_METADATA
@@ -0,0 +1,3 @@
+monorail {
+  component: "Internals"
+}
diff --git a/third_party/apple_apsl/OWNERS b/third_party/apple_apsl/OWNERS
index 36283b36..f7103d3 100644
--- a/third_party/apple_apsl/OWNERS
+++ b/third_party/apple_apsl/OWNERS
@@ -1,3 +1,2 @@
 avi@chromium.org
 mark@chromium.org
-# COMPONENT: Internals
diff --git a/third_party/arcore-android-sdk-client/DIR_METADATA b/third_party/arcore-android-sdk-client/DIR_METADATA
new file mode 100644
index 0000000..49755f18
--- /dev/null
+++ b/third_party/arcore-android-sdk-client/DIR_METADATA
@@ -0,0 +1,7 @@
+monorail {
+  component: "Internals>XR>AR"
+}
+
+team_email: "xr-dev@chromium.org"
+
+os: ANDROID
diff --git a/third_party/arcore-android-sdk-client/OWNERS b/third_party/arcore-android-sdk-client/OWNERS
index 8500ad5b..8f984dc5 100644
--- a/third_party/arcore-android-sdk-client/OWNERS
+++ b/third_party/arcore-android-sdk-client/OWNERS
@@ -1,6 +1,2 @@
 bialpio@chromium.org
 klausw@chromium.org
-
-# TEAM: xr-dev@chromium.org
-# COMPONENT: Internals>XR>AR
-# OS: Android
diff --git a/third_party/ashmem/DIR_METADATA b/third_party/ashmem/DIR_METADATA
new file mode 100644
index 0000000..2aaf8e2eed
--- /dev/null
+++ b/third_party/ashmem/DIR_METADATA
@@ -0,0 +1,3 @@
+monorail {
+  component: "Internals>Core"
+}
diff --git a/third_party/ashmem/OWNERS b/third_party/ashmem/OWNERS
index 8f4e066..938d2b5 100644
--- a/third_party/ashmem/OWNERS
+++ b/third_party/ashmem/OWNERS
@@ -1,3 +1 @@
 digit@chromium.org
-
-# COMPONENT: Internals>Core
diff --git a/third_party/axe-core/DIR_METADATA b/third_party/axe-core/DIR_METADATA
new file mode 100644
index 0000000..64ab044
--- /dev/null
+++ b/third_party/axe-core/DIR_METADATA
@@ -0,0 +1,3 @@
+monorail {
+  component: "UI>Accessibility"
+}
diff --git a/third_party/axe-core/OWNERS b/third_party/axe-core/OWNERS
index bffe9f14..1877266f 100644
--- a/third_party/axe-core/OWNERS
+++ b/third_party/axe-core/OWNERS
@@ -1,3 +1,2 @@
 aboxhall@chromium.org
 hcarmona@chromium.org
-# COMPONENT: UI>Accessibility
diff --git a/third_party/bazel/DIR_METADATA b/third_party/bazel/DIR_METADATA
new file mode 100644
index 0000000..c914ddc4
--- /dev/null
+++ b/third_party/bazel/DIR_METADATA
@@ -0,0 +1,5 @@
+monorail {
+  component: "Build"
+}
+
+team_email: "build@chromium.org"
diff --git a/third_party/bazel/OWNERS b/third_party/bazel/OWNERS
index ae34f3a7..a0e0826 100644
--- a/third_party/bazel/OWNERS
+++ b/third_party/bazel/OWNERS
@@ -1,5 +1,2 @@
 agrieve@chromium.org
 wnwen@chromium.org
-
-# TEAM: build@chromium.org
-# COMPONENT: Build
diff --git a/third_party/blanketjs/DIR_METADATA b/third_party/blanketjs/DIR_METADATA
new file mode 100644
index 0000000..25ed5eec
--- /dev/null
+++ b/third_party/blanketjs/DIR_METADATA
@@ -0,0 +1,5 @@
+monorail {
+  component: "Internals"
+}
+
+team_email: "chromium-dev@chromium.org"
diff --git a/third_party/blanketjs/OWNERS b/third_party/blanketjs/OWNERS
index 8aff104..1eac0a3 100644
--- a/third_party/blanketjs/OWNERS
+++ b/third_party/blanketjs/OWNERS
@@ -1,3 +1 @@
 jamiewalch@chromium.org
-# COMPONENT: Internals
-# TEAM: chromium-dev@chromium.org
diff --git a/third_party/blink/manual_tests/forms/eye-dropper.html b/third_party/blink/manual_tests/forms/eye-dropper.html
new file mode 100644
index 0000000..ba2b236
--- /dev/null
+++ b/third_party/blink/manual_tests/forms/eye-dropper.html
@@ -0,0 +1,93 @@
+<!DOCTYPE html>
+<html>
+<head>
+<title>EyeDropper test</title>
+<style>
+#canvas {
+  background-color: #ff0000;
+  position: absolute;
+  left: 250px;
+  height: 300px;
+  width: 300px;
+}
+#action {
+  font-weight: bold;
+}
+#action.hidden {
+  visibility: hidden;
+}
+#logger {
+  position: absolute;
+  top: 400px;
+}
+#reset {
+  position: absolute;
+  top: 40px;
+  visibility: hidden;
+}
+#reset.visible {
+  visibility: visible;
+}
+.passed {
+  color: green;
+  font-size: x-large;
+}
+.failed {
+  color: red;
+  font-size: x-large;
+}
+</style>
+</head>
+<body>
+  This tests the eye dropper in the color picker feature.<br><br><br>
+  <div id="action">TODO: Open the color picker.</div>
+  <div id="canvas"></div>
+  <input type="color" id="color">
+  <ol id="logger"></ol>
+  <button id="reset">Reset test!</button>
+
+  <script>
+    function log(str) {
+      let entry = document.createElement("li");
+      entry.innerText = str;
+      logger.appendChild(entry);
+      return entry;
+    }
+
+    document.getElementById("color").addEventListener("click", function() {
+      action.innerHTML = "TODO: Open the eye dropper and click on the red canvas";
+      log("color picker opened");
+    })
+
+    document.getElementById("color").addEventListener("input", function(e) {
+      let entry = log("color updated to " + e.target.value + " expected: #ff0000");
+      let span = document.createElement("span");
+      if (e.target.value == "#ff0000") {
+        span.innerText = "PASS ";
+        span.classList.add("passed");
+      } else {
+        span.innerText = "FAIL ";
+        span.classList.add("failed");
+      }
+      entry.prepend(span);
+      e.target.disabled = true;
+      setTimeout(function() {
+        // hack to close the color picker without user action.
+        e.target.type="text";
+        e.target.type="color";
+      }, 500);
+      reset.classList.add("visible");
+      action.classList.add("hidden");
+    })
+
+    document.getElementById("reset").addEventListener("click", function() {
+      action.innerHTML = "TODO: Open the color picker.";
+      action.classList.remove("hidden");
+      reset.classList.remove("visible");
+      color.value = "#000000";
+      color.disabled = false;
+      logger.innerHTML = "";
+    })
+  </script>
+</body>
+</html>
\ No newline at end of file
diff --git a/third_party/blink/public/mojom/BUILD.gn b/third_party/blink/public/mojom/BUILD.gn
index 5422f60d..4e5cda1 100644
--- a/third_party/blink/public/mojom/BUILD.gn
+++ b/third_party/blink/public/mojom/BUILD.gn
@@ -109,6 +109,7 @@
     "manifest/manifest.mojom",
     "manifest/manifest_manager.mojom",
     "manifest/manifest_observer.mojom",
+    "media/fullscreen_video_element.mojom",
     "media/renderer_audio_input_stream_factory.mojom",
     "media/renderer_audio_output_stream_factory.mojom",
     "mediastream/aec_dump.mojom",
diff --git a/content/public/common/fullscreen_video_element.mojom b/third_party/blink/public/mojom/media/fullscreen_video_element.mojom
similarity index 93%
rename from content/public/common/fullscreen_video_element.mojom
rename to third_party/blink/public/mojom/media/fullscreen_video_element.mojom
index 98c1b15..2ab5cef 100644
--- a/content/public/common/fullscreen_video_element.mojom
+++ b/third_party/blink/public/mojom/media/fullscreen_video_element.mojom
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-module content.mojom;
+module blink.mojom;
 
 interface FullscreenVideoElementHandler {
   // The browser requests the renderer to fullscreen the first video element.
diff --git a/third_party/blink/public/web/web_element.h b/third_party/blink/public/web/web_element.h
index 3bb4701..df5b979 100644
--- a/third_party/blink/public/web/web_element.h
+++ b/third_party/blink/public/web/web_element.h
@@ -111,8 +111,6 @@
   // Returns the original image size.
   gfx::Size GetImageSize();
 
-  void RequestFullscreen();
-
   // ComputedStyle property values. The following exposure is of CSS property
   // values are part of the ComputedStyle set which is usually exposed through
   // the Window object in WebIDL as window.getComputedStyle(element). Exposing
diff --git a/third_party/blink/renderer/core/DIR_METADATA b/third_party/blink/renderer/core/DIR_METADATA
new file mode 100644
index 0000000..fca4a1f
--- /dev/null
+++ b/third_party/blink/renderer/core/DIR_METADATA
@@ -0,0 +1,5 @@
+monorail {
+  component: "Blink"
+}
+
+team_email: "blink-dev@chromium.org"
diff --git a/third_party/blink/renderer/core/OWNERS b/third_party/blink/renderer/core/OWNERS
index ef6c5dd..9bbfaff8 100644
--- a/third_party/blink/renderer/core/OWNERS
+++ b/third_party/blink/renderer/core/OWNERS
@@ -73,6 +73,3 @@
 yhirano@chromium.org
 yoavweiss@chromium.org
 yutak@chromium.org
-
-# TEAM: blink-dev@chromium.org
-# COMPONENT: Blink
diff --git a/third_party/blink/renderer/core/accessibility/DIR_METADATA b/third_party/blink/renderer/core/accessibility/DIR_METADATA
new file mode 100644
index 0000000..7a89266
--- /dev/null
+++ b/third_party/blink/renderer/core/accessibility/DIR_METADATA
@@ -0,0 +1,5 @@
+monorail {
+  component: "Blink>Accessibility"
+}
+
+team_email: "chromium-accessibility@chromium.org"
diff --git a/third_party/blink/renderer/core/accessibility/OWNERS b/third_party/blink/renderer/core/accessibility/OWNERS
index 5eed66eb..4e6cc130 100644
--- a/third_party/blink/renderer/core/accessibility/OWNERS
+++ b/third_party/blink/renderer/core/accessibility/OWNERS
@@ -1,4 +1 @@
 file://third_party/blink/renderer/modules/accessibility/OWNERS
-
-# TEAM: chromium-accessibility@chromium.org
-# COMPONENT: Blink>Accessibility
diff --git a/third_party/blink/renderer/core/animation/DIR_METADATA b/third_party/blink/renderer/core/animation/DIR_METADATA
new file mode 100644
index 0000000..072e8c9
--- /dev/null
+++ b/third_party/blink/renderer/core/animation/DIR_METADATA
@@ -0,0 +1,5 @@
+monorail {
+  component: "Blink>Animation"
+}
+
+team_email: "animations-dev@chromium.org"
diff --git a/third_party/blink/renderer/core/animation/OWNERS b/third_party/blink/renderer/core/animation/OWNERS
index ef35931..e757120 100644
--- a/third_party/blink/renderer/core/animation/OWNERS
+++ b/third_party/blink/renderer/core/animation/OWNERS
@@ -8,6 +8,3 @@
 ericwilligers@chromium.org
 
 per-file compositor_*=loyso@chromium.org
-
-# TEAM: animations-dev@chromium.org
-# COMPONENT: Blink>Animation
diff --git a/third_party/blink/renderer/core/animation_frame/DIR_METADATA b/third_party/blink/renderer/core/animation_frame/DIR_METADATA
new file mode 100644
index 0000000..4ae95d48
--- /dev/null
+++ b/third_party/blink/renderer/core/animation_frame/DIR_METADATA
@@ -0,0 +1,5 @@
+monorail {
+  component: "Blink>Canvas"
+}
+
+team_email: "paint-dev@chromium.org"
diff --git a/third_party/blink/renderer/core/animation_frame/OWNERS b/third_party/blink/renderer/core/animation_frame/OWNERS
index 5ef87b1aa..1e56363 100644
--- a/third_party/blink/renderer/core/animation_frame/OWNERS
+++ b/third_party/blink/renderer/core/animation_frame/OWNERS
@@ -1,4 +1 @@
 fserb@chromium.org
-
-# TEAM: paint-dev@chromium.org
-# COMPONENT: Blink>Canvas
diff --git a/third_party/blink/renderer/core/aom/DIR_METADATA b/third_party/blink/renderer/core/aom/DIR_METADATA
new file mode 100644
index 0000000..7a89266
--- /dev/null
+++ b/third_party/blink/renderer/core/aom/DIR_METADATA
@@ -0,0 +1,5 @@
+monorail {
+  component: "Blink>Accessibility"
+}
+
+team_email: "chromium-accessibility@chromium.org"
diff --git a/third_party/blink/renderer/core/aom/OWNERS b/third_party/blink/renderer/core/aom/OWNERS
index 5eed66eb..4e6cc130 100644
--- a/third_party/blink/renderer/core/aom/OWNERS
+++ b/third_party/blink/renderer/core/aom/OWNERS
@@ -1,4 +1 @@
 file://third_party/blink/renderer/modules/accessibility/OWNERS
-
-# TEAM: chromium-accessibility@chromium.org
-# COMPONENT: Blink>Accessibility
diff --git a/third_party/blink/renderer/core/clipboard/DIR_METADATA b/third_party/blink/renderer/core/clipboard/DIR_METADATA
new file mode 100644
index 0000000..ae781d0
--- /dev/null
+++ b/third_party/blink/renderer/core/clipboard/DIR_METADATA
@@ -0,0 +1,5 @@
+monorail {
+  component: "Blink>DataTransfer"
+}
+
+team_email: "storage-dev@chromium.org"
diff --git a/third_party/blink/renderer/core/clipboard/OWNERS b/third_party/blink/renderer/core/clipboard/OWNERS
index ddb3f8e..9d11d8b 100644
--- a/third_party/blink/renderer/core/clipboard/OWNERS
+++ b/third_party/blink/renderer/core/clipboard/OWNERS
@@ -4,6 +4,3 @@
 # Secondary:
 dcheng@chromium.org
 pwnall@chromium.org
-
-# TEAM: storage-dev@chromium.org
-# COMPONENT: Blink>DataTransfer
diff --git a/third_party/blink/renderer/core/css/DIR_METADATA b/third_party/blink/renderer/core/css/DIR_METADATA
new file mode 100644
index 0000000..1876fb3
--- /dev/null
+++ b/third_party/blink/renderer/core/css/DIR_METADATA
@@ -0,0 +1,5 @@
+monorail {
+  component: "Blink>CSS"
+}
+
+team_email: "layout-dev@chromium.org"
diff --git a/third_party/blink/renderer/core/css/OWNERS b/third_party/blink/renderer/core/css/OWNERS
index a007a39..7c1cab45 100644
--- a/third_party/blink/renderer/core/css/OWNERS
+++ b/third_party/blink/renderer/core/css/OWNERS
@@ -3,6 +3,3 @@
 ericwilligers@chromium.org
 futhark@chromium.org
 xiaochengh@chromium.org
-
-# TEAM: layout-dev@chromium.org
-# COMPONENT: Blink>CSS
diff --git a/third_party/blink/renderer/core/dom/DIR_METADATA b/third_party/blink/renderer/core/dom/DIR_METADATA
new file mode 100644
index 0000000..347a1b0
--- /dev/null
+++ b/third_party/blink/renderer/core/dom/DIR_METADATA
@@ -0,0 +1,5 @@
+monorail {
+  component: "Blink>DOM"
+}
+
+team_email: "dom-dev@chromium.org"
diff --git a/third_party/blink/renderer/core/dom/OWNERS b/third_party/blink/renderer/core/dom/OWNERS
index 5f9506d..9f2610d 100644
--- a/third_party/blink/renderer/core/dom/OWNERS
+++ b/third_party/blink/renderer/core/dom/OWNERS
@@ -4,6 +4,3 @@
 per-file *_mojom_traits*.*=file://ipc/SECURITY_OWNERS
 per-file *.typemap=set noparent
 per-file *.typemap=file://ipc/SECURITY_OWNERS
-
-# TEAM: dom-dev@chromium.org
-# COMPONENT: Blink>DOM
diff --git a/third_party/blink/renderer/core/editing/DIR_METADATA b/third_party/blink/renderer/core/editing/DIR_METADATA
new file mode 100644
index 0000000..eba1b42
--- /dev/null
+++ b/third_party/blink/renderer/core/editing/DIR_METADATA
@@ -0,0 +1,5 @@
+monorail {
+  component: "Blink>Editing"
+}
+
+team_email: "layout-dev@chromium.org"
diff --git a/third_party/blink/renderer/core/editing/OWNERS b/third_party/blink/renderer/core/editing/OWNERS
index 0cf35cfbc..72b76e7 100644
--- a/third_party/blink/renderer/core/editing/OWNERS
+++ b/third_party/blink/renderer/core/editing/OWNERS
@@ -1,5 +1,2 @@
 yosin@chromium.org
 xiaochengh@chromium.org
-
-# TEAM: layout-dev@chromium.org
-# COMPONENT: Blink>Editing
diff --git a/third_party/blink/renderer/core/execution_context/DIR_METADATA b/third_party/blink/renderer/core/execution_context/DIR_METADATA
new file mode 100644
index 0000000..622ef56
--- /dev/null
+++ b/third_party/blink/renderer/core/execution_context/DIR_METADATA
@@ -0,0 +1,5 @@
+monorail {
+  component: "Blink>Internals>Frames"
+}
+
+team_email: "platform-architecture-dev@chromium.org"
diff --git a/third_party/blink/renderer/core/execution_context/OWNERS b/third_party/blink/renderer/core/execution_context/OWNERS
index 1c88759..40edfd4c 100644
--- a/third_party/blink/renderer/core/execution_context/OWNERS
+++ b/third_party/blink/renderer/core/execution_context/OWNERS
@@ -2,6 +2,3 @@
 #
 # The owner list is made intentionally empty.
 # Ask core/OWNERS for code reviews.
-
-# TEAM: platform-architecture-dev@chromium.org
-# COMPONENT: Blink>Internals>Frames
diff --git a/third_party/blink/renderer/core/exported/web_element.cc b/third_party/blink/renderer/core/exported/web_element.cc
index 9eba634..fe1b0393 100644
--- a/third_party/blink/renderer/core/exported/web_element.cc
+++ b/third_party/blink/renderer/core/exported/web_element.cc
@@ -36,7 +36,6 @@
 #include "third_party/blink/renderer/core/css/css_property_names.h"
 #include "third_party/blink/renderer/core/dom/element.h"
 #include "third_party/blink/renderer/core/editing/editing_utilities.h"
-#include "third_party/blink/renderer/core/fullscreen/fullscreen.h"
 #include "third_party/blink/renderer/core/html/custom/custom_element.h"
 #include "third_party/blink/renderer/core/html/custom/v0_custom_element.h"
 #include "third_party/blink/renderer/core/html/custom/v0_custom_element_processing_stack.h"
@@ -194,11 +193,6 @@
   return gfx::Size(image->width(), image->height());
 }
 
-void WebElement::RequestFullscreen() {
-  Element* element = Unwrap<Element>();
-  Fullscreen::RequestFullscreen(*element);
-}
-
 WebString WebElement::GetComputedValue(const WebString& property_name) {
   if (IsNull())
     return WebString();
diff --git a/third_party/blink/renderer/core/fetch/DIR_METADATA b/third_party/blink/renderer/core/fetch/DIR_METADATA
new file mode 100644
index 0000000..dbf3715
--- /dev/null
+++ b/third_party/blink/renderer/core/fetch/DIR_METADATA
@@ -0,0 +1,5 @@
+monorail {
+  component: "Blink>Network>FetchAPI"
+}
+
+team_email: "blink-network-dev@chromium.org"
diff --git a/third_party/blink/renderer/core/fetch/OWNERS b/third_party/blink/renderer/core/fetch/OWNERS
index 160a1ff..0f06132 100644
--- a/third_party/blink/renderer/core/fetch/OWNERS
+++ b/third_party/blink/renderer/core/fetch/OWNERS
@@ -1,6 +1,3 @@
 hiroshige@chromium.org
 horo@chromium.org
 yhirano@chromium.org
-
-# TEAM: blink-network-dev@chromium.org
-# COMPONENT: Blink>Network>FetchAPI
diff --git a/third_party/blink/renderer/core/fileapi/DIR_METADATA b/third_party/blink/renderer/core/fileapi/DIR_METADATA
new file mode 100644
index 0000000..955fe831
--- /dev/null
+++ b/third_party/blink/renderer/core/fileapi/DIR_METADATA
@@ -0,0 +1,5 @@
+monorail {
+  component: "Blink>Storage>FileAPI"
+}
+
+team_email: "storage-dev@chromium.org"
diff --git a/third_party/blink/renderer/core/fileapi/OWNERS b/third_party/blink/renderer/core/fileapi/OWNERS
index 792720c..fa93d10 100644
--- a/third_party/blink/renderer/core/fileapi/OWNERS
+++ b/third_party/blink/renderer/core/fileapi/OWNERS
@@ -1,6 +1,3 @@
 jsbell@chromium.org
 mek@chromium.org
 pwnall@chromium.org
-
-# TEAM: storage-dev@chromium.org
-# COMPONENT: Blink>Storage>FileAPI
diff --git a/third_party/blink/renderer/core/frame/DIR_METADATA b/third_party/blink/renderer/core/frame/DIR_METADATA
new file mode 100644
index 0000000..622ef56
--- /dev/null
+++ b/third_party/blink/renderer/core/frame/DIR_METADATA
@@ -0,0 +1,5 @@
+monorail {
+  component: "Blink>Internals>Frames"
+}
+
+team_email: "platform-architecture-dev@chromium.org"
diff --git a/third_party/blink/renderer/core/frame/OWNERS b/third_party/blink/renderer/core/frame/OWNERS
index c91bc1e..1661967 100644
--- a/third_party/blink/renderer/core/frame/OWNERS
+++ b/third_party/blink/renderer/core/frame/OWNERS
@@ -4,6 +4,3 @@
 
 per-file *_type_converter*.*=set noparent
 per-file *_type_converter*.*=file://ipc/SECURITY_OWNERS
-
-# TEAM: platform-architecture-dev@chromium.org
-# COMPONENT: Blink>Internals>Frames
diff --git a/third_party/blink/renderer/core/frame/local_frame.cc b/third_party/blink/renderer/core/frame/local_frame.cc
index 7494f3e..cfb4362 100644
--- a/third_party/blink/renderer/core/frame/local_frame.cc
+++ b/third_party/blink/renderer/core/frame/local_frame.cc
@@ -122,6 +122,7 @@
 #include "third_party/blink/renderer/core/frame/visual_viewport.h"
 #include "third_party/blink/renderer/core/frame/web_frame_widget_impl.h"
 #include "third_party/blink/renderer/core/frame/web_local_frame_impl.h"
+#include "third_party/blink/renderer/core/fullscreen/fullscreen.h"
 #include "third_party/blink/renderer/core/fullscreen/scoped_allow_fullscreen.h"
 #include "third_party/blink/renderer/core/html/html_frame_element_base.h"
 #include "third_party/blink/renderer/core/html/html_plugin_element.h"
@@ -401,6 +402,9 @@
       WTF::BindRepeating(&LocalFrame::BindToHighPriorityReceiver,
                          WrapWeakPersistent(this)),
       GetTaskRunner(blink::TaskType::kInternalHighPriorityLocalFrame));
+  GetInterfaceRegistry()->AddAssociatedInterface(
+      WTF::BindRepeating(&LocalFrame::BindFullscreenVideoElementReceiver,
+                         WrapWeakPersistent(this)));
 
   if (IsMainFrame()) {
     GetInterfaceRegistry()->AddInterface(
@@ -505,6 +509,7 @@
   visitor->Trace(receiver_);
   visitor->Trace(main_frame_receiver_);
   visitor->Trace(high_priority_frame_receiver_);
+  visitor->Trace(fullscreen_video_receiver_);
   visitor->Trace(text_fragment_selector_generator_);
   visitor->Trace(saved_scroll_offsets_);
   visitor->Trace(background_color_paint_image_generator_);
@@ -2750,6 +2755,23 @@
                                                       animate);
 }
 
+void LocalFrame::RequestFullscreenVideoElement() {
+  // Find the first video element of the frame.
+  for (auto* child = GetDocument()->documentElement(); child;
+       child = Traversal<HTMLElement>::Next(*child)) {
+    if (IsA<HTMLVideoElement>(child)) {
+      // This is always initiated from browser side (which should require the
+      // user interacting with ui) which suffices for a user gesture even though
+      // there will have been no input to the frame at this point.
+      NotifyUserActivation(
+          mojom::blink::UserActivationNotificationType::kInteraction);
+
+      Fullscreen::RequestFullscreen(*child);
+      return;
+    }
+  }
+}
+
 HitTestResult LocalFrame::HitTestResultForVisualViewportPos(
     const IntPoint& pos_in_viewport) {
   IntPoint root_frame_point(
@@ -3381,6 +3403,18 @@
       std::make_unique<ActiveURLMessageFilter>(this));
 }
 
+void LocalFrame::BindFullscreenVideoElementReceiver(
+    mojo::PendingAssociatedReceiver<mojom::blink::FullscreenVideoElementHandler>
+        receiver) {
+  if (IsDetached())
+    return;
+
+  fullscreen_video_receiver_.Bind(
+      std::move(receiver), GetTaskRunner(blink::TaskType::kInternalDefault));
+  fullscreen_video_receiver_.SetFilter(
+      std::make_unique<ActiveURLMessageFilter>(this));
+}
+
 void LocalFrame::BindTextFragmentSelectorProducer(
     mojo::PendingReceiver<mojom::blink::TextFragmentSelectorProducer>
         receiver) {
diff --git a/third_party/blink/renderer/core/frame/local_frame.h b/third_party/blink/renderer/core/frame/local_frame.h
index 53d017c..f9a09fe5 100644
--- a/third_party/blink/renderer/core/frame/local_frame.h
+++ b/third_party/blink/renderer/core/frame/local_frame.h
@@ -49,6 +49,7 @@
 #include "third_party/blink/public/mojom/input/focus_type.mojom-blink-forward.h"
 #include "third_party/blink/public/mojom/link_to_text/link_to_text.mojom-blink.h"
 #include "third_party/blink/public/mojom/loader/pause_subresource_loading_handle.mojom-blink-forward.h"
+#include "third_party/blink/public/mojom/media/fullscreen_video_element.mojom-blink.h"
 #include "third_party/blink/public/mojom/optimization_guide/optimization_guide.mojom-blink.h"
 #include "third_party/blink/public/mojom/reporting/reporting.mojom-blink.h"
 #include "third_party/blink/public/mojom/web_feature/web_feature.mojom-blink-forward.h"
@@ -153,6 +154,7 @@
       public Supplementable<LocalFrame>,
       public mojom::blink::LocalFrame,
       public mojom::blink::LocalMainFrame,
+      public mojom::blink::FullscreenVideoElementHandler,
       public mojom::blink::HighPriorityLocalFrame {
  public:
   // Returns the LocalFrame instance for the given |frame_token|.
@@ -695,6 +697,9 @@
                                   cc::BrowserControlsState current,
                                   bool animate) override;
 
+  // mojom::FullscreenVideoElementHandler implementation:
+  void RequestFullscreenVideoElement() final;
+
   SystemClipboard* GetSystemClipboard();
   RawSystemClipboard* GetRawSystemClipboard();
 
@@ -798,7 +803,9 @@
       mojo::PendingAssociatedReceiver<mojom::blink::LocalMainFrame> receiver);
   void BindToHighPriorityReceiver(
       mojo::PendingReceiver<mojom::blink::HighPriorityLocalFrame> receiver);
-
+  void BindFullscreenVideoElementReceiver(
+      mojo::PendingAssociatedReceiver<
+          mojom::blink::FullscreenVideoElementHandler> receiver);
   void BindTextFragmentSelectorProducer(
       mojo::PendingReceiver<mojom::blink::TextFragmentSelectorProducer>
           receiver);
@@ -932,6 +939,11 @@
                    LocalFrame,
                    HeapMojoWrapperMode::kWithoutContextObserver>
       high_priority_frame_receiver_{this, nullptr};
+  // LocalFrame can be reused by multiple ExecutionContext.
+  HeapMojoAssociatedReceiver<mojom::blink::FullscreenVideoElementHandler,
+                             LocalFrame,
+                             HeapMojoWrapperMode::kWithoutContextObserver>
+      fullscreen_video_receiver_{this, nullptr};
 
   // Variable to control burst of download requests.
   int num_burst_download_requests_ = 0;
diff --git a/third_party/blink/renderer/core/fullscreen/DIR_METADATA b/third_party/blink/renderer/core/fullscreen/DIR_METADATA
new file mode 100644
index 0000000..1980012b
--- /dev/null
+++ b/third_party/blink/renderer/core/fullscreen/DIR_METADATA
@@ -0,0 +1,3 @@
+monorail {
+  component: "Blink>Fullscreen"
+}
diff --git a/third_party/blink/renderer/core/fullscreen/OWNERS b/third_party/blink/renderer/core/fullscreen/OWNERS
index ae781ae..212e449 100644
--- a/third_party/blink/renderer/core/fullscreen/OWNERS
+++ b/third_party/blink/renderer/core/fullscreen/OWNERS
@@ -1,3 +1 @@
 foolip@chromium.org
-
-# COMPONENT: Blink>Fullscreen
diff --git a/third_party/blink/renderer/core/html/DIR_METADATA b/third_party/blink/renderer/core/html/DIR_METADATA
new file mode 100644
index 0000000..b7acf25
--- /dev/null
+++ b/third_party/blink/renderer/core/html/DIR_METADATA
@@ -0,0 +1,5 @@
+monorail {
+  component: "Blink>HTML"
+}
+
+team_email: "dom-dev@chromium.org"
diff --git a/third_party/blink/renderer/core/html/OWNERS b/third_party/blink/renderer/core/html/OWNERS
index 472b0c7..e69de29 100644
--- a/third_party/blink/renderer/core/html/OWNERS
+++ b/third_party/blink/renderer/core/html/OWNERS
@@ -1,2 +0,0 @@
-# TEAM: dom-dev@chromium.org
-# COMPONENT: Blink>HTML
diff --git a/third_party/blink/renderer/core/html/canvas/DIR_METADATA b/third_party/blink/renderer/core/html/canvas/DIR_METADATA
new file mode 100644
index 0000000..4ae95d48
--- /dev/null
+++ b/third_party/blink/renderer/core/html/canvas/DIR_METADATA
@@ -0,0 +1,5 @@
+monorail {
+  component: "Blink>Canvas"
+}
+
+team_email: "paint-dev@chromium.org"
diff --git a/third_party/blink/renderer/core/html/canvas/OWNERS b/third_party/blink/renderer/core/html/canvas/OWNERS
index 5ef87b1aa..1e56363 100644
--- a/third_party/blink/renderer/core/html/canvas/OWNERS
+++ b/third_party/blink/renderer/core/html/canvas/OWNERS
@@ -1,4 +1 @@
 fserb@chromium.org
-
-# TEAM: paint-dev@chromium.org
-# COMPONENT: Blink>Canvas
diff --git a/third_party/blink/renderer/core/html/forms/DIR_METADATA b/third_party/blink/renderer/core/html/forms/DIR_METADATA
new file mode 100644
index 0000000..a682370
--- /dev/null
+++ b/third_party/blink/renderer/core/html/forms/DIR_METADATA
@@ -0,0 +1,5 @@
+monorail {
+  component: "Blink>Forms"
+}
+
+team_email: "dom-dev@chromium.org"
diff --git a/third_party/blink/renderer/core/html/forms/OWNERS b/third_party/blink/renderer/core/html/forms/OWNERS
index cbe63714..e69f365 100644
--- a/third_party/blink/renderer/core/html/forms/OWNERS
+++ b/third_party/blink/renderer/core/html/forms/OWNERS
@@ -1,6 +1,3 @@
 keishi@chromium.org
 tkent@chromium.org
 masonfreed@chromium.org
-
-# TEAM: dom-dev@chromium.org
-# COMPONENT: Blink>Forms
diff --git a/third_party/blink/renderer/core/html/forms/resources/color_picker.js b/third_party/blink/renderer/core/html/forms/resources/color_picker.js
index cdfb766e..e076b63 100644
--- a/third_party/blink/renderer/core/html/forms/resources/color_picker.js
+++ b/third_party/blink/renderer/core/html/forms/resources/color_picker.js
@@ -479,19 +479,7 @@
     const newColor = event.detail.color;
     if (!this.selectedColor.equals(newColor)) {
       this.selectedColor = newColor;
-
-      // There may not be an exact match for newColor in the HueSlider or
-      // ColorWell, in which case we will display the closest match. When this
-      // happens though, we want the manually chosen values to remain the
-      // selected values (as they were explicitly specified by the user).
-      // Therefore, we need to prevent them from getting overwritten when
-      // onVisualColorChange_ runs. We do this by setting the
-      // processingManualColorChange_ flag here and checking for it inside
-      // onVisualColorChange_. If the flag is set, the manual color values
-      // will not be updated with the color shown in the visual color picker.
-      this.processingManualColorChange_ = true;
-      this.visualColorPicker_.color = newColor;
-      this.processingManualColorChange_ = false;
+      this.updateVisualColorPicker(newColor);
 
       const selectedValue = newColor.asHex();
       window.pagePopupController.setValue(selectedValue);
@@ -521,6 +509,25 @@
   };
 
   /**
+   * @param {!Color} newColor
+   */
+  updateVisualColorPicker(newColor) {
+    // There may not be an exact match for newColor in the HueSlider or
+    // ColorWell, in which case we will display the closest match. When this
+    // happens though, we want the manually chosen values to remain the
+    // selected values (as they were explicitly specified by the user).
+    // Therefore, we need to prevent them from getting overwritten when
+    // onVisualColorChange_ runs. We do this by setting the
+    // processingManualColorChange_ flag here and checking for it inside
+    // onVisualColorChange_. If the flag is set, the manual color values
+    // will not be updated with the color shown in the visual color picker.
+    this.processingManualColorChange_ = true;
+    this.visualColorPicker_.color = newColor;
+    this.processingManualColorChange_ = false;
+  }
+
+
+  /**
    * @param {!Event} event
    */
   onKeyDown_ = (event) => {
@@ -597,7 +604,7 @@
       const selectedValue = new Color(window.updateData.color);
       this.selectedColor = selectedValue;
       this.manualColorPicker_.color = selectedValue;
-      this.visualColorPicker_.color = selectedValue;
+      this.updateVisualColorPicker(selectedValue);
 
       const hexValue = selectedValue.asHex();
       window.pagePopupController.setValue(hexValue);
diff --git a/third_party/blink/renderer/core/html/media/DIR_METADATA b/third_party/blink/renderer/core/html/media/DIR_METADATA
new file mode 100644
index 0000000..33fee421
--- /dev/null
+++ b/third_party/blink/renderer/core/html/media/DIR_METADATA
@@ -0,0 +1,5 @@
+monorail {
+  component: "Blink>Media"
+}
+
+team_email: "media-dev@chromium.org"
diff --git a/third_party/blink/renderer/core/html/media/OWNERS b/third_party/blink/renderer/core/html/media/OWNERS
index 3d20d5d..2d28246 100644
--- a/third_party/blink/renderer/core/html/media/OWNERS
+++ b/third_party/blink/renderer/core/html/media/OWNERS
@@ -1,4 +1 @@
 mlamouri@chromium.org
-
-# TEAM: media-dev@chromium.org
-# COMPONENT: Blink>Media
diff --git a/third_party/blink/renderer/core/html/parser/DIR_METADATA b/third_party/blink/renderer/core/html/parser/DIR_METADATA
new file mode 100644
index 0000000..18fa0a6
--- /dev/null
+++ b/third_party/blink/renderer/core/html/parser/DIR_METADATA
@@ -0,0 +1,5 @@
+monorail {
+  component: "Blink>HTML>Parser"
+}
+
+team_email: "loading-dev@chromium.org"
diff --git a/third_party/blink/renderer/core/html/parser/OWNERS b/third_party/blink/renderer/core/html/parser/OWNERS
index 2812e39..c0b826f5 100644
--- a/third_party/blink/renderer/core/html/parser/OWNERS
+++ b/third_party/blink/renderer/core/html/parser/OWNERS
@@ -2,6 +2,3 @@
 kouhei@chromium.org
 masonfreed@chromium.org
 yoavweiss@chromium.org
-
-# TEAM: loading-dev@chromium.org
-# COMPONENT: Blink>HTML>Parser
diff --git a/third_party/blink/renderer/core/html/portal/DIR_METADATA b/third_party/blink/renderer/core/html/portal/DIR_METADATA
new file mode 100644
index 0000000..1e4fe50
--- /dev/null
+++ b/third_party/blink/renderer/core/html/portal/DIR_METADATA
@@ -0,0 +1,3 @@
+monorail {
+  component: "Blink>Portals"
+}
diff --git a/third_party/blink/renderer/core/html/portal/OWNERS b/third_party/blink/renderer/core/html/portal/OWNERS
index 5ca25353..15decd27 100644
--- a/third_party/blink/renderer/core/html/portal/OWNERS
+++ b/third_party/blink/renderer/core/html/portal/OWNERS
@@ -2,5 +2,3 @@
 jbroman@chromium.org
 lfg@chromium.org
 mcnee@chromium.org
-
-# COMPONENT: Blink>Portals
diff --git a/third_party/blink/renderer/core/html/resources/controls_refresh.css b/third_party/blink/renderer/core/html/resources/controls_refresh.css
index 10c8f0e..fd505e3 100644
--- a/third_party/blink/renderer/core/html/resources/controls_refresh.css
+++ b/third_party/blink/renderer/core/html/resources/controls_refresh.css
@@ -55,6 +55,7 @@
 input:disabled,
 textarea:disabled {
   background-color: -internal-light-dark(rgba(239, 239, 239, 0.3), rgba(59, 59, 59, 0.3));
+  color: -internal-light-dark(default, rgba(255, 255, 255, 0.6));
 }
 
 select:disabled {
diff --git a/third_party/blink/renderer/core/html/track/DIR_METADATA b/third_party/blink/renderer/core/html/track/DIR_METADATA
new file mode 100644
index 0000000..ea2b837
--- /dev/null
+++ b/third_party/blink/renderer/core/html/track/DIR_METADATA
@@ -0,0 +1,3 @@
+monorail {
+  component: "Blink>Media>Track"
+}
diff --git a/third_party/blink/renderer/core/html/track/OWNERS b/third_party/blink/renderer/core/html/track/OWNERS
index 0509638..068ec27 100644
--- a/third_party/blink/renderer/core/html/track/OWNERS
+++ b/third_party/blink/renderer/core/html/track/OWNERS
@@ -1,5 +1,3 @@
 foolip@chromium.org
 fs@opera.com
 srirama.m@samsung.com
-
-# COMPONENT: Blink>Media>Track
diff --git a/third_party/blink/renderer/core/imagebitmap/DIR_METADATA b/third_party/blink/renderer/core/imagebitmap/DIR_METADATA
new file mode 100644
index 0000000..4ae95d48
--- /dev/null
+++ b/third_party/blink/renderer/core/imagebitmap/DIR_METADATA
@@ -0,0 +1,5 @@
+monorail {
+  component: "Blink>Canvas"
+}
+
+team_email: "paint-dev@chromium.org"
diff --git a/third_party/blink/renderer/core/imagebitmap/OWNERS b/third_party/blink/renderer/core/imagebitmap/OWNERS
index 5ef87b1aa..1e56363 100644
--- a/third_party/blink/renderer/core/imagebitmap/OWNERS
+++ b/third_party/blink/renderer/core/imagebitmap/OWNERS
@@ -1,4 +1 @@
 fserb@chromium.org
-
-# TEAM: paint-dev@chromium.org
-# COMPONENT: Blink>Canvas
diff --git a/third_party/blink/renderer/core/inspector/DIR_METADATA b/third_party/blink/renderer/core/inspector/DIR_METADATA
new file mode 100644
index 0000000..d78c650
--- /dev/null
+++ b/third_party/blink/renderer/core/inspector/DIR_METADATA
@@ -0,0 +1,3 @@
+monorail {
+  component: "Platform>DevTools"
+}
diff --git a/third_party/blink/renderer/core/inspector/OWNERS b/third_party/blink/renderer/core/inspector/OWNERS
index 00f97c7..3f6b202 100644
--- a/third_party/blink/renderer/core/inspector/OWNERS
+++ b/third_party/blink/renderer/core/inspector/OWNERS
@@ -5,5 +5,3 @@
 pfeldman@chromium.org
 sigurds@chromium.org
 yangguo@chromium.org
-
-# COMPONENT: Platform>DevTools
diff --git a/third_party/blink/renderer/core/layout/DIR_METADATA b/third_party/blink/renderer/core/layout/DIR_METADATA
new file mode 100644
index 0000000..3611c38f
--- /dev/null
+++ b/third_party/blink/renderer/core/layout/DIR_METADATA
@@ -0,0 +1,5 @@
+monorail {
+  component: "Blink>Layout"
+}
+
+team_email: "layout-dev@chromium.org"
diff --git a/third_party/blink/renderer/core/layout/OWNERS b/third_party/blink/renderer/core/layout/OWNERS
index 66fa601..ddf235e82 100644
--- a/third_party/blink/renderer/core/layout/OWNERS
+++ b/third_party/blink/renderer/core/layout/OWNERS
@@ -10,6 +10,3 @@
 tkent@chromium.org
 wangxianzhu@chromium.org
 xiaochengh@chromium.org
-
-# TEAM: layout-dev@chromium.org
-# COMPONENT: Blink>Layout
diff --git a/third_party/blink/renderer/core/layout/layout_object.cc b/third_party/blink/renderer/core/layout/layout_object.cc
index efd8d11..e3a91db 100644
--- a/third_party/blink/renderer/core/layout/layout_object.cc
+++ b/third_party/blink/renderer/core/layout/layout_object.cc
@@ -162,6 +162,18 @@
           skip_info->Update(*legend_parent);
         object = legend_parent;
       }
+    } else if (UNLIKELY(object->IsColumnSpanAll())) {
+      // The containing block chain goes directly from the column spanner to the
+      // multi-column container.
+      const auto* multicol_container =
+          object->SpannerPlaceholder()->MultiColumnBlockFlow();
+      if (multicol_container->IsLayoutNGObject()) {
+        while (object->Parent() != multicol_container) {
+          object = object->Parent();
+          if (skip_info)
+            skip_info->Update(*object);
+        }
+      }
     }
   }
   return nullptr;
diff --git a/third_party/blink/renderer/core/layout/ng/DIR_METADATA b/third_party/blink/renderer/core/layout/ng/DIR_METADATA
new file mode 100644
index 0000000..3611c38f
--- /dev/null
+++ b/third_party/blink/renderer/core/layout/ng/DIR_METADATA
@@ -0,0 +1,5 @@
+monorail {
+  component: "Blink>Layout"
+}
+
+team_email: "layout-dev@chromium.org"
diff --git a/third_party/blink/renderer/core/layout/ng/OWNERS b/third_party/blink/renderer/core/layout/ng/OWNERS
index 5957a04..f586374 100644
--- a/third_party/blink/renderer/core/layout/ng/OWNERS
+++ b/third_party/blink/renderer/core/layout/ng/OWNERS
@@ -2,7 +2,5 @@
 ikilpatrick@chromium.org
 atotic@chromium.org
 
-# TEAM: layout-dev@chromium.org
-# COMPONENT: Blink>Layout
 # emeritus:
 # eae@chromium.org
diff --git a/third_party/blink/renderer/core/layout/ng/custom/DIR_METADATA b/third_party/blink/renderer/core/layout/ng/custom/DIR_METADATA
new file mode 100644
index 0000000..3611c38f
--- /dev/null
+++ b/third_party/blink/renderer/core/layout/ng/custom/DIR_METADATA
@@ -0,0 +1,5 @@
+monorail {
+  component: "Blink>Layout"
+}
+
+team_email: "layout-dev@chromium.org"
diff --git a/third_party/blink/renderer/core/layout/ng/custom/OWNERS b/third_party/blink/renderer/core/layout/ng/custom/OWNERS
index e814a69..bed855f 100644
--- a/third_party/blink/renderer/core/layout/ng/custom/OWNERS
+++ b/third_party/blink/renderer/core/layout/ng/custom/OWNERS
@@ -1,5 +1,2 @@
 ikilpatrick@chromium.org
 kojii@chromium.org
-
-# TEAM: layout-dev@chromium.org
-# COMPONENT: Blink>Layout
diff --git a/third_party/blink/renderer/core/layout/ng/ng_out_of_flow_layout_part_test.cc b/third_party/blink/renderer/core/layout/ng/ng_out_of_flow_layout_part_test.cc
index f3d68f5..bf7fde0 100644
--- a/third_party/blink/renderer/core/layout/ng/ng_out_of_flow_layout_part_test.cc
+++ b/third_party/blink/renderer/core/layout/ng/ng_out_of_flow_layout_part_test.cc
@@ -842,11 +842,9 @@
   EXPECT_EQ(expectation, dump);
 }
 
-// Tests that column spanners are used as the containing block for abspos
-// elements nested inside of a spanner.
-// TODO(almaher): Abspos elements nested in a spanner are never getting laid
-// out.
-TEST_F(NGOutOfFlowLayoutPartTest, DISABLED_AbsposInSpanner) {
+// Tests that abspos elements bubble up to their containing block when nested
+// inside of a spanner.
+TEST_F(NGOutOfFlowLayoutPartTest, AbsposInSpanner) {
   SetBodyInnerHTML(
       R"HTML(
       <style>
@@ -854,17 +852,22 @@
           column-count:2; column-fill:auto; column-gap:16px; height:40px;
         }
         .rel {
-          position: relative; width:30px;
+          position: relative;
         }
         .abs {
-          position:absolute; width:5px; height:50px;
+          position:absolute; width:5px; height:50px; top:5px;
         }
       </style>
       <div id="container">
-        <div id="multicol">
-          <div class="rel">
-            <div style="column-span:all;">
-              <div class="abs"></div>
+        <div class="rel" style="width:50px;">
+          <div id="multicol">
+            <div class="rel" style="width:30px;">
+              <div style="width:10px; height:30px;"></div>
+              <div>
+                <div style="column-span:all;">
+                  <div class="abs"></div>
+                </div>
+              </div>
             </div>
           </div>
         </div>
@@ -874,13 +877,71 @@
 
   String expectation = R"DUMP(.:: LayoutNG Physical Fragment Tree ::.
   offset:unplaced size:1000x40
-    offset:0,0 size:1000x40
-      offset:0,0 size:492x1
-        offset:0,0 size:30x0
-      offset:0,0 size:1000x0
-        offset:0,0 size:5x50
-      offset:0,0 size:492x40
-        offset:0,0 size:30x0
+    offset:0,0 size:50x40
+      offset:0,0 size:50x40
+        offset:0,0 size:17x15
+          offset:0,0 size:30x15
+            offset:0,0 size:10x15
+        offset:33,0 size:17x15
+          offset:0,0 size:30x15
+            offset:0,0 size:10x15
+            offset:0,15 size:30x0
+        offset:0,15 size:50x0
+        offset:0,15 size:17x25
+          offset:0,0 size:30x0
+            offset:0,0 size:30x0
+      offset:0,5 size:5x50
+)DUMP";
+  EXPECT_EQ(expectation, dump);
+}
+
+// Tests that abspos elements bubble up to their containing block when nested
+// inside of a spanner and get the correct static position.
+TEST_F(NGOutOfFlowLayoutPartTest, AbsposInSpannerStaticPos) {
+  SetBodyInnerHTML(
+      R"HTML(
+      <style>
+        #multicol {
+          column-count:2; column-fill:auto; column-gap:16px; height:40px;
+        }
+        .rel {
+          position: relative;
+        }
+        .abs {
+          position:absolute; width:5px; height:50px;
+        }
+      </style>
+      <div id="container">
+        <div class="rel" style="width:50px;">
+          <div id="multicol">
+            <div class="rel" style="width:30px;">
+              <div style="width:10px; height:30px;"></div>
+              <div style="column-span:all; margin-top:5px;">
+                <div style="width:20px; height:5px;"></div>
+                <div class="abs"></div>
+              </div>
+            </div>
+          </div>
+        </div>
+      </div>
+      )HTML");
+  String dump = DumpFragmentTree(GetElementById("container"));
+
+  String expectation = R"DUMP(.:: LayoutNG Physical Fragment Tree ::.
+  offset:unplaced size:1000x40
+    offset:0,0 size:50x40
+      offset:0,0 size:50x40
+        offset:0,0 size:17x15
+          offset:0,0 size:30x15
+            offset:0,0 size:10x15
+        offset:33,0 size:17x15
+          offset:0,0 size:30x15
+            offset:0,0 size:10x15
+        offset:0,20 size:50x5
+          offset:0,0 size:20x5
+        offset:0,25 size:17x15
+          offset:0,0 size:30x0
+      offset:0,25 size:5x50
 )DUMP";
   EXPECT_EQ(expectation, dump);
 }
diff --git a/third_party/blink/renderer/core/layout/ng/ng_physical_box_fragment.cc b/third_party/blink/renderer/core/layout/ng/ng_physical_box_fragment.cc
index 327e4e90..75dd99b4 100644
--- a/third_party/blink/renderer/core/layout/ng/ng_physical_box_fragment.cc
+++ b/third_party/blink/renderer/core/layout/ng/ng_physical_box_fragment.cc
@@ -835,14 +835,6 @@
     return layout_object_->PositionForPoint(point);
   }
 
-  // TODO(layout-dev): Handle situations where we're near (but not within)
-  // atomic inlines here, rather than relying on it being taken care of by the
-  // layout object. This is currently handled in LayoutBlock and
-  // LayoutNGBlockFlowMixin - look for
-  // PositionForPointIfOutsideAtomicInlineLevel().
-  DCHECK(!IsAtomicInline() ||
-         PhysicalRect(PhysicalOffset(), Size()).Contains(point));
-
   if (IsScrollContainer())
     point += PhysicalOffset(PixelSnappedScrolledContentOffset());
 
diff --git a/third_party/blink/renderer/core/layout/svg/DIR_METADATA b/third_party/blink/renderer/core/layout/svg/DIR_METADATA
new file mode 100644
index 0000000..20ba44d5
--- /dev/null
+++ b/third_party/blink/renderer/core/layout/svg/DIR_METADATA
@@ -0,0 +1,5 @@
+monorail {
+  component: "Blink>SVG"
+}
+
+team_email: "paint-dev@chromium.org"
diff --git a/third_party/blink/renderer/core/layout/svg/OWNERS b/third_party/blink/renderer/core/layout/svg/OWNERS
index 8db1967..e69de29 100644
--- a/third_party/blink/renderer/core/layout/svg/OWNERS
+++ b/third_party/blink/renderer/core/layout/svg/OWNERS
@@ -1,2 +0,0 @@
-# TEAM: paint-dev@chromium.org
-# COMPONENT: Blink>SVG
\ No newline at end of file
diff --git a/third_party/blink/renderer/core/loader/DIR_METADATA b/third_party/blink/renderer/core/loader/DIR_METADATA
new file mode 100644
index 0000000..af30f87
--- /dev/null
+++ b/third_party/blink/renderer/core/loader/DIR_METADATA
@@ -0,0 +1,5 @@
+monorail {
+  component: "Blink>Loader"
+}
+
+team_email: "loading-dev@chromium.org"
diff --git a/third_party/blink/renderer/core/loader/OWNERS b/third_party/blink/renderer/core/loader/OWNERS
index b875f73..3160250 100644
--- a/third_party/blink/renderer/core/loader/OWNERS
+++ b/third_party/blink/renderer/core/loader/OWNERS
@@ -1,6 +1,3 @@
 japhet@chromium.org
 mkwst@chromium.org
 yhirano@chromium.org
-
-# TEAM: loading-dev@chromium.org
-# COMPONENT: Blink>Loader
diff --git a/third_party/blink/renderer/core/loader/appcache/DIR_METADATA b/third_party/blink/renderer/core/loader/appcache/DIR_METADATA
new file mode 100644
index 0000000..df95601
--- /dev/null
+++ b/third_party/blink/renderer/core/loader/appcache/DIR_METADATA
@@ -0,0 +1,5 @@
+monorail {
+  component: "Blink>Storage>AppCache"
+}
+
+team_email: "storage-dev@chromium.org"
diff --git a/third_party/blink/renderer/core/loader/appcache/OWNERS b/third_party/blink/renderer/core/loader/appcache/OWNERS
index 602a916..97ff3f4 100644
--- a/third_party/blink/renderer/core/loader/appcache/OWNERS
+++ b/third_party/blink/renderer/core/loader/appcache/OWNERS
@@ -1,4 +1 @@
 file://content/browser/appcache/OWNERS
-
-# TEAM: storage-dev@chromium.org
-# COMPONENT: Blink>Storage>AppCache
\ No newline at end of file
diff --git a/third_party/blink/renderer/core/messaging/DIR_METADATA b/third_party/blink/renderer/core/messaging/DIR_METADATA
new file mode 100644
index 0000000..169c29b
--- /dev/null
+++ b/third_party/blink/renderer/core/messaging/DIR_METADATA
@@ -0,0 +1,5 @@
+monorail {
+  component: "Blink>Messaging"
+}
+
+team_email: "platform-architecture-dev@chromium.org"
diff --git a/third_party/blink/renderer/core/messaging/OWNERS b/third_party/blink/renderer/core/messaging/OWNERS
index 2ae4d6da..632fec4 100644
--- a/third_party/blink/renderer/core/messaging/OWNERS
+++ b/third_party/blink/renderer/core/messaging/OWNERS
@@ -3,6 +3,3 @@
 
 per-file *_mojom_traits*.*=set noparent
 per-file *_mojom_traits*.*=file://ipc/SECURITY_OWNERS
-
-# TEAM: platform-architecture-dev@chromium.org
-# COMPONENT: Blink>Messaging
diff --git a/third_party/blink/renderer/core/mojo/DIR_METADATA b/third_party/blink/renderer/core/mojo/DIR_METADATA
new file mode 100644
index 0000000..92214b2
--- /dev/null
+++ b/third_party/blink/renderer/core/mojo/DIR_METADATA
@@ -0,0 +1,3 @@
+monorail {
+  component: "Internals>Mojo"
+}
diff --git a/third_party/blink/renderer/core/mojo/OWNERS b/third_party/blink/renderer/core/mojo/OWNERS
index 8df388c3..e69de29 100644
--- a/third_party/blink/renderer/core/mojo/OWNERS
+++ b/third_party/blink/renderer/core/mojo/OWNERS
@@ -1 +0,0 @@
-# COMPONENT: Internals>Mojo
diff --git a/third_party/blink/renderer/core/offscreencanvas/DIR_METADATA b/third_party/blink/renderer/core/offscreencanvas/DIR_METADATA
new file mode 100644
index 0000000..4ae95d48
--- /dev/null
+++ b/third_party/blink/renderer/core/offscreencanvas/DIR_METADATA
@@ -0,0 +1,5 @@
+monorail {
+  component: "Blink>Canvas"
+}
+
+team_email: "paint-dev@chromium.org"
diff --git a/third_party/blink/renderer/core/offscreencanvas/OWNERS b/third_party/blink/renderer/core/offscreencanvas/OWNERS
index 5ef87b1aa..1e56363 100644
--- a/third_party/blink/renderer/core/offscreencanvas/OWNERS
+++ b/third_party/blink/renderer/core/offscreencanvas/OWNERS
@@ -1,4 +1 @@
 fserb@chromium.org
-
-# TEAM: paint-dev@chromium.org
-# COMPONENT: Blink>Canvas
diff --git a/third_party/blink/renderer/core/paint/DIR_METADATA b/third_party/blink/renderer/core/paint/DIR_METADATA
new file mode 100644
index 0000000..5dec410
--- /dev/null
+++ b/third_party/blink/renderer/core/paint/DIR_METADATA
@@ -0,0 +1,5 @@
+monorail {
+  component: "Blink>Paint"
+}
+
+team_email: "paint-dev@chromium.org"
diff --git a/third_party/blink/renderer/core/paint/OWNERS b/third_party/blink/renderer/core/paint/OWNERS
index d4b697b..51aafa9 100644
--- a/third_party/blink/renderer/core/paint/OWNERS
+++ b/third_party/blink/renderer/core/paint/OWNERS
@@ -9,6 +9,3 @@
 senorblanco@chromium.org
 trchen@chromium.org
 wangxianzhu@chromium.org
-
-# TEAM: paint-dev@chromium.org
-# COMPONENT: Blink>Paint
diff --git a/third_party/blink/renderer/core/paint/compositing/DIR_METADATA b/third_party/blink/renderer/core/paint/compositing/DIR_METADATA
new file mode 100644
index 0000000..096eaac
--- /dev/null
+++ b/third_party/blink/renderer/core/paint/compositing/DIR_METADATA
@@ -0,0 +1,5 @@
+monorail {
+  component: "Blink>Compositing"
+}
+
+team_email: "paint-dev@chromium.org"
diff --git a/third_party/blink/renderer/core/paint/compositing/OWNERS b/third_party/blink/renderer/core/paint/compositing/OWNERS
index 3e7d12c..e69de29 100644
--- a/third_party/blink/renderer/core/paint/compositing/OWNERS
+++ b/third_party/blink/renderer/core/paint/compositing/OWNERS
@@ -1,2 +0,0 @@
-# TEAM: paint-dev@chromium.org
-# COMPONENT: Blink>Compositing
\ No newline at end of file
diff --git a/third_party/blink/renderer/core/resize_observer/DIR_METADATA b/third_party/blink/renderer/core/resize_observer/DIR_METADATA
new file mode 100644
index 0000000..3611c38f
--- /dev/null
+++ b/third_party/blink/renderer/core/resize_observer/DIR_METADATA
@@ -0,0 +1,5 @@
+monorail {
+  component: "Blink>Layout"
+}
+
+team_email: "layout-dev@chromium.org"
diff --git a/third_party/blink/renderer/core/resize_observer/OWNERS b/third_party/blink/renderer/core/resize_observer/OWNERS
index 4dd1b292..142a4b2 100644
--- a/third_party/blink/renderer/core/resize_observer/OWNERS
+++ b/third_party/blink/renderer/core/resize_observer/OWNERS
@@ -1,4 +1 @@
 atotic@chromium.org
-
-# TEAM: layout-dev@chromium.org
-# COMPONENT: Blink>Layout
diff --git a/third_party/blink/renderer/core/script/DIR_METADATA b/third_party/blink/renderer/core/script/DIR_METADATA
new file mode 100644
index 0000000..b7353a1
--- /dev/null
+++ b/third_party/blink/renderer/core/script/DIR_METADATA
@@ -0,0 +1,5 @@
+monorail {
+  component: "Blink>HTML>Script"
+}
+
+team_email: "module-dev@chromium.org"
diff --git a/third_party/blink/renderer/core/script/OWNERS b/third_party/blink/renderer/core/script/OWNERS
index 9413cd7..ec3c853 100644
--- a/third_party/blink/renderer/core/script/OWNERS
+++ b/third_party/blink/renderer/core/script/OWNERS
@@ -2,6 +2,3 @@
 hiroshige@chromium.org
 jbroman@chromium.org
 kouhei@chromium.org
-
-# TEAM: module-dev@chromium.org
-# COMPONENT: Blink>HTML>Script
diff --git a/third_party/blink/renderer/core/streams/DIR_METADATA b/third_party/blink/renderer/core/streams/DIR_METADATA
new file mode 100644
index 0000000..0bf5ee2
--- /dev/null
+++ b/third_party/blink/renderer/core/streams/DIR_METADATA
@@ -0,0 +1,5 @@
+monorail {
+  component: "Blink>Network>StreamsAPI"
+}
+
+team_email: "blink-network-dev@chromium.org"
diff --git a/third_party/blink/renderer/core/streams/OWNERS b/third_party/blink/renderer/core/streams/OWNERS
index b63f881..a2e6241 100644
--- a/third_party/blink/renderer/core/streams/OWNERS
+++ b/third_party/blink/renderer/core/streams/OWNERS
@@ -1,5 +1,2 @@
 yhirano@chromium.org
 ricea@chromium.org
-
-# TEAM: blink-network-dev@chromium.org
-# COMPONENT: Blink>Network>StreamsAPI
diff --git a/third_party/blink/renderer/core/style/DIR_METADATA b/third_party/blink/renderer/core/style/DIR_METADATA
new file mode 100644
index 0000000..1876fb3
--- /dev/null
+++ b/third_party/blink/renderer/core/style/DIR_METADATA
@@ -0,0 +1,5 @@
+monorail {
+  component: "Blink>CSS"
+}
+
+team_email: "layout-dev@chromium.org"
diff --git a/third_party/blink/renderer/core/style/OWNERS b/third_party/blink/renderer/core/style/OWNERS
index a007a39..7c1cab45 100644
--- a/third_party/blink/renderer/core/style/OWNERS
+++ b/third_party/blink/renderer/core/style/OWNERS
@@ -3,6 +3,3 @@
 ericwilligers@chromium.org
 futhark@chromium.org
 xiaochengh@chromium.org
-
-# TEAM: layout-dev@chromium.org
-# COMPONENT: Blink>CSS
diff --git a/third_party/blink/renderer/core/svg/DIR_METADATA b/third_party/blink/renderer/core/svg/DIR_METADATA
new file mode 100644
index 0000000..20ba44d5
--- /dev/null
+++ b/third_party/blink/renderer/core/svg/DIR_METADATA
@@ -0,0 +1,5 @@
+monorail {
+  component: "Blink>SVG"
+}
+
+team_email: "paint-dev@chromium.org"
diff --git a/third_party/blink/renderer/core/svg/OWNERS b/third_party/blink/renderer/core/svg/OWNERS
index 8db1967..e69de29 100644
--- a/third_party/blink/renderer/core/svg/OWNERS
+++ b/third_party/blink/renderer/core/svg/OWNERS
@@ -1,2 +0,0 @@
-# TEAM: paint-dev@chromium.org
-# COMPONENT: Blink>SVG
\ No newline at end of file
diff --git a/third_party/blink/renderer/core/timing/DIR_METADATA b/third_party/blink/renderer/core/timing/DIR_METADATA
new file mode 100644
index 0000000..8f13e49
--- /dev/null
+++ b/third_party/blink/renderer/core/timing/DIR_METADATA
@@ -0,0 +1,5 @@
+monorail {
+  component: "Blink>PerformanceAPIs"
+}
+
+team_email: "speed-metrics-dev@chromium.org"
diff --git a/third_party/blink/renderer/core/timing/OWNERS b/third_party/blink/renderer/core/timing/OWNERS
index afc8230..9e3a2546 100644
--- a/third_party/blink/renderer/core/timing/OWNERS
+++ b/third_party/blink/renderer/core/timing/OWNERS
@@ -1,4 +1 @@
 npm@chromium.org
-
-# TEAM: speed-metrics-dev@chromium.org
-# COMPONENT: Blink>PerformanceAPIs
diff --git a/third_party/blink/renderer/core/trustedtypes/DIR_METADATA b/third_party/blink/renderer/core/trustedtypes/DIR_METADATA
new file mode 100644
index 0000000..8674903
--- /dev/null
+++ b/third_party/blink/renderer/core/trustedtypes/DIR_METADATA
@@ -0,0 +1,3 @@
+monorail {
+  component: "Blink>SecurityFeature"
+}
diff --git a/third_party/blink/renderer/core/trustedtypes/OWNERS b/third_party/blink/renderer/core/trustedtypes/OWNERS
index 41f27872..5440e48 100644
--- a/third_party/blink/renderer/core/trustedtypes/OWNERS
+++ b/third_party/blink/renderer/core/trustedtypes/OWNERS
@@ -1,4 +1,2 @@
 mkwst@chromium.org
 vogelheim@chromium.org
-
-# COMPONENT: Blink>SecurityFeature
diff --git a/third_party/blink/renderer/core/url/DIR_METADATA b/third_party/blink/renderer/core/url/DIR_METADATA
new file mode 100644
index 0000000..791d1cb
--- /dev/null
+++ b/third_party/blink/renderer/core/url/DIR_METADATA
@@ -0,0 +1,5 @@
+monorail {
+  component: "Blink>Network"
+}
+
+team_email: "blink-network-dev@chromium.org"
diff --git a/third_party/blink/renderer/core/url/OWNERS b/third_party/blink/renderer/core/url/OWNERS
index aa9bc48..3f84563 100644
--- a/third_party/blink/renderer/core/url/OWNERS
+++ b/third_party/blink/renderer/core/url/OWNERS
@@ -1,4 +1 @@
 mkwst@chromium.org
-
-# TEAM: blink-network-dev@chromium.org
-# COMPONENT: Blink>Network
diff --git a/third_party/blink/renderer/core/workers/DIR_METADATA b/third_party/blink/renderer/core/workers/DIR_METADATA
new file mode 100644
index 0000000..a458fab7
--- /dev/null
+++ b/third_party/blink/renderer/core/workers/DIR_METADATA
@@ -0,0 +1,5 @@
+monorail {
+  component: "Blink>Workers"
+}
+
+team_email: "worker-dev@chromium.org"
diff --git a/third_party/blink/renderer/core/workers/OWNERS b/third_party/blink/renderer/core/workers/OWNERS
index 2cdf64f..51ebce6 100644
--- a/third_party/blink/renderer/core/workers/OWNERS
+++ b/third_party/blink/renderer/core/workers/OWNERS
@@ -3,6 +3,3 @@
 hiroshige@chromium.org
 japhet@chromium.org
 nhiroki@chromium.org
-
-# TEAM: worker-dev@chromium.org
-# COMPONENT: Blink>Workers
diff --git a/third_party/blink/renderer/core/xml/DIR_METADATA b/third_party/blink/renderer/core/xml/DIR_METADATA
new file mode 100644
index 0000000..3f57820b
--- /dev/null
+++ b/third_party/blink/renderer/core/xml/DIR_METADATA
@@ -0,0 +1,3 @@
+monorail {
+  component: "Blink>XML"
+}
diff --git a/third_party/blink/renderer/core/xml/OWNERS b/third_party/blink/renderer/core/xml/OWNERS
index 5c2ac18..300e435 100644
--- a/third_party/blink/renderer/core/xml/OWNERS
+++ b/third_party/blink/renderer/core/xml/OWNERS
@@ -1,5 +1,4 @@
 # There's no real owners here. If you're familiar with the code please send
 # a CL to add yourself here.
-# COMPONENT: Blink>XML
 dcheng@chromium.org
 palmer@chromium.org
diff --git a/third_party/blink/renderer/core/xmlhttprequest/DIR_METADATA b/third_party/blink/renderer/core/xmlhttprequest/DIR_METADATA
new file mode 100644
index 0000000..4a6576d
--- /dev/null
+++ b/third_party/blink/renderer/core/xmlhttprequest/DIR_METADATA
@@ -0,0 +1,5 @@
+monorail {
+  component: "Blink>Network>XHR"
+}
+
+team_email: "blink-network-dev@chromium.org"
diff --git a/third_party/blink/renderer/core/xmlhttprequest/OWNERS b/third_party/blink/renderer/core/xmlhttprequest/OWNERS
index aac34a8..99b341d2 100644
--- a/third_party/blink/renderer/core/xmlhttprequest/OWNERS
+++ b/third_party/blink/renderer/core/xmlhttprequest/OWNERS
@@ -1,5 +1,2 @@
 kouhei@chromium.org
 yhirano@chromium.org
-
-# TEAM: blink-network-dev@chromium.org
-# COMPONENT: Blink>Network>XHR
diff --git a/third_party/blink/renderer/modules/accessibility/ax_object.cc b/third_party/blink/renderer/modules/accessibility/ax_object.cc
index 95190f2..7a93697 100644
--- a/third_party/blink/renderer/modules/accessibility/ax_object.cc
+++ b/third_party/blink/renderer/modules/accessibility/ax_object.cc
@@ -1911,7 +1911,7 @@
   // Allow the browser side ax tree to access "aria-hidden" nodes.
   // This is useful for APIs that return the node referenced by
   // aria-labeledby and aria-describedby.
-  if (GetLayoutObject() && AriaHiddenRoot())
+  if (GetLayoutObject() && IsInertOrAriaHidden() && AriaHiddenRoot())
     return true;
 
   // Preserve SVG grouping elements.
diff --git a/third_party/blink/renderer/modules/quota/storage_manager.cc b/third_party/blink/renderer/modules/quota/storage_manager.cc
index c26a88c..1a9533b 100644
--- a/third_party/blink/renderer/modules/quota/storage_manager.cc
+++ b/third_party/blink/renderer/modules/quota/storage_manager.cc
@@ -236,7 +236,7 @@
 }
 
 void StorageManager::StartObserving() {
-  if (change_listener_receiver_.is_bound())
+  if (change_listener_receiver_.is_bound() || !quota_host_.is_bound())
     return;
 
   ExecutionContext* execution_context = GetExecutionContext();
diff --git a/third_party/blink/renderer/modules/webcodecs/fuzzer_seed_corpus/video_encoder/encode_h264.textproto b/third_party/blink/renderer/modules/webcodecs/fuzzer_seed_corpus/video_encoder/encode_h264.textproto
new file mode 100644
index 0000000..45bfc23f
--- /dev/null
+++ b/third_party/blink/renderer/modules/webcodecs/fuzzer_seed_corpus/video_encoder/encode_h264.textproto
@@ -0,0 +1,76 @@
+# Simulates reasonable usage of VideoEncoder
+#  configure(h264)
+#  encode(red frame)
+#  encode(green frame, key)
+#  configure(h264, different bitrate)
+#  encode(blue frame)
+#  flush()
+#  close()
+
+invocations: [
+  {
+    configure {
+      codec: 'avc1.42001E',
+      acceleration: DENY,
+      bitrate: 1500000,
+      framerate: 25,
+      width: 200,
+      height: 50
+    }
+  },
+  {
+    encode {
+      frame {
+        timestamp: 0,
+        duration: 33333,
+        bitmap_width: 200,
+
+        # RED FRAME
+        rgb_bitmap: "\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377",
+      }
+    }
+  },
+  {
+    encode {
+      frame {
+        timestamp: 33333,
+        duration: 33333,
+        bitmap_width: 200,
+
+        # GREEN FRAME
+        rgb_bitmap: "\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377",
+      },
+      options {
+        key_frame: true,
+      }
+    }
+  },
+  {
+    configure {
+      codec: 'avc1.42001E',
+      acceleration: DENY,
+      framerate: 25,
+      bitrate: 1000000,
+      width: 200,
+      height: 50
+    }
+  },
+  {
+    encode {
+      frame {
+        timestamp: 66666,
+        duration: 33333,
+        bitmap_width: 200,
+
+        # BLUE FRAME
+        rgb_bitmap: "\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377",
+      }
+    }
+  },
+  {
+    flush {}
+  },
+  {
+    close {}
+  }
+]
\ No newline at end of file
diff --git a/third_party/blink/renderer/modules/webcodecs/fuzzer_seed_corpus/video_encoder/encode_vp8.textproto b/third_party/blink/renderer/modules/webcodecs/fuzzer_seed_corpus/video_encoder/encode_vp8.textproto
new file mode 100644
index 0000000..7bfde87
--- /dev/null
+++ b/third_party/blink/renderer/modules/webcodecs/fuzzer_seed_corpus/video_encoder/encode_vp8.textproto
@@ -0,0 +1,76 @@
+# Simulates reasonable usage of VideoEncoder
+#  configure(vp8)
+#  encode(red frame)
+#  encode(green frame, key)
+#  configure(vp8, different bitrate)
+#  encode(blue frame)
+#  flush()
+#  close()
+
+invocations: [
+  {
+    configure {
+      codec: 'vp8',
+      acceleration: ALLOW,
+      bitrate: 1500000,
+      framerate: 25,
+      width: 200,
+      height: 50
+    }
+  },
+  {
+    encode {
+      frame {
+        timestamp: 0,
+        duration: 33333,
+        bitmap_width: 200,
+
+        # RED FRAME
+        rgb_bitmap: "\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377\353\000\000\377",
+      }
+    }
+  },
+  {
+    encode {
+      frame {
+        timestamp: 33333,
+        duration: 33333,
+        bitmap_width: 200,
+
+        # GREEN FRAME
+        rgb_bitmap: "\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377\000\276\000\377",
+      },
+      options {
+        key_frame: true,
+      }
+    }
+  },
+  {
+    configure {
+      codec: 'vp8',
+      acceleration: ALLOW,
+      framerate: 25,
+      bitrate: 1000000,
+      width: 200,
+      height: 50
+    }
+  },
+  {
+    encode {
+      frame {
+        timestamp: 66666,
+        duration: 33333,
+        bitmap_width: 200,
+
+        # BLUE FRAME
+        rgb_bitmap: "\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377\000\310\310\377",
+      }
+    }
+  },
+  {
+    flush {}
+  },
+  {
+    close {}
+  }
+]
\ No newline at end of file
diff --git a/third_party/blink/renderer/modules/webgl/webgl2_rendering_context_base.cc b/third_party/blink/renderer/modules/webgl/webgl2_rendering_context_base.cc
index f1c1a73f..c2702ad 100644
--- a/third_party/blink/renderer/modules/webgl/webgl2_rendering_context_base.cc
+++ b/third_party/blink/renderer/modules/webgl/webgl2_rendering_context_base.cc
@@ -5527,7 +5527,6 @@
         return false;
       }
       return true;
-    case GL_UNSIGNED_SHORT:
     case GL_UNSIGNED_SHORT_5_6_5:
     case GL_UNSIGNED_SHORT_4_4_4_4:
     case GL_UNSIGNED_SHORT_5_5_5_1:
@@ -5538,6 +5537,23 @@
         return false;
       }
       return true;
+    case GL_UNSIGNED_SHORT:
+      if (buffer && buffer->GetType() != DOMArrayBufferView::kTypeUint16) {
+        SynthesizeGLError(
+            GL_INVALID_OPERATION, "readPixels",
+            "type GL_UNSIGNED_SHORT but ArrayBufferView not Uint16Array");
+        return false;
+      }
+      if (format == GL_RGBA) {
+        if (!ExtensionEnabled(kEXTTextureNorm16Name)) {
+          SynthesizeGLError(
+              GL_INVALID_ENUM, "readPixels",
+              "invalid format/type combination RGBA/UNSIGNED_SHORT without "
+              "EXT_texture_norm16 support");
+          return false;
+        }
+      }
+      return true;
     case GL_SHORT:
       if (buffer && buffer->GetType() != DOMArrayBufferView::kTypeInt16) {
         SynthesizeGLError(GL_INVALID_OPERATION, "readPixels",
diff --git a/third_party/blink/web_tests/NeverFixTests b/third_party/blink/web_tests/NeverFixTests
index 916346ea..ba44055 100644
--- a/third_party/blink/web_tests/NeverFixTests
+++ b/third_party/blink/web_tests/NeverFixTests
@@ -2186,6 +2186,8 @@
 external/wpt/webusb/usbDevice_claimInterface-manual.https.html [ Skip ]
 wpt_internal/hid/hidDevice_collections-manual.https.html [ Skip ]
 external/wpt/serial/serialPort_loopback-manual.https.html [ Skip ]
+external/wpt/serial/serialPort_loopback_BreakError-manual.https.html [ Skip ]
+external/wpt/serial/serialPort_loopback_BufferOverrunError-manual.https.html [ Skip ]
 external/wpt/serial/serialPort_disconnect-manual.https.html [ Skip ]
 
 # CPU test is enough for this one as there are gradient issues on the GPU
diff --git a/third_party/blink/web_tests/TestExpectations b/third_party/blink/web_tests/TestExpectations
index bbfffaf6..b802c48 100644
--- a/third_party/blink/web_tests/TestExpectations
+++ b/third_party/blink/web_tests/TestExpectations
@@ -215,6 +215,12 @@
 crbug.com/1093466 virtual/portals/http/tests/portals/* [ Pass ]
 crbug.com/1093466 virtual/portals/wpt_internal/portals/* [ Pass ]
 
+# Subpixel differences
+crbug.com/997202 external/wpt/css/css-backgrounds/background-attachment-local/attachment-local-clipping-color-5.html [ Failure ]
+crbug.com/997202 external/wpt/css/css-backgrounds/background-attachment-local/attachment-local-clipping-image-5.html [ Failure ]
+crbug.com/997202 external/wpt/css/css-backgrounds/border-radius-clip-001.html [ Failure ]
+crbug.com/997202 external/wpt/css/css-backgrounds/border-radius-clip-002.htm [ Failure ]
+
 crbug.com/807395 fast/multicol/mixed-opacity-test.html [ Failure ]
 
 ########## Ref tests can't be rebaselined ##########
@@ -977,6 +983,7 @@
 virtual/layout_ng_block_frag/external/wpt/css/css-break/trailing-child-margin-000.html [ Pass ]
 virtual/layout_ng_block_frag/external/wpt/css/css-break/trailing-child-margin-002.html [ Pass ]
 virtual/layout_ng_block_frag/external/wpt/css/css-contain/contain-size-monolithic-002.html [ Pass ]
+virtual/layout_ng_block_frag/external/wpt/css/css-multicol/abspos-containing-block-outside-spanner.html [ Pass ]
 virtual/layout_ng_block_frag/external/wpt/css/css-multicol/balance-break-avoidance-001.html [ Pass ]
 virtual/layout_ng_block_frag/external/wpt/css/css-multicol/balance-orphans-widows-000.html [ Pass ]
 virtual/layout_ng_block_frag/external/wpt/css/css-multicol/baseline-001.html [ Pass ]
@@ -1093,7 +1100,6 @@
 crbug.com/829028 virtual/layout_ng_block_frag/fast/multicol/overflowing-columns-large-gaps.html [ Failure ]
 crbug.com/1079031 virtual/layout_ng_block_frag/fast/multicol/positioned-outside-of-columns.html [ Crash Failure ]
 crbug.com/1079031 virtual/layout_ng_block_frag/fast/multicol/positioned-split.html [ Failure ]
-crbug.com/1079031 virtual/layout_ng_block_frag/fast/multicol/span/abspos-containing-block-outside-spanner.html [ Crash Failure Timeout ]
 crbug.com/1058792 virtual/layout_ng_block_frag/fast/multicol/span/invalid-spanner-in-transform.html [ Failure Crash ]
 crbug.com/829028 virtual/layout_ng_block_frag/fast/multicol/span/outer-column-break-after-inner-spanner-2.html [ Failure ]
 crbug.com/829028 virtual/layout_ng_block_frag/fast/multicol/span/outer-column-break-after-inner-spanner-and-float.html [ Failure ]
@@ -2541,6 +2547,8 @@
 crbug.com/958381 [ Mac ] external/wpt/css/CSS2/tables/table-anonymous-objects-206.xht [ Failure ]
 
 # ====== New tests from wpt-importer added here ======
+crbug.com/626703 external/wpt/css/css-break/widows-orphans-017.html [ Failure ]
+crbug.com/626703 virtual/layout_ng_block_frag/external/wpt/css/css-break/widows-orphans-017.html [ Failure ]
 crbug.com/626703 external/wpt/mediacapture-record/MediaRecorder-peerconnection-no-sink.https.html [ Timeout ]
 crbug.com/626703 external/wpt/mediacapture-record/MediaRecorder-peerconnection.https.html [ Timeout ]
 crbug.com/626703 [ Win7 ] virtual/plz-dedicated-worker/external/wpt/service-workers/service-worker/update-bytecheck.https.html [ Timeout ]
@@ -3185,6 +3193,7 @@
 crbug.com/829028 external/wpt/css/css-break/tall-line-in-short-fragmentainer-002.html [ Failure ]
 crbug.com/829028 external/wpt/css/css-break/trailing-child-margin-000.html [ Failure ]
 crbug.com/829028 external/wpt/css/css-break/trailing-child-margin-002.html [ Failure ]
+crbug.com/829028 external/wpt/css/css-multicol/abspos-containing-block-outside-spanner.html [ Failure ]
 crbug.com/967329 external/wpt/css/css-multicol/columnfill-auto-max-height-001.html [ Failure ]
 crbug.com/967329 external/wpt/css/css-multicol/columnfill-auto-max-height-002.html [ Failure ]
 crbug.com/829028 external/wpt/css/css-multicol/balance-break-avoidance-001.html [ Failure ]
@@ -3286,8 +3295,6 @@
 # [composite-bgcolor-animation]
 crbug.com/1148369 virtual/composite-bgcolor-animation/external/wpt/css/css-backgrounds/border-bottom-left-radius-010.xht [ Failure ]
 crbug.com/1148369 virtual/composite-bgcolor-animation/external/wpt/css/css-backgrounds/border-bottom-right-radius-010.xht [ Failure ]
-crbug.com/1148369 virtual/composite-bgcolor-animation/external/wpt/css/css-backgrounds/border-radius-clip-001.html [ Failure ]
-crbug.com/1148369 virtual/composite-bgcolor-animation/external/wpt/css/css-backgrounds/border-radius-clip-002.htm [ Failure ]
 crbug.com/1148369 virtual/composite-bgcolor-animation/external/wpt/css/css-backgrounds/border-top-left-radius-010.xht [ Failure ]
 crbug.com/1148369 virtual/composite-bgcolor-animation/external/wpt/css/css-backgrounds/border-top-right-radius-010.xht [ Failure ]
 
diff --git a/third_party/blink/web_tests/external/WPT_BASE_MANIFEST_8.json b/third_party/blink/web_tests/external/WPT_BASE_MANIFEST_8.json
index e9ed2cd..7e86344 100644
--- a/third_party/blink/web_tests/external/WPT_BASE_MANIFEST_8.json
+++ b/third_party/blink/web_tests/external/WPT_BASE_MANIFEST_8.json
@@ -45940,7 +45940,7 @@
        ]
       ],
       "attachment-local-clipping-color-5.html": [
-       "7b27a040d53cb44f8034e086bcf250f916d50b5b",
+       "136b704bd699934a0dc206c3847546ee9185a793",
        [
         null,
         [
@@ -45949,7 +45949,23 @@
           "=="
          ]
         ],
-        {}
+        {
+         "fuzzy": [
+          [
+           null,
+           [
+            [
+             0,
+             10
+            ],
+            [
+             0,
+             160
+            ]
+           ]
+          ]
+         ]
+        }
        ]
       ],
       "attachment-local-clipping-color-6.html": [
@@ -46018,7 +46034,7 @@
        ]
       ],
       "attachment-local-clipping-image-5.html": [
-       "376c9cd4c0f4dd2d7e1274feb82029ae47d3d0c6",
+       "ddd02dcfaefdd805188b1b9682f2070d6f81a976",
        [
         null,
         [
@@ -46027,7 +46043,23 @@
           "=="
          ]
         ],
-        {}
+        {
+         "fuzzy": [
+          [
+           null,
+           [
+            [
+             0,
+             10
+            ],
+            [
+             0,
+             160
+            ]
+           ]
+          ]
+         ]
+        }
        ]
       ],
       "attachment-local-clipping-image-6.html": [
@@ -50631,7 +50663,7 @@
       ]
      ],
      "border-image-slice-005.htm": [
-      "1a09732b6dc96ce4c0d5a47b03f7de1fea1c3d45",
+      "e85c1a141d64e87e868ece80c3f0a35c87c97ae5",
       [
        null,
        [
@@ -50640,11 +50672,27 @@
          "=="
         ]
        ],
-       {}
+       {
+        "fuzzy": [
+         [
+          null,
+          [
+           [
+            0,
+            35
+           ],
+           [
+            0,
+            1250
+           ]
+          ]
+         ]
+        ]
+       }
       ]
      ],
      "border-image-slice-007.htm": [
-      "e852867b10ea39c74f159b272ddad3cabb7f3f7c",
+      "0243b8e22e631b6b85262106f0d5e762306eb925",
       [
        null,
        [
@@ -50653,7 +50701,23 @@
          "=="
         ]
        ],
-       {}
+       {
+        "fuzzy": [
+         [
+          null,
+          [
+           [
+            0,
+            35
+           ],
+           [
+            0,
+            1250
+           ]
+          ]
+         ]
+        ]
+       }
       ]
      ],
      "border-image-slice-percentage.html": [
@@ -50891,7 +50955,7 @@
       ]
      ],
      "border-radius-clip-001.html": [
-      "585b62677f4c439deb077a5ab4aba96559366c72",
+      "008ca7367f20b51c55460f8cffa6f85be83d4988",
       [
        null,
        [
@@ -50900,11 +50964,27 @@
          "=="
         ]
        ],
-       {}
+       {
+        "fuzzy": [
+         [
+          null,
+          [
+           [
+            0,
+            1
+           ],
+           [
+            0,
+            1000
+           ]
+          ]
+         ]
+        ]
+       }
       ]
      ],
      "border-radius-clip-002.htm": [
-      "e81871ee50c4498c3ed3a63672725e2e395b5281",
+      "759bd5ce4836899512fe8b435a18bd1aad78cfc2",
       [
        null,
        [
@@ -50913,7 +50993,23 @@
          "=="
         ]
        ],
-       {}
+       {
+        "fuzzy": [
+         [
+          null,
+          [
+           [
+            0,
+            70
+           ],
+           [
+            0,
+            50
+           ]
+          ]
+         ]
+        ]
+       }
       ]
      ],
      "border-radius-clipping-002.html": [
@@ -52949,6 +53045,136 @@
        ],
        {}
       ]
+     ],
+     "widows-orphans-008.html": [
+      "8726e35a7035b834b0676c09dd7d24dd8cecbca8",
+      [
+       null,
+       [
+        [
+         "/css/css-break/reference/widows-orphans-008-ref.html",
+         "=="
+        ]
+       ],
+       {}
+      ]
+     ],
+     "widows-orphans-009.html": [
+      "2c1fc1b888d55e5e106c7f85e1d9d8902e25dc51",
+      [
+       null,
+       [
+        [
+         "/css/css-break/reference/widows-orphans-009-ref.html",
+         "=="
+        ]
+       ],
+       {}
+      ]
+     ],
+     "widows-orphans-010.html": [
+      "96de985527c6003e6598c632d38f0ec2828e54a0",
+      [
+       null,
+       [
+        [
+         "/css/css-break/reference/widows-orphans-010-ref.html",
+         "=="
+        ]
+       ],
+       {}
+      ]
+     ],
+     "widows-orphans-011.html": [
+      "489e2684309edce4eff193fa2668ae5032418409",
+      [
+       null,
+       [
+        [
+         "/css/css-break/reference/widows-orphans-011-ref.html",
+         "=="
+        ]
+       ],
+       {}
+      ]
+     ],
+     "widows-orphans-012.html": [
+      "d209cde44a1211bd797d1701e079646755bba67b",
+      [
+       null,
+       [
+        [
+         "/css/css-break/reference/widows-orphans-012-ref.html",
+         "=="
+        ]
+       ],
+       {}
+      ]
+     ],
+     "widows-orphans-013.html": [
+      "68e0d4193065d1fa024beaa710660952038b2c8f",
+      [
+       null,
+       [
+        [
+         "/css/css-break/reference/widows-orphans-013-ref.html",
+         "=="
+        ]
+       ],
+       {}
+      ]
+     ],
+     "widows-orphans-014.html": [
+      "87a9b877a171dc3230581d7433acf457d313b175",
+      [
+       null,
+       [
+        [
+         "/css/css-break/reference/widows-orphans-014-ref.html",
+         "=="
+        ]
+       ],
+       {}
+      ]
+     ],
+     "widows-orphans-015.html": [
+      "269279f074a4d5b766c13d5f433cb134c7b8b02d",
+      [
+       null,
+       [
+        [
+         "/css/css-break/reference/widows-orphans-016-ref.html",
+         "=="
+        ]
+       ],
+       {}
+      ]
+     ],
+     "widows-orphans-016.html": [
+      "4499a57a0b57d7e1702f73a4f15236bded2224a0",
+      [
+       null,
+       [
+        [
+         "/css/css-break/reference/widows-orphans-016-ref.html",
+         "=="
+        ]
+       ],
+       {}
+      ]
+     ],
+     "widows-orphans-017.html": [
+      "bbdbbbbb8bb5912a00c3746a35fe5b0a99eda3c3",
+      [
+       null,
+       [
+        [
+         "/css/css-break/reference/widows-orphans-017-ref.html",
+         "=="
+        ]
+       ],
+       {}
+      ]
      ]
     },
     "css-cascade": {
@@ -76583,7 +76809,7 @@
      ],
      "image-orientation": {
       "image-orientation-background-image.html": [
-       "d294b669e35d36f834c7393202350a3d9cee3f2f",
+       "866e94596020286cf67f2083bc6dc64258af3506",
        [
         null,
         [
@@ -76598,12 +76824,12 @@
            null,
            [
             [
-             2,
-             2
+             0,
+             3
             ],
             [
-             40,
-             40
+             0,
+             50
             ]
            ]
           ]
@@ -76612,7 +76838,7 @@
        ]
       ],
       "image-orientation-background-position.html": [
-       "cf4fcd4a301c2025b964a42065a3646dc6d4deaa",
+       "d90035728b8d62422e504b75420f7550733d8f1a",
        [
         null,
         [
@@ -76627,12 +76853,12 @@
            null,
            [
             [
-             10,
-             10
+             0,
+             5
             ],
             [
-             100,
-             100
+             0,
+             50
             ]
            ]
           ]
@@ -76712,7 +76938,7 @@
        ]
       ],
       "image-orientation-default.html": [
-       "8a16ff7af49cfdf64b365013c9700266991b46c0",
+       "7487e40db76e9fb8f12f1e48f3e838581ac484f8",
        [
         null,
         [
@@ -76727,12 +76953,12 @@
            null,
            [
             [
-             10,
-             10
+             0,
+             5
             ],
             [
-             100,
-             100
+             0,
+             200
             ]
            ]
           ]
@@ -76741,7 +76967,7 @@
        ]
       ],
       "image-orientation-from-image-composited-dynamic1.html": [
-       "69043eee850d467344477e0be3294df9f846e707",
+       "29355518fdef34a1579592bf4b3b70967ee74f1c",
        [
         null,
         [
@@ -76756,12 +76982,12 @@
            null,
            [
             [
-             10,
-             10
+             0,
+             5
             ],
             [
-             100,
-             100
+             0,
+             200
             ]
            ]
           ]
@@ -76770,7 +76996,7 @@
        ]
       ],
       "image-orientation-from-image-composited-dynamic2.html": [
-       "b23ef385fba290307955d93adeddf4f831f0d240",
+       "053919d2602c7c4d55919bf35266275c22e68216",
        [
         null,
         [
@@ -76785,11 +77011,11 @@
            null,
            [
             [
-             10,
-             10
+             0,
+             5
             ],
             [
-             100,
+             0,
              100
             ]
            ]
@@ -76799,7 +77025,7 @@
        ]
       ],
       "image-orientation-from-image-composited.html": [
-       "7caa91d56078b7b33d656928dc636a68c0b3d378",
+       "2db88810bca9758013e994bfdcb1f878824565f7",
        [
         null,
         [
@@ -76814,12 +77040,12 @@
            null,
            [
             [
-             10,
-             10
+             0,
+             5
             ],
             [
-             100,
-             100
+             0,
+             200
             ]
            ]
           ]
@@ -76828,7 +77054,7 @@
        ]
       ],
       "image-orientation-from-image-content-images.html": [
-       "5b89216d51810b56866a5bd7c9fc66eb5c346ed4",
+       "a5be8c2277c70ed9bdda3dec497adb63af350798",
        [
         null,
         [
@@ -76843,12 +77069,12 @@
            null,
            [
             [
-             10,
-             10
+             0,
+             5
             ],
             [
-             100,
-             100
+             0,
+             250
             ]
            ]
           ]
@@ -76857,7 +77083,7 @@
        ]
       ],
       "image-orientation-from-image-dynamic1.html": [
-       "d1617a6408e0773939a2bd91ca09dedde9b3353f",
+       "d5e00f27cf3597266373b6d8858a7c106760fa0c",
        [
         null,
         [
@@ -76872,12 +77098,12 @@
            null,
            [
             [
-             10,
-             10
+             0,
+             5
             ],
             [
-             100,
-             100
+             0,
+             200
             ]
            ]
           ]
@@ -76886,7 +77112,7 @@
        ]
       ],
       "image-orientation-from-image-dynamic2.html": [
-       "5a37a96083c6b224d4e52212dee8da173b1d0ba1",
+       "d70c5f6b3c028e62d096e106b6656695d6545eba",
        [
         null,
         [
@@ -76901,11 +77127,11 @@
            null,
            [
             [
-             10,
-             10
+             0,
+             5
             ],
             [
-             100,
+             0,
              100
             ]
            ]
@@ -76915,7 +77141,7 @@
        ]
       ],
       "image-orientation-from-image-embedded-content.html": [
-       "d1539358f541e06ed65799eb6c2cef2fe93978d0",
+       "a07db17a5de801565578e4981d57c18f4c2f4a80",
        [
         null,
         [
@@ -76930,12 +77156,12 @@
            null,
            [
             [
-             10,
-             10
+             0,
+             5
             ],
             [
-             100,
-             100
+             0,
+             200
             ]
            ]
           ]
@@ -76944,7 +77170,7 @@
        ]
       ],
       "image-orientation-from-image.html": [
-       "9e27bd7905123601f56ff65c64746289432ac9a5",
+       "14b929c089504b9e2bb6b5f52725bd3e80019dba",
        [
         null,
         [
@@ -76959,12 +77185,12 @@
            null,
            [
             [
-             10,
-             10
+             0,
+             5
             ],
             [
-             100,
-             100
+             0,
+             200
             ]
            ]
           ]
@@ -76986,7 +77212,7 @@
        ]
       ],
       "image-orientation-list-style-image.html": [
-       "926b3ab9ff02ba530cc06f5bd64b94e6d1e238ff",
+       "ac735626dbd1ec8a0743cf480bddc40d85e93149",
        [
         null,
         [
@@ -77001,12 +77227,12 @@
            null,
            [
             [
-             2,
-             2
+             0,
+             3
             ],
             [
-             40,
-             40
+             0,
+             50
             ]
            ]
           ]
@@ -77044,7 +77270,7 @@
        ]
       ],
       "image-orientation-none-content-images.html": [
-       "da5b6704143b9bec7e110beaed26b90ded1f43df",
+       "ed1657505ccdd05140262d1b7b22be8e4087be52",
        [
         null,
         [
@@ -77059,12 +77285,12 @@
            null,
            [
             [
-             10,
-             10
+             0,
+             5
             ],
             [
-             100,
-             100
+             0,
+             150
             ]
            ]
           ]
@@ -77160,7 +77386,7 @@
        ]
       ],
       "image-orientation-none-image-document.html": [
-       "d333b5f4f578a17915c234d905a4978729d55c8e",
+       "672ed58e6e0d956bd5363aed6c4830f3c99b4348",
        [
         null,
         [
@@ -77175,12 +77401,12 @@
            null,
            [
             [
-             10,
-             10
+             0,
+             5
             ],
             [
-             100,
-             100
+             0,
+             200
             ]
            ]
           ]
@@ -77189,7 +77415,7 @@
        ]
       ],
       "image-orientation-none.html": [
-       "c903cee741f7ae371dec2ae22f42d2b8752847ab",
+       "dfdfa011aefcf1f2df6999006416b329cb4669cf",
        [
         null,
         [
@@ -77204,11 +77430,11 @@
            null,
            [
             [
-             10,
-             10
+             0,
+             5
             ],
             [
-             100,
+             0,
              100
             ]
            ]
@@ -77247,7 +77473,7 @@
        ]
       ],
       "svg-image-orientation-none.html": [
-       "a89de9df7de1db0b9fd8cecd2c0e844e96d1d256",
+       "f585cdb76bf8b30d5d34132dec1f8992c24122f1",
        [
         null,
         [
@@ -77262,11 +77488,11 @@
            null,
            [
             [
-             10,
-             10
+             0,
+             5
             ],
             [
-             100,
+             0,
              100
             ]
            ]
@@ -77276,7 +77502,7 @@
        ]
       ],
       "svg-image-orientation.html": [
-       "9a411ae37b1a64a6d2eab38e8d547b97a63d2cea",
+       "758e900e91cd4b7659d741212f0ea04f3d0310fe",
        [
         null,
         [
@@ -77291,12 +77517,12 @@
            null,
            [
             [
-             10,
-             10
+             0,
+             5
             ],
             [
-             100,
-             100
+             0,
+             200
             ]
            ]
           ]
@@ -114745,6 +114971,19 @@
        {}
       ]
      ],
+     "text-decoration-thickness-single.html": [
+      "b62a4280407933f1b565ab6876745fc441778f07",
+      [
+       null,
+       [
+        [
+         "/css/css-text-decor/reference/text-decoration-thickness-single-notref.html",
+         "!="
+        ]
+       ],
+       {}
+      ]
+     ],
      "text-decoration-thickness-underline-001.html": [
       "020f849f4cf2d1ffcee7ba494384fc8f5425b876",
       [
@@ -118215,7 +118454,7 @@
       ]
      ],
      "perspective-transforms-equivalence.html": [
-      "2f2ae21f87fdfc392e5ec1373875e65ee58c3c4f",
+      "818555f611665b776cd0014f2b005adf69a28f94",
       [
        null,
        [
@@ -118230,11 +118469,11 @@
           null,
           [
            [
-            10,
+            0,
             10
            ],
            [
-            10,
+            0,
             10
            ]
           ]
@@ -155105,7 +155344,7 @@
           ]
          ],
          "drawImage-with-src-rect.tentative.html": [
-          "d9d5646aa7460a82c522f8d2aff420310295f761",
+          "d889e39302584127b9af9a18b8a256120f6bf52e",
           [
            null,
            [
@@ -155120,12 +155359,12 @@
               null,
               [
                [
-                30,
-                30
+                0,
+                3
                ],
                [
-                100,
-                100
+                0,
+                200
                ]
               ]
              ]
@@ -157644,7 +157883,7 @@
         ]
        ],
        "fieldset-containing-block.html": [
-        "e7529946a49c0da964dae79831047e4a0507f119",
+        "cefb3584eaea3f93896b5f901d3cbaa3d8727d6a",
         [
          null,
          [
@@ -169641,6 +169880,10 @@
       ]
      }
     },
+    "DIR_METADATA": [
+     "b3f5dcfb05d0c2c0add9491c0b6c602cd9255223",
+     []
+    ],
     "FileReader": {
      "support": {
       "file_test1.txt": [
@@ -169654,7 +169897,7 @@
      []
     ],
     "OWNERS": [
-     "20ee9f14ce7506288077ae626ce2e3826860b68d",
+     "087586107f86d394c1d144322ca8be78fe5ecdaa",
      []
     ],
     "file": {
@@ -169769,12 +170012,16 @@
     }
    },
    "IndexedDB": {
+    "DIR_METADATA": [
+     "d9cbdfb7b1b1b04c1cf8eabc9acae4b017e74df0",
+     []
+    ],
     "META.yml": [
      "89cbe2be26d9ae56d5fb0a3b5189e9c06b12eb35",
      []
     ],
     "OWNERS": [
-     "cd315c447a62b0c7b35662b6225fdad193b2ee4a",
+     "82c8165c34f3df1366bf49099aa5d75b79c59e7e",
      []
     ],
     "README.md": [
@@ -169827,12 +170074,16 @@
     []
    ],
    "WebCryptoAPI": {
+    "DIR_METADATA": [
+     "86d95920593911536b077b7effe3dc1dea19ca37",
+     []
+    ],
     "META.yml": [
      "8f27e484996c51eb9ebbbd96902fa1f885af7be0",
      []
     ],
     "OWNERS": [
-     "5d5ce50a4a3511d08e98d7c8a4e83d7a1f517129",
+     "81033345d3849abd37e17c0848e9dfa71f1af15d",
      []
     ],
     "README.md": [
@@ -170869,12 +171120,16 @@
     ]
    },
    "background-fetch": {
+    "DIR_METADATA": [
+     "dddbff65a4747c1f6b4024fb05791a61234fc27d",
+     []
+    ],
     "META.yml": [
      "8ce9f8faa2acdfe7a2ef8dfc6c1ad8cbdf01c72d",
      []
     ],
     "OWNERS": [
-     "7c414b254be90f5e6793a2b9fcbe2f57332a4065",
+     "b0f50d1bbb4136ae68db01e2f5e32836371a7077",
      []
     ],
     "fetch.https.window-expected.txt": [
@@ -170925,12 +171180,16 @@
     ]
    },
    "battery-status": {
+    "DIR_METADATA": [
+     "44e28c494d3294b200e84f5e11e86c5cf4ad2129",
+     []
+    ],
     "META.yml": [
      "a069984ddb226b6f07cd5f1408e159634dfec7f4",
      []
     ],
     "OWNERS": [
-     "f34b5e22642d3034ed19768c2405a24227fe9cb0",
+     "1fd89e0e2ebb6aebe646c96e7f3b6462d3aa2f16",
      []
     ],
     "battery-allowed-by-feature-policy-attribute-redirect-on-load.https.sub-expected.txt": [
@@ -171009,12 +171268,16 @@
     }
    },
    "bluetooth": {
+    "DIR_METADATA": [
+     "488eb9852735d277ba88045aafc43d39a5ec2605",
+     []
+    ],
     "META.yml": [
      "607edb6365b4cde7dc2c292d31c9c4175c466ea8",
      []
     ],
     "OWNERS": [
-     "82904a3875f7b4332781170fc2c6149e2aaf1bd3",
+     "837ee391b5d8e935e6405c33d2c2343a926c5eb2",
      []
     ],
     "README.md": [
@@ -171177,12 +171440,16 @@
     }
    },
    "clear-site-data": {
+    "DIR_METADATA": [
+     "56cf7f3f0e7b4dcce8d952ca4af9758b9ddbdca0",
+     []
+    ],
     "META.yml": [
      "65ca96dbb9d774e97cc3a60f6b6dde952104893b",
      []
     ],
     "OWNERS": [
-     "ccdb52ec40db78eb41ef9b2b9ac7c59e2ea6d57d",
+     "43d9342cfdaa131674e4fe7ea96bea4dc25f4e8f",
      []
     ],
     "support": {
@@ -171221,12 +171488,12 @@
     }
    },
    "client-hints": {
-    "META.yml": [
-     "e3a5edae1c7f9541c6309181f274ff2a4c4e2f80",
+    "DIR_METADATA": [
+     "16964bc593ac2c8bc58f519211ef6706617bb889",
      []
     ],
-    "OWNERS": [
-     "5cb08fb5f7fbd36252d5bdb7949b9b363e8098c3",
+    "META.yml": [
+     "e3a5edae1c7f9541c6309181f274ff2a4c4e2f80",
      []
     ],
     "accept-ch-answers.sub.https.html.headers": [
@@ -171501,12 +171768,16 @@
     }
    },
    "clipboard-apis": {
+    "DIR_METADATA": [
+     "7ec015084e095f0f97f0f7915e68a5c8e1992a0e",
+     []
+    ],
     "META.yml": [
      "ecbac54806cb0d3a915c551f0a684fdc84acdd5e",
      []
     ],
     "OWNERS": [
-     "f45bd507d9b0a107e33e55c8edf312cb08f42a0a",
+     "921409a192ea2941c4410db4570f048502b8e897",
      []
     ],
     "async-idlharness.https-expected.txt": [
@@ -171925,12 +172196,16 @@
     ]
    },
    "compat": {
+    "DIR_METADATA": [
+     "74bdc06fa8bf1102954b19d29110823896ff80a1",
+     []
+    ],
     "META.yml": [
      "f2aec22ba3293202686b7dc8832911f701bb23c0",
      []
     ],
     "OWNERS": [
-     "a3ba8e4b671f25bbde2256bb3aeee454f099b975",
+     "212e449935d26b6f59f486c69dd23f6cf5aa48af",
      []
     ],
     "green-ref.html": [
@@ -172053,8 +172328,12 @@
     ]
    },
    "contacts": {
+    "DIR_METADATA": [
+     "3e590e371f8f7b75a528616a0d55fc448be16756",
+     []
+    ],
     "OWNERS": [
-     "bb162e9181809ae7f97a15c1427d0836db644222",
+     "517774d1ac46d7aa57db2f3d8e7b8187accfd6a8",
      []
     ],
     "resources": {
@@ -172121,12 +172400,16 @@
     ]
    },
    "content-security-policy": {
+    "DIR_METADATA": [
+     "420f43612756b83dfea88467ae492c9cffe2a651",
+     []
+    ],
     "META.yml": [
      "ee8f1ea7e07b94711ddc65e43a6c32dbc5983612",
      []
     ],
     "OWNERS": [
-     "945116bc79bbab75e79f5cd25f37c417b113cdaf",
+     "3b19cb56badfa87d807ce450a3da383fa3911da0",
      []
     ],
     "README.css": [
@@ -173353,12 +173636,16 @@
     ]
    },
    "cookie-store": {
+    "DIR_METADATA": [
+     "47fbe18081145a4be38e5cd10188257a5806e598",
+     []
+    ],
     "META.yml": [
      "46da8a9fb654cc685e1ba928d2b7adef9c20d4c8",
      []
     ],
     "OWNERS": [
-     "22c700cdd32bdefe2290aeb29a60efc6235a8b7e",
+     "acea5494f78d924c32b8f9bf058b773bb9f7e0c4",
      []
     ],
     "README.md": [
@@ -173397,12 +173684,16 @@
     ]
    },
    "cookies": {
+    "DIR_METADATA": [
+     "4f2c80c9654b89c68b448461a15eec9a977373d2",
+     []
+    ],
     "META.yml": [
      "d0743949b6a122d8bd0adf7b1ed0181f0c51429d",
      []
     ],
     "OWNERS": [
-     "4058c0c58ef69083de4c2be1fedbae51a4454d21",
+     "3f8456354bd08a3cb87e767ca0eb508603f45f1b",
      []
     ],
     "README.md": [
@@ -175171,12 +175462,16 @@
     }
    },
    "cors": {
+    "DIR_METADATA": [
+     "2e34b18b026a84b2b03fdd46531ffb09bf58c721",
+     []
+    ],
     "META.yml": [
      "08dc73704f93a90be061f0d5e01b95938492cc05",
      []
     ],
     "OWNERS": [
-     "6c7157d04d1b103e8f4927324406adce3cbaee0b",
+     "8b137891791fe96927ad78e64b0aad7bded08bdc",
      []
     ],
     "README.md": [
@@ -175360,12 +175655,16 @@
       "538fddd881a80353276e4b67eb9e43b1ed86c9a5",
       []
      ],
+     "DIR_METADATA": [
+      "85377a77b206fbf1b2892a929462cba04ab6e64a",
+      []
+     ],
      "META.yml": [
       "e9bc44dc8fdda34cc1dd23a1600c77adeacfacfb",
       []
      ],
      "OWNERS": [
-      "ac6a3b0e3133fcf94b669dfc6f658c919badac9c",
+      "3cf6b7950a4a7dcf2b9802b01da45bb77830c076",
       []
      ],
      "abspos": {
@@ -179937,8 +180236,12 @@
       ]
      }
     },
+    "DIR_METADATA": [
+     "ea45d267725ae7714f0eefa5345739a68a8816f7",
+     []
+    ],
     "OWNERS": [
-     "f025ce3665e973762b4c896b2ae4dc4ae00f5696",
+     "8b137891791fe96927ad78e64b0aad7bded08bdc",
      []
     ],
     "README.md": [
@@ -180252,12 +180555,16 @@
      ]
     },
     "css-align": {
+     "DIR_METADATA": [
+      "85377a77b206fbf1b2892a929462cba04ab6e64a",
+      []
+     ],
      "META.yml": [
       "bd26585d9e639e3133a650c26d3f3cb93579e4ae",
       []
      ],
      "OWNERS": [
-      "01fa028a7d933a5a7480efb28cf565e7b7de845c",
+      "65e3dc2b4a47bea2c424961aea336285aedb7a2d",
       []
      ],
      "baseline-rules": {
@@ -180542,12 +180849,16 @@
      ]
     },
     "css-backgrounds": {
+     "DIR_METADATA": [
+      "85377a77b206fbf1b2892a929462cba04ab6e64a",
+      []
+     ],
      "META.yml": [
       "d673be5f4f29bf82619aba6f40ed7e287e902582",
       []
      ],
      "OWNERS": [
-      "9b2e5be0a19c48f73b57fe0ad8bbeea81238a1d1",
+      "8b137891791fe96927ad78e64b0aad7bded08bdc",
       []
      ],
      "animations": {
@@ -181976,12 +182287,16 @@
      ]
     },
     "css-break": {
+     "DIR_METADATA": [
+      "85377a77b206fbf1b2892a929462cba04ab6e64a",
+      []
+     ],
      "META.yml": [
       "5c3363562ab196a5c5cdb6e72b471b52e0cc8375",
       []
      ],
      "OWNERS": [
-      "198e62f8c7d4e020e65dad6ecb7937204aaa8912",
+      "b28f7fbbdb4bc0d5c2e152d92a33a309de6887a8",
       []
      ],
      "block-001-wm-vlr-ref.html": [
@@ -182134,6 +182449,42 @@
       "widows-orphans-001-ref.html": [
        "06108ac800c19c68841f2a0e8867fb05e868c1ab",
        []
+      ],
+      "widows-orphans-008-ref.html": [
+       "431d37a4b3c3f5d8be0398215d7e35de6333ae3a",
+       []
+      ],
+      "widows-orphans-009-ref.html": [
+       "77e8bd7b46a9007b43f6303e90009354a5baeb92",
+       []
+      ],
+      "widows-orphans-010-ref.html": [
+       "431d37a4b3c3f5d8be0398215d7e35de6333ae3a",
+       []
+      ],
+      "widows-orphans-011-ref.html": [
+       "8977e4729c76b4dd683c3e122607c077a032b679",
+       []
+      ],
+      "widows-orphans-012-ref.html": [
+       "a03a7993d74b4c86030952a4857784a4a49021eb",
+       []
+      ],
+      "widows-orphans-013-ref.html": [
+       "7872ac730bfca4c41f83920c0ead2859f3f68e87",
+       []
+      ],
+      "widows-orphans-014-ref.html": [
+       "795350a02850b8bf3b465afa0d082f7dd5e1c746",
+       []
+      ],
+      "widows-orphans-016-ref.html": [
+       "77e8bd7b46a9007b43f6303e90009354a5baeb92",
+       []
+      ],
+      "widows-orphans-017-ref.html": [
+       "0a65a50c29fb618cfa1f72131b2e796aa74ae2ce",
+       []
       ]
      },
      "relpos-inline-ref.html": [
@@ -182142,12 +182493,16 @@
      ]
     },
     "css-cascade": {
+     "DIR_METADATA": [
+      "a1cb39cdf6ab67bedd521ef32a4454c4993cadeb",
+      []
+     ],
      "META.yml": [
       "96467729fe91cef54b0bf5cc82d83e9f2a5c01ed",
       []
      ],
      "OWNERS": [
-      "73cfd0e3ce53574dad4632879f04d838e708c462",
+      "54387d37c800d276f31f3575f6d7b787f18a0166",
       []
      ],
      "all-prop-001-ref.html": [
@@ -182188,6 +182543,10 @@
      }
     },
     "css-color": {
+     "DIR_METADATA": [
+      "a1cb39cdf6ab67bedd521ef32a4454c4993cadeb",
+      []
+     ],
      "LICENSE": [
       "d47f50cca8a2d9dc40dee384ae256f8aecf44e0a",
       []
@@ -182197,7 +182556,7 @@
       []
      ],
      "OWNERS": [
-      "e282c4fb98224c0827f24ed9ecdfe95abb1ffbcd",
+      "8b137891791fe96927ad78e64b0aad7bded08bdc",
       []
      ],
      "blacktext-ref.html": [
@@ -182518,12 +182877,16 @@
      }
     },
     "css-conditional": {
+     "DIR_METADATA": [
+      "a1cb39cdf6ab67bedd521ef32a4454c4993cadeb",
+      []
+     ],
      "META.yml": [
       "0b9cc5ac3d69363f4ad472166d59f7779a7a125c",
       []
      ],
      "OWNERS": [
-      "73cfd0e3ce53574dad4632879f04d838e708c462",
+      "54387d37c800d276f31f3575f6d7b787f18a0166",
       []
      ],
      "at-supports-001-ref.html": [
@@ -182552,12 +182915,16 @@
      }
     },
     "css-contain": {
+     "DIR_METADATA": [
+      "85377a77b206fbf1b2892a929462cba04ab6e64a",
+      []
+     ],
      "META.yml": [
       "259c00b2a587c9aa2d07de97fb547b32f9772b92",
       []
      ],
      "OWNERS": [
-      "5f43f9116bc8073cfadd3bf840519a3ad96c296f",
+      "5e03d9bce08ec1c2c4d3a23b993e8f428c9e68db",
       []
      ],
      "contain-size-replaced-003-ref.html": [
@@ -202585,6 +202952,10 @@
        "394811468fea2d4e7daaffad19742cd8e206a8bd",
        []
       ],
+      "text-decoration-thickness-single-notref.html": [
+       "4a86eb189fa94cd3ac265277bbbe0926105b19e3",
+       []
+      ],
       "text-decoration-thickness-vertical-green-rect-ref.html": [
        "8955e8469aa6cd3d63a34e9376b3f6c135f01e85",
        []
@@ -208810,8 +209181,8 @@
       "ead818bf585910a1a6c65f90f30231393a6fc5f5",
       []
      ],
-     "cssstyledeclaration-setter-logical-expected.txt": [
-      "34394c9c2d9879db31a4abe34f828c5502e9cda6",
+     "flex-serialization-expected.txt": [
+      "895f6b93d7201ad1bb1a9fe27370d6ebf8d4dbf6",
       []
      ],
      "getComputedStyle-detached-subtree-expected.txt": [
@@ -216233,30 +216604,6 @@
       []
      ]
     },
-    "feature-policy-for-sandbox": {
-     "resources": {
-      "helper.js": [
-       "4c553525300b998df74b9e5b273fa0a788dde8e4",
-       []
-      ],
-      "opened_window.html": [
-       "53ffbac5ad77bc0706a81e7f08c207d37205bc34",
-       []
-      ],
-      "opened_window.js": [
-       "d69c75cca00b9789511b2a94db054b89e5b69cb8",
-       []
-      ],
-      "window_opener.html": [
-       "8124ab651791930101eca0be6a11427de88d7c9c",
-       []
-      ],
-      "window_opener.js": [
-       "6788c25f575b08f17ad35d4d22bfe642e04e9e63",
-       []
-      ]
-     }
-    },
     "feature-policy-frame-policy-allowed-for-all.https.sub.html.sub.headers": [
      "111121a52fbdc9d3835feaf10206ba78d799f140",
      []
@@ -227497,7 +227844,7 @@
         []
        ],
        "fieldset-containing-block-ref.html": [
-        "ccb755b347cbf926163e7dfaaa37c590942ca6c9",
+        "282c0d4ef12005ff3293401ce00bdc87f2df3a1b",
         []
        ],
        "fieldset-content-rtl-ref.html": [
@@ -234361,12 +234708,16 @@
     }
    },
    "keyboard-map": {
+    "DIR_METADATA": [
+     "06c05e63593ac7ea3be8964e82615d35bd04bd3d",
+     []
+    ],
     "META.yml": [
      "4efb479ffedad13507852cf24de2df036e5e3b06",
      []
     ],
     "OWNERS": [
-     "25f44dc0c06932dd392c81b750d943cd8722a2d4",
+     "5112e6fc639abc34288e5ccb704a1613eaad58c6",
      []
     ],
     "resources": {
@@ -234377,12 +234728,16 @@
     }
    },
    "largest-contentful-paint": {
+    "DIR_METADATA": [
+     "45b72a63be742f08a481cb470863cbaae10e105f",
+     []
+    ],
     "META.yml": [
      "b7e2497681e98960fd00d70ced82aa9e3a48d144",
      []
     ],
     "OWNERS": [
-     "40d288d0460188b4e3938554ad0f58d226aa4b71",
+     "9e3a2546556a896943d73233cb647edca73d9dd4",
      []
     ],
     "resources": {
@@ -234401,12 +234756,16 @@
     }
    },
    "layout-instability": {
+    "DIR_METADATA": [
+     "45b72a63be742f08a481cb470863cbaae10e105f",
+     []
+    ],
     "META.yml": [
      "10c6aa36cecf918928298102d1934c2ff79d01f2",
      []
     ],
     "OWNERS": [
-     "226745ff29bf7bc6abe98b7404b96e41b2ca549d",
+     "c6ee3b62850339103fd67d83e06700a22d7f1b2c",
      []
     ],
     "resources": {
@@ -234465,7 +234824,7 @@
     ]
    },
    "lint.ignore": [
-    "bfbb29657386bcac90635af829752751260248fb",
+    "86c71544396f59526826d259242017ae426c6e7d",
     []
    ],
    "loading": {
@@ -234481,12 +234840,12 @@
     }
    },
    "longtask-timing": {
-    "META.yml": [
-     "91c07f9fd3f3097367f2ad87a2ebb0d98b11d4e2",
+    "DIR_METADATA": [
+     "45b72a63be742f08a481cb470863cbaae10e105f",
      []
     ],
-    "OWNERS": [
-     "f4011d2bf1144bf42ad8d2a194f517d556407835",
+    "META.yml": [
+     "91c07f9fd3f3097367f2ad87a2ebb0d98b11d4e2",
      []
     ],
     "resources": {
@@ -236041,6 +236400,10 @@
     }
    },
    "mediacapture-record": {
+    "DIR_METADATA": [
+     "8528372ac7db65dacfa1c519616e17ce9f284b52",
+     []
+    ],
     "META.yml": [
      "d59e5e30845eaef12bab6419e348a01779313c56",
      []
@@ -236066,7 +236429,7 @@
      []
     ],
     "OWNERS": [
-     "1b523fa56c3385ce987b962b38af6a280d74b7fb",
+     "5c49de21a3b53dfe928d30a36400469d8238bb1d",
      []
     ],
     "idlharness.window-expected.txt": [
@@ -236097,6 +236460,10 @@
     }
    },
    "mediacapture-streams": {
+    "DIR_METADATA": [
+     "563fa6720ba3a89d6ad8add86cd903465fe456f2",
+     []
+    ],
     "GUM-deny.https-expected.txt": [
      "61a12c254bda8a7c0a001a09395f55e1c105fd7d",
      []
@@ -236142,7 +236509,7 @@
      []
     ],
     "OWNERS": [
-     "31acf6290ddaf2e282a7aa6ef5879332d6af00f4",
+     "cc43ec1bbbb855066a4311812296c1cff7bf1d15",
      []
     ],
     "historical.https-expected.txt": [
@@ -236155,12 +236522,16 @@
     ]
    },
    "mediasession": {
+    "DIR_METADATA": [
+     "e1162a794e21053ec3059d039efb7bf0053b9821",
+     []
+    ],
     "META.yml": [
      "bca9602ca31d3702f7055d893f650a682c7fc0a2",
      []
     ],
     "OWNERS": [
-     "27eee8f5957420b0249be577b2e86f13ea4eab73",
+     "2d282460822f7bded98aa47f11366ea975110932",
      []
     ],
     "README.md": [
@@ -236243,12 +236614,16 @@
     }
    },
    "mixed-content": {
+    "DIR_METADATA": [
+     "56cf7f3f0e7b4dcce8d952ca4af9758b9ddbdca0",
+     []
+    ],
     "META.yml": [
      "a2889eb6c7afd8894955c54c73e77e517541b562",
      []
     ],
     "OWNERS": [
-     "43db381528ce362bf4a113e08c93a81131562e87",
+     "3f8456354bd08a3cb87e767ca0eb508603f45f1b",
      []
     ],
     "README.md": [
@@ -236615,8 +236990,12 @@
     ]
    },
    "native-file-system": {
+    "DIR_METADATA": [
+     "12cf0e36d35303a5936a5a1f0fba87083b219262",
+     []
+    ],
     "OWNERS": [
-     "df79a8bc5684bab7f74354aba3b8dabfe943299e",
+     "a6d4f2cbf2081458db85b226b5ab69ff9e6fc474",
      []
     ],
     "README.md": [
@@ -236759,12 +237138,16 @@
     }
    },
    "native-io": {
+    "DIR_METADATA": [
+     "2f2b56ccb61f438153880b2f9a484246d76898f6",
+     []
+    ],
     "META.yml": [
      "22a45c20c9b847433b0f7d9b793d8c1a96f17336",
      []
     ],
     "OWNERS": [
-     "a561eae602effa90f200553187f92c484743f6ff",
+     "2c47ed27a3d907011b7be3ccbb33daf64f5226a6",
      []
     ],
     "README.md": [
@@ -236785,12 +237168,16 @@
     }
    },
    "navigation-timing": {
+    "DIR_METADATA": [
+     "7b838386545fb4c2d33de79eac11df854c6c1ed2",
+     []
+    ],
     "META.yml": [
      "bfb0e0f1f67a9c6aa2e7e921b09e85f8d970b290",
      []
     ],
     "OWNERS": [
-     "6c1180c91b0e23dbf6f68094c6275177f2c72377",
+     "016bca8d23669ac39ddfc7b072a0ee75e4c9d830",
      []
     ],
     "nav2_data_uri.html": [
@@ -236923,12 +237310,16 @@
     }
    },
    "notifications": {
+    "DIR_METADATA": [
+     "1fd09a034b982316610fa1e317da0f609dae0f25",
+     []
+    ],
     "META.yml": [
      "0daa86e6f487e90830b400bf7f2b871700d024b8",
      []
     ],
     "OWNERS": [
-     "6c802f52b5878cabe563749cea227b4f2f6f607a",
+     "cc91a7cb8c6627ed1b7919c7519d342db2f8b3b5",
      []
     ],
     "common.js": [
@@ -236975,12 +237366,16 @@
     ]
    },
    "orientation-event": {
+    "DIR_METADATA": [
+     "fc620d564cf2ffdea9cc43d1cfc0655361356476",
+     []
+    ],
     "META.yml": [
      "88014849d067082afcb56964bc3446ba93350c1b",
      []
     ],
     "OWNERS": [
-     "243df98c09e6bdd29f814acaafa59f05cd293644",
+     "0a092c94bbebc3a2d1358c4add3b4ff41b9ef4cd",
      []
     ],
     "README.md": [
@@ -237457,12 +237852,16 @@
     }
    },
    "page-visibility": {
+    "DIR_METADATA": [
+     "29b023b835b92b92ec7ab7bfce52ecfedd1cf75e",
+     []
+    ],
     "META.yml": [
      "9b9aea8e8b11bf98dd23c8e161e3a7d701da2aba",
      []
     ],
     "OWNERS": [
-     "1755491e76ddffa285aa2659bfeeedb28e3dc060",
+     "7124712de3869cb417579d73d8751445b4704722",
      []
     ],
     "prerender_call-expected.txt": [
@@ -237497,12 +237896,12 @@
     }
    },
    "paint-timing": {
-    "META.yml": [
-     "1892a41ed1cffcc8ba704f28bd59f5aa64c2b46a",
+    "DIR_METADATA": [
+     "45b72a63be742f08a481cb470863cbaae10e105f",
      []
     ],
-    "OWNERS": [
-     "f4011d2bf1144bf42ad8d2a194f517d556407835",
+    "META.yml": [
+     "1892a41ed1cffcc8ba704f28bd59f5aa64c2b46a",
      []
     ],
     "resources": {
@@ -237535,12 +237934,16 @@
     }
    },
    "payment-handler": {
+    "DIR_METADATA": [
+     "53ab283cc24ac9c9f25838e2e6182633a4e8c511",
+     []
+    ],
     "META.yml": [
      "eff7624d054f6fbc6feac2aa106d166587f0b3eb",
      []
     ],
     "OWNERS": [
-     "c13bc11615e041946b6917e72799395c613a4540",
+     "a199929e208e0c4feb7420980713efaae1342916",
      []
     ],
     "app-can-make-payment.js": [
@@ -237663,12 +238066,16 @@
     ]
    },
    "payment-method-basic-card": {
+    "DIR_METADATA": [
+     "53ab283cc24ac9c9f25838e2e6182633a4e8c511",
+     []
+    ],
     "META.yml": [
      "30994b67caf6ba8b0486876333352ba655f5f768",
      []
     ],
     "OWNERS": [
-     "05e1a027a709f805c8c6c49454c415301f367134",
+     "06bc3612594d193addf491ca1abe314dd85294fa",
      []
     ],
     "apply_the_modifiers.html.ini": [
@@ -237689,12 +238096,16 @@
     ]
    },
    "payment-method-id": {
+    "DIR_METADATA": [
+     "53ab283cc24ac9c9f25838e2e6182633a4e8c511",
+     []
+    ],
     "META.yml": [
      "5e9fe05abae6f862301ef85f9905d91eb4e42121",
      []
     ],
     "OWNERS": [
-     "05e1a027a709f805c8c6c49454c415301f367134",
+     "06bc3612594d193addf491ca1abe314dd85294fa",
      []
     ],
     "README.md": [
@@ -237703,12 +238114,16 @@
     ]
    },
    "payment-request": {
+    "DIR_METADATA": [
+     "53ab283cc24ac9c9f25838e2e6182633a4e8c511",
+     []
+    ],
     "META.yml": [
      "2440720138d34d5cc7eaab9a4648f078296330b0",
      []
     ],
     "OWNERS": [
-     "05e1a027a709f805c8c6c49454c415301f367134",
+     "06bc3612594d193addf491ca1abe314dd85294fa",
      []
     ],
     "allowpayment": {
@@ -237877,12 +238292,12 @@
     ]
    },
    "performance-timeline": {
-    "META.yml": [
-     "89fae1db0d9b7afd202737e34754b4e893298d49",
+    "DIR_METADATA": [
+     "45b72a63be742f08a481cb470863cbaae10e105f",
      []
     ],
-    "OWNERS": [
-     "f4011d2bf1144bf42ad8d2a194f517d556407835",
+    "META.yml": [
+     "89fae1db0d9b7afd202737e34754b4e893298d49",
      []
     ],
     "performanceobservers.js": [
@@ -237943,12 +238358,16 @@
     ]
    },
    "permissions-policy": {
+    "DIR_METADATA": [
+     "fcc5bce0c43d4db18763d6ea9c4d5dfd07c32b73",
+     []
+    ],
     "META.yml": [
      "7b2e2cbffe5421c72225dc8625c4309b6b3eff3e",
      []
     ],
     "OWNERS": [
-     "6385d1242762f7c58592c6e359c7f91304a9492f",
+     "7f44d1b6e2ffff87a3e265b9ba62518534468d80",
      []
     ],
     "README.md": [
@@ -238333,12 +238752,12 @@
     }
    },
    "picture-in-picture": {
-    "META.yml": [
-     "b878dd547b8267196db6563b0009035af3d4f52a",
+    "DIR_METADATA": [
+     "85c67b2884d071273534dc2a333a6bec4d150efd",
      []
     ],
-    "OWNERS": [
-     "f7dde29f581bcd11fb8a129a926e2d735a47b1ad",
+    "META.yml": [
+     "b878dd547b8267196db6563b0009035af3d4f52a",
      []
     ],
     "resources": {
@@ -238349,12 +238768,16 @@
     }
    },
    "pointerevents": {
+    "DIR_METADATA": [
+     "4a2c8aa4e0a7aea2acc4c1b62444bb49b4499d3b",
+     []
+    ],
     "META.yml": [
      "1962feaf8af08b003e519fa525271e70451984d5",
      []
     ],
     "OWNERS": [
-     "3a5adbadd4fb5d2b4721b2f8225b8b83c33e03e7",
+     "fc6547a45d14b2b47bb8ce0c33c25bae86114f33",
      []
     ],
     "README.md": [
@@ -238479,22 +238902,30 @@
     }
    },
    "pointerlock": {
+    "DIR_METADATA": [
+     "4a2c8aa4e0a7aea2acc4c1b62444bb49b4499d3b",
+     []
+    ],
     "META.yml": [
      "bb639b4417ef4975e0f5a1649d010f6a7565e87c",
      []
     ],
     "OWNERS": [
-     "46d4a5db116402d7da9f599289c109fa5fa981e1",
+     "9258d114cb426f7eb83fa5835348e44d12296524",
      []
     ]
    },
    "portals": {
+    "DIR_METADATA": [
+     "ccb9644d4c94386f0fde56b02f688941f0f5ab44",
+     []
+    ],
     "META.yml": [
      "2b3241dd18b60e7e5343aa46d31253f12d415cd1",
      []
     ],
     "OWNERS": [
-     "542026e679f586ee56c9def4142af155f67184cf",
+     "471d28687d953495aab2c566174a100d80cd61ed",
      []
     ],
     "README.md": [
@@ -238735,12 +239166,16 @@
     }
    },
    "preload": {
+    "DIR_METADATA": [
+     "f412b2c027d15a6321dc318d79192debdc8a5cd1",
+     []
+    ],
     "META.yml": [
      "fd10e7d15abd6ed0f4e76581b225ca1e9a248c79",
      []
     ],
     "OWNERS": [
-     "39fb049e7802ebd79d9b838013d1555eb2f1c0c2",
+     "d7b1f473416baf9f060e2d3d843f7943df0f25e0",
      []
     ],
     "download-resources-expected.txt": [
@@ -238891,12 +239326,12 @@
     ]
    },
    "presentation-api": {
-    "META.yml": [
-     "beba89062154273b1eabca34f392ccbc1794932c",
+    "DIR_METADATA": [
+     "f66a1b0f439eb29db378c1b71fd9e55ff6c5319a",
      []
     ],
-    "OWNERS": [
-     "f9d59eab37af154e342dfa07e8652b20f90ceb7b",
+    "META.yml": [
+     "beba89062154273b1eabca34f392ccbc1794932c",
      []
     ],
     "README.md": [
@@ -239015,12 +239450,12 @@
     ]
    },
    "quirks": {
-    "META.yml": [
-     "29f19c5c6af481344376795a8b37d474d23be41d",
+    "DIR_METADATA": [
+     "ea45d267725ae7714f0eefa5345739a68a8816f7",
      []
     ],
-    "OWNERS": [
-     "f025ce3665e973762b4c896b2ae4dc4ae00f5696",
+    "META.yml": [
+     "29f19c5c6af481344376795a8b37d474d23be41d",
      []
     ],
     "body-fills-html-quirk-ref.html": [
@@ -239107,12 +239542,16 @@
     }
    },
    "raw-sockets": {
+    "DIR_METADATA": [
+     "b11d1ac567443f3e0da3f7e6fea6eb37193d37f8",
+     []
+    ],
     "META.yml": [
      "d424a0af6ecc77577524a4db9baf706ae4dc943c",
      []
     ],
     "OWNERS": [
-     "66ede7333f1e030273c03c18b7a141fd2abe5c57",
+     "73c81fa31d15b0276bb6c8e59002a8ab94031899",
      []
     ],
     "README.md": [
@@ -239739,12 +240178,16 @@
       []
      ]
     },
+    "DIR_METADATA": [
+     "7e376fcdea2409367b9179fa54a01f5fda061fe6",
+     []
+    ],
     "META.yml": [
      "8ead043aad0a6aa79dad5c2c9e9b757df5869265",
      []
     ],
     "OWNERS": [
-     "48eafc68285b734bc7cc997a4bf6088f6bc8b724",
+     "bd355ddd9ae215a94ed5b4b3f2524d666e465e4e",
      []
     ],
     "README.md": [
@@ -240517,12 +240960,16 @@
     ]
    },
    "remote-playback": {
+    "DIR_METADATA": [
+     "d1f974412428f8c92d8f56744f4ef9a4a4ccae6c",
+     []
+    ],
     "META.yml": [
      "c23f3bd9b8f812b9bc554a2fa35764c300d1c896",
      []
     ],
     "OWNERS": [
-     "7d9e21933c839e87d361c2cc2b02b2122dda1ae9",
+     "2d282460822f7bded98aa47f11366ea975110932",
      []
     ],
     "README.md": [
@@ -240567,12 +241014,16 @@
     }
    },
    "requestidlecallback": {
+    "DIR_METADATA": [
+     "bc45d2800c534b04efcbde3b144871dcd242d9c8",
+     []
+    ],
     "META.yml": [
      "9c829d3c8885bb9b594e7096a878166e07f3e278",
      []
     ],
     "OWNERS": [
-     "02e9ca24a96b0f82df265c5c96f75c05352a7a68",
+     "906a5ce64186024a07fd71b98141230baba5e5fa",
      []
     ],
     "resources": {
@@ -240611,12 +241062,16 @@
     }
    },
    "resource-timing": {
+    "DIR_METADATA": [
+     "b242241de404b1da3ab954203860f2db0095e25d",
+     []
+    ],
     "META.yml": [
      "662c42cb664219dee159fd248e1446c041a4bc93",
      []
     ],
     "OWNERS": [
-     "f0c22a15c6adb4bc415244f0dbb05fe5bff32e56",
+     "db77910a1179d4fa931b6c311a33f1b1da297a9c",
      []
     ],
     "SyntheticResponse.py": [
@@ -241143,12 +241598,16 @@
     }
    },
    "sanitizer-api": {
+    "DIR_METADATA": [
+     "7ddd8e4c5a06488ee277511f3cc53fdd3d8baca0",
+     []
+    ],
     "META.yml": [
      "7ac32665e19a0b6c48db80a2c063f3b3e37600ab",
      []
     ],
     "OWNERS": [
-     "c5a213156a161824a4e5c6b96257d131ffb7212c",
+     "fc6bc8634586ded123fed22ca840e5d1128f7302",
      []
     ],
     "sanitizer-config.tentative-expected.txt": [
@@ -241163,12 +241622,16 @@
     }
    },
    "screen-capture": {
+    "DIR_METADATA": [
+     "d9367eacac10dc9d10f681cea242ac8303374e04",
+     []
+    ],
     "META.yml": [
      "47882d3275f1cc928555045b2def8fc90f6bcdb0",
      []
     ],
     "OWNERS": [
-     "db41c4e489b574e9032cb1f9921ce92a01785131",
+     "90e5cde305022505fd502b2552ba07cd3ebb99a6",
      []
     ],
     "feature-policy.https-expected.txt": [
@@ -241185,12 +241648,16 @@
     ]
    },
    "screen-orientation": {
+    "DIR_METADATA": [
+     "f6f28541de4287cb95d4455498c1e91f44d24fe9",
+     []
+    ],
     "META.yml": [
      "3ddb3b0507d54269c54a552227771a0bf9131a0e",
      []
     ],
     "OWNERS": [
-     "af79dee0418f0c92e44cc96352db9a5573bc2321",
+     "2d282460822f7bded98aa47f11366ea975110932",
      []
     ],
     "event-before-promise-expected.txt": [
@@ -241309,12 +241776,16 @@
     ]
    },
    "scroll-to-text-fragment": {
+    "DIR_METADATA": [
+     "4a2c8aa4e0a7aea2acc4c1b62444bb49b4499d3b",
+     []
+    ],
     "META.yml": [
      "13225f6f18fb909faa65d1d6f83af2f06f9e5d7f",
      []
     ],
     "OWNERS": [
-     "e7e045164ea50e9f54c23910b7eaf4842b95f434",
+     "9f9aedfac3433e18800138c0eb8b36cc1319aeb3",
      []
     ],
     "client-redirect.html": [
@@ -241371,12 +241842,16 @@
     ]
    },
    "secure-contexts": {
+    "DIR_METADATA": [
+     "d829460d299a065115f10c5949244396fc5d5272",
+     []
+    ],
     "META.yml": [
      "e6537166280091c062a8894508f3f0ab9a33a8bf",
      []
     ],
     "OWNERS": [
-     "17bc44367357501cf53975016addb28eb1f95011",
+     "3f8456354bd08a3cb87e767ca0eb508603f45f1b",
      []
     ],
     "basic-dedicated-worker-expected.txt": [
@@ -254321,7 +254796,7 @@
       ]
      },
      "generate-test-wbns.sh": [
-      "7100e6a777260261275c54e337b2aebeca1c4fd1",
+      "8fc28bb9db7cd9900bee9c3555e7e7d84e41b389",
       []
      ],
      "location": {
@@ -254334,6 +254809,12 @@
        []
       ]
      },
+     "nested": {
+      "nested-sub.wbn": [
+       "eabd994ff8bceaf4ef52b329b4faa158c292af12",
+       []
+      ]
+     },
      "path-restriction": {
       "other": {
        "resource.js": [
@@ -254425,6 +254906,10 @@
        "f2b1e5333bdcaf88ed8b40246caeb57c3b1be8df",
        []
       ],
+      "nested-main.wbn": [
+       "1f9278148313ad4b401a1025b5396a5b9bd60ff3",
+       []
+      ],
       "path-restriction.wbn": [
        "e861469e122afd141bcec8d394a0d4504898208c",
        []
@@ -308189,6 +308674,13 @@
        {}
       ]
      ],
+     "flex-serialization.html": [
+      "189481a3947f5f418482de7c4e132a01c13502fe",
+      [
+       null,
+       {}
+      ]
+     ],
      "font-family-serialization-001.html": [
       "6c59b985c4fd5483b4c3f186e2917a20b428ee5b",
       [
@@ -329308,22 +329800,6 @@
       ]
      ]
     },
-    "feature-policy-for-sandbox": {
-     "feature-propagation-to-auxiliary-context.html": [
-      "86cdcb3b42702fe3d6dedfe13ddae348c3dd32e6",
-      [
-       null,
-       {}
-      ]
-     ],
-     "sandbox-policies-in-allow-attribute.html": [
-      "c9e2d7119382882a663b3f25a0ba70b581ec9b5d",
-      [
-       null,
-       {}
-      ]
-     ]
-    },
     "feature-policy-frame-policy-allowed-for-all.https.sub.html": [
      "63cd9853dcedac46bff5ddb1554d519ed4a64c23",
      [
@@ -427751,6 +428227,13 @@
        {}
       ]
      ],
+     "subresource-loading-nested-bundle.tentative.html": [
+      "acca096bfbda306edc42a0deaef434b34ddd509b",
+      [
+       null,
+       {}
+      ]
+     ],
      "subresource-loading-path-restriction.tentative.html": [
       "706bfb97b1142833380024c3f969b1b3b2756ec1",
       [
diff --git a/third_party/blink/web_tests/external/wpt/css/css-backgrounds/OWNERS b/third_party/blink/web_tests/external/wpt/css/css-backgrounds/OWNERS
deleted file mode 100644
index 8b13789..0000000
--- a/third_party/blink/web_tests/external/wpt/css/css-backgrounds/OWNERS
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/third_party/blink/web_tests/external/wpt/css/css-backgrounds/background-attachment-local/attachment-local-clipping-color-5.html b/third_party/blink/web_tests/external/wpt/css/css-backgrounds/background-attachment-local/attachment-local-clipping-color-5.html
index 136b704..7b27a040 100644
--- a/third_party/blink/web_tests/external/wpt/css/css-backgrounds/background-attachment-local/attachment-local-clipping-color-5.html
+++ b/third_party/blink/web_tests/external/wpt/css/css-backgrounds/background-attachment-local/attachment-local-clipping-color-5.html
@@ -2,7 +2,6 @@
 <title>CSS Test: background-{attachment: local; clip: padding-box; color}; border-radius</title>
 <link rel="match" href="attachment-local-clipping-color-4-ref.html" />
 <meta name="flags" content="dom" />
-<meta name=fuzzy content="0-10;0-160">
 <link rel="author" title="Simon Sapin" href="http://exyr.org/about/" />
 <link rel="help" href="http://www.w3.org/TR/css3-background/#the-background-attachment" />
 <style>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-backgrounds/background-attachment-local/attachment-local-clipping-image-5.html b/third_party/blink/web_tests/external/wpt/css/css-backgrounds/background-attachment-local/attachment-local-clipping-image-5.html
index ddd02dcf..376c9cd 100644
--- a/third_party/blink/web_tests/external/wpt/css/css-backgrounds/background-attachment-local/attachment-local-clipping-image-5.html
+++ b/third_party/blink/web_tests/external/wpt/css/css-backgrounds/background-attachment-local/attachment-local-clipping-image-5.html
@@ -2,7 +2,6 @@
 <title>CSS Test: background-{attachment: local; clip: padding-box; image}; border-radius</title>
 <link rel="match" href="attachment-local-clipping-image-4-ref.html" />
 <meta name="flags" content="dom" />
-<meta name=fuzzy content="0-10;0-160">
 <link rel="author" title="Simon Sapin" href="http://exyr.org/about/" />
 <link rel="help" href="http://www.w3.org/TR/css3-background/#the-background-attachment" />
 <style>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-backgrounds/border-radius-clip-001.html b/third_party/blink/web_tests/external/wpt/css/css-backgrounds/border-radius-clip-001.html
index 008ca736..585b6267 100644
--- a/third_party/blink/web_tests/external/wpt/css/css-backgrounds/border-radius-clip-001.html
+++ b/third_party/blink/web_tests/external/wpt/css/css-backgrounds/border-radius-clip-001.html
@@ -12,8 +12,6 @@
 
   <meta name="assert" content="Test passes if a box with border-radius that clips its content to a box edge clips to the border-radius curve in the corners.">
 
-  <meta name="fuzzy" content="0-1;0-1000">
-
   <link rel="stylesheet" type="text/css" href="/fonts/ahem.css" />
   <style>
   body > div { float: left; }
diff --git a/third_party/blink/web_tests/external/wpt/css/css-backgrounds/border-radius-clip-002.htm b/third_party/blink/web_tests/external/wpt/css/css-backgrounds/border-radius-clip-002.htm
index 759bd5c..e81871e 100644
--- a/third_party/blink/web_tests/external/wpt/css/css-backgrounds/border-radius-clip-002.htm
+++ b/third_party/blink/web_tests/external/wpt/css/css-backgrounds/border-radius-clip-002.htm
@@ -7,7 +7,6 @@
         <link rel="match" href="reference/border-radius-clip-002-ref.htm">
         <link rel="help" href="https://www.w3.org/TR/css-backgrounds-3/#corner-clipping">
         <meta name="assert" content="Background is clipped to the curve of the content-box when 'background-clip: content-box'">
-        <meta name=fuzzy content="0-70;0-50">
         <style type="text/css">
             #test-base
             {
diff --git a/third_party/blink/web_tests/external/wpt/css/css-break/reference/widows-orphans-008-ref.html b/third_party/blink/web_tests/external/wpt/css/css-break/reference/widows-orphans-008-ref.html
new file mode 100644
index 0000000..431d37a
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/css-break/reference/widows-orphans-008-ref.html
@@ -0,0 +1,37 @@
+<!DOCTYPE html>
+
+  <meta charset="UTF-8">
+
+  <title>CSS Reftest Reference</title>
+
+  <link rel="author" title="Gérard Talbot" href="http://www.gtalbot.org/BrowserBugsSection/css21testsuite/">
+
+  <style>
+  div
+    {
+      border: orange solid 4px;
+      font-size: 20px;
+      height: 104px;
+      line-height: 1.3; /* computes to 26px */
+      margin-bottom: 1em;
+      padding: 0.5em; /* computes to 10px */
+      width: 460px;
+
+      columns: 4 auto;
+
+      column-fill: auto;
+
+      column-gap: 1em; /* computes to 20px */
+
+      column-rule: blue solid 4px;
+
+      orphans: 1;
+      widows: 1;
+    }
+  </style>
+
+  <p>Test passes if the digits inside both orange-bordered rectangles are <strong>distributed identically</strong>.
+
+  <div>1<br>2<br>3<br>4<br>5<br>6<br><br><br>7<br>8<br>9</div>
+
+  <div>1<br>2<br>3<br>4<br>5<br>6<br><br><br>7<br>8<br>9</div>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-break/reference/widows-orphans-009-ref.html b/third_party/blink/web_tests/external/wpt/css/css-break/reference/widows-orphans-009-ref.html
new file mode 100644
index 0000000..77e8bd7
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/css-break/reference/widows-orphans-009-ref.html
@@ -0,0 +1,37 @@
+<!DOCTYPE html>
+
+  <meta charset="UTF-8">
+
+  <title>CSS Reftest Reference</title>
+
+  <link rel="author" title="Gérard Talbot" href="http://www.gtalbot.org/BrowserBugsSection/css21testsuite/">
+
+  <style>
+  div
+    {
+      border: orange solid 4px;
+      font-size: 20px;
+      height: 104px;
+      line-height: 1.3; /* computes to 26px */
+      margin-bottom: 1em;
+      padding: 0.5em; /* computes to 10px */
+      width: 460px;
+
+      columns: 4 auto;
+
+      column-fill: auto;
+
+      column-gap: 1em; /* computes to 20px */
+
+      column-rule: blue solid 4px;
+
+      orphans: 1;
+      widows: 1;
+    }
+  </style>
+
+  <p>Test passes if the digits inside both orange-bordered rectangles are <strong>distributed identically</strong>.
+
+  <div>1<br>2<br>3<br>4<br>5<br>6<br>7<br><br>8<br>9</div>
+
+  <div>1<br>2<br>3<br>4<br>5<br>6<br>7<br><br>8<br>9</div>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-break/reference/widows-orphans-010-ref.html b/third_party/blink/web_tests/external/wpt/css/css-break/reference/widows-orphans-010-ref.html
new file mode 100644
index 0000000..431d37a
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/css-break/reference/widows-orphans-010-ref.html
@@ -0,0 +1,37 @@
+<!DOCTYPE html>
+
+  <meta charset="UTF-8">
+
+  <title>CSS Reftest Reference</title>
+
+  <link rel="author" title="Gérard Talbot" href="http://www.gtalbot.org/BrowserBugsSection/css21testsuite/">
+
+  <style>
+  div
+    {
+      border: orange solid 4px;
+      font-size: 20px;
+      height: 104px;
+      line-height: 1.3; /* computes to 26px */
+      margin-bottom: 1em;
+      padding: 0.5em; /* computes to 10px */
+      width: 460px;
+
+      columns: 4 auto;
+
+      column-fill: auto;
+
+      column-gap: 1em; /* computes to 20px */
+
+      column-rule: blue solid 4px;
+
+      orphans: 1;
+      widows: 1;
+    }
+  </style>
+
+  <p>Test passes if the digits inside both orange-bordered rectangles are <strong>distributed identically</strong>.
+
+  <div>1<br>2<br>3<br>4<br>5<br>6<br><br><br>7<br>8<br>9</div>
+
+  <div>1<br>2<br>3<br>4<br>5<br>6<br><br><br>7<br>8<br>9</div>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-break/reference/widows-orphans-011-ref.html b/third_party/blink/web_tests/external/wpt/css/css-break/reference/widows-orphans-011-ref.html
new file mode 100644
index 0000000..8977e47
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/css-break/reference/widows-orphans-011-ref.html
@@ -0,0 +1,37 @@
+<!DOCTYPE html>
+
+  <meta charset="UTF-8">
+
+  <title>CSS Reftest Reference</title>
+
+  <link rel="author" title="Gérard Talbot" href="http://www.gtalbot.org/BrowserBugsSection/css21testsuite/">
+
+  <style>
+  div
+    {
+      border: orange solid 4px;
+      font-size: 20px;
+      height: 156px;
+      line-height: 1.3; /* computes to 26px */
+      margin-bottom: 1em;
+      padding: 0.5em; /* computes to 10px */
+      width: 460px;
+
+      columns: 4 auto;
+
+      column-fill: auto;
+
+      column-gap: 1em; /* computes to 20px */
+
+      column-rule: blue solid 4px;
+
+      orphans: 1;
+      widows: 1;
+    }
+  </style>
+
+  <p>Test passes if the numbers inside both orange-bordered rectangles are <strong>distributed identically</strong>.
+
+  <div>1<br>2<br>3<br>4<br>5<br>6<br>7<br>8<br><br><br><br><br>9<br>10<br>11<br>12<br>13<br>14</div>
+
+  <div>1<br>2<br>3<br>4<br>5<br>6<br>7<br>8<br><br><br><br><br>9<br>10<br>11<br>12<br>13<br>14</div>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-break/reference/widows-orphans-012-ref.html b/third_party/blink/web_tests/external/wpt/css/css-break/reference/widows-orphans-012-ref.html
new file mode 100644
index 0000000..a03a7993
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/css-break/reference/widows-orphans-012-ref.html
@@ -0,0 +1,37 @@
+<!DOCTYPE html>
+
+  <meta charset="UTF-8">
+
+  <title>CSS Reftest Reference</title>
+
+  <link rel="author" title="Gérard Talbot" href="http://www.gtalbot.org/BrowserBugsSection/css21testsuite/">
+
+  <style>
+  div
+    {
+      border: orange solid 4px;
+      font-size: 20px;
+      height: 208px;
+      line-height: 1.3; /* computes to 26px */
+      margin-bottom: 1em;
+      padding: 0.5em; /* computes to 10px */
+      width: 460px;
+
+      columns: 4 auto;
+
+      column-fill: auto;
+
+      column-gap: 1em; /* computes to 20px */
+
+      column-rule: blue solid 4px;
+
+      orphans: 1;
+      widows: 1;
+    }
+  </style>
+
+  <p>Test passes if the numbers inside both orange-bordered rectangles are <strong>distributed identically</strong>.
+
+  <div>1<br>2<br>3<br>4<br>5<br>6<br>7<br>8<br>9<br>10<br>11<br>12<br><br><br><br><br>13<br>14<br>15<br>16<br>17<br>18<br>19</div>
+
+  <div>1<br>2<br>3<br>4<br>5<br>6<br>7<br>8<br>9<br>10<br>11<br>12<br><br><br><br><br>13<br>14<br>15<br>16<br>17<br>18<br>19</div>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-break/reference/widows-orphans-013-ref.html b/third_party/blink/web_tests/external/wpt/css/css-break/reference/widows-orphans-013-ref.html
new file mode 100644
index 0000000..7872ac730
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/css-break/reference/widows-orphans-013-ref.html
@@ -0,0 +1,37 @@
+<!DOCTYPE html>
+
+  <meta charset="UTF-8">
+
+  <title>CSS Reftest Reference</title>
+
+  <link rel="author" title="Gérard Talbot" href="http://www.gtalbot.org/BrowserBugsSection/css21testsuite/">
+
+  <style>
+  div
+    {
+      border: orange solid 4px;
+      font-size: 20px;
+      height: 234px;
+      line-height: 1.3; /* computes to 26px */
+      margin-bottom: 1em;
+      padding: 0.5em; /* computes to 10px */
+      width: 460px;
+
+      columns: 4 auto;
+
+      column-fill: auto;
+
+      column-gap: 1em; /* computes to 20px */
+
+      column-rule: blue solid 4px;
+
+      orphans: 1;
+      widows: 1;
+    }
+  </style>
+
+  <p>Test passes if the numbers inside both orange-bordered rectangles are <strong>distributed identically</strong>.
+
+  <div>1<br>2<br>3<br>4<br>5<br>6<br>7<br>8<br>9<br>10<br>11<br>12<br>13<br>14<br>15<br><br><br><br>16<br>17<br>18<br>19</div>
+
+  <div>1<br>2<br>3<br>4<br>5<br>6<br>7<br>8<br>9<br>10<br>11<br>12<br>13<br>14<br>15<br><br><br><br>16<br>17<br>18<br>19</div>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-break/reference/widows-orphans-014-ref.html b/third_party/blink/web_tests/external/wpt/css/css-break/reference/widows-orphans-014-ref.html
new file mode 100644
index 0000000..795350a02
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/css-break/reference/widows-orphans-014-ref.html
@@ -0,0 +1,37 @@
+<!DOCTYPE html>
+
+  <meta charset="UTF-8">
+
+  <title>CSS Reftest Reference</title>
+
+  <link rel="author" title="Gérard Talbot" href="http://www.gtalbot.org/BrowserBugsSection/css21testsuite/">
+
+  <style>
+  div
+    {
+      border: orange solid 4px;
+      font-size: 20px;
+      height: 234px;
+      line-height: 1.3; /* computes to 26px */
+      margin-bottom: 1em;
+      padding: 0.5em; /* computes to 10px */
+      width: 460px;
+
+      columns: 4 auto;
+
+      column-fill: auto;
+
+      column-gap: 1em; /* computes to 20px */
+
+      column-rule: blue solid 4px;
+
+      orphans: 1;
+      widows: 1;
+    }
+  </style>
+
+  <p>Test passes if the digits inside both orange-bordered rectangles are <strong>distributed identically</strong>.
+
+  <div>1<br>2<br>3<br>4<br>5<br>6<br>7<br><br><br>8<br>9<br>0</div>
+
+  <div>1<br>2<br>3<br>4<br>5<br>6<br>7<br><br><br>8<br>9<br>0</div>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-break/reference/widows-orphans-016-ref.html b/third_party/blink/web_tests/external/wpt/css/css-break/reference/widows-orphans-016-ref.html
new file mode 100644
index 0000000..77e8bd7
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/css-break/reference/widows-orphans-016-ref.html
@@ -0,0 +1,37 @@
+<!DOCTYPE html>
+
+  <meta charset="UTF-8">
+
+  <title>CSS Reftest Reference</title>
+
+  <link rel="author" title="Gérard Talbot" href="http://www.gtalbot.org/BrowserBugsSection/css21testsuite/">
+
+  <style>
+  div
+    {
+      border: orange solid 4px;
+      font-size: 20px;
+      height: 104px;
+      line-height: 1.3; /* computes to 26px */
+      margin-bottom: 1em;
+      padding: 0.5em; /* computes to 10px */
+      width: 460px;
+
+      columns: 4 auto;
+
+      column-fill: auto;
+
+      column-gap: 1em; /* computes to 20px */
+
+      column-rule: blue solid 4px;
+
+      orphans: 1;
+      widows: 1;
+    }
+  </style>
+
+  <p>Test passes if the digits inside both orange-bordered rectangles are <strong>distributed identically</strong>.
+
+  <div>1<br>2<br>3<br>4<br>5<br>6<br>7<br><br>8<br>9</div>
+
+  <div>1<br>2<br>3<br>4<br>5<br>6<br>7<br><br>8<br>9</div>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-break/reference/widows-orphans-017-ref.html b/third_party/blink/web_tests/external/wpt/css/css-break/reference/widows-orphans-017-ref.html
new file mode 100644
index 0000000..0a65a50
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/css-break/reference/widows-orphans-017-ref.html
@@ -0,0 +1,26 @@
+<!DOCTYPE html>
+
+  <meta charset="UTF-8">
+
+  <title>CSS Reftest Reference</title>
+
+  <link rel="author" title="Gérard Talbot" href="http://www.gtalbot.org/BrowserBugsSection/css21testsuite/">
+
+  <style>
+  div
+    {
+      border: orange solid 4px;
+      font-size: 20px;
+      height: 182px;
+      line-height: 1.3; /* computes to 26px */
+      margin-bottom: 1em;
+      padding: 0.5em; /* computes to 10px */
+      width: 460px;
+    }
+  </style>
+
+  <p>Test passes if the digits inside both orange-bordered rectangles are <strong>distributed identically</strong>.
+
+  <div>1<br>2<br>3<br>4<br>5<br>6<br>7</div>
+
+  <div>1<br>2<br>3<br>4<br>5<br>6<br>7</div>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-break/widows-orphans-008.html b/third_party/blink/web_tests/external/wpt/css/css-break/widows-orphans-008.html
new file mode 100644
index 0000000..8726e35a
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/css-break/widows-orphans-008.html
@@ -0,0 +1,65 @@
+<!DOCTYPE html>
+
+  <meta charset="UTF-8">
+
+  <title>CSS Fragmentation level 3 Test: 'orphans', 'widows' and content distribution in columns</title>
+
+  <link rel="author" title="Gérard Talbot" href="http://www.gtalbot.org/BrowserBugsSection/css21testsuite/">
+  <link rel="help" href="https://www.w3.org/TR/css-break-3/#widows-orphans">
+  <link rel="match" href="reference/widows-orphans-008-ref.html">
+
+  <!--
+  Date created: November 26th 2020
+  Last modified: December 6th 2020
+  -->
+
+  <!--
+
+  Bug 137367: Implement orphans and widows
+  https://bugzilla.mozilla.org/show_bug.cgi?id=137367
+
+  -->
+
+  <meta name="flags" content="">
+  <meta name="assert" content="When column boxes are filled sequentially, their content should be distributed and fragmented in accordance with the 'orphans' and the 'widows' declarations. In the test, since the 3rd column box was going to get only 1 line box, then a class B break point should occur between the '6' and the '7' so that there is a minimum of 3 line boxes at the top of the 3rd column box.">
+
+  <style>
+  div
+    {
+      border: orange solid 4px;
+      font-size: 20px;
+      line-height: 1.3; /* computes to 26px */
+      height: 104px; /* Therefore, exactly 4 line boxes */
+      margin-bottom: 1em;
+      padding: 0.5em; /* computes to 10px */
+      width: 460px;
+
+      columns: 4 auto;
+
+      column-fill: auto;
+
+      column-gap: 1em; /* computes to 20px */
+
+      column-rule: blue solid 4px;
+    }
+
+  div#test
+    {
+      orphans: 1;
+      widows: 3;
+    }
+
+  div#reference
+    {
+      orphans: 1;
+      widows: 1;
+    }
+  </style>
+
+  <p>Test passes if the digits inside both orange-bordered rectangles are <strong>distributed identically</strong>.
+
+  <div id="test">1<br>2<br>3<br>4<br>5<br>6<br>7<br>8<br>9</div>
+
+  <div id="reference">1<br>2<br>3<br>4<br>5<br>6<br><br><br>7<br>8<br>9</div>
+
+  <!--     Same as div#test except 2 extra br here   ^    -->
diff --git a/third_party/blink/web_tests/external/wpt/css/css-break/widows-orphans-009.html b/third_party/blink/web_tests/external/wpt/css/css-break/widows-orphans-009.html
new file mode 100644
index 0000000..2c1fc1b
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/css-break/widows-orphans-009.html
@@ -0,0 +1,65 @@
+<!DOCTYPE html>
+
+  <meta charset="UTF-8">
+
+  <title>CSS Fragmentation level 3 Test: 'orphans', 'widows' and content distribution in columns</title>
+
+  <link rel="author" title="Gérard Talbot" href="http://www.gtalbot.org/BrowserBugsSection/css21testsuite/">
+  <link rel="help" href="https://www.w3.org/TR/css-break-3/#widows-orphans">
+  <link rel="match" href="reference/widows-orphans-009-ref.html">
+
+  <!--
+  Date created: November 26th 2020
+  Last modified: December 6th 2020
+  -->
+
+  <!--
+
+  Bug 137367: Implement orphans and widows
+  https://bugzilla.mozilla.org/show_bug.cgi?id=137367
+
+  -->
+
+  <meta name="flags" content="">
+  <meta name="assert" content="When column boxes are filled sequentially, their content should be distributed and fragmented in accordance with the 'orphans' and the 'widows' declarations. In the test, since the 3rd column box was going to get only 1 line box, then a class B break point should occur between the '7' and the '8' so that there is a minimum of 2 line boxes at the top of the 3rd column box. In doing so, the 'orphans: 2' declaration is still honored.">
+
+  <style>
+  div
+    {
+      border: orange solid 4px;
+      font-size: 20px;
+      line-height: 1.3; /* computes to 26px */
+      height: 104px; /* Therefore, exactly 4 line boxes */
+      margin-bottom: 1em;
+      padding: 0.5em; /* computes to 10px */
+      width: 460px;
+
+      columns: 4 auto;
+
+      column-fill: auto;
+
+      column-gap: 1em; /* computes to 20px */
+
+      column-rule: blue solid 4px;
+    }
+
+  div#test
+    {
+      orphans: 2;
+      widows: 2;
+    }
+
+  div#reference
+    {
+      orphans: 1;
+      widows: 1;
+    }
+  </style>
+
+  <p>Test passes if the digits inside both orange-bordered rectangles are <strong>distributed identically</strong>.
+
+  <div id="test">1<br>2<br>3<br>4<br>5<br>6<br>7<br>8<br>9</div>
+
+  <div id="reference">1<br>2<br>3<br>4<br>5<br>6<br>7<br><br>8<br>9</div>
+
+  <!--          Same as div#test except 1 extra br here   ^    -->
diff --git a/third_party/blink/web_tests/external/wpt/css/css-break/widows-orphans-010.html b/third_party/blink/web_tests/external/wpt/css/css-break/widows-orphans-010.html
new file mode 100644
index 0000000..96de985
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/css-break/widows-orphans-010.html
@@ -0,0 +1,65 @@
+<!DOCTYPE html>
+
+  <meta charset="UTF-8">
+
+  <title>CSS Fragmentation level 3 Test: 'orphans', 'widows' and content distribution in columns</title>
+
+  <link rel="author" title="Gérard Talbot" href="http://www.gtalbot.org/BrowserBugsSection/css21testsuite/">
+  <link rel="help" href="https://www.w3.org/TR/css-break-3/#widows-orphans">
+  <link rel="match" href="reference/widows-orphans-010-ref.html">
+
+  <!--
+  Date created: November 26th 2020
+  Last modified: December 6th 2020
+  -->
+
+  <!--
+
+  Bug 137367: Implement orphans and widows
+  https://bugzilla.mozilla.org/show_bug.cgi?id=137367
+
+  -->
+
+  <meta name="flags" content="">
+  <meta name="assert" content="When column boxes are filled sequentially, their content should be distributed and fragmented in accordance with the 'orphans' and the 'widows' declarations. In the test, since the 3rd column box was going to get only 1 line box, then a class B break point should occur between the '6' and the '7' so that there is a minimum of 3 line boxes at the top of the 3rd column box.">
+
+  <style>
+  div
+    {
+      border: orange solid 4px;
+      font-size: 20px;
+      line-height: 1.3; /* computes to 26px */
+      height: 104px; /* Therefore, exactly 4 line boxes */
+      margin-bottom: 1em;
+      padding: 0.5em; /* computes to 10px */
+      width: 460px;
+
+      columns: 4 auto;
+
+      column-fill: auto;
+
+      column-gap: 1em; /* computes to 20px */
+
+      column-rule: blue solid 4px;
+    }
+
+  div#test
+    {
+      orphans: 2;
+      widows: 3;
+    }
+
+  div#reference
+    {
+      orphans: 1;
+      widows: 1;
+    }
+  </style>
+
+  <p>Test passes if the digits inside both orange-bordered rectangles are <strong>distributed identically</strong>.
+
+  <div id="test">1<br>2<br>3<br>4<br>5<br>6<br>7<br>8<br>9</div>
+
+  <div id="reference">1<br>2<br>3<br>4<br>5<br>6<br><br><br>7<br>8<br>9</div>
+
+  <!--     Same as div#test except 2 extra br here   ^    -->
diff --git a/third_party/blink/web_tests/external/wpt/css/css-break/widows-orphans-011.html b/third_party/blink/web_tests/external/wpt/css/css-break/widows-orphans-011.html
new file mode 100644
index 0000000..489e268
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/css-break/widows-orphans-011.html
@@ -0,0 +1,64 @@
+<!DOCTYPE html>
+
+  <meta charset="UTF-8">
+
+  <title>CSS Fragmentation level 3 Test: 'orphans', 'widows' and content distribution in columns</title>
+
+  <link rel="author" title="Gérard Talbot" href="http://www.gtalbot.org/BrowserBugsSection/css21testsuite/">
+  <link rel="help" href="https://www.w3.org/TR/css-break-3/#widows-orphans">
+  <link rel="match" href="reference/widows-orphans-011-ref.html">
+
+  <!--
+  Date created: November 26th 2020
+  Last modified: December 6th 2020
+  -->
+
+  <!--
+
+  Bug 137367: Implement orphans and widows
+  https://bugzilla.mozilla.org/show_bug.cgi?id=137367
+
+  -->
+
+  <meta name="flags" content="">
+  <meta name="assert" content="When column boxes are filled sequentially, their content should be distributed and fragmented in accordance with the 'orphans' and the 'widows' declarations. In the test, since the 3rd column box was going to get only 2 line boxes, then a class B break point should occur between '8' and the '9' so that there is a minimum of 6 line boxes at the top of the 3rd column box.">
+
+  <style>
+  div
+    {
+      border: orange solid 4px;
+      font-size: 20px;
+      line-height: 1.3; /* computes to 26px */
+      height: 156px; /* Therefore, exactly 6 line boxes */
+      margin-bottom: 1em;
+      padding: 0.5em; /* computes to 10px */
+      width: 460px;
+
+      columns: 4 auto;
+
+      column-fill: auto;
+
+      column-gap: 1em; /* computes to 20px */
+
+      column-rule: blue solid 4px;
+    }
+
+  div#test
+    {
+      orphans: 2;
+      widows: 6;
+    }
+
+  div#reference
+    {
+      orphans: 1;
+      widows: 1;
+    }
+  </style>
+
+  <p>Test passes if the numbers inside both orange-bordered rectangles are <strong>distributed identically</strong>.
+
+  <div id="test">1<br>2<br>3<br>4<br>5<br>6<br>7<br>8<br>9<br>10<br>11<br>12<br>13<br>14</div>
+
+  <div id="reference">1<br>2<br>3<br>4<br>5<br>6<br>7<br>8<br><br><br><br><br>9<br>10<br>11<br>12<br>13<br>14</div>
+  <!--               Same as div#test except 4 extra br here   ^    -->
diff --git a/third_party/blink/web_tests/external/wpt/css/css-break/widows-orphans-012.html b/third_party/blink/web_tests/external/wpt/css/css-break/widows-orphans-012.html
new file mode 100644
index 0000000..d209cde
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/css-break/widows-orphans-012.html
@@ -0,0 +1,65 @@
+<!DOCTYPE html>
+
+  <meta charset="UTF-8">
+
+  <title>CSS Fragmentation level 3 Test: 'orphans', 'widows' and content distribution in columns</title>
+
+  <link rel="author" title="Gérard Talbot" href="http://www.gtalbot.org/BrowserBugsSection/css21testsuite/">
+  <link rel="help" href="https://www.w3.org/TR/css-break-3/#widows-orphans">
+  <link rel="match" href="reference/widows-orphans-012-ref.html">
+
+  <!--
+  Date created: November 26th 2020
+  Last modified: December 6th 2020
+  -->
+
+  <!--
+
+  Bug 137367: Implement orphans and widows
+  https://bugzilla.mozilla.org/show_bug.cgi?id=137367
+
+  -->
+
+  <meta name="flags" content="">
+  <meta name="assert" content="When column boxes are filled sequentially, their content should be distributed and fragmented in accordance with the 'orphans' and the 'widows' declarations. In the test, since the 3rd column box was going to get only 3 line boxes, then a class B break point should occur between the '12' and the '13' so that there is a minimum of 7 line boxes at the top of the 3rd column box.">
+
+  <style>
+  div
+    {
+      border: orange solid 4px;
+      font-size: 20px;
+      line-height: 1.3; /* computes to 26px */
+      height: 208px; /* Therefore, exactly 8 line boxes */
+      margin-bottom: 1em;
+      padding: 0.5em; /* computes to 10px */
+      width: 460px;
+
+      columns: 4 auto;
+
+      column-fill: auto;
+
+      column-gap: 1em; /* computes to 20px */
+
+      column-rule: blue solid 4px;
+    }
+
+  div#test
+    {
+      orphans: 3;
+      widows: 7;
+    }
+
+  div#reference
+    {
+      orphans: 1;
+      widows: 1;
+    }
+  </style>
+
+  <p>Test passes if the numbers inside both orange-bordered rectangles are <strong>distributed identically</strong>.
+
+  <div id="test">1<br>2<br>3<br>4<br>5<br>6<br>7<br>8<br>9<br>10<br>11<br>12<br>13<br>14<br>15<br>16<br>17<br>18<br>19</div>
+
+  <div id="reference">1<br>2<br>3<br>4<br>5<br>6<br>7<br>8<br>9<br>10<br>11<br>12<br><br><br><br><br>13<br>14<br>15<br>16<br>17<br>18<br>19</div>
+
+  <!--                                      Same as div#test except 4 extra br here   ^    -->
diff --git a/third_party/blink/web_tests/external/wpt/css/css-break/widows-orphans-013.html b/third_party/blink/web_tests/external/wpt/css/css-break/widows-orphans-013.html
new file mode 100644
index 0000000..68e0d41
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/css-break/widows-orphans-013.html
@@ -0,0 +1,63 @@
+<!DOCTYPE html>
+
+  <meta charset="UTF-8">
+
+  <title>CSS Fragmentation level 3 Test: 'orphans', 'widows' and content distribution in columns</title>
+
+  <link rel="author" title="Gérard Talbot" href="http://www.gtalbot.org/BrowserBugsSection/css21testsuite/">
+  <link rel="help" href="https://www.w3.org/TR/css-break-3/#widows-orphans">
+  <link rel="match" href="reference/widows-orphans-013-ref.html">
+
+  <!--
+  Date created: November 26th 2020
+  Last modified: December 6th 2020
+  -->
+
+  <!--
+
+  Bug 137367: Implement orphans and widows
+  https://bugzilla.mozilla.org/show_bug.cgi?id=137367
+
+  -->
+
+  <meta name="flags" content="">
+  <meta name="assert" content="When column boxes are filled sequentially, their content should be distributed and fragmented in accordance with the 'orphans' and the 'widows' declarations. In the test, since the 3rd column box was going to get only 1 line box, then a class B break point should occur between the '15' and the '16' so that there is a minimum of 4 line boxes at the top of the 3rd column box. In doing so, the 'orphans: 6' declaration is still honored.">
+
+  <style>
+  div
+    {
+      border: orange solid 4px;
+      font-size: 20px;
+      line-height: 1.3; /* computes to 26px */
+      height: 234px; /* Therefore, exactly 9 line boxes */
+      margin-bottom: 1em;
+      padding: 0.5em; /* computes to 10px */
+      width: 460px;
+
+      columns: 4 auto;
+
+      column-fill: auto;
+
+      column-gap: 1em; /* computes to 20px */
+
+      column-rule: blue solid 4px;
+    }
+
+  div#test
+    {
+      orphans: 6;
+      widows: 4;
+    }
+
+  div#reference
+    {
+      orphans: 1;
+      widows: 1;
+    }
+  </style>
+
+  <p>Test passes if the numbers inside both orange-bordered rectangles are <strong>distributed identically</strong>.
+
+  <div id="test">1<br>2<br>3<br>4<br>5<br>6<br>7<br>8<br>9<br>10<br>11<br>12<br>13<br>14<br>15<br>16<br>17<br>18<br>19</div>
+
+  <div id="reference">1<br>2<br>3<br>4<br>5<br>6<br>7<br>8<br>9<br>10<br>11<br>12<br>13<br>14<br>15<br><br><br><br>16<br>17<br>18<br>19</div>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-break/widows-orphans-014.html b/third_party/blink/web_tests/external/wpt/css/css-break/widows-orphans-014.html
new file mode 100644
index 0000000..87a9b877
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/css-break/widows-orphans-014.html
@@ -0,0 +1,63 @@
+<!DOCTYPE html>
+
+  <meta charset="UTF-8">
+
+  <title>CSS Fragmentation level 3 Test: 'orphans', 'widows' and content distribution in columns</title>
+
+  <link rel="author" title="Gérard Talbot" href="http://www.gtalbot.org/BrowserBugsSection/css21testsuite/">
+  <link rel="help" href="https://www.w3.org/TR/css-break-3/#widows-orphans">
+  <link rel="match" href="reference/widows-orphans-014-ref.html">
+
+  <!--
+  Date created: November 26th 2020
+  Last modified: December 6th 2020
+  -->
+
+  <!--
+
+  Bug 137367: Implement orphans and widows
+  https://bugzilla.mozilla.org/show_bug.cgi?id=137367
+
+  -->
+
+  <meta name="flags" content="">
+  <meta name="assert" content="When column boxes are filled sequentially, their content should be distributed and fragmented in accordance with the 'orphans' and the 'widows' declarations. In the test, since the 3rd column box was going to get only 1 line box, then a class B break point should occur between the '7' and the '8' so that there is a minimum of 3 line boxes at the top of the 3rd column box. In doing so, the 'orphans: 7' declaration is still honored.">
+
+  <style>
+  div
+    {
+      border: orange solid 4px;
+      font-size: 20px;
+      line-height: 1.3; /* computes to 26px */
+      height: 234px; /* Therefore, exactly 9 line boxes */
+      margin-bottom: 1em;
+      padding: 0.5em; /* computes to 10px */
+      width: 460px;
+
+      columns: 4 auto;
+
+      column-fill: auto;
+
+      column-gap: 1em; /* computes to 20px */
+
+      column-rule: blue solid 4px;
+    }
+
+  div#test
+    {
+      orphans: 7;
+      widows: 3;
+    }
+
+  div#reference
+    {
+      orphans: 1;
+      widows: 1;
+    }
+  </style>
+
+  <p>Test passes if the digits inside both orange-bordered rectangles are <strong>distributed identically</strong>.
+
+  <div id="test">1<br>2<br>3<br>4<br>5<br>6<br>7<br>8<br>9<br>0</div>
+
+  <div id="reference">1<br>2<br>3<br>4<br>5<br>6<br>7<br><br><br>8<br>9<br>0</div>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-break/widows-orphans-015.html b/third_party/blink/web_tests/external/wpt/css/css-break/widows-orphans-015.html
new file mode 100644
index 0000000..269279f
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/css-break/widows-orphans-015.html
@@ -0,0 +1,65 @@
+<!DOCTYPE html>
+
+  <meta charset="UTF-8">
+
+  <title>CSS Fragmentation level 3 Test: initial 'widows' value and content distribution in columns</title>
+
+  <link rel="author" title="Gérard Talbot" href="http://www.gtalbot.org/BrowserBugsSection/css21testsuite/">
+  <link rel="help" href="https://www.w3.org/TR/css-break-3/#widows-orphans">
+  <link rel="match" href="reference/widows-orphans-016-ref.html">
+
+  <!--
+  Date created: November 26th 2020
+  Last modified: December 6th 2020
+  -->
+
+  <!--
+
+  Bug 137367: Implement orphans and widows
+  https://bugzilla.mozilla.org/show_bug.cgi?id=137367
+
+  -->
+
+  <meta name="flags" content="">
+  <meta name="assert" content="This test checks that 'widows' applies to multi-column containers and that the initial value of 'widows' is '2'. When an UA succeeds at applying 'widows', then there is 2 line boxes at the top of the 3rd column box.">
+
+  <style>
+  div
+    {
+      border: orange solid 4px;
+      font-size: 20px;
+      line-height: 1.3; /* computes to 26px */
+      height: 104px; /* Therefore, exactly 4 line boxes */
+      margin-bottom: 1em;
+      padding: 0.5em; /* computes to 10px */
+      width: 460px;
+
+      columns: 4 auto;
+
+      column-fill: auto;
+
+      column-gap: 1em; /* computes to 20px */
+
+      column-rule: blue solid 4px;
+    }
+
+  div#test
+    {
+      orphans: 1;
+      widows: initial;
+    }
+
+  div#reference
+    {
+      orphans: 1;
+      widows: 1;
+    }
+  </style>
+
+  <p>Test passes if the digits inside both orange-bordered rectangles are <strong>distributed identically</strong>.
+
+  <div id="test">1<br>2<br>3<br>4<br>5<br>6<br>7<br>8<br>9</div>
+
+  <div id="reference">1<br>2<br>3<br>4<br>5<br>6<br>7<br><br>8<br>9</div>
+
+  <!--          Same as div#test except 1 extra br here   ^    -->
diff --git a/third_party/blink/web_tests/external/wpt/css/css-break/widows-orphans-016.html b/third_party/blink/web_tests/external/wpt/css/css-break/widows-orphans-016.html
new file mode 100644
index 0000000..4499a57
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/css-break/widows-orphans-016.html
@@ -0,0 +1,65 @@
+<!DOCTYPE html>
+
+  <meta charset="UTF-8">
+
+  <title>CSS Fragmentation level 3 Test: 'orphans', 'widows' and content distribution in columns</title>
+
+  <link rel="author" title="Gérard Talbot" href="http://www.gtalbot.org/BrowserBugsSection/css21testsuite/">
+  <link rel="help" href="https://www.w3.org/TR/css-break-3/#widows-orphans">
+  <link rel="match" href="reference/widows-orphans-016-ref.html">
+
+  <!--
+  Date created: November 26th 2020
+  Last modified: December 6th 2020
+  -->
+
+  <!--
+
+  Bug 137367: Implement orphans and widows
+  https://bugzilla.mozilla.org/show_bug.cgi?id=137367
+
+  -->
+
+  <meta name="flags" content="">
+  <meta name="assert" content="When column boxes are filled sequentially, their content should be distributed and fragmented in accordance with the 'orphans' and the 'widows' declarations. In the test, since the 3rd column box was going to get only 1 line box, then a class B break point should occur between the '7' and the '8' so that there is a minimum of 2 line boxes at the top of the 3rd column box.">
+
+  <style>
+  div
+    {
+      border: orange solid 4px;
+      font-size: 20px;
+      line-height: 1.3; /* computes to 26px */
+      height: 104px; /* Therefore, exactly 4 line boxes */
+      margin-bottom: 1em;
+      padding: 0.5em; /* computes to 10px */
+      width: 460px;
+
+      columns: 4 auto;
+
+      column-fill: auto;
+
+      column-gap: 1em; /* computes to 20px */
+
+      column-rule: blue solid 4px;
+    }
+
+  div#test
+    {
+      orphans: 1;
+      widows: 2;
+    }
+
+  div#reference
+    {
+      orphans: 1;
+      widows: 1;
+    }
+  </style>
+
+  <p>Test passes if the digits inside both orange-bordered rectangles are <strong>distributed identically</strong>.
+
+  <div id="test">1<br>2<br>3<br>4<br>5<br>6<br>7<br>8<br>9</div>
+
+  <div id="reference">1<br>2<br>3<br>4<br>5<br>6<br>7<br><br>8<br>9</div>
+
+  <!--          Same as div#test except 1 extra br here   ^    -->
diff --git a/third_party/blink/web_tests/external/wpt/css/css-break/widows-orphans-017.html b/third_party/blink/web_tests/external/wpt/css/css-break/widows-orphans-017.html
new file mode 100644
index 0000000..bbdbbbbb
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/css-break/widows-orphans-017.html
@@ -0,0 +1,53 @@
+<!DOCTYPE html>
+
+  <meta charset="UTF-8">
+
+  <title>CSS Fragmentation level 3 Test: 'orphans', 'widows' and auto-height multicolumn container with 'column-fill: auto'</title>
+
+  <link rel="author" title="Gérard Talbot" href="http://www.gtalbot.org/BrowserBugsSection/css21testsuite/">
+  <link rel="help" href="https://www.w3.org/TR/css-break-3/#widows-orphans">
+  <link rel="match" href="reference/widows-orphans-017-ref.html">
+
+  <!--
+  Date created: November 26th 2020
+  Last modified: December 6th 2020
+  -->
+
+  <meta name="flags" content="">
+  <meta name="assert" content="If a multi-column container fills column boxes sequentially and its 'height' is 'auto', then soft breaks are inoperative since content can not overflow the fragmentainer. Therefore, in this test, the 'orphans' and 'widows' requirements can not be honored.">
+
+  <style>
+  div
+    {
+      border: orange solid 4px;
+      font-size: 20px;
+      line-height: 1.3; /* computes to 26px */
+      margin-bottom: 1em;
+      padding: 0.5em; /* computes to 10px */
+      width: 460px;
+    }
+
+  div#test
+    {
+      height: auto;
+
+      columns: 4 auto;
+      column-fill: auto;
+      column-gap: 1em; /* computes to 20px */
+      column-rule: blue solid 4px;
+
+      orphans: 1;
+      widows: 2;
+    }
+
+  div#reference
+    {
+      height: 182px;
+    }
+  </style>
+
+  <p>Test passes if the digits inside both orange-bordered rectangles are <strong>distributed identically</strong>.
+
+  <div id="test">1<br>2<br>3<br>4<br>5<br>6<br>7</div>
+
+  <div id="reference">1<br>2<br>3<br>4<br>5<br>6<br>7</div>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-color/OWNERS b/third_party/blink/web_tests/external/wpt/css/css-color/OWNERS
deleted file mode 100644
index 8b13789..0000000
--- a/third_party/blink/web_tests/external/wpt/css/css-color/OWNERS
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/third_party/blink/web_tests/external/wpt/css/css-display/DIR_METADATA b/third_party/blink/web_tests/external/wpt/css/css-display/DIR_METADATA
new file mode 100644
index 0000000..85377a7
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/css-display/DIR_METADATA
@@ -0,0 +1,7 @@
+monorail {
+  component: "Blink>Layout"
+}
+team_email: "layout-dev@chromium.org"
+wpt {
+  notify: YES
+}
diff --git a/third_party/blink/web_tests/external/wpt/css/css-display/OWNERS b/third_party/blink/web_tests/external/wpt/css/css-display/OWNERS
index ef891a7..7f2bab2 100644
--- a/third_party/blink/web_tests/external/wpt/css/css-display/OWNERS
+++ b/third_party/blink/web_tests/external/wpt/css/css-display/OWNERS
@@ -1,4 +1 @@
-# TEAM: layout-dev@chromium.org
-# COMPONENT: Blink>Layout
-# WPT-NOTIFY: true
 emilio@chromium.org
diff --git a/third_party/blink/web_tests/external/wpt/css/css-flexbox/DIR_METADATA b/third_party/blink/web_tests/external/wpt/css/css-flexbox/DIR_METADATA
new file mode 100644
index 0000000..38ef497
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/css-flexbox/DIR_METADATA
@@ -0,0 +1,7 @@
+monorail {
+  component: "Blink>Layout>Flexbox"
+}
+team_email: "layout-dev@chromium.org"
+wpt {
+  notify: YES
+}
diff --git a/third_party/blink/web_tests/external/wpt/css/css-flexbox/OWNERS b/third_party/blink/web_tests/external/wpt/css/css-flexbox/OWNERS
index 3aa8367..51c6a57d 100644
--- a/third_party/blink/web_tests/external/wpt/css/css-flexbox/OWNERS
+++ b/third_party/blink/web_tests/external/wpt/css/css-flexbox/OWNERS
@@ -1,4 +1 @@
-# TEAM: layout-dev@chromium.org
-# COMPONENT: Blink>Layout>Flexbox
-# WPT-NOTIFY: true
 cbiesinger@chromium.org
diff --git a/third_party/blink/web_tests/external/wpt/css/css-font-loading/DIR_METADATA b/third_party/blink/web_tests/external/wpt/css/css-font-loading/DIR_METADATA
new file mode 100644
index 0000000..38e8f0f1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/css-font-loading/DIR_METADATA
@@ -0,0 +1,4 @@
+monorail {
+  component: "Blink>Fonts"
+}
+team_email: "layout-dev@chromium.org"
diff --git a/third_party/blink/web_tests/external/wpt/css/css-font-loading/OWNERS b/third_party/blink/web_tests/external/wpt/css/css-font-loading/OWNERS
index 7376adf6..871ef84 100644
--- a/third_party/blink/web_tests/external/wpt/css/css-font-loading/OWNERS
+++ b/third_party/blink/web_tests/external/wpt/css/css-font-loading/OWNERS
@@ -1,4 +1,2 @@
-# TEAM: layout-dev@chromium.org
-# COMPONENT: Blink>Fonts
 kojii@chromium.org
 ksakamoto@chromium.org
diff --git a/third_party/blink/web_tests/external/wpt/css/css-fonts/DIR_METADATA b/third_party/blink/web_tests/external/wpt/css/css-fonts/DIR_METADATA
new file mode 100644
index 0000000..38e8f0f1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/css-fonts/DIR_METADATA
@@ -0,0 +1,4 @@
+monorail {
+  component: "Blink>Fonts"
+}
+team_email: "layout-dev@chromium.org"
diff --git a/third_party/blink/web_tests/external/wpt/css/css-fonts/OWNERS b/third_party/blink/web_tests/external/wpt/css/css-fonts/OWNERS
index cf8e2e66..7da8d64 100644
--- a/third_party/blink/web_tests/external/wpt/css/css-fonts/OWNERS
+++ b/third_party/blink/web_tests/external/wpt/css/css-fonts/OWNERS
@@ -1,4 +1,2 @@
-# TEAM: layout-dev@chromium.org
-# COMPONENT: Blink>Fonts
 drott@chromium.org
 kojii@chromium.org
diff --git a/third_party/blink/web_tests/external/wpt/css/css-grid/DIR_METADATA b/third_party/blink/web_tests/external/wpt/css/css-grid/DIR_METADATA
new file mode 100644
index 0000000..6c6ae37
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/css-grid/DIR_METADATA
@@ -0,0 +1,7 @@
+monorail {
+  component: "Blink>Layout>Grid"
+}
+team_email: "layout-dev@chromium.org"
+wpt {
+  notify: YES
+}
diff --git a/third_party/blink/web_tests/external/wpt/css/css-grid/OWNERS b/third_party/blink/web_tests/external/wpt/css/css-grid/OWNERS
index 102c483..5e03d9bc 100644
--- a/third_party/blink/web_tests/external/wpt/css/css-grid/OWNERS
+++ b/third_party/blink/web_tests/external/wpt/css/css-grid/OWNERS
@@ -1,4 +1 @@
-# TEAM: layout-dev@chromium.org
-# COMPONENT: Blink>Layout>Grid
-# WPT-NOTIFY: true
 rego@igalia.com
diff --git a/third_party/blink/web_tests/external/wpt/css/css-grid/alignment/grid-self-alignment-non-static-positioned-items-009-expected.txt b/third_party/blink/web_tests/external/wpt/css/css-grid/alignment/grid-self-alignment-non-static-positioned-items-009-expected.txt
deleted file mode 100644
index 3a100a48..0000000
--- a/third_party/blink/web_tests/external/wpt/css/css-grid/alignment/grid-self-alignment-non-static-positioned-items-009-expected.txt
+++ /dev/null
@@ -1,21 +0,0 @@
-This is a testharness.js-based test.
-PASS .grid 1
-FAIL .grid 2 assert_equals: 
-<div class="grid RTL">
-  <div data-offset-x="155" data-offset-y="0" data-expected-width="40" data-expected-height="80" class="firstRowFirstColumn verticalLR">X XX X</div>
-  <div data-offset-x="80" data-offset-y="60" data-expected-width="60" data-expected-height="90" class="firstRowSecondColumn verticalRL">XX X<br>X XXX X<br>XX XXX</div>
-  <div data-offset-x="160" data-offset-y="160" data-expected-width="90" data-expected-height="30" class="secondRowFirstColumn LTR">X XX X</div>
-  <div data-offset-x="35" data-offset-y="160" data-expected-width="70" data-expected-height="80" class="secondRowSecondColumn verticalRL RTL">XX X<br>X XXX<br>X<br>XX XXX</div>
-</div>
-offsetLeft expected 35 but got 5
-PASS .grid 3
-FAIL .grid 4 assert_equals: 
-<div class="grid verticalRL">
-  <div data-offset-x="105" data-offset-y="70" data-expected-width="90" data-expected-height="30" class="firstRowFirstColumn horizontal">X XX X</div>
-  <div data-offset-x="140" data-offset-y="150" data-expected-width="100" data-expected-height="50" class="firstRowSecondColumn horizontal">XX X<br>X XXX X<br>XX XXX</div>
-  <div data-offset-x="5" data-offset-y="10" data-expected-width="90" data-expected-height="30" class="secondRowFirstColumn horizontal RTL">X XX X</div>
-  <div data-offset-x="5" data-offset-y="115" data-expected-width="70" data-expected-height="80" class="secondRowSecondColumn verticalLR">XX X<br>X XXX<br>X<br>XX XXX</div>
-</div>
-offsetTop expected 115 but got 110
-Harness: the test ran to completion.
-
diff --git a/third_party/blink/web_tests/external/wpt/css/css-grid/alignment/grid-self-alignment-non-static-positioned-items-009.html b/third_party/blink/web_tests/external/wpt/css/css-grid/alignment/grid-self-alignment-non-static-positioned-items-009.html
index ad2f8b1..4136c44 100644
--- a/third_party/blink/web_tests/external/wpt/css/css-grid/alignment/grid-self-alignment-non-static-positioned-items-009.html
+++ b/third_party/blink/web_tests/external/wpt/css/css-grid/alignment/grid-self-alignment-non-static-positioned-items-009.html
@@ -71,7 +71,6 @@
   setup({ explicit_done: true });
 </script>
 <body onload="document.fonts.ready.then(() => { checkLayout('.grid'); })">
-<!-- The test cases with vertical-rl wirting-mode will fail becauuse of bug 779105 -->
 <div class="grid">
   <div data-offset-x="5"   data-offset-y="0"   data-expected-width="40" data-expected-height="80" class="firstRowFirstColumn verticalLR">X XX X</div>
   <div data-offset-x="180" data-offset-y="60"  data-expected-width="60" data-expected-height="90" class="firstRowSecondColumn verticalRL">XX X<br>X XXX X<br>XX XXX</div>
@@ -83,7 +82,7 @@
   <div data-offset-x="155" data-offset-y="0"   data-expected-width="40" data-expected-height="80" class="firstRowFirstColumn verticalLR">X XX X</div>
   <div data-offset-x="80"  data-offset-y="60"  data-expected-width="60" data-expected-height="90" class="firstRowSecondColumn verticalRL">XX X<br>X XXX X<br>XX XXX</div>
   <div data-offset-x="160" data-offset-y="160" data-expected-width="90" data-expected-height="30" class="secondRowFirstColumn LTR">X XX X</div>
-  <div data-offset-x="35"  data-offset-y="160" data-expected-width="70" data-expected-height="80" class="secondRowSecondColumn verticalRL RTL">XX X<br>X XXX<br>X<br>XX XXX</div>
+  <div data-offset-x="5"   data-offset-y="160" data-expected-width="70" data-expected-height="80" class="secondRowSecondColumn verticalRL RTL">XX X<br>X XXX<br>X<br>XX XXX</div>
 </div>
 
 <br><br>
@@ -99,6 +98,6 @@
   <div data-offset-x="105" data-offset-y="70"  data-expected-width="90"  data-expected-height="30" class="firstRowFirstColumn horizontal">X XX X</div>
   <div data-offset-x="140" data-offset-y="150" data-expected-width="100" data-expected-height="50" class="firstRowSecondColumn horizontal">XX X<br>X XXX X<br>XX XXX</div>
   <div data-offset-x="5"   data-offset-y="10"  data-expected-width="90"  data-expected-height="30" class="secondRowFirstColumn horizontal RTL">X XX X</div>
-  <div data-offset-x="5"   data-offset-y="115" data-expected-width="70"  data-expected-height="80" class="secondRowSecondColumn verticalLR">XX X<br>X XXX<br>X<br>XX XXX</div>
+  <div data-offset-x="5"   data-offset-y="110" data-expected-width="70"  data-expected-height="80" class="secondRowSecondColumn verticalLR">XX X<br>X XXX<br>X<br>XX XXX</div>
 </div>
 </body>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-grid/alignment/grid-self-alignment-non-static-positioned-items-010-expected.txt b/third_party/blink/web_tests/external/wpt/css/css-grid/alignment/grid-self-alignment-non-static-positioned-items-010-expected.txt
deleted file mode 100644
index 3a100a48..0000000
--- a/third_party/blink/web_tests/external/wpt/css/css-grid/alignment/grid-self-alignment-non-static-positioned-items-010-expected.txt
+++ /dev/null
@@ -1,21 +0,0 @@
-This is a testharness.js-based test.
-PASS .grid 1
-FAIL .grid 2 assert_equals: 
-<div class="grid RTL">
-  <div data-offset-x="155" data-offset-y="0" data-expected-width="40" data-expected-height="80" class="firstRowFirstColumn verticalLR">X XX X</div>
-  <div data-offset-x="80" data-offset-y="60" data-expected-width="60" data-expected-height="90" class="firstRowSecondColumn verticalRL">XX X<br>X XXX X<br>XX XXX</div>
-  <div data-offset-x="160" data-offset-y="160" data-expected-width="90" data-expected-height="30" class="secondRowFirstColumn LTR">X XX X</div>
-  <div data-offset-x="35" data-offset-y="160" data-expected-width="70" data-expected-height="80" class="secondRowSecondColumn verticalRL RTL">XX X<br>X XXX<br>X<br>XX XXX</div>
-</div>
-offsetLeft expected 35 but got 5
-PASS .grid 3
-FAIL .grid 4 assert_equals: 
-<div class="grid verticalRL">
-  <div data-offset-x="105" data-offset-y="70" data-expected-width="90" data-expected-height="30" class="firstRowFirstColumn horizontal">X XX X</div>
-  <div data-offset-x="140" data-offset-y="150" data-expected-width="100" data-expected-height="50" class="firstRowSecondColumn horizontal">XX X<br>X XXX X<br>XX XXX</div>
-  <div data-offset-x="5" data-offset-y="10" data-expected-width="90" data-expected-height="30" class="secondRowFirstColumn horizontal RTL">X XX X</div>
-  <div data-offset-x="5" data-offset-y="115" data-expected-width="70" data-expected-height="80" class="secondRowSecondColumn verticalLR">XX X<br>X XXX<br>X<br>XX XXX</div>
-</div>
-offsetTop expected 115 but got 110
-Harness: the test ran to completion.
-
diff --git a/third_party/blink/web_tests/external/wpt/css/css-grid/alignment/grid-self-alignment-non-static-positioned-items-010.html b/third_party/blink/web_tests/external/wpt/css/css-grid/alignment/grid-self-alignment-non-static-positioned-items-010.html
index 85606201..86dc3257 100644
--- a/third_party/blink/web_tests/external/wpt/css/css-grid/alignment/grid-self-alignment-non-static-positioned-items-010.html
+++ b/third_party/blink/web_tests/external/wpt/css/css-grid/alignment/grid-self-alignment-non-static-positioned-items-010.html
@@ -67,7 +67,6 @@
   setup({ explicit_done: true });
 </script>
 <body onload="document.fonts.ready.then(() => { checkLayout('.grid'); })">
-<!-- The test cases with vertical-rl wirting-mode will fail becauuse of bug 779105 -->
 <div class="grid">
   <div data-offset-x="5"   data-offset-y="0"   data-expected-width="40" data-expected-height="80" class="firstRowFirstColumn verticalLR">X XX X</div>
   <div data-offset-x="180" data-offset-y="60"  data-expected-width="60" data-expected-height="90" class="firstRowSecondColumn verticalRL">XX X<br>X XXX X<br>XX XXX</div>
@@ -79,7 +78,7 @@
   <div data-offset-x="155" data-offset-y="0"   data-expected-width="40" data-expected-height="80" class="firstRowFirstColumn verticalLR">X XX X</div>
   <div data-offset-x="80"  data-offset-y="60"  data-expected-width="60" data-expected-height="90" class="firstRowSecondColumn verticalRL">XX X<br>X XXX X<br>XX XXX</div>
   <div data-offset-x="160" data-offset-y="160" data-expected-width="90" data-expected-height="30" class="secondRowFirstColumn LTR">X XX X</div>
-  <div data-offset-x="35"  data-offset-y="160" data-expected-width="70" data-expected-height="80" class="secondRowSecondColumn verticalRL RTL">XX X<br>X XXX<br>X<br>XX XXX</div>
+  <div data-offset-x="5"   data-offset-y="160" data-expected-width="70" data-expected-height="80" class="secondRowSecondColumn verticalRL RTL">XX X<br>X XXX<br>X<br>XX XXX</div>
 </div>
 
 <br><br>
@@ -95,6 +94,6 @@
   <div data-offset-x="105" data-offset-y="70"  data-expected-width="90"  data-expected-height="30" class="firstRowFirstColumn horizontal">X XX X</div>
   <div data-offset-x="140" data-offset-y="150" data-expected-width="100" data-expected-height="50" class="firstRowSecondColumn horizontal">XX X<br>X XXX X<br>XX XXX</div>
   <div data-offset-x="5"   data-offset-y="10"  data-expected-width="90"  data-expected-height="30" class="secondRowFirstColumn horizontal RTL">X XX X</div>
-  <div data-offset-x="5"   data-offset-y="115" data-expected-width="70"  data-expected-height="80" class="secondRowSecondColumn verticalLR">XX X<br>X XXX<br>X<br>XX XXX</div>
+  <div data-offset-x="5"   data-offset-y="110" data-expected-width="70"  data-expected-height="80" class="secondRowSecondColumn verticalLR">XX X<br>X XXX<br>X<br>XX XXX</div>
 </div>
 </body>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-grid/alignment/grid-self-alignment-non-static-positioned-items-011-expected.txt b/third_party/blink/web_tests/external/wpt/css/css-grid/alignment/grid-self-alignment-non-static-positioned-items-011-expected.txt
index e1b6f15..edc37248 100644
--- a/third_party/blink/web_tests/external/wpt/css/css-grid/alignment/grid-self-alignment-non-static-positioned-items-011-expected.txt
+++ b/third_party/blink/web_tests/external/wpt/css/css-grid/alignment/grid-self-alignment-non-static-positioned-items-011-expected.txt
@@ -2,34 +2,27 @@
 FAIL .grid 1 assert_equals: 
 <div class="grid">
   <div data-offset-x="13" data-offset-y="2" data-expected-width="26" data-expected-height="70" class="firstRowFirstColumn verticalLR">X XX X</div>
-  <div data-offset-x="180" data-offset-y="60" data-expected-width="46" data-expected-height="80" class="firstRowSecondColumn verticalRL">XX X<br>X XXX X<br>XX XXX</div>
-  <div data-offset-x="0" data-offset-y="160" data-expected-width="76" data-expected-height="20" class="secondRowFirstColumn RTL">X XX X</div>
-  <div data-offset-x="105" data-offset-y="160" data-expected-width="56" data-expected-height="70" class="secondRowSecondColumn verticalLR RTL">XX X<br>X XXX<br>X<br>XX XXX</div>
+  <div data-offset-x="190" data-offset-y="64" data-expected-width="46" data-expected-height="80" class="firstRowSecondColumn verticalRL">XX X<br>X XXX X<br>XX XXX</div>
+  <div data-offset-x="8" data-offset-y="162" data-expected-width="76" data-expected-height="20" class="secondRowFirstColumn RTL">X XX X</div>
+  <div data-offset-x="113" data-offset-y="162" data-expected-width="56" data-expected-height="70" class="secondRowSecondColumn verticalLR RTL">XX X<br>X XXX<br>X<br>XX XXX</div>
 </div>
-offsetLeft expected 180 but got 194
+offsetLeft expected 190 but got 194
 FAIL .grid 2 assert_equals: 
 <div class="grid RTL">
-  <div data-offset-x="155" data-offset-y="0" data-expected-width="26" data-expected-height="70" class="firstRowFirstColumn verticalLR">X XX X</div>
-  <div data-offset-x="80" data-offset-y="60" data-expected-width="46" data-expected-height="80" class="firstRowSecondColumn verticalRL">XX X<br>X XXX X<br>XX XXX</div>
-  <div data-offset-x="160" data-offset-y="160" data-expected-width="76" data-expected-height="20" class="secondRowFirstColumn LTR">X XX X</div>
-  <div data-offset-x="35" data-offset-y="160" data-expected-width="56" data-expected-height="70" class="secondRowSecondColumn verticalRL RTL">XX X<br>X XXX<br>X<br>XX XXX</div>
+  <div data-offset-x="163" data-offset-y="2" data-expected-width="26" data-expected-height="70" class="firstRowFirstColumn verticalLR">X XX X</div>
+  <div data-offset-x="90" data-offset-y="64" data-expected-width="46" data-expected-height="80" class="firstRowSecondColumn verticalRL">XX X<br>X XXX X<br>XX XXX</div>
+  <div data-offset-x="170" data-offset-y="162" data-expected-width="76" data-expected-height="20" class="secondRowFirstColumn LTR">X XX X</div>
+  <div data-offset-x="13" data-offset-y="162" data-expected-width="56" data-expected-height="70" class="secondRowSecondColumn verticalRL RTL">XX X<br>X XXX<br>X<br>XX XXX</div>
 </div>
-offsetLeft expected 155 but got 163
-FAIL .grid 3 assert_equals: 
-<div class="grid verticalLR">
-  <div data-offset-x="5" data-offset-y="70" data-expected-width="76" data-expected-height="20" class="firstRowFirstColumn horizontal">X XX X</div>
-  <div data-offset-x="40" data-offset-y="150" data-expected-width="86" data-expected-height="40" class="firstRowSecondColumn horizontal">XX X<br>X XXX X<br>XX XXX</div>
-  <div data-offset-x="180" data-offset-y="10" data-expected-width="26" data-expected-height="20" class="secondRowFirstColumn verticalRL">X XX X</div>
-  <div data-offset-x="155" data-offset-y="110" data-expected-width="76" data-expected-height="50" class="secondRowSecondColumn horizontal RTL">XX X<br>X XXX<br>X<br>XX XXX</div>
-</div>
-offsetLeft expected 5 but got 13
+offsetLeft expected 90 but got 94
+PASS .grid 3
 FAIL .grid 4 assert_equals: 
 <div class="grid verticalRL">
-  <div data-offset-x="105" data-offset-y="70" data-expected-width="76" data-expected-height="20" class="firstRowFirstColumn horizontal">X XX X</div>
-  <div data-offset-x="140" data-offset-y="150" data-expected-width="86" data-expected-height="40" class="firstRowSecondColumn horizontal">XX X<br>X XXX X<br>XX XXX</div>
-  <div data-offset-x="5" data-offset-y="10" data-expected-width="76" data-expected-height="20" class="secondRowFirstColumn horizontal RTL">X XX X</div>
-  <div data-offset-x="5" data-offset-y="115" data-expected-width="56" data-expected-height="70" class="secondRowSecondColumn verticalLR">XX X<br>X XXX<br>X<br>XX XXX</div>
+  <div data-offset-x="113" data-offset-y="74" data-expected-width="76" data-expected-height="20" class="firstRowFirstColumn horizontal">X XX X</div>
+  <div data-offset-x="150" data-offset-y="153" data-expected-width="86" data-expected-height="40" class="firstRowSecondColumn horizontal">XX X<br>X XXX X<br>XX XXX</div>
+  <div data-offset-x="14" data-offset-y="12" data-expected-width="76" data-expected-height="20" class="secondRowFirstColumn horizontal RTL">X XX X</div>
+  <div data-offset-x="13" data-offset-y="112" data-expected-width="56" data-expected-height="70" class="secondRowSecondColumn verticalLR">XX X<br>X XXX<br>X<br>XX XXX</div>
 </div>
-offsetLeft expected 105 but got 117
+offsetLeft expected 113 but got 117
 Harness: the test ran to completion.
 
diff --git a/third_party/blink/web_tests/external/wpt/css/css-grid/alignment/grid-self-alignment-non-static-positioned-items-011.html b/third_party/blink/web_tests/external/wpt/css/css-grid/alignment/grid-self-alignment-non-static-positioned-items-011.html
index f3a8476..d12c182 100644
--- a/third_party/blink/web_tests/external/wpt/css/css-grid/alignment/grid-self-alignment-non-static-positioned-items-011.html
+++ b/third_party/blink/web_tests/external/wpt/css/css-grid/alignment/grid-self-alignment-non-static-positioned-items-011.html
@@ -73,34 +73,33 @@
   setup({ explicit_done: true });
 </script>
 <body onload="document.fonts.ready.then(() => { checkLayout('.grid'); })">
-<!-- The test cases with vertical-rl wirting-mode will fail becauuse of bug 779105 -->
 <div class="grid">
   <div data-offset-x="13"  data-offset-y="2"   data-expected-width="26" data-expected-height="70" class="firstRowFirstColumn verticalLR">X XX X</div>
-  <div data-offset-x="180" data-offset-y="60"  data-expected-width="46" data-expected-height="80" class="firstRowSecondColumn verticalRL">XX X<br>X XXX X<br>XX XXX</div>
-  <div data-offset-x="0"   data-offset-y="160" data-expected-width="76" data-expected-height="20" class="secondRowFirstColumn RTL">X XX X</div>
-  <div data-offset-x="105" data-offset-y="160" data-expected-width="56" data-expected-height="70" class="secondRowSecondColumn verticalLR RTL">XX X<br>X XXX<br>X<br>XX XXX</div>
+  <div data-offset-x="190" data-offset-y="64"  data-expected-width="46" data-expected-height="80" class="firstRowSecondColumn verticalRL">XX X<br>X XXX X<br>XX XXX</div>
+  <div data-offset-x="8"   data-offset-y="162" data-expected-width="76" data-expected-height="20" class="secondRowFirstColumn RTL">X XX X</div>
+  <div data-offset-x="113" data-offset-y="162" data-expected-width="56" data-expected-height="70" class="secondRowSecondColumn verticalLR RTL">XX X<br>X XXX<br>X<br>XX XXX</div>
 </div>
 
 <div class="grid RTL">
-  <div data-offset-x="155" data-offset-y="0"   data-expected-width="26" data-expected-height="70" class="firstRowFirstColumn verticalLR">X XX X</div>
-  <div data-offset-x="80"  data-offset-y="60"  data-expected-width="46" data-expected-height="80" class="firstRowSecondColumn verticalRL">XX X<br>X XXX X<br>XX XXX</div>
-  <div data-offset-x="160" data-offset-y="160" data-expected-width="76" data-expected-height="20" class="secondRowFirstColumn LTR">X XX X</div>
-  <div data-offset-x="35"  data-offset-y="160" data-expected-width="56" data-expected-height="70" class="secondRowSecondColumn verticalRL RTL">XX X<br>X XXX<br>X<br>XX XXX</div>
+  <div data-offset-x="163" data-offset-y="2"   data-expected-width="26" data-expected-height="70" class="firstRowFirstColumn verticalLR">X XX X</div>
+  <div data-offset-x="90"  data-offset-y="64"  data-expected-width="46" data-expected-height="80" class="firstRowSecondColumn verticalRL">XX X<br>X XXX X<br>XX XXX</div>
+  <div data-offset-x="170" data-offset-y="162" data-expected-width="76" data-expected-height="20" class="secondRowFirstColumn LTR">X XX X</div>
+  <div data-offset-x="13"  data-offset-y="162" data-expected-width="56" data-expected-height="70" class="secondRowSecondColumn verticalRL RTL">XX X<br>X XXX<br>X<br>XX XXX</div>
 </div>
 
 <br><br>
 
 <div class="grid verticalLR">
-  <div data-offset-x="5"   data-offset-y="70"  data-expected-width="76" data-expected-height="20" class="firstRowFirstColumn horizontal">X XX X</div>
-  <div data-offset-x="40"  data-offset-y="150" data-expected-width="86" data-expected-height="40" class="firstRowSecondColumn horizontal">XX X<br>X XXX X<br>XX XXX</div>
-  <div data-offset-x="180" data-offset-y="10"  data-expected-width="26" data-expected-height="20" class="secondRowFirstColumn verticalRL">X XX X</div>
-  <div data-offset-x="155" data-offset-y="110" data-expected-width="76" data-expected-height="50" class="secondRowSecondColumn horizontal RTL">XX X<br>X XXX<br>X<br>XX XXX</div>
+  <div data-offset-x="13"  data-offset-y="74"  data-expected-width="76" data-expected-height="20" class="firstRowFirstColumn horizontal">X XX X</div>
+  <div data-offset-x="50"  data-offset-y="153" data-expected-width="86" data-expected-height="40" class="firstRowSecondColumn horizontal">XX X<br>X XXX X<br>XX XXX</div>
+  <div data-offset-x="189" data-offset-y="12"  data-expected-width="26" data-expected-height="70" class="secondRowFirstColumn verticalRL">X XX X</div>
+  <div data-offset-x="163" data-offset-y="112" data-expected-width="76" data-expected-height="50" class="secondRowSecondColumn horizontal RTL">XX X<br>X XXX<br>X<br>XX XXX</div>
 </div>
 
 <div class="grid verticalRL">
-  <div data-offset-x="105" data-offset-y="70"  data-expected-width="76" data-expected-height="20" class="firstRowFirstColumn horizontal">X XX X</div>
-  <div data-offset-x="140" data-offset-y="150" data-expected-width="86" data-expected-height="40" class="firstRowSecondColumn horizontal">XX X<br>X XXX X<br>XX XXX</div>
-  <div data-offset-x="5"   data-offset-y="10"  data-expected-width="76"  data-expected-height="20" class="secondRowFirstColumn horizontal RTL">X XX X</div>
-  <div data-offset-x="5"   data-offset-y="115" data-expected-width="56"  data-expected-height="70" class="secondRowSecondColumn verticalLR">XX X<br>X XXX<br>X<br>XX XXX</div>
+  <div data-offset-x="113" data-offset-y="74"  data-expected-width="76" data-expected-height="20" class="firstRowFirstColumn horizontal">X XX X</div>
+  <div data-offset-x="150" data-offset-y="153" data-expected-width="86" data-expected-height="40" class="firstRowSecondColumn horizontal">XX X<br>X XXX X<br>XX XXX</div>
+  <div data-offset-x="14"  data-offset-y="12"  data-expected-width="76"  data-expected-height="20" class="secondRowFirstColumn horizontal RTL">X XX X</div>
+  <div data-offset-x="13"  data-offset-y="112" data-expected-width="56"  data-expected-height="70" class="secondRowSecondColumn verticalLR">XX X<br>X XXX<br>X<br>XX XXX</div>
 </div>
 </body>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-grid/alignment/grid-self-alignment-non-static-positioned-items-012-expected.txt b/third_party/blink/web_tests/external/wpt/css/css-grid/alignment/grid-self-alignment-non-static-positioned-items-012-expected.txt
deleted file mode 100644
index 07f4d64..0000000
--- a/third_party/blink/web_tests/external/wpt/css/css-grid/alignment/grid-self-alignment-non-static-positioned-items-012-expected.txt
+++ /dev/null
@@ -1,35 +0,0 @@
-This is a testharness.js-based test.
-FAIL .grid 1 assert_equals: 
-<div class="grid">
-  <div data-offset-x="70" data-offset-y="2" data-expected-width="26" data-expected-height="70" class="firstRowFirstColumn verticalLR">X XX X</div>
-  <div data-offset-x="154" data-offset-y="64" data-expected-width="46" data-expected-height="80" class="firstRowSecondColumn verticalRL">XX X<br>X XXX X<br>XX XXX</div>
-  <div data-offset-x="20" data-offset-y="188" data-expected-width="76" data-expected-height="20" class="secondRowFirstColumn RTL">X XX X</div>
-  <div data-offset-x="108" data-offset-y="152" data-expected-width="56" data-expected-height="70" class="secondRowSecondColumn verticalLR RTL">XX X<br>X XXX<br>X<br>XX XXX</div>
-</div>
-offsetLeft expected 70 but got 73
-FAIL .grid 2 assert_equals: 
-<div class="grid RTL">
-  <div data-offset-x="220" data-offset-y="2" data-expected-width="26" data-expected-height="70" class="firstRowFirstColumn verticalLR">X XX X</div>
-  <div data-offset-x="54" data-offset-y="64" data-expected-width="46" data-expected-height="80" class="firstRowSecondColumn verticalRL">XX X<br>X XXX X<br>XX XXX</div>
-  <div data-offset-x="158" data-offset-y="188" data-expected-width="76" data-expected-height="20" class="secondRowFirstColumn LTR">X XX X</div>
-  <div data-offset-x="8" data-offset-y="152" data-expected-width="56" data-expected-height="70" class="secondRowSecondColumn verticalRL RTL">XX X<br>X XXX<br>X<br>XX XXX</div>
-</div>
-offsetLeft expected 220 but got 223
-FAIL .grid 3 assert_equals: 
-<div class="grid verticalLR">
-  <div data-offset-x="8" data-offset-y="74" data-expected-width="76" data-expected-height="20" class="firstRowFirstColumn horizontal">X XX X</div>
-  <div data-offset-x="60" data-offset-y="153" data-expected-width="86" data-expected-height="40" class="firstRowSecondColumn horizontal">XX X<br>X XXX X<br>XX XXX</div>
-  <div data-offset-x="189" data-offset-y="2" data-expected-width="26" data-expected-height="70" class="secondRowFirstColumn verticalRL">X XX X</div>
-  <div data-offset-x="158" data-offset-y="102" data-expected-width="76" data-expected-height="50" class="secondRowSecondColumn horizontal RTL">XX X<br>X XXX<br>X<br>XX XXX</div>
-</div>
-offsetLeft expected 8 but got 11
-FAIL .grid 4 assert_equals: 
-<div class="grid verticalRL">
-  <div data-offset-x="170" data-offset-y="74" data-expected-width="76" data-expected-height="20" class="firstRowFirstColumn horizontal">X XX X</div>
-  <div data-offset-x="108" data-offset-y="153" data-expected-width="86" data-expected-height="40" class="firstRowSecondColumn horizontal">XX X<br>X XXX X<br>XX XXX</div>
-  <div data-offset-x="14" data-offset-y="2" data-expected-width="76" data-expected-height="20" class="secondRowFirstColumn horizontal RTL">X XX X</div>
-  <div data-offset-x="40" data-offset-y="102" data-expected-width="56" data-expected-height="70" class="secondRowSecondColumn verticalLR">XX X<br>X XXX<br>X<br>XX XXX</div>
-</div>
-offsetLeft expected 170 but got 173
-Harness: the test ran to completion.
-
diff --git a/third_party/blink/web_tests/external/wpt/css/css-grid/alignment/grid-self-alignment-non-static-positioned-items-012.html b/third_party/blink/web_tests/external/wpt/css/css-grid/alignment/grid-self-alignment-non-static-positioned-items-012.html
index 0121846f..003c3bbb 100644
--- a/third_party/blink/web_tests/external/wpt/css/css-grid/alignment/grid-self-alignment-non-static-positioned-items-012.html
+++ b/third_party/blink/web_tests/external/wpt/css/css-grid/alignment/grid-self-alignment-non-static-positioned-items-012.html
@@ -77,35 +77,34 @@
   setup({ explicit_done: true });
 </script>
 <body onload="document.fonts.ready.then(() => { checkLayout('.grid'); })">
-<!-- The test cases with vertical-rl wirting-mode will fail becauuse of bug 779105 -->
 <div class="grid">
-  <div data-offset-x="70"  data-offset-y="2"   data-expected-width="26" data-expected-height="70" class="firstRowFirstColumn verticalLR">X XX X</div>
-  <div data-offset-x="154" data-offset-y="64"  data-expected-width="46" data-expected-height="80" class="firstRowSecondColumn verticalRL">XX X<br>X XXX X<br>XX XXX</div>
-  <div data-offset-x="20"  data-offset-y="188" data-expected-width="76" data-expected-height="20" class="secondRowFirstColumn RTL">X XX X</div>
-  <div data-offset-x="108" data-offset-y="152" data-expected-width="56" data-expected-height="70" class="secondRowSecondColumn verticalLR RTL">XX X<br>X XXX<br>X<br>XX XXX</div>
+  <div data-offset-x="73"  data-offset-y="3"   data-expected-width="26" data-expected-height="70" class="firstRowFirstColumn verticalLR">X XX X</div>
+  <div data-offset-x="157" data-offset-y="65"  data-expected-width="46" data-expected-height="80" class="firstRowSecondColumn verticalRL">XX X<br>X XXX X<br>XX XXX</div>
+  <div data-offset-x="23"  data-offset-y="189" data-expected-width="76" data-expected-height="20" class="secondRowFirstColumn RTL">X XX X</div>
+  <div data-offset-x="111" data-offset-y="153" data-expected-width="56" data-expected-height="70" class="secondRowSecondColumn verticalLR RTL">XX X<br>X XXX<br>X<br>XX XXX</div>
 </div>
 
 <div class="grid RTL">
-  <div data-offset-x="220" data-offset-y="2"   data-expected-width="26" data-expected-height="70" class="firstRowFirstColumn verticalLR">X XX X</div>
-  <div data-offset-x="54"  data-offset-y="64"  data-expected-width="46" data-expected-height="80" class="firstRowSecondColumn verticalRL">XX X<br>X XXX X<br>XX XXX</div>
-  <div data-offset-x="158" data-offset-y="188" data-expected-width="76" data-expected-height="20" class="secondRowFirstColumn LTR">X XX X</div>
-  <div data-offset-x="8"   data-offset-y="152" data-expected-width="56" data-expected-height="70" class="secondRowSecondColumn verticalRL RTL">XX X<br>X XXX<br>X<br>XX XXX</div>
+  <div data-offset-x="223" data-offset-y="3"   data-expected-width="26" data-expected-height="70" class="firstRowFirstColumn verticalLR">X XX X</div>
+  <div data-offset-x="57"  data-offset-y="65"  data-expected-width="46" data-expected-height="80" class="firstRowSecondColumn verticalRL">XX X<br>X XXX X<br>XX XXX</div>
+  <div data-offset-x="161" data-offset-y="189" data-expected-width="76" data-expected-height="20" class="secondRowFirstColumn LTR">X XX X</div>
+  <div data-offset-x="11"  data-offset-y="153" data-expected-width="56" data-expected-height="70" class="secondRowSecondColumn verticalRL RTL">XX X<br>X XXX<br>X<br>XX XXX</div>
 </div>
 
 <br><br>
 
 <div class="grid verticalLR">
-  <div data-offset-x="8"   data-offset-y="74"  data-expected-width="76" data-expected-height="20" class="firstRowFirstColumn horizontal">X XX X</div>
-  <div data-offset-x="60"  data-offset-y="153" data-expected-width="86" data-expected-height="40" class="firstRowSecondColumn horizontal">XX X<br>X XXX X<br>XX XXX</div>
-  <div data-offset-x="189" data-offset-y="2"   data-expected-width="26" data-expected-height="70" class="secondRowFirstColumn verticalRL">X XX X</div>
-  <div data-offset-x="158" data-offset-y="102" data-expected-width="76" data-expected-height="50" class="secondRowSecondColumn horizontal RTL">XX X<br>X XXX<br>X<br>XX XXX</div>
+  <div data-offset-x="11"  data-offset-y="75"  data-expected-width="76" data-expected-height="20" class="firstRowFirstColumn horizontal">X XX X</div>
+  <div data-offset-x="63"  data-offset-y="154" data-expected-width="86" data-expected-height="40" class="firstRowSecondColumn horizontal">XX X<br>X XXX X<br>XX XXX</div>
+  <div data-offset-x="192" data-offset-y="3"   data-expected-width="26" data-expected-height="70" class="secondRowFirstColumn verticalRL">X XX X</div>
+  <div data-offset-x="161" data-offset-y="103" data-expected-width="76" data-expected-height="50" class="secondRowSecondColumn horizontal RTL">XX X<br>X XXX<br>X<br>XX XXX</div>
 </div>
 
 <div class="grid verticalRL">
-  <div data-offset-x="170" data-offset-y="74"  data-expected-width="76" data-expected-height="20" class="firstRowFirstColumn horizontal">X XX X</div>
-  <div data-offset-x="108" data-offset-y="153" data-expected-width="86" data-expected-height="40" class="firstRowSecondColumn horizontal">XX X<br>X XXX X<br>XX XXX</div>
-  <div data-offset-x="14"  data-offset-y="2"   data-expected-width="76" data-expected-height="20" class="secondRowFirstColumn horizontal RTL">X XX X</div>
-  <div data-offset-x="40"  data-offset-y="102" data-expected-width="56" data-expected-height="70" class="secondRowSecondColumn verticalLR">XX X<br>X XXX<br>X<br>XX XXX</div>
+  <div data-offset-x="173" data-offset-y="75"  data-expected-width="76" data-expected-height="20" class="firstRowFirstColumn horizontal">X XX X</div>
+  <div data-offset-x="111" data-offset-y="154" data-expected-width="86" data-expected-height="40" class="firstRowSecondColumn horizontal">XX X<br>X XXX X<br>XX XXX</div>
+  <div data-offset-x="17"  data-offset-y="3"   data-expected-width="76" data-expected-height="20" class="secondRowFirstColumn horizontal RTL">X XX X</div>
+  <div data-offset-x="43"  data-offset-y="103" data-expected-width="56" data-expected-height="70" class="secondRowSecondColumn verticalLR">XX X<br>X XXX<br>X<br>XX XXX</div>
 </div>
 
 </body>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-layout-api/DIR_METADATA b/third_party/blink/web_tests/external/wpt/css/css-layout-api/DIR_METADATA
new file mode 100644
index 0000000..85377a7
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/css-layout-api/DIR_METADATA
@@ -0,0 +1,7 @@
+monorail {
+  component: "Blink>Layout"
+}
+team_email: "layout-dev@chromium.org"
+wpt {
+  notify: YES
+}
diff --git a/third_party/blink/web_tests/external/wpt/css/css-layout-api/OWNERS b/third_party/blink/web_tests/external/wpt/css/css-layout-api/OWNERS
index ba7fc91..fc604d4 100644
--- a/third_party/blink/web_tests/external/wpt/css/css-layout-api/OWNERS
+++ b/third_party/blink/web_tests/external/wpt/css/css-layout-api/OWNERS
@@ -1,4 +1 @@
-# TEAM: layout-dev@chromium.org
-# COMPONENT: Blink>Layout
-# WPT-NOTIFY: true
 file://third_party/blink/renderer/core/layout/ng/custom/OWNERS
diff --git a/third_party/blink/web_tests/external/wpt/css/css-logical/DIR_METADATA b/third_party/blink/web_tests/external/wpt/css/css-logical/DIR_METADATA
new file mode 100644
index 0000000..85377a7
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/css-logical/DIR_METADATA
@@ -0,0 +1,7 @@
+monorail {
+  component: "Blink>Layout"
+}
+team_email: "layout-dev@chromium.org"
+wpt {
+  notify: YES
+}
diff --git a/third_party/blink/web_tests/external/wpt/css/css-logical/OWNERS b/third_party/blink/web_tests/external/wpt/css/css-logical/OWNERS
deleted file mode 100644
index 9b2e5be..0000000
--- a/third_party/blink/web_tests/external/wpt/css/css-logical/OWNERS
+++ /dev/null
@@ -1,3 +0,0 @@
-# TEAM: layout-dev@chromium.org
-# COMPONENT: Blink>Layout
-# WPT-NOTIFY: true
diff --git a/third_party/blink/web_tests/external/wpt/css/css-masking/DIR_METADATA b/third_party/blink/web_tests/external/wpt/css/css-masking/DIR_METADATA
new file mode 100644
index 0000000..765407c4
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/css-masking/DIR_METADATA
@@ -0,0 +1,7 @@
+monorail {
+  component: "Blink>Paint"
+}
+team_email: "paint-dev@chromium.org"
+wpt {
+  notify: YES
+}
diff --git a/third_party/blink/web_tests/external/wpt/css/css-masking/OWNERS b/third_party/blink/web_tests/external/wpt/css/css-masking/OWNERS
deleted file mode 100644
index 5f3e240..0000000
--- a/third_party/blink/web_tests/external/wpt/css/css-masking/OWNERS
+++ /dev/null
@@ -1,3 +0,0 @@
-# TEAM: paint-dev@chromium.org
-# COMPONENT: Blink>Paint
-# WPT-NOTIFY: true
diff --git a/third_party/blink/web_tests/external/wpt/css/css-multicol/DIR_METADATA b/third_party/blink/web_tests/external/wpt/css/css-multicol/DIR_METADATA
new file mode 100644
index 0000000..8b5d8f1f
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/css-multicol/DIR_METADATA
@@ -0,0 +1,7 @@
+monorail {
+  component: "Blink>Layout>MultiCol"
+}
+team_email: "layout-dev@chromium.org"
+wpt {
+  notify: YES
+}
diff --git a/third_party/blink/web_tests/external/wpt/css/css-multicol/OWNERS b/third_party/blink/web_tests/external/wpt/css/css-multicol/OWNERS
index 6a3de9b..b28f7fb 100644
--- a/third_party/blink/web_tests/external/wpt/css/css-multicol/OWNERS
+++ b/third_party/blink/web_tests/external/wpt/css/css-multicol/OWNERS
@@ -1,4 +1 @@
-# TEAM: layout-dev@chromium.org
-# COMPONENT: Blink>Layout>MultiCol
-# WPT-NOTIFY: true
 mstensho@chromium.org
diff --git a/third_party/blink/web_tests/external/wpt/css/css-multicol/abspos-containing-block-outside-spanner-ref.html b/third_party/blink/web_tests/external/wpt/css/css-multicol/abspos-containing-block-outside-spanner-ref.html
new file mode 100644
index 0000000..a221907
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/css-multicol/abspos-containing-block-outside-spanner-ref.html
@@ -0,0 +1,4 @@
+<!DOCTYPE html>
+<p>There should be no red.</p>
+<div style="position:absolute; top:0; left:0; background-color:green; height:100px; width:100px;"></div>
+<div style="position:absolute; bottom:0; right:0; background-color:green; height:100px; width:100px;"></div>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-multicol/abspos-containing-block-outside-spanner.html b/third_party/blink/web_tests/external/wpt/css/css-multicol/abspos-containing-block-outside-spanner.html
new file mode 100644
index 0000000..2a9ee38
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/css-multicol/abspos-containing-block-outside-spanner.html
@@ -0,0 +1,15 @@
+<!DOCTYPE html>
+<title>Abspos elements nested inside a column spanner</title>
+<link rel="help" href="href=https://drafts.csswg.org/css-multicol/">
+<link rel="match" href="abspos-containing-block-outside-spanner-ref.html">
+<p>There should be no red.</p>
+<div style="position:absolute; top:0; left:0; background-color:red; height:100px; width:100px;"></div>
+<div style="position:absolute; bottom:0; right:0; background-color:red; height:100px; width:100px;"></div>
+<div style="columns:3; column-gap:1em; width:20em;">
+    <div style="position:relative;">
+        <div style="column-span:all; height:50px;">
+            <div style="position:absolute; top:0; left:0; background-color:green; height:100px; width:100px;"></div>
+            <div style="position:absolute; bottom:0; right:0; background-color:green; height:100px; width:100px;"></div>
+        </div>
+    </div>
+</div>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-namespaces/DIR_METADATA b/third_party/blink/web_tests/external/wpt/css/css-namespaces/DIR_METADATA
new file mode 100644
index 0000000..a1cb39c
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/css-namespaces/DIR_METADATA
@@ -0,0 +1,4 @@
+monorail {
+  component: "Blink>CSS"
+}
+team_email: "layout-dev@chromium.org"
diff --git a/third_party/blink/web_tests/external/wpt/css/css-namespaces/OWNERS b/third_party/blink/web_tests/external/wpt/css/css-namespaces/OWNERS
index 73cfd0e..54387d3 100644
--- a/third_party/blink/web_tests/external/wpt/css/css-namespaces/OWNERS
+++ b/third_party/blink/web_tests/external/wpt/css/css-namespaces/OWNERS
@@ -1,5 +1,3 @@
-# TEAM: layout-dev@chromium.org
-# COMPONENT: Blink>CSS
 futhark@chromium.org
 andruud@chromium.org
 ericwilligers@chromium.org
diff --git a/third_party/blink/web_tests/external/wpt/css/css-position/DIR_METADATA b/third_party/blink/web_tests/external/wpt/css/css-position/DIR_METADATA
new file mode 100644
index 0000000..85377a7
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/css-position/DIR_METADATA
@@ -0,0 +1,7 @@
+monorail {
+  component: "Blink>Layout"
+}
+team_email: "layout-dev@chromium.org"
+wpt {
+  notify: YES
+}
diff --git a/third_party/blink/web_tests/external/wpt/css/css-position/OWNERS b/third_party/blink/web_tests/external/wpt/css/css-position/OWNERS
index 8f03d3c..38ad6be 100644
--- a/third_party/blink/web_tests/external/wpt/css/css-position/OWNERS
+++ b/third_party/blink/web_tests/external/wpt/css/css-position/OWNERS
@@ -1,4 +1 @@
-# TEAM: layout-dev@chromium.org
-# COMPONENT: Blink>Layout
-# WPT-NOTIFY: true
 smcgruer@chromium.org
diff --git a/third_party/blink/web_tests/external/wpt/css/css-properties-values-api/DIR_METADATA b/third_party/blink/web_tests/external/wpt/css/css-properties-values-api/DIR_METADATA
new file mode 100644
index 0000000..ea45d26
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/css-properties-values-api/DIR_METADATA
@@ -0,0 +1,7 @@
+monorail {
+  component: "Blink>CSS"
+}
+team_email: "layout-dev@chromium.org"
+wpt {
+  notify: YES
+}
diff --git a/third_party/blink/web_tests/external/wpt/css/css-properties-values-api/OWNERS b/third_party/blink/web_tests/external/wpt/css/css-properties-values-api/OWNERS
index c6888c4..4305d91 100644
--- a/third_party/blink/web_tests/external/wpt/css/css-properties-values-api/OWNERS
+++ b/third_party/blink/web_tests/external/wpt/css/css-properties-values-api/OWNERS
@@ -1,4 +1 @@
-# TEAM: layout-dev@chromium.org
-# COMPONENT: Blink>CSS
-# WPT-NOTIFY: true
 andruud@chromium.org
diff --git a/third_party/blink/web_tests/external/wpt/css/css-scoping/DIR_METADATA b/third_party/blink/web_tests/external/wpt/css/css-scoping/DIR_METADATA
new file mode 100644
index 0000000..a1cb39c
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/css-scoping/DIR_METADATA
@@ -0,0 +1,4 @@
+monorail {
+  component: "Blink>CSS"
+}
+team_email: "layout-dev@chromium.org"
diff --git a/third_party/blink/web_tests/external/wpt/css/css-scoping/OWNERS b/third_party/blink/web_tests/external/wpt/css/css-scoping/OWNERS
index 3456394..53463b3 100644
--- a/third_party/blink/web_tests/external/wpt/css/css-scoping/OWNERS
+++ b/third_party/blink/web_tests/external/wpt/css/css-scoping/OWNERS
@@ -1,3 +1 @@
-# TEAM: layout-dev@chromium.org
-# COMPONENT: Blink>CSS
 kojii@chromium.org
diff --git a/third_party/blink/web_tests/external/wpt/css/selectors/focus-visible-002-manual.html b/third_party/blink/web_tests/external/wpt/css/selectors/focus-visible-002.html
similarity index 89%
rename from third_party/blink/web_tests/external/wpt/css/selectors/focus-visible-002-manual.html
rename to third_party/blink/web_tests/external/wpt/css/selectors/focus-visible-002.html
index f86082df..19c937a 100644
--- a/third_party/blink/web_tests/external/wpt/css/selectors/focus-visible-002-manual.html
+++ b/third_party/blink/web_tests/external/wpt/css/selectors/focus-visible-002.html
@@ -8,6 +8,9 @@
   <link rel="help" href="https://drafts.csswg.org/selectors-4/#the-focus-visible-pseudo" />
   <script src="/resources/testharness.js"></script>
   <script src="/resources/testharnessreport.js"></script>
+  <script src="/resources/testdriver.js"></script>
+  <script src="/resources/testdriver-actions.js"></script>
+  <script src="/resources/testdriver-vendor.js"></script>
   <style>
     :focus-visible {
       outline: darkgreen dotted 1px; /* fallback for Edge */
@@ -37,7 +40,7 @@
   <div>
     <input data-tested="false" id="input3" type="email" value="Focus me."></input>
   </div>
-  <div>
+   <div>
     <input data-tested="false" id="input4" type="password" value="Focus me."></input>
   </div>
   <div>
@@ -78,6 +81,11 @@
   </div>
   <script>
     async_test(function(t) {
+        function mouseClickInTarget(selector) {
+            let target = document.querySelector(selector);
+            return test_driver.click(target);
+        }
+
         function testNextTarget(e) {
             let el = e.target;
             assert_equals(getComputedStyle(el).outlineColor, "rgb(0, 100, 0)");
@@ -91,6 +99,8 @@
             }
         }
         input1.addEventListener("click", t.step_func(testNextTarget));
+
+        mouseClickInTarget("[data-tested=false]");
     }, "Mouse focus on elements which would show a virtual keyboard should match :focus-visible");
   </script>
 </body>
diff --git a/third_party/blink/web_tests/external/wpt/serial/serialPort_loopback-manual.https.html b/third_party/blink/web_tests/external/wpt/serial/serialPort_loopback-manual.https.html
index 9e7801d..201a2de 100644
--- a/third_party/blink/web_tests/external/wpt/serial/serialPort_loopback-manual.https.html
+++ b/third_party/blink/web_tests/external/wpt/serial/serialPort_loopback-manual.https.html
@@ -92,90 +92,6 @@
 
         await port.close();
       }, 'Canceling the reader discards buffered data.');
-
-      manual_loopback_serial_test(async (t, port) => {
-        await port.open({baudRate: 115200, bufferSize: 1024});
-
-        // Create something much larger than bufferSize above.
-        const data = new Uint8Array(16 * 1024);
-        for (let i = 0; i < data.byteLength; ++i)
-          data[i] = (i / 1024) & 0xff;
-
-        // Completely write |data| to the port without waiting for it to be
-        // received.
-        const writer = port.writable.getWriter();
-        writer.write(data);
-        await writer.close();
-
-        const reader = port.readable.getReader();
-        const chunks = [];
-        let actualLength = 0;
-        while (true) {
-          try {
-            const {value, done} = await reader.read();
-            if (value) {
-              actualLength += value.byteLength;
-              chunks.push(value);
-            }
-            if (done) {
-              assert_unreached("Unexpected end of stream.");
-              break;
-            }
-          } catch (e) {
-            assert_equals(e.name, 'BufferOverrunError');
-            break;
-          }
-        }
-        reader.releaseLock();
-
-        const buffer = new Uint8Array(actualLength);
-        chunks.reduce((offset, chunk) => {
-          buffer.set(chunk, offset);
-          return offset + chunk.byteLength;
-        }, 0);
-
-        assert_greater_than(actualLength, 0);
-        compareArrays(buffer, data.slice(0, actualLength));
-
-        await port.close();
-      }, 'Overflowing the receive buffer triggers an error.');
-
-      manual_loopback_serial_test(async (t, port) => {
-        await port.open({baudRate: 115200, bufferSize: 1024});
-
-        let reader = port.readable.getReader();
-        let readPromise = (async () => {
-          // A single zero byte will be read before the break is detected.
-          const {value, done} = await reader.read();
-          compareArrays(value, new Uint8Array([0]));
-          assert_false(done);
-
-          try {
-            const {value, done} = await reader.read();
-            assert_unreached(`Expected break, got ${value.byteLength} bytes`);
-          } catch (e) {
-            assert_equals(e.constructor, DOMException);
-            assert_equals(e.name, 'BreakError');
-          }
-        })();
-
-        await port.setSignals({break: true});
-        await readPromise;
-        await port.setSignals({break: false});
-
-        const writer = port.writable.getWriter();
-        // |data| is small enough to be completely transmitted.
-        let data = new Uint8Array([1, 2, 3, 4, 5, 6, 7, 8]);
-        await writer.write(data);
-        writer.releaseLock();
-
-        reader = port.readable.getReader();
-        const buffer = await readWithLength(reader, data.byteLength);;
-        compareArrays(buffer, data);
-        reader.releaseLock();
-
-        await port.close();
-      }, 'Break is detected.');
     </script>
   </body>
 </html>
diff --git a/third_party/blink/web_tests/external/wpt/serial/serialPort_loopback_BreakError-manual.https.html b/third_party/blink/web_tests/external/wpt/serial/serialPort_loopback_BreakError-manual.https.html
new file mode 100644
index 0000000..22b1531
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/serial/serialPort_loopback_BreakError-manual.https.html
@@ -0,0 +1,55 @@
+<!DOCTYPE html>
+<html>
+  <head>
+    <meta charset="utf-8">
+    <title></title>
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="resources/common.js"></script>
+    <script src="resources/manual.js"></script>
+  </head>
+  <body>
+    <p>
+      These tests require a connected serial device configured to act as a
+      "loopback" device, with the transmit and receive pins wired together.
+    </p>
+    <script>
+      manual_loopback_serial_test(async (t, port) => {
+        await port.open({baudRate: 115200, bufferSize: 1024});
+
+        let reader = port.readable.getReader();
+        let readPromise = (async () => {
+          // A single zero byte will be read before the break is detected.
+          const {value, done} = await reader.read();
+          compareArrays(value, new Uint8Array([0]));
+          assert_false(done);
+
+          try {
+            const {value, done} = await reader.read();
+            assert_unreached(`Expected break, got ${value.byteLength} bytes`);
+          } catch (e) {
+            assert_equals(e.constructor, DOMException);
+            assert_equals(e.name, 'BreakError');
+          }
+        })();
+
+        await port.setSignals({break: true});
+        await readPromise;
+        await port.setSignals({break: false});
+
+        const writer = port.writable.getWriter();
+        // |data| is small enough to be completely transmitted.
+        let data = new Uint8Array([1, 2, 3, 4, 5, 6, 7, 8]);
+        await writer.write(data);
+        writer.releaseLock();
+
+        reader = port.readable.getReader();
+        const buffer = await readWithLength(reader, data.byteLength);;
+        compareArrays(buffer, data);
+        reader.releaseLock();
+
+        await port.close();
+      }, 'Break is detected.');
+    </script>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/serial/serialPort_loopback_BufferOverrunError-manual.https.html b/third_party/blink/web_tests/external/wpt/serial/serialPort_loopback_BufferOverrunError-manual.https.html
new file mode 100644
index 0000000..e90a5b0
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/serial/serialPort_loopback_BufferOverrunError-manual.https.html
@@ -0,0 +1,65 @@
+<!DOCTYPE html>
+<html>
+  <head>
+    <meta charset="utf-8">
+    <title></title>
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="resources/common.js"></script>
+    <script src="resources/manual.js"></script>
+  </head>
+  <body>
+    <p>
+      These tests require a connected serial device configured to act as a
+      "loopback" device, with the transmit and receive pins wired together.
+    </p>
+    <script>
+      manual_loopback_serial_test(async (t, port) => {
+        await port.open({baudRate: 115200, bufferSize: 1024});
+
+        // Create something much larger than bufferSize above.
+        const data = new Uint8Array(16 * 1024);
+        for (let i = 0; i < data.byteLength; ++i)
+          data[i] = (i / 1024) & 0xff;
+
+        // Completely write |data| to the port without waiting for it to be
+        // received.
+        const writer = port.writable.getWriter();
+        writer.write(data);
+        await writer.close();
+
+        const reader = port.readable.getReader();
+        const chunks = [];
+        let actualLength = 0;
+        while (true) {
+          try {
+            const {value, done} = await reader.read();
+            if (value) {
+              actualLength += value.byteLength;
+              chunks.push(value);
+            }
+            if (done) {
+              assert_unreached("Unexpected end of stream.");
+              break;
+            }
+          } catch (e) {
+            assert_equals(e.name, 'BufferOverrunError');
+            break;
+          }
+        }
+        reader.releaseLock();
+
+        const buffer = new Uint8Array(actualLength);
+        chunks.reduce((offset, chunk) => {
+          buffer.set(chunk, offset);
+          return offset + chunk.byteLength;
+        }, 0);
+
+        assert_greater_than(actualLength, 0);
+        compareArrays(buffer, data.slice(0, actualLength));
+
+        await port.close();
+      }, 'Overflowing the receive buffer triggers an error.');
+    </script>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt_automation/css/selectors/focus-visible-002-manual-automation.js b/third_party/blink/web_tests/external/wpt_automation/css/selectors/focus-visible-002-manual-automation.js
deleted file mode 100644
index 640d28a..0000000
--- a/third_party/blink/web_tests/external/wpt_automation/css/selectors/focus-visible-002-manual-automation.js
+++ /dev/null
@@ -1,5 +0,0 @@
-importAutomationScript('/pointerevents/pointerevent_common_input.js');
-
-function inject_input() {
-    return mouseClickInTarget("[data-tested=false]");
-};
diff --git a/third_party/blink/web_tests/fast/dom/Document/CaretRangeFromPoint/outside-atomic-inline.html b/third_party/blink/web_tests/fast/dom/Document/CaretRangeFromPoint/outside-atomic-inline.html
new file mode 100644
index 0000000..fad6e9d
--- /dev/null
+++ b/third_party/blink/web_tests/fast/dom/Document/CaretRangeFromPoint/outside-atomic-inline.html
@@ -0,0 +1,18 @@
+<!DOCTYPE html>
+<style>
+  body { margin:0; }
+  #ib { display:inline-block; width:100px; height:10px; line-height:50px; }
+</style>
+<div id="ib">XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X</div>
+<script src="../../../../resources/testharness.js"></script>
+<script src="../../../../resources/testharnessreport.js"></script>
+<script>
+  test(()=> {
+      // At the beginning of the second line, which overflows #ib. Hit the 'X'.
+      assert_equals(document.caretRangeFromPoint(0, 75).startOffset, 41);
+
+      // At the end of the second line. Nothing there.
+      assert_equals(document.caretRangeFromPoint(90, 75).startOffset, 1);
+      assert_equals(document.caretRangeFromPoint(90, 75).startContainer, ib);
+  }, "Just outside an atomic inline");
+</script>
diff --git a/third_party/blink/web_tests/fast/forms/color-scheme/text/input-disabled-state.html b/third_party/blink/web_tests/fast/forms/color-scheme/text/input-disabled-state.html
new file mode 100644
index 0000000..6f8bbb3
--- /dev/null
+++ b/third_party/blink/web_tests/fast/forms/color-scheme/text/input-disabled-state.html
@@ -0,0 +1,12 @@
+<!DOCTYPE html>
+<meta name="color-scheme" content="light dark">
+<body>
+
+<ul>
+  <li>Text disabled: <input type="text" value="Text" disabled/></li>
+  <li>Password disabled: <input type="password" value="Text" disabled/></li>
+  <li>Text area disabled: <textarea disabled>Text</textarea></li></li>
+  <li>Number disabled: <input type="number" value="123" disabled/></li>
+</ul>
+
+</body>
\ No newline at end of file
diff --git a/third_party/blink/web_tests/fast/multicol/span/abspos-containing-block-outside-spanner-expected.html b/third_party/blink/web_tests/fast/multicol/span/abspos-containing-block-outside-spanner-expected.html
deleted file mode 100644
index 8381c30..0000000
--- a/third_party/blink/web_tests/fast/multicol/span/abspos-containing-block-outside-spanner-expected.html
+++ /dev/null
@@ -1,9 +0,0 @@
-<!DOCTYPE html>
-<p>Below, the word PASS should be seen twice.</p>
-<div style="width:20em; overflow:hidden;">
-    <br>
-    <div style="float:left;"><span style="background:green; color:white;">PASS</span></div>
-    <br>
-    <div style="margin:10px; height:50px;"></div>
-    <div style="float:right;"><span style="background:green; color:white;">PASS</span></div>
-</div>
diff --git a/third_party/blink/web_tests/fast/multicol/span/abspos-containing-block-outside-spanner.html b/third_party/blink/web_tests/fast/multicol/span/abspos-containing-block-outside-spanner.html
deleted file mode 100644
index 88f44f7a24..0000000
--- a/third_party/blink/web_tests/fast/multicol/span/abspos-containing-block-outside-spanner.html
+++ /dev/null
@@ -1,23 +0,0 @@
-<!DOCTYPE html>
-<p>Below, the word PASS should be seen twice.</p>
-<div style="-webkit-columns:3; -webkit-column-gap:1em; width:20em;">
-    <br>
-    <div style="position:relative; orphans:1; widows:1;">
-        <span style="background:green; color:green;">PASS</span>
-        <br>
-        <br>
-        <br>
-        <div style="-webkit-column-span:all; margin:10px; height:50px;">
-            <div style="position:absolute; top:0; left:0; color:white;">PASS</div>
-            <div style="position:absolute; bottom:0; right:0; color:white;">PASS</div>
-        </div>
-        <br>
-        <br>
-        <br>
-        <br>
-        <div style="text-align:right;">
-            <span style="background:green; color:green;">PASS</span>
-        </div>
-    </div>
-    <br>
-</div>
diff --git a/third_party/blink/web_tests/platform/linux/fast/forms/color-scheme/text/input-disabled-state-expected.png b/third_party/blink/web_tests/platform/linux/fast/forms/color-scheme/text/input-disabled-state-expected.png
new file mode 100644
index 0000000..1b5512e
--- /dev/null
+++ b/third_party/blink/web_tests/platform/linux/fast/forms/color-scheme/text/input-disabled-state-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/controls-refresh-hc/fast/forms/color-scheme/text/input-disabled-state-expected.png b/third_party/blink/web_tests/platform/linux/virtual/controls-refresh-hc/fast/forms/color-scheme/text/input-disabled-state-expected.png
new file mode 100644
index 0000000..261f75e0
--- /dev/null
+++ b/third_party/blink/web_tests/platform/linux/virtual/controls-refresh-hc/fast/forms/color-scheme/text/input-disabled-state-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/dark-color-scheme/fast/forms/color-scheme/text/input-disabled-state-expected.png b/third_party/blink/web_tests/platform/linux/virtual/dark-color-scheme/fast/forms/color-scheme/text/input-disabled-state-expected.png
new file mode 100644
index 0000000..19b0ff0
--- /dev/null
+++ b/third_party/blink/web_tests/platform/linux/virtual/dark-color-scheme/fast/forms/color-scheme/text/input-disabled-state-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh-hc/fast/forms/color-scheme/text/input-disabled-state-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh-hc/fast/forms/color-scheme/text/input-disabled-state-expected.png
new file mode 100644
index 0000000..f20c4ab
--- /dev/null
+++ b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh-hc/fast/forms/color-scheme/text/input-disabled-state-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/dark-color-scheme/fast/forms/color-scheme/text/input-disabled-state-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/dark-color-scheme/fast/forms/color-scheme/text/input-disabled-state-expected.png
new file mode 100644
index 0000000..50d8ad2
--- /dev/null
+++ b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/dark-color-scheme/fast/forms/color-scheme/text/input-disabled-state-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/controls-refresh-hc/fast/forms/color-scheme/text/input-disabled-state-expected.png b/third_party/blink/web_tests/platform/mac-mac10.13/virtual/controls-refresh-hc/fast/forms/color-scheme/text/input-disabled-state-expected.png
new file mode 100644
index 0000000..f20c4ab
--- /dev/null
+++ b/third_party/blink/web_tests/platform/mac-mac10.13/virtual/controls-refresh-hc/fast/forms/color-scheme/text/input-disabled-state-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/dark-color-scheme/fast/forms/color-scheme/text/input-disabled-state-expected.png b/third_party/blink/web_tests/platform/mac-mac10.13/virtual/dark-color-scheme/fast/forms/color-scheme/text/input-disabled-state-expected.png
new file mode 100644
index 0000000..50d8ad2
--- /dev/null
+++ b/third_party/blink/web_tests/platform/mac-mac10.13/virtual/dark-color-scheme/fast/forms/color-scheme/text/input-disabled-state-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/controls-refresh-hc/fast/forms/color-scheme/text/input-disabled-state-expected.png b/third_party/blink/web_tests/platform/mac-mac10.14/virtual/controls-refresh-hc/fast/forms/color-scheme/text/input-disabled-state-expected.png
new file mode 100644
index 0000000..f20c4ab
--- /dev/null
+++ b/third_party/blink/web_tests/platform/mac-mac10.14/virtual/controls-refresh-hc/fast/forms/color-scheme/text/input-disabled-state-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/dark-color-scheme/fast/forms/color-scheme/text/input-disabled-state-expected.png b/third_party/blink/web_tests/platform/mac-mac10.14/virtual/dark-color-scheme/fast/forms/color-scheme/text/input-disabled-state-expected.png
new file mode 100644
index 0000000..50d8ad2
--- /dev/null
+++ b/third_party/blink/web_tests/platform/mac-mac10.14/virtual/dark-color-scheme/fast/forms/color-scheme/text/input-disabled-state-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.15/virtual/controls-refresh-hc/fast/forms/color-scheme/text/input-disabled-state-expected.png b/third_party/blink/web_tests/platform/mac-mac10.15/virtual/controls-refresh-hc/fast/forms/color-scheme/text/input-disabled-state-expected.png
new file mode 100644
index 0000000..f20c4ab
--- /dev/null
+++ b/third_party/blink/web_tests/platform/mac-mac10.15/virtual/controls-refresh-hc/fast/forms/color-scheme/text/input-disabled-state-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.15/virtual/dark-color-scheme/fast/forms/color-scheme/text/input-disabled-state-expected.png b/third_party/blink/web_tests/platform/mac-mac10.15/virtual/dark-color-scheme/fast/forms/color-scheme/text/input-disabled-state-expected.png
new file mode 100644
index 0000000..50d8ad2
--- /dev/null
+++ b/third_party/blink/web_tests/platform/mac-mac10.15/virtual/dark-color-scheme/fast/forms/color-scheme/text/input-disabled-state-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/fast/forms/color-scheme/text/input-disabled-state-expected.png b/third_party/blink/web_tests/platform/mac/fast/forms/color-scheme/text/input-disabled-state-expected.png
new file mode 100644
index 0000000..f20c4ab
--- /dev/null
+++ b/third_party/blink/web_tests/platform/mac/fast/forms/color-scheme/text/input-disabled-state-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/controls-refresh-hc/fast/forms/color-scheme/text/input-disabled-state-expected.png b/third_party/blink/web_tests/platform/mac/virtual/controls-refresh-hc/fast/forms/color-scheme/text/input-disabled-state-expected.png
new file mode 100644
index 0000000..f20c4ab
--- /dev/null
+++ b/third_party/blink/web_tests/platform/mac/virtual/controls-refresh-hc/fast/forms/color-scheme/text/input-disabled-state-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/dark-color-scheme/fast/forms/color-scheme/text/input-disabled-state-expected.png b/third_party/blink/web_tests/platform/mac/virtual/dark-color-scheme/fast/forms/color-scheme/text/input-disabled-state-expected.png
new file mode 100644
index 0000000..50d8ad2
--- /dev/null
+++ b/third_party/blink/web_tests/platform/mac/virtual/dark-color-scheme/fast/forms/color-scheme/text/input-disabled-state-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/forms/color-scheme/text/input-disabled-state-expected.png b/third_party/blink/web_tests/platform/win/fast/forms/color-scheme/text/input-disabled-state-expected.png
new file mode 100644
index 0000000..6d9ae9e1
--- /dev/null
+++ b/third_party/blink/web_tests/platform/win/fast/forms/color-scheme/text/input-disabled-state-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/controls-refresh-hc/fast/forms/color-scheme/text/input-disabled-state-expected.png b/third_party/blink/web_tests/platform/win/virtual/controls-refresh-hc/fast/forms/color-scheme/text/input-disabled-state-expected.png
new file mode 100644
index 0000000..845c0a3
--- /dev/null
+++ b/third_party/blink/web_tests/platform/win/virtual/controls-refresh-hc/fast/forms/color-scheme/text/input-disabled-state-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/dark-color-scheme/fast/forms/color-scheme/text/input-disabled-state-expected.png b/third_party/blink/web_tests/platform/win/virtual/dark-color-scheme/fast/forms/color-scheme/text/input-disabled-state-expected.png
new file mode 100644
index 0000000..344258c
--- /dev/null
+++ b/third_party/blink/web_tests/platform/win/virtual/dark-color-scheme/fast/forms/color-scheme/text/input-disabled-state-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win7/virtual/controls-refresh-hc/fast/forms/color-scheme/text/input-disabled-state-expected.png b/third_party/blink/web_tests/platform/win7/virtual/controls-refresh-hc/fast/forms/color-scheme/text/input-disabled-state-expected.png
new file mode 100644
index 0000000..845c0a3
--- /dev/null
+++ b/third_party/blink/web_tests/platform/win7/virtual/controls-refresh-hc/fast/forms/color-scheme/text/input-disabled-state-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win7/virtual/dark-color-scheme/fast/forms/color-scheme/text/input-disabled-state-expected.png b/third_party/blink/web_tests/platform/win7/virtual/dark-color-scheme/fast/forms/color-scheme/text/input-disabled-state-expected.png
new file mode 100644
index 0000000..344258c
--- /dev/null
+++ b/third_party/blink/web_tests/platform/win7/virtual/dark-color-scheme/fast/forms/color-scheme/text/input-disabled-state-expected.png
Binary files differ
diff --git a/third_party/google_android_play_core/DIR_METADATA b/third_party/google_android_play_core/DIR_METADATA
new file mode 100644
index 0000000..e9e1b20
--- /dev/null
+++ b/third_party/google_android_play_core/DIR_METADATA
@@ -0,0 +1,4 @@
+monorail: {
+  component: "Mobile>FeatureModules"
+}
+team_email: "chromium-reviews@chromium.org"
diff --git a/third_party/google_android_play_core/OWNERS b/third_party/google_android_play_core/OWNERS
index d1b9624..c21bfeb 100644
--- a/third_party/google_android_play_core/OWNERS
+++ b/third_party/google_android_play_core/OWNERS
@@ -1,6 +1,3 @@
 agrieve@chromium.org
 tiborg@chromium.org
 wnwen@chromium.org
-
-# COMPONENT: Mobile>FeatureModules
-# TEAM: chromium-reviews@chromium.org
diff --git a/third_party/google_appengine_cloudstorage/OWNERS b/third_party/google_appengine_cloudstorage/OWNERS
index 34f8a58..90019ea 100644
--- a/third_party/google_appengine_cloudstorage/OWNERS
+++ b/third_party/google_appengine_cloudstorage/OWNERS
@@ -1,4 +1,3 @@
 file://chrome/common/extensions/docs/server2/OWNERS
 jyasskin@chromium.org
 rockot@google.com
-# COMPONENT: Platform>Extensions>Documentation
diff --git a/third_party/google_benchmark/DIR_METADATA b/third_party/google_benchmark/DIR_METADATA
new file mode 100644
index 0000000..d247f03
--- /dev/null
+++ b/third_party/google_benchmark/DIR_METADATA
@@ -0,0 +1,4 @@
+monorail: {
+  component: "Internals>Storage"
+}
+team_email: "storage-dev@chromium.org"
diff --git a/third_party/google_benchmark/OWNERS b/third_party/google_benchmark/OWNERS
index eedcf40..0eee766 100644
--- a/third_party/google_benchmark/OWNERS
+++ b/third_party/google_benchmark/OWNERS
@@ -3,6 +3,3 @@
 
 # Secondary:
 jsbell@chromium.org
-
-# TEAM: storage-dev@chromium.org
-# COMPONENT: Internals>Storage
diff --git a/third_party/google_input_tools/DIR_METADATA b/third_party/google_input_tools/DIR_METADATA
new file mode 100644
index 0000000..1d28f0a
--- /dev/null
+++ b/third_party/google_input_tools/DIR_METADATA
@@ -0,0 +1,3 @@
+monorail: {
+  component: "UI>Input>Text>IME"
+}
diff --git a/third_party/google_input_tools/OWNERS b/third_party/google_input_tools/OWNERS
index 735b9cb..4b0041a 100644
--- a/third_party/google_input_tools/OWNERS
+++ b/third_party/google_input_tools/OWNERS
@@ -4,5 +4,3 @@
 
 # Use the following owner only when the above owners are not available.
 kevers@chromium.org
-
-# COMPONENT: UI>Input>Text>IME
diff --git a/third_party/google_toolbox_for_mac/DIR_METADATA b/third_party/google_toolbox_for_mac/DIR_METADATA
new file mode 100644
index 0000000..d182185
--- /dev/null
+++ b/third_party/google_toolbox_for_mac/DIR_METADATA
@@ -0,0 +1,3 @@
+monorail: {
+  component: "UI>Browser"
+}
diff --git a/third_party/google_toolbox_for_mac/OWNERS b/third_party/google_toolbox_for_mac/OWNERS
index d49c516..720b872 100644
--- a/third_party/google_toolbox_for_mac/OWNERS
+++ b/third_party/google_toolbox_for_mac/OWNERS
@@ -1,4 +1,3 @@
 avi@chromium.org
 mark@chromium.org
 rsesek@chromium.org
-# COMPONENT: UI>Browser
diff --git a/third_party/google_trust_services/DIR_METADATA b/third_party/google_trust_services/DIR_METADATA
new file mode 100644
index 0000000..7a8129d
--- /dev/null
+++ b/third_party/google_trust_services/DIR_METADATA
@@ -0,0 +1,3 @@
+monorail: {
+  component: "Internals>Network>Certificate"
+}
diff --git a/third_party/google_trust_services/OWNERS b/third_party/google_trust_services/OWNERS
index 0742a64d..d114fa83 100644
--- a/third_party/google_trust_services/OWNERS
+++ b/third_party/google_trust_services/OWNERS
@@ -1,5 +1,3 @@
 asymmetric@chromium.org
 awhalley@chromium.org
 rsleevi@chromium.org
-
-# COMPONENT: Internals>Network>Certificate
diff --git a/third_party/googletest/DIR_METADATA b/third_party/googletest/DIR_METADATA
new file mode 100644
index 0000000..6f2a42f0
--- /dev/null
+++ b/third_party/googletest/DIR_METADATA
@@ -0,0 +1,3 @@
+monorail: {
+  component: "Test>gTest"
+}
diff --git a/third_party/googletest/OWNERS b/third_party/googletest/OWNERS
index 9f74197..4d5df35 100644
--- a/third_party/googletest/OWNERS
+++ b/third_party/googletest/OWNERS
@@ -1,4 +1,3 @@
 thakis@chromium.org
 pwnall@chromium.org
 dpranke@google.com
-# COMPONENT: Test>gTest
diff --git a/third_party/gvr-android-keyboard/DIR_METADATA b/third_party/gvr-android-keyboard/DIR_METADATA
new file mode 100644
index 0000000..ff6e380
--- /dev/null
+++ b/third_party/gvr-android-keyboard/DIR_METADATA
@@ -0,0 +1,5 @@
+monorail: {
+  component: "UI>Browser>VR"
+}
+team_email: "xr-dev@chromium.org"
+os: ANDROID
diff --git a/third_party/gvr-android-keyboard/OWNERS b/third_party/gvr-android-keyboard/OWNERS
index 49530ddf..d1ca5b063 100644
--- a/third_party/gvr-android-keyboard/OWNERS
+++ b/third_party/gvr-android-keyboard/OWNERS
@@ -1,5 +1 @@
 vollick@chromium.org
-
-# TEAM: xr-dev@chromium.org
-# COMPONENT: UI>Browser>VR
-# OS: Android
diff --git a/third_party/gvr-android-keyboard/com/google/vr/keyboard/DIR_METADATA b/third_party/gvr-android-keyboard/com/google/vr/keyboard/DIR_METADATA
new file mode 100644
index 0000000..ff6e380
--- /dev/null
+++ b/third_party/gvr-android-keyboard/com/google/vr/keyboard/DIR_METADATA
@@ -0,0 +1,5 @@
+monorail: {
+  component: "UI>Browser>VR"
+}
+team_email: "xr-dev@chromium.org"
+os: ANDROID
diff --git a/third_party/gvr-android-keyboard/com/google/vr/keyboard/OWNERS b/third_party/gvr-android-keyboard/com/google/vr/keyboard/OWNERS
index 7ffa29f..8f094e0 100644
--- a/third_party/gvr-android-keyboard/com/google/vr/keyboard/OWNERS
+++ b/third_party/gvr-android-keyboard/com/google/vr/keyboard/OWNERS
@@ -1,6 +1,2 @@
 per-file *.aidl=set noparent
 per-file *.aidl=file://ipc/SECURITY_OWNERS
-
-# TEAM: xr-dev@chromium.org
-# COMPONENT: UI>Browser>VR
-# OS: Android
diff --git a/third_party/hyphenation-patterns/DIR_METADATA b/third_party/hyphenation-patterns/DIR_METADATA
new file mode 100644
index 0000000..05ee4f2
--- /dev/null
+++ b/third_party/hyphenation-patterns/DIR_METADATA
@@ -0,0 +1,4 @@
+monorail: {
+  component: "Blink>Layout>Inline"
+}
+team_email: "layout-dev@chromium.org"
diff --git a/third_party/hyphenation-patterns/OWNERS b/third_party/hyphenation-patterns/OWNERS
index 9e2275c..bed855f 100644
--- a/third_party/hyphenation-patterns/OWNERS
+++ b/third_party/hyphenation-patterns/OWNERS
@@ -1,5 +1,2 @@
 ikilpatrick@chromium.org
 kojii@chromium.org
-
-# TEAM: layout-dev@chromium.org
-# COMPONENT: Blink>Layout>Inline
diff --git a/third_party/iaccessible2/DIR_METADATA b/third_party/iaccessible2/DIR_METADATA
new file mode 100644
index 0000000..515dbec
--- /dev/null
+++ b/third_party/iaccessible2/DIR_METADATA
@@ -0,0 +1,4 @@
+monorail: {
+  component: "UI>Accessibility>Compatibility"
+}
+team_email: "chromium-accessibility@chromium.org"
diff --git a/third_party/iaccessible2/OWNERS b/third_party/iaccessible2/OWNERS
index c706b43..e8c0007 100644
--- a/third_party/iaccessible2/OWNERS
+++ b/third_party/iaccessible2/OWNERS
@@ -3,6 +3,3 @@
 dtseng@chromium.org
 nektar@chromium.org
 aleventhal@chromium.org
-
-# TEAM: chromium-accessibility@chromium.org
-# COMPONENT: UI>Accessibility>Compatibility
diff --git a/third_party/icu4j/DIR_METADATA b/third_party/icu4j/DIR_METADATA
new file mode 100644
index 0000000..8dfc17cf
--- /dev/null
+++ b/third_party/icu4j/DIR_METADATA
@@ -0,0 +1,3 @@
+monorail: {
+  component: "Test>Android"
+}
diff --git a/third_party/icu4j/OWNERS b/third_party/icu4j/OWNERS
index 8fd43ad6..d107d25c 100644
--- a/third_party/icu4j/OWNERS
+++ b/third_party/icu4j/OWNERS
@@ -1,5 +1,3 @@
 bjoyce@chromium.org
 hypan@google.com
 yzjr@google.com
-
-# COMPONENT: Test>Android
diff --git a/third_party/ijar/DIR_METADATA b/third_party/ijar/DIR_METADATA
new file mode 100644
index 0000000..9f08648
--- /dev/null
+++ b/third_party/ijar/DIR_METADATA
@@ -0,0 +1,4 @@
+monorail: {
+  component: "Build"
+}
+team_email: "build@chromium.org"
diff --git a/third_party/ijar/OWNERS b/third_party/ijar/OWNERS
index a685eb8..d2e0a41 100644
--- a/third_party/ijar/OWNERS
+++ b/third_party/ijar/OWNERS
@@ -1,5 +1,2 @@
 agrieve@chromium.org
 dpranke@google.com
-
-# TEAM: build@chromium.org
-# COMPONENT: Build
diff --git a/third_party/inspector_protocol/DIR_METADATA b/third_party/inspector_protocol/DIR_METADATA
new file mode 100644
index 0000000..7015339
--- /dev/null
+++ b/third_party/inspector_protocol/DIR_METADATA
@@ -0,0 +1,3 @@
+monorail: {
+  component: "Platform>DevTools"
+}
diff --git a/third_party/inspector_protocol/OWNERS b/third_party/inspector_protocol/OWNERS
index 99d226ce..5949ca2 100644
--- a/third_party/inspector_protocol/OWNERS
+++ b/third_party/inspector_protocol/OWNERS
@@ -4,4 +4,3 @@
 kozyatinskiy@chromium.org
 pfeldman@chromium.org
 johannes@chromium.org
-# COMPONENT: Platform>DevTools
diff --git a/third_party/instrumented_libraries/DIR_METADATA b/third_party/instrumented_libraries/DIR_METADATA
new file mode 100644
index 0000000..b9b4e535
--- /dev/null
+++ b/third_party/instrumented_libraries/DIR_METADATA
@@ -0,0 +1,3 @@
+monorail: {
+  component: "Internals>Instrumentation"
+}
diff --git a/third_party/instrumented_libraries/OWNERS b/third_party/instrumented_libraries/OWNERS
index 925143c..bde379aea 100644
--- a/third_party/instrumented_libraries/OWNERS
+++ b/third_party/instrumented_libraries/OWNERS
@@ -1,5 +1,3 @@
 eugenis@chromium.org
 glider@chromium.org
 thomasanderson@chromium.org
-
-# COMPONENT: Internals>Instrumentation
diff --git a/third_party/isimpledom/DIR_METADATA b/third_party/isimpledom/DIR_METADATA
new file mode 100644
index 0000000..515dbec
--- /dev/null
+++ b/third_party/isimpledom/DIR_METADATA
@@ -0,0 +1,4 @@
+monorail: {
+  component: "UI>Accessibility>Compatibility"
+}
+team_email: "chromium-accessibility@chromium.org"
diff --git a/third_party/isimpledom/OWNERS b/third_party/isimpledom/OWNERS
index 3414503..976b955 100644
--- a/third_party/isimpledom/OWNERS
+++ b/third_party/isimpledom/OWNERS
@@ -1,4 +1 @@
 file://ui/accessibility/OWNERS
-
-# TEAM: chromium-accessibility@chromium.org
-# COMPONENT: UI>Accessibility>Compatibility
diff --git a/third_party/jacoco/DIR_METADATA b/third_party/jacoco/DIR_METADATA
new file mode 100644
index 0000000..de953ce
--- /dev/null
+++ b/third_party/jacoco/DIR_METADATA
@@ -0,0 +1,3 @@
+monorail: {
+  component: "Tools>CodeCoverage"
+}
diff --git a/third_party/jacoco/OWNERS b/third_party/jacoco/OWNERS
index 4e4b40a..f6dfe27 100644
--- a/third_party/jacoco/OWNERS
+++ b/third_party/jacoco/OWNERS
@@ -3,5 +3,3 @@
 bjoyce@chromium.org
 yliuyliu@google.com
 yzjr@google.com
-
-# COMPONENT: Tools>CodeCoverage
diff --git a/third_party/javalang/DIR_METADATA b/third_party/javalang/DIR_METADATA
new file mode 100644
index 0000000..9f08648
--- /dev/null
+++ b/third_party/javalang/DIR_METADATA
@@ -0,0 +1,4 @@
+monorail: {
+  component: "Build"
+}
+team_email: "build@chromium.org"
diff --git a/third_party/javalang/OWNERS b/third_party/javalang/OWNERS
index c5f4b203..ae016ea 100644
--- a/third_party/javalang/OWNERS
+++ b/third_party/javalang/OWNERS
@@ -1,5 +1,2 @@
 tiborg@chromium.org
 wnwen@chromium.org
-
-# TEAM: build@chromium.org
-# COMPONENT: Build
diff --git a/third_party/jinja2/DIR_METADATA b/third_party/jinja2/DIR_METADATA
new file mode 100644
index 0000000..8487e4070
--- /dev/null
+++ b/third_party/jinja2/DIR_METADATA
@@ -0,0 +1,4 @@
+monorail: {
+  component: "Blink>Bindings"
+}
+team_email: "platform-architecture-dev@chromium.org"
diff --git a/third_party/jinja2/OWNERS b/third_party/jinja2/OWNERS
index 8861ff8c..8edbdf8 100644
--- a/third_party/jinja2/OWNERS
+++ b/third_party/jinja2/OWNERS
@@ -1,6 +1,3 @@
 timloh@chromium.org
 haraken@chromium.org
 nbarth@chromium.org
-
-# TEAM: platform-architecture-dev@chromium.org
-# COMPONENT: Blink>Bindings
diff --git a/third_party/jsoncpp/DIR_METADATA b/third_party/jsoncpp/DIR_METADATA
new file mode 100644
index 0000000..d366dc7
--- /dev/null
+++ b/third_party/jsoncpp/DIR_METADATA
@@ -0,0 +1,3 @@
+monorail: {
+  component: "Internals"
+}
diff --git a/third_party/jsoncpp/OWNERS b/third_party/jsoncpp/OWNERS
index f0e7354..5c9c496 100644
--- a/third_party/jsoncpp/OWNERS
+++ b/third_party/jsoncpp/OWNERS
@@ -1,3 +1 @@
 jophba@chromium.org
-
-# COMPONENT: Internals
diff --git a/third_party/junit/DIR_METADATA b/third_party/junit/DIR_METADATA
new file mode 100644
index 0000000..8dfc17cf
--- /dev/null
+++ b/third_party/junit/DIR_METADATA
@@ -0,0 +1,3 @@
+monorail: {
+  component: "Test>Android"
+}
diff --git a/third_party/junit/OWNERS b/third_party/junit/OWNERS
index 8fd43ad6..d107d25c 100644
--- a/third_party/junit/OWNERS
+++ b/third_party/junit/OWNERS
@@ -1,5 +1,3 @@
 bjoyce@chromium.org
 hypan@google.com
 yzjr@google.com
-
-# COMPONENT: Test>Android
diff --git a/third_party/khronos/DIR_METADATA b/third_party/khronos/DIR_METADATA
new file mode 100644
index 0000000..e353adf
--- /dev/null
+++ b/third_party/khronos/DIR_METADATA
@@ -0,0 +1,4 @@
+monorail: {
+  component: "Internals>GPU>Internals"
+}
+team_email: "graphics-dev@chromium.org"
diff --git a/third_party/khronos/EGL/DIR_METADATA b/third_party/khronos/EGL/DIR_METADATA
new file mode 100644
index 0000000..3b153c7
--- /dev/null
+++ b/third_party/khronos/EGL/DIR_METADATA
@@ -0,0 +1,3 @@
+monorail: {
+  component: "Internals>GPU>Internals"
+}
diff --git a/third_party/khronos/EGL/OWNERS b/third_party/khronos/EGL/OWNERS
deleted file mode 100644
index f0c3f3f6..0000000
--- a/third_party/khronos/EGL/OWNERS
+++ /dev/null
@@ -1 +0,0 @@
-# COMPONENT: Internals>GPU>Internals
diff --git a/third_party/khronos/GLES2/DIR_METADATA b/third_party/khronos/GLES2/DIR_METADATA
new file mode 100644
index 0000000..3b153c7
--- /dev/null
+++ b/third_party/khronos/GLES2/DIR_METADATA
@@ -0,0 +1,3 @@
+monorail: {
+  component: "Internals>GPU>Internals"
+}
diff --git a/third_party/khronos/GLES2/OWNERS b/third_party/khronos/GLES2/OWNERS
deleted file mode 100644
index f0c3f3f6..0000000
--- a/third_party/khronos/GLES2/OWNERS
+++ /dev/null
@@ -1 +0,0 @@
-# COMPONENT: Internals>GPU>Internals
diff --git a/third_party/khronos/GLES3/DIR_METADATA b/third_party/khronos/GLES3/DIR_METADATA
new file mode 100644
index 0000000..3b153c7
--- /dev/null
+++ b/third_party/khronos/GLES3/DIR_METADATA
@@ -0,0 +1,3 @@
+monorail: {
+  component: "Internals>GPU>Internals"
+}
diff --git a/third_party/khronos/GLES3/OWNERS b/third_party/khronos/GLES3/OWNERS
deleted file mode 100644
index f0c3f3f6..0000000
--- a/third_party/khronos/GLES3/OWNERS
+++ /dev/null
@@ -1 +0,0 @@
-# COMPONENT: Internals>GPU>Internals
diff --git a/third_party/khronos/KHR/DIR_METADATA b/third_party/khronos/KHR/DIR_METADATA
new file mode 100644
index 0000000..3b153c7
--- /dev/null
+++ b/third_party/khronos/KHR/DIR_METADATA
@@ -0,0 +1,3 @@
+monorail: {
+  component: "Internals>GPU>Internals"
+}
diff --git a/third_party/khronos/KHR/OWNERS b/third_party/khronos/KHR/OWNERS
deleted file mode 100644
index f0c3f3f6..0000000
--- a/third_party/khronos/KHR/OWNERS
+++ /dev/null
@@ -1 +0,0 @@
-# COMPONENT: Internals>GPU>Internals
diff --git a/third_party/khronos/OWNERS b/third_party/khronos/OWNERS
index 18ed4a5..84f8217 100644
--- a/third_party/khronos/OWNERS
+++ b/third_party/khronos/OWNERS
@@ -1,4 +1,2 @@
 kbr@chromium.org
 zmo@chromium.org
-# COMPONENT: Internals>GPU>Internals
-# TEAM: graphics-dev@chromium.org
diff --git a/third_party/khronos/noninclude/DIR_METADATA b/third_party/khronos/noninclude/DIR_METADATA
new file mode 100644
index 0000000..3b153c7
--- /dev/null
+++ b/third_party/khronos/noninclude/DIR_METADATA
@@ -0,0 +1,3 @@
+monorail: {
+  component: "Internals>GPU>Internals"
+}
diff --git a/third_party/khronos/noninclude/OWNERS b/third_party/khronos/noninclude/OWNERS
deleted file mode 100644
index f0c3f3f6..0000000
--- a/third_party/khronos/noninclude/OWNERS
+++ /dev/null
@@ -1 +0,0 @@
-# COMPONENT: Internals>GPU>Internals
diff --git a/third_party/lcov/DIR_METADATA b/third_party/lcov/DIR_METADATA
new file mode 100644
index 0000000..d366dc7
--- /dev/null
+++ b/third_party/lcov/DIR_METADATA
@@ -0,0 +1,3 @@
+monorail: {
+  component: "Internals"
+}
diff --git a/third_party/lcov/OWNERS b/third_party/lcov/OWNERS
deleted file mode 100644
index f136fc1..0000000
--- a/third_party/lcov/OWNERS
+++ /dev/null
@@ -1 +0,0 @@
-# COMPONENT: Internals
diff --git a/third_party/leveldatabase/DIR_METADATA b/third_party/leveldatabase/DIR_METADATA
new file mode 100644
index 0000000..d247f03
--- /dev/null
+++ b/third_party/leveldatabase/DIR_METADATA
@@ -0,0 +1,4 @@
+monorail: {
+  component: "Internals>Storage"
+}
+team_email: "storage-dev@chromium.org"
diff --git a/third_party/leveldatabase/OWNERS b/third_party/leveldatabase/OWNERS
index a3f1724..9c274bf2 100644
--- a/third_party/leveldatabase/OWNERS
+++ b/third_party/leveldatabase/OWNERS
@@ -4,6 +4,3 @@
 # Secondary:
 cmumford@google.com
 jsbell@chromium.org
-
-# TEAM: storage-dev@chromium.org
-# COMPONENT: Internals>Storage
diff --git a/third_party/libFuzzer/DIR_METADATA b/third_party/libFuzzer/DIR_METADATA
new file mode 100644
index 0000000..8f69ea0
--- /dev/null
+++ b/third_party/libFuzzer/DIR_METADATA
@@ -0,0 +1,4 @@
+monorail: {
+  component: "Tools>Stability>libFuzzer"
+}
+team_email: "chrome-security-bugs--@chromium.org"
diff --git a/third_party/libFuzzer/OWNERS b/third_party/libFuzzer/OWNERS
index 12379aa..c1cc0d6 100644
--- a/third_party/libFuzzer/OWNERS
+++ b/third_party/libFuzzer/OWNERS
@@ -2,5 +2,3 @@
 kcc@chromium.org
 metzman@chromium.org
 ochang@chromium.org
-# COMPONENT: Tools>Stability>libFuzzer
-# TEAM: chrome-security-bugs--@chromium.org
diff --git a/third_party/libXNVCtrl/DIR_METADATA b/third_party/libXNVCtrl/DIR_METADATA
new file mode 100644
index 0000000..2b73a7b
--- /dev/null
+++ b/third_party/libXNVCtrl/DIR_METADATA
@@ -0,0 +1,3 @@
+monorail: {
+  component: "Internals>GPU"
+}
diff --git a/third_party/libXNVCtrl/OWNERS b/third_party/libXNVCtrl/OWNERS
deleted file mode 100644
index 8498c21..0000000
--- a/third_party/libXNVCtrl/OWNERS
+++ /dev/null
@@ -1 +0,0 @@
-# COMPONENT: Internals>GPU
diff --git a/third_party/libaddressinput/DIR_METADATA b/third_party/libaddressinput/DIR_METADATA
new file mode 100644
index 0000000..ac71123
--- /dev/null
+++ b/third_party/libaddressinput/DIR_METADATA
@@ -0,0 +1,3 @@
+monorail: {
+  component: "UI>Browser>Autofill"
+}
diff --git a/third_party/libaddressinput/OWNERS b/third_party/libaddressinput/OWNERS
index 7a40bb9..562d774 100644
--- a/third_party/libaddressinput/OWNERS
+++ b/third_party/libaddressinput/OWNERS
@@ -4,5 +4,3 @@
 kolos@chromium.org
 mathp@chromium.org
 rouslan@chromium.org
-
-# COMPONENT: UI>Browser>Autofill
diff --git a/third_party/libaom/DIR_METADATA b/third_party/libaom/DIR_METADATA
new file mode 100644
index 0000000..0cc7e5f
--- /dev/null
+++ b/third_party/libaom/DIR_METADATA
@@ -0,0 +1,3 @@
+monorail: {
+  component: "Internals>Media>Video"
+}
diff --git a/third_party/libaom/OWNERS b/third_party/libaom/OWNERS
index 94c2415..6524678 100644
--- a/third_party/libaom/OWNERS
+++ b/third_party/libaom/OWNERS
@@ -2,4 +2,3 @@
 johannkoenig@google.com
 jzern@chromium.org
 jzern@google.com
-# COMPONENT: Internals>Media>Video
diff --git a/third_party/libavif/DIR_METADATA b/third_party/libavif/DIR_METADATA
new file mode 100644
index 0000000..502786c5
--- /dev/null
+++ b/third_party/libavif/DIR_METADATA
@@ -0,0 +1,3 @@
+monorail: {
+  component: "Internals>Images>Codecs"
+}
diff --git a/third_party/libavif/OWNERS b/third_party/libavif/OWNERS
index 593af015..6946c0b 100644
--- a/third_party/libavif/OWNERS
+++ b/third_party/libavif/OWNERS
@@ -1,3 +1,2 @@
-# COMPONENT: Internals>Images>Codecs
 file://media/OWNERS
 wtc@google.com
diff --git a/third_party/libbrlapi/DIR_METADATA b/third_party/libbrlapi/DIR_METADATA
new file mode 100644
index 0000000..eb8d4da
--- /dev/null
+++ b/third_party/libbrlapi/DIR_METADATA
@@ -0,0 +1,4 @@
+monorail: {
+  component: "UI>Accessibility>ChromeVox"
+}
+team_email: "chromium-accessibility@chromium.org"
diff --git a/third_party/libbrlapi/OWNERS b/third_party/libbrlapi/OWNERS
index 47e69169..976b955 100644
--- a/third_party/libbrlapi/OWNERS
+++ b/third_party/libbrlapi/OWNERS
@@ -1,4 +1 @@
 file://ui/accessibility/OWNERS
-
-# TEAM: chromium-accessibility@chromium.org
-# COMPONENT: UI>Accessibility>ChromeVox
diff --git a/third_party/libdrm/DIR_METADATA b/third_party/libdrm/DIR_METADATA
new file mode 100644
index 0000000..0ff67f3
--- /dev/null
+++ b/third_party/libdrm/DIR_METADATA
@@ -0,0 +1,3 @@
+monorail: {
+  component: "OS>Kernel>Graphics"
+}
diff --git a/third_party/libdrm/OWNERS b/third_party/libdrm/OWNERS
index 3c56982..8356b0e6 100644
--- a/third_party/libdrm/OWNERS
+++ b/third_party/libdrm/OWNERS
@@ -3,5 +3,3 @@
 spang@chromium.org
 servolk@chromium.org
 dnicoara@chromium.org
-
-# COMPONENT: OS>Kernel>Graphics
diff --git a/third_party/libgav1/DIR_METADATA b/third_party/libgav1/DIR_METADATA
new file mode 100644
index 0000000..a0f2fd3
--- /dev/null
+++ b/third_party/libgav1/DIR_METADATA
@@ -0,0 +1,3 @@
+monorail: {
+  component: "Internals>Media>Codecs"
+}
diff --git a/third_party/libgav1/OWNERS b/third_party/libgav1/OWNERS
index 69433bbc..a71854a 100644
--- a/third_party/libgav1/OWNERS
+++ b/third_party/libgav1/OWNERS
@@ -1,5 +1,3 @@
 tomfinegan@chromium.org
 johannkoenig@google.com
 jzern@google.com
-
-# COMPONENT: Internals>Media>Codecs
diff --git a/third_party/libipp/DIR_METADATA b/third_party/libipp/DIR_METADATA
new file mode 100644
index 0000000..c98ae7ce
--- /dev/null
+++ b/third_party/libipp/DIR_METADATA
@@ -0,0 +1,3 @@
+monorail: {
+  component: "Internals>Printing>CUPS"
+}
diff --git a/third_party/libipp/OWNERS b/third_party/libipp/OWNERS
index 67232c57..4529fb6 100644
--- a/third_party/libipp/OWNERS
+++ b/third_party/libipp/OWNERS
@@ -1,4 +1,2 @@
 pawliczek@chromium.org
 skau@chromium.org
-
-# COMPONENT: Internals>Printing>CUPS
diff --git a/third_party/liblouis/DIR_METADATA b/third_party/liblouis/DIR_METADATA
new file mode 100644
index 0000000..6849a4f
--- /dev/null
+++ b/third_party/liblouis/DIR_METADATA
@@ -0,0 +1,4 @@
+monorail: {
+  component: "UI>Accessibility"
+}
+team_email: "chromium-accessibility@chromium.org"
diff --git a/third_party/liblouis/OWNERS b/third_party/liblouis/OWNERS
index 7d496ba..dfab84a0 100644
--- a/third_party/liblouis/OWNERS
+++ b/third_party/liblouis/OWNERS
@@ -2,6 +2,3 @@
 dmazzoni@chromium.org
 dtseng@chromium.org
 plundblad@chromium.org
-
-# TEAM: chromium-accessibility@chromium.org
-# COMPONENT: UI>Accessibility
diff --git a/third_party/libphonenumber/DIR_METADATA b/third_party/libphonenumber/DIR_METADATA
new file mode 100644
index 0000000..ac71123
--- /dev/null
+++ b/third_party/libphonenumber/DIR_METADATA
@@ -0,0 +1,3 @@
+monorail: {
+  component: "UI>Browser>Autofill"
+}
diff --git a/third_party/libphonenumber/OWNERS b/third_party/libphonenumber/OWNERS
index 7a40bb9..562d774 100644
--- a/third_party/libphonenumber/OWNERS
+++ b/third_party/libphonenumber/OWNERS
@@ -4,5 +4,3 @@
 kolos@chromium.org
 mathp@chromium.org
 rouslan@chromium.org
-
-# COMPONENT: UI>Browser>Autofill
diff --git a/third_party/libpng/DIR_METADATA b/third_party/libpng/DIR_METADATA
new file mode 100644
index 0000000..583dab1
--- /dev/null
+++ b/third_party/libpng/DIR_METADATA
@@ -0,0 +1,4 @@
+monorail: {
+  component: "Internals>Images>Codecs"
+}
+team_email: "skia-discuss@googlegroups.com"
diff --git a/third_party/libpng/OWNERS b/third_party/libpng/OWNERS
index 7fc4515..403d5e2 100644
--- a/third_party/libpng/OWNERS
+++ b/third_party/libpng/OWNERS
@@ -1,4 +1 @@
 scroggo@google.com
-
-# COMPONENT: Internals>Images>Codecs
-# TEAM: skia-discuss@googlegroups.com
diff --git a/third_party/libprotobuf-mutator/DIR_METADATA b/third_party/libprotobuf-mutator/DIR_METADATA
new file mode 100644
index 0000000..5b55a2d
--- /dev/null
+++ b/third_party/libprotobuf-mutator/DIR_METADATA
@@ -0,0 +1,4 @@
+monorail: {
+  component: "Tools>Stability>ClusterFuzz"
+}
+team_email: "chrome-security-bugs--@chromium.org"
diff --git a/third_party/libprotobuf-mutator/OWNERS b/third_party/libprotobuf-mutator/OWNERS
index a53d99c1..c455feea 100644
--- a/third_party/libprotobuf-mutator/OWNERS
+++ b/third_party/libprotobuf-mutator/OWNERS
@@ -1,5 +1,3 @@
 kcc@chromium.org
 metzman@chromium.org
 vitalybuka@chromium.org
-# COMPONENT: Tools>Stability>ClusterFuzz
-# TEAM: chrome-security-bugs--@chromium.org
diff --git a/third_party/libsecret/DIR_METADATA b/third_party/libsecret/DIR_METADATA
new file mode 100644
index 0000000..30f4e2d
--- /dev/null
+++ b/third_party/libsecret/DIR_METADATA
@@ -0,0 +1,4 @@
+monorail: {
+  component: "Internals>LocalDataEncryption"
+}
+team_email: "chromium-dev@chromium.org"
diff --git a/third_party/libsecret/OWNERS b/third_party/libsecret/OWNERS
index 915e79f..10b6284b 100644
--- a/third_party/libsecret/OWNERS
+++ b/third_party/libsecret/OWNERS
@@ -1,4 +1,2 @@
 cfroussios@chromium.org
 dvadym@chromium.org
-# COMPONENT: Internals>LocalDataEncryption
-# TEAM: chromium-dev@chromium.org
diff --git a/third_party/libsync/DIR_METADATA b/third_party/libsync/DIR_METADATA
new file mode 100644
index 0000000..d366dc7
--- /dev/null
+++ b/third_party/libsync/DIR_METADATA
@@ -0,0 +1,3 @@
+monorail: {
+  component: "Internals"
+}
diff --git a/third_party/libsync/OWNERS b/third_party/libsync/OWNERS
index fb8533e..363a93a 100644
--- a/third_party/libsync/OWNERS
+++ b/third_party/libsync/OWNERS
@@ -1,3 +1,2 @@
 dcastagna@chromium.org
 dnicoara@chromium.org
-# COMPONENT: Internals
diff --git a/third_party/libudev/DIR_METADATA b/third_party/libudev/DIR_METADATA
new file mode 100644
index 0000000..874d33d
--- /dev/null
+++ b/third_party/libudev/DIR_METADATA
@@ -0,0 +1,4 @@
+monorail: {
+  component: "IO>USB"
+}
+team_email: "device-dev@chromium.org"
diff --git a/third_party/libudev/OWNERS b/third_party/libudev/OWNERS
index dbeb6f2..fa86304 100644
--- a/third_party/libudev/OWNERS
+++ b/third_party/libudev/OWNERS
@@ -1,5 +1,2 @@
 file://chrome/browser/usb/OWNERS
 thestig@chromium.org
-
-# COMPONENT: IO>USB
-# TEAM: device-dev@chromium.org
diff --git a/third_party/libusb/DIR_METADATA b/third_party/libusb/DIR_METADATA
new file mode 100644
index 0000000..874d33d
--- /dev/null
+++ b/third_party/libusb/DIR_METADATA
@@ -0,0 +1,4 @@
+monorail: {
+  component: "IO>USB"
+}
+team_email: "device-dev@chromium.org"
diff --git a/third_party/libusb/OWNERS b/third_party/libusb/OWNERS
index 6e983a4..41d6ce4 100644
--- a/third_party/libusb/OWNERS
+++ b/third_party/libusb/OWNERS
@@ -1,4 +1,2 @@
 meacer@chromium.org
 reillyg@chromium.org
-# COMPONENT: IO>USB
-# TEAM: device-dev@chromium.org
diff --git a/third_party/libvpx/DIR_METADATA b/third_party/libvpx/DIR_METADATA
new file mode 100644
index 0000000..0cc7e5f
--- /dev/null
+++ b/third_party/libvpx/DIR_METADATA
@@ -0,0 +1,3 @@
+monorail: {
+  component: "Internals>Media>Video"
+}
diff --git a/third_party/libvpx/OWNERS b/third_party/libvpx/OWNERS
index 94c2415..6524678 100644
--- a/third_party/libvpx/OWNERS
+++ b/third_party/libvpx/OWNERS
@@ -2,4 +2,3 @@
 johannkoenig@google.com
 jzern@chromium.org
 jzern@google.com
-# COMPONENT: Internals>Media>Video
diff --git a/third_party/libwebm/DIR_METADATA b/third_party/libwebm/DIR_METADATA
new file mode 100644
index 0000000..698e493
--- /dev/null
+++ b/third_party/libwebm/DIR_METADATA
@@ -0,0 +1,3 @@
+monorail: {
+  component: "Blink>MediaRecording"
+}
diff --git a/third_party/libwebm/OWNERS b/third_party/libwebm/OWNERS
index a4f56cf..e4e65437 100644
--- a/third_party/libwebm/OWNERS
+++ b/third_party/libwebm/OWNERS
@@ -7,5 +7,3 @@
 # Original (legacy) owner.
 emircan@chromium.org
 mcasas@chromium.org
-
-# COMPONENT: Blink>MediaRecording
diff --git a/third_party/libwebp/DIR_METADATA b/third_party/libwebp/DIR_METADATA
new file mode 100644
index 0000000..05bf134
--- /dev/null
+++ b/third_party/libwebp/DIR_METADATA
@@ -0,0 +1,3 @@
+monorail: {
+  component: "Blink>Image"
+}
diff --git a/third_party/libwebp/OWNERS b/third_party/libwebp/OWNERS
index c24c505..2f08782 100644
--- a/third_party/libwebp/OWNERS
+++ b/third_party/libwebp/OWNERS
@@ -2,4 +2,3 @@
 jzern@chromium.org
 jzern@google.com
 urvang@chromium.org
-# COMPONENT: Blink>Image
diff --git a/third_party/libxml/DIR_METADATA b/third_party/libxml/DIR_METADATA
new file mode 100644
index 0000000..a0e30b3
--- /dev/null
+++ b/third_party/libxml/DIR_METADATA
@@ -0,0 +1,3 @@
+monorail: {
+  component: "Blink>XML"
+}
diff --git a/third_party/libxml/OWNERS b/third_party/libxml/OWNERS
index 494e9ef..a15eaa2 100644
--- a/third_party/libxml/OWNERS
+++ b/third_party/libxml/OWNERS
@@ -3,5 +3,3 @@
 dcheng@chromium.org
 schenney@chromium.org
 palmer@chromium.org
-
-# COMPONENT: Blink>XML
diff --git a/third_party/libxslt/DIR_METADATA b/third_party/libxslt/DIR_METADATA
new file mode 100644
index 0000000..a0e30b3
--- /dev/null
+++ b/third_party/libxslt/DIR_METADATA
@@ -0,0 +1,3 @@
+monorail: {
+  component: "Blink>XML"
+}
diff --git a/third_party/libxslt/OWNERS b/third_party/libxslt/OWNERS
index 4fae765..b7aa69d4 100644
--- a/third_party/libxslt/OWNERS
+++ b/third_party/libxslt/OWNERS
@@ -1,2 +1 @@
 file://third_party/libxml/OWNERS
-# COMPONENT: Blink>XML
diff --git a/third_party/lottie/DIR_METADATA b/third_party/lottie/DIR_METADATA
new file mode 100644
index 0000000..d2814f2
--- /dev/null
+++ b/third_party/lottie/DIR_METADATA
@@ -0,0 +1,3 @@
+monorail: {
+  component: "UI>Browser>WebUI"
+}
diff --git a/third_party/lottie/OWNERS b/third_party/lottie/OWNERS
index 02cf2e8..49afc10f 100644
--- a/third_party/lottie/OWNERS
+++ b/third_party/lottie/OWNERS
@@ -1,4 +1,2 @@
 malaykeshav@chromium.org
 oshima@chromium.org
-
-# COMPONENT: UI>Browser>WebUI
diff --git a/third_party/lzma_sdk/DIR_METADATA b/third_party/lzma_sdk/DIR_METADATA
new file mode 100644
index 0000000..8e6cdf8
--- /dev/null
+++ b/third_party/lzma_sdk/DIR_METADATA
@@ -0,0 +1,4 @@
+monorail: {
+  component: "Internals>Installer"
+}
+team_email: "chrome-updates-dev@chromium.org"
diff --git a/third_party/lzma_sdk/OWNERS b/third_party/lzma_sdk/OWNERS
index c5c5d1e..76f3885 100644
--- a/third_party/lzma_sdk/OWNERS
+++ b/third_party/lzma_sdk/OWNERS
@@ -1,4 +1,2 @@
 grt@chromium.org
 waffles@chromium.org
-# COMPONENT: Internals>Installer
-# TEAM: chrome-updates-dev@chromium.org
diff --git a/third_party/mako/DIR_METADATA b/third_party/mako/DIR_METADATA
new file mode 100644
index 0000000..8487e4070
--- /dev/null
+++ b/third_party/mako/DIR_METADATA
@@ -0,0 +1,4 @@
+monorail: {
+  component: "Blink>Bindings"
+}
+team_email: "platform-architecture-dev@chromium.org"
diff --git a/third_party/mako/OWNERS b/third_party/mako/OWNERS
index e2b9768..74ffea4 100644
--- a/third_party/mako/OWNERS
+++ b/third_party/mako/OWNERS
@@ -1,6 +1,3 @@
 yukishiino@chromium.org
 peria@chromium.org
 haraken@chromium.org
-
-# TEAM: platform-architecture-dev@chromium.org
-# COMPONENT: Blink>Bindings
diff --git a/third_party/markdown/DIR_METADATA b/third_party/markdown/DIR_METADATA
new file mode 100644
index 0000000..e5cd46a
--- /dev/null
+++ b/third_party/markdown/DIR_METADATA
@@ -0,0 +1,3 @@
+monorail: {
+  component: "Tools"
+}
diff --git a/third_party/markdown/OWNERS b/third_party/markdown/OWNERS
index 8a94c5d..3977817 100644
--- a/third_party/markdown/OWNERS
+++ b/third_party/markdown/OWNERS
@@ -1,3 +1,2 @@
 hukun@chromium.org
 rockot@google.com
-# COMPONENT: Tools
diff --git a/third_party/material_design_icons/DIR_METADATA b/third_party/material_design_icons/DIR_METADATA
new file mode 100644
index 0000000..d366dc7
--- /dev/null
+++ b/third_party/material_design_icons/DIR_METADATA
@@ -0,0 +1,3 @@
+monorail: {
+  component: "Internals"
+}
diff --git a/third_party/material_design_icons/OWNERS b/third_party/material_design_icons/OWNERS
index 1fd761b..c5cd5cb 100644
--- a/third_party/material_design_icons/OWNERS
+++ b/third_party/material_design_icons/OWNERS
@@ -1,2 +1 @@
 sdefresne@chromium.org
-# COMPONENT: Internals
diff --git a/third_party/mesa_headers/DIR_METADATA b/third_party/mesa_headers/DIR_METADATA
new file mode 100644
index 0000000..3b153c7
--- /dev/null
+++ b/third_party/mesa_headers/DIR_METADATA
@@ -0,0 +1,3 @@
+monorail: {
+  component: "Internals>GPU>Internals"
+}
diff --git a/third_party/mesa_headers/OWNERS b/third_party/mesa_headers/OWNERS
index 74f6844..336971a6 100644
--- a/third_party/mesa_headers/OWNERS
+++ b/third_party/mesa_headers/OWNERS
@@ -1,5 +1,3 @@
 sugoi@chromium.org
 kbr@chromium.org
 senorblanco@chromium.org
-
-# COMPONENT: Internals>GPU>Internals
diff --git a/third_party/microsoft_webauthn/DIR_METADATA b/third_party/microsoft_webauthn/DIR_METADATA
new file mode 100644
index 0000000..9e9b906
--- /dev/null
+++ b/third_party/microsoft_webauthn/DIR_METADATA
@@ -0,0 +1,4 @@
+monorail: {
+  component: "Blink>WebAuthentication"
+}
+team_email: "identity-dev@chromium.org"
diff --git a/third_party/microsoft_webauthn/OWNERS b/third_party/microsoft_webauthn/OWNERS
index 151c96a..dd5ad77 100644
--- a/third_party/microsoft_webauthn/OWNERS
+++ b/third_party/microsoft_webauthn/OWNERS
@@ -1,3 +1 @@
 file://device/fido/OWNERS
-# COMPONENT: Blink>WebAuthentication
-# TEAM: identity-dev@chromium.org
diff --git a/third_party/minigbm/DIR_METADATA b/third_party/minigbm/DIR_METADATA
new file mode 100644
index 0000000..2b73a7b
--- /dev/null
+++ b/third_party/minigbm/DIR_METADATA
@@ -0,0 +1,3 @@
+monorail: {
+  component: "Internals>GPU"
+}
diff --git a/third_party/minigbm/OWNERS b/third_party/minigbm/OWNERS
index 437b03d..6223bd5 100644
--- a/third_party/minigbm/OWNERS
+++ b/third_party/minigbm/OWNERS
@@ -3,4 +3,3 @@
 gurchetansingh@chromium.org
 servolk@chromium.org
 dnicoara@chromium.org
-# COMPONENT: Internals>GPU
diff --git a/third_party/minizip/DIR_METADATA b/third_party/minizip/DIR_METADATA
new file mode 100644
index 0000000..5345fc2
--- /dev/null
+++ b/third_party/minizip/DIR_METADATA
@@ -0,0 +1,3 @@
+monorail: {
+  component: "Platform>Apps>FileManager"
+}
diff --git a/third_party/minizip/OWNERS b/third_party/minizip/OWNERS
index 7d236cb..73220a8 100644
--- a/third_party/minizip/OWNERS
+++ b/third_party/minizip/OWNERS
@@ -1,2 +1 @@
 file://ui/file_manager/OWNERS
-# COMPONENT: Platform>Apps>FileManager
diff --git a/third_party/mockito/DIR_METADATA b/third_party/mockito/DIR_METADATA
new file mode 100644
index 0000000..8dfc17cf
--- /dev/null
+++ b/third_party/mockito/DIR_METADATA
@@ -0,0 +1,3 @@
+monorail: {
+  component: "Test>Android"
+}
diff --git a/third_party/mockito/OWNERS b/third_party/mockito/OWNERS
index 8fd43ad6..d107d25c 100644
--- a/third_party/mockito/OWNERS
+++ b/third_party/mockito/OWNERS
@@ -1,5 +1,3 @@
 bjoyce@chromium.org
 hypan@google.com
 yzjr@google.com
-
-# COMPONENT: Test>Android
diff --git a/third_party/modp_b64/DIR_METADATA b/third_party/modp_b64/DIR_METADATA
new file mode 100644
index 0000000..d366dc7
--- /dev/null
+++ b/third_party/modp_b64/DIR_METADATA
@@ -0,0 +1,3 @@
+monorail: {
+  component: "Internals"
+}
diff --git a/third_party/modp_b64/OWNERS b/third_party/modp_b64/OWNERS
index bead03e..0144bac 100644
--- a/third_party/modp_b64/OWNERS
+++ b/third_party/modp_b64/OWNERS
@@ -1,3 +1,2 @@
 jschuh@chromium.org
 rsleevi@chromium.org
-# COMPONENT: Internals
diff --git a/third_party/motemplate/DIR_METADATA b/third_party/motemplate/DIR_METADATA
new file mode 100644
index 0000000..d366dc7
--- /dev/null
+++ b/third_party/motemplate/DIR_METADATA
@@ -0,0 +1,3 @@
+monorail: {
+  component: "Internals"
+}
diff --git a/third_party/motemplate/OWNERS b/third_party/motemplate/OWNERS
index 03dd10d..e06924a 100644
--- a/third_party/motemplate/OWNERS
+++ b/third_party/motemplate/OWNERS
@@ -1,2 +1 @@
 rockot@google.com
-# COMPONENT: Internals
diff --git a/third_party/nearby/DIR_METADATA b/third_party/nearby/DIR_METADATA
new file mode 100644
index 0000000..135a13c
--- /dev/null
+++ b/third_party/nearby/DIR_METADATA
@@ -0,0 +1,3 @@
+monorail: {
+  component: "UI>Browser>Sharing>Nearby"
+}
diff --git a/third_party/nearby/OWNERS b/third_party/nearby/OWNERS
index 446ac65..d3714a7 100644
--- a/third_party/nearby/OWNERS
+++ b/third_party/nearby/OWNERS
@@ -3,4 +3,3 @@
 vecore@chromium.org
 
 file://chrome/browser/nearby_sharing/OWNERS
-# COMPONENT: UI>Browser>Sharing>Nearby
diff --git a/third_party/netty4/DIR_METADATA b/third_party/netty4/DIR_METADATA
new file mode 100644
index 0000000..9686607
--- /dev/null
+++ b/third_party/netty4/DIR_METADATA
@@ -0,0 +1,4 @@
+monorail: {
+  component: "Internals>Network>Library"
+}
+team_email: "net-dev@chromium.org"
diff --git a/third_party/netty4/OWNERS b/third_party/netty4/OWNERS
index d314095..fb59c70 100644
--- a/third_party/netty4/OWNERS
+++ b/third_party/netty4/OWNERS
@@ -1,3 +1 @@
 file://net/OWNERS
-# COMPONENT: Internals>Network>Library
-# TEAM: net-dev@chromium.org
diff --git a/third_party/node/DIR_METADATA b/third_party/node/DIR_METADATA
new file mode 100644
index 0000000..9f08648
--- /dev/null
+++ b/third_party/node/DIR_METADATA
@@ -0,0 +1,4 @@
+monorail: {
+  component: "Build"
+}
+team_email: "build@chromium.org"
diff --git a/third_party/node/OWNERS b/third_party/node/OWNERS
index 335d357..137a0709 100644
--- a/third_party/node/OWNERS
+++ b/third_party/node/OWNERS
@@ -1,5 +1,2 @@
 dpapad@chromium.org
 rbpotter@chromium.org
-
-# TEAM: build@chromium.org
-# COMPONENT: Build
diff --git a/third_party/objenesis/DIR_METADATA b/third_party/objenesis/DIR_METADATA
new file mode 100644
index 0000000..8dfc17cf
--- /dev/null
+++ b/third_party/objenesis/DIR_METADATA
@@ -0,0 +1,3 @@
+monorail: {
+  component: "Test>Android"
+}
diff --git a/third_party/objenesis/OWNERS b/third_party/objenesis/OWNERS
index 8fd43ad6..d107d25c 100644
--- a/third_party/objenesis/OWNERS
+++ b/third_party/objenesis/OWNERS
@@ -1,5 +1,3 @@
 bjoyce@chromium.org
 hypan@google.com
 yzjr@google.com
-
-# COMPONENT: Test>Android
diff --git a/third_party/ocmock/DIR_METADATA b/third_party/ocmock/DIR_METADATA
new file mode 100644
index 0000000..c606212
--- /dev/null
+++ b/third_party/ocmock/DIR_METADATA
@@ -0,0 +1,3 @@
+monorail: {
+  component: "Test"
+}
diff --git a/third_party/ocmock/OWNERS b/third_party/ocmock/OWNERS
index fe50c14..b1dc1f3f 100644
--- a/third_party/ocmock/OWNERS
+++ b/third_party/ocmock/OWNERS
@@ -1,4 +1,2 @@
 rsesek@chromium.org
 thakis@chromium.org
-
-# COMPONENT: Test
diff --git a/third_party/one_euro_filter/DIR_METADATA b/third_party/one_euro_filter/DIR_METADATA
new file mode 100644
index 0000000..8a75777
--- /dev/null
+++ b/third_party/one_euro_filter/DIR_METADATA
@@ -0,0 +1,3 @@
+monorail: {
+  component: "Blink>Input"
+}
diff --git a/third_party/one_euro_filter/OWNERS b/third_party/one_euro_filter/OWNERS
index c3972c9..518eb59f 100644
--- a/third_party/one_euro_filter/OWNERS
+++ b/third_party/one_euro_filter/OWNERS
@@ -1,5 +1,3 @@
 axantoine@google.com
 eirage@chromium.org
 nzolghadr@chromium.org
-
-# COMPONENT: Blink>Input
diff --git a/third_party/opencv/DIR_METADATA b/third_party/opencv/DIR_METADATA
new file mode 100644
index 0000000..ee2d9cf5
--- /dev/null
+++ b/third_party/opencv/DIR_METADATA
@@ -0,0 +1,4 @@
+monorail: {
+  component: "Services>Safebrowsing"
+}
+team_email: "safebrowsing@chromium.org"
diff --git a/third_party/opencv/OWNERS b/third_party/opencv/OWNERS
index 741db08..5c5940d 100644
--- a/third_party/opencv/OWNERS
+++ b/third_party/opencv/OWNERS
@@ -1,5 +1,3 @@
 bdea@chromium.org
 drubery@chromium.org
 vakh@chromium.org
-# COMPONENT: Services>Safebrowsing
-# TEAM: safebrowsing@chromium.org
diff --git a/third_party/openh264/DIR_METADATA b/third_party/openh264/DIR_METADATA
new file mode 100644
index 0000000..e20fe1f
--- /dev/null
+++ b/third_party/openh264/DIR_METADATA
@@ -0,0 +1,4 @@
+monorail: {
+  component: "Blink>WebRTC>Video"
+}
+team_email: "webrtc-reviews@webrtc.org"
diff --git a/third_party/openh264/OWNERS b/third_party/openh264/OWNERS
index 8ae0710..f9316a7af 100644
--- a/third_party/openh264/OWNERS
+++ b/third_party/openh264/OWNERS
@@ -1,4 +1,2 @@
 sprang@chromium.org
 ssilkin@chromium.org
-# COMPONENT: Blink>WebRTC>Video
-# TEAM: webrtc-reviews@webrtc.org
diff --git a/third_party/openscreen/DIR_METADATA b/third_party/openscreen/DIR_METADATA
new file mode 100644
index 0000000..8283c57
--- /dev/null
+++ b/third_party/openscreen/DIR_METADATA
@@ -0,0 +1,3 @@
+monorail: {
+  component: "Internals>Cast>Providers"
+}
diff --git a/third_party/openscreen/OWNERS b/third_party/openscreen/OWNERS
index d763da3..9fcfeaf 100644
--- a/third_party/openscreen/OWNERS
+++ b/third_party/openscreen/OWNERS
@@ -1,5 +1,3 @@
 mfoltz@chromium.org
 btolsch@chromium.org
 pthatcher@chromium.org
-
-# COMPONENT: Internals>Cast>Providers
diff --git a/third_party/openxr/DIR_METADATA b/third_party/openxr/DIR_METADATA
new file mode 100644
index 0000000..bdad50d
--- /dev/null
+++ b/third_party/openxr/DIR_METADATA
@@ -0,0 +1,4 @@
+monorail: {
+  component: "Internals>XR"
+}
+team_email: "xr-dev@chromium.org"
diff --git a/third_party/openxr/OWNERS b/third_party/openxr/OWNERS
index 7a9ed6b..fa80476 100644
--- a/third_party/openxr/OWNERS
+++ b/third_party/openxr/OWNERS
@@ -1,5 +1,2 @@
 alcooper@chromium.org
 rafael.cintron@microsoft.com
-
-# TEAM: xr-dev@chromium.org
-# COMPONENT: Internals>XR
diff --git a/third_party/opus/DIR_METADATA b/third_party/opus/DIR_METADATA
new file mode 100644
index 0000000..a0f2fd3
--- /dev/null
+++ b/third_party/opus/DIR_METADATA
@@ -0,0 +1,3 @@
+monorail: {
+  component: "Internals>Media>Codecs"
+}
diff --git a/third_party/opus/OWNERS b/third_party/opus/OWNERS
index bcecd2af..f46b8d1 100644
--- a/third_party/opus/OWNERS
+++ b/third_party/opus/OWNERS
@@ -1,3 +1,2 @@
 flim@chromium.org
 henrika@chromium.org
-# COMPONENT: Internals>Media>Codecs
diff --git a/third_party/ots/DIR_METADATA b/third_party/ots/DIR_METADATA
new file mode 100644
index 0000000..de0c86e
--- /dev/null
+++ b/third_party/ots/DIR_METADATA
@@ -0,0 +1,4 @@
+monorail: {
+  component: "Blink>WebFonts"
+}
+team_email: "loading-dev@chromium.org"
diff --git a/third_party/ots/OWNERS b/third_party/ots/OWNERS
index bd9c3c0..5a4a194 100644
--- a/third_party/ots/OWNERS
+++ b/third_party/ots/OWNERS
@@ -1,4 +1,2 @@
 bashi@chromium.org
 jshin@chromium.org
-# COMPONENT: Blink>WebFonts
-# TEAM: loading-dev@chromium.org
diff --git a/third_party/pexpect/DIR_METADATA b/third_party/pexpect/DIR_METADATA
new file mode 100644
index 0000000..e5cd46a
--- /dev/null
+++ b/third_party/pexpect/DIR_METADATA
@@ -0,0 +1,3 @@
+monorail: {
+  component: "Tools"
+}
diff --git a/third_party/pexpect/OWNERS b/third_party/pexpect/OWNERS
index d783ece..ad5af4f 100644
--- a/third_party/pexpect/OWNERS
+++ b/third_party/pexpect/OWNERS
@@ -1,3 +1,2 @@
 nduca@chromium.org
 tonyg@chromium.org
-# COMPONENT: Tools
diff --git a/third_party/pffft/DIR_METADATA b/third_party/pffft/DIR_METADATA
new file mode 100644
index 0000000..d5311db8
--- /dev/null
+++ b/third_party/pffft/DIR_METADATA
@@ -0,0 +1,3 @@
+monorail: {
+  component: "Blink>WebRTC>Audio"
+}
diff --git a/third_party/pffft/OWNERS b/third_party/pffft/OWNERS
index e97a539..b956a23 100644
--- a/third_party/pffft/OWNERS
+++ b/third_party/pffft/OWNERS
@@ -1,4 +1,2 @@
 maxmorin@chromium.org
 olka@chromium.org
-
-# COMPONENT: Blink>WebRTC>Audio
diff --git a/third_party/polymer/DIR_METADATA b/third_party/polymer/DIR_METADATA
new file mode 100644
index 0000000..d2814f2
--- /dev/null
+++ b/third_party/polymer/DIR_METADATA
@@ -0,0 +1,3 @@
+monorail: {
+  component: "UI>Browser>WebUI"
+}
diff --git a/third_party/polymer/OWNERS b/third_party/polymer/OWNERS
index 2ba7f6a..5a4f24f 100644
--- a/third_party/polymer/OWNERS
+++ b/third_party/polymer/OWNERS
@@ -1,5 +1,3 @@
 dpapad@chromium.org
 michaelpg@chromium.org
 rbpotter@chromium.org
-
-# COMPONENT: UI>Browser>WebUI
diff --git a/third_party/private-join-and-compute/DIR_METADATA b/third_party/private-join-and-compute/DIR_METADATA
new file mode 100644
index 0000000..17b7d3f
--- /dev/null
+++ b/third_party/private-join-and-compute/DIR_METADATA
@@ -0,0 +1,3 @@
+monorail: {
+  component: "UI>Browser>Passwords"
+}
diff --git a/third_party/private-join-and-compute/OWNERS b/third_party/private-join-and-compute/OWNERS
index c45b1d0..91b00c1 100644
--- a/third_party/private-join-and-compute/OWNERS
+++ b/third_party/private-join-and-compute/OWNERS
@@ -1,5 +1,3 @@
 jdoerrie@chromium.org
 kwlyeo@chromium.org
 vasilii@chromium.org
-
-# COMPONENT: UI>Browser>Passwords
diff --git a/third_party/proguard/DIR_METADATA b/third_party/proguard/DIR_METADATA
new file mode 100644
index 0000000..8af6246
--- /dev/null
+++ b/third_party/proguard/DIR_METADATA
@@ -0,0 +1,4 @@
+monorail: {
+  component: "Infra"
+}
+team_email: "chromium-reviews@chromium.org"
diff --git a/third_party/proguard/OWNERS b/third_party/proguard/OWNERS
index 7d4ada84..557bec58 100644
--- a/third_party/proguard/OWNERS
+++ b/third_party/proguard/OWNERS
@@ -2,5 +2,3 @@
 smaier@chromium.org
 torne@chromium.org
 yfriedman@chromium.org
-# COMPONENT: Infra
-# TEAM: chromium-reviews@chromium.org
diff --git a/third_party/protobuf/BUILD.gn b/third_party/protobuf/BUILD.gn
index a916f19e..cd964689 100644
--- a/third_party/protobuf/BUILD.gn
+++ b/third_party/protobuf/BUILD.gn
@@ -320,6 +320,8 @@
               "src/google/protobuf/type.pb.h",
               "src/google/protobuf/unknown_field_set.cc",
               "src/google/protobuf/unknown_field_set.h",
+              "src/google/protobuf/util/delimited_message_util.cc",
+              "src/google/protobuf/util/delimited_message_util.h",
               "src/google/protobuf/util/field_comparator.cc",
               "src/google/protobuf/util/field_comparator.h",
               "src/google/protobuf/util/field_mask_util.cc",
diff --git a/third_party/protobuf/DIR_METADATA b/third_party/protobuf/DIR_METADATA
new file mode 100644
index 0000000..d366dc7
--- /dev/null
+++ b/third_party/protobuf/DIR_METADATA
@@ -0,0 +1,3 @@
+monorail: {
+  component: "Internals"
+}
diff --git a/third_party/protobuf/OWNERS b/third_party/protobuf/OWNERS
index 979e0de..ec5c11d 100644
--- a/third_party/protobuf/OWNERS
+++ b/third_party/protobuf/OWNERS
@@ -2,5 +2,3 @@
 lgrey@chromium.org
 nyquist@chromium.org
 pkasting@chromium.org
-
-# COMPONENT: Internals
diff --git a/third_party/protobuf/README.chromium b/third_party/protobuf/README.chromium
index 4cc54da..ec90f30 100644
--- a/third_party/protobuf/README.chromium
+++ b/third_party/protobuf/README.chromium
@@ -79,4 +79,9 @@
 
 - 0022-Allow-deprecated-fields.patch
 
-  Allows depreacated fields to be used without extra C++ compiler warnings.
\ No newline at end of file
+  Allows depreacated fields to be used without extra C++ compiler warnings.
+
+- 0023-fix-delimited-message-parsing.patch
+
+  Fixes a bug in delimited message parsing and serialization, as fixed in
+  protobuf commit with hash bd9a7104e11740e4bcfbde46c190c2d908ef331a
diff --git a/third_party/protobuf/patches/0023-fix-delimited-message-parsing.patch b/third_party/protobuf/patches/0023-fix-delimited-message-parsing.patch
new file mode 100644
index 0000000..808d476
--- /dev/null
+++ b/third_party/protobuf/patches/0023-fix-delimited-message-parsing.patch
@@ -0,0 +1,63 @@
+diff --git a/src/google/protobuf/util/delimited_message_util.cc b/src/google/protobuf/util/delimited_message_util.cc
+index 425dc2cfdff8..80cab309be3d 100644
+--- a/src/google/protobuf/util/delimited_message_util.cc
++++ b/src/google/protobuf/util/delimited_message_util.cc
+@@ -74,12 +74,18 @@ bool ParseDelimitedFromCodedStream(MessageLite* message,
+     return false;
+   }
+ 
++  // Get the position after any size bytes have been read (and only the message
++  // itself remains).
++  int position_after_size = input->CurrentPosition();
++
+   // Tell the stream not to read beyond that size.
+   io::CodedInputStream::Limit limit = input->PushLimit(size);
+ 
+   // Parse the message.
+   if (!message->MergeFromCodedStream(input)) return false;
+   if (!input->ConsumedEntireMessage()) return false;
++  if (input->CurrentPosition() - position_after_size != static_cast<int>(size))
++    return false;
+ 
+   // Release the limit.
+   input->PopLimit(limit);
+diff --git a/src/google/protobuf/util/delimited_message_util_test.cc b/src/google/protobuf/util/delimited_message_util_test.cc
+index 9ed67784ee1c..9483a646e738 100644
+--- a/src/google/protobuf/util/delimited_message_util_test.cc
++++ b/src/google/protobuf/util/delimited_message_util_test.cc
+@@ -82,6 +82,35 @@ TEST(DelimitedMessageUtilTest, DelimitedMessages) {
+   }
+ }
+ 
++TEST(DelimitedMessageUtilTest, FailsAtEndOfStream) {
++  std::stringstream full_stream;
++  std::stringstream partial_stream;
++
++  {
++    protobuf_unittest::ForeignMessage message;
++    message.set_c(42);
++    message.set_d(24);
++    EXPECT_TRUE(SerializeDelimitedToOstream(message, &full_stream));
++
++    std::string full_output = full_stream.str();
++    ASSERT_GT(full_output.size(), size_t{2});
++    ASSERT_EQ(full_output[0], 4);
++
++    partial_stream << full_output[0] << full_output[1] << full_output[2];
++  }
++
++  {
++    bool clean_eof;
++    io::IstreamInputStream zstream(&partial_stream);
++
++    protobuf_unittest::ForeignMessage message;
++    clean_eof = true;
++    EXPECT_FALSE(ParseDelimitedFromZeroCopyStream(&message,
++        &zstream, &clean_eof));
++    EXPECT_FALSE(clean_eof);
++  }
++}
++
+ }  // namespace util
+ }  // namespace protobuf
+ }  // namespace google
diff --git a/third_party/protobuf/src/google/protobuf/util/delimited_message_util.cc b/third_party/protobuf/src/google/protobuf/util/delimited_message_util.cc
index 425dc2cf..80cab309 100644
--- a/third_party/protobuf/src/google/protobuf/util/delimited_message_util.cc
+++ b/third_party/protobuf/src/google/protobuf/util/delimited_message_util.cc
@@ -74,12 +74,18 @@
     return false;
   }
 
+  // Get the position after any size bytes have been read (and only the message
+  // itself remains).
+  int position_after_size = input->CurrentPosition();
+
   // Tell the stream not to read beyond that size.
   io::CodedInputStream::Limit limit = input->PushLimit(size);
 
   // Parse the message.
   if (!message->MergeFromCodedStream(input)) return false;
   if (!input->ConsumedEntireMessage()) return false;
+  if (input->CurrentPosition() - position_after_size != static_cast<int>(size))
+    return false;
 
   // Release the limit.
   input->PopLimit(limit);
diff --git a/third_party/protobuf/src/google/protobuf/util/delimited_message_util_test.cc b/third_party/protobuf/src/google/protobuf/util/delimited_message_util_test.cc
index 9ed6778..9483a64 100644
--- a/third_party/protobuf/src/google/protobuf/util/delimited_message_util_test.cc
+++ b/third_party/protobuf/src/google/protobuf/util/delimited_message_util_test.cc
@@ -82,6 +82,35 @@
   }
 }
 
+TEST(DelimitedMessageUtilTest, FailsAtEndOfStream) {
+  std::stringstream full_stream;
+  std::stringstream partial_stream;
+
+  {
+    protobuf_unittest::ForeignMessage message;
+    message.set_c(42);
+    message.set_d(24);
+    EXPECT_TRUE(SerializeDelimitedToOstream(message, &full_stream));
+
+    std::string full_output = full_stream.str();
+    ASSERT_GT(full_output.size(), size_t{2});
+    ASSERT_EQ(full_output[0], 4);
+
+    partial_stream << full_output[0] << full_output[1] << full_output[2];
+  }
+
+  {
+    bool clean_eof;
+    io::IstreamInputStream zstream(&partial_stream);
+
+    protobuf_unittest::ForeignMessage message;
+    clean_eof = true;
+    EXPECT_FALSE(ParseDelimitedFromZeroCopyStream(&message,
+        &zstream, &clean_eof));
+    EXPECT_FALSE(clean_eof);
+  }
+}
+
 }  // namespace util
 }  // namespace protobuf
 }  // namespace google
diff --git a/third_party/protoc_javalite/DIR_METADATA b/third_party/protoc_javalite/DIR_METADATA
new file mode 100644
index 0000000..d366dc7
--- /dev/null
+++ b/third_party/protoc_javalite/DIR_METADATA
@@ -0,0 +1,3 @@
+monorail: {
+  component: "Internals"
+}
diff --git a/third_party/protoc_javalite/OWNERS b/third_party/protoc_javalite/OWNERS
index 6495920..7743545 100644
--- a/third_party/protoc_javalite/OWNERS
+++ b/third_party/protoc_javalite/OWNERS
@@ -1,3 +1,2 @@
 mheikal@chromium.org
 jkrcal@chromium.org
-# COMPONENT: Internals
diff --git a/third_party/pycoverage/DIR_METADATA b/third_party/pycoverage/DIR_METADATA
new file mode 100644
index 0000000..eada8c0
--- /dev/null
+++ b/third_party/pycoverage/DIR_METADATA
@@ -0,0 +1,3 @@
+monorail: {
+  component: "Tests"
+}
diff --git a/third_party/pycoverage/OWNERS b/third_party/pycoverage/OWNERS
index d8e1922..334fe6f 100644
--- a/third_party/pycoverage/OWNERS
+++ b/third_party/pycoverage/OWNERS
@@ -1,3 +1,2 @@
 sbc@chromium.org
 binji@chromium.org
-# COMPONENT: Tests
diff --git a/third_party/pystache/DIR_METADATA b/third_party/pystache/DIR_METADATA
new file mode 100644
index 0000000..c2e306b
--- /dev/null
+++ b/third_party/pystache/DIR_METADATA
@@ -0,0 +1,4 @@
+monorail: {
+  component: "Mobile>WebAPKs"
+}
+team_email: "chromium-reviews@chromium.org"
diff --git a/third_party/pystache/OWNERS b/third_party/pystache/OWNERS
index c715087..b7e271d 100644
--- a/third_party/pystache/OWNERS
+++ b/third_party/pystache/OWNERS
@@ -1,5 +1,3 @@
 hanxi@chromium.org
 pkotwicz@chromium.org
 yfriedman@chromium.org
-# COMPONENT: Mobile>WebAPKs
-# TEAM: chromium-reviews@chromium.org
diff --git a/third_party/pywebsocket3/DIR_METADATA b/third_party/pywebsocket3/DIR_METADATA
new file mode 100644
index 0000000..9d7253d0
--- /dev/null
+++ b/third_party/pywebsocket3/DIR_METADATA
@@ -0,0 +1,4 @@
+monorail: {
+  component: "Blink>Network>WebSockets"
+}
+team_email: "blink-network-dev@chromium.org"
diff --git a/third_party/pywebsocket3/OWNERS b/third_party/pywebsocket3/OWNERS
index d5f5069..20ff3c4 100644
--- a/third_party/pywebsocket3/OWNERS
+++ b/third_party/pywebsocket3/OWNERS
@@ -1,5 +1,2 @@
 ricea@chromium.org
 yhirano@chromium.org
-
-# TEAM: blink-network-dev@chromium.org
-# COMPONENT: Blink>Network>WebSockets
diff --git a/third_party/quic_trace/DIR_METADATA b/third_party/quic_trace/DIR_METADATA
new file mode 100644
index 0000000..fb8f3d5
--- /dev/null
+++ b/third_party/quic_trace/DIR_METADATA
@@ -0,0 +1,3 @@
+monorail: {
+  component: "Internals>Network>QUIC"
+}
diff --git a/third_party/quic_trace/OWNERS b/third_party/quic_trace/OWNERS
index c2c6c27..8ea5b0f 100644
--- a/third_party/quic_trace/OWNERS
+++ b/third_party/quic_trace/OWNERS
@@ -1,4 +1,3 @@
 vasilvv@chromium.org
 
 file://net/OWNERS
-# COMPONENT: Internals>Network>QUIC
diff --git a/third_party/qunit/DIR_METADATA b/third_party/qunit/DIR_METADATA
new file mode 100644
index 0000000..69e10a5
--- /dev/null
+++ b/third_party/qunit/DIR_METADATA
@@ -0,0 +1,4 @@
+monorail: {
+  component: "Tests"
+}
+team_email: "chromium-dev@chromium.org"
diff --git a/third_party/qunit/OWNERS b/third_party/qunit/OWNERS
index 223c5f7..1eac0a3 100644
--- a/third_party/qunit/OWNERS
+++ b/third_party/qunit/OWNERS
@@ -1,3 +1 @@
 jamiewalch@chromium.org
-# COMPONENT: Tests
-# TEAM: chromium-dev@chromium.org
diff --git a/third_party/r8/DIR_METADATA b/third_party/r8/DIR_METADATA
new file mode 100644
index 0000000..9f08648
--- /dev/null
+++ b/third_party/r8/DIR_METADATA
@@ -0,0 +1,4 @@
+monorail: {
+  component: "Build"
+}
+team_email: "build@chromium.org"
diff --git a/third_party/r8/OWNERS b/third_party/r8/OWNERS
index 32959eb..29e1a003 100644
--- a/third_party/r8/OWNERS
+++ b/third_party/r8/OWNERS
@@ -1,5 +1,2 @@
 smaier@chromium.org
 agrieve@chromium.org
-
-# TEAM: build@chromium.org
-# COMPONENT: Build
diff --git a/third_party/re2/DIR_METADATA b/third_party/re2/DIR_METADATA
new file mode 100644
index 0000000..d366dc7
--- /dev/null
+++ b/third_party/re2/DIR_METADATA
@@ -0,0 +1,3 @@
+monorail: {
+  component: "Internals"
+}
diff --git a/third_party/re2/OWNERS b/third_party/re2/OWNERS
index bae5c864..7487122 100644
--- a/third_party/re2/OWNERS
+++ b/third_party/re2/OWNERS
@@ -1,2 +1 @@
 thakis@chromium.org
-# COMPONENT: Internals
diff --git a/third_party/requests/DIR_METADATA b/third_party/requests/DIR_METADATA
new file mode 100644
index 0000000..8dfc17cf
--- /dev/null
+++ b/third_party/requests/DIR_METADATA
@@ -0,0 +1,3 @@
+monorail: {
+  component: "Test>Android"
+}
diff --git a/third_party/requests/OWNERS b/third_party/requests/OWNERS
index 8fd43ad6..d107d25c 100644
--- a/third_party/requests/OWNERS
+++ b/third_party/requests/OWNERS
@@ -1,5 +1,3 @@
 bjoyce@chromium.org
 hypan@google.com
 yzjr@google.com
-
-# COMPONENT: Test>Android
diff --git a/third_party/rnnoise/DIR_METADATA b/third_party/rnnoise/DIR_METADATA
new file mode 100644
index 0000000..e5cd46a
--- /dev/null
+++ b/third_party/rnnoise/DIR_METADATA
@@ -0,0 +1,3 @@
+monorail: {
+  component: "Tools"
+}
diff --git a/third_party/rnnoise/OWNERS b/third_party/rnnoise/OWNERS
index 5e862ce..b3f35ec 100644
--- a/third_party/rnnoise/OWNERS
+++ b/third_party/rnnoise/OWNERS
@@ -1,3 +1,2 @@
 alessiob@chromium.org
 aleloi@chromium.org
-# COMPONENT: Tools
diff --git a/third_party/robolectric/DIR_METADATA b/third_party/robolectric/DIR_METADATA
new file mode 100644
index 0000000..8dfc17cf
--- /dev/null
+++ b/third_party/robolectric/DIR_METADATA
@@ -0,0 +1,3 @@
+monorail: {
+  component: "Test>Android"
+}
diff --git a/third_party/robolectric/OWNERS b/third_party/robolectric/OWNERS
index f2e9ab5..10989b97 100644
--- a/third_party/robolectric/OWNERS
+++ b/third_party/robolectric/OWNERS
@@ -1,5 +1,3 @@
 agrieve@chromium.org
 bjoyce@chromium.org
 wnwen@chromium.org
-
-# COMPONENT: Test>Android
diff --git a/third_party/s2cellid/DIR_METADATA b/third_party/s2cellid/DIR_METADATA
new file mode 100644
index 0000000..d366dc7
--- /dev/null
+++ b/third_party/s2cellid/DIR_METADATA
@@ -0,0 +1,3 @@
+monorail: {
+  component: "Internals"
+}
diff --git a/third_party/s2cellid/OWNERS b/third_party/s2cellid/OWNERS
index 6e9b9ec1..45b1609c 100644
--- a/third_party/s2cellid/OWNERS
+++ b/third_party/s2cellid/OWNERS
@@ -2,4 +2,3 @@
 jiameng@chromium.org
 napper@chromium.org
 renjieliu@chromium.org
-# COMPONENT: Internals
diff --git a/third_party/securemessage/DIR_METADATA b/third_party/securemessage/DIR_METADATA
new file mode 100644
index 0000000..135a13c
--- /dev/null
+++ b/third_party/securemessage/DIR_METADATA
@@ -0,0 +1,3 @@
+monorail: {
+  component: "UI>Browser>Sharing>Nearby"
+}
diff --git a/third_party/securemessage/OWNERS b/third_party/securemessage/OWNERS
index 446ac65..d3714a7 100644
--- a/third_party/securemessage/OWNERS
+++ b/third_party/securemessage/OWNERS
@@ -3,4 +3,3 @@
 vecore@chromium.org
 
 file://chrome/browser/nearby_sharing/OWNERS
-# COMPONENT: UI>Browser>Sharing>Nearby
diff --git a/third_party/simplejson/DIR_METADATA b/third_party/simplejson/DIR_METADATA
new file mode 100644
index 0000000..e5cd46a
--- /dev/null
+++ b/third_party/simplejson/DIR_METADATA
@@ -0,0 +1,3 @@
+monorail: {
+  component: "Tools"
+}
diff --git a/third_party/simplejson/OWNERS b/third_party/simplejson/OWNERS
index 7e98ba1..e06924a 100644
--- a/third_party/simplejson/OWNERS
+++ b/third_party/simplejson/OWNERS
@@ -1,2 +1 @@
 rockot@google.com
-# COMPONENT: Tools
diff --git a/third_party/sinonjs/DIR_METADATA b/third_party/sinonjs/DIR_METADATA
new file mode 100644
index 0000000..69e10a5
--- /dev/null
+++ b/third_party/sinonjs/DIR_METADATA
@@ -0,0 +1,4 @@
+monorail: {
+  component: "Tests"
+}
+team_email: "chromium-dev@chromium.org"
diff --git a/third_party/sinonjs/OWNERS b/third_party/sinonjs/OWNERS
index 223c5f7..1eac0a3 100644
--- a/third_party/sinonjs/OWNERS
+++ b/third_party/sinonjs/OWNERS
@@ -1,3 +1 @@
 jamiewalch@chromium.org
-# COMPONENT: Tests
-# TEAM: chromium-dev@chromium.org
diff --git a/third_party/smhasher/DIR_METADATA b/third_party/smhasher/DIR_METADATA
new file mode 100644
index 0000000..d366dc7
--- /dev/null
+++ b/third_party/smhasher/DIR_METADATA
@@ -0,0 +1,3 @@
+monorail: {
+  component: "Internals"
+}
diff --git a/third_party/smhasher/OWNERS b/third_party/smhasher/OWNERS
index cc38486..9734890a 100644
--- a/third_party/smhasher/OWNERS
+++ b/third_party/smhasher/OWNERS
@@ -1,3 +1,2 @@
 cavalcantii@chromium.org
 dcheng@chromium.org
-# COMPONENT: Internals
diff --git a/third_party/snappy/DIR_METADATA b/third_party/snappy/DIR_METADATA
new file mode 100644
index 0000000..d247f03
--- /dev/null
+++ b/third_party/snappy/DIR_METADATA
@@ -0,0 +1,4 @@
+monorail: {
+  component: "Internals>Storage"
+}
+team_email: "storage-dev@chromium.org"
diff --git a/third_party/snappy/OWNERS b/third_party/snappy/OWNERS
index 59701a12..d486e513 100644
--- a/third_party/snappy/OWNERS
+++ b/third_party/snappy/OWNERS
@@ -4,6 +4,3 @@
 # Secondary
 cmumford@google.com
 jsbell@chromium.org
-
-# TEAM: storage-dev@chromium.org
-# COMPONENT: Internals>Storage
diff --git a/third_party/speech-dispatcher/DIR_METADATA b/third_party/speech-dispatcher/DIR_METADATA
new file mode 100644
index 0000000..e81b58c5
--- /dev/null
+++ b/third_party/speech-dispatcher/DIR_METADATA
@@ -0,0 +1,3 @@
+monorail: {
+  component: "Internals>SpeechSynthesis"
+}
diff --git a/third_party/speech-dispatcher/OWNERS b/third_party/speech-dispatcher/OWNERS
index d829267..3f3d042a 100644
--- a/third_party/speech-dispatcher/OWNERS
+++ b/third_party/speech-dispatcher/OWNERS
@@ -1,4 +1,2 @@
 dtseng@chromium.org
 dmazzoni@chromium.org
-
-# COMPONENT: Internals>SpeechSynthesis
diff --git a/third_party/spirv-cross/DIR_METADATA b/third_party/spirv-cross/DIR_METADATA
new file mode 100644
index 0000000..e353adf
--- /dev/null
+++ b/third_party/spirv-cross/DIR_METADATA
@@ -0,0 +1,4 @@
+monorail: {
+  component: "Internals>GPU>Internals"
+}
+team_email: "graphics-dev@chromium.org"
diff --git a/third_party/spirv-cross/OWNERS b/third_party/spirv-cross/OWNERS
index 7aedb8f..b375c58 100644
--- a/third_party/spirv-cross/OWNERS
+++ b/third_party/spirv-cross/OWNERS
@@ -1,5 +1,2 @@
 cwallez@chromium.org
 dsinclair@chromium.org
-
-# COMPONENT: Internals>GPU>Internals
-# TEAM: graphics-dev@chromium.org
diff --git a/third_party/spirv-headers/DIR_METADATA b/third_party/spirv-headers/DIR_METADATA
new file mode 100644
index 0000000..e353adf
--- /dev/null
+++ b/third_party/spirv-headers/DIR_METADATA
@@ -0,0 +1,4 @@
+monorail: {
+  component: "Internals>GPU>Internals"
+}
+team_email: "graphics-dev@chromium.org"
diff --git a/third_party/spirv-headers/OWNERS b/third_party/spirv-headers/OWNERS
index 24f8d86b..d417f07 100644
--- a/third_party/spirv-headers/OWNERS
+++ b/third_party/spirv-headers/OWNERS
@@ -1,4 +1 @@
 dsinclair@chromium.org
-
-# COMPONENT: Internals>GPU>Internals
-# TEAM: graphics-dev@chromium.org
diff --git a/third_party/sqlite/DIR_METADATA b/third_party/sqlite/DIR_METADATA
new file mode 100644
index 0000000..d247f03
--- /dev/null
+++ b/third_party/sqlite/DIR_METADATA
@@ -0,0 +1,4 @@
+monorail: {
+  component: "Internals>Storage"
+}
+team_email: "storage-dev@chromium.org"
diff --git a/third_party/sqlite/OWNERS b/third_party/sqlite/OWNERS
index 674b2621..578d8221 100644
--- a/third_party/sqlite/OWNERS
+++ b/third_party/sqlite/OWNERS
@@ -4,6 +4,3 @@
 # Secondary:
 cmumford@google.com
 pwnall@chromium.org
-
-# TEAM: storage-dev@chromium.org
-# COMPONENT: Internals>Storage
diff --git a/third_party/sqlite4java/DIR_METADATA b/third_party/sqlite4java/DIR_METADATA
new file mode 100644
index 0000000..8dfc17cf
--- /dev/null
+++ b/third_party/sqlite4java/DIR_METADATA
@@ -0,0 +1,3 @@
+monorail: {
+  component: "Test>Android"
+}
diff --git a/third_party/sqlite4java/OWNERS b/third_party/sqlite4java/OWNERS
index 8fd43ad6..d107d25c 100644
--- a/third_party/sqlite4java/OWNERS
+++ b/third_party/sqlite4java/OWNERS
@@ -1,5 +1,3 @@
 bjoyce@chromium.org
 hypan@google.com
 yzjr@google.com
-
-# COMPONENT: Test>Android
diff --git a/third_party/sudden_motion_sensor/DIR_METADATA b/third_party/sudden_motion_sensor/DIR_METADATA
new file mode 100644
index 0000000..d366dc7
--- /dev/null
+++ b/third_party/sudden_motion_sensor/DIR_METADATA
@@ -0,0 +1,3 @@
+monorail: {
+  component: "Internals"
+}
diff --git a/third_party/sudden_motion_sensor/OWNERS b/third_party/sudden_motion_sensor/OWNERS
index 36283b36..f7103d3 100644
--- a/third_party/sudden_motion_sensor/OWNERS
+++ b/third_party/sudden_motion_sensor/OWNERS
@@ -1,3 +1,2 @@
 avi@chromium.org
 mark@chromium.org
-# COMPONENT: Internals
diff --git a/third_party/tcmalloc/DIR_METADATA b/third_party/tcmalloc/DIR_METADATA
new file mode 100644
index 0000000..643d2bac
--- /dev/null
+++ b/third_party/tcmalloc/DIR_METADATA
@@ -0,0 +1,3 @@
+monorail: {
+  component: "Internals>Core"
+}
diff --git a/third_party/tcmalloc/OWNERS b/third_party/tcmalloc/OWNERS
index 3af3180..aeb9549 100644
--- a/third_party/tcmalloc/OWNERS
+++ b/third_party/tcmalloc/OWNERS
@@ -1,4 +1,2 @@
 primiano@chromium.org
 wfh@chromium.org
-
-# COMPONENT: Internals>Core
diff --git a/third_party/test_fonts/DIR_METADATA b/third_party/test_fonts/DIR_METADATA
new file mode 100644
index 0000000..9c8064b
--- /dev/null
+++ b/third_party/test_fonts/DIR_METADATA
@@ -0,0 +1,3 @@
+monorail: {
+  component: "Blink>Fonts"
+}
diff --git a/third_party/test_fonts/OWNERS b/third_party/test_fonts/OWNERS
index 35481d7..152df1a 100644
--- a/third_party/test_fonts/OWNERS
+++ b/third_party/test_fonts/OWNERS
@@ -1,3 +1,2 @@
 drott@chromium.org
 thomasanderson@chromium.org
-# COMPONENT: Blink>Fonts
diff --git a/third_party/tlslite/DIR_METADATA b/third_party/tlslite/DIR_METADATA
new file mode 100644
index 0000000..ea4cfec
--- /dev/null
+++ b/third_party/tlslite/DIR_METADATA
@@ -0,0 +1,4 @@
+monorail: {
+  component: "Internals>Network>SSL"
+}
+team_email: "net-dev@chromium.org"
diff --git a/third_party/tlslite/OWNERS b/third_party/tlslite/OWNERS
index 8f3e567..42d0d3b 100644
--- a/third_party/tlslite/OWNERS
+++ b/third_party/tlslite/OWNERS
@@ -1,6 +1,3 @@
 agl@chromium.org
 davidben@chromium.org
 rsleevi@chromium.org
-
-# COMPONENT: Internals>Network>SSL
-# TEAM: net-dev@chromium.org
diff --git a/third_party/ub-uiautomator/DIR_METADATA b/third_party/ub-uiautomator/DIR_METADATA
new file mode 100644
index 0000000..8dfc17cf
--- /dev/null
+++ b/third_party/ub-uiautomator/DIR_METADATA
@@ -0,0 +1,3 @@
+monorail: {
+  component: "Test>Android"
+}
diff --git a/third_party/ub-uiautomator/OWNERS b/third_party/ub-uiautomator/OWNERS
index 8fd43ad6..d107d25c 100644
--- a/third_party/ub-uiautomator/OWNERS
+++ b/third_party/ub-uiautomator/OWNERS
@@ -1,5 +1,3 @@
 bjoyce@chromium.org
 hypan@google.com
 yzjr@google.com
-
-# COMPONENT: Test>Android
diff --git a/third_party/ukey2/DIR_METADATA b/third_party/ukey2/DIR_METADATA
new file mode 100644
index 0000000..135a13c
--- /dev/null
+++ b/third_party/ukey2/DIR_METADATA
@@ -0,0 +1,3 @@
+monorail: {
+  component: "UI>Browser>Sharing>Nearby"
+}
diff --git a/third_party/ukey2/OWNERS b/third_party/ukey2/OWNERS
index 446ac65..d3714a7 100644
--- a/third_party/ukey2/OWNERS
+++ b/third_party/ukey2/OWNERS
@@ -3,4 +3,3 @@
 vecore@chromium.org
 
 file://chrome/browser/nearby_sharing/OWNERS
-# COMPONENT: UI>Browser>Sharing>Nearby
diff --git a/third_party/unrar/DIR_METADATA b/third_party/unrar/DIR_METADATA
new file mode 100644
index 0000000..ee2d9cf5
--- /dev/null
+++ b/third_party/unrar/DIR_METADATA
@@ -0,0 +1,4 @@
+monorail: {
+  component: "Services>Safebrowsing"
+}
+team_email: "safebrowsing@chromium.org"
diff --git a/third_party/unrar/OWNERS b/third_party/unrar/OWNERS
index 619c3e9..70e4b68 100644
--- a/third_party/unrar/OWNERS
+++ b/third_party/unrar/OWNERS
@@ -1,5 +1,3 @@
 drubery@chromium.org
 nparker@chromium.org
 vakh@chromium.org
-# COMPONENT: Services>Safebrowsing
-# TEAM: safebrowsing@chromium.org
diff --git a/third_party/usb_ids/OWNERS b/third_party/usb_ids/OWNERS
index e841f9b..acf1a9e 100644
--- a/third_party/usb_ids/OWNERS
+++ b/third_party/usb_ids/OWNERS
@@ -1,4 +1 @@
 file://chrome/browser/usb/OWNERS
-
-# COMPONENT: IO>USB
-# TEAM: device-dev@chromium.org
diff --git a/third_party/usrsctp/DIR_METADATA b/third_party/usrsctp/DIR_METADATA
new file mode 100644
index 0000000..df0a2d0
--- /dev/null
+++ b/third_party/usrsctp/DIR_METADATA
@@ -0,0 +1,3 @@
+monorail: {
+  component: "Blink>WebRTC>Network"
+}
diff --git a/third_party/usrsctp/OWNERS b/third_party/usrsctp/OWNERS
index aae538b0..0e34970 100644
--- a/third_party/usrsctp/OWNERS
+++ b/third_party/usrsctp/OWNERS
@@ -1,4 +1,2 @@
 hta@chromium.org
 orphis@chromium.org
-
-# COMPONENT: Blink>WebRTC>Network
diff --git a/third_party/v4l-utils/DIR_METADATA b/third_party/v4l-utils/DIR_METADATA
new file mode 100644
index 0000000..33f8cee
--- /dev/null
+++ b/third_party/v4l-utils/DIR_METADATA
@@ -0,0 +1,3 @@
+monorail: {
+  component: "OS>Kernel>Video"
+}
diff --git a/third_party/v4l-utils/OWNERS b/third_party/v4l-utils/OWNERS
index f0b0b56..ddb0b3f 100644
--- a/third_party/v4l-utils/OWNERS
+++ b/third_party/v4l-utils/OWNERS
@@ -1,3 +1,2 @@
 henryhsu@chromium.org
 posciak@chromium.org
-# COMPONENT: OS>Kernel>Video
diff --git a/third_party/vulkan_headers/DIR_METADATA b/third_party/vulkan_headers/DIR_METADATA
new file mode 100644
index 0000000..e353adf
--- /dev/null
+++ b/third_party/vulkan_headers/DIR_METADATA
@@ -0,0 +1,4 @@
+monorail: {
+  component: "Internals>GPU>Internals"
+}
+team_email: "graphics-dev@chromium.org"
diff --git a/third_party/vulkan_headers/OWNERS b/third_party/vulkan_headers/OWNERS
index 1abe81a..e62907b 100644
--- a/third_party/vulkan_headers/OWNERS
+++ b/third_party/vulkan_headers/OWNERS
@@ -1,5 +1,2 @@
 penghuang@chromium.org
 vmiura@chromium.org
-
-# COMPONENT: Internals>GPU>Internals
-# TEAM: graphics-dev@chromium.org
diff --git a/third_party/wayland-protocols/DIR_METADATA b/third_party/wayland-protocols/DIR_METADATA
new file mode 100644
index 0000000..dc7bf1c
--- /dev/null
+++ b/third_party/wayland-protocols/DIR_METADATA
@@ -0,0 +1,3 @@
+monorail: {
+  component: "Internals>Exosphere"
+}
diff --git a/third_party/wayland-protocols/OWNERS b/third_party/wayland-protocols/OWNERS
index 24e689858..89ef2769 100644
--- a/third_party/wayland-protocols/OWNERS
+++ b/third_party/wayland-protocols/OWNERS
@@ -1,4 +1,2 @@
 oshima@chromium.org
 dcastagna@chromium.org
-
-# COMPONENT: Internals>Exosphere
diff --git a/third_party/wayland/DIR_METADATA b/third_party/wayland/DIR_METADATA
new file mode 100644
index 0000000..dc7bf1c
--- /dev/null
+++ b/third_party/wayland/DIR_METADATA
@@ -0,0 +1,3 @@
+monorail: {
+  component: "Internals>Exosphere"
+}
diff --git a/third_party/wayland/OWNERS b/third_party/wayland/OWNERS
index 2ef89827..506bab53 100644
--- a/third_party/wayland/OWNERS
+++ b/third_party/wayland/OWNERS
@@ -1,4 +1,2 @@
 dcastagna@chromium.org
 oshima@chromium.org
-
-# COMPONENT: Internals>Exosphere
diff --git a/third_party/web-animations-js/DIR_METADATA b/third_party/web-animations-js/DIR_METADATA
new file mode 100644
index 0000000..d2814f2
--- /dev/null
+++ b/third_party/web-animations-js/DIR_METADATA
@@ -0,0 +1,3 @@
+monorail: {
+  component: "UI>Browser>WebUI"
+}
diff --git a/third_party/web-animations-js/OWNERS b/third_party/web-animations-js/OWNERS
index 0928a32..917b9f5 100644
--- a/third_party/web-animations-js/OWNERS
+++ b/third_party/web-animations-js/OWNERS
@@ -1,4 +1,2 @@
 dpapad@chromium.org
 michaelpg@chromium.org
-
-# COMPONENT: UI>Browser>WebUI
diff --git a/third_party/webdriver/DIR_METADATA b/third_party/webdriver/DIR_METADATA
new file mode 100644
index 0000000..d37c8f1
--- /dev/null
+++ b/third_party/webdriver/DIR_METADATA
@@ -0,0 +1,3 @@
+monorail: {
+  component: "Test>WebDriver"
+}
diff --git a/third_party/webdriver/OWNERS b/third_party/webdriver/OWNERS
index 99fdd6e..d24dd3f 100644
--- a/third_party/webdriver/OWNERS
+++ b/third_party/webdriver/OWNERS
@@ -3,5 +3,3 @@
 
 # secondary reviewer
 johnchen@chromium.org
-
-# COMPONENT: Test>WebDriver
diff --git a/third_party/webgpu-cts/DIR_METADATA b/third_party/webgpu-cts/DIR_METADATA
new file mode 100644
index 0000000..9c77d1a
--- /dev/null
+++ b/third_party/webgpu-cts/DIR_METADATA
@@ -0,0 +1,3 @@
+monorail: {
+  component: "Blink>WebGPU"
+}
diff --git a/third_party/webgpu-cts/OWNERS b/third_party/webgpu-cts/OWNERS
index 2feff9a1..8ff10e5 100644
--- a/third_party/webgpu-cts/OWNERS
+++ b/third_party/webgpu-cts/OWNERS
@@ -1,5 +1,3 @@
 kainino@chromium.org
 enga@chromium.org
 cwallez@chromium.org
-
-# COMPONENT: Blink>WebGPU
diff --git a/third_party/webrtc_overrides/DIR_METADATA b/third_party/webrtc_overrides/DIR_METADATA
new file mode 100644
index 0000000..fffbed0
--- /dev/null
+++ b/third_party/webrtc_overrides/DIR_METADATA
@@ -0,0 +1,4 @@
+monorail: {
+  component: "Blink>WebRTC"
+}
+team_email: "webrtc-dev@chromium.org"
diff --git a/third_party/webrtc_overrides/OWNERS b/third_party/webrtc_overrides/OWNERS
index 5f3540d..7511fbf 100644
--- a/third_party/webrtc_overrides/OWNERS
+++ b/third_party/webrtc_overrides/OWNERS
@@ -1,6 +1,3 @@
 grunell@chromium.org
 mbonadei@chromium.org
 tommi@chromium.org
-
-# COMPONENT: Blink>WebRTC
-# TEAM: webrtc-dev@chromium.org
diff --git a/third_party/webxr_test_pages/webxr-samples/proposals/index.html b/third_party/webxr_test_pages/webxr-samples/proposals/index.html
index 2b83271..3a29448 100644
--- a/third_party/webxr_test_pages/webxr-samples/proposals/index.html
+++ b/third_party/webxr_test_pages/webxr-samples/proposals/index.html
@@ -130,6 +130,14 @@
               path: 'camera-access-barebones.html',
               description: 'Demonstrates using the Camera Access feature to obtain and use a camera ' +
                            'image texture.' },
+            { title: 'AR Depth Sensing - GPU access', category: 'AR',
+              path: 'phone-ar-depth-gpu.html',
+              description: 'Demonstrates use of a depth API in immersive-ar session. ' +
+                           'The data will be uploaded to the GPU & accessed from a shader to visualize the depth map.' },
+            { title: 'AR Depth Sensing - CPU access', category: 'AR',
+              path: 'phone-ar-depth.html',
+              description: 'Demonstrates use of a depth API in immersive-ar session. ' +
+                           'The data will be accessed on the CPU.' },
           ];
 
           let mainElement = document.getElementById("main");
diff --git a/third_party/webxr_test_pages/webxr-samples/proposals/phone-ar-depth-gpu.html b/third_party/webxr_test_pages/webxr-samples/proposals/phone-ar-depth-gpu.html
index 3675cdd..0cc0341 100644
--- a/third_party/webxr_test_pages/webxr-samples/proposals/phone-ar-depth-gpu.html
+++ b/third_party/webxr_test_pages/webxr-samples/proposals/phone-ar-depth-gpu.html
@@ -39,6 +39,16 @@
     <script src='../js/webxr-polyfill.js'></script>
 
     <script src='../js/webxr-button.js'></script>
+    <style>
+      #text-info {
+        position: absolute;
+        top: 50%;
+        left: 50%;
+        transform: translate(-50%, -50%);
+        font-size: large;
+        color: red;
+      }
+    </style>
   </head>
   <body>
     <header>
@@ -51,6 +61,9 @@
         </p>
       </details>
     </header>
+    <div id="text-overlay">
+      <div id="text-info"></div>
+    </div>
     <script id="vertexShader" type="x-shader/x-vertex">
       precision mediump float;
 
@@ -84,6 +97,18 @@
       let vertexShaderSource = null;
       let fragmentShaderSource = null;
 
+      const textOverlayElement = document.querySelector("#text-overlay");
+      if(!textOverlayElement) {
+        console.error("#text-overlay element not found!");
+        throw new Error("#text-overlay element not found!");
+      }
+
+      const textInfoElement = document.querySelector("#text-info");
+      if(!textInfoElement) {
+        console.error("#text-info element not found!");
+        throw new Error("#text-info element not found!");
+      }
+
       function initXR() {
         xrButton = new XRDeviceButton({
           onRequestSession: onRequestSession,
@@ -100,7 +125,8 @@
         // Requests an immersive session with environment integration.
 
         let options = {
-          requiredFeatures: ['depth-sensing'],
+          requiredFeatures: ['depth-sensing', 'dom-overlay'],
+          domOverlay: { root: textOverlayElement },
         };
 
         navigator.xr.requestSession('immersive-ar', options).then((session) => {
@@ -157,6 +183,17 @@
 
       }
 
+      // Creates new GL buffer and uploads contents of |vertices| to it:
+      function uploadVertexData(vertices) {
+        const result = gl.createBuffer();
+
+        gl.bindBuffer(gl.ARRAY_BUFFER, result);
+        gl.bufferData(gl.ARRAY_BUFFER, new Float32Array(vertices), gl.STATIC_DRAW);
+        gl.bindBuffer(gl.ARRAY_BUFFER, null);
+
+        return result;
+      }
+
       function initializeGL() {
         shaderProgram = initShaderProgram(vertexShaderSource, fragmentShaderSource);
 
@@ -172,8 +209,6 @@
             },
         };
 
-        vertexBuffer = gl.createBuffer();
-
         // clip space coordinates + texture space coordinates
         const vertices_data = [
           -1, -1,    0, 0,  // bottom left
@@ -182,9 +217,7 @@
            1,  1,    1, 1,  // top right
         ];
 
-        gl.bindBuffer(gl.ARRAY_BUFFER, vertexBuffer);
-        gl.bufferData(gl.ARRAY_BUFFER, new Float32Array(vertices_data), gl.STATIC_DRAW);
-        gl.bindBuffer(gl.ARRAY_BUFFER, null);
+        vertexBuffer = uploadVertexData(vertices_data);
 
         depthTexture = gl.createTexture();
         gl.bindTexture(gl.TEXTURE_2D, depthTexture);
@@ -247,23 +280,29 @@
 
         const pose = frame.getViewerPose(xrRefSpace);
 
-        if(pose) {
+        if (pose) {
           gl.bindFramebuffer(gl.FRAMEBUFFER, session.renderState.baseLayer.framebuffer);
 
           // Clear the framebuffer
           gl.clearColor(0, 0, 0, 0);
           gl.clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT);
 
-          for(const view of pose.views) {
+          for (const view of pose.views) {
             const viewport = baseLayer.getViewport(view);
             gl.viewport(viewport.x, viewport.y,
                         viewport.width, viewport.height);
 
             const depthData = frame.getDepthInformation(view);
-            if(depthData){
+            if (depthData) {
+              textInfoElement.innerHTML = "";
+
               renderDepthInformationGPU(depthData, view, viewport);
+            } else {
+              textInfoElement.innerHTML = "Depth data unavailable in the current frame!";
             }
           }
+        } else {
+          textInfoElement.innerHTML = "Pose unavailable in the current frame!";
         }
       }
 
diff --git a/third_party/webxr_test_pages/webxr-samples/proposals/phone-ar-depth.html b/third_party/webxr_test_pages/webxr-samples/proposals/phone-ar-depth.html
index f7c6db5..4808c569 100644
--- a/third_party/webxr_test_pages/webxr-samples/proposals/phone-ar-depth.html
+++ b/third_party/webxr_test_pages/webxr-samples/proposals/phone-ar-depth.html
@@ -39,6 +39,16 @@
     <script src='../js/webxr-polyfill.js'></script>
 
     <script src='../js/webxr-button.js'></script>
+    <style>
+      #text-info {
+        position: absolute;
+        top: 50%;
+        left: 50%;
+        transform: translate(-50%, -50%);
+        font-size: large;
+        color: red;
+      }
+    </style>
   </head>
   <body>
     <header>
@@ -51,6 +61,9 @@
         </p>
       </details>
     </header>
+    <div id="text-overlay">
+      <div id="text-info"></div>
+    </div>
     <script id="vertexShader" type="x-shader/x-vertex">
       precision mediump float;
 
@@ -85,6 +98,18 @@
       let vertexShaderSource = null;
       let fragmentShaderSource = null;
 
+      const textOverlayElement = document.querySelector("#text-overlay");
+      if(!textOverlayElement) {
+        console.error("#text-overlay element not found!");
+        throw new Error("#text-overlay element not found!");
+      }
+
+      const textInfoElement = document.querySelector("#text-info");
+      if(!textInfoElement) {
+        console.error("#text-info element not found!");
+        throw new Error("#text-info element not found!");
+      }
+
       function initXR() {
         xrButton = new XRDeviceButton({
           onRequestSession: onRequestSession,
@@ -101,7 +126,8 @@
         // Requests an immersive session with environment integration.
 
         let options = {
-          requiredFeatures: ['depth-sensing'],
+          requiredFeatures: ['depth-sensing', 'dom-overlay'],
+          domOverlay: { root: textOverlayElement },
         };
 
         navigator.xr.requestSession('immersive-ar', options).then((session) => {
@@ -239,23 +265,29 @@
 
         const pose = frame.getViewerPose(xrRefSpace);
 
-        if(pose) {
+        if (pose) {
           gl.bindFramebuffer(gl.FRAMEBUFFER, session.renderState.baseLayer.framebuffer);
 
           // Clear the framebuffer
           gl.clearColor(0, 0, 0, 0);
           gl.clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT);
 
-          for(const view of pose.views) {
+          for (const view of pose.views) {
             const viewport = baseLayer.getViewport(view);
             gl.viewport(viewport.x, viewport.y,
                         viewport.width, viewport.height);
 
             const depthData = frame.getDepthInformation(view);
-            if(depthData){
+            if (depthData) {
+              textInfoElement.innerHTML = "";
+
               renderDepthInformationCPU(depthData, view, viewport);
+            } else {
+              textInfoElement.innerHTML = "Depth data unavailable in the current frame!";
             }
           }
+        } else {
+          textInfoElement.innerHTML = "Pose unavailable in the current frame!";
         }
       }
 
diff --git a/third_party/widevine/DIR_METADATA b/third_party/widevine/DIR_METADATA
new file mode 100644
index 0000000..7f5b6763
--- /dev/null
+++ b/third_party/widevine/DIR_METADATA
@@ -0,0 +1,3 @@
+monorail: {
+  component: "Internals>Media>Encrypted"
+}
diff --git a/third_party/widevine/OWNERS b/third_party/widevine/OWNERS
index 741c7d0..f09af45 100644
--- a/third_party/widevine/OWNERS
+++ b/third_party/widevine/OWNERS
@@ -1,4 +1,2 @@
 jrummell@chromium.org
 xhwang@chromium.org
-
-# COMPONENT: Internals>Media>Encrypted
diff --git a/third_party/win_build_output/DIR_METADATA b/third_party/win_build_output/DIR_METADATA
new file mode 100644
index 0000000..9f08648
--- /dev/null
+++ b/third_party/win_build_output/DIR_METADATA
@@ -0,0 +1,4 @@
+monorail: {
+  component: "Build"
+}
+team_email: "build@chromium.org"
diff --git a/third_party/win_build_output/OWNERS b/third_party/win_build_output/OWNERS
index 8b664be..11e77e5 100644
--- a/third_party/win_build_output/OWNERS
+++ b/third_party/win_build_output/OWNERS
@@ -1,5 +1,2 @@
 scottmg@chromium.org
 thakis@chromium.org
-
-# TEAM: build@chromium.org
-# COMPONENT: Build
diff --git a/third_party/win_build_output/midl/chrome/updater/DIR_METADATA b/third_party/win_build_output/midl/chrome/updater/DIR_METADATA
new file mode 100644
index 0000000..cd0202c
--- /dev/null
+++ b/third_party/win_build_output/midl/chrome/updater/DIR_METADATA
@@ -0,0 +1,3 @@
+monorail: {
+  component: "Internals>Updater"
+}
diff --git a/third_party/win_build_output/midl/chrome/updater/OWNERS b/third_party/win_build_output/midl/chrome/updater/OWNERS
index fbbe27d..d9a19a01 100644
--- a/third_party/win_build_output/midl/chrome/updater/OWNERS
+++ b/third_party/win_build_output/midl/chrome/updater/OWNERS
@@ -1,3 +1 @@
 file://chrome/updater/OWNERS
-
-# COMPONENT: Internals>Updater
diff --git a/third_party/woff2/DIR_METADATA b/third_party/woff2/DIR_METADATA
new file mode 100644
index 0000000..d27651d
--- /dev/null
+++ b/third_party/woff2/DIR_METADATA
@@ -0,0 +1,4 @@
+monorail: {
+  component: "Blink>Fonts"
+}
+team_email: "loading-dev@chromium.org"
diff --git a/third_party/woff2/OWNERS b/third_party/woff2/OWNERS
index f3d45a13..458697e6 100644
--- a/third_party/woff2/OWNERS
+++ b/third_party/woff2/OWNERS
@@ -1,4 +1,2 @@
 ksakamoto@chromium.org
 bashi@chromium.org
-# COMPONENT: Blink>Fonts
-# TEAM: loading-dev@chromium.org
diff --git a/third_party/wuffs/DIR_METADATA b/third_party/wuffs/DIR_METADATA
new file mode 100644
index 0000000..b82b498
--- /dev/null
+++ b/third_party/wuffs/DIR_METADATA
@@ -0,0 +1,3 @@
+monorail: {
+  component: "Internals>Skia"
+}
diff --git a/third_party/wuffs/OWNERS b/third_party/wuffs/OWNERS
index c4d3365..36cd955 100644
--- a/third_party/wuffs/OWNERS
+++ b/third_party/wuffs/OWNERS
@@ -3,5 +3,3 @@
 
 # See the comment at the top of the BUILD.gn file for the rationale.
 per-file BUILD.gn=file://ENG_REVIEW_OWNERS
-
-# COMPONENT: Internals>Skia
diff --git a/third_party/xstream/DIR_METADATA b/third_party/xstream/DIR_METADATA
new file mode 100644
index 0000000..8dfc17cf
--- /dev/null
+++ b/third_party/xstream/DIR_METADATA
@@ -0,0 +1,3 @@
+monorail: {
+  component: "Test>Android"
+}
diff --git a/third_party/xstream/OWNERS b/third_party/xstream/OWNERS
index e0a816c..00f4219 100644
--- a/third_party/xstream/OWNERS
+++ b/third_party/xstream/OWNERS
@@ -1,4 +1,2 @@
 mikecase@chromium.org
 yolandyan@chromium.org
-
-# COMPONENT: Test>Android
diff --git a/third_party/zlib/DIR_METADATA b/third_party/zlib/DIR_METADATA
new file mode 100644
index 0000000..d366dc7
--- /dev/null
+++ b/third_party/zlib/DIR_METADATA
@@ -0,0 +1,3 @@
+monorail: {
+  component: "Internals"
+}
diff --git a/third_party/zlib/OWNERS b/third_party/zlib/OWNERS
index 22f4d89..632b3f9 100644
--- a/third_party/zlib/OWNERS
+++ b/third_party/zlib/OWNERS
@@ -3,5 +3,3 @@
 cblume@chromium.org
 mtklein@google.com
 scroggo@google.com
-
-# COMPONENT: Internals
diff --git a/third_party/zxcvbn-cpp/DIR_METADATA b/third_party/zxcvbn-cpp/DIR_METADATA
new file mode 100644
index 0000000..17b7d3f
--- /dev/null
+++ b/third_party/zxcvbn-cpp/DIR_METADATA
@@ -0,0 +1,3 @@
+monorail: {
+  component: "UI>Browser>Passwords"
+}
diff --git a/third_party/zxcvbn-cpp/OWNERS b/third_party/zxcvbn-cpp/OWNERS
index b80f4f1..08fcf9b 100644
--- a/third_party/zxcvbn-cpp/OWNERS
+++ b/third_party/zxcvbn-cpp/OWNERS
@@ -1,4 +1,2 @@
 jdoerrie@chromium.org
 vasilii@chromium.org
-
-# COMPONENT: UI>Browser>Passwords
diff --git a/tools/metrics/histograms/enums.xml b/tools/metrics/histograms/enums.xml
index aa3a42d..7c6de95 100644
--- a/tools/metrics/histograms/enums.xml
+++ b/tools/metrics/histograms/enums.xml
@@ -41068,6 +41068,7 @@
   <int value="8" label="Tab crash"/>
   <int value="9" label="Unknown"/>
   <int value="10" label="Iframe"/>
+  <int value="11" label="Timeout"/>
 </enum>
 
 <enum name="LinkMonitorFailureType">
@@ -41794,6 +41795,7 @@
       label="AutofillUseImprovedLabelDisambiguation:enabled"/>
   <int value="-2129940395" label="WebAssemblySimd:disabled"/>
   <int value="-2128705444" label="AssistantAppSupport:enabled"/>
+  <int value="-2127319228" label="enable-media-internals:disabled"/>
   <int value="-2126697213" label="EnablePalmSuppression:disabled"/>
   <int value="-2124839789"
       label="OmniboxUIExperimentHideSteadyStateUrlSchemeAndSubdomains:enabled"/>
@@ -44037,6 +44039,7 @@
   <int value="-32385086" label="NtpRecipeTasksModule:disabled"/>
   <int value="-31444029" label="MediaInspectorLogging:disabled"/>
   <int value="-30966385" label="enable-hardware-overlays"/>
+  <int value="-30208692" label="webview-enable-modern-cookie-same-site"/>
   <int value="-29877377" label="TabHoverCardImages:disabled"/>
   <int value="-29847483" label="MemoryAblation:enabled"/>
   <int value="-29507521" label="ContextualNudges:disabled"/>
@@ -45074,6 +45077,7 @@
   <int value="998748600" label="SyncErrorInfoBarAndroid:disabled"/>
   <int value="1000045846" label="OverlayNewLayout:disabled"/>
   <int value="1000587036" label="OfflinePagesDescriptiveFailStatus:disabled"/>
+  <int value="1000630368" label="lacros-stability"/>
   <int value="1000706989" label="AutomaticTabDiscarding:disabled"/>
   <int value="1002585107" label="emphasize-titles-in-omnibox-dropdown"/>
   <int value="1003002105" label="MaterialDesignBookmarks:disabled"/>
@@ -45540,6 +45544,7 @@
   <int value="1427905064" label="CreditCardAutofillTouchBar:enabled"/>
   <int value="1428004502" label="PaymentRequestOptionalTotal:enabled"/>
   <int value="1428221397" label="QueryTilesInNTP:enabled"/>
+  <int value="1429923065" label="enable-media-internals:enabled"/>
   <int value="1431050645" label="PayWithGoogleV1:disabled"/>
   <int value="1431934725" label="OmniboxAutocompleteTitles:disabled"/>
   <int value="1434515920" label="ReaderModeInCCT:enabled"/>
diff --git a/tools/metrics/histograms/histograms_xml/ash/histograms.xml b/tools/metrics/histograms/histograms_xml/ash/histograms.xml
index e62a484..8c8b22e 100644
--- a/tools/metrics/histograms/histograms_xml/ash/histograms.xml
+++ b/tools/metrics/histograms/histograms_xml/ash/histograms.xml
@@ -937,7 +937,7 @@
 </histogram>
 
 <histogram name="Ash.InteractiveWindowResize.TimeToPresent" units="ms"
-    expires_after="2021-02-14">
+    expires_after="2021-12-10">
   <owner>oshima@chromium.org</owner>
   <owner>mukai@chromium.org</owner>
   <summary>
@@ -948,7 +948,7 @@
 </histogram>
 
 <histogram name="Ash.InteractiveWindowResize.TimeToPresent.MaxLatency"
-    units="ms" expires_after="2020-12-10">
+    units="ms" expires_after="2021-12-10">
   <owner>oshima@chromium.org</owner>
   <owner>mukai@chromium.org</owner>
   <summary>
diff --git a/tools/metrics/histograms/histograms_xml/signin/histograms.xml b/tools/metrics/histograms/histograms_xml/signin/histograms.xml
index a7888ca..a2d01c2 100644
--- a/tools/metrics/histograms/histograms_xml/signin/histograms.xml
+++ b/tools/metrics/histograms/histograms_xml/signin/histograms.xml
@@ -1097,7 +1097,7 @@
 </histogram>
 
 <histogram base="true" name="Signin.SyncErrorInfoBar"
-    enum="SyncErrorInfoBarAction" expires_after="M89">
+    enum="SyncErrorInfoBarAction" expires_after="2021-06-01">
 <!-- Name completed by histogram_suffixes name="SyncErrorInfoBarType" -->
 
   <owner>triploblastic@chromium.org</owner>
@@ -1109,7 +1109,7 @@
 </histogram>
 
 <histogram name="Signin.SyncFirstSetupCompleteSource"
-    enum="SyncFirstSetupCompleteSource" expires_after="M89">
+    enum="SyncFirstSetupCompleteSource" expires_after="2021-06-01">
   <owner>triploblastic@chromium.org</owner>
   <owner>bsazonov@chromium.org</owner>
   <summary>Tracks where FirstSetupComplete bit is set from.</summary>
diff --git a/tools/perf/core/perfetto_binary_roller/binary_deps.json b/tools/perf/core/perfetto_binary_roller/binary_deps.json
index 8711a335..3b42652 100644
--- a/tools/perf/core/perfetto_binary_roller/binary_deps.json
+++ b/tools/perf/core/perfetto_binary_roller/binary_deps.json
@@ -5,12 +5,12 @@
             "remote_path": "perfetto_binaries/trace_processor_shell/win/c56ea91f6bd1b910be1ba373b950c04f72595bd9/trace_processor_shell.exe"
         },
         "mac": {
-            "hash": "74f96bfdfbf4d1ff47e3eaae10a300c05faf2177",
-            "remote_path": "perfetto_binaries/trace_processor_shell/mac/c56ea91f6bd1b910be1ba373b950c04f72595bd9/trace_processor_shell"
+            "hash": "11afa62736fe0509113a32ef5bf569455300f172",
+            "remote_path": "perfetto_binaries/trace_processor_shell/mac/e1502e7972cb2a4bb582d5ae2cc693cc3b7868dc/trace_processor_shell"
         },
         "linux": {
-            "hash": "16c21682e4ed10ee02037e4697e82988ab56d379",
-            "remote_path": "perfetto_binaries/trace_processor_shell/linux/c56ea91f6bd1b910be1ba373b950c04f72595bd9/trace_processor_shell"
+            "hash": "80a12d0a00dd8be4514fb96b5bdbb3b5564e99c5",
+            "remote_path": "perfetto_binaries/trace_processor_shell/linux/48b2aad780bfff59c2cd1a1169cedc68816a017b/trace_processor_shell"
         }
     },
     "power_profile.sql": {
diff --git a/tools/privacy_budget/font_indexer/font_indexer.cc b/tools/privacy_budget/font_indexer/font_indexer.cc
index 68a20550..0d23f2d 100644
--- a/tools/privacy_budget/font_indexer/font_indexer.cc
+++ b/tools/privacy_budget/font_indexer/font_indexer.cc
@@ -84,7 +84,7 @@
 const char kOutputHeader[] =
     "Family name\tPostScript name\tweight\twidth\tslope\ttypeface "
     "digest\tdefault family name lookup digest\tdefault PostScript name lookup "
-    "digest";
+    "digest\tPostScript name string digest";
 const char kOutputSeparator[] = "\t";
 
 FontIndexer::FontIndexer() : font_cache_(blink::FontCache::GetFontCache()) {}
@@ -269,6 +269,9 @@
               default_postscript_name_lookup_digest =
                   builder.GetToken().ToUkmMetricValue();
             }
+            uint64_t postscript_name_string_digest =
+                blink::IdentifiabilityBenignStringToken(postscript_name)
+                    .ToUkmMetricValue();
 
             std::cout << name.Ascii() << kOutputSeparator
                       << postscript_name.Ascii() << kOutputSeparator
@@ -277,7 +280,9 @@
                       << slope_pair.second << kOutputSeparator
                       << typeface_digest << kOutputSeparator
                       << default_family_name_lookup_digest << kOutputSeparator
-                      << default_postscript_name_lookup_digest << std::endl;
+                      << default_postscript_name_lookup_digest
+                      << kOutputSeparator << postscript_name_string_digest
+                      << std::endl;
           }
         }
       }
diff --git a/tools/run-swarmed.py b/tools/run-swarmed.py
index adabefb..73a3201 100755
--- a/tools/run-swarmed.py
+++ b/tools/run-swarmed.py
@@ -110,7 +110,7 @@
     if os.path.isfile(filter_file):
       runner_args.append('--test-launcher-filter-file=../../' + filter_file)
 
-  trigger_args.extend(['--relative-cwd', args.out_dir, '--raw-cmd', '--'])
+  trigger_args.extend(['--relative-cwd', args.out_dir, '--'])
   trigger_args.extend(swarming_command)
   trigger_args.extend(runner_args)
 
diff --git a/ui/android/java/src/org/chromium/ui/base/Clipboard.java b/ui/android/java/src/org/chromium/ui/base/Clipboard.java
index 1cc2880..db32fc9 100644
--- a/ui/android/java/src/org/chromium/ui/base/Clipboard.java
+++ b/ui/android/java/src/org/chromium/ui/base/Clipboard.java
@@ -26,7 +26,6 @@
 import androidx.annotation.VisibleForTesting;
 
 import org.chromium.base.ApiCompatibilityUtils;
-import org.chromium.base.BuildInfo;
 import org.chromium.base.Callback;
 import org.chromium.base.ContextUtils;
 import org.chromium.base.StrictModeContext;
@@ -393,7 +392,9 @@
      * @param hasFocus Whether or not {@code activity} gained or lost focus.
      */
     public void onWindowFocusChanged(boolean hasFocus) {
-        if (mNativeClipboard == 0 || !hasFocus || !BuildInfo.isAtLeastQ()) return;
+        if (mNativeClipboard == 0 || !hasFocus || Build.VERSION.SDK_INT < Build.VERSION_CODES.Q) {
+            return;
+        }
         onPrimaryClipTimestampInvalidated();
     }
 
diff --git a/ui/android/java/src/org/chromium/ui/base/WindowAndroid.java b/ui/android/java/src/org/chromium/ui/base/WindowAndroid.java
index 2dbaa08c..3018b4f 100644
--- a/ui/android/java/src/org/chromium/ui/base/WindowAndroid.java
+++ b/ui/android/java/src/org/chromium/ui/base/WindowAndroid.java
@@ -32,7 +32,6 @@
 
 import org.chromium.base.ActivityState;
 import org.chromium.base.ApiCompatibilityUtils;
-import org.chromium.base.BuildInfo;
 import org.chromium.base.Callback;
 import org.chromium.base.ContextUtils;
 import org.chromium.base.LifetimeAssert;
@@ -227,7 +226,7 @@
         // if the API is used. See crbug.com/990646.
         // Disable refresh rate change on TV platforms, as it may cause black screen flicker due to
         // display mode changes.
-        mAllowChangeRefreshRate = BuildInfo.isAtLeastQ() && !isTv(context);
+        mAllowChangeRefreshRate = Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q && !isTv(context);
 
         // Multiple refresh rate support is only available on M+.
         if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) recomputeSupportedRefreshRates();
@@ -712,7 +711,7 @@
     // gamut (on supported hardware and os). However it is important for embedders like WebView
     // which do not make the wide gamut decision to check this at run time.
     private boolean getWindowIsWideColorGamut() {
-        if (!BuildInfo.isAtLeastQ()) return false;
+        if (Build.VERSION.SDK_INT < Build.VERSION_CODES.Q) return false;
         Window window = getWindow();
         if (window == null) return false;
         return ApiHelperForOMR1.isWideColorGamut(window);
diff --git a/ui/base/ime/win/tsf_bridge.cc b/ui/base/ime/win/tsf_bridge.cc
index 7408082..4e0fde41 100644
--- a/ui/base/ime/win/tsf_bridge.cc
+++ b/ui/base/ime/win/tsf_bridge.cc
@@ -12,6 +12,7 @@
 #include "base/stl_util.h"
 #include "base/task/current_thread.h"
 #include "base/threading/thread_local_storage.h"
+#include "base/trace_event/trace_event.h"
 #include "base/win/scoped_variant.h"
 #include "ui/base/ime/input_method_delegate.h"
 #include "ui/base/ime/text_input_client.h"
@@ -614,6 +615,7 @@
 
 // static
 HRESULT TSFBridge::Initialize() {
+  TRACE_EVENT0("ime", "TSFBridge::Initialize");
   if (!base::CurrentUIThread::IsSet()) {
     return E_FAIL;
   }
@@ -662,6 +664,7 @@
 
 // static
 void TSFBridge::Shutdown() {
+  TRACE_EVENT0("ime", "TSFBridge::Shutdown");
   if (!base::CurrentUIThread::IsSet()) {
   }
   ReplaceThreadLocalTSFBridge(nullptr);
diff --git a/ui/base/ime/win/tsf_text_store.cc b/ui/base/ime/win/tsf_text_store.cc
index 9a59bba..72a139f 100644
--- a/ui/base/ime/win/tsf_text_store.cc
+++ b/ui/base/ime/win/tsf_text_store.cc
@@ -13,6 +13,7 @@
 
 #include "base/logging.h"
 #include "base/numerics/ranges.h"
+#include "base/trace_event/trace_event.h"
 #include "base/win/scoped_variant.h"
 #include "ui/base/ime/text_input_client.h"
 #include "ui/base/ime/win/tsf_input_scope.h"
@@ -47,7 +48,9 @@
 
 }  // namespace
 
-TSFTextStore::TSFTextStore() {}
+TSFTextStore::TSFTextStore() {
+  TRACE_EVENT0("ime", "TSFTextStore::TSFTextStore");
+}
 
 TSFTextStore::~TSFTextStore() {}
 
@@ -214,6 +217,9 @@
     rect->right = right_bottom.x;
     rect->bottom = right_bottom.y;
   }
+
+  TRACE_EVENT1("ime", "TSFTextStore::GetScreenExt", "control_bounding_rect",
+               gfx::Rect(*rect).ToString());
   return S_OK;
 }
 
@@ -408,6 +414,8 @@
                                                    result_rect.value())
               .ToRECT();
   *clipped = FALSE;
+  TRACE_EVENT1("ime", "TSFTextStore::GetTextExt", "selection_bounding_rect",
+               gfx::Rect(*rect).ToString());
   return S_OK;
 }
 
@@ -802,6 +810,7 @@
                               const wchar_t* text_buffer,
                               ULONG text_buffer_size,
                               TS_TEXTCHANGE* text_change) {
+  TRACE_EVENT0("ime", "TSFTextStore::SetText");
   if (!HasReadWriteLock())
     return TS_E_NOLOCK;
 
@@ -838,6 +847,7 @@
 
 HRESULT TSFTextStore::OnStartComposition(ITfCompositionView* composition_view,
                                          BOOL* ok) {
+  TRACE_EVENT0("ime", "TSFTextStore::OnStartComposition");
   if (ok)
     *ok = TRUE;
 
@@ -851,6 +861,7 @@
 }
 
 HRESULT TSFTextStore::OnEndComposition(ITfCompositionView* composition_view) {
+  TRACE_EVENT0("ime", "TSFTextStore::OnEndComposition");
   return S_OK;
 }
 
@@ -911,6 +922,7 @@
 HRESULT TSFTextStore::OnEndEdit(ITfContext* context,
                                 TfEditCookie read_only_edit_cookie,
                                 ITfEditRecord* edit_record) {
+  TRACE_EVENT0("ime", "TSFTextStore::OnEndEdit");
   if (!context || !edit_record)
     return E_INVALIDARG;
 
@@ -980,6 +992,7 @@
 
 bool TSFTextStore::GetDisplayAttribute(TfGuidAtom guid_atom,
                                        TF_DISPLAYATTRIBUTE* attribute) {
+  TRACE_EVENT0("ime", "TSFTextStore::GetDisplayAttribute");
   GUID guid;
   if (FAILED(category_manager_->GetGUID(guid_atom, &guid)))
     return false;
@@ -1088,6 +1101,7 @@
 }
 
 bool TSFTextStore::TerminateComposition() {
+  TRACE_EVENT0("ime", "TSFTextStore::TerminateComposition");
   if (context_ && has_composition_range_) {
     Microsoft::WRL::ComPtr<ITfContextOwnerCompositionServices> service;
 
@@ -1108,6 +1122,10 @@
       is_tic_write_in_progress_)
     return;
 
+  // TODO(snianu) Perhaps we can do the diff at the TextInputManager layer and
+  // only report the diffs?
+  TRACE_EVENT0("ime",
+               "TSFTextStore::CalculateTextandSelectionDiffAndNotifyIfNeeded");
   gfx::Range latest_buffer_range_from_client;
   base::string16 latest_buffer_from_client;
   gfx::Range latest_selection_from_client;
@@ -1212,10 +1230,17 @@
     // into us during notification.
     is_notification_in_progress_ = true;
     if (notify_text_change && text_changed) {
+      TRACE_EVENT2(
+          "ime", "TSFTextStore::CalculateTextandSelectionDiffAndNotifyIfNeeded",
+          "text_change_start", std::to_string(text_change.acpStart),
+          "text_change_end", std::to_string(text_change.acpNewEnd));
       text_store_acp_sink_->OnTextChange(0, &text_change);
     }
 
     if (notify_selection_change && selection_changed) {
+      TRACE_EVENT1(
+          "ime", "TSFTextStore::CalculateTextandSelectionDiffAndNotifyIfNeeded",
+          "new_selection", selection_.ToString());
       text_store_acp_sink_->OnSelectionChange();
     }
     is_notification_in_progress_ = false;
@@ -1261,6 +1286,7 @@
   // TODO(IME): Check other platforms to see if |CancelComposition()| is
   //            actually working or not.
 
+  TRACE_EVENT0("ime", "TSFTextStore::CancelComposition");
   return ConfirmComposition();
 }
 
@@ -1301,8 +1327,11 @@
   if (is_notification_in_progress_)
     return;
   CalculateTextandSelectionDiffAndNotifyIfNeeded();
-  if (text_store_acp_sink_ && (text_store_acp_sink_mask_ & TS_AS_LAYOUT_CHANGE))
+  if (text_store_acp_sink_ &&
+      (text_store_acp_sink_mask_ & TS_AS_LAYOUT_CHANGE)) {
+    TRACE_EVENT0("ime", "TSFTextStore::SendOnLayoutChange");
     text_store_acp_sink_->OnLayoutChange(TS_LC_CHANGE, 0);
+  }
 }
 
 bool TSFTextStore::HasReadLock() const {
diff --git a/ui/base/x/x11_cursor.cc b/ui/base/x/x11_cursor.cc
index c483bd7..0b9d548d 100644
--- a/ui/base/x/x11_cursor.cc
+++ b/ui/base/x/x11_cursor.cc
@@ -6,6 +6,7 @@
 
 #include "ui/base/x/x11_cursor_loader.h"
 #include "ui/gfx/x/connection.h"
+#include "ui/gfx/x/future.h"
 #include "ui/gfx/x/xproto.h"
 
 namespace ui {
diff --git a/ui/base/x/x11_cursor.h b/ui/base/x/x11_cursor.h
index dba2dbe..bf59662 100644
--- a/ui/base/x/x11_cursor.h
+++ b/ui/base/x/x11_cursor.h
@@ -7,6 +7,7 @@
 
 #include <vector>
 
+#include "base/callback.h"
 #include "base/component_export.h"
 #include "base/memory/ref_counted.h"
 #include "ui/gfx/x/xproto.h"
diff --git a/ui/base/x/x11_display_manager.cc b/ui/base/x/x11_display_manager.cc
index 170aeb8..0beec93 100644
--- a/ui/base/x/x11_display_manager.cc
+++ b/ui/base/x/x11_display_manager.cc
@@ -9,6 +9,7 @@
 #include "base/bind.h"
 #include "base/threading/thread_task_runner_handle.h"
 #include "ui/base/x/x11_display_util.h"
+#include "ui/gfx/x/future.h"
 #include "ui/gfx/x/randr.h"
 #include "ui/gfx/x/x11_atom_cache.h"
 #include "ui/gfx/x/xproto.h"
diff --git a/ui/base/x/x11_idle_query.cc b/ui/base/x/x11_idle_query.cc
index c880e49..9499514 100644
--- a/ui/base/x/x11_idle_query.cc
+++ b/ui/base/x/x11_idle_query.cc
@@ -5,6 +5,7 @@
 #include "ui/base/x/x11_idle_query.h"
 
 #include "ui/gfx/x/connection.h"
+#include "ui/gfx/x/future.h"
 #include "ui/gfx/x/screensaver.h"
 
 namespace ui {
diff --git a/ui/base/x/x11_user_input_monitor.cc b/ui/base/x/x11_user_input_monitor.cc
index 4b9ae01..062843e 100644
--- a/ui/base/x/x11_user_input_monitor.cc
+++ b/ui/base/x/x11_user_input_monitor.cc
@@ -7,6 +7,7 @@
 #include "base/logging.h"
 #include "ui/events/devices/x11/xinput_util.h"
 #include "ui/events/keycodes/keyboard_code_conversion_x.h"
+#include "ui/gfx/x/future.h"
 
 namespace ui {
 
diff --git a/ui/base/x/x11_util.h b/ui/base/x/x11_util.h
index ca024c44..8ecae6d0 100644
--- a/ui/base/x/x11_util.h
+++ b/ui/base/x/x11_util.h
@@ -33,6 +33,7 @@
 #include "ui/gfx/icc_profile.h"
 #include "ui/gfx/x/connection.h"
 #include "ui/gfx/x/event.h"
+#include "ui/gfx/x/future.h"
 #include "ui/gfx/x/xproto_types.h"
 
 typedef unsigned long Cursor;
diff --git a/ui/base/x/xwmstartupcheck/xwmstartupcheck.cc b/ui/base/x/xwmstartupcheck/xwmstartupcheck.cc
index 9954e562..596a5dcd 100644
--- a/ui/base/x/xwmstartupcheck/xwmstartupcheck.cc
+++ b/ui/base/x/xwmstartupcheck/xwmstartupcheck.cc
@@ -14,6 +14,8 @@
 
 #include "base/command_line.h"
 #include "ui/gfx/x/connection.h"
+#include "ui/gfx/x/event.h"
+#include "ui/gfx/x/future.h"
 #include "ui/gfx/x/xproto.h"
 
 void CalculateTimeout(const timespec& now,
diff --git a/ui/chromeos/translations/ui_chromeos_strings_af.xtb b/ui/chromeos/translations/ui_chromeos_strings_af.xtb
index 600b37b7..8a21e3c 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_af.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_af.xtb
@@ -31,7 +31,6 @@
 <translation id="1293556467332435079">Lêers</translation>
 <translation id="1297922636971898492">Google Drive is nie nou beskikbaar nie. Oplaai sal outomaties herbegin wanneer Google Drive terug is.</translation>
 <translation id="1307931752636661898">Kan nie Linux-lêers bekyk nie</translation>
-<translation id="1338950911836659113">Vee tans uit …</translation>
 <translation id="1346748346194534595">Regs</translation>
 <translation id="1351692861129622852">Voer tans <ph name="FILE_COUNT" /> lêers in …</translation>
 <translation id="1358735829858566124">Die lêer of gids is nie bruikbaar nie.</translation>
@@ -43,7 +42,6 @@
 <translation id="1430915738399379752">Druk uit</translation>
 <translation id="1435838927755162558">Deel vouer met Parallels Desktop</translation>
 <translation id="1439494416798956626">Geskuif na <ph name="FOLDER_NAME" /></translation>
-<translation id="1464724975715666883">1 fout.</translation>
 <translation id="1467432559032391204">Links</translation>
 <translation id="1471718551822868769">Slowaaks</translation>
 <translation id="1474339897586437869">"<ph name="FILENAME" />" is nie opgelaai nie. Daar is nie genoeg spasie in jou Google Drive nie.</translation>
@@ -226,11 +224,9 @@
 <translation id="3455931012307786678">Esties</translation>
 <translation id="3466147780910026086">Skandeer tans jou mediatoestel …</translation>
 <translation id="3468522857997926824"><ph name="FILE_COUNT" /> foto's is gerugsteun na <ph name="BEGIN_LINK" />Google Drive<ph name="END_LINK" /></translation>
-<translation id="3470502288861289375">Kopieer tans …</translation>
 <translation id="3473378059788601120">Gekopieer na <ph name="FOLDER_NAME" />.</translation>
 <translation id="3475447146579922140">Google-sigblad</translation>
 <translation id="3486821258960016770">Mongools</translation>
-<translation id="3495304270784461826"><ph name="COUNT" /> foute.</translation>
 <translation id="3522708245912499433">Portugees</translation>
 <translation id="3524311639100184459">Wees versigtig: Hierdie lêers is tydelik en kan outomaties uitgevee word om skyfspasie beskikbaar te maak.  <ph name="BEGIN_LINK" />Kom meer te wete<ph name="END_LINK" /></translation>
 <translation id="3527085408025491307">Vouer</translation>
@@ -240,7 +236,6 @@
 <translation id="357479282490346887">Litaus</translation>
 <translation id="3603385196401704894">Kanadese Frans</translation>
 <translation id="3606220979431771195">Turkse F</translation>
-<translation id="3609785682760573515">Sinkroniseer tans …</translation>
 <translation id="3616113530831147358">Oudio</translation>
 <translation id="3619115746895587757">Cappuccino</translation>
 <translation id="3620292326130836921">Alles is gerugsteun!</translation>
@@ -532,7 +527,6 @@
 <translation id="6657585470893396449">Wagwoord</translation>
 <translation id="6673674183150363784">Frans (Frankryk) met Bépo-sleutelbord</translation>
 <translation id="6710213216561001401">Vorige</translation>
-<translation id="6718273304615422081">Kompakteer tans …</translation>
 <translation id="6751256176799620176">1 vouer is gekies</translation>
 <translation id="6790428901817661496">Speel</translation>
 <translation id="6795884519221689054">Panda</translation>
@@ -732,7 +726,6 @@
 <translation id="8600173386174225982">Lêerlys het na kleinkiekieaansig toe verander.</translation>
 <translation id="8601932370724196034">Crostini-prentlêer</translation>
 <translation id="8609695766746872526">Yslands</translation>
-<translation id="8669949407341943408">Skuif tans …</translation>
 <translation id="8698464937041809063">Google-tekening</translation>
 <translation id="8712637175834984815">Het dit</translation>
 <translation id="8713112442029511308">Maltees</translation>
@@ -755,7 +748,6 @@
 <translation id="9034924485347205037">Linux-lêers</translation>
 <translation id="9035012421917565900">Die items kan nie na "<ph name="DESTINATION_NAME" />" toe teruggeskuif word nie en daarom sal jy nie hierdie handeling kan ontdoen nie.</translation>
 <translation id="9038620279323455325">'n Lêer met die naam "<ph name="FILE_NAME" />" bestaan reeds. Kies asseblief 'n ander naam.</translation>
-<translation id="9064939804718829769">Dra tans oor …</translation>
 <translation id="9065203028668620118">Wysig</translation>
 <translation id="908378762078012445">Russies met fonetiese AATSEEL-sleutelbord</translation>
 <translation id="9099674669267916096">Aantal bladsye</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_am.xtb b/ui/chromeos/translations/ui_chromeos_strings_am.xtb
index 3ebd6b7..f4ae88d5 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_am.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_am.xtb
@@ -31,7 +31,6 @@
 <translation id="1293556467332435079">ፋይሎች</translation>
 <translation id="1297922636971898492">Google Drive አሁን አይገኝም። Google Drive ተመልሶ እንደመጣ መስቀል በራስ-ሰር ዳግም ይጀመራል።</translation>
 <translation id="1307931752636661898">የLinux ፋይሎችን መመልከት አልተቻለም</translation>
-<translation id="1338950911836659113">በመሰረዝ ላይ...</translation>
 <translation id="1346748346194534595">ቀኝ</translation>
 <translation id="1351692861129622852"><ph name="FILE_COUNT" /> ፋይሎችን በማስመጣት ላይ...</translation>
 <translation id="1358735829858566124">ፋይሉ ወይም አቃፊው ሊሰራበት የሚችል አይደለም።</translation>
@@ -43,7 +42,6 @@
 <translation id="1430915738399379752">አትም</translation>
 <translation id="1435838927755162558">አቃፊን ለParallels ዴስክቶፕ አጋራ</translation>
 <translation id="1439494416798956626">ተወስዷል ወደ <ph name="FOLDER_NAME" /></translation>
-<translation id="1464724975715666883">1 ስህተት።</translation>
 <translation id="1467432559032391204">ግራ</translation>
 <translation id="1471718551822868769">ስሎቫክኛ</translation>
 <translation id="1474339897586437869">«<ph name="FILENAME" />» አልተሰቀለም። በእርስዎ Google Drive ውስጥ በቂ የሆነ ነፃ ቦታ የለም።</translation>
@@ -226,11 +224,9 @@
 <translation id="3455931012307786678">ኤስቶኒያኛ</translation>
 <translation id="3466147780910026086">የእርስዎን ሚዲያ መሣሪያ በመቃኘት ላይ...</translation>
 <translation id="3468522857997926824"><ph name="FILE_COUNT" /> ፎቶዎች ወደ <ph name="BEGIN_LINK" />Google Drive<ph name="END_LINK" /> በምትኬ ተቀምጠዋል</translation>
-<translation id="3470502288861289375">በመቅዳት ላይ...</translation>
 <translation id="3473378059788601120">ወደ <ph name="FOLDER_NAME" /> ተቀድቷል።</translation>
 <translation id="3475447146579922140">Google ተመን ሉህ</translation>
 <translation id="3486821258960016770">ሞንጎሊያኛ</translation>
-<translation id="3495304270784461826"><ph name="COUNT" /> ስህተቶች።</translation>
 <translation id="3522708245912499433">ፖርቱጋሊኛ</translation>
 <translation id="3524311639100184459">ማስጠንቀቂያ፦ እነዚህ ፋይሎች ጊዜያዊ የሆኑና የአንጻፊ ቦታ ነጻ ለማስለቀቅ በራስ-ሰር ሊሰረዙ የሚችሉ ናቸው።  <ph name="BEGIN_LINK" />የበለጠ ለመረዳት<ph name="END_LINK" /></translation>
 <translation id="3527085408025491307">አቃፊ</translation>
@@ -240,7 +236,6 @@
 <translation id="357479282490346887">ሊቱአኒያን</translation>
 <translation id="3603385196401704894">የካናዳ ፈረንሳይኛ</translation>
 <translation id="3606220979431771195">የቱርክኛ-F</translation>
-<translation id="3609785682760573515">በማመሳሰል ላይ...</translation>
 <translation id="3616113530831147358">ድምጽ</translation>
 <translation id="3619115746895587757">ካፑቺኖ</translation>
 <translation id="3620292326130836921">ሁሉም በምትኬ ተቀምጧል!</translation>
@@ -532,7 +527,6 @@
 <translation id="6657585470893396449">የይለፍ ቃል፦</translation>
 <translation id="6673674183150363784">ፈረንሳይኛ (ፈረንሳይ) በBépo ቁልፍ ሰሌዳ</translation>
 <translation id="6710213216561001401">ቀዳሚ</translation>
-<translation id="6718273304615422081">በማጨቅ ላይ...</translation>
 <translation id="6751256176799620176">1 አቃፊ ተመርጧል</translation>
 <translation id="6790428901817661496">አጫውት</translation>
 <translation id="6795884519221689054">ፓንዳ</translation>
@@ -732,7 +726,6 @@
 <translation id="8600173386174225982">የፋይል ዝርዝር ወደ ድንክየ ዕይታ ተለውጧል።</translation>
 <translation id="8601932370724196034">የCrostini ምስል ፋይል</translation>
 <translation id="8609695766746872526">አይስላንድኛ</translation>
-<translation id="8669949407341943408">በመውሰድ ላይ...</translation>
 <translation id="8698464937041809063">Google ስዕል</translation>
 <translation id="8712637175834984815">ገባኝ</translation>
 <translation id="8713112442029511308">ማልታኛ</translation>
@@ -755,7 +748,6 @@
 <translation id="9034924485347205037">የLinux ፋይሎች</translation>
 <translation id="9035012421917565900">ንጥሎቹ ተመልሰው ወደ «<ph name="DESTINATION_NAME" />» ሊወሰዱ አይችሉም፤ ስለዚህ ይህን ድርጊት መቀልበስ አይችሉም።</translation>
 <translation id="9038620279323455325">«<ph name="FILE_NAME" />» የሚባለው ፋይል አስቀድሞ አለ። እባክዎ የተለየ ስም ይምረጡ።</translation>
-<translation id="9064939804718829769">በማስተላለፍ ላይ...</translation>
 <translation id="9065203028668620118">አርትዕ</translation>
 <translation id="908378762078012445">ሩሲያኛ በፎነቲክ በAATSEEL ቁልፍ ሰሌዳ</translation>
 <translation id="9099674669267916096">የገጽ ብዛት</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_ar.xtb b/ui/chromeos/translations/ui_chromeos_strings_ar.xtb
index 8148890..82b8d73 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_ar.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_ar.xtb
@@ -31,7 +31,6 @@
 <translation id="1293556467332435079">ملفات</translation>
 <translation id="1297922636971898492">‏Google Drive غير متاح في الوقت الحالي. ستتم إعادة تشغيل التحميل تلقائيًا فور توفر Google Drive.</translation>
 <translation id="1307931752636661898">‏يتعذّر عرض ملفات نظام التشغيل Linux</translation>
-<translation id="1338950911836659113">جارٍ الحذف...</translation>
 <translation id="1346748346194534595">يمين</translation>
 <translation id="1351692861129622852">جار استيراد ملفات <ph name="FILE_COUNT" /> ...</translation>
 <translation id="1358735829858566124">الملف أو الدليل غير قابل للاستخدام.</translation>
@@ -43,7 +42,6 @@
 <translation id="1430915738399379752">طباعة</translation>
 <translation id="1435838927755162558">‏مشاركة المجلد مع نظام Parallels Desktop</translation>
 <translation id="1439494416798956626">تم النقل إلى <ph name="FOLDER_NAME" />.</translation>
-<translation id="1464724975715666883">خطأ واحد.</translation>
 <translation id="1467432559032391204">اليسار</translation>
 <translation id="1471718551822868769">السلوفاكية</translation>
 <translation id="1474339897586437869">‏لم يتم تحميل "<ph name="FILENAME" />". حيث لا توجد لديك مساحة فارغة كافية في Google Drive.</translation>
@@ -226,11 +224,9 @@
 <translation id="3455931012307786678">الإستونية</translation>
 <translation id="3466147780910026086">جارٍ فحص جهاز الوسائط...</translation>
 <translation id="3468522857997926824">‏تم نسخ <ph name="FILE_COUNT" /> من الصور احتياطيًا في <ph name="BEGIN_LINK" />Google Drive<ph name="END_LINK" /></translation>
-<translation id="3470502288861289375">جارٍ النسخ...</translation>
 <translation id="3473378059788601120">تم النسخ إلى <ph name="FOLDER_NAME" />.</translation>
 <translation id="3475447146579922140">‏جدول بيانات Google</translation>
 <translation id="3486821258960016770">المنغولية</translation>
-<translation id="3495304270784461826"><ph name="COUNT" /> من الأخطاء.</translation>
 <translation id="3522708245912499433">البرتغالية</translation>
 <translation id="3524311639100184459">تنبيه: هذه الملفات مؤقتة وقد يتم حذفها تلقائيًا لتوفير مساحة على القرص.  <ph name="BEGIN_LINK" />مزيد من المعلومات<ph name="END_LINK" /></translation>
 <translation id="3527085408025491307">المجلد</translation>
@@ -240,7 +236,6 @@
 <translation id="357479282490346887">الليتوانية</translation>
 <translation id="3603385196401704894">الفرنسية الكندية</translation>
 <translation id="3606220979431771195">Turkish-F</translation>
-<translation id="3609785682760573515">جارٍ المزامنة...</translation>
 <translation id="3616113530831147358">المقاطع الصوتية</translation>
 <translation id="3619115746895587757">كابتشينو</translation>
 <translation id="3620292326130836921">تم نسخ جميع العناصر احتياطيًا</translation>
@@ -533,7 +528,6 @@
 <translation id="6657585470893396449">كلمة المرور</translation>
 <translation id="6673674183150363784">‏الفرنسية (فرنسا) باستخدام لوحة مفاتيح Bépo</translation>
 <translation id="6710213216561001401">السابق</translation>
-<translation id="6718273304615422081">جارٍ الضغط...</translation>
 <translation id="6751256176799620176">تم اختيار مجلد واحد</translation>
 <translation id="6790428901817661496">التشغيل</translation>
 <translation id="6795884519221689054">باندا</translation>
@@ -733,7 +727,6 @@
 <translation id="8600173386174225982">تم تغيير قائمة الملف إلى عرض الصور المصغرة.</translation>
 <translation id="8601932370724196034">‏ملف صورة Crostini</translation>
 <translation id="8609695766746872526">الآيسلندية</translation>
-<translation id="8669949407341943408">جارٍ النقل...</translation>
 <translation id="8698464937041809063">‏رسم Google</translation>
 <translation id="8712637175834984815">تم</translation>
 <translation id="8713112442029511308">المالطية</translation>
@@ -756,7 +749,6 @@
 <translation id="9034924485347205037">‏ملفات نظام التشغيل Linux</translation>
 <translation id="9035012421917565900">لا يمكن نقل العناصر مرة أخرى إلى '<ph name="DESTINATION_NAME" />'، لذلك لن تتمكن من التراجع عن هذا الإجراء.</translation>
 <translation id="9038620279323455325">الملف الذي يحمل الاسم "<ph name="FILE_NAME" />" موجود من قبل. يُرجى اختيار اسم مختلف.</translation>
-<translation id="9064939804718829769">جارٍ النقل...</translation>
 <translation id="9065203028668620118">تعديل</translation>
 <translation id="908378762078012445">‏الروسية باستخدام لوحة مفاتيح AATSEEL الصوتية</translation>
 <translation id="9099674669267916096">عدد الصفحات</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_as.xtb b/ui/chromeos/translations/ui_chromeos_strings_as.xtb
index 0e953861..49b56371 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_as.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_as.xtb
@@ -31,7 +31,6 @@
 <translation id="1293556467332435079">Files</translation>
 <translation id="1297922636971898492">এই মুহূৰ্তত Google Drive উপলব্ধ নহয় Google Drive উপলব্ধ হোৱাৰ লগে লগে আপল‘ড পুনৰ আৰম্ভ হ‘ব।</translation>
 <translation id="1307931752636661898">Linux ফাইলসমূহ চাব পৰা নগ’ল</translation>
-<translation id="1338950911836659113">মচি থকা হৈছে…</translation>
 <translation id="1346748346194534595">সোঁ</translation>
 <translation id="1351692861129622852"><ph name="FILE_COUNT" />টা ফাইল আমদানি কৰি থকা হৈছে...</translation>
 <translation id="1358735829858566124">ফাইলটো বা ডাইৰেক্ট’ৰীটো ব্যৱহাৰযোগ্য নহয়।</translation>
@@ -43,7 +42,6 @@
 <translation id="1430915738399379752">প্ৰিণ্ট কৰক</translation>
 <translation id="1435838927755162558">Parallels Desktopৰ জৰিয়তে ফ’ল্ডাৰটো শ্বেয়াৰ কৰক</translation>
 <translation id="1439494416798956626"><ph name="FOLDER_NAME" />লৈ স্থানান্তৰ কৰা হ’ল।</translation>
-<translation id="1464724975715666883">১টা আসোঁৱাহ।</translation>
 <translation id="1467432559032391204">বাওঁফালে</translation>
 <translation id="1471718551822868769">শ্ল’ভাক</translation>
 <translation id="1474339897586437869">"<ph name="FILENAME" />" আপল'ড কৰা হোৱা নাই। Google Driveত পর্যাপ্ত পৰিমাণৰ খালী ঠাই নাই।</translation>
@@ -225,11 +223,9 @@
 <translation id="3455931012307786678">ইষ্ট’নিয়া</translation>
 <translation id="3466147780910026086">আপোনাৰ মিডিয়া ডিভাইচ স্কেন কৰি থকা হৈছে...</translation>
 <translation id="3468522857997926824"><ph name="FILE_COUNT" /> খন ফট’ <ph name="BEGIN_LINK" />Google Drive<ph name="END_LINK" />লৈ বেক আপ লোৱা হৈছে</translation>
-<translation id="3470502288861289375">প্ৰতিলিপি কৰি থকা হৈছে…</translation>
 <translation id="3473378059788601120"><ph name="FOLDER_NAME" />লৈ প্ৰতিলিপি কৰা হ’ল।</translation>
 <translation id="3475447146579922140">Google স্প্ৰেডশ্বীট</translation>
 <translation id="3486821258960016770">মংগোলিয়ান</translation>
-<translation id="3495304270784461826"><ph name="COUNT" />টা আসোঁৱাহ।</translation>
 <translation id="3522708245912499433">পর্তুগীজ</translation>
 <translation id="3524311639100184459">সাৱধান: এই ফাইলসমূহ অস্থায়ী আৰু ডিস্কত খালী ঠাই উলিয়াবলৈ এইবোৰ স্বয়ংক্ৰিয়ভাৱে মচা যাব পাৰে।  <ph name="BEGIN_LINK" />অধিক জানক<ph name="END_LINK" /></translation>
 <translation id="3527085408025491307">ফ’ল্ডাৰ</translation>
@@ -239,7 +235,6 @@
 <translation id="357479282490346887">লিথুৱানিয়ান</translation>
 <translation id="3603385196401704894">কানাডিয়ান ফ্রেন্স</translation>
 <translation id="3606220979431771195">টুৰ্কিছ-F</translation>
-<translation id="3609785682760573515">ছিংক কৰি থকা হৈছে...</translation>
 <translation id="3616113530831147358">অডিঅ’</translation>
 <translation id="3619115746895587757">কেপ’চিনো</translation>
 <translation id="3620292326130836921">সকলো বেক আপ সম্পূর্ণ হৈ আছে!</translation>
@@ -529,7 +524,6 @@
 <translation id="6657585470893396449">পাছৱৰ্ড</translation>
 <translation id="6673674183150363784">Bépo কীব’ৰ্ডৰ সৈতে ফৰাচী (ফ্ৰান্স)</translation>
 <translation id="6710213216561001401">পূৰ্বৱৰ্তী</translation>
-<translation id="6718273304615422081">জিপ কৰি থকা হৈছে...</translation>
 <translation id="6751256176799620176">১টা ফ’ল্ডাৰ বাছনি কৰা হ’ল</translation>
 <translation id="6790428901817661496">প্লে’ কৰক</translation>
 <translation id="6795884519221689054">পাণ্ডা</translation>
@@ -727,7 +721,6 @@
 <translation id="8600173386174225982">ফাইলৰ সূচীখন থাম্বনেইল ভিউ ম'ডলৈ সলনি কৰা হৈছে।</translation>
 <translation id="8601932370724196034">Crostini প্ৰতিচ্ছবিৰ ফাইল</translation>
 <translation id="8609695766746872526">আইচলেণ্ডীয়</translation>
-<translation id="8669949407341943408">স্থানান্তৰ কৰি থকা হৈছে...</translation>
 <translation id="8698464937041809063">Google অংকন</translation>
 <translation id="8712637175834984815">বুজি পালোঁ</translation>
 <translation id="8713112442029511308">মল্টিজ</translation>
@@ -750,7 +743,6 @@
 <translation id="9034924485347205037">Linux ফাইল</translation>
 <translation id="9035012421917565900">বস্তুবোৰ ‘<ph name="DESTINATION_NAME" />’লৈ পুনৰ লৈ যাব নোৱাৰি, সেয়েহে আপুনি এই কাৰ্যটো আনডু কৰিব নোৱাৰিব।</translation>
 <translation id="9038620279323455325">"<ph name="FILE_NAME" />" নামৰ ফাইল ইতিমধ্যে আছেই। অনুগ্ৰহ কৰি অন্য কোনো নাম বাছনি কৰক।</translation>
-<translation id="9064939804718829769">স্থানান্তৰ কৰি থকা হৈছে…</translation>
 <translation id="9065203028668620118">সম্পাদনা কৰক</translation>
 <translation id="908378762078012445">ফ’নেটিক AATSEEL কীব’ৰ্ডৰ সৈতে ৰাছিয়ান</translation>
 <translation id="9099674669267916096">পৃষ্ঠাৰ সংখ্যা</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_az.xtb b/ui/chromeos/translations/ui_chromeos_strings_az.xtb
index 68f61b5..96430eb 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_az.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_az.xtb
@@ -31,7 +31,6 @@
 <translation id="1293556467332435079">Fayllar</translation>
 <translation id="1297922636971898492">Google Disk hazırda əlçatmazdır. Google Disk əlçatan olan kimi yükləmə avtomatik yenidən başlayacaq.</translation>
 <translation id="1307931752636661898">Linux fayllarını göstərmək alınmadı</translation>
-<translation id="1338950911836659113">Silinir...</translation>
 <translation id="1346748346194534595">Sağ</translation>
 <translation id="1351692861129622852"><ph name="FILE_COUNT" /> fayl import olunur...</translation>
 <translation id="1358735829858566124">Fayl və ya direktoriya qeyri-stabildir.</translation>
@@ -43,7 +42,6 @@
 <translation id="1430915738399379752">Çap edin</translation>
 <translation id="1435838927755162558">Qovluğu Parallels Desktop ilə paylaşın</translation>
 <translation id="1439494416798956626"><ph name="FOLDER_NAME" /> qovluğuna köçürülüb.</translation>
-<translation id="1464724975715666883">1 xəta.</translation>
 <translation id="1467432559032391204">Sol</translation>
 <translation id="1471718551822868769">Slovak</translation>
 <translation id="1474339897586437869">"<ph name="FILENAME" />" yüklənmədi. Google Diskdə kifayət qədər boş yer yoxdur.</translation>
@@ -226,11 +224,9 @@
 <translation id="3455931012307786678">Eston</translation>
 <translation id="3466147780910026086">Media cihazınız skan edilir...</translation>
 <translation id="3468522857997926824"><ph name="FILE_COUNT" /> şəkil <ph name="BEGIN_LINK" />Google Diskə<ph name="END_LINK" /> yedəkləndi</translation>
-<translation id="3470502288861289375">Kopyalanır...</translation>
 <translation id="3473378059788601120"><ph name="FOLDER_NAME" /> qovluğuna kopyalandı.</translation>
 <translation id="3475447146579922140">Google cədvəl</translation>
 <translation id="3486821258960016770">Monqol</translation>
-<translation id="3495304270784461826"><ph name="COUNT" /> xətalar.</translation>
 <translation id="3522708245912499433">Portuqal</translation>
 <translation id="3524311639100184459">Xəbərdarlıq: Bu fayllar müvəqqətidir və diskdə yer boşaltmaq üçün avtomatik silinə bilər.  <ph name="BEGIN_LINK" />Ətraflı Məlumat<ph name="END_LINK" /></translation>
 <translation id="3527085408025491307">Qovluq</translation>
@@ -240,7 +236,6 @@
 <translation id="357479282490346887">Litva</translation>
 <translation id="3603385196401704894">Kanada Fransızcası</translation>
 <translation id="3606220979431771195">Türk-F</translation>
-<translation id="3609785682760573515">Sinxronlaşdırılır...</translation>
 <translation id="3616113530831147358">Audio</translation>
 <translation id="3619115746895587757">Kappuçino</translation>
 <translation id="3620292326130836921">Hamısı yedəklənib!</translation>
@@ -532,7 +527,6 @@
 <translation id="6657585470893396449">Parol</translation>
 <translation id="6673674183150363784">Bépo klaviaturası ilə Fransız (Fransa)</translation>
 <translation id="6710213216561001401">Əvvəlki</translation>
-<translation id="6718273304615422081">Sıxılır...</translation>
 <translation id="6751256176799620176">1 qovluq seçildi</translation>
 <translation id="6790428901817661496">Oxudun</translation>
 <translation id="6795884519221689054">Panda</translation>
@@ -730,7 +724,6 @@
 <translation id="8600173386174225982">Fayl siyahısı miniatür görünüşünə dəyişdirilib.</translation>
 <translation id="8601932370724196034">Crostini şəkil faylı</translation>
 <translation id="8609695766746872526">İsland</translation>
-<translation id="8669949407341943408">Daşınır...</translation>
 <translation id="8698464937041809063">Google çertyoj</translation>
 <translation id="8712637175834984815">Anladım</translation>
 <translation id="8713112442029511308">Malta</translation>
@@ -753,7 +746,6 @@
 <translation id="9034924485347205037">Linux faylları</translation>
 <translation id="9035012421917565900">Element yenidən "<ph name="DESTINATION_NAME" />" təyinatına köçürülə bilməz, ona görə də bu əməliyyat geri qaytara bilməyəcəksiniz.</translation>
 <translation id="9038620279323455325">"<ph name="FILE_NAME" />" adlı fayl artıq mövcuddur. Fərqli ad seçin.</translation>
-<translation id="9064939804718829769">Transfer edilir..</translation>
 <translation id="9065203028668620118">Düzəliş edin</translation>
 <translation id="908378762078012445">Fonetik AATSEEL klaviaturası ilə Rus dili</translation>
 <translation id="9099674669267916096">Səhifə sayı</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_be.xtb b/ui/chromeos/translations/ui_chromeos_strings_be.xtb
index a3ef0c1..25a1d33 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_be.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_be.xtb
@@ -31,7 +31,6 @@
 <translation id="1293556467332435079">Файлы</translation>
 <translation id="1297922636971898492">Google Дыск зараз недаступны. Як толькі доступ адновіцца, запампоўванне пачнецца аўтаматычна.</translation>
 <translation id="1307931752636661898">Не ўдалося праглядзець файлы Linux</translation>
-<translation id="1338950911836659113">Ідзе выдаленне...</translation>
 <translation id="1346748346194534595">Справа</translation>
 <translation id="1351692861129622852">Ідзе імпарт файлаў (<ph name="FILE_COUNT" />)...</translation>
 <translation id="1358735829858566124">Файл або папка непрыдатныя да выкарыстання.</translation>
@@ -43,7 +42,6 @@
 <translation id="1430915738399379752">Друк</translation>
 <translation id="1435838927755162558">Абагульванне папкі з Parallels Desktop</translation>
 <translation id="1439494416798956626">Перамешчана ў папку "<ph name="FOLDER_NAME" />".</translation>
-<translation id="1464724975715666883">1 памылка.</translation>
 <translation id="1467432559032391204">Злева</translation>
 <translation id="1471718551822868769">Славацкая</translation>
 <translation id="1474339897586437869">Файл "<ph name="FILENAME" />" не запампаваны: на Google Дыску недастаткова месца.</translation>
@@ -226,11 +224,9 @@
 <translation id="3455931012307786678">Эстонская</translation>
 <translation id="3466147780910026086">Праверка вашай мультымедыйнай прылады...</translation>
 <translation id="3468522857997926824">Фота (<ph name="FILE_COUNT" />) скапіраваны на <ph name="BEGIN_LINK" />Google Дыск<ph name="END_LINK" /></translation>
-<translation id="3470502288861289375">Ідзе капіраванне...</translation>
 <translation id="3473378059788601120">Скапіравана ў папку "<ph name="FOLDER_NAME" />".</translation>
 <translation id="3475447146579922140">Табліца Google</translation>
 <translation id="3486821258960016770">Мангольская</translation>
-<translation id="3495304270784461826">Памылак: <ph name="COUNT" />.</translation>
 <translation id="3522708245912499433">Партугальская</translation>
 <translation id="3524311639100184459">Увага! Гэта часовыя файлы, і яны могуць быць аўтаматычна выдалены для вызвалення месца на дыску.  <ph name="BEGIN_LINK" />Даведацца больш<ph name="END_LINK" /></translation>
 <translation id="3527085408025491307">Папка</translation>
@@ -240,7 +236,6 @@
 <translation id="357479282490346887">Літоўская</translation>
 <translation id="3603385196401704894">Французская (канадская)</translation>
 <translation id="3606220979431771195">Турэцкая-F</translation>
-<translation id="3609785682760573515">Сінхранізацыя...</translation>
 <translation id="3616113530831147358">Аўдыя</translation>
 <translation id="3619115746895587757">Капучына</translation>
 <translation id="3620292326130836921">Усё захавана ў рэзервовую копію!</translation>
@@ -532,7 +527,6 @@
 <translation id="6657585470893396449">Пароль</translation>
 <translation id="6673674183150363784">Французская (Францыя) з раскладкай Bépo</translation>
 <translation id="6710213216561001401">Назад</translation>
-<translation id="6718273304615422081">Ідзе архіваванне...</translation>
 <translation id="6751256176799620176">Выбрана 1 папка</translation>
 <translation id="6790428901817661496">Прайграць</translation>
 <translation id="6795884519221689054">Панда</translation>
@@ -732,7 +726,6 @@
 <translation id="8600173386174225982">Спіс файлаў перайшоў у рэжым мініяцюр.</translation>
 <translation id="8601932370724196034">Файл вобраза Crostini</translation>
 <translation id="8609695766746872526">Ісландская</translation>
-<translation id="8669949407341943408">Ідзе перамяшчэнне...</translation>
 <translation id="8698464937041809063">Рысунак Google</translation>
 <translation id="8712637175834984815">Зразумела</translation>
 <translation id="8713112442029511308">Мальтыйская</translation>
@@ -755,7 +748,6 @@
 <translation id="9034924485347205037">Файлы Linux</translation>
 <translation id="9035012421917565900">Немагчыма перамясціць элементы назад у "<ph name="DESTINATION_NAME" />", таму вы не зможаце адрабіць гэта дзеянне.</translation>
 <translation id="9038620279323455325">Файл пад назвай "<ph name="FILE_NAME" />" ужо існуе. Выберыце іншую назву.</translation>
-<translation id="9064939804718829769">Ідзе перадача...</translation>
 <translation id="9065203028668620118">Змяніць</translation>
 <translation id="908378762078012445">Руская (фанетычная раскладка AATSEEL)</translation>
 <translation id="9099674669267916096">Колькасць старонак</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_bg.xtb b/ui/chromeos/translations/ui_chromeos_strings_bg.xtb
index 68fdb3f..a2a75f0 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_bg.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_bg.xtb
@@ -31,7 +31,6 @@
 <translation id="1293556467332435079">Файлове</translation>
 <translation id="1297922636971898492">В момента няма достъп до Google Диск. Качването ще се рестартира автоматично, щом услугата отново е налице.</translation>
 <translation id="1307931752636661898">Файловете за Linux не могат да бъдат показани</translation>
-<translation id="1338950911836659113">Изтрива се...</translation>
 <translation id="1346748346194534595">Надясно</translation>
 <translation id="1351692861129622852">Импортират се <ph name="FILE_COUNT" /> файла...</translation>
 <translation id="1358735829858566124">Файлът или директорията не могат да се използват.</translation>
@@ -43,7 +42,6 @@
 <translation id="1430915738399379752">Печат</translation>
 <translation id="1435838927755162558">Споделяне на папката с Parallels Desktop</translation>
 <translation id="1439494416798956626">Преместено във: <ph name="FOLDER_NAME" />.</translation>
-<translation id="1464724975715666883">1 грешка.</translation>
 <translation id="1467432559032391204">Наляво</translation>
 <translation id="1471718551822868769">Словашки</translation>
 <translation id="1474339897586437869">Файлът „<ph name="FILENAME" />“ не бе качен. Нямате достатъчно свободно място в Google Диск.</translation>
@@ -226,11 +224,9 @@
 <translation id="3455931012307786678">Естонски</translation>
 <translation id="3466147780910026086">Мултимедийното ви устройство се сканира...</translation>
 <translation id="3468522857997926824">На <ph name="FILE_COUNT" /> снимки бяха създадени резервни копия в <ph name="BEGIN_LINK" />Google Диск<ph name="END_LINK" /></translation>
-<translation id="3470502288861289375">Копира се...</translation>
 <translation id="3473378059788601120">Копирано във: <ph name="FOLDER_NAME" />.</translation>
 <translation id="3475447146579922140">Електронна таблица в Google</translation>
 <translation id="3486821258960016770">Монголски</translation>
-<translation id="3495304270784461826"><ph name="COUNT" /> грешки.</translation>
 <translation id="3522708245912499433">португалски</translation>
 <translation id="3524311639100184459">Внимание: Тези файлове са временни и може да бъдат изтрити автоматично, за да се освободи място на диска.  <ph name="BEGIN_LINK" />Научете повече<ph name="END_LINK" /></translation>
 <translation id="3527085408025491307">Папка</translation>
@@ -240,7 +236,6 @@
 <translation id="357479282490346887">литовски</translation>
 <translation id="3603385196401704894">Канадска (френски) клавиатура</translation>
 <translation id="3606220979431771195">Турски (тип „F“)</translation>
-<translation id="3609785682760573515">Синхронизира се...</translation>
 <translation id="3616113530831147358">Аудио</translation>
 <translation id="3619115746895587757">Капучино</translation>
 <translation id="3620292326130836921">На всичко бе създадено резервно копие!</translation>
@@ -533,7 +528,6 @@
 <translation id="6657585470893396449">Парола</translation>
 <translation id="6673674183150363784">Френски (Франция) с клавиатура BÉPO</translation>
 <translation id="6710213216561001401">Предишно</translation>
-<translation id="6718273304615422081">Компресира се...</translation>
 <translation id="6751256176799620176">Избрахте 1 папка</translation>
 <translation id="6790428901817661496">Пускане</translation>
 <translation id="6795884519221689054">Панда</translation>
@@ -733,7 +727,6 @@
 <translation id="8600173386174225982">Списъкът с файлове е превключен към изглед с миниизображения.</translation>
 <translation id="8601932370724196034">Файл с образ на Crostini</translation>
 <translation id="8609695766746872526">Исландски</translation>
-<translation id="8669949407341943408">Извършва се преместване...</translation>
 <translation id="8698464937041809063">Рисунка в Google</translation>
 <translation id="8712637175834984815">Разбрах</translation>
 <translation id="8713112442029511308">Малтийски</translation>
@@ -756,7 +749,6 @@
 <translation id="9034924485347205037">Файлове за Linux</translation>
 <translation id="9035012421917565900">Елементите не могат да бъдат върнати в/ъв „<ph name="DESTINATION_NAME" />“, така че няма да можете да отмените това действие.</translation>
 <translation id="9038620279323455325">Файлът „<ph name="FILE_NAME" />“ вече съществува. Моля, изберете друго име.</translation>
-<translation id="9064939804718829769">Прехвърля се...</translation>
 <translation id="9065203028668620118">Редактиране</translation>
 <translation id="908378762078012445">Руски с фонетична клавиатура AATSEEL</translation>
 <translation id="9099674669267916096">Брой страници</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_bn.xtb b/ui/chromeos/translations/ui_chromeos_strings_bn.xtb
index d2f16112..095458f 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_bn.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_bn.xtb
@@ -31,7 +31,6 @@
 <translation id="1293556467332435079">Files</translation>
 <translation id="1297922636971898492">এই মুহূর্তে Google ড্রাইভ উপলব্ধ নেই৷ একবার Google ড্রাইভ উপলব্ধ হলেই আপলোড করার কাজটি স্বয়ংক্রিয়ভাবে পুনরায় চালু হবে৷</translation>
 <translation id="1307931752636661898">Linux ফাইল দেখা যায়নি</translation>
-<translation id="1338950911836659113">মোছা হচ্ছে...</translation>
 <translation id="1346748346194534595">ডানে</translation>
 <translation id="1351692861129622852"><ph name="FILE_COUNT" />টি ফাইল ইমপোর্ট করা হচ্ছে...</translation>
 <translation id="1358735829858566124">ফাইল বা ডিরেক্টরি ব্যবহারযোগ্য নয়৷</translation>
@@ -43,7 +42,6 @@
 <translation id="1430915738399379752">প্রিন্ট</translation>
 <translation id="1435838927755162558">Parallels Desktop-এর সাথে ফোল্ডার শেয়ার করুন</translation>
 <translation id="1439494416798956626"><ph name="FOLDER_NAME" /> এ সরানো হয়েছে।</translation>
-<translation id="1464724975715666883">১টি ত্রুটি৷</translation>
 <translation id="1467432559032391204">বামে</translation>
 <translation id="1471718551822868769">স্লোভাক</translation>
 <translation id="1474339897586437869">"<ph name="FILENAME" />" আপলোড করা হয়নি। আপনার Google ড্রাইভে পর্যাপ্ত ফাঁকা স্থান নেই।</translation>
@@ -226,11 +224,9 @@
 <translation id="3455931012307786678">এস্তোনিয়ান</translation>
 <translation id="3466147780910026086">আপনার মিডিয়া ডিভাইস স্ক্যান করা হচ্ছে...</translation>
 <translation id="3468522857997926824"><ph name="BEGIN_LINK" />Google ড্রাইভ<ph name="END_LINK" /> এ <ph name="FILE_COUNT" />টি ফটো ব্যাকআপ নেওয়া হয়েছে</translation>
-<translation id="3470502288861289375">অনুলিপি করা হচ্ছে...</translation>
 <translation id="3473378059788601120"><ph name="FOLDER_NAME" /> ফোল্ডারে কপি করা হয়েছে।</translation>
 <translation id="3475447146579922140">Google স্প্রেডশীট</translation>
 <translation id="3486821258960016770">মঙ্গোলিয়ান</translation>
-<translation id="3495304270784461826"><ph name="COUNT" />টি ত্রুটি৷</translation>
 <translation id="3522708245912499433">পর্তুগিজ</translation>
 <translation id="3524311639100184459">সতর্কতা: এই ফাইলগুলি অস্থায়ী এবং ডিস্কের জায়গা খালি করতে হয়ত অটোমেটিক মুছে ফেলা হবে।  <ph name="BEGIN_LINK" />আরও জানুন<ph name="END_LINK" /></translation>
 <translation id="3527085408025491307">ফোল্ডার</translation>
@@ -240,7 +236,6 @@
 <translation id="357479282490346887">লিথুয়ানিয়ান</translation>
 <translation id="3603385196401704894">কানাডীয় ফরাসি</translation>
 <translation id="3606220979431771195">তুর্কি-এফ</translation>
-<translation id="3609785682760573515">সিঙ্ক হচ্ছে...</translation>
 <translation id="3616113530831147358">অডিও</translation>
 <translation id="3619115746895587757">ক্যাপুচিনো</translation>
 <translation id="3620292326130836921">সব ব্যাকআপ নেওয়া হয়ে গেছে!</translation>
@@ -532,7 +527,6 @@
 <translation id="6657585470893396449">পাসওয়ার্ড</translation>
 <translation id="6673674183150363784">ফরাসি (ফ্রান্স) ভাষায় বেপো কীবোর্ড</translation>
 <translation id="6710213216561001401">আগের</translation>
-<translation id="6718273304615422081">জিপ করা হচ্ছে...</translation>
 <translation id="6751256176799620176">১টি ফোল্ডার নির্বাচন করা হয়েছে</translation>
 <translation id="6790428901817661496">চালু করুন</translation>
 <translation id="6795884519221689054">পান্ডা</translation>
@@ -732,7 +726,6 @@
 <translation id="8600173386174225982">থাম্বনেল ভিউতে ফাইলের তালিকা পরিবর্তিত হয়েছে।</translation>
 <translation id="8601932370724196034">Crostini ছবির ফাইল</translation>
 <translation id="8609695766746872526">আইসল্যান্ডিক</translation>
-<translation id="8669949407341943408">সরানো  হচ্ছে...</translation>
 <translation id="8698464937041809063">Google অঙ্কন</translation>
 <translation id="8712637175834984815">বুঝেছি</translation>
 <translation id="8713112442029511308">মল্টিজ</translation>
@@ -755,7 +748,6 @@
 <translation id="9034924485347205037">Linux ফাইল</translation>
 <translation id="9035012421917565900">আইটেমগুলিকে '<ph name="DESTINATION_NAME" />'-এ ফিরিয়ে নেওয়া যাবে না, তাই আপনি এই কাজটি আর আগের অবস্থায় ফেরাতে পারবেন না।</translation>
 <translation id="9038620279323455325">"<ph name="FILE_NAME" />" নামের ফাইল আগে থেকেই আছে। অন্য একটি নাম লিখুন।</translation>
-<translation id="9064939804718829769">হস্তান্তর হচ্ছে...</translation>
 <translation id="9065203028668620118">সম্পাদনা</translation>
 <translation id="908378762078012445">রাশিয়ান ভাষায় ফোনেটিক আটসিল (AATSEEL) কীবোর্ড</translation>
 <translation id="9099674669267916096">পৃষ্ঠার সংখ্যা</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_bs.xtb b/ui/chromeos/translations/ui_chromeos_strings_bs.xtb
index 74bb46f..5141897f 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_bs.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_bs.xtb
@@ -31,7 +31,6 @@
 <translation id="1293556467332435079">Fajlovi</translation>
 <translation id="1297922636971898492">Google Disk trenutno nije dostupan. Otpremanje će se automatski ponovo pokrenuti čim Google Disk bude opet na raspolaganju.</translation>
 <translation id="1307931752636661898">Nije moguće prikazati Linux fajlove</translation>
-<translation id="1338950911836659113">Brisanje...</translation>
 <translation id="1346748346194534595">Desno</translation>
 <translation id="1351692861129622852">Uvozi se sljedeći broj fajlova: <ph name="FILE_COUNT" />...</translation>
 <translation id="1358735829858566124">Fajl ili direktorij se ne može koristiti.</translation>
@@ -43,7 +42,6 @@
 <translation id="1430915738399379752">Štampaj</translation>
 <translation id="1435838927755162558">Dijeljenje foldera pomoću aplikacije Parallels Desktop</translation>
 <translation id="1439494416798956626">Premješteno je u folder <ph name="FOLDER_NAME" />.</translation>
-<translation id="1464724975715666883">1 greška.</translation>
 <translation id="1467432559032391204">Lijevo</translation>
 <translation id="1471718551822868769">slovački</translation>
 <translation id="1474339897586437869">Fajl "<ph name="FILENAME" />" nije otpremljen. Nemate dovoljno slobodnog prostora na Google Disku.</translation>
@@ -226,11 +224,9 @@
 <translation id="3455931012307786678">estonski</translation>
 <translation id="3466147780910026086">Skeniranje vašeg medijskog uređaja...</translation>
 <translation id="3468522857997926824">Napravljena je sigurnosna kopija fotografija (<ph name="FILE_COUNT" />) na <ph name="BEGIN_LINK" />Google Disku<ph name="END_LINK" /></translation>
-<translation id="3470502288861289375">Kopiranje...</translation>
 <translation id="3473378059788601120">Kopirano u folder <ph name="FOLDER_NAME" />.</translation>
 <translation id="3475447146579922140">Google tabela</translation>
 <translation id="3486821258960016770">mongolski</translation>
-<translation id="3495304270784461826">Broj grešaka: <ph name="COUNT" /></translation>
 <translation id="3522708245912499433">portugalski</translation>
 <translation id="3524311639100184459">Oprez: Ovi fajlovi su privremeni i moguće je da će se automatski izbrisati radi oslobađanja prostora na disku.  <ph name="BEGIN_LINK" />Saznajte više<ph name="END_LINK" /></translation>
 <translation id="3527085408025491307">Folder</translation>
@@ -240,7 +236,6 @@
 <translation id="357479282490346887">Litvanska</translation>
 <translation id="3603385196401704894">Kanadska francuska</translation>
 <translation id="3606220979431771195">Turska-f</translation>
-<translation id="3609785682760573515">Sinhroniziranje…</translation>
 <translation id="3616113530831147358">Zvuk</translation>
 <translation id="3619115746895587757">Kapućino</translation>
 <translation id="3620292326130836921">Napravljene su sigurnosne kopije za sve fajlove!</translation>
@@ -533,7 +528,6 @@
 <translation id="6657585470893396449">Lozinka</translation>
 <translation id="6673674183150363784">francuski (Francuska) s Bépo tastaturom</translation>
 <translation id="6710213216561001401">Nazad</translation>
-<translation id="6718273304615422081">Kreiranje zip fajla...</translation>
 <translation id="6751256176799620176">Odabran je 1 folder</translation>
 <translation id="6790428901817661496">Pokreni</translation>
 <translation id="6795884519221689054">Panda</translation>
@@ -733,7 +727,6 @@
 <translation id="8600173386174225982">Spisak fajlova je izmijenjen na prikaz sličica.</translation>
 <translation id="8601932370724196034">Crostini fajl slike</translation>
 <translation id="8609695766746872526">islandski</translation>
-<translation id="8669949407341943408">Premještanje...</translation>
 <translation id="8698464937041809063">Google crtež</translation>
 <translation id="8712637175834984815">Razumijem</translation>
 <translation id="8713112442029511308">malteški</translation>
@@ -756,7 +749,6 @@
 <translation id="9034924485347205037">Linux fajlovi</translation>
 <translation id="9035012421917565900">Stavke se ne mogu premjestiti nazad u "<ph name="DESTINATION_NAME" />", tako da nećete moći opozvati ovu radnju.</translation>
 <translation id="9038620279323455325">Fajl s nazivom "<ph name="FILE_NAME" />" već postoji. Odaberite drugi naziv fajla.</translation>
-<translation id="9064939804718829769">Prenošenje...</translation>
 <translation id="9065203028668620118">Uredi</translation>
 <translation id="908378762078012445">ruski s fonetskom tastaturom AATSEEL</translation>
 <translation id="9099674669267916096">Broj stranica</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_ca.xtb b/ui/chromeos/translations/ui_chromeos_strings_ca.xtb
index cf8b83d..a036a5c 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_ca.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_ca.xtb
@@ -31,7 +31,6 @@
 <translation id="1293556467332435079">Fitxers</translation>
 <translation id="1297922636971898492">En aquest moment Google Drive no està disponible. La pujada es reiniciarà automàticament quan Google Drive torni a estar actiu.</translation>
 <translation id="1307931752636661898">No es poden mostrar fitxers de Linux</translation>
-<translation id="1338950911836659113">S'està suprimint...</translation>
 <translation id="1346748346194534595">Dreta</translation>
 <translation id="1351692861129622852">S'estan important <ph name="FILE_COUNT" /> fitxers...</translation>
 <translation id="1358735829858566124">El fitxer o directori no es pot fer servir.</translation>
@@ -43,7 +42,6 @@
 <translation id="1430915738399379752">Imprimeix</translation>
 <translation id="1435838927755162558">Comparteix la carpeta amb Parallels Desktop</translation>
 <translation id="1439494416798956626">S'ha mogut a <ph name="FOLDER_NAME" />.</translation>
-<translation id="1464724975715666883">1 error.</translation>
 <translation id="1467432559032391204">Esquerra</translation>
 <translation id="1471718551822868769">Eslovac</translation>
 <translation id="1474339897586437869">"<ph name="FILENAME" />" no s'ha penjat. No hi ha prou espai lliure al vostre compte de Google Drive.</translation>
@@ -226,11 +224,9 @@
 <translation id="3455931012307786678">Estonià</translation>
 <translation id="3466147780910026086">S'està analitzant el dispositiu multimèdia...</translation>
 <translation id="3468522857997926824">S'ha creat una còpia de seguretat de <ph name="FILE_COUNT" /> fotos a <ph name="BEGIN_LINK" />Google Drive<ph name="END_LINK" /></translation>
-<translation id="3470502288861289375">S'està copiant...</translation>
 <translation id="3473378059788601120">S'ha copiat a <ph name="FOLDER_NAME" />.</translation>
 <translation id="3475447146579922140">Full de càlcul de Google</translation>
 <translation id="3486821258960016770">Mongol</translation>
-<translation id="3495304270784461826"><ph name="COUNT" /> errors.</translation>
 <translation id="3522708245912499433">Portuguès</translation>
 <translation id="3524311639100184459">Compte: aquests fitxers són temporals i és possible que se suprimeixin automàticament per alliberar espai de disc.  <ph name="BEGIN_LINK" />Més informació<ph name="END_LINK" /></translation>
 <translation id="3527085408025491307">Carpeta</translation>
@@ -240,7 +236,6 @@
 <translation id="357479282490346887">Lituà</translation>
 <translation id="3603385196401704894">Francès canadenc</translation>
 <translation id="3606220979431771195">Turc-F</translation>
-<translation id="3609785682760573515">S'està sincronitzant...</translation>
 <translation id="3616113530831147358">Àudio</translation>
 <translation id="3619115746895587757">Caputxino</translation>
 <translation id="3620292326130836921">Tots els elements tenen una còpia de seguretat.</translation>
@@ -533,7 +528,6 @@
 <translation id="6657585470893396449">Contrasenya</translation>
 <translation id="6673674183150363784">Francès (França) amb teclat BÉPO</translation>
 <translation id="6710213216561001401">Anterior</translation>
-<translation id="6718273304615422081">S'està comprimint...</translation>
 <translation id="6751256176799620176">1 carpeta seleccionada</translation>
 <translation id="6790428901817661496">Reprodueix</translation>
 <translation id="6795884519221689054">Panda</translation>
@@ -733,7 +727,6 @@
 <translation id="8600173386174225982">La llista de fitxers ha canviat a la visualització de miniatures.</translation>
 <translation id="8601932370724196034">Fitxer d'imatge de Crostini</translation>
 <translation id="8609695766746872526">Islandès</translation>
-<translation id="8669949407341943408">S'estan traslladant...</translation>
 <translation id="8698464937041809063">Dibuix de Google</translation>
 <translation id="8712637175834984815">Entesos</translation>
 <translation id="8713112442029511308">Maltès</translation>
@@ -756,7 +749,6 @@
 <translation id="9034924485347205037">Fitxers de Linux</translation>
 <translation id="9035012421917565900">Com que els elements no es poden retornar a <ph name="DESTINATION_NAME" />, aquesta acció no es pot desfer.</translation>
 <translation id="9038620279323455325">Ja hi ha un fitxer anomenat <ph name="FILE_NAME" />. Tria un altre nom.</translation>
-<translation id="9064939804718829769">S'està transferint...</translation>
 <translation id="9065203028668620118">Edita</translation>
 <translation id="908378762078012445">Rus amb teclat AATSEEL fonètic</translation>
 <translation id="9099674669267916096">Nombre de pàgines</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_cs.xtb b/ui/chromeos/translations/ui_chromeos_strings_cs.xtb
index 9402a6ef..eaec345 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_cs.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_cs.xtb
@@ -31,7 +31,6 @@
 <translation id="1293556467332435079">Soubory</translation>
 <translation id="1297922636971898492">Disk Google aktuálně není k dispozici. Jakmile bude Disk Google opět dostupný, nahrávání se automaticky obnoví.</translation>
 <translation id="1307931752636661898">Soubory systému Linux nelze zobrazit</translation>
-<translation id="1338950911836659113">Mazání...</translation>
 <translation id="1346748346194534595">Doprava</translation>
 <translation id="1351692861129622852">Importování <ph name="FILE_COUNT" /> souborů...</translation>
 <translation id="1358735829858566124">Soubor nebo adresář nelze použít.</translation>
@@ -43,7 +42,6 @@
 <translation id="1430915738399379752">Tisk</translation>
 <translation id="1435838927755162558">Sdílení složky s nástrojem Parallels Desktop</translation>
 <translation id="1439494416798956626">Přesunuto do složky <ph name="FOLDER_NAME" />.</translation>
-<translation id="1464724975715666883">1 chyba.</translation>
 <translation id="1467432559032391204">Doleva</translation>
 <translation id="1471718551822868769">slovenština</translation>
 <translation id="1474339897586437869">Soubor <ph name="FILENAME" /> nelze nahrát. Na Disku Google je nedostatek místa.</translation>
@@ -226,11 +224,9 @@
 <translation id="3455931012307786678">estonština</translation>
 <translation id="3466147780910026086">Prohledávání mediálního zařízení...</translation>
 <translation id="3468522857997926824">Počet fotek, které byly zálohovány na <ph name="BEGIN_LINK" />Disk Google<ph name="END_LINK" />: <ph name="FILE_COUNT" /></translation>
-<translation id="3470502288861289375">Kopírování...</translation>
 <translation id="3473378059788601120">Zkopírováno do složky <ph name="FOLDER_NAME" />.</translation>
 <translation id="3475447146579922140">Tabulka Google</translation>
 <translation id="3486821258960016770">mongolština</translation>
-<translation id="3495304270784461826">Chyby: <ph name="COUNT" />.</translation>
 <translation id="3522708245912499433">portugalština</translation>
 <translation id="3524311639100184459">Upozornění: Tyto soubory jsou dočasné a mohou být automaticky smazány kvůli uvolnění místa na disku.  <ph name="BEGIN_LINK" />Další informace<ph name="END_LINK" /></translation>
 <translation id="3527085408025491307">Složka</translation>
@@ -240,7 +236,6 @@
 <translation id="357479282490346887">litevština</translation>
 <translation id="3603385196401704894">Kanadská francouzská klávesnice</translation>
 <translation id="3606220979431771195">Turecká klávesnice – F</translation>
-<translation id="3609785682760573515">Synchronizace...</translation>
 <translation id="3616113530831147358">Zvuk</translation>
 <translation id="3619115746895587757">Kapučíno</translation>
 <translation id="3620292326130836921">Vše je zálohováno</translation>
@@ -532,7 +527,6 @@
 <translation id="6657585470893396449">Heslo</translation>
 <translation id="6673674183150363784">francouzština (Francie) s klávesnicí Bépo</translation>
 <translation id="6710213216561001401">Předchozí</translation>
-<translation id="6718273304615422081">Komprimování...</translation>
 <translation id="6751256176799620176">Je vybrána 1 složka</translation>
 <translation id="6790428901817661496">Přehrát</translation>
 <translation id="6795884519221689054">Panda</translation>
@@ -732,7 +726,6 @@
 <translation id="8600173386174225982">Seznam souborů se změnil na zobrazení miniatur.</translation>
 <translation id="8601932370724196034">Soubor obrazu Crostini</translation>
 <translation id="8609695766746872526">islandština</translation>
-<translation id="8669949407341943408">Přesouvání...</translation>
 <translation id="8698464937041809063">Nákres Google</translation>
 <translation id="8712637175834984815">Hotovo</translation>
 <translation id="8713112442029511308">maltština</translation>
@@ -755,7 +748,6 @@
 <translation id="9034924485347205037">Soubory systému Linux</translation>
 <translation id="9035012421917565900">Položky nelze přesunout zpět do týmu <ph name="DESTINATION_NAME" />. Tuto akci proto nebude možné vrátit zpět.</translation>
 <translation id="9038620279323455325">Soubor s názvem „<ph name="FILE_NAME" />“ již existuje. Zvolte jiný název.</translation>
-<translation id="9064939804718829769">Probíhá přenos...</translation>
 <translation id="9065203028668620118">Upravit</translation>
 <translation id="908378762078012445">ruština s fonetickou klávesnicí AATSEEL</translation>
 <translation id="9099674669267916096">Počet stránek</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_da.xtb b/ui/chromeos/translations/ui_chromeos_strings_da.xtb
index 980d6d4..3ceb8133 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_da.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_da.xtb
@@ -31,7 +31,6 @@
 <translation id="1293556467332435079">Filer</translation>
 <translation id="1297922636971898492">Google Drev er ikke tilgængeligt lige nu. Uploadet genstarter automatisk, når Google Drev er tilgængeligt igen.</translation>
 <translation id="1307931752636661898">Linux-filerne kan ikke vises</translation>
-<translation id="1338950911836659113">Sletter...</translation>
 <translation id="1346748346194534595">Højre</translation>
 <translation id="1351692861129622852">Importerer <ph name="FILE_COUNT" /> filer...</translation>
 <translation id="1358735829858566124">Filen eller mappen kan ikke bruges.</translation>
@@ -43,7 +42,6 @@
 <translation id="1430915738399379752">Udskriv</translation>
 <translation id="1435838927755162558">Del mappe med Parallels Desktop</translation>
 <translation id="1439494416798956626">Flyttet til <ph name="FOLDER_NAME" />.</translation>
-<translation id="1464724975715666883">1 fejl.</translation>
 <translation id="1467432559032391204">Venstre</translation>
 <translation id="1471718551822868769">Slovakisk</translation>
 <translation id="1474339897586437869">"<ph name="FILENAME" />" blev ikke uploadet. Der er ikke plads nok i Google Drev.</translation>
@@ -226,11 +224,9 @@
 <translation id="3455931012307786678">Estisk</translation>
 <translation id="3466147780910026086">Din medieenhed scannes...</translation>
 <translation id="3468522857997926824"><ph name="FILE_COUNT" /> billeder blev sikkerhedskopieret til <ph name="BEGIN_LINK" />Google Drev<ph name="END_LINK" /></translation>
-<translation id="3470502288861289375">Kopierer...</translation>
 <translation id="3473378059788601120">Kopieret til <ph name="FOLDER_NAME" />.</translation>
 <translation id="3475447146579922140">Google-regneark</translation>
 <translation id="3486821258960016770">Mongolsk</translation>
-<translation id="3495304270784461826"><ph name="COUNT" /> fejl.</translation>
 <translation id="3522708245912499433">Portugisisk</translation>
 <translation id="3524311639100184459">Advarsel! Disse filer er midlertidige og kan slettes automatisk for at frigøre diskplads.  <ph name="BEGIN_LINK" />Få flere oplysninger<ph name="END_LINK" /></translation>
 <translation id="3527085408025491307">Mappe</translation>
@@ -240,7 +236,6 @@
 <translation id="357479282490346887">Litauisk</translation>
 <translation id="3603385196401704894">Fransk (Canada)</translation>
 <translation id="3606220979431771195">Tyrkisk F</translation>
-<translation id="3609785682760573515">Synkroniserer…</translation>
 <translation id="3616113530831147358">Lyd</translation>
 <translation id="3619115746895587757">Cappuccino</translation>
 <translation id="3620292326130836921">Alt er sikkerhedskopieret.</translation>
@@ -533,7 +528,6 @@
 <translation id="6657585470893396449">Adgangskode</translation>
 <translation id="6673674183150363784">Fransk (Frankrig) Bépo-tastatur</translation>
 <translation id="6710213216561001401">Forrige</translation>
-<translation id="6718273304615422081">Komprimerer...</translation>
 <translation id="6751256176799620176">1 mappe er valgt</translation>
 <translation id="6790428901817661496">Afspil</translation>
 <translation id="6795884519221689054">Panda</translation>
@@ -733,7 +727,6 @@
 <translation id="8600173386174225982">Der blev skiftet til miniaturevisning for listen med filer.</translation>
 <translation id="8601932370724196034">Crostini-billedfil</translation>
 <translation id="8609695766746872526">Islandsk</translation>
-<translation id="8669949407341943408">Flytter…</translation>
 <translation id="8698464937041809063">Google-tegning</translation>
 <translation id="8712637175834984815">Forstået</translation>
 <translation id="8713112442029511308">Maltesisk</translation>
@@ -756,7 +749,6 @@
 <translation id="9034924485347205037">Linux-filer</translation>
 <translation id="9035012421917565900">Elementerne kan ikke flyttes tilbage til "<ph name="DESTINATION_NAME" />", så du kan ikke fortryde denne handling.</translation>
 <translation id="9038620279323455325">Der findes allerede en fil med navnet "<ph name="FILE_NAME" />". Vælg et andet navn.</translation>
-<translation id="9064939804718829769">Overfører...</translation>
 <translation id="9065203028668620118">Rediger</translation>
 <translation id="908378762078012445">Russisk med fonetisk AATSEEL-tastatur</translation>
 <translation id="9099674669267916096">Sideantal</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_de.xtb b/ui/chromeos/translations/ui_chromeos_strings_de.xtb
index 1484a1e..c299f99 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_de.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_de.xtb
@@ -31,7 +31,6 @@
 <translation id="1293556467332435079">Dateien</translation>
 <translation id="1297922636971898492">Google Drive ist momentan nicht verfügbar. Das Hochladen Ihrer Dateien wird automatisch fortgesetzt, sobald Google Drive wieder verfügbar ist.</translation>
 <translation id="1307931752636661898">Linux-Dateien können nicht angezeigt werden</translation>
-<translation id="1338950911836659113">Wird gelöscht...</translation>
 <translation id="1346748346194534595">Rechts</translation>
 <translation id="1351692861129622852"><ph name="FILE_COUNT" /> Dateien werden importiert...</translation>
 <translation id="1358735829858566124">Die Datei oder das Verzeichnis kann nicht verwendet werden.</translation>
@@ -43,7 +42,6 @@
 <translation id="1430915738399379752">Drucken</translation>
 <translation id="1435838927755162558">Ordner für Parallels Desktop freigeben</translation>
 <translation id="1439494416798956626">Verschoben nach <ph name="FOLDER_NAME" />.</translation>
-<translation id="1464724975715666883">1 Fehler</translation>
 <translation id="1467432559032391204">Links</translation>
 <translation id="1471718551822868769">Slowakisch</translation>
 <translation id="1474339897586437869">"<ph name="FILENAME" />" konnte nicht hochgeladen werden. In Ihrem Google Drive-Konto ist nicht genügend Speicherplatz frei.</translation>
@@ -225,11 +223,9 @@
 <translation id="3455931012307786678">Estnisch</translation>
 <translation id="3466147780910026086">Mediengerät wird durchsucht...</translation>
 <translation id="3468522857997926824"><ph name="FILE_COUNT" /> Fotos auf <ph name="BEGIN_LINK" />Google Drive<ph name="END_LINK" /> gesichert</translation>
-<translation id="3470502288861289375">Wird kopiert...</translation>
 <translation id="3473378059788601120">Kopiert nach <ph name="FOLDER_NAME" />.</translation>
 <translation id="3475447146579922140">Google-Tabellendokument</translation>
 <translation id="3486821258960016770">Mongolisch</translation>
-<translation id="3495304270784461826"><ph name="COUNT" /> Fehler</translation>
 <translation id="3522708245912499433">Portugiesisch</translation>
 <translation id="3524311639100184459">Vorsicht: Dies sind temporäre Dateien, die möglicherweise automatisch gelöscht werden, um Speicherplatz freizugeben.  <ph name="BEGIN_LINK" />Weitere Informationen<ph name="END_LINK" /></translation>
 <translation id="3527085408025491307">Ordner</translation>
@@ -239,7 +235,6 @@
 <translation id="357479282490346887">Litauisch</translation>
 <translation id="3603385196401704894">Kanadisches Französisch</translation>
 <translation id="3606220979431771195">Türkisch-F</translation>
-<translation id="3609785682760573515">Synchronisieren...</translation>
 <translation id="3616113530831147358">Audio</translation>
 <translation id="3619115746895587757">Cappuccino</translation>
 <translation id="3620292326130836921">Alle Daten gesichert</translation>
@@ -532,7 +527,6 @@
 <translation id="6657585470893396449">Passwort</translation>
 <translation id="6673674183150363784">Französisch (Frankreich) mit Bépo-Tastatur</translation>
 <translation id="6710213216561001401">Zurück</translation>
-<translation id="6718273304615422081">Wird gezippt...</translation>
 <translation id="6751256176799620176">1 Ordner ausgewählt</translation>
 <translation id="6790428901817661496">Wiedergabe</translation>
 <translation id="6795884519221689054">Panda</translation>
@@ -732,7 +726,6 @@
 <translation id="8600173386174225982">Die Dateiliste wird jetzt in der Miniaturansicht angezeigt.</translation>
 <translation id="8601932370724196034">Crostini-Bilddatei</translation>
 <translation id="8609695766746872526">Isländisch</translation>
-<translation id="8669949407341943408">Verschieben...</translation>
 <translation id="8698464937041809063">Google-Zeichnung</translation>
 <translation id="8712637175834984815">Alles klar</translation>
 <translation id="8713112442029511308">Maltesisch</translation>
@@ -755,7 +748,6 @@
 <translation id="9034924485347205037">Linux-Dateien</translation>
 <translation id="9035012421917565900">Diese Elemente können nicht in "<ph name="DESTINATION_NAME" />" zurückverschoben werden. Diese Aktion lässt sich also nicht rückgängig machen.</translation>
 <translation id="9038620279323455325">Die Datei mit dem Namen "<ph name="FILE_NAME" />" existiert bereits. Wählen Sie einen anderen Namen aus.</translation>
-<translation id="9064939804718829769">Übertragung wird durchgeführt...</translation>
 <translation id="9065203028668620118">Bearbeiten</translation>
 <translation id="908378762078012445">Russisch mit phonetischer Tastatur (AATSEEL)</translation>
 <translation id="9099674669267916096">Seitenzahl</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_el.xtb b/ui/chromeos/translations/ui_chromeos_strings_el.xtb
index 8609dc6..ef08501 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_el.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_el.xtb
@@ -32,7 +32,6 @@
 <translation id="1293556467332435079">Αρχεία</translation>
 <translation id="1297922636971898492">Το Google Drive δεν είναι διαθέσιμο αυτήν τη στιγμή. Η μεταφόρτωση θα ξεκινήσει ξανά, όταν το Google Drive είναι και πάλι διαθέσιμο.</translation>
 <translation id="1307931752636661898">Δεν είναι δυνατή η προβολή αρχείων Linux</translation>
-<translation id="1338950911836659113">Γίνεται διαγραφή…</translation>
 <translation id="1346748346194534595">Δεξιά</translation>
 <translation id="1351692861129622852">Εισαγωγή <ph name="FILE_COUNT" /> αρχείων…</translation>
 <translation id="1358735829858566124">Το αρχείο ή ο κατάλογος δεν μπορούν να χρησιμοποιηθούν.</translation>
@@ -44,7 +43,6 @@
 <translation id="1430915738399379752">Εκτύπωση</translation>
 <translation id="1435838927755162558">Κοινή χρήση φακέλου με το Parallels Desktop</translation>
 <translation id="1439494416798956626">Μετακινήθηκε στον φάκελο "<ph name="FOLDER_NAME" />".</translation>
-<translation id="1464724975715666883">1 σφάλμα.</translation>
 <translation id="1467432559032391204">Αριστερά</translation>
 <translation id="1471718551822868769">Σλοβακικά</translation>
 <translation id="1474339897586437869">Το αρχείο "<ph name="FILENAME" />" δεν ανέβηκε. Δεν υπάρχει επαρκής ελεύθερος χώρος στο Google Drive σας.</translation>
@@ -232,11 +230,9 @@
 <translation id="3455931012307786678">Εσθονικά</translation>
 <translation id="3466147780910026086">Σάρωση της συσκευής μέσων σας…</translation>
 <translation id="3468522857997926824">Δημιουργήθηκαν αντίγραφα ασφαλείας για <ph name="FILE_COUNT" /> φωτογραφίες στο <ph name="BEGIN_LINK" />Google Drive<ph name="END_LINK" /></translation>
-<translation id="3470502288861289375">Αντιγραφή…</translation>
 <translation id="3473378059788601120">Αντιγράφηκε στον φάκελο <ph name="FOLDER_NAME" />.</translation>
 <translation id="3475447146579922140">Υπολογιστικό φύλλο Google</translation>
 <translation id="3486821258960016770">Μογγολικά</translation>
-<translation id="3495304270784461826"><ph name="COUNT" /> σφάλματα.</translation>
 <translation id="3522708245912499433">Πορτογαλικά</translation>
 <translation id="3524311639100184459">Προσοχή: Αυτά τα αρχεία είναι προσωρινά και ενδέχεται να διαγραφούν αυτόματα για να απελευθερωθεί χώρος στη μονάδα δίσκου.  <ph name="BEGIN_LINK" />Μάθετε περισσότερα<ph name="END_LINK" /></translation>
 <translation id="3527085408025491307">Φάκελος</translation>
@@ -247,7 +243,6 @@
 </translation>
 <translation id="3603385196401704894">Γαλλικά Καναδά</translation>
 <translation id="3606220979431771195">Τουρκικά-F</translation>
-<translation id="3609785682760573515">Συγχρονισμός…</translation>
 <translation id="3616113530831147358">Ήχος</translation>
 <translation id="3619115746895587757">Καπουτσίνο</translation>
 <translation id="3620292326130836921">Δημιουργήθηκαν αντίγραφα ασφαλείας για όλα τα αρχεία!</translation>
@@ -546,7 +541,6 @@
 <translation id="6657585470893396449">Κωδικός πρόσβασης</translation>
 <translation id="6673674183150363784">Γαλλικά (Γαλλίας) με πληκτρολόγιο BÉPO</translation>
 <translation id="6710213216561001401">Προηγούμενο</translation>
-<translation id="6718273304615422081">Συμπίεση…</translation>
 <translation id="6751256176799620176">Επιλέχθηκε 1 φάκελος</translation>
 <translation id="6790428901817661496">Αναπαραγωγή</translation>
 <translation id="6795884519221689054">Πάντα</translation>
@@ -753,7 +747,6 @@
 <translation id="8600173386174225982">Η λίστα αρχείων έχει αλλάξει σε προβολή μικρογραφίας.</translation>
 <translation id="8601932370724196034">Αρχείο εικόνας Crostini</translation>
 <translation id="8609695766746872526">Ισλανδικά</translation>
-<translation id="8669949407341943408">Μετακίνηση…</translation>
 <translation id="8698464937041809063">Σχέδιο Google</translation>
 <translation id="8712637175834984815">Κατάλαβα!</translation>
 <translation id="8713112442029511308">Μαλτεζικά</translation>
@@ -779,7 +772,6 @@
 <translation id="9034924485347205037">Αρχεία Linux</translation>
 <translation id="9035012421917565900">Τα στοιχεία δεν είναι δυνατό να επιστρέψουν στο "<ph name="DESTINATION_NAME" />", επομένως δεν θα μπορείτε να αναιρέσετε αυτήν την ενέργεια.</translation>
 <translation id="9038620279323455325">Το αρχείο με το όνομα "<ph name="FILE_NAME" />" υπάρχει ήδη. Επιλέξτε ένα διαφορετικό όνομα.</translation>
-<translation id="9064939804718829769">Μεταφορά…</translation>
 <translation id="9065203028668620118">Επεξεργασία</translation>
 <translation id="908378762078012445">Ρωσικά με φωνητικό πληκτρολόγιο AATSEEL</translation>
 <translation id="9099674669267916096">Πλήθος σελίδων</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_en-GB.xtb b/ui/chromeos/translations/ui_chromeos_strings_en-GB.xtb
index 98b6ce0..d0835b3 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_en-GB.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_en-GB.xtb
@@ -31,7 +31,6 @@
 <translation id="1293556467332435079">Files</translation>
 <translation id="1297922636971898492">Google Drive is not available right now. Uploading will automatically restart once Google Drive is back.</translation>
 <translation id="1307931752636661898">Unable to view Linux files</translation>
-<translation id="1338950911836659113">Deleting...</translation>
 <translation id="1346748346194534595">Right</translation>
 <translation id="1351692861129622852">Importing <ph name="FILE_COUNT" /> files...</translation>
 <translation id="1358735829858566124">The file or the directory is not usable.</translation>
@@ -43,7 +42,6 @@
 <translation id="1430915738399379752">Print</translation>
 <translation id="1435838927755162558">Share folder with Parallels Desktop</translation>
 <translation id="1439494416798956626">Moved to <ph name="FOLDER_NAME" />.</translation>
-<translation id="1464724975715666883">1 error.</translation>
 <translation id="1467432559032391204">Left</translation>
 <translation id="1471718551822868769">Slovak</translation>
 <translation id="1474339897586437869">"<ph name="FILENAME" />" was not uploaded. There is not enough free space in your Google Drive.</translation>
@@ -227,11 +225,9 @@
 <translation id="3455931012307786678">Estonian</translation>
 <translation id="3466147780910026086">Scanning your media device...</translation>
 <translation id="3468522857997926824"><ph name="FILE_COUNT" /> photos backed up to <ph name="BEGIN_LINK" />Google Drive<ph name="END_LINK" /></translation>
-<translation id="3470502288861289375">Copying...</translation>
 <translation id="3473378059788601120">Copied to <ph name="FOLDER_NAME" />.</translation>
 <translation id="3475447146579922140">Google spreadsheet</translation>
 <translation id="3486821258960016770">Mongolian</translation>
-<translation id="3495304270784461826"><ph name="COUNT" /> errors.</translation>
 <translation id="3522708245912499433">Portuguese</translation>
 <translation id="3524311639100184459">Caution: These files are temporary and may be automatically deleted to free up disk space.  <ph name="BEGIN_LINK" />Learn more<ph name="END_LINK" /></translation>
 <translation id="3527085408025491307">Folder</translation>
@@ -241,7 +237,6 @@
 <translation id="357479282490346887">Lithuanian</translation>
 <translation id="3603385196401704894">Canadian French</translation>
 <translation id="3606220979431771195">Turkish-F</translation>
-<translation id="3609785682760573515">Syncing...</translation>
 <translation id="3616113530831147358">Audio</translation>
 <translation id="3619115746895587757">Cappuccino</translation>
 <translation id="3620292326130836921">All backed up!</translation>
@@ -536,7 +531,6 @@
 <translation id="6657585470893396449">Password</translation>
 <translation id="6673674183150363784">French (France) with Bépo keyboard</translation>
 <translation id="6710213216561001401">Previous</translation>
-<translation id="6718273304615422081">Zipping...</translation>
 <translation id="6751256176799620176">1 folder selected</translation>
 <translation id="6790428901817661496">Play</translation>
 <translation id="6795884519221689054">Panda</translation>
@@ -738,7 +732,6 @@
 <translation id="8600173386174225982">File list has changed to thumbnail view.</translation>
 <translation id="8601932370724196034">Crostini image file</translation>
 <translation id="8609695766746872526">Icelandic</translation>
-<translation id="8669949407341943408">Moving...</translation>
 <translation id="8698464937041809063">Google drawing</translation>
 <translation id="8712637175834984815">Got it</translation>
 <translation id="8713112442029511308">Maltese</translation>
@@ -761,7 +754,6 @@
 <translation id="9034924485347205037">Linux files</translation>
 <translation id="9035012421917565900">The items cannot be moved back into '<ph name="DESTINATION_NAME" />', so you won't be able to undo this action.</translation>
 <translation id="9038620279323455325">The file named '<ph name="FILE_NAME" />' already exists. Please choose a different name.</translation>
-<translation id="9064939804718829769">Transferring...</translation>
 <translation id="9065203028668620118">Edit</translation>
 <translation id="908378762078012445">Russian with phonetic AATSEEL keyboard</translation>
 <translation id="9099674669267916096">Page count</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_es-419.xtb b/ui/chromeos/translations/ui_chromeos_strings_es-419.xtb
index 5f74fda..de7735b 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_es-419.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_es-419.xtb
@@ -31,7 +31,6 @@
 <translation id="1293556467332435079">Archivos</translation>
 <translation id="1297922636971898492">Actualmente, Google Drive no está disponible. La carga se reiniciará automáticamente cuando vuelva a estar disponible.</translation>
 <translation id="1307931752636661898">No se pueden ver los archivos de Linux</translation>
-<translation id="1338950911836659113">Eliminando…</translation>
 <translation id="1346748346194534595">Derecha</translation>
 <translation id="1351692861129622852">Importando <ph name="FILE_COUNT" /> archivos…</translation>
 <translation id="1358735829858566124">No se puede utilizar el archivo o el directorio.</translation>
@@ -43,7 +42,6 @@
 <translation id="1430915738399379752">Imprimir</translation>
 <translation id="1435838927755162558">Compartir carpeta con Parallels Desktop</translation>
 <translation id="1439494416798956626">Se transfirió a <ph name="FOLDER_NAME" />.</translation>
-<translation id="1464724975715666883">1 error</translation>
 <translation id="1467432559032391204">Izquierda</translation>
 <translation id="1471718551822868769">Eslovaco</translation>
 <translation id="1474339897586437869">No se cargó "<ph name="FILENAME" />". No hay suficiente espacio libre en Google Drive.</translation>
@@ -225,11 +223,9 @@
 <translation id="3455931012307786678">Estonio</translation>
 <translation id="3466147780910026086">Analizando el dispositivo de medios…</translation>
 <translation id="3468522857997926824">Se guardaron <ph name="FILE_COUNT" /> fotos en una copia de seguridad en <ph name="BEGIN_LINK" />Google Drive<ph name="END_LINK" />.</translation>
-<translation id="3470502288861289375">Copiando…</translation>
 <translation id="3473378059788601120">Copiado(s) en <ph name="FOLDER_NAME" />.</translation>
 <translation id="3475447146579922140">Hoja de cálculo de Google</translation>
 <translation id="3486821258960016770">Mongol</translation>
-<translation id="3495304270784461826"><ph name="COUNT" /> errores</translation>
 <translation id="3522708245912499433">Portugués</translation>
 <translation id="3524311639100184459">Precaución: Estos archivos son temporales y es posible que se borren automáticamente para liberar espacio en el disco.  <ph name="BEGIN_LINK" />Más información<ph name="END_LINK" /></translation>
 <translation id="3527085408025491307">Carpeta</translation>
@@ -239,7 +235,6 @@
 <translation id="357479282490346887">Lituano</translation>
 <translation id="3603385196401704894">Francés (Canadá)</translation>
 <translation id="3606220979431771195">Turco-F</translation>
-<translation id="3609785682760573515">Sincronizando…</translation>
 <translation id="3616113530831147358">Audio</translation>
 <translation id="3619115746895587757">Capuchino</translation>
 <translation id="3620292326130836921">Todos los archivos están guardados en una copia de seguridad.</translation>
@@ -532,7 +527,6 @@
 <translation id="6657585470893396449">Contraseña</translation>
 <translation id="6673674183150363784">Francés (Francia) con teclado bépo</translation>
 <translation id="6710213216561001401">Anterior</translation>
-<translation id="6718273304615422081">Comprimiendo…</translation>
 <translation id="6751256176799620176">1 carpeta seleccionada</translation>
 <translation id="6790428901817661496">Reproducir</translation>
 <translation id="6795884519221689054">Panda</translation>
@@ -732,7 +726,6 @@
 <translation id="8600173386174225982">La lista de archivos cambió a la vista de miniaturas.</translation>
 <translation id="8601932370724196034">Archivo de imagen de Crostini</translation>
 <translation id="8609695766746872526">Islandés</translation>
-<translation id="8669949407341943408">Moviendo…</translation>
 <translation id="8698464937041809063">Dibujo de Google</translation>
 <translation id="8712637175834984815">Entendido</translation>
 <translation id="8713112442029511308">Maltés</translation>
@@ -755,7 +748,6 @@
 <translation id="9034924485347205037">Archivos de Linux</translation>
 <translation id="9035012421917565900">Los elementos no se pueden volver a colocar en "<ph name="DESTINATION_NAME" />", por lo que no podrás deshacer esta acción.</translation>
 <translation id="9038620279323455325">Ya existe un archivo con el nombre "<ph name="FILE_NAME" />". Elige otro.</translation>
-<translation id="9064939804718829769">Transfiriendo…</translation>
 <translation id="9065203028668620118">Editar</translation>
 <translation id="908378762078012445">Ruso con teclado fonético AATSEEL</translation>
 <translation id="9099674669267916096">Cantidad de páginas</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_es.xtb b/ui/chromeos/translations/ui_chromeos_strings_es.xtb
index 1a3d3a0..585be62 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_es.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_es.xtb
@@ -31,7 +31,6 @@
 <translation id="1293556467332435079">Archivos</translation>
 <translation id="1297922636971898492">Google Drive no está disponible en estos momentos. La subida se reiniciará automáticamente cuando vuelva a estar disponible.</translation>
 <translation id="1307931752636661898">No se pueden ver archivos de Linux</translation>
-<translation id="1338950911836659113">Eliminando...</translation>
 <translation id="1346748346194534595">Derecha</translation>
 <translation id="1351692861129622852">Importando <ph name="FILE_COUNT" /> archivos...</translation>
 <translation id="1358735829858566124">No se puede utilizar el archivo o el directorio.</translation>
@@ -43,7 +42,6 @@
 <translation id="1430915738399379752">Imprimir</translation>
 <translation id="1435838927755162558">Compartir carpeta con Parallels Desktop</translation>
 <translation id="1439494416798956626">Movido a <ph name="FOLDER_NAME" />.</translation>
-<translation id="1464724975715666883">1 error.</translation>
 <translation id="1467432559032391204">Izquierda</translation>
 <translation id="1471718551822868769">Eslovaco</translation>
 <translation id="1474339897586437869">No se ha subido <ph name="FILENAME" />. No hay suficiente espacio libre en tu cuenta de Google Drive.</translation>
@@ -225,11 +223,9 @@
 <translation id="3455931012307786678">Estonio</translation>
 <translation id="3466147780910026086">Escaneando dispositivo multimedia...</translation>
 <translation id="3468522857997926824">Se ha realizado la copia de seguridad de <ph name="FILE_COUNT" /> fotos en <ph name="BEGIN_LINK" />Google Drive<ph name="END_LINK" /></translation>
-<translation id="3470502288861289375">Copiando...</translation>
 <translation id="3473378059788601120">Copiado en <ph name="FOLDER_NAME" />.</translation>
 <translation id="3475447146579922140">Hoja de cálculo de Google</translation>
 <translation id="3486821258960016770">Mongol</translation>
-<translation id="3495304270784461826"><ph name="COUNT" /> errores.</translation>
 <translation id="3522708245912499433">Portugués</translation>
 <translation id="3524311639100184459">Aviso: Estos archivos son temporales y es posible que se eliminen automáticamente para liberar espacio en el disco.  <ph name="BEGIN_LINK" />Más información<ph name="END_LINK" /></translation>
 <translation id="3527085408025491307">Carpeta</translation>
@@ -239,7 +235,6 @@
 <translation id="357479282490346887">Lituano</translation>
 <translation id="3603385196401704894">Francés canadiense</translation>
 <translation id="3606220979431771195">Turco-F</translation>
-<translation id="3609785682760573515">Sincronizando...</translation>
 <translation id="3616113530831147358">Audio</translation>
 <translation id="3619115746895587757">Capuchino</translation>
 <translation id="3620292326130836921">Se ha realizado la copia de seguridad de todos los archivos</translation>
@@ -532,7 +527,6 @@
 <translation id="6657585470893396449">Contraseña</translation>
 <translation id="6673674183150363784">Francés (Francia) con teclado Bépo</translation>
 <translation id="6710213216561001401">Anterior</translation>
-<translation id="6718273304615422081">Comprimiendo...</translation>
 <translation id="6751256176799620176">1 carpeta seleccionada</translation>
 <translation id="6790428901817661496">Reproducir</translation>
 <translation id="6795884519221689054">Panda</translation>
@@ -732,7 +726,6 @@
 <translation id="8600173386174225982">La lista de archivos ha cambiado a la vista de miniaturas.</translation>
 <translation id="8601932370724196034">Archivo de imagen de Crostini</translation>
 <translation id="8609695766746872526">Islandés</translation>
-<translation id="8669949407341943408">Moviendo...</translation>
 <translation id="8698464937041809063">Dibujo de Google</translation>
 <translation id="8712637175834984815">Listo</translation>
 <translation id="8713112442029511308">Maltés</translation>
@@ -755,7 +748,6 @@
 <translation id="9034924485347205037">Archivos de Linux</translation>
 <translation id="9035012421917565900">Estos elementos no se pueden volver a mover a "<ph name="DESTINATION_NAME" />", por lo que no podrás deshacer esta acción.</translation>
 <translation id="9038620279323455325">Ya existe el archivo "<ph name="FILE_NAME" />". Elige otro nombre.</translation>
-<translation id="9064939804718829769">Transfiriendo...</translation>
 <translation id="9065203028668620118">Editar</translation>
 <translation id="908378762078012445">Ruso con teclado fonético AATSEEL</translation>
 <translation id="9099674669267916096">Número de páginas</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_et.xtb b/ui/chromeos/translations/ui_chromeos_strings_et.xtb
index 5e0a17a..d09367aa 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_et.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_et.xtb
@@ -31,7 +31,6 @@
 <translation id="1293556467332435079">Failid</translation>
 <translation id="1297922636971898492">Google Drive pole praegu saadaval. Kui Google Drive on tagasi, algab üleslaadimine automaatselt uuesti.</translation>
 <translation id="1307931752636661898">Linuxi faile ei saa vaadata</translation>
-<translation id="1338950911836659113">Kustutamine ...</translation>
 <translation id="1346748346194534595">Paremale</translation>
 <translation id="1351692861129622852"><ph name="FILE_COUNT" /> faili importimine ...</translation>
 <translation id="1358735829858566124">Fail või kataloog ei ole kasutatav.</translation>
@@ -43,7 +42,6 @@
 <translation id="1430915738399379752">Printimine</translation>
 <translation id="1435838927755162558">Kausta jagamine üksusega Parallels Desktop</translation>
 <translation id="1439494416798956626">Teisaldati kausta <ph name="FOLDER_NAME" />.</translation>
-<translation id="1464724975715666883">1 viga.</translation>
 <translation id="1467432559032391204">Vasakule</translation>
 <translation id="1471718551822868769">slovaki</translation>
 <translation id="1474339897586437869">Faili „<ph name="FILENAME" />” ei laaditud üles. Teie Google Drive’is ei ole piisavalt vaba ruumi.</translation>
@@ -226,11 +224,9 @@
 <translation id="3455931012307786678">eesti</translation>
 <translation id="3466147780910026086">Meediaseadme skannimine ...</translation>
 <translation id="3468522857997926824"><ph name="FILE_COUNT" /> fotot on varundatud teenuses <ph name="BEGIN_LINK" />Google Drive<ph name="END_LINK" /></translation>
-<translation id="3470502288861289375">Kopeerimine ...</translation>
 <translation id="3473378059788601120">Kopeeritud kausta <ph name="FOLDER_NAME" />.</translation>
 <translation id="3475447146579922140">Google'i arvutustabel</translation>
 <translation id="3486821258960016770">mongoli</translation>
-<translation id="3495304270784461826"><ph name="COUNT" /> viga.</translation>
 <translation id="3522708245912499433">Portugali keel</translation>
 <translation id="3524311639100184459">Hoiatus. Need on ajutised failid ja võidakse kettaruumi vabastamiseks automaatselt kustutada.  <ph name="BEGIN_LINK" />Lisateave<ph name="END_LINK" /></translation>
 <translation id="3527085408025491307">Kaust</translation>
@@ -240,7 +236,6 @@
 <translation id="357479282490346887">leedu keel</translation>
 <translation id="3603385196401704894">Kanada prantsuse</translation>
 <translation id="3606220979431771195">Türgi F</translation>
-<translation id="3609785682760573515">Sünkroonimine ...</translation>
 <translation id="3616113530831147358">Heli</translation>
 <translation id="3619115746895587757">Cappuccino</translation>
 <translation id="3620292326130836921">Kõik on varundatud.</translation>
@@ -533,7 +528,6 @@
 <translation id="6657585470893396449">Parool</translation>
 <translation id="6673674183150363784">prantsuse (Prantsusmaa), BÉPO-klaviatuuriga</translation>
 <translation id="6710213216561001401">Eelmine</translation>
-<translation id="6718273304615422081">Pakkimine ...</translation>
 <translation id="6751256176799620176">Valitud on üks kaust</translation>
 <translation id="6790428901817661496">Esita</translation>
 <translation id="6795884519221689054">Panda</translation>
@@ -733,7 +727,6 @@
 <translation id="8600173386174225982">Faililoendi jaoks aktiveeriti pisipildikuva.</translation>
 <translation id="8601932370724196034">Crostini pildifail</translation>
 <translation id="8609695766746872526">islandi</translation>
-<translation id="8669949407341943408">Teisaldamine ...</translation>
 <translation id="8698464937041809063">Google joonistus</translation>
 <translation id="8712637175834984815">Selge</translation>
 <translation id="8713112442029511308">malta</translation>
@@ -756,7 +749,6 @@
 <translation id="9034924485347205037">Linuxi failid</translation>
 <translation id="9035012421917565900">Üksusi ei saa sihtkohta „<ph name="DESTINATION_NAME" />” tagasi teisaldada, seega ei saa te seda toimingut tagasi võtta.</translation>
 <translation id="9038620279323455325">Fail nimega „<ph name="FILE_NAME" />” on juba olemas? Valige muu nimi.</translation>
-<translation id="9064939804718829769">Üleandmine ...</translation>
 <translation id="9065203028668620118">Muuda</translation>
 <translation id="908378762078012445">vene, foneetilise AATSEEL-klaviatuuriga</translation>
 <translation id="9099674669267916096">Lehtede arv</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_eu.xtb b/ui/chromeos/translations/ui_chromeos_strings_eu.xtb
index d69053e..7e96977 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_eu.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_eu.xtb
@@ -31,7 +31,6 @@
 <translation id="1293556467332435079">Fitxategiak</translation>
 <translation id="1297922636971898492">Une honetan, Google Drive ez dago erabilgarri. Erabilgarri dagoenean, automatikoki hasiko da berriro kargatzen.</translation>
 <translation id="1307931752636661898">Ezin dira ikusi Linux fitxategiak</translation>
-<translation id="1338950911836659113">Ezabatzen…</translation>
 <translation id="1346748346194534595">Eskuinera</translation>
 <translation id="1351692861129622852"><ph name="FILE_COUNT" /> fitxategi inportatzen…</translation>
 <translation id="1358735829858566124">Ezin da fitxategia edo direktorioa erabili.</translation>
@@ -43,7 +42,6 @@
 <translation id="1430915738399379752">Inprimatu</translation>
 <translation id="1435838927755162558">Partekatu karpeta Parallels Desktop aplikazioarekin</translation>
 <translation id="1439494416798956626">Eraman da <ph name="FOLDER_NAME" /> karpetara.</translation>
-<translation id="1464724975715666883">1 errore.</translation>
 <translation id="1467432559032391204">Ezkerrera</translation>
 <translation id="1471718551822868769">Eslovakiarra</translation>
 <translation id="1474339897586437869">Ez da kargatu "<ph name="FILENAME" />". Ez dago leku nahikorik Google Drive-n.</translation>
@@ -226,11 +224,9 @@
 <translation id="3455931012307786678">Estoniarra</translation>
 <translation id="3466147780910026086">Multimedia-gailuan bilatzen…</translation>
 <translation id="3468522857997926824"><ph name="FILE_COUNT" /> argazkiren babeskopia egin da <ph name="BEGIN_LINK" />Google Drive-n<ph name="END_LINK" /></translation>
-<translation id="3470502288861289375">Kopiatzen…</translation>
 <translation id="3473378059788601120">Kopiatu da <ph name="FOLDER_NAME" /> karpetan.</translation>
 <translation id="3475447146579922140">Google kalkulu-orria</translation>
 <translation id="3486821258960016770">Mongoliarra</translation>
-<translation id="3495304270784461826"><ph name="COUNT" /> errore.</translation>
 <translation id="3522708245912499433">Portugaldarra</translation>
 <translation id="3524311639100184459">Kontuz: fitxategi hauek aldi baterakoak dira eta agian automatikoki ezabatuko dira diskoan tokia egiteko.  <ph name="BEGIN_LINK" />Lortu informazio gehiago<ph name="END_LINK" /></translation>
 <translation id="3527085408025491307">Karpeta</translation>
@@ -240,7 +236,6 @@
 <translation id="357479282490346887">Lituaniarra</translation>
 <translation id="3603385196401704894">Frantsesa (Kanada)</translation>
 <translation id="3606220979431771195">Turkierako F teklatua</translation>
-<translation id="3609785682760573515">Sinkronizatzen…</translation>
 <translation id="3616113530831147358">Audioa</translation>
 <translation id="3619115746895587757">Kaputxinoa</translation>
 <translation id="3620292326130836921">Fitxategi guztien babeskopia egin da!</translation>
@@ -532,7 +527,6 @@
 <translation id="6657585470893396449">Pasahitza</translation>
 <translation id="6673674183150363784">Frantsesa (Frantzia), Bépo teklatuarekin</translation>
 <translation id="6710213216561001401">Aurrekoa</translation>
-<translation id="6718273304615422081">Konprimatzen…</translation>
 <translation id="6751256176799620176">Karpeta bat hautatu da</translation>
 <translation id="6790428901817661496">Erreproduzitu</translation>
 <translation id="6795884519221689054">Panda</translation>
@@ -732,7 +726,6 @@
 <translation id="8600173386174225982">Irudi txikiko ikuspegira aldatu da fitxategi-zerrenda.</translation>
 <translation id="8601932370724196034">Crostini motako irudi-fitxategia</translation>
 <translation id="8609695766746872526">Islandiarra</translation>
-<translation id="8669949407341943408">Mugitzen…</translation>
 <translation id="8698464937041809063">Google-ko marrazkia</translation>
 <translation id="8712637175834984815">Ados</translation>
 <translation id="8713112442029511308">Maltarra</translation>
@@ -755,7 +748,6 @@
 <translation id="9034924485347205037">Linux fitxategiak</translation>
 <translation id="9035012421917565900">Ezin dira eraman berriro elementuak "<ph name="DESTINATION_NAME" />" unitatera; beraz, ezin izango duzu desegin ekintza.</translation>
 <translation id="9038620279323455325">"<ph name="FILE_NAME" />" izena duen fitxategia bazegoen lehendik ere. Aukeratu beste izen bat.</translation>
-<translation id="9064939804718829769">Transferitzen…</translation>
 <translation id="9065203028668620118">Editatu</translation>
 <translation id="908378762078012445">Errusiarra, AATSEEL teklatu fonetikoarekin</translation>
 <translation id="9099674669267916096">Orri kopurua</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_fa.xtb b/ui/chromeos/translations/ui_chromeos_strings_fa.xtb
index 82ce4bd..364f4b4 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_fa.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_fa.xtb
@@ -31,7 +31,6 @@
 <translation id="1293556467332435079">Files</translation>
 <translation id="1297922636971898492">‏Google Drive در حال حاضر در دسترس نیست. به محض در دسترس قرار گرفتن Google Drive بارگذاری کردن به صورت خودکار دوباره شروع می‌شود.</translation>
 <translation id="1307931752636661898">‏نمی‌توان فایل‌های Linux را مشاهده کرد</translation>
-<translation id="1338950911836659113">در حال حذف...</translation>
 <translation id="1346748346194534595">راست</translation>
 <translation id="1351692861129622852">وارد کردن <ph name="FILE_COUNT" /> فایل...</translation>
 <translation id="1358735829858566124">فایل یا فهرست راهنما قابل استفاده نیست.</translation>
@@ -43,7 +42,6 @@
 <translation id="1430915738399379752">چاپ</translation>
 <translation id="1435838927755162558">‏هم‌رسانی پوشه با Parallels Desktop</translation>
 <translation id="1439494416798956626">به <ph name="FOLDER_NAME" /> منتقل شد.</translation>
-<translation id="1464724975715666883">۱ خطا.</translation>
 <translation id="1467432559032391204">چپ</translation>
 <translation id="1471718551822868769">اسلوواکی</translation>
 <translation id="1474339897586437869">‏«<ph name="FILENAME" />» بارگذاری نشد. فضای کافی در Google Drive شما وجود ندارد.</translation>
@@ -226,11 +224,9 @@
 <translation id="3455931012307786678">استونیایی</translation>
 <translation id="3466147780910026086">در حال اسکن دستگاه رسانه شما...</translation>
 <translation id="3468522857997926824">‏<ph name="FILE_COUNT" /> عکس در <ph name="BEGIN_LINK" />Google Drive<ph name="END_LINK" /> پشتیبان گرفته شدند</translation>
-<translation id="3470502288861289375">در حال کپی کردن...</translation>
 <translation id="3473378059788601120">در <ph name="FOLDER_NAME" /> کپی شد.</translation>
 <translation id="3475447146579922140">‏صفحه‌گسترده Google</translation>
 <translation id="3486821258960016770">مغولی</translation>
-<translation id="3495304270784461826"><ph name="COUNT" /> خطا.</translation>
 <translation id="3522708245912499433">پرتغالی</translation>
 <translation id="3524311639100184459">احتیاط: این فایل‌ها موقتی هستند و ممکن است برای آزادسازی فضای دیسک به‌طور خودکار حذف شوند.  <ph name="BEGIN_LINK" />بیشتر بدانید<ph name="END_LINK" /></translation>
 <translation id="3527085408025491307">پوشه</translation>
@@ -240,7 +236,6 @@
 <translation id="357479282490346887">لیتوانیایی</translation>
 <translation id="3603385196401704894">فرانسوی کانادا</translation>
 <translation id="3606220979431771195">‏ترکی F</translation>
-<translation id="3609785682760573515">در حال همگام‌سازی...</translation>
 <translation id="3616113530831147358">صوتی</translation>
 <translation id="3619115746895587757">کاپوچینو</translation>
 <translation id="3620292326130836921">همه پشتیبان‌گیری شدند.</translation>
@@ -533,7 +528,6 @@
 <translation id="6657585470893396449">گذرواژه</translation>
 <translation id="6673674183150363784">‏فرانسوی (فرانسه) با صفحه‌کلید Bépo</translation>
 <translation id="6710213216561001401">قبلی</translation>
-<translation id="6718273304615422081">در حال فشرده سازی ...</translation>
 <translation id="6751256176799620176">۱ پوشه انتخاب شد</translation>
 <translation id="6790428901817661496">پخش</translation>
 <translation id="6795884519221689054">پاندا</translation>
@@ -733,7 +727,6 @@
 <translation id="8600173386174225982">فهرست فایل به نمای تصویر کوچک تغییر کرده است.</translation>
 <translation id="8601932370724196034">‏فایل تصویری Crostini</translation>
 <translation id="8609695766746872526">ایسلندی</translation>
-<translation id="8669949407341943408">در حال انتقال...</translation>
 <translation id="8698464937041809063">‏طراحی Google </translation>
 <translation id="8712637175834984815">متوجه شدم</translation>
 <translation id="8713112442029511308">مالتی</translation>
@@ -756,7 +749,6 @@
 <translation id="9034924485347205037">‏فایل‌های Linux</translation>
 <translation id="9035012421917565900">این موارد نمی‌توانند به «<ph name="DESTINATION_NAME" />» برگردانده شوند، بنابراین نمی‌توانید این اقدام را واگرد کنید.</translation>
 <translation id="9038620279323455325">فایلی با نام «<ph name="FILE_NAME" />» ازقبل وجود دارد. لطفاً نام دیگری انتخاب کنید.</translation>
-<translation id="9064939804718829769">در حال انتقال...</translation>
 <translation id="9065203028668620118">ویرایش</translation>
 <translation id="908378762078012445">‏روسی با صفحه‌کلید آوایی AATSEEL</translation>
 <translation id="9099674669267916096">تعداد صفحه</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_fi.xtb b/ui/chromeos/translations/ui_chromeos_strings_fi.xtb
index 6902c23..b82603e 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_fi.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_fi.xtb
@@ -31,7 +31,6 @@
 <translation id="1293556467332435079">Tiedostot</translation>
 <translation id="1297922636971898492">Google Drive ei ole juuri nyt käytettävissä. Lähetys käynnistyy automaattisesti, kun Google Drive on taas käytettävissä.</translation>
 <translation id="1307931752636661898">Linux-tiedostoja ei voi näyttää</translation>
-<translation id="1338950911836659113">Poistetaan…</translation>
 <translation id="1346748346194534595">Oikealla</translation>
 <translation id="1351692861129622852">Tuodaan <ph name="FILE_COUNT" /> tiedostoa…</translation>
 <translation id="1358735829858566124">Tiedosto tai hakemisto ei ole käytettävissä.</translation>
@@ -43,7 +42,6 @@
 <translation id="1430915738399379752">Tulosta</translation>
 <translation id="1435838927755162558">Jaa kansio Parallels Desktopille</translation>
 <translation id="1439494416798956626">Siirretty kansioon <ph name="FOLDER_NAME" /></translation>
-<translation id="1464724975715666883">1 virhe.</translation>
 <translation id="1467432559032391204">Vasemmalla</translation>
 <translation id="1471718551822868769">slovakki</translation>
 <translation id="1474339897586437869">Tiedostoa <ph name="FILENAME" /> ei lähetetty. Google Drivessasi ei ole riittävästi vapaata tallennustilaa.</translation>
@@ -226,11 +224,9 @@
 <translation id="3455931012307786678">viro</translation>
 <translation id="3466147780910026086">Tarkistetaan medialaitettasi…</translation>
 <translation id="3468522857997926824"><ph name="FILE_COUNT" /> kuvaa on varmuuskopioitu <ph name="BEGIN_LINK" />Google Driveen<ph name="END_LINK" />.</translation>
-<translation id="3470502288861289375">Kopioidaan…</translation>
 <translation id="3473378059788601120">Kopioitu kansioon <ph name="FOLDER_NAME" /></translation>
 <translation id="3475447146579922140">Google-laskentataulukko</translation>
 <translation id="3486821258960016770">mongoli</translation>
-<translation id="3495304270784461826"><ph name="COUNT" /> virhettä.</translation>
 <translation id="3522708245912499433">portugali</translation>
 <translation id="3524311639100184459">Varoitus: Nämä tiedostot ovat tilapäisiä ja ne voidaan poistaa automaattisesti levytilan vapauttamiseksi.  <ph name="BEGIN_LINK" />Lue lisää<ph name="END_LINK" /></translation>
 <translation id="3527085408025491307">Kansio</translation>
@@ -240,7 +236,6 @@
 <translation id="357479282490346887">liettua</translation>
 <translation id="3603385196401704894">ranska (Kanada)</translation>
 <translation id="3606220979431771195">Turkki (tyyppi F)</translation>
-<translation id="3609785682760573515">Synkronoidaan…</translation>
 <translation id="3616113530831147358">Ääni</translation>
 <translation id="3619115746895587757">Cappuccino</translation>
 <translation id="3620292326130836921">Kaikki on varmuuskopioitu!</translation>
@@ -533,7 +528,6 @@
 <translation id="6657585470893396449">Salasana</translation>
 <translation id="6673674183150363784">ranska (Ranska), Bépo-näppäimistö</translation>
 <translation id="6710213216561001401">Edellinen</translation>
-<translation id="6718273304615422081">Pakataan…</translation>
 <translation id="6751256176799620176">1 kansio valittu</translation>
 <translation id="6790428901817661496">Toista</translation>
 <translation id="6795884519221689054">Panda</translation>
@@ -733,7 +727,6 @@
 <translation id="8600173386174225982">Tiedostot näkyvät nyt pikkukuvina.</translation>
 <translation id="8601932370724196034">Crostini-kuvatiedosto</translation>
 <translation id="8609695766746872526">islanti</translation>
-<translation id="8669949407341943408">Siirretään…</translation>
 <translation id="8698464937041809063">Google-piirros</translation>
 <translation id="8712637175834984815">Ymmärretty</translation>
 <translation id="8713112442029511308">malta</translation>
@@ -756,7 +749,6 @@
 <translation id="9034924485347205037">Linux-tiedostot</translation>
 <translation id="9035012421917565900">Kohteita ei voi siirtää takaisin paikkaan <ph name="DESTINATION_NAME" />, joten tätä toimintoa ei voi kumota.</translation>
 <translation id="9038620279323455325">Tiedosto nimeltä <ph name="FILE_NAME" /> on jo olemassa. Valitse toinen nimi.</translation>
-<translation id="9064939804718829769">Siirretään…</translation>
 <translation id="9065203028668620118">Muokkaa</translation>
 <translation id="908378762078012445">venäjä, foneettinen AATSEEL-näppäimistö</translation>
 <translation id="9099674669267916096">Sivumäärä</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_fil.xtb b/ui/chromeos/translations/ui_chromeos_strings_fil.xtb
index 0dd3127f..7967576 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_fil.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_fil.xtb
@@ -31,7 +31,6 @@
 <translation id="1293556467332435079">Mga File</translation>
 <translation id="1297922636971898492">Hindi available sa ngayon ang Google Drive. Awtomatikong magre-restart ang pag-a-upload sa sandaling bumalik na ang Google Drive.</translation>
 <translation id="1307931752636661898">Hindi matingnan ang mga Linux file</translation>
-<translation id="1338950911836659113">Nagtatanggal...</translation>
 <translation id="1346748346194534595">Kanan</translation>
 <translation id="1351692861129622852">Nag-i-import ng <ph name="FILE_COUNT" /> (na) file...</translation>
 <translation id="1358735829858566124">Hindi nagagamit ang file o ang direktoryo.</translation>
@@ -43,7 +42,6 @@
 <translation id="1430915738399379752">I-print</translation>
 <translation id="1435838927755162558">Ibahagi ang folder sa Parallels Desktop</translation>
 <translation id="1439494416798956626">Inilipat sa <ph name="FOLDER_NAME" />.</translation>
-<translation id="1464724975715666883">1 error.</translation>
 <translation id="1467432559032391204">Kaliwa</translation>
 <translation id="1471718551822868769">Slovak</translation>
 <translation id="1474339897586437869">Hindi na-upload ang "<ph name="FILENAME" />." Walang sapat na bakanteng espasyo sa iyong Google Drive.</translation>
@@ -226,11 +224,9 @@
 <translation id="3455931012307786678">Estonian</translation>
 <translation id="3466147780910026086">Sina-scan ang iyong media device...</translation>
 <translation id="3468522857997926824"><ph name="FILE_COUNT" /> (na) larawan ang na-back up sa <ph name="BEGIN_LINK" />Google Drive<ph name="END_LINK" /></translation>
-<translation id="3470502288861289375">Kinokopya...</translation>
 <translation id="3473378059788601120">Kinopya sa <ph name="FOLDER_NAME" />.</translation>
 <translation id="3475447146579922140">Spreadsheet ng Google</translation>
 <translation id="3486821258960016770">Mongolian</translation>
-<translation id="3495304270784461826"><ph name="COUNT" /> (na) error.</translation>
 <translation id="3522708245912499433">Portuguese</translation>
 <translation id="3524311639100184459">Mag-ingat: Ang mga file na ito ay pansamantala lang at puwedeng awtomatikong ma-delete para magbakante ng espasyo sa disk.  <ph name="BEGIN_LINK" />Matuto Pa<ph name="END_LINK" /></translation>
 <translation id="3527085408025491307">Folder</translation>
@@ -240,7 +236,6 @@
 <translation id="357479282490346887">Lithuanian</translation>
 <translation id="3603385196401704894">Canadian French</translation>
 <translation id="3606220979431771195">Turkish-F</translation>
-<translation id="3609785682760573515">Nagsi-sync...</translation>
 <translation id="3616113530831147358">Audio</translation>
 <translation id="3619115746895587757">Cappuccino</translation>
 <translation id="3620292326130836921">Naka-back up na ang lahat!</translation>
@@ -533,7 +528,6 @@
 <translation id="6657585470893396449">Password</translation>
 <translation id="6673674183150363784">French (France) na may Bépo keyboard</translation>
 <translation id="6710213216561001401">Nauna</translation>
-<translation id="6718273304615422081">Nagzi-zip...</translation>
 <translation id="6751256176799620176">1 folder ang napili</translation>
 <translation id="6790428901817661496">I-play</translation>
 <translation id="6795884519221689054">Panda</translation>
@@ -733,7 +727,6 @@
 <translation id="8600173386174225982">Naging thumbnail view ang listahan ng file.</translation>
 <translation id="8601932370724196034">Crostini image file</translation>
 <translation id="8609695766746872526">Icelandic</translation>
-<translation id="8669949407341943408">Inililipat...</translation>
 <translation id="8698464937041809063">Drawing ng Google</translation>
 <translation id="8712637175834984815">Nakuha ko</translation>
 <translation id="8713112442029511308">Maltese</translation>
@@ -756,7 +749,6 @@
 <translation id="9034924485347205037">Mga Linux file</translation>
 <translation id="9035012421917565900">Hindi na maibabalik ang mga item sa '<ph name="DESTINATION_NAME" />,' kaya hindi mo maa-undo ang pagkilos na ito.</translation>
 <translation id="9038620279323455325">Mayroon nang file na may pangalang "<ph name="FILE_NAME" />." Pumili ng ibang pangalan.</translation>
-<translation id="9064939804718829769">Naglilipat...</translation>
 <translation id="9065203028668620118">I-edit</translation>
 <translation id="908378762078012445">Russian na may Phonetic AATSEEL keyboard</translation>
 <translation id="9099674669267916096">Bilang ng page</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_fr-CA.xtb b/ui/chromeos/translations/ui_chromeos_strings_fr-CA.xtb
index fb2c2cd..0fb14c3 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_fr-CA.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_fr-CA.xtb
@@ -31,7 +31,6 @@
 <translation id="1293556467332435079">Fichiers</translation>
 <translation id="1297922636971898492">Google Disque n'est pas accessible pour le moment. Le téléversement reprendra lorsque Google Disque sera de nouveau fonctionnel.</translation>
 <translation id="1307931752636661898">Impossible d'afficher les fichiers Linux</translation>
-<translation id="1338950911836659113">Suppression en cours…</translation>
 <translation id="1346748346194534595">À droite</translation>
 <translation id="1351692861129622852">Importation de <ph name="FILE_COUNT" /> fichiers en cours...</translation>
 <translation id="1358735829858566124">Le fichier ou le répertoire n'est pas utilisable.</translation>
@@ -43,7 +42,6 @@
 <translation id="1430915738399379752">Imprimer</translation>
 <translation id="1435838927755162558">Partager le dossier avec Parallels Desktop</translation>
 <translation id="1439494416798956626">Déplacé dans le dossier <ph name="FOLDER_NAME" />.</translation>
-<translation id="1464724975715666883">Une erreur.</translation>
 <translation id="1467432559032391204">À gauche</translation>
 <translation id="1471718551822868769">Slovaque</translation>
 <translation id="1474339897586437869">Le fichier « <ph name="FILENAME" /> » n'a pas été mis à jour. Il n'y a pas suffisamment d'espace libre au sein de votre Google Disque.</translation>
@@ -226,11 +224,9 @@
 <translation id="3455931012307786678">Estonien</translation>
 <translation id="3466147780910026086">Analyse de votre appareil de stockage multimédia en cours…</translation>
 <translation id="3468522857997926824"><ph name="FILE_COUNT" /> photos sauvegardées dans <ph name="BEGIN_LINK" />Google Disque<ph name="END_LINK" /></translation>
-<translation id="3470502288861289375">Copie en cours…</translation>
 <translation id="3473378059788601120">Copié dans le dossier <ph name="FOLDER_NAME" />.</translation>
 <translation id="3475447146579922140">Feuilles de calcul Google</translation>
 <translation id="3486821258960016770">Mongol</translation>
-<translation id="3495304270784461826"><ph name="COUNT" /> erreurs.</translation>
 <translation id="3522708245912499433">Portugais</translation>
 <translation id="3524311639100184459">Attention : Ces fichiers sont temporaires et peuvent être automatiquement supprimés pour libérer de l'espace disque.  <ph name="BEGIN_LINK" />En savoir plus<ph name="END_LINK" /></translation>
 <translation id="3527085408025491307">Dossier</translation>
@@ -240,7 +236,6 @@
 <translation id="357479282490346887">Lituanien</translation>
 <translation id="3603385196401704894">Français canadien</translation>
 <translation id="3606220979431771195">Turc-F</translation>
-<translation id="3609785682760573515">Synchronisation en cours...</translation>
 <translation id="3616113530831147358">Audio</translation>
 <translation id="3619115746895587757">Cappuccino</translation>
 <translation id="3620292326130836921">Tous les fichiers ont été sauvegardés!</translation>
@@ -534,7 +529,6 @@
 <translation id="6657585470893396449">Mot de passe</translation>
 <translation id="6673674183150363784">Français (France) avec clavier BÉPO</translation>
 <translation id="6710213216561001401">Précédent</translation>
-<translation id="6718273304615422081">Compression au format .zip en cours...</translation>
 <translation id="6751256176799620176">1 dossier sélectionné</translation>
 <translation id="6790428901817661496">Jouer</translation>
 <translation id="6795884519221689054">Panda</translation>
@@ -734,7 +728,6 @@
 <translation id="8600173386174225982">La liste de fichiers utilise maintenant l'affichage en miniatures.</translation>
 <translation id="8601932370724196034">Fichier d'image Crostini</translation>
 <translation id="8609695766746872526">Islandais</translation>
-<translation id="8669949407341943408">Déplacement en cours…</translation>
 <translation id="8698464937041809063">Dessin Google</translation>
 <translation id="8712637175834984815">OK</translation>
 <translation id="8713112442029511308">Maltais</translation>
@@ -757,7 +750,6 @@
 <translation id="9034924485347205037">Fichiers Linux</translation>
 <translation id="9035012421917565900">Les éléments ne peuvent pas être remis dans « <ph name="DESTINATION_NAME" /> ». Cette action est donc irréversible.</translation>
 <translation id="9038620279323455325">Un fichier nommé « <ph name="FILE_NAME" /> » existe déjà. Veuillez choisir un autre nom.</translation>
-<translation id="9064939804718829769">Transfert en cours...</translation>
 <translation id="9065203028668620118">Modifier</translation>
 <translation id="908378762078012445">Russe avec clavier phonétique AATSEEL</translation>
 <translation id="9099674669267916096">Nombre de pages</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_fr.xtb b/ui/chromeos/translations/ui_chromeos_strings_fr.xtb
index eded0c6..a4165a1 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_fr.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_fr.xtb
@@ -31,7 +31,6 @@
 <translation id="1293556467332435079">Fichiers</translation>
 <translation id="1297922636971898492">Google Drive n'est pas disponible pour le moment. L'importation reprendra lorsque Google Drive sera à nouveau disponible.</translation>
 <translation id="1307931752636661898">Impossible d'afficher les fichiers Linux</translation>
-<translation id="1338950911836659113">Suppression en cours...</translation>
 <translation id="1346748346194534595">À droite</translation>
 <translation id="1351692861129622852">Importation de <ph name="FILE_COUNT" /> fichiers en cours…</translation>
 <translation id="1358735829858566124">Le fichier ou le répertoire ne sont pas utilisables.</translation>
@@ -43,7 +42,6 @@
 <translation id="1430915738399379752">Imprimer</translation>
 <translation id="1435838927755162558">Partager le dossier avec Parallels Desktop</translation>
 <translation id="1439494416798956626">Déplacé vers <ph name="FOLDER_NAME" />.</translation>
-<translation id="1464724975715666883">Une erreur.</translation>
 <translation id="1467432559032391204">À gauche</translation>
 <translation id="1471718551822868769">Slovaque</translation>
 <translation id="1474339897586437869">Le fichier "<ph name="FILENAME" />" n'a pas été importé, car l'espace disponible sur Google Drive est insuffisant.</translation>
@@ -225,11 +223,9 @@
 <translation id="3455931012307786678">Estonien</translation>
 <translation id="3466147780910026086">Analyse du périphérique multimédia en cours</translation>
 <translation id="3468522857997926824"><ph name="FILE_COUNT" /> photos ont été sauvegardées sur <ph name="BEGIN_LINK" />Google Drive<ph name="END_LINK" />.</translation>
-<translation id="3470502288861289375">Copie en cours…</translation>
 <translation id="3473378059788601120">Copié dans <ph name="FOLDER_NAME" />.</translation>
 <translation id="3475447146579922140">Feuille de calcul Google</translation>
 <translation id="3486821258960016770">Mongol</translation>
-<translation id="3495304270784461826"><ph name="COUNT" /> erreurs</translation>
 <translation id="3522708245912499433">Portugais</translation>
 <translation id="3524311639100184459">Attention : Ces fichiers sont temporaires et peuvent être automatiquement supprimés pour libérer de l'espace disque.  <ph name="BEGIN_LINK" />En savoir plus<ph name="END_LINK" /></translation>
 <translation id="3527085408025491307">Dossier</translation>
@@ -239,7 +235,6 @@
 <translation id="357479282490346887">Lituanien</translation>
 <translation id="3603385196401704894">Français canadien</translation>
 <translation id="3606220979431771195">Turc en F</translation>
-<translation id="3609785682760573515">Synchronisation en cours…</translation>
 <translation id="3616113530831147358">Audio</translation>
 <translation id="3619115746895587757">Cappuccino</translation>
 <translation id="3620292326130836921">Tout le contenu a été sauvegardé</translation>
@@ -532,7 +527,6 @@
 <translation id="6657585470893396449">Mot de passe</translation>
 <translation id="6673674183150363784">Français (France) avec clavier Bépo</translation>
 <translation id="6710213216561001401">Précédent</translation>
-<translation id="6718273304615422081">Compression en cours…</translation>
 <translation id="6751256176799620176">1 dossier sélectionné</translation>
 <translation id="6790428901817661496">Lire</translation>
 <translation id="6795884519221689054">Panda</translation>
@@ -732,7 +726,6 @@
 <translation id="8600173386174225982">Les fichiers s'affichent désormais sous forme de vignettes.</translation>
 <translation id="8601932370724196034">Fichier image Crostini</translation>
 <translation id="8609695766746872526">Islandais</translation>
-<translation id="8669949407341943408">Déplacement en cours…</translation>
 <translation id="8698464937041809063">Dessin Google</translation>
 <translation id="8712637175834984815">OK</translation>
 <translation id="8713112442029511308">Maltais</translation>
@@ -755,7 +748,6 @@
 <translation id="9034924485347205037">Fichiers Linux</translation>
 <translation id="9035012421917565900">Les éléments ne pourront pas être redéplacés vers "<ph name="DESTINATION_NAME" />". Cette action est donc irréversible.</translation>
 <translation id="9038620279323455325">Le nom "<ph name="FILE_NAME" />" est déjà attribué à un fichier. Veuillez en choisir un autre.</translation>
-<translation id="9064939804718829769">Transfert en cours…</translation>
 <translation id="9065203028668620118">Modifier</translation>
 <translation id="908378762078012445">Russe avec clavier phonétique AATSEEL</translation>
 <translation id="9099674669267916096">Nombre de pages</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_gl.xtb b/ui/chromeos/translations/ui_chromeos_strings_gl.xtb
index ca8f8e38..434d54e 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_gl.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_gl.xtb
@@ -31,7 +31,6 @@
 <translation id="1293556467332435079">Ficheiros</translation>
 <translation id="1297922636971898492">Google Drive non está dispoñible nestes momentos. A carga reiniciarase automaticamente cando volva estar dispoñible.</translation>
 <translation id="1307931752636661898">Non se puideron ver ficheiros de Linux</translation>
-<translation id="1338950911836659113">Eliminando...</translation>
 <translation id="1346748346194534595">Dereita</translation>
 <translation id="1351692861129622852">Importando <ph name="FILE_COUNT" /> ficheiros...</translation>
 <translation id="1358735829858566124">O ficheiro ou o directorio non se pode utilizar.</translation>
@@ -43,7 +42,6 @@
 <translation id="1430915738399379752">Imprimir</translation>
 <translation id="1435838927755162558">Compartir cartafol con Parallels Desktop</translation>
 <translation id="1439494416798956626">Moveuse a <ph name="FOLDER_NAME" />.</translation>
-<translation id="1464724975715666883">1 erro.</translation>
 <translation id="1467432559032391204">Esquerda</translation>
 <translation id="1471718551822868769">Eslovaco</translation>
 <translation id="1474339897586437869">Non se cargou "<ph name="FILENAME" />". Non hai suficiente espazo libre en Google Drive.</translation>
@@ -226,11 +224,9 @@
 <translation id="3455931012307786678">Estoniano</translation>
 <translation id="3466147780910026086">Analizando o teu dispositivo multimedia...</translation>
 <translation id="3468522857997926824">Creouse unha copia de seguranza de <ph name="FILE_COUNT" /> fotos en <ph name="BEGIN_LINK" />Google Drive<ph name="END_LINK" /></translation>
-<translation id="3470502288861289375">Copiando...</translation>
 <translation id="3473378059788601120">Copiouse en <ph name="FOLDER_NAME" />.</translation>
 <translation id="3475447146579922140">Folla de cálculo de Google</translation>
 <translation id="3486821258960016770">Mongol</translation>
-<translation id="3495304270784461826"><ph name="COUNT" /> erros.</translation>
 <translation id="3522708245912499433">Portugués</translation>
 <translation id="3524311639100184459">Precaución: Estes ficheiros son temporais e pódense eliminar automaticamente para liberar espazo no disco.  <ph name="BEGIN_LINK" />Máis información<ph name="END_LINK" /></translation>
 <translation id="3527085408025491307">Cartafol</translation>
@@ -240,7 +236,6 @@
 <translation id="357479282490346887">Lituano</translation>
 <translation id="3603385196401704894">Francés canadense</translation>
 <translation id="3606220979431771195">Turco F</translation>
-<translation id="3609785682760573515">Sincronizando...</translation>
 <translation id="3616113530831147358">Audio</translation>
 <translation id="3619115746895587757">Capuchino</translation>
 <translation id="3620292326130836921">Todos os ficheiros teñen unha copia de seguranza</translation>
@@ -532,7 +527,6 @@
 <translation id="6657585470893396449">Contrasinal</translation>
 <translation id="6673674183150363784">Francés (Francia) con teclado BÉPO</translation>
 <translation id="6710213216561001401">Anterior</translation>
-<translation id="6718273304615422081">Comprimindo...</translation>
 <translation id="6751256176799620176">Seleccionouse 1 cartafol</translation>
 <translation id="6790428901817661496">Reproducir</translation>
 <translation id="6795884519221689054">Panda</translation>
@@ -732,7 +726,6 @@
 <translation id="8600173386174225982">A lista de ficheiros cambiou á vista de miniatura.</translation>
 <translation id="8601932370724196034">Ficheiro de imaxe de Crostini</translation>
 <translation id="8609695766746872526">Islandés</translation>
-<translation id="8669949407341943408">Movendo...</translation>
 <translation id="8698464937041809063">Debuxo de Google</translation>
 <translation id="8712637175834984815">De acordo</translation>
 <translation id="8713112442029511308">Maltés</translation>
@@ -755,7 +748,6 @@
 <translation id="9034924485347205037">Ficheiros de Linux</translation>
 <translation id="9035012421917565900">Os elementos non se poden transferir de novo a "<ph name="DESTINATION_NAME" />", así que non poderás desfacer esta acción.</translation>
 <translation id="9038620279323455325">Xa existe un ficheiro denominado "<ph name="FILE_NAME" />". Escolle un nome diferente.</translation>
-<translation id="9064939804718829769">Transferindo...</translation>
 <translation id="9065203028668620118">Editar</translation>
 <translation id="908378762078012445">Ruso con teclado AATSEEL fonético</translation>
 <translation id="9099674669267916096">Número de páxinas</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_gu.xtb b/ui/chromeos/translations/ui_chromeos_strings_gu.xtb
index e6219d7..d0bd0b3 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_gu.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_gu.xtb
@@ -31,7 +31,6 @@
 <translation id="1293556467332435079">Files</translation>
 <translation id="1297922636971898492">Google ડ્રાઇવ હાલમાં ઉપલબ્ધ નથી. Google ડ્રાઇવ પાછું આવી જાય તે પછી અપલોડિંગ ઑટોમૅટિક રીતે ફરીથી શરૂ થશે.</translation>
 <translation id="1307931752636661898">Linux ફાઇલો બતાવી શકાતી નથી</translation>
-<translation id="1338950911836659113">કાઢી રહ્યું છે ...</translation>
 <translation id="1346748346194534595">જમણે</translation>
 <translation id="1351692861129622852"><ph name="FILE_COUNT" /> ફાઇલો આયાત કરી રહ્યું છે...</translation>
 <translation id="1358735829858566124">ફાઇલ કે ડિરેક્ટરી ઉપયોગ યોગ્ય નથી.</translation>
@@ -43,7 +42,6 @@
 <translation id="1430915738399379752">પ્રિન્ટ</translation>
 <translation id="1435838927755162558">Parallels ડેસ્કટૉપ સાથે ફોલ્ડર શેર કરો</translation>
 <translation id="1439494416798956626"><ph name="FOLDER_NAME" />માં ખસેડ્યું.</translation>
-<translation id="1464724975715666883">1 ભૂલ.</translation>
 <translation id="1467432559032391204">ડાબું</translation>
 <translation id="1471718551822868769">સ્લોવાક</translation>
 <translation id="1474339897586437869">"<ph name="FILENAME" />" ને અપલોડ કરવામાં આવી ન હતી. તમારી Google ડ્રાઇવમાં પૂરતી ખાલી જગ્યા નથી.</translation>
@@ -225,11 +223,9 @@
 <translation id="3455931012307786678">એસ્ટોનિયન</translation>
 <translation id="3466147780910026086">તમારા મીડિયા ઉપકરણને સ્કેન કરી રહ્યું છે...</translation>
 <translation id="3468522857997926824"><ph name="BEGIN_LINK" />Google ડ્રાઇવ<ph name="END_LINK" /> પર <ph name="FILE_COUNT" /> ફોટાનો બેક અપ લેવાયો</translation>
-<translation id="3470502288861289375">કૉપિ કરી રહ્યું છે...</translation>
 <translation id="3473378059788601120"><ph name="FOLDER_NAME" />માં કૉપિ કર્યા.</translation>
 <translation id="3475447146579922140">Google સ્પ્રેડશીટ</translation>
 <translation id="3486821258960016770">મૉંગોલિયન</translation>
-<translation id="3495304270784461826"><ph name="COUNT" /> ભૂલો.</translation>
 <translation id="3522708245912499433">પોર્ટુગીઝ</translation>
 <translation id="3524311639100184459">ચેતવણી: આ ફાઇલો અસ્થાયી છે અને બની શકે કે ડિસ્ક પર સ્પેસ ખાલી કરવા માટે તેમને ઑટોમૅટિક રીતે ડિલીટ કરવામાં આવે  <ph name="BEGIN_LINK" />વધુ જાણો<ph name="END_LINK" /></translation>
 <translation id="3527085408025491307">ફોલ્ડર</translation>
@@ -239,7 +235,6 @@
 <translation id="357479282490346887">લિથુનિયન</translation>
 <translation id="3603385196401704894">કેનેડિયન ફ્રેંચ</translation>
 <translation id="3606220979431771195">ટર્કિશ-F</translation>
-<translation id="3609785682760573515">સમન્વય કરી રહ્યું છે...</translation>
 <translation id="3616113530831147358">ઑડિઓ</translation>
 <translation id="3619115746895587757">કૅપુચિનો</translation>
 <translation id="3620292326130836921">તમામનો બેક અપ લેવાયો!</translation>
@@ -532,7 +527,6 @@
 <translation id="6657585470893396449">પાસવર્ડ</translation>
 <translation id="6673674183150363784">ફ્રેન્ચ (ફ્રાન્સ), Bépo કીબોર્ડ સાથે</translation>
 <translation id="6710213216561001401">પાછલી</translation>
-<translation id="6718273304615422081">ઝિપ કરી રહ્યાં છે...</translation>
 <translation id="6751256176799620176">1 ફોલ્ડર પસંદ કર્યું</translation>
 <translation id="6790428901817661496">ચલાવો</translation>
 <translation id="6795884519221689054">પાંડા</translation>
@@ -730,7 +724,6 @@
 <translation id="8600173386174225982">ફાઇલ સૂચિને થંબનેલ દૃશ્યમાં બદલી છે.</translation>
 <translation id="8601932370724196034">Crostini છબી ફાઇલ</translation>
 <translation id="8609695766746872526">આઇસલેન્ડિક</translation>
-<translation id="8669949407341943408">ખસેડી રહ્યું છે...</translation>
 <translation id="8698464937041809063">Google રેખાંકન</translation>
 <translation id="8712637175834984815">સમજાઈ ગયું</translation>
 <translation id="8713112442029511308">માલ્ટીઝ</translation>
@@ -753,7 +746,6 @@
 <translation id="9034924485347205037">Linux ફાઇલો</translation>
 <translation id="9035012421917565900">આઇટમને પાછી '<ph name="DESTINATION_NAME" />'માં ખસેડી શકાતી નથી, તેથી તમે આ ક્રિયાનો છેલ્લો ફેરફાર રદ કરી શકશો નહીંં.</translation>
 <translation id="9038620279323455325">"<ph name="FILE_NAME" />" નામની ફાઇલ પહેલાંથી અસ્તિત્વમાં છે. કૃપા કરીને કોઈ અલગ નામ પસંદ કરો.</translation>
-<translation id="9064939804718829769">સ્થાનાંતરિત કરી રહ્યાં છે...</translation>
 <translation id="9065203028668620118">ફેરફાર કરો</translation>
 <translation id="908378762078012445">રશિયન, ફોનેટિક AATSEEL કીબોર્ડ સાથે</translation>
 <translation id="9099674669267916096">પેજની સંખ્યા</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_hi.xtb b/ui/chromeos/translations/ui_chromeos_strings_hi.xtb
index 4486740..a8ec54ac 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_hi.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_hi.xtb
@@ -31,7 +31,6 @@
 <translation id="1293556467332435079">फ़ाइल</translation>
 <translation id="1297922636971898492">Google डिस्क इस समय उपलब्ध नहीं है. Google डिस्क के वापस आ जाने पर अपलोडिंग अपने आप फिर से प्रारंभ हो जाएगी.</translation>
 <translation id="1307931752636661898">Linux फ़ाइलें नहीं दिखाई जा सकीं</translation>
-<translation id="1338950911836659113">हटाए जा रहे हैं...</translation>
 <translation id="1346748346194534595">दाएं</translation>
 <translation id="1351692861129622852"><ph name="FILE_COUNT" /> फ़ाइलें आयात की जा रही हैं...</translation>
 <translation id="1358735829858566124">फा़इल या निर्देशिका उपयोग करने योग्य नहीं है.</translation>
@@ -43,7 +42,6 @@
 <translation id="1430915738399379752">प्रिंट करें</translation>
 <translation id="1435838927755162558">Parallels Desktop के साथ फ़ोल्डर शेयर करें</translation>
 <translation id="1439494416798956626"><ph name="FOLDER_NAME" /> में ले जाया गया.</translation>
-<translation id="1464724975715666883">1 गड़बड़ी.</translation>
 <translation id="1467432559032391204">बाएं</translation>
 <translation id="1471718551822868769">स्लोवाक</translation>
 <translation id="1474339897586437869">"<ph name="FILENAME" />" को अपलोड नहीं किया गया. आपकी Google डिस्क में काफ़ी जगह नहीं है.</translation>
@@ -226,11 +224,9 @@
 <translation id="3455931012307786678">एस्टोनियान</translation>
 <translation id="3466147780910026086">आपका मीडिया डिवाइस स्‍कैन किया जा रहा है...</translation>
 <translation id="3468522857997926824"><ph name="FILE_COUNT" /> फ़ोटो का <ph name="BEGIN_LINK" />Google डिस्‍क<ph name="END_LINK" /> में बैक अप लिया गया</translation>
-<translation id="3470502288861289375">कॉपी किया जा रहा है...</translation>
 <translation id="3473378059788601120"><ph name="FOLDER_NAME" /> में कॉपी की गई.</translation>
 <translation id="3475447146579922140">Google spreadsheet</translation>
 <translation id="3486821258960016770">मंगोलियन</translation>
-<translation id="3495304270784461826"><ph name="COUNT" /> त्रुटियां.</translation>
 <translation id="3522708245912499433">पुर्तगाली</translation>
 <translation id="3524311639100184459">चेतावनी: ये फ़ाइलें अस्थायी हैं और डिस्क की जगह खाली करने के लिए अपने-आप मिटाई जा सकती हैं.  <ph name="BEGIN_LINK" />ज़्यादा जानें<ph name="END_LINK" /></translation>
 <translation id="3527085408025491307">फ़ोल्डर</translation>
@@ -240,7 +236,6 @@
 <translation id="357479282490346887">लिथुआनियाई</translation>
 <translation id="3603385196401704894">कनाडाई फ़्रेंच</translation>
 <translation id="3606220979431771195">तुर्की-F</translation>
-<translation id="3609785682760573515">समन्वयित हो रहा है...</translation>
 <translation id="3616113530831147358">ऑडियो</translation>
 <translation id="3619115746895587757">कैपुचिनो</translation>
 <translation id="3620292326130836921">सभी का बैक अप लिया गया!</translation>
@@ -533,7 +528,6 @@
 <translation id="6657585470893396449">पासवर्ड</translation>
 <translation id="6673674183150363784">बेपो कीबोर्ड के साथ फ़्रेंच (फ़्रांस)</translation>
 <translation id="6710213216561001401">पिछला</translation>
-<translation id="6718273304615422081">ज़िप किया जा रहा है...</translation>
 <translation id="6751256176799620176">1 फ़ोल्डर चयनित</translation>
 <translation id="6790428901817661496">चलाएं</translation>
 <translation id="6795884519221689054">पांडा</translation>
@@ -733,7 +727,6 @@
 <translation id="8600173386174225982">फ़ाइल की सूची अब थंबनेल की तरह दिखाई जा रही है.</translation>
 <translation id="8601932370724196034">Crostini इमेज फ़ाइल</translation>
 <translation id="8609695766746872526">आइसलैंडिक</translation>
-<translation id="8669949407341943408">चल रहे...</translation>
 <translation id="8698464937041809063">Google ड्रॉइंग</translation>
 <translation id="8712637175834984815">समझ लिया</translation>
 <translation id="8713112442029511308">माल्टीज़</translation>
@@ -756,7 +749,6 @@
 <translation id="9034924485347205037">Linux की फ़ाइलें</translation>
 <translation id="9035012421917565900">ये आइटम '<ph name="DESTINATION_NAME" />' में वापस नहीं ले जाए जा सकते हैं, इसलिए आप इस कार्रवाई को पहले जैसा नहीं कर सकेंगे.</translation>
 <translation id="9038620279323455325">"<ph name="FILE_NAME" />" नाम की फ़ाइल पहले से मौजूद है. कृपया कोई दूसरा नाम चुनें.</translation>
-<translation id="9064939804718829769">स्थानांतरित किया जा रहा है...</translation>
 <translation id="9065203028668620118">बदलाव करें</translation>
 <translation id="908378762078012445">फ़ोनेटिक AATSEEL कीबोर्ड के साथ रशियन</translation>
 <translation id="9099674669267916096">पेज संख्या</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_hr.xtb b/ui/chromeos/translations/ui_chromeos_strings_hr.xtb
index d236c12..eccd8ea 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_hr.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_hr.xtb
@@ -31,7 +31,6 @@
 <translation id="1293556467332435079">Datoteke</translation>
 <translation id="1297922636971898492">Google disk trenutačno nije dostupan. Prijenos će se automatski ponovo pokrenuti kada Google disk opet postane dostupan.</translation>
 <translation id="1307931752636661898">Nije moguće pregledati Linux datoteke</translation>
-<translation id="1338950911836659113">Brisanje...</translation>
 <translation id="1346748346194534595">Udesno</translation>
 <translation id="1351692861129622852">Uvoz datoteka (<ph name="FILE_COUNT" />)...</translation>
 <translation id="1358735829858566124">Datoteka ili direktorij nisu upotrebljivi.</translation>
@@ -43,7 +42,6 @@
 <translation id="1430915738399379752">Ispis</translation>
 <translation id="1435838927755162558">Dijeljenje mape s Parallels Desktopom</translation>
 <translation id="1439494416798956626">Premješteno u <ph name="FOLDER_NAME" />.</translation>
-<translation id="1464724975715666883">1 pogreška.</translation>
 <translation id="1467432559032391204">Ulijevo</translation>
 <translation id="1471718551822868769">slovački</translation>
 <translation id="1474339897586437869">Datoteka "<ph name="FILENAME" />" nije prenesena. Nema dovoljno slobodnog prostora na Google disku.</translation>
@@ -226,11 +224,9 @@
 <translation id="3455931012307786678">estonski</translation>
 <translation id="3466147780910026086">Pretraživanje medijskog uređaja...</translation>
 <translation id="3468522857997926824">Izrađene su sigurnosne kopije fotografija na <ph name="BEGIN_LINK" />Google disku<ph name="END_LINK" /> (ukupno <ph name="FILE_COUNT" />)</translation>
-<translation id="3470502288861289375">Kopiranje...</translation>
 <translation id="3473378059788601120">Kopirano u mapu <ph name="FOLDER_NAME" />.</translation>
 <translation id="3475447146579922140">Googleova proračunska tablica</translation>
 <translation id="3486821258960016770">mongolski</translation>
-<translation id="3495304270784461826">Broj pogrešaka: <ph name="COUNT" />.</translation>
 <translation id="3522708245912499433">Portugalski</translation>
 <translation id="3524311639100184459">Oprez: ove su datoteke privremene i mogu se automatski izbrisati za oslobađanje prostora na disku.  <ph name="BEGIN_LINK" />Saznajte više<ph name="END_LINK" /></translation>
 <translation id="3527085408025491307">Mapa</translation>
@@ -240,7 +236,6 @@
 <translation id="357479282490346887">Litavski</translation>
 <translation id="3603385196401704894">francuska (kanadska)</translation>
 <translation id="3606220979431771195">Turska F</translation>
-<translation id="3609785682760573515">Sinkronizacija...</translation>
 <translation id="3616113530831147358">Audio</translation>
 <translation id="3619115746895587757">Cappuccino</translation>
 <translation id="3620292326130836921">Sve je sigurnosno kopirano!</translation>
@@ -533,7 +528,6 @@
 <translation id="6657585470893396449">Zaporka</translation>
 <translation id="6673674183150363784">francuski (Francuska) s Bépo tipkovnicom</translation>
 <translation id="6710213216561001401">Prethodno</translation>
-<translation id="6718273304615422081">Komprimiranje...</translation>
 <translation id="6751256176799620176">Odabrana je 1 mapa</translation>
 <translation id="6790428901817661496">Reproduciraj</translation>
 <translation id="6795884519221689054">Panda</translation>
@@ -733,7 +727,6 @@
 <translation id="8600173386174225982">Popis datoteka promijenio se na prikaz minijatura.</translation>
 <translation id="8601932370724196034">Slikovna datoteka Crostinija</translation>
 <translation id="8609695766746872526">islandski</translation>
-<translation id="8669949407341943408">Premještanje...</translation>
 <translation id="8698464937041809063">Googleov crtež</translation>
 <translation id="8712637175834984815">Shvaćam</translation>
 <translation id="8713112442029511308">malteški</translation>
@@ -756,7 +749,6 @@
 <translation id="9034924485347205037">Linux datoteke</translation>
 <translation id="9035012421917565900">Te se stavke ne mogu vratiti na odredište "<ph name="DESTINATION_NAME" />", tako da nećete moći poništiti tu radnju.</translation>
 <translation id="9038620279323455325">Datoteka s nazivom "<ph name="FILE_NAME" />" već postoji. Odaberite drugi naziv.</translation>
-<translation id="9064939804718829769">Prenošenje...</translation>
 <translation id="9065203028668620118">Uredi</translation>
 <translation id="908378762078012445">ruski s fonetskom tipkovnicom AATSEEL</translation>
 <translation id="9099674669267916096">Broj stranica</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_hu.xtb b/ui/chromeos/translations/ui_chromeos_strings_hu.xtb
index 8eecd96..94c0d7e 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_hu.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_hu.xtb
@@ -31,7 +31,6 @@
 <translation id="1293556467332435079">Fájlok</translation>
 <translation id="1297922636971898492">A Google Drive jelenleg nem érhető el. A feltöltés automatikusan újrakezdődik, amint a Google Drive elérhetővé válik.</translation>
 <translation id="1307931752636661898">A Linux-fájlok megtekintése nem sikerült</translation>
-<translation id="1338950911836659113">Törlés…</translation>
 <translation id="1346748346194534595">Jobbra</translation>
 <translation id="1351692861129622852"><ph name="FILE_COUNT" /> fájl importálása folyamatban…</translation>
 <translation id="1358735829858566124">A fájl vagy könyvtár nem használható.</translation>
@@ -43,7 +42,6 @@
 <translation id="1430915738399379752">Nyomtatás</translation>
 <translation id="1435838927755162558">Mappa megosztása a Parallels Desktoppal</translation>
 <translation id="1439494416798956626">Áthelyezve ide: <ph name="FOLDER_NAME" />.</translation>
-<translation id="1464724975715666883">1 hiba.</translation>
 <translation id="1467432559032391204">Balra</translation>
 <translation id="1471718551822868769">szlovák</translation>
 <translation id="1474339897586437869">A(z) „<ph name="FILENAME" />” feltöltése nem történt meg. Nincs elegendő szabad terület a Google Drive-on.</translation>
@@ -226,11 +224,9 @@
 <translation id="3455931012307786678">észt</translation>
 <translation id="3466147780910026086">Adathordozó vizsgálata…</translation>
 <translation id="3468522857997926824"><ph name="FILE_COUNT" /> fotó biztonsági mentése végrehajtva a <ph name="BEGIN_LINK" />Google Drive-on<ph name="END_LINK" /></translation>
-<translation id="3470502288861289375">Másolás...</translation>
 <translation id="3473378059788601120">Átmásolva ide: <ph name="FOLDER_NAME" />.</translation>
 <translation id="3475447146579922140">Google-táblázat</translation>
 <translation id="3486821258960016770">mongol</translation>
-<translation id="3495304270784461826"><ph name="COUNT" /> hiba.</translation>
 <translation id="3522708245912499433">portugál</translation>
 <translation id="3524311639100184459">Figyelem: Ezek ideiglenes fájlok, és automatikusan törlésre kerülnek azért, hogy tárhely szabaduljon fel.  <ph name="BEGIN_LINK" />További információ<ph name="END_LINK" />.</translation>
 <translation id="3527085408025491307">Mappa</translation>
@@ -240,7 +236,6 @@
 <translation id="357479282490346887">litván</translation>
 <translation id="3603385196401704894">kanadai francia</translation>
 <translation id="3606220979431771195">Török F</translation>
-<translation id="3609785682760573515">Szinkronizálás...</translation>
 <translation id="3616113530831147358">Audio</translation>
 <translation id="3619115746895587757">Cappuccino</translation>
 <translation id="3620292326130836921">Mindenről készült biztonsági másolat!</translation>
@@ -533,7 +528,6 @@
 <translation id="6657585470893396449">Jelszó</translation>
 <translation id="6673674183150363784">francia (Franciaország), Bépo-billentyűzettel</translation>
 <translation id="6710213216561001401">Előző</translation>
-<translation id="6718273304615422081">Tömörítés...</translation>
 <translation id="6751256176799620176">1 mappa kiválasztva</translation>
 <translation id="6790428901817661496">Lejátszás</translation>
 <translation id="6795884519221689054">Panda</translation>
@@ -733,7 +727,6 @@
 <translation id="8600173386174225982">A fájllista nézete indexképnézetre változott.</translation>
 <translation id="8601932370724196034">Crostini-képfájl</translation>
 <translation id="8609695766746872526">izlandi</translation>
-<translation id="8669949407341943408">Áthelyezés…</translation>
 <translation id="8698464937041809063">Google-rajz</translation>
 <translation id="8712637175834984815">Sikerült</translation>
 <translation id="8713112442029511308">máltai</translation>
@@ -756,7 +749,6 @@
 <translation id="9034924485347205037">Linux-fájlok</translation>
 <translation id="9035012421917565900">Az elemek nem helyezhetők vissza ide: „<ph name="DESTINATION_NAME" />”. Nem tudja visszavonni a műveletet.</translation>
 <translation id="9038620279323455325">Már van „<ph name="FILE_NAME" />” nevű fájl. Válasszon másik nevet.</translation>
-<translation id="9064939804718829769">Átvitel...</translation>
 <translation id="9065203028668620118">Szerkesztés</translation>
 <translation id="908378762078012445">orosz, fonetikus AATSEEL-billentyűzettel</translation>
 <translation id="9099674669267916096">Oldalak száma</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_hy.xtb b/ui/chromeos/translations/ui_chromeos_strings_hy.xtb
index e65df3e..bc8e33f 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_hy.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_hy.xtb
@@ -31,7 +31,6 @@
 <translation id="1293556467332435079">Ֆայլեր</translation>
 <translation id="1297922636971898492">Այս պահին Google Drive-ը մատչելի չէ: Վերբեռնումը ավտոմատ կվերագործարկվի, երբ Google Drive-ը մատչելի լինի:</translation>
 <translation id="1307931752636661898">Չհաջողվեց ցուցադրել Լինուքսի ֆայլերը</translation>
-<translation id="1338950911836659113">Ջնջում…</translation>
 <translation id="1346748346194534595">Աջ</translation>
 <translation id="1351692861129622852">Ներմուծվում է <ph name="FILE_COUNT" /> ֆայլ...</translation>
 <translation id="1358735829858566124">Ֆայլը կամ գրացուցակը վնասված են:</translation>
@@ -43,7 +42,6 @@
 <translation id="1430915738399379752">Տպում</translation>
 <translation id="1435838927755162558">Կիսվեք պանակով Parallels Desktop-ի հետ</translation>
 <translation id="1439494416798956626">Տեղափոխվել է «<ph name="FOLDER_NAME" />» պանակ</translation>
-<translation id="1464724975715666883">1 սխալ:</translation>
 <translation id="1467432559032391204">Ձախ</translation>
 <translation id="1471718551822868769">սլովակերեն</translation>
 <translation id="1474339897586437869">«<ph name="FILENAME" />» ֆայլը չվերբեռնվեց: Ձեր Google Drive-ում բավարար չափով ազատ տարածություն չկա:</translation>
@@ -227,11 +225,9 @@
 <translation id="3455931012307786678">էստոներեն</translation>
 <translation id="3466147780910026086">Որոնում մեդիա սարքում…</translation>
 <translation id="3468522857997926824"><ph name="FILE_COUNT" /> լուսանկար կրկնօրինակվեց <ph name="BEGIN_LINK" />Google Drive-ում<ph name="END_LINK" /></translation>
-<translation id="3470502288861289375">Պատճենում…</translation>
 <translation id="3473378059788601120">Պատճենվեց «<ph name="FOLDER_NAME" />» պանակում</translation>
 <translation id="3475447146579922140">Google աղյուսակ</translation>
 <translation id="3486821258960016770">մոնղոլերեն</translation>
-<translation id="3495304270784461826"><ph name="COUNT" /> սխալ:</translation>
 <translation id="3522708245912499433">պորտուգալերեն</translation>
 <translation id="3524311639100184459">Ուշադրություն. այս ֆայլերը ժամանակավոր են և կարող են ավտոմատ ջնջվել՝ սկավառակի վրա տարածք ազատելու համար։  <ph name="BEGIN_LINK" />Իմանալ ավելին<ph name="END_LINK" /></translation>
 <translation id="3527085408025491307">Պանակ</translation>
@@ -241,7 +237,6 @@
 <translation id="357479282490346887">Լիտվական</translation>
 <translation id="3603385196401704894">Կանադական (ֆրանսիական)</translation>
 <translation id="3606220979431771195">Թուրքական F</translation>
-<translation id="3609785682760573515">Համաժամացում…</translation>
 <translation id="3616113530831147358">Աուդիո</translation>
 <translation id="3619115746895587757">Կապուչինո</translation>
 <translation id="3620292326130836921">Բոլորը ֆայլերը կրկնօրինակվեցին:</translation>
@@ -535,7 +530,6 @@
 <translation id="6657585470893396449">Գաղտնաբառ</translation>
 <translation id="6673674183150363784">ֆրանսերեն (Ֆրանսիա)՝ Bépo ստեղնաշարով</translation>
 <translation id="6710213216561001401">Նախորդը</translation>
-<translation id="6718273304615422081">Արխիվացում…</translation>
 <translation id="6751256176799620176">Ընտրված է 1 պանակ</translation>
 <translation id="6790428901817661496">Նվագարկել</translation>
 <translation id="6795884519221689054">Պանդա</translation>
@@ -737,7 +731,6 @@
 <translation id="8600173386174225982">Ֆայլերի ցանկն այժմ ցուցադրված է մանրապատկերների տեսքով:</translation>
 <translation id="8601932370724196034">Crostini գրաֆիկական ֆայլ</translation>
 <translation id="8609695766746872526">իսլանդերեն</translation>
-<translation id="8669949407341943408">Տեղափոխում...</translation>
 <translation id="8698464937041809063">Google գծագիր</translation>
 <translation id="8712637175834984815">Պատրաստ է</translation>
 <translation id="8713112442029511308">մալթայերեն</translation>
@@ -760,7 +753,6 @@
 <translation id="9034924485347205037">Լինուքսի ֆայլեր</translation>
 <translation id="9035012421917565900">Տարրերը հնարավոր չէ տեղափոխել «<ph name="DESTINATION_NAME" />», այդ պատճառով այս գործողությունը չեք կարող հետարկել։</translation>
 <translation id="9038620279323455325">«<ph name="FILE_NAME" />» անունով ֆայլ արդեն գոյություն ունի: Ընտրեք այլ անուն:</translation>
-<translation id="9064939804718829769">Փոխանցում…</translation>
 <translation id="9065203028668620118">Փոփոխել</translation>
 <translation id="908378762078012445">ռուսերեն (AATSEEL հնչյունային ստեղնաշար)</translation>
 <translation id="9099674669267916096">Էջերի քանակը</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_id.xtb b/ui/chromeos/translations/ui_chromeos_strings_id.xtb
index f00a1f1..f841717 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_id.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_id.xtb
@@ -31,7 +31,6 @@
 <translation id="1293556467332435079">File</translation>
 <translation id="1297922636971898492">Saat ini Google Drive tidak tersedia. Upload akan dimulai ulang secara otomatis setelah Google Drive aktif kembali.</translation>
 <translation id="1307931752636661898">Tidak dapat melihat file Linux</translation>
-<translation id="1338950911836659113">Menghapus...</translation>
 <translation id="1346748346194534595">Kanan</translation>
 <translation id="1351692861129622852">Mengimpor <ph name="FILE_COUNT" /> file...</translation>
 <translation id="1358735829858566124">File atau direktori tidak dapat digunakan.</translation>
@@ -43,7 +42,6 @@
 <translation id="1430915738399379752">Cetak</translation>
 <translation id="1435838927755162558">Bagikan folder ke Parallels Desktop</translation>
 <translation id="1439494416798956626">Dipindahkan ke <ph name="FOLDER_NAME" />.</translation>
-<translation id="1464724975715666883">1 kesalahan.</translation>
 <translation id="1467432559032391204">Kiri</translation>
 <translation id="1471718551822868769">Slovakia</translation>
 <translation id="1474339897586437869">"<ph name="FILENAME" />" tidak diupload. Ruang di Google Drive Anda tidak cukup.</translation>
@@ -225,11 +223,9 @@
 <translation id="3455931012307786678">Estonia</translation>
 <translation id="3466147780910026086">Memindai perangkat media Anda...</translation>
 <translation id="3468522857997926824"><ph name="FILE_COUNT" /> foto dicadangkan ke <ph name="BEGIN_LINK" />Google Drive<ph name="END_LINK" /></translation>
-<translation id="3470502288861289375">Menyalin...</translation>
 <translation id="3473378059788601120">Disalin ke <ph name="FOLDER_NAME" />.</translation>
 <translation id="3475447146579922140">Spreadsheet Google</translation>
 <translation id="3486821258960016770">Mongolia</translation>
-<translation id="3495304270784461826"><ph name="COUNT" /> kesalahan.</translation>
 <translation id="3522708245912499433">Portugis</translation>
 <translation id="3524311639100184459">Perhatian: File ini bersifat sementara dan dapat dihapus secara otomatis untuk mengosongkan ruang disk.  <ph name="BEGIN_LINK" />Pelajari Lebih Lanjut<ph name="END_LINK" /></translation>
 <translation id="3527085408025491307">Folder</translation>
@@ -239,7 +235,6 @@
 <translation id="357479282490346887">Lithuania</translation>
 <translation id="3603385196401704894">Prancis Kanada</translation>
 <translation id="3606220979431771195">Turki-F</translation>
-<translation id="3609785682760573515">Menyinkronkan...</translation>
 <translation id="3616113530831147358">Audio</translation>
 <translation id="3619115746895587757">Cappuccino</translation>
 <translation id="3620292326130836921">Semua dicadangkan!</translation>
@@ -532,7 +527,6 @@
 <translation id="6657585470893396449">Sandi</translation>
 <translation id="6673674183150363784">Prancis (Prancis) dengan keyboard Bépo</translation>
 <translation id="6710213216561001401">Sebelumnya</translation>
-<translation id="6718273304615422081">Membuat file zip...</translation>
 <translation id="6751256176799620176">1 folder dipilih</translation>
 <translation id="6790428901817661496">Putar</translation>
 <translation id="6795884519221689054">Panda</translation>
@@ -732,7 +726,6 @@
 <translation id="8600173386174225982">Daftar file telah diubah menjadi tampilan thumbnail.</translation>
 <translation id="8601932370724196034">File gambar Crostini</translation>
 <translation id="8609695766746872526">Islandia</translation>
-<translation id="8669949407341943408">Memindahkan...</translation>
 <translation id="8698464937041809063">Gambar Google</translation>
 <translation id="8712637175834984815">Mengerti</translation>
 <translation id="8713112442029511308">Malta</translation>
@@ -755,7 +748,6 @@
 <translation id="9034924485347205037">File Linux</translation>
 <translation id="9035012421917565900">Item tidak dapat dipindahkan kembali ke '<ph name="DESTINATION_NAME" />', jadi tindakan ini tidak dapat diurungkan.</translation>
 <translation id="9038620279323455325">File bernama "<ph name="FILE_NAME" />" sudah ada. Harap pilih nama lain.</translation>
-<translation id="9064939804718829769">Mentransfer...</translation>
 <translation id="9065203028668620118">Edit</translation>
 <translation id="908378762078012445">Rusia dengan keyboard AATSEEL Fonetik</translation>
 <translation id="9099674669267916096">Hitungan halaman</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_is.xtb b/ui/chromeos/translations/ui_chromeos_strings_is.xtb
index 15fff4f..3325974e 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_is.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_is.xtb
@@ -31,7 +31,6 @@
 <translation id="1293556467332435079">Skrár</translation>
 <translation id="1297922636971898492">Google Drive er ekki í boði núna. Flutningur verður sjálfkrafa hafinn að nýju þegar Google Drive verður aftur tiltækt.</translation>
 <translation id="1307931752636661898">Ekki er hægt að skoða Linux-skrár</translation>
-<translation id="1338950911836659113">Eyðir...</translation>
 <translation id="1346748346194534595">Réttsælis</translation>
 <translation id="1351692861129622852">Flytur inn <ph name="FILE_COUNT" /> skrár...</translation>
 <translation id="1358735829858566124">Skráin eða mappan er ónothæf.</translation>
@@ -43,7 +42,6 @@
 <translation id="1430915738399379752">Prenta</translation>
 <translation id="1435838927755162558">Deila möppu með Parallels Desktop</translation>
 <translation id="1439494416798956626">Fært í <ph name="FOLDER_NAME" />.</translation>
-<translation id="1464724975715666883">1 villa.</translation>
 <translation id="1467432559032391204">Rangsælis</translation>
 <translation id="1471718551822868769">Slóvakíska</translation>
 <translation id="1474339897586437869">„<ph name="FILENAME" />“ var ekki hlaðið. Ekki er nægt pláss á Google Drive.</translation>
@@ -226,11 +224,9 @@
 <translation id="3455931012307786678">Eistneska</translation>
 <translation id="3466147780910026086">Skannar geymslumiðilinn þinn...</translation>
 <translation id="3468522857997926824"><ph name="FILE_COUNT" /> myndir afritaðar á <ph name="BEGIN_LINK" />Google Drive<ph name="END_LINK" /></translation>
-<translation id="3470502288861289375">Afritar...</translation>
 <translation id="3473378059788601120">Afritað í <ph name="FOLDER_NAME" />.</translation>
 <translation id="3475447146579922140">Google töflureiknir</translation>
 <translation id="3486821258960016770">Mongólska</translation>
-<translation id="3495304270784461826"><ph name="COUNT" /> villur.</translation>
 <translation id="3522708245912499433">Portúgalskt</translation>
 <translation id="3524311639100184459">Varúð: Þessar skrár eru til bráðabirgða og þeim kann að vera eytt sjálfkrafa til að losa um diskpláss.  <ph name="BEGIN_LINK" />Frekari upplýsingar<ph name="END_LINK" /></translation>
 <translation id="3527085408025491307">Mappa</translation>
@@ -240,7 +236,6 @@
 <translation id="357479282490346887">Litháískt</translation>
 <translation id="3603385196401704894">Kanadískt franskt</translation>
 <translation id="3606220979431771195">Tyrkneskt F</translation>
-<translation id="3609785682760573515">Samstillir...</translation>
 <translation id="3616113530831147358">Hljóð</translation>
 <translation id="3619115746895587757">Cappuccino</translation>
 <translation id="3620292326130836921">Allt afritað!</translation>
@@ -532,7 +527,6 @@
 <translation id="6657585470893396449">Aðgangsorð</translation>
 <translation id="6673674183150363784">Franska (Frakkland) með Bépo-lyklaborði</translation>
 <translation id="6710213216561001401">Til baka</translation>
-<translation id="6718273304615422081">Þjappar...</translation>
 <translation id="6751256176799620176">Ein mappa valin</translation>
 <translation id="6790428901817661496">Spila</translation>
 <translation id="6795884519221689054">Panda</translation>
@@ -732,7 +726,6 @@
 <translation id="8600173386174225982">Skráalista var breytt í smámyndayfirlit.</translation>
 <translation id="8601932370724196034">Crostini-myndskrá</translation>
 <translation id="8609695766746872526">Íslenska</translation>
-<translation id="8669949407341943408">Flytur...</translation>
 <translation id="8698464937041809063">Google teikning</translation>
 <translation id="8712637175834984815">Ég skil</translation>
 <translation id="8713112442029511308">Maltneska</translation>
@@ -755,7 +748,6 @@
 <translation id="9034924485347205037">Linux-skrár</translation>
 <translation id="9035012421917565900">Ekki er hægt að færa atriðin aftur í „<ph name="DESTINATION_NAME" />“, þannig að þú verður ófær um að afturkalla þessa aðgerð.</translation>
 <translation id="9038620279323455325">Skrá með heitið „<ph name="FILE_NAME" />“ er þegar til staðar. Veldu annað heiti.</translation>
-<translation id="9064939804718829769">Flytur...</translation>
 <translation id="9065203028668620118">Breyta</translation>
 <translation id="908378762078012445">Rússneska með AATSEEL-hljóðritunarlyklaborði</translation>
 <translation id="9099674669267916096">Síðufjöldi</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_it.xtb b/ui/chromeos/translations/ui_chromeos_strings_it.xtb
index 9d6dbfc..a36d5c6 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_it.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_it.xtb
@@ -31,7 +31,6 @@
 <translation id="1293556467332435079">File</translation>
 <translation id="1297922636971898492">Google Drive non è al momento disponibile. Il caricamento riprenderà automaticamente una volta che Google Drive sarà tornato operativo.</translation>
 <translation id="1307931752636661898">Impossibile visualizzare i file di Linux</translation>
-<translation id="1338950911836659113">Eliminazione in corso...</translation>
 <translation id="1346748346194534595">Destra</translation>
 <translation id="1351692861129622852">Importazione di <ph name="FILE_COUNT" /> file...</translation>
 <translation id="1358735829858566124">Il file o la directory non è utilizzabile.</translation>
@@ -43,7 +42,6 @@
 <translation id="1430915738399379752">Stampa</translation>
 <translation id="1435838927755162558">Condividi cartella con Parallels Desktop</translation>
 <translation id="1439494416798956626">Spostamento in <ph name="FOLDER_NAME" /> eseguito.</translation>
-<translation id="1464724975715666883">Un errore.</translation>
 <translation id="1467432559032391204">Sinistra</translation>
 <translation id="1471718551822868769">Slovacco</translation>
 <translation id="1474339897586437869">Impossibile caricare "<ph name="FILENAME" />". Lo spazio disponibile su Google Drive non è sufficiente.</translation>
@@ -226,11 +224,9 @@
 <translation id="3455931012307786678">Estone</translation>
 <translation id="3466147780910026086">Scansione del dispositivo multimediale...</translation>
 <translation id="3468522857997926824">Backup di <ph name="FILE_COUNT" /> foto su <ph name="BEGIN_LINK" />Google Drive<ph name="END_LINK" /> completato</translation>
-<translation id="3470502288861289375">Copia...</translation>
 <translation id="3473378059788601120">Copia in <ph name="FOLDER_NAME" /> eseguita.</translation>
 <translation id="3475447146579922140">Foglio di calcolo Google</translation>
 <translation id="3486821258960016770">Mongolo</translation>
-<translation id="3495304270784461826"><ph name="COUNT" /> errori.</translation>
 <translation id="3522708245912499433">Portoghese</translation>
 <translation id="3524311639100184459">Attenzione: questi file sono temporanei e potrebbero essere eliminati automaticamente per liberare spazio su disco.  <ph name="BEGIN_LINK" />Ulteriori informazioni<ph name="END_LINK" /></translation>
 <translation id="3527085408025491307">Cartella</translation>
@@ -240,7 +236,6 @@
 <translation id="357479282490346887">Lituano</translation>
 <translation id="3603385196401704894">Francese canadese</translation>
 <translation id="3606220979431771195">Turco F</translation>
-<translation id="3609785682760573515">Sincronizzazione in corso...</translation>
 <translation id="3616113530831147358">Audio</translation>
 <translation id="3619115746895587757">Cappuccino</translation>
 <translation id="3620292326130836921">Backup di tutti i contenuti completato.</translation>
@@ -532,7 +527,6 @@
 <translation id="6657585470893396449">Password</translation>
 <translation id="6673674183150363784">Francese (Francia) con tastiera Bépo</translation>
 <translation id="6710213216561001401">Precedente</translation>
-<translation id="6718273304615422081">Compressione...</translation>
 <translation id="6751256176799620176">1 cartella selezionata</translation>
 <translation id="6790428901817661496">Riproduci</translation>
 <translation id="6795884519221689054">Panda</translation>
@@ -732,7 +726,6 @@
 <translation id="8600173386174225982">L'elenco dei file è stato modificato in visualizzazione miniatura.</translation>
 <translation id="8601932370724196034">File immagine Crostini</translation>
 <translation id="8609695766746872526">Islandese</translation>
-<translation id="8669949407341943408">Spostamento...</translation>
 <translation id="8698464937041809063">Disegno Google</translation>
 <translation id="8712637175834984815">Fatto</translation>
 <translation id="8713112442029511308">Maltese</translation>
@@ -755,7 +748,6 @@
 <translation id="9034924485347205037">File Linux</translation>
 <translation id="9035012421917565900">Non è possibile spostare di nuovo gli elementi in "<ph name="DESTINATION_NAME" />", quindi non potrai annullare questa azione.</translation>
 <translation id="9038620279323455325">Esiste già un file chiamato "<ph name="FILE_NAME" />". Scegli un altro nome.</translation>
-<translation id="9064939804718829769">Trasferimento in corso...</translation>
 <translation id="9065203028668620118">Modifica</translation>
 <translation id="908378762078012445">Russo con tastiera fonetica AATSEEL</translation>
 <translation id="9099674669267916096">Numero di pagine</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_iw.xtb b/ui/chromeos/translations/ui_chromeos_strings_iw.xtb
index 3fba416..14318f17 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_iw.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_iw.xtb
@@ -31,7 +31,6 @@
 <translation id="1293556467332435079">קבצים</translation>
 <translation id="1297922636971898492">‏Google Drive אינו זמין כעת. ההעלאה תופעל מחדש באופן אוטומטי לאחר ש-Google Drive יחזור לפעול.</translation>
 <translation id="1307931752636661898">‏לא ניתן להציג קובצי Linux</translation>
-<translation id="1338950911836659113">המחיקה מתבצעת...</translation>
 <translation id="1346748346194534595">ימינה</translation>
 <translation id="1351692861129622852">מתבצע ייבוא של <ph name="FILE_COUNT" /> קבצים...</translation>
 <translation id="1358735829858566124">לא ניתן להשתמש בקובץ או בספרייה.</translation>
@@ -43,7 +42,6 @@
 <translation id="1430915738399379752">הדפסה</translation>
 <translation id="1435838927755162558">‏שיתוף תיקייה באמצעות Parallels Desktop</translation>
 <translation id="1439494416798956626">הועבר אל <ph name="FOLDER_NAME" />.</translation>
-<translation id="1464724975715666883">שגיאה אחת.</translation>
 <translation id="1467432559032391204">שמאלה</translation>
 <translation id="1471718551822868769">סלובקית</translation>
 <translation id="1474339897586437869">‏הקובץ "<ph name="FILENAME" />" לא הועלה. אין לך מספיק שטח פנוי ב-Google Drive.</translation>
@@ -226,11 +224,9 @@
 <translation id="3455931012307786678">אסטונית</translation>
 <translation id="3466147780910026086">מתבצעת סריקה של מכשיר המדיה...</translation>
 <translation id="3468522857997926824">‏<ph name="FILE_COUNT" /> תמונות גובו ב-<ph name="BEGIN_LINK" />Google Drive<ph name="END_LINK" /></translation>
-<translation id="3470502288861289375">ההעתקה מתבצעת...</translation>
 <translation id="3473378059788601120">הועתק אל <ph name="FOLDER_NAME" />.</translation>
 <translation id="3475447146579922140">‏גיליון אלקטרוני של Google</translation>
 <translation id="3486821258960016770">מונגולית</translation>
-<translation id="3495304270784461826"><ph name="COUNT" /> שגיאות.</translation>
 <translation id="3522708245912499433">פורטוגזית</translation>
 <translation id="3524311639100184459">זהירות: הקבצים האלה זמניים, וייתכן שהם יימחקו באופן אוטומטי כדי לפנות מקום בכונן.  <ph name="BEGIN_LINK" />מידע נוסף<ph name="END_LINK" /></translation>
 <translation id="3527085408025491307">תיקייה</translation>
@@ -240,7 +236,6 @@
 <translation id="357479282490346887">ליטאית</translation>
 <translation id="3603385196401704894">צרפתית קנדית</translation>
 <translation id="3606220979431771195">‏טורקית-F</translation>
-<translation id="3609785682760573515">הסנכרון מתבצע...</translation>
 <translation id="3616113530831147358">אודיו</translation>
 <translation id="3619115746895587757">קפוצ'ינו</translation>
 <translation id="3620292326130836921">הכול מגובה!</translation>
@@ -534,7 +529,6 @@
 <translation id="6657585470893396449">סיסמה</translation>
 <translation id="6673674183150363784">‏צרפתית (צרפת) עם מקלדת Bépo</translation>
 <translation id="6710213216561001401">הקודם</translation>
-<translation id="6718273304615422081">הדחיסה מתבצעת...</translation>
 <translation id="6751256176799620176">תיקייה אחת נבחרה</translation>
 <translation id="6790428901817661496">הפעלה</translation>
 <translation id="6795884519221689054">פנדה</translation>
@@ -734,7 +728,6 @@
 <translation id="8600173386174225982">רשימת הקבצים מוצגת עכשיו בתצוגת תמונות ממוזערות.</translation>
 <translation id="8601932370724196034">‏קובץ תמונה Crostini</translation>
 <translation id="8609695766746872526">איסלנדית</translation>
-<translation id="8669949407341943408">ההעברה מתבצעת...</translation>
 <translation id="8698464937041809063">‏איור של Google</translation>
 <translation id="8712637175834984815">הבנתי</translation>
 <translation id="8713112442029511308">מלטזית</translation>
@@ -757,7 +750,6 @@
 <translation id="9034924485347205037">‏קובצי Linux</translation>
 <translation id="9035012421917565900">לא ניתן להחזיר את הפריטים אל '<ph name="DESTINATION_NAME" />', ולא ניתן לבטל את הפעולה.</translation>
 <translation id="9038620279323455325">הקובץ שנקרא "<ph name="FILE_NAME" />" כבר קיים. יש לבחור שם אחר.</translation>
-<translation id="9064939804718829769">ההעברה מתבצעת...</translation>
 <translation id="9065203028668620118">עריכה</translation>
 <translation id="908378762078012445">‏רוסית עם מקלדת פונטית AATSEEL</translation>
 <translation id="9099674669267916096">מספר עמודים</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_ja.xtb b/ui/chromeos/translations/ui_chromeos_strings_ja.xtb
index d717714..eb68581f 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_ja.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_ja.xtb
@@ -31,7 +31,6 @@
 <translation id="1293556467332435079">ファイル</translation>
 <translation id="1297922636971898492">Google ドライブは現在ご利用いただけません。Google ドライブが利用可能になったときに、自動的にアップロードを再開します。</translation>
 <translation id="1307931752636661898">[Linux ファイル] を表示できません</translation>
-<translation id="1338950911836659113">削除しています...</translation>
 <translation id="1346748346194534595">右</translation>
 <translation id="1351692861129622852"><ph name="FILE_COUNT" /> 件のファイルをインポートしています...</translation>
 <translation id="1358735829858566124">このファイルまたはディレクトリは使用できません。</translation>
@@ -43,7 +42,6 @@
 <translation id="1430915738399379752">印刷</translation>
 <translation id="1435838927755162558">Parallels Desktop とのフォルダ共有</translation>
 <translation id="1439494416798956626">「<ph name="FOLDER_NAME" />」に移動しました。</translation>
-<translation id="1464724975715666883">1 件のエラーがあります。</translation>
 <translation id="1467432559032391204">左</translation>
 <translation id="1471718551822868769">スロバキア語</translation>
 <translation id="1474339897586437869">「<ph name="FILENAME" />」はアップロードされていません。Google ドライブに十分な空き容量がありません。</translation>
@@ -226,11 +224,9 @@
 <translation id="3455931012307786678">エストニア語</translation>
 <translation id="3466147780910026086">ご利用のメディア デバイスをスキャンしています...</translation>
 <translation id="3468522857997926824"><ph name="FILE_COUNT" /> 枚の写真を <ph name="BEGIN_LINK" />Google ドライブ<ph name="END_LINK" />にバックアップしました</translation>
-<translation id="3470502288861289375">コピーしています...</translation>
 <translation id="3473378059788601120">「<ph name="FOLDER_NAME" />」にコピーしました。</translation>
 <translation id="3475447146579922140">Google スプレッドシート</translation>
 <translation id="3486821258960016770">モンゴル語</translation>
-<translation id="3495304270784461826"><ph name="COUNT" /> 件のエラーがあります。</translation>
 <translation id="3522708245912499433">ポルトガル語</translation>
 <translation id="3524311639100184459">注: これらのファイルは一時的なもので、ディスクの空き容量を増やすために自動的に削除されることがあります。<ph name="BEGIN_LINK" />詳細<ph name="END_LINK" /></translation>
 <translation id="3527085408025491307">フォルダ</translation>
@@ -240,7 +236,6 @@
 <translation id="357479282490346887">リトアニア語</translation>
 <translation id="3603385196401704894">フランス語(カナダ)</translation>
 <translation id="3606220979431771195">トルコ語-F</translation>
-<translation id="3609785682760573515">同期しています...</translation>
 <translation id="3616113530831147358">音声</translation>
 <translation id="3619115746895587757">カプチーノ</translation>
 <translation id="3620292326130836921">すべてバックアップ済みです。</translation>
@@ -533,7 +528,6 @@
 <translation id="6657585470893396449">パスワード</translation>
 <translation id="6673674183150363784">フランス語(フランス)(BÉPO)キーボード</translation>
 <translation id="6710213216561001401">前へ</translation>
-<translation id="6718273304615422081">圧縮しています...</translation>
 <translation id="6751256176799620176">1 個のフォルダを選択しました</translation>
 <translation id="6790428901817661496">再生</translation>
 <translation id="6795884519221689054">パンダ</translation>
@@ -733,7 +727,6 @@
 <translation id="8600173386174225982">ファイルの一覧がサムネイル表示に切り替わりました。</translation>
 <translation id="8601932370724196034">Crostini 画像ファイル</translation>
 <translation id="8609695766746872526">アイスランド語</translation>
-<translation id="8669949407341943408">移動しています...</translation>
 <translation id="8698464937041809063">Google 図形描画</translation>
 <translation id="8712637175834984815">閉じる</translation>
 <translation id="8713112442029511308">マルタ語</translation>
@@ -756,7 +749,6 @@
 <translation id="9034924485347205037">Linux ファイル</translation>
 <translation id="9035012421917565900">この操作は元に戻せません(これらのアイテムを「<ph name="DESTINATION_NAME" />」に戻すことはできません)。</translation>
 <translation id="9038620279323455325">「<ph name="FILE_NAME" />」という名前のファイルはすでに存在します。別の名前を選択してください。</translation>
-<translation id="9064939804718829769">処理しています...</translation>
 <translation id="9065203028668620118">編集</translation>
 <translation id="908378762078012445">ロシア語(表音 AATSEEL)キーボード</translation>
 <translation id="9099674669267916096">ページ数</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_ka.xtb b/ui/chromeos/translations/ui_chromeos_strings_ka.xtb
index 2a161a30..ffb0c48 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_ka.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_ka.xtb
@@ -31,7 +31,6 @@
 <translation id="1293556467332435079">ფაილები</translation>
 <translation id="1297922636971898492">Google Drive ამჟამად მიუწვდომელია. ატვირთვა ავტომატურად განახლდება Google Drive-ის დაბრუნების შემდეგ.</translation>
 <translation id="1307931752636661898">Linux ფაილების ნახვა ვერ ხერხდება</translation>
-<translation id="1338950911836659113">წაშლა…</translation>
 <translation id="1346748346194534595">მარჯვნივ</translation>
 <translation id="1351692861129622852">მიმდინარეობს <ph name="FILE_COUNT" /> ფაილის იმპორტი…</translation>
 <translation id="1358735829858566124">ფაილი ან დირექტორია არ არის გამოყენებადი.</translation>
@@ -43,7 +42,6 @@
 <translation id="1430915738399379752">ბეჭდვა</translation>
 <translation id="1435838927755162558">საქაღალდის გაზიარება Parallels Desktop-თან</translation>
 <translation id="1439494416798956626">გადატანილია „<ph name="FOLDER_NAME" />“-ში.</translation>
-<translation id="1464724975715666883">1 შეცდომა.</translation>
 <translation id="1467432559032391204">მარცხენა</translation>
 <translation id="1471718551822868769">სლოვაკური</translation>
 <translation id="1474339897586437869">„<ph name="FILENAME" />“ ვერ აიტვირთა. თქვენს Google Drive-ზე არ არის საკმარისი თავისუფალი მეხსიერება.</translation>
@@ -226,11 +224,9 @@
 <translation id="3455931012307786678">ესტონური</translation>
 <translation id="3466147780910026086">მიმდინარეობს მედია მოწყობილობის სკანერება…</translation>
 <translation id="3468522857997926824"><ph name="FILE_COUNT" /> ფოტოს სარეზერვო ასლი შენახულია <ph name="BEGIN_LINK" />Google Drive<ph name="END_LINK" />-ში</translation>
-<translation id="3470502288861289375">კოპირება…</translation>
 <translation id="3473378059788601120">კოპირებულია „<ph name="FOLDER_NAME" />“-ში.</translation>
 <translation id="3475447146579922140">Google ის ელ.ცხრილი</translation>
 <translation id="3486821258960016770">მონღოლური</translation>
-<translation id="3495304270784461826"><ph name="COUNT" /> შეცდომა.</translation>
 <translation id="3522708245912499433">პორტუგალიური</translation>
 <translation id="3524311639100184459">გაფრთხილება: ეს ფაილები დროებითია და შეიძლება ავტომატურად წაიშალოს დისკზე ადგილის გასათავისუფლებლად.  <ph name="BEGIN_LINK" />შეიტყვეთ მეტი<ph name="END_LINK" /></translation>
 <translation id="3527085408025491307">საქაღალდე</translation>
@@ -240,7 +236,6 @@
 <translation id="357479282490346887">ლიტვური</translation>
 <translation id="3603385196401704894">კანადური ფრანგული</translation>
 <translation id="3606220979431771195">თურქული-F</translation>
-<translation id="3609785682760573515">სინქრონიზაცია…</translation>
 <translation id="3616113530831147358">აუდიო</translation>
 <translation id="3619115746895587757">კაპუჩინო</translation>
 <translation id="3620292326130836921">ყველაფერი გადატანილია სარეზერვო მეხსიერებაში!</translation>
@@ -532,7 +527,6 @@
 <translation id="6657585470893396449">პაროლი</translation>
 <translation id="6673674183150363784">ფრანგული (საფრანგეთი) Bépo კლავიატურით</translation>
 <translation id="6710213216561001401">წინა</translation>
-<translation id="6718273304615422081">დაარქივება…</translation>
 <translation id="6751256176799620176">არჩეულია 1 საქაღალდე</translation>
 <translation id="6790428901817661496">დაკვრა</translation>
 <translation id="6795884519221689054">პანდა</translation>
@@ -732,7 +726,6 @@
 <translation id="8600173386174225982">ფაილების სია ნაჩვენებია ესკიზების ხედში.</translation>
 <translation id="8601932370724196034">Crostini იმიჯის ფაილი</translation>
 <translation id="8609695766746872526">ისლანდიური</translation>
-<translation id="8669949407341943408">გადატანა...</translation>
 <translation id="8698464937041809063">Google ნახაზი</translation>
 <translation id="8712637175834984815">კარგი</translation>
 <translation id="8713112442029511308">მალტური</translation>
@@ -755,7 +748,6 @@
 <translation id="9034924485347205037">Linux ფაილები</translation>
 <translation id="9035012421917565900">ერთეულები „<ph name="DESTINATION_NAME" />“-ში ვეღარ დაბრუნდება, რაც ნიშნავს, რომ ამ მოქმედებას ვერ გააუქმებთ.</translation>
 <translation id="9038620279323455325">ფაილი სახელად „<ph name="FILE_NAME" />“ უკვე არსებობს. გთხოვთ, აირჩიოთ სხვა სახელი.</translation>
-<translation id="9064939804718829769">გადაცემა…</translation>
 <translation id="9065203028668620118">რედაქტირება</translation>
 <translation id="908378762078012445">რუსული ფონეტიკური AATSEEL კლავიატურით</translation>
 <translation id="9099674669267916096">გვერდების რაოდენობა</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_kk.xtb b/ui/chromeos/translations/ui_chromeos_strings_kk.xtb
index 55e6aa9..2a037f7 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_kk.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_kk.xtb
@@ -31,7 +31,6 @@
 <translation id="1293556467332435079">Файлдар</translation>
 <translation id="1297922636971898492">Google Drive қазір қолжетімді емес. Google Drive қосылғаннан кейін, жүктеп салу процесі автоматты түрде басталады.</translation>
 <translation id="1307931752636661898">Linux файлдарын көру мүмкін емес</translation>
-<translation id="1338950911836659113">Жойылуда…</translation>
 <translation id="1346748346194534595">Оңға</translation>
 <translation id="1351692861129622852"><ph name="FILE_COUNT" /> файл импортталуда…</translation>
 <translation id="1358735829858566124">Файл немесе каталог пайдаланылмайды.</translation>
@@ -43,7 +42,6 @@
 <translation id="1430915738399379752">Басып шығару</translation>
 <translation id="1435838927755162558">Қалтаны Parallels Desktop арқылы бөлісу</translation>
 <translation id="1439494416798956626"><ph name="FOLDER_NAME" /> қалтасына ауыстырылды.</translation>
-<translation id="1464724975715666883">1 қате.</translation>
 <translation id="1467432559032391204">Сол жақ</translation>
 <translation id="1471718551822868769">Словак</translation>
 <translation id="1474339897586437869">"<ph name="FILENAME" />" жүктелген жоқ. Google Drive дискінде жеткілікті орын жоқ.</translation>
@@ -226,11 +224,9 @@
 <translation id="3455931012307786678">Эстон</translation>
 <translation id="3466147780910026086">Мультимедиа құрылғыңыз тексерілуде…</translation>
 <translation id="3468522857997926824"><ph name="FILE_COUNT" /> фотосуреттің сақтық көшірмесі <ph name="BEGIN_LINK" />Google Drive<ph name="END_LINK" /> ішіне сақталды</translation>
-<translation id="3470502288861289375">Көшіруде…</translation>
 <translation id="3473378059788601120"><ph name="FOLDER_NAME" /> қалтасына көшірілді.</translation>
 <translation id="3475447146579922140">Google электрондық кестесі</translation>
 <translation id="3486821258960016770">Моңғол</translation>
-<translation id="3495304270784461826"><ph name="COUNT" /> қате.</translation>
 <translation id="3522708245912499433">португал</translation>
 <translation id="3524311639100184459">Абайлаңыз: бұл файлдар уақытша және дискідегі орынды босату үшін автоматты түрде жойылуы мүмкін.  <ph name="BEGIN_LINK" />Толығырақ<ph name="END_LINK" /></translation>
 <translation id="3527085408025491307">Қалта</translation>
@@ -240,7 +236,6 @@
 <translation id="357479282490346887">литва</translation>
 <translation id="3603385196401704894">Француз (Канадалық)</translation>
 <translation id="3606220979431771195">Turkish-F</translation>
-<translation id="3609785682760573515">Синхрондау…</translation>
 <translation id="3616113530831147358">Аудио</translation>
 <translation id="3619115746895587757">Капучино</translation>
 <translation id="3620292326130836921">Барлығының сақтық көшірмесі жасалған!</translation>
@@ -532,7 +527,6 @@
 <translation id="6657585470893396449">Құпия сөз</translation>
 <translation id="6673674183150363784">Француз (Франция, Bépo пернетақтасымен)</translation>
 <translation id="6710213216561001401">Алдыңғы</translation>
-<translation id="6718273304615422081">Қысылуда…</translation>
 <translation id="6751256176799620176">1 қалта таңдалды</translation>
 <translation id="6790428901817661496">Ойнату</translation>
 <translation id="6795884519221689054">Панда</translation>
@@ -732,7 +726,6 @@
 <translation id="8600173386174225982">Файлдар нобай ретінде көрсетілді.</translation>
 <translation id="8601932370724196034">Crostini кескін файлы</translation>
 <translation id="8609695766746872526">Исланд</translation>
-<translation id="8669949407341943408">Жылжытылуда…</translation>
 <translation id="8698464937041809063">Google суреті</translation>
 <translation id="8712637175834984815">Түсінікті</translation>
 <translation id="8713112442029511308">Мальта</translation>
@@ -755,7 +748,6 @@
 <translation id="9034924485347205037">Linux файлдары</translation>
 <translation id="9035012421917565900">Файлдар "<ph name="DESTINATION_NAME" />" қалтасына қайта көшірілмейді, сондықтан бұл қадамды кері қайтару мүмкін емес.</translation>
 <translation id="9038620279323455325">"<ph name="FILE_NAME" />" файлы бұрыннан бар. Басқа атау таңдаңыз.</translation>
-<translation id="9064939804718829769">Тасымалдануда…</translation>
 <translation id="9065203028668620118">Өзгерту</translation>
 <translation id="908378762078012445">Орыс (фонетикалық AATSEEL пернетақтасымен)</translation>
 <translation id="9099674669267916096">Бет саны</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_km.xtb b/ui/chromeos/translations/ui_chromeos_strings_km.xtb
index e8f09b2..3984695 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_km.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_km.xtb
@@ -31,7 +31,6 @@
 <translation id="1293556467332435079">ឯកសារ</translation>
 <translation id="1297922636971898492">Google Drive មិនមានទេឥឡូវនេះ។ ការទាញឡើងនឹងចាប់ផ្តើមឡើងវិញដោយស្វ័យប្រវត្តិនៅពេល Google Drive ត្រលប់មកវិញ។</translation>
 <translation id="1307931752636661898">មិនអាច​មើល​ឯកសារ Linux បានទេ</translation>
-<translation id="1338950911836659113">កំពុងលុប...</translation>
 <translation id="1346748346194534595">ស្តាំ</translation>
 <translation id="1351692861129622852">កំពុងនាំចូលឯកសារ <ph name="FILE_COUNT" /> ...</translation>
 <translation id="1358735829858566124">ឯកសារ ឬថតឯកសារមិនអាចប្រើបានទេ។</translation>
@@ -43,7 +42,6 @@
 <translation id="1430915738399379752">បោះពុម្ព</translation>
 <translation id="1435838927755162558">ចែករំលែក​ថត​ជាមួយ Parallels Desktop</translation>
 <translation id="1439494416798956626">បាន​ផ្លាស់ទីទៅ <ph name="FOLDER_NAME" /> ។</translation>
-<translation id="1464724975715666883">កំហុសឆ្គងមួយ 1។</translation>
 <translation id="1467432559032391204">ឆ្វេង</translation>
 <translation id="1471718551822868769">ភាសា​ស្លូវ៉ាគី</translation>
 <translation id="1474339897586437869">"<ph name="FILENAME" />" មិនត្រូវបានអាប់ឡូតទេ ពីព្រោះមិនមានទំហំផ្ទុកគ្រប់គ្រាន់នៅក្នុង Google ថាសរបស់អ្នក។</translation>
@@ -226,11 +224,9 @@
 <translation id="3455931012307786678">ភាសា​អេស្តូនី</translation>
 <translation id="3466147780910026086">កំពុងស្កេនឯកសារកំសាន្តរបស់អ្នក...</translation>
 <translation id="3468522857997926824">រូបថតចំនួន<ph name="FILE_COUNT" /> បានបម្រុងទុកទៅក្នុង <ph name="BEGIN_LINK" />Google Drive<ph name="END_LINK" /></translation>
-<translation id="3470502288861289375">កំពុងចម្លង...</translation>
 <translation id="3473378059788601120">បានចម្លងទៅ <ph name="FOLDER_NAME" /> ។</translation>
 <translation id="3475447146579922140">Google សៀវភៅបញ្ជី</translation>
 <translation id="3486821258960016770">ភាសា​ម៉ុងហ្គោលី</translation>
-<translation id="3495304270784461826"><ph name="COUNT" /> កំហុសឆ្គង។</translation>
 <translation id="3522708245912499433">ភាសាប៉ទុយកាល់</translation>
 <translation id="3524311639100184459">ប្រុងប្រយ័ត្ន៖ ឯកសារទាំងនេះ​គឺជាឯកសារ​បណ្ដោះអាសន្ន និងអាចត្រូវបានលុប​ដោយស្វ័យប្រវត្តិ ដើម្បីបង្កើន​ទំហំផ្ទុកថាស។  <ph name="BEGIN_LINK" />ស្វែងយល់បន្ថែម<ph name="END_LINK" /></translation>
 <translation id="3527085408025491307">ថតឯកសារ</translation>
@@ -240,7 +236,6 @@
 <translation id="357479282490346887">ភាសាលីទុយអានី</translation>
 <translation id="3603385196401704894">ភាសាបារាំងកាណាដា</translation>
 <translation id="3606220979431771195">តួកគី-F</translation>
-<translation id="3609785682760573515">កំពុងធ្វើសមកម្ម...</translation>
 <translation id="3616113530831147358">សម្លេង</translation>
 <translation id="3619115746895587757">កាពូឈីណូ</translation>
 <translation id="3620292326130836921">បានបម្រុងទុកអស់ហើយ!</translation>
@@ -532,7 +527,6 @@
 <translation id="6657585470893396449">ពាក្យសម្ងាត់</translation>
 <translation id="6673674183150363784">ភាសា​បារាំង (បារាំង) ដែលប្រើ​ក្ដារចុច Bépo</translation>
 <translation id="6710213216561001401">មុន</translation>
-<translation id="6718273304615422081">កំពុងបង្រួម...</translation>
 <translation id="6751256176799620176">បានជ្រើសថតឯកសារ 1</translation>
 <translation id="6790428901817661496">លេង</translation>
 <translation id="6795884519221689054">ខ្លាឃ្មុំ​ផេនដា</translation>
@@ -732,7 +726,6 @@
 <translation id="8600173386174225982">បញ្ជីឯកសារ​បានប្ដូរទៅទិដ្ឋភាព​រូបភាពតូចៗ។</translation>
 <translation id="8601932370724196034">ឯកសារ​រូបភាព Crostini</translation>
 <translation id="8609695766746872526">ភាសា​អ៊ីស្លង់</translation>
-<translation id="8669949407341943408">កំពុងផ្លាស់ទី...</translation>
 <translation id="8698464937041809063">គំនូរ Google</translation>
 <translation id="8712637175834984815">យល់ហើយ</translation>
 <translation id="8713112442029511308">ភាសា​ម៉ាល់តា</translation>
@@ -755,7 +748,6 @@
 <translation id="9034924485347205037">ឯកសារ Linux</translation>
 <translation id="9035012421917565900">ធាតុ​ទាំងនេះ​មិនអាច​ផ្លាស់ទី​ទៅក្នុង '<ph name="DESTINATION_NAME" />' បានទេ ដូច្នេះ​អ្នកនឹង​មិនអាច​ត្រឡប់​សកម្មភាព​នេះវិញ​បានទេ។</translation>
 <translation id="9038620279323455325">ឯកសារដែល​ដាក់ឈ្មោះ "<ph name="FILE_NAME" />" មានរួចហើយ។ សូមជ្រើសរើស​ឈ្មោះផ្សេង។</translation>
-<translation id="9064939804718829769">កំពុងផ្ទេរ...</translation>
 <translation id="9065203028668620118">កែប្រែ</translation>
 <translation id="908378762078012445">ភាសារុស្ស៊ី​ដែលប្រើ​ក្ដារចុចតាម​សូរសព្ទ AATSEEL</translation>
 <translation id="9099674669267916096">ចំនួន​ទំព័រ</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_kn.xtb b/ui/chromeos/translations/ui_chromeos_strings_kn.xtb
index 1e1232bc..5dd28ef0 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_kn.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_kn.xtb
@@ -27,7 +27,6 @@
 <translation id="1293556467332435079">Files</translation>
 <translation id="1297922636971898492">Google ಡ್ರೈವ್‌ ಇದೀಗ ಲಭ್ಯವಿಲ್ಲ. Google ಡ್ರೈವ್‌ ಒಮ್ಮೆ ಹಿಂತಿರುಗಿದರೆ ಅಪ್‌ಲೋಡ್‌ ಆಗುವುದು ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಮರುಪ್ರಾರಂಭಗೊಳ್ಳುತ್ತದೆ.</translation>
 <translation id="1307931752636661898">Linux ಫೈಲ್‌ಗಳನ್ನು ವೀಕ್ಷಿಸಲು ಸಾಧ್ಯವಾಗುತ್ತಿಲ್ಲ</translation>
-<translation id="1338950911836659113">ಅಳಿಸಲಾಗುತ್ತಿದೆ...</translation>
 <translation id="1346748346194534595">ಬಲಕ್ಕೆ</translation>
 <translation id="1351692861129622852"><ph name="FILE_COUNT" /> ಫೈಲ್‌ಗಳನ್ನು ಆಮದು ಮಾಡಲಾಗುತ್ತಿದೆ...</translation>
 <translation id="1358735829858566124">ಫೈಲ್ ಅಥವಾ ಡೈರೆಕ್ಟರಿ ಬಳಸಲಾಗುವುದಿಲ್ಲ.</translation>
@@ -39,7 +38,6 @@
 <translation id="1430915738399379752">ಮುದ್ರಿಸು</translation>
 <translation id="1435838927755162558">Parallels Desktop ಮೂಲಕ ಫೋಲ್ಡರ್ ಹಂಚಿಕೊಳ್ಳಿ</translation>
 <translation id="1439494416798956626"><ph name="FOLDER_NAME" /> ಗೆ ಸರಿಸಲಾಗಿದೆ.</translation>
-<translation id="1464724975715666883">1 ದೋಷ.</translation>
 <translation id="1467432559032391204">ಎಡಕ್ಕೆ</translation>
 <translation id="1471718551822868769">ಸ್ಲೋವೇಕ್</translation>
 <translation id="1474339897586437869">"<ph name="FILENAME" />" ಅನ್ನು ಅಪ್‌ಲೋಡ್ ಮಾಡಲಾಗಿಲ್ಲ. ನಿಮ್ಮ Google ಡ್ರೈವ್‌ನಲ್ಲಿ ಸಾಕಷ್ಟು ಸ್ಥಳಾವಕಾಶವಿಲ್ಲ.</translation>
@@ -222,11 +220,9 @@
 <translation id="3455931012307786678">ಎಸ್ಟೋನಿಯನ್</translation>
 <translation id="3466147780910026086">ನಿಮ್ಮ ಮಾಧ್ಯಮ ಸಾಧನವನ್ನು ಸ್ಕ್ಯಾನ್ ಮಾಡಲಾಗುತ್ತಿದೆ...</translation>
 <translation id="3468522857997926824"><ph name="BEGIN_LINK" />Google ಡ್ರೈವ್<ph name="END_LINK" /> ಗೆ <ph name="FILE_COUNT" /> ಫೋಟೋಗಳನ್ನು ಬ್ಯಾಕಪ್ ಮಾಡಲಾಗಿದೆ</translation>
-<translation id="3470502288861289375">ನಕಲಿಸಲಾಗುತ್ತಿದೆ...</translation>
 <translation id="3473378059788601120"><ph name="FOLDER_NAME" /> ಗೆ ನಕಲಿಸಲಾಗಿದೆ.</translation>
 <translation id="3475447146579922140">Google ಸ್ಪ್ರೆಡ್‌ಶೀಟ್‌</translation>
 <translation id="3486821258960016770">ಮಂಗೋಲಿಯನ್</translation>
-<translation id="3495304270784461826"><ph name="COUNT" /> ದೋಷಗಳು.</translation>
 <translation id="3522708245912499433">ಪೋರ್ಚುಗೀಸ್</translation>
 <translation id="3524311639100184459">ಎಚ್ಚರಿಕೆ: ಈ ಫೈಲ್‌ಗಳು ತಾತ್ಕಾಲಿಕವಾಗಿರುತ್ತವೆ ಹಾಗೂ ಡಿಸ್ಕ್ ಸ್ಥಳವನ್ನು ಮುಕ್ತಗೊಳಿಸಲು ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಅವುಗಳನ್ನು ಅಳಿಸಬಹುದು.  <ph name="BEGIN_LINK" />ಇನ್ನಷ್ಟು ತಿಳಿಯಿರಿ<ph name="END_LINK" /></translation>
 <translation id="3527085408025491307">ಫೋಲ್ಡರ್</translation>
@@ -236,7 +232,6 @@
 <translation id="357479282490346887">ಲಿಥುವಾನಿಯನ್</translation>
 <translation id="3603385196401704894">ಕೆನೆಡಿಯನ್ ಫ್ರೆಂಚ್</translation>
 <translation id="3606220979431771195">ಟರ್ಕಿಶ್‌-F</translation>
-<translation id="3609785682760573515">ಸಿಂಕ್‌ ಮಾಡಲಾಗುತ್ತಿದೆ...</translation>
 <translation id="3616113530831147358">ಆಡಿಯೋ</translation>
 <translation id="3619115746895587757">ಕ್ಯಾಪಚಿನೊ</translation>
 <translation id="3620292326130836921">ಎಲ್ಲವನ್ನೂ ಬ್ಯಾಕಪ್ ಮಾಡಲಾಗಿದೆ!</translation>
@@ -529,7 +524,6 @@
 <translation id="6657585470893396449">ಪಾಸ್‌ವರ್ಡ್</translation>
 <translation id="6673674183150363784">ಬೆಪೊ ಕೀಬೋರ್ಡ್‌ನಲ್ಲಿ ಫ್ರೆಂಚ್ (ಫ್ರಾನ್ಸ್)</translation>
 <translation id="6710213216561001401">ಹಿಂದಿನದು</translation>
-<translation id="6718273304615422081">ಜಿಪ್ ಮಾಡಲಾಗುತ್ತಿದೆ...</translation>
 <translation id="6751256176799620176">1 ಫೋಲ್ಡರ್ ಆಯ್ಕೆಮಾಡಲಾಗಿದೆ</translation>
 <translation id="6790428901817661496">ಪ್ಲೇ ಮಾಡು</translation>
 <translation id="6795884519221689054">ಪಾಂಡಾ</translation>
@@ -721,7 +715,6 @@
 <translation id="8600173386174225982">ಫೈಲ್ ಪಟ್ಟಿಯನ್ನು, ಥಂಬ್‌ನೇಲ್ ವೀಕ್ಷಣೆಗೆ ಬದಲಿಸಲಾಗಿದೆ.</translation>
 <translation id="8601932370724196034">Crostini ಚಿತ್ರದ ಫೈಲ್</translation>
 <translation id="8609695766746872526">ಐಸ್‌ಲ್ಯಾಂಡಿಕ್</translation>
-<translation id="8669949407341943408">ಸರಿಸಲಾಗುತ್ತಿದೆ...</translation>
 <translation id="8698464937041809063">Google ರೇಖಾಚಿತ್ರ</translation>
 <translation id="8712637175834984815">ಅರ್ಥವಾಯಿತು</translation>
 <translation id="8713112442029511308">ಮಾಲ್ಟೇಸ್</translation>
@@ -744,7 +737,6 @@
 <translation id="9034924485347205037">Linux ಫೈಲ್‌ಗಳು</translation>
 <translation id="9035012421917565900">ಐಟಂಗಳನ್ನು '<ph name="DESTINATION_NAME" />' ಗೆ ಮರಳಿ ಹಿಂತಿರುಗಿಸಲು ಸಾಧ್ಯವಿಲ್ಲ, ಆದ್ದರಿಂದ ನಿಮಗೆ ಈ ಕ್ರಿಯೆಯನ್ನು ರದ್ದುಪಡಿಸಲು ಸಾಧ್ಯವಾಗುವುದಿಲ್ಲ.</translation>
 <translation id="9038620279323455325">"<ph name="FILE_NAME" />" ಹೆಸರಿನ ಫೈಲ್ ಈಗಾಗಲೇ ಇದೆ. ಬೇರೊಂದು ಹೆಸರನ್ನು ಆರಿಸಿ.</translation>
-<translation id="9064939804718829769">ವರ್ಗಾಯಿಸಲಾಗುತ್ತಿದೆ...</translation>
 <translation id="9065203028668620118">ಎಡಿಟ್</translation>
 <translation id="908378762078012445">ಫೋನೆಟಿಕ್ AATSEEL ಕೀಬೋರ್ಡ್‌ನಲ್ಲಿ ರಷ್ಯನ್</translation>
 <translation id="9099674669267916096">ಪುಟ ಎಣಿಕೆ</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_ko.xtb b/ui/chromeos/translations/ui_chromeos_strings_ko.xtb
index 1d7d142..61c8ee6 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_ko.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_ko.xtb
@@ -31,7 +31,6 @@
 <translation id="1293556467332435079">파일</translation>
 <translation id="1297922636971898492">현재 Google 드라이브를 사용할 수 없습니다. Google 드라이브를 다시 사용할 수 있게 되면 자동으로 업로드가 다시 시작됩니다.</translation>
 <translation id="1307931752636661898">Linux 파일을 볼 수 없음</translation>
-<translation id="1338950911836659113">삭제 중...</translation>
 <translation id="1346748346194534595">오른쪽</translation>
 <translation id="1351692861129622852">파일 <ph name="FILE_COUNT" />개를 가져오는 중...</translation>
 <translation id="1358735829858566124">파일 또는 디렉터리를 사용할 수 없습니다.</translation>
@@ -43,7 +42,6 @@
 <translation id="1430915738399379752">인쇄</translation>
 <translation id="1435838927755162558">Parallels Desktop과 폴더 공유</translation>
 <translation id="1439494416798956626"><ph name="FOLDER_NAME" /> 폴더로 이동했습니다.</translation>
-<translation id="1464724975715666883">오류가 1개 있습니다.</translation>
 <translation id="1467432559032391204">왼쪽</translation>
 <translation id="1471718551822868769">슬로바키아어</translation>
 <translation id="1474339897586437869">'<ph name="FILENAME" />'이(가) 업로드되지 않았습니다. Google 드라이브에 충분한 여유 공간이 없습니다.</translation>
@@ -226,11 +224,9 @@
 <translation id="3455931012307786678">에스토니아어</translation>
 <translation id="3466147780910026086">미디어 기기 스캔 중...</translation>
 <translation id="3468522857997926824">사진 <ph name="FILE_COUNT" />장을 <ph name="BEGIN_LINK" />Google 드라이브<ph name="END_LINK" />에 백업</translation>
-<translation id="3470502288861289375">복사 중...</translation>
 <translation id="3473378059788601120"><ph name="FOLDER_NAME" />에 복사되었습니다.</translation>
 <translation id="3475447146579922140">Google 스프레드시트</translation>
 <translation id="3486821258960016770">몽골어</translation>
-<translation id="3495304270784461826">오류가 <ph name="COUNT" />개 있습니다.</translation>
 <translation id="3522708245912499433">포르투갈어</translation>
 <translation id="3524311639100184459">주의: 이 파일은 임시 파일이며 디스크 여유 공간을 확보하기 위해 자동으로 삭제될 수 있습니다.  <ph name="BEGIN_LINK" />자세히 알아보기<ph name="END_LINK" /></translation>
 <translation id="3527085408025491307">폴더</translation>
@@ -240,7 +236,6 @@
 <translation id="357479282490346887">리투아니아어</translation>
 <translation id="3603385196401704894">프랑스어(캐나다)</translation>
 <translation id="3606220979431771195">터키어-F</translation>
-<translation id="3609785682760573515">동기화 중...</translation>
 <translation id="3616113530831147358">오디오</translation>
 <translation id="3619115746895587757">카푸치노</translation>
 <translation id="3620292326130836921">백업되지 않은 파일이 없습니다.</translation>
@@ -533,7 +528,6 @@
 <translation id="6657585470893396449">비밀번호</translation>
 <translation id="6673674183150363784">프랑스어(프랑스, 베포 키보드)</translation>
 <translation id="6710213216561001401">이전</translation>
-<translation id="6718273304615422081">압축 중...</translation>
 <translation id="6751256176799620176">폴더 1개 선택됨</translation>
 <translation id="6790428901817661496">재생</translation>
 <translation id="6795884519221689054">판다</translation>
@@ -733,7 +727,6 @@
 <translation id="8600173386174225982">파일 목록을 미리보기 이미지 뷰로 변경했습니다.</translation>
 <translation id="8601932370724196034">Crostini 이미지 파일</translation>
 <translation id="8609695766746872526">아이슬란드어</translation>
-<translation id="8669949407341943408">이동 중...</translation>
 <translation id="8698464937041809063">Google 드로잉</translation>
 <translation id="8712637175834984815">확인</translation>
 <translation id="8713112442029511308">몰타어</translation>
@@ -756,7 +749,6 @@
 <translation id="9034924485347205037">Linux 파일</translation>
 <translation id="9035012421917565900">항목을 다시 '<ph name="DESTINATION_NAME" />'(으)로 이동할 수 없으므로 이 작업을 실행취소할 수 없습니다.</translation>
 <translation id="9038620279323455325">'<ph name="FILE_NAME" />' 파일이 이미 존재합니다. 다른 이름을 선택하세요.</translation>
-<translation id="9064939804718829769">이전 중...</translation>
 <translation id="9065203028668620118">수정</translation>
 <translation id="908378762078012445">러시아어(표음 AATSEEL 키보드)</translation>
 <translation id="9099674669267916096">페이지 수</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_ky.xtb b/ui/chromeos/translations/ui_chromeos_strings_ky.xtb
index 2be7034..7b47c27 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_ky.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_ky.xtb
@@ -31,7 +31,6 @@
 <translation id="1293556467332435079">Файлдар</translation>
 <translation id="1297922636971898492">Google Drive учурда жеткиликтүү эмес. Google Drive кайтып келгенден кийин жүктөп берүү аракети автоматтык түрдө кайра аткарылат.</translation>
 <translation id="1307931752636661898">Linux Файлдарын көрүү мүмкүн болбой жатат</translation>
-<translation id="1338950911836659113">Жок кылынууда…</translation>
 <translation id="1346748346194534595">Оң</translation>
 <translation id="1351692861129622852"><ph name="FILE_COUNT" /> файл импорттолууда…</translation>
 <translation id="1358735829858566124">Файлды же каталогду колдонуу мүмкүн эмес.</translation>
@@ -43,7 +42,6 @@
 <translation id="1430915738399379752">Басып чыгаруу</translation>
 <translation id="1435838927755162558">Файлды Parallels Desktop менен бөлүшүү</translation>
 <translation id="1439494416798956626"><ph name="FOLDER_NAME" /> папкасына жылдырылды.</translation>
-<translation id="1464724975715666883">1 ката.</translation>
 <translation id="1467432559032391204">Сол</translation>
 <translation id="1471718551822868769">Словакча</translation>
 <translation id="1474339897586437869">"<ph name="FILENAME" />" жүктөп берилбей калды. Google Drive’да бош орун жетишпейт.</translation>
@@ -226,11 +224,9 @@
 <translation id="3455931012307786678">Эстончо</translation>
 <translation id="3466147780910026086">Медиа түзмөгүңүз скандалууда…</translation>
 <translation id="3468522857997926824"><ph name="FILE_COUNT" /> сүрөттүн камдык көчүрмөсү <ph name="BEGIN_LINK" />Google Drive'га<ph name="END_LINK" /> сакталды</translation>
-<translation id="3470502288861289375">Көчүрүлүүдө…</translation>
 <translation id="3473378059788601120"><ph name="FOLDER_NAME" /> папкасына көчүрүлдү.</translation>
 <translation id="3475447146579922140">Google электрондук жадыбал</translation>
 <translation id="3486821258960016770">Монголчо</translation>
-<translation id="3495304270784461826"><ph name="COUNT" /> ката.</translation>
 <translation id="3522708245912499433">Португалча</translation>
 <translation id="3524311639100184459">Эскертүү: Бул файлдар убактылуу жана дискте орун бошотуу үчүн автоматтык түрдө жок кылынышы мүмкүн.  <ph name="BEGIN_LINK" />Кеңири маалымат<ph name="END_LINK" /></translation>
 <translation id="3527085408025491307">Куржун</translation>
@@ -240,7 +236,6 @@
 <translation id="357479282490346887">Литвача</translation>
 <translation id="3603385196401704894">Французча (Канада)</translation>
 <translation id="3606220979431771195">Түркчө-F</translation>
-<translation id="3609785682760573515">Шайкештештирилүүдө…</translation>
 <translation id="3616113530831147358">Аудио</translation>
 <translation id="3619115746895587757">Капучино</translation>
 <translation id="3620292326130836921">Баарынын камдык көчүрмөсү сакталды!</translation>
@@ -532,7 +527,6 @@
 <translation id="6657585470893396449">Сырсөз</translation>
 <translation id="6673674183150363784">Французча (Франция) жана Bépo баскычтобу</translation>
 <translation id="6710213216561001401">Мурунку</translation>
-<translation id="6718273304615422081">Кысылууда…</translation>
 <translation id="6751256176799620176">1 куржун тандалды</translation>
 <translation id="6790428901817661496">Ойнотуу</translation>
 <translation id="6795884519221689054">Панда</translation>
@@ -732,7 +726,6 @@
 <translation id="8600173386174225982">Файлдардын тизмеси эскиз көрүнүшүнө которулду.</translation>
 <translation id="8601932370724196034">Crostini сүрөт файлы</translation>
 <translation id="8609695766746872526">Исландча</translation>
-<translation id="8669949407341943408">Жылдырылууда…</translation>
 <translation id="8698464937041809063">Google чийүү</translation>
 <translation id="8712637175834984815">Түшүндүм</translation>
 <translation id="8713112442029511308">Малтизче</translation>
@@ -755,7 +748,6 @@
 <translation id="9034924485347205037">Linux файлдары</translation>
 <translation id="9035012421917565900">Бул файлдарды кайра "<ph name="DESTINATION_NAME" />" дискине жылдырууга мүмкүн болбой калат, андыктан бул аракетти кайтара албай каласыз.</translation>
 <translation id="9038620279323455325">"<ph name="FILE_NAME" />" деген файл мурунтан эле бар. Файлды башкача атаңыз.</translation>
-<translation id="9064939804718829769">Өткөрүлүүдө…</translation>
 <translation id="9065203028668620118">Түзөтүү</translation>
 <translation id="908378762078012445">Орусча (AATSEEL фонетикалык баскычтобу)</translation>
 <translation id="9099674669267916096">Барактардын саны</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_lo.xtb b/ui/chromeos/translations/ui_chromeos_strings_lo.xtb
index bc20022..cbda8bb 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_lo.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_lo.xtb
@@ -31,7 +31,6 @@
 <translation id="1293556467332435079">ໄຟລ໌</translation>
 <translation id="1297922636971898492">ບໍ່ມີ Google Drive ຢູ່ໃນເວລານີ້. ການອັບໂຫຼດຈະເລີ່ມຕົ້ນໃໝ່ອັດຕະໂນມັດ ເມື່ອ Google Drive ກັບຄືນມາ.</translation>
 <translation id="1307931752636661898">ບໍ່ສາມາດເບິ່ງໄຟລ໌ Linux ໄດ້</translation>
-<translation id="1338950911836659113">ກໍາລັງລຶບ​...</translation>
 <translation id="1346748346194534595">ເບື້ອງຂວາ</translation>
 <translation id="1351692861129622852">ກຳ​ລັງ​ນຳ <ph name="FILE_COUNT" /> ໄຟ​ລ໌​ເຂົ້າ​ມາ...</translation>
 <translation id="1358735829858566124">ໄຟລ໌ ຫຼືບັນຊີລາຍຊື່ບໍ່ຄົງທີ່.</translation>
@@ -43,7 +42,6 @@
 <translation id="1430915738399379752">ພິມ</translation>
 <translation id="1435838927755162558">ແບ່ງປັນໂຟນເດີກັບ Parallels Desktop</translation>
 <translation id="1439494416798956626">ຍ້າຍໄປໃສ່ <ph name="FOLDER_NAME" /> ແລ້ວ.</translation>
-<translation id="1464724975715666883">1 ຄວາມ​ຜິດ​ພາດ​.</translation>
 <translation id="1467432559032391204">ເບື້ອງຊ້າຍ</translation>
 <translation id="1471718551822868769">ພາສາສະໂລແວັກ</translation>
 <translation id="1474339897586437869">"<ph name="FILENAME" />" ບໍ່​ຖືກ​ອັບ​ໂຫຼດ. ພື້ນ​ທີ່​ຫວ່າງ​ບໍ່​ພຽງ​ພໍ​ຢູ່​ໃນ Google Drive ຂອງ​ທ່ານ.</translation>
@@ -226,11 +224,9 @@
 <translation id="3455931012307786678">ພາສາເອສໂຕນຽນ</translation>
 <translation id="3466147780910026086">ກຳ​ລັງ​ສະ​ແກນອຸ​ປະ​ກອນ​ມີ​ເດຍ​ຂອງ​ທ່ານ...</translation>
 <translation id="3468522857997926824"><ph name="FILE_COUNT" /> ຮູບຖືກສຳ​ຮອງ​​ໃສ່ <ph name="BEGIN_LINK" />Google Drive<ph name="END_LINK" /> ແລ້ວ</translation>
-<translation id="3470502288861289375">ກໍາລັງກັອບປີ້...</translation>
 <translation id="3473378059788601120">ສຳເນົາໃສ່ <ph name="FOLDER_NAME" /> ແລ້ວ.</translation>
 <translation id="3475447146579922140">Google spreadsheet</translation>
 <translation id="3486821258960016770">ພາສາມອງໂກລຽນ</translation>
-<translation id="3495304270784461826"><ph name="COUNT" /> ຄວາມ​ຜິດ​ພາດ​.</translation>
 <translation id="3522708245912499433">ພາສາປັອກຕຸຍການ</translation>
 <translation id="3524311639100184459">ລະວັງ: ໄຟລ໌ເຫຼົ່ານີ້ເປັນໄຟລ໌ຊົ່ວຄາວ ແລະອາດຈະຖືກລຶບໄປໂດຍອັດຕະໂນມັດເພື່ອຂະຫຍາຍພື້ນທີ່ດິສ.  <ph name="BEGIN_LINK" />ສຶກສາເພີ່ມເຕີມ<ph name="END_LINK" /></translation>
 <translation id="3527085408025491307">ໂຟລເດີ</translation>
@@ -240,7 +236,6 @@
 <translation id="357479282490346887">ພາສາລິດທົວນີ</translation>
 <translation id="3603385196401704894">ພາສາຝຣັ່ງການາດາ</translation>
 <translation id="3606220979431771195">ພາ​ສາ​ຕວກ​ກີ-F</translation>
-<translation id="3609785682760573515">ກໍາລັງຊິງຄ໌...</translation>
 <translation id="3616113530831147358">ສຽງ</translation>
 <translation id="3619115746895587757">ຄາປູຊິໂນ</translation>
 <translation id="3620292326130836921">ສຳ​ຮອງ​ທັງ​ໝົດ​ແລ້ວ!</translation>
@@ -532,7 +527,6 @@
 <translation id="6657585470893396449">ລະຫັດຜ່ານ</translation>
 <translation id="6673674183150363784">ພາສາຝຣັ່ງ (ຝຣັ່ງ) ທີ່ໃຊ້ແປ້ນພິມ Bépo</translation>
 <translation id="6710213216561001401">ຜ່ານມາ</translation>
-<translation id="6718273304615422081">ກໍາລັງຊິບ...</translation>
 <translation id="6751256176799620176">ເລືອກ 1 ໂຟນເດີແລ້ວ</translation>
 <translation id="6790428901817661496">​ຫຼິ້ນ</translation>
 <translation id="6795884519221689054">ແພນດ້າ</translation>
@@ -732,7 +726,6 @@
 <translation id="8600173386174225982">ລາຍການໄຟລ໌ໄດ້ປ່ຽນເປັນມຸມມອງຮູບຫຍໍ້ແລ້ວ.</translation>
 <translation id="8601932370724196034">ໄຟລ໌ຮູບພາບ Crostini</translation>
 <translation id="8609695766746872526">ພາສາໄອແລນດິກ</translation>
-<translation id="8669949407341943408">ກໍາລັງຍ້າຍ...</translation>
 <translation id="8698464937041809063">ການແຕ້ມຮູບ Google</translation>
 <translation id="8712637175834984815">ເຂົ້າໃຈແລ້ວ</translation>
 <translation id="8713112442029511308">ພາສາມັລທີສ</translation>
@@ -755,7 +748,6 @@
 <translation id="9034924485347205037">ໄຟລ໌ Linux</translation>
 <translation id="9035012421917565900">ບໍ່ສາມາດຍ້າຍລາຍການນີ້ກັບຄືນຫາ '<ph name="DESTINATION_NAME" />' ໄດ້, ສະນັ້ນ ທ່ານຈະບໍ່ສາມາດລົບລ້າງການກະທຳນີ້ໄດ້.</translation>
 <translation id="9038620279323455325">ມີໄຟລ໌ຊື່ "<ph name="FILE_NAME" />" ຢູ່ແລ້ວ. ກະລຸນາເລືອກຊື່ໄຟລ໌ອື່ນ.</translation>
-<translation id="9064939804718829769">ກໍາລັງໂອນ...</translation>
 <translation id="9065203028668620118">ແກ້ໄຂ</translation>
 <translation id="908378762078012445">ພາສາຣັດເຊຍທີ່ໃຊ້ແປ້ນພິມ AATSEEL ຕາມການອອກສຽງ</translation>
 <translation id="9099674669267916096">ຈຳນວນໜ້າ</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_lt.xtb b/ui/chromeos/translations/ui_chromeos_strings_lt.xtb
index 7faa2ac..9c754d2 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_lt.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_lt.xtb
@@ -31,7 +31,6 @@
 <translation id="1293556467332435079">Failai</translation>
 <translation id="1297922636971898492">„Google“ diskas dabar nepasiekiamas. Įkėlimas bus iš naujo pradėtas automatiškai, kai „Google“ diskas bus vėl pasiekiamas.</translation>
 <translation id="1307931752636661898">Nepavyko peržiūrėti „Linux“ failų</translation>
-<translation id="1338950911836659113">Ištrinama...</translation>
 <translation id="1346748346194534595">Dešinė</translation>
 <translation id="1351692861129622852">Importuojami failai (<ph name="FILE_COUNT" />)...</translation>
 <translation id="1358735829858566124">Failas arba katalogas nenaudojamas.</translation>
@@ -43,7 +42,6 @@
 <translation id="1430915738399379752">Spausdinti</translation>
 <translation id="1435838927755162558">Bendrinkite aplanką su „Parallels Desktop“</translation>
 <translation id="1439494416798956626">Perkelta į aplanką „<ph name="FOLDER_NAME" />“.</translation>
-<translation id="1464724975715666883">1 klaida.</translation>
 <translation id="1467432559032391204">Kairė</translation>
 <translation id="1471718551822868769">Slovakų k.</translation>
 <translation id="1474339897586437869">Failas „<ph name="FILENAME" />“ neįkeltas. „Google“ diske nepakanka vietos.</translation>
@@ -226,11 +224,9 @@
 <translation id="3455931012307786678">Estų k.</translation>
 <translation id="3466147780910026086">Nuskaitomas medijos įrenginys...</translation>
 <translation id="3468522857997926824">Sukurta atsarginių nuotraukų kopijų <ph name="BEGIN_LINK" />„Google“ diske<ph name="END_LINK" />: <ph name="FILE_COUNT" /></translation>
-<translation id="3470502288861289375">Kopijuojama...</translation>
 <translation id="3473378059788601120">Nukopijuota į aplanką „<ph name="FOLDER_NAME" />“.</translation>
 <translation id="3475447146579922140">„Google“ skaičiuoklė</translation>
 <translation id="3486821258960016770">Mongolų k.</translation>
-<translation id="3495304270784461826">Klaidų: <ph name="COUNT" />.</translation>
 <translation id="3522708245912499433">Portugalų</translation>
 <translation id="3524311639100184459">Perspėjimas: šie failai yra laikini ir gali būti automatiškai ištrinti, kad būtų atlaisvinta vietos diske.  <ph name="BEGIN_LINK" />Sužinokite daugiau<ph name="END_LINK" /></translation>
 <translation id="3527085408025491307">Aplankas</translation>
@@ -240,7 +236,6 @@
 <translation id="357479282490346887">Lietuvių</translation>
 <translation id="3603385196401704894">Kanados prancūzų</translation>
 <translation id="3606220979431771195">Turkiška</translation>
-<translation id="3609785682760573515">Sinchronizuojama...</translation>
 <translation id="3616113530831147358">Garsas</translation>
 <translation id="3619115746895587757">Kapučino kava</translation>
 <translation id="3620292326130836921">Atsarginis kopijavimas baigtas!</translation>
@@ -533,7 +528,6 @@
 <translation id="6657585470893396449">Slaptažodis</translation>
 <translation id="6673674183150363784">Prancūzų k. (Prancūzija) su „Bépo“ klaviatūra</translation>
 <translation id="6710213216561001401">Ankstesnė</translation>
-<translation id="6718273304615422081">Glaudinama...</translation>
 <translation id="6751256176799620176">Pasirinktas 1 aplankas</translation>
 <translation id="6790428901817661496">Žaisti</translation>
 <translation id="6795884519221689054">Panda</translation>
@@ -733,7 +727,6 @@
 <translation id="8600173386174225982">Failų sąrašas pakeistas į miniatiūrų rodinį.</translation>
 <translation id="8601932370724196034">„Crostini“ vaizdo failas</translation>
 <translation id="8609695766746872526">Islandų k.</translation>
-<translation id="8669949407341943408">Perkeliama...</translation>
 <translation id="8698464937041809063">„Google“ piešinys</translation>
 <translation id="8712637175834984815">Supratau</translation>
 <translation id="8713112442029511308">Maltiečių k.</translation>
@@ -756,7 +749,6 @@
 <translation id="9034924485347205037">„Linux“ failai</translation>
 <translation id="9035012421917565900">Elementų negalima perkelti atgal į „<ph name="DESTINATION_NAME" />“, todėl negalėsite anuliuoti šio veiksmo.</translation>
 <translation id="9038620279323455325">Failas pavadinimu „<ph name="FILE_NAME" />“ jau yra. Pasirinkite kitą pavadinimą.</translation>
-<translation id="9064939804718829769">Perkeliama...</translation>
 <translation id="9065203028668620118">Redaguoti</translation>
 <translation id="908378762078012445">Rusų k. su fonetine AATSEEL klaviatūra</translation>
 <translation id="9099674669267916096">Puslapių skaičius</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_lv.xtb b/ui/chromeos/translations/ui_chromeos_strings_lv.xtb
index 70c4008..7e14ce120 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_lv.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_lv.xtb
@@ -31,7 +31,6 @@
 <translation id="1293556467332435079">Faili</translation>
 <translation id="1297922636971898492">Google disks pašlaik nav pieejams. Augšupielāde tiks automātiski atsākta, tiklīdz Google disks atkal būs pieejams.</translation>
 <translation id="1307931752636661898">Nevar skatīt Linux failus</translation>
-<translation id="1338950911836659113">Notiek dzēšana...</translation>
 <translation id="1346748346194534595">Pa labi</translation>
 <translation id="1351692861129622852">Notiek <ph name="FILE_COUNT" /> failu importēšana...</translation>
 <translation id="1358735829858566124">Fails vai katalogs nav izmantojams.</translation>
@@ -43,7 +42,6 @@
 <translation id="1430915738399379752">Drukāt</translation>
 <translation id="1435838927755162558">Mapes kopīgošana ar Parallels Desktop</translation>
 <translation id="1439494416798956626">Pārvietots uz mapi “<ph name="FOLDER_NAME" />”.</translation>
-<translation id="1464724975715666883">1 kļūda.</translation>
 <translation id="1467432559032391204">Pa kreisi</translation>
 <translation id="1471718551822868769">Slovāku</translation>
 <translation id="1474339897586437869">Fails “<ph name="FILENAME" />” netika augšupielādēts. Jūsu Google diskā nepietiek vietas.</translation>
@@ -226,11 +224,9 @@
 <translation id="3455931012307786678">Igauņu</translation>
 <translation id="3466147780910026086">Notiek multivides ierīces skenēšana...</translation>
 <translation id="3468522857997926824"><ph name="FILE_COUNT" /> fotoattēli dublēti <ph name="BEGIN_LINK" />Google diskā<ph name="END_LINK" /></translation>
-<translation id="3470502288861289375">Notiek kopēšana...</translation>
 <translation id="3473378059788601120">Nokopēts uz mapi <ph name="FOLDER_NAME" />.</translation>
 <translation id="3475447146579922140">Google izklājlapa</translation>
 <translation id="3486821258960016770">Mongoļu</translation>
-<translation id="3495304270784461826"><ph name="COUNT" /> kļūdas.</translation>
 <translation id="3522708245912499433">Portugāļu valoda</translation>
 <translation id="3524311639100184459">Uzmanību! Šie ir pagaidu faili un var tikt automātiski izdzēsti, lai atbrīvotu vietu diskā.  <ph name="BEGIN_LINK" />Uzziniet vairāk<ph name="END_LINK" />.</translation>
 <translation id="3527085408025491307">Mape</translation>
@@ -240,7 +236,6 @@
 <translation id="357479282490346887">Lietuviešu valoda</translation>
 <translation id="3603385196401704894">Kanādas franču</translation>
 <translation id="3606220979431771195">Turku-F</translation>
-<translation id="3609785682760573515">Notiek sinhronizēšana...</translation>
 <translation id="3616113530831147358">Audio</translation>
 <translation id="3619115746895587757">Kapučīno</translation>
 <translation id="3620292326130836921">Visi faili ir dublēti.</translation>
@@ -533,7 +528,6 @@
 <translation id="6657585470893396449">Parole</translation>
 <translation id="6673674183150363784">Franču (Francija), ar Bépo tastatūru</translation>
 <translation id="6710213216561001401">Iepriekšējais</translation>
-<translation id="6718273304615422081">Notiek tilpsaspiešana...</translation>
 <translation id="6751256176799620176">Atlasīta 1 mape</translation>
 <translation id="6790428901817661496">Atskaņot</translation>
 <translation id="6795884519221689054">Panda</translation>
@@ -733,7 +727,6 @@
 <translation id="8600173386174225982">Failu saraksts ir mainīts uz sīktēlu skatu.</translation>
 <translation id="8601932370724196034">Crostini attēla fails</translation>
 <translation id="8609695766746872526">Islandiešu</translation>
-<translation id="8669949407341943408">Notiek pārvietošana...</translation>
 <translation id="8698464937041809063">Google zīmējums</translation>
 <translation id="8712637175834984815">Sapratu!</translation>
 <translation id="8713112442029511308">Maltiešu</translation>
@@ -756,7 +749,6 @@
 <translation id="9034924485347205037">Linux faili</translation>
 <translation id="9035012421917565900">Vienumus nevar pārvietot atpakaļ uz “<ph name="DESTINATION_NAME" />”, tādēļ nevarēsiet atsaukt šo darbību.</translation>
 <translation id="9038620279323455325">Fails ar nosaukumu “<ph name="FILE_NAME" />” jau pastāv. Lūdzu, izvēlieties citu nosaukumu.</translation>
-<translation id="9064939804718829769">Notiek pārsūtīšana...</translation>
 <translation id="9065203028668620118">Labot</translation>
 <translation id="908378762078012445">Krievu, ar fonētisko AATSEEL tastatūru</translation>
 <translation id="9099674669267916096">Lappušu skaits</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_mk.xtb b/ui/chromeos/translations/ui_chromeos_strings_mk.xtb
index f1230a9b..c529a231 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_mk.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_mk.xtb
@@ -31,7 +31,6 @@
 <translation id="1293556467332435079">Датотеки</translation>
 <translation id="1297922636971898492">Google Диск не е достапен во моментов. Поставувањето автоматски ќе се рестартира штом ќе се активира Google Диск.</translation>
 <translation id="1307931752636661898">Не може да се прикажат датотеките на Linux</translation>
-<translation id="1338950911836659113">Се брише...</translation>
 <translation id="1346748346194534595">Надесно</translation>
 <translation id="1351692861129622852">Се увезуваат <ph name="FILE_COUNT" /> датотеки...</translation>
 <translation id="1358735829858566124">Датотеката или директориумот не може да се користат.</translation>
@@ -43,7 +42,6 @@
 <translation id="1430915738399379752">Печати</translation>
 <translation id="1435838927755162558">Споделете папка со Parallels Desktop</translation>
 <translation id="1439494416798956626">Преместена во <ph name="FOLDER_NAME" />.</translation>
-<translation id="1464724975715666883">1 грешка.</translation>
 <translation id="1467432559032391204">Лево</translation>
 <translation id="1471718551822868769">словачки</translation>
 <translation id="1474339897586437869">„<ph name="FILENAME" />“ не е поставена. Нема доволно простор на Google Drive.</translation>
@@ -226,11 +224,9 @@
 <translation id="3455931012307786678">естонски</translation>
 <translation id="3466147780910026086">Се скенира преносливиот уред...</translation>
 <translation id="3468522857997926824">Направивте резервна копија на <ph name="FILE_COUNT" /> фотографии на <ph name="BEGIN_LINK" />Google Drive<ph name="END_LINK" /></translation>
-<translation id="3470502288861289375">Се копира...</translation>
 <translation id="3473378059788601120">Копирана во <ph name="FOLDER_NAME" />.</translation>
 <translation id="3475447146579922140">Google табела</translation>
 <translation id="3486821258960016770">монголски</translation>
-<translation id="3495304270784461826"><ph name="COUNT" /> грешки.</translation>
 <translation id="3522708245912499433">португалски</translation>
 <translation id="3524311639100184459">Внимание: датотекиве се привремени и може да се бришат автоматски за да се ослободи простор на дискот.  <ph name="BEGIN_LINK" />Дознајте повеќе<ph name="END_LINK" /></translation>
 <translation id="3527085408025491307">Папка</translation>
@@ -240,7 +236,6 @@
 <translation id="357479282490346887">литвански</translation>
 <translation id="3603385196401704894">канадско француска</translation>
 <translation id="3606220979431771195">Турска-F</translation>
-<translation id="3609785682760573515">Се синхронизира...</translation>
 <translation id="3616113530831147358">Аудио</translation>
 <translation id="3619115746895587757">Капучино</translation>
 <translation id="3620292326130836921">Сѐ е ископирано!</translation>
@@ -532,7 +527,6 @@
 <translation id="6657585470893396449">Лозинка</translation>
 <translation id="6673674183150363784">француски (Франција) со тастатура Bépo</translation>
 <translation id="6710213216561001401">Претходно</translation>
-<translation id="6718273304615422081">Се пакува...</translation>
 <translation id="6751256176799620176">Избрана е 1 папка</translation>
 <translation id="6790428901817661496">Репродуцирај</translation>
 <translation id="6795884519221689054">Панда</translation>
@@ -732,7 +726,6 @@
 <translation id="8600173386174225982">Списокот со датотеки се смени во преглед на сликички.</translation>
 <translation id="8601932370724196034">Датотека со слика Crostini</translation>
 <translation id="8609695766746872526">исландски</translation>
-<translation id="8669949407341943408">Се преместува...</translation>
 <translation id="8698464937041809063">Google-цртеж</translation>
 <translation id="8712637175834984815">Сфатив</translation>
 <translation id="8713112442029511308">малтешки</translation>
@@ -755,7 +748,6 @@
 <translation id="9034924485347205037">Датотеки на Linux</translation>
 <translation id="9035012421917565900">Ставките не може да се преместат назад во „<ph name="DESTINATION_NAME" />“, па нема да може да го вратите дејствово.</translation>
 <translation id="9038620279323455325">Веќе постои датотека со име „<ph name="FILE_NAME" />“. Одберете друго име.</translation>
-<translation id="9064939804718829769">Се префрлува…</translation>
 <translation id="9065203028668620118">Измени</translation>
 <translation id="908378762078012445">руски со фонетска тастатура AATSEEL</translation>
 <translation id="9099674669267916096">Број на страници</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_ml.xtb b/ui/chromeos/translations/ui_chromeos_strings_ml.xtb
index 8fdc964..b6703c1 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_ml.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_ml.xtb
@@ -31,7 +31,6 @@
 <translation id="1293556467332435079">Files</translation>
 <translation id="1297922636971898492">Google ഡ്രൈവ് ഇപ്പോൾ ലഭ്യമല്ല. ലഭ്യമായിക്കഴിഞ്ഞാൽ, അപ്‌ലോഡ് ചെയ്യുന്നത് സ്വമേധയാ പുനരാരംഭിക്കും.</translation>
 <translation id="1307931752636661898">Linux ഫയലുകൾ കാണാനാവുന്നില്ല</translation>
-<translation id="1338950911836659113">ഇല്ലാതാക്കുന്നു...</translation>
 <translation id="1346748346194534595">ശരി</translation>
 <translation id="1351692861129622852"><ph name="FILE_COUNT" /> ഫയലുകൾ ഇമ്പോർട്ടുചെയ്യുന്നു...</translation>
 <translation id="1358735829858566124">ഫയലോ ഡയറക്‌റ്ററിയോ ഉപയോഗക്ഷമമല്ല.</translation>
@@ -43,7 +42,6 @@
 <translation id="1430915738399379752">അച്ചടിക്കുക</translation>
 <translation id="1435838927755162558">Parallels Desktop ഉപയോഗിച്ച് ഫോൾഡർ പങ്കിടുക</translation>
 <translation id="1439494416798956626"><ph name="FOLDER_NAME" /> എന്നതിലേക്ക് നീക്കി.</translation>
-<translation id="1464724975715666883">ഒരു പിശക്.</translation>
 <translation id="1467432559032391204">ഇടത്</translation>
 <translation id="1471718551822868769">സ്ലോവാക്</translation>
 <translation id="1474339897586437869">"<ph name="FILENAME" />" അപ്‌ലോഡുചെയ്‌തില്ല. നിങ്ങളുടെ Google ഡ്രൈവിൽ മതിയായ ഇടമില്ല.</translation>
@@ -226,11 +224,9 @@
 <translation id="3455931012307786678">എസ്തോണിയൻ</translation>
 <translation id="3466147780910026086">നിങ്ങളുടെ മീഡിയാ ഉപകരണം സ്‌‌കാൻ ചെയ്യുന്നു...</translation>
 <translation id="3468522857997926824"><ph name="FILE_COUNT" /> ഫോട്ടോകൾ <ph name="BEGIN_LINK" />Google ഡ്രൈവിലേക്ക്<ph name="END_LINK" /> ബാക്കപ്പുചെയ്‌തു</translation>
-<translation id="3470502288861289375">പകർത്തുന്നു...</translation>
 <translation id="3473378059788601120"><ph name="FOLDER_NAME" /> എന്നതിലേക്ക് പകർത്തി.</translation>
 <translation id="3475447146579922140">Google സ്‌പ്രെഡ്‌ഷീറ്റ്</translation>
 <translation id="3486821258960016770">മംഗോളിയൻ</translation>
-<translation id="3495304270784461826"><ph name="COUNT" /> പിശകുകൾ.</translation>
 <translation id="3522708245912499433">പോര്‍ച്ചുഗീസ്</translation>
 <translation id="3524311639100184459">മുന്നറിയിപ്പ്: ഇവ താൽക്കാലിക ഫയലുകളാണ് ഡിസ്ക്കിൽ ഇടമുണ്ടാക്കാൻ സ്വയമേവ ഇല്ലാതാക്കിയേക്കാം.  <ph name="BEGIN_LINK" />കൂടുതലറിയുക<ph name="END_LINK" /></translation>
 <translation id="3527085408025491307">ഫോൾഡർ</translation>
@@ -240,7 +236,6 @@
 <translation id="357479282490346887">ലിത്വാനിയന്‍</translation>
 <translation id="3603385196401704894">കനേഡിയന്‍ ഫ്രഞ്ച്</translation>
 <translation id="3606220979431771195">ടർക്കിഷ്-എഫ്</translation>
-<translation id="3609785682760573515">സമന്വയിപ്പിക്കുന്നു...</translation>
 <translation id="3616113530831147358">ഓഡിയോ</translation>
 <translation id="3619115746895587757">കാപ്പുചീനോ</translation>
 <translation id="3620292326130836921">എല്ലാം ബാക്കപ്പുചെയ്‌തു!</translation>
@@ -533,7 +528,6 @@
 <translation id="6657585470893396449">പാസ്‌വേഡ്</translation>
 <translation id="6673674183150363784">BÉPO കീബോർഡ് ഉള്ള ഫ്രഞ്ച് (ഫ്രാൻസ്)</translation>
 <translation id="6710213216561001401">മുമ്പത്തേത്</translation>
-<translation id="6718273304615422081">Zip ചെയ്യുന്നു...</translation>
 <translation id="6751256176799620176">ഒരു ഫോൾഡർ തിരഞ്ഞെടുത്തു</translation>
 <translation id="6790428901817661496">പ്ലേചെയ്യുക</translation>
 <translation id="6795884519221689054">Panda</translation>
@@ -733,7 +727,6 @@
 <translation id="8600173386174225982">ഫയൽ ലിസ്‌റ്റ് ലഘുചിത്ര കാഴ്‌ചയിലേക്ക് മാറ്റിയിട്ടുണ്ട്.</translation>
 <translation id="8601932370724196034">Crostini ചിത്ര ഫയൽ</translation>
 <translation id="8609695766746872526">ഐസ്‌ലാന്‍ഡിക്</translation>
-<translation id="8669949407341943408">നീക്കുന്നു...</translation>
 <translation id="8698464937041809063">Google ഡ്രോയിംഗ്</translation>
 <translation id="8712637175834984815">മനസ്സിലായി</translation>
 <translation id="8713112442029511308">മാള്‍ട്ടീസ്</translation>
@@ -756,7 +749,6 @@
 <translation id="9034924485347205037">Linux ഫയലുകൾ</translation>
 <translation id="9035012421917565900">ഇനങ്ങൾ '<ph name="DESTINATION_NAME" />' എന്നതിലേക്ക് തിരികെ നീക്കാൻ കഴിയാത്തതിനാൽ, ഈ പ്രവൃത്തി നിങ്ങൾക്ക് പഴയപടിയാക്കാനാവില്ല.</translation>
 <translation id="9038620279323455325">"<ph name="FILE_NAME" />" എന്ന പേരുള്ള ഫയൽ മുമ്പേ നിലവിലുണ്ട്. മറ്റൊരു പേര് തിരഞ്ഞെടുക്കുക.</translation>
-<translation id="9064939804718829769">കൈമാറുന്നു...</translation>
 <translation id="9065203028668620118">എഡിറ്റ് ചെയ്യുക</translation>
 <translation id="908378762078012445">ഫൊണറ്റിക് AATSEEL കീബോർഡ് ഉള്ള റഷ്യൻ</translation>
 <translation id="9099674669267916096">പേജിന്റെ എണ്ണം</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_mn.xtb b/ui/chromeos/translations/ui_chromeos_strings_mn.xtb
index 622d8ab..346a2fbec 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_mn.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_mn.xtb
@@ -31,7 +31,6 @@
 <translation id="1293556467332435079">Файлууд</translation>
 <translation id="1297922636971898492">Google Drive одоогоор боломжгүй байна. Google Drive ажиллаж эхлэхэд байршуулалт автоматиар эхэлнэ.</translation>
 <translation id="1307931752636661898">Linux-н файлуудыг харах боломжгүй байна</translation>
-<translation id="1338950911836659113">Устгаж байна...</translation>
 <translation id="1346748346194534595">Баруун</translation>
 <translation id="1351692861129622852"><ph name="FILE_COUNT" /> файл импорт хийж байна...</translation>
 <translation id="1358735829858566124">Файл болон хадгалалтын сан нь ашиглах боломжгүй байна.</translation>
@@ -43,7 +42,6 @@
 <translation id="1430915738399379752">Хэвлэх</translation>
 <translation id="1435838927755162558">Фолдерыг Parallels Desktop-тай хуваалцах</translation>
 <translation id="1439494416798956626"><ph name="FOLDER_NAME" /> руу зөөсөн.</translation>
-<translation id="1464724975715666883">1 алдаа.</translation>
 <translation id="1467432559032391204">Зүүн</translation>
 <translation id="1471718551822868769">Словак</translation>
 <translation id="1474339897586437869">"<ph name="FILENAME" />"-г байршуулаагүй. Tаны Google Drive-д хангалттай багтаамж алга.</translation>
@@ -226,11 +224,9 @@
 <translation id="3455931012307786678">Эстон</translation>
 <translation id="3466147780910026086">Таны төхөөрөмжийг уншиж байна...</translation>
 <translation id="3468522857997926824"><ph name="FILE_COUNT" /> зургийг <ph name="BEGIN_LINK" />Google Drive<ph name="END_LINK" /> дээр хадгалсан байна</translation>
-<translation id="3470502288861289375">Хуулж байна ...</translation>
 <translation id="3473378059788601120"><ph name="FOLDER_NAME" /> руу хуулсан.</translation>
 <translation id="3475447146579922140">Google-ийн хүснэгт</translation>
 <translation id="3486821258960016770">Монгол</translation>
-<translation id="3495304270784461826"><ph name="COUNT" /> алдаа.</translation>
 <translation id="3522708245912499433">Португал</translation>
 <translation id="3524311639100184459">Анхааруулга: Эдгээр файл нь түр зуурын файлууд бөгөөд дискийн зайг чөлөөлөхийн тулд автоматаар устгаж болно.  <ph name="BEGIN_LINK" />Нэмэлт мэдээлэл авах<ph name="END_LINK" /></translation>
 <translation id="3527085408025491307">Хавтас</translation>
@@ -240,7 +236,6 @@
 <translation id="357479282490346887">Литви</translation>
 <translation id="3603385196401704894">Канадын франц хэл</translation>
 <translation id="3606220979431771195">Турк хэлний-F</translation>
-<translation id="3609785682760573515">Sync хийж байна ...</translation>
 <translation id="3616113530831147358">Аудио</translation>
 <translation id="3619115746895587757">Капучино</translation>
 <translation id="3620292326130836921">Бүгдийг хадгалсан болно!</translation>
@@ -530,7 +525,6 @@
 <translation id="6657585470893396449">Нууц үг</translation>
 <translation id="6673674183150363784">Bépo гартай франц (Франц)</translation>
 <translation id="6710213216561001401">Өмнөх</translation>
-<translation id="6718273304615422081">Зип болгож байна...</translation>
 <translation id="6751256176799620176">1 фолдер сонгосон</translation>
 <translation id="6790428901817661496">Тоглуулах</translation>
 <translation id="6795884519221689054">Хулсны баавгай</translation>
@@ -730,7 +724,6 @@
 <translation id="8600173386174225982">Файлын жагсаалтыг өнгөц зургаар харах горимд шилжүүлэв.</translation>
 <translation id="8601932370724196034">Crostini зургийн файл</translation>
 <translation id="8609695766746872526">Исланд</translation>
-<translation id="8669949407341943408">Зөөж байна...</translation>
 <translation id="8698464937041809063">Google-ийн зураг</translation>
 <translation id="8712637175834984815">Ойлголоо</translation>
 <translation id="8713112442029511308">Мальта</translation>
@@ -753,7 +746,6 @@
 <translation id="9034924485347205037">Linux-н файл</translation>
 <translation id="9035012421917565900">Зүйлийг буцааж '<ph name="DESTINATION_NAME" />' руу зөөх боломжгүй тул та энэ үйлдлийг буцаах боломжгүй.</translation>
 <translation id="9038620279323455325">"<ph name="FILE_NAME" />" нэртэй файл аль хэдийн байна. Өөр нэр сонгоно уу.</translation>
-<translation id="9064939804718829769">Шилжүүлж байна...</translation>
 <translation id="9065203028668620118">Засварлах</translation>
 <translation id="908378762078012445">AATSEEL авиа зүйн гартай орос</translation>
 <translation id="9099674669267916096">Хуудасны тоо</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_mr.xtb b/ui/chromeos/translations/ui_chromeos_strings_mr.xtb
index 8cc67fd..ddcb296 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_mr.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_mr.xtb
@@ -31,7 +31,6 @@
 <translation id="1293556467332435079">Files</translation>
 <translation id="1297922636971898492">Google ड्राइव्ह आत्ता उपलब्ध नाही. Google ड्राइव्ह एकदा परत आल्यानंतर अपलोड करणे आपोआप रीस्टार्ट होईल.</translation>
 <translation id="1307931752636661898">Linux फाइल पाहू शकत नाही</translation>
-<translation id="1338950911836659113">हटवत आहे...</translation>
 <translation id="1346748346194534595">उजवे</translation>
 <translation id="1351692861129622852"><ph name="FILE_COUNT" /> फाइल इंपोर्ट करीत आहे...</translation>
 <translation id="1358735829858566124">फाइल किंवा डिरेक्टरी वापरण्यायोग्य नाही.</translation>
@@ -43,7 +42,6 @@
 <translation id="1430915738399379752">प्रिंट</translation>
 <translation id="1435838927755162558">Parallels Desktop सोबत फोल्डर शेअर करा</translation>
 <translation id="1439494416798956626"><ph name="FOLDER_NAME" /> मध्ये हलवले.</translation>
-<translation id="1464724975715666883">१ एरर.</translation>
 <translation id="1467432559032391204">डावे</translation>
 <translation id="1471718551822868769">स्लोव्हाक</translation>
 <translation id="1474339897586437869">"<ph name="FILENAME" />" अपलोड केली नाही. आपल्या Google ड्राइव्हमध्ये पर्याप्त स्थान नाही.</translation>
@@ -225,11 +223,9 @@
 <translation id="3455931012307786678">इस्टोनियन</translation>
 <translation id="3466147780910026086">तुमचे मीडिया डिव्हाइस स्कॅन करीत आहे...</translation>
 <translation id="3468522857997926824"><ph name="BEGIN_LINK" />Google ड्राइव्ह<ph name="END_LINK" /> वर <ph name="FILE_COUNT" /> फोटोंचा बॅकअप घेतला</translation>
-<translation id="3470502288861289375">कॉपी करत आहे...</translation>
 <translation id="3473378059788601120"><ph name="FOLDER_NAME" /> मध्ये कॉपी केले.</translation>
 <translation id="3475447146579922140">Google स्प्रेडशीट</translation>
 <translation id="3486821258960016770">मंगोलियन</translation>
-<translation id="3495304270784461826"><ph name="COUNT" /> एरर.</translation>
 <translation id="3522708245912499433">पोर्तुगीज</translation>
 <translation id="3524311639100184459">सावधान: या फाइल तात्पुरत्या आहेत आणि डिस्कवरील जागा मोकळी करण्यासाठी त्या आपोआप हटवल्या जाऊ शकतात.  <ph name="BEGIN_LINK" />अधिक जाणून घ्या<ph name="END_LINK" /></translation>
 <translation id="3527085408025491307">फोल्डर</translation>
@@ -239,7 +235,6 @@
 <translation id="357479282490346887">लिथुआनियन</translation>
 <translation id="3603385196401704894">कॅनेडियन फ्रेंच</translation>
 <translation id="3606220979431771195">तुर्की-F</translation>
-<translation id="3609785682760573515">सिंक करत आहे...</translation>
 <translation id="3616113530831147358">ऑडिओ</translation>
 <translation id="3619115746895587757">कॅपिचिनो</translation>
 <translation id="3620292326130836921">सर्व बॅकअप घेतला!</translation>
@@ -532,7 +527,6 @@
 <translation id="6657585470893396449">पासवर्ड</translation>
 <translation id="6673674183150363784">Bépo कीबोर्डसह फ्रेंच (फ्रान्स)</translation>
 <translation id="6710213216561001401">मागील</translation>
-<translation id="6718273304615422081">झिप करत आहे...</translation>
 <translation id="6751256176799620176">1 फोल्डर निवडले</translation>
 <translation id="6790428901817661496">प्ले करा</translation>
 <translation id="6795884519221689054">पांडा</translation>
@@ -732,7 +726,6 @@
 <translation id="8600173386174225982">फाइल सूची थंबनेल व्ह्यूमध्ये बदलली गेली आहे.</translation>
 <translation id="8601932370724196034">Crostini इमेज फाइल</translation>
 <translation id="8609695766746872526">आइसलँडिक</translation>
-<translation id="8669949407341943408">हलवत आहे...</translation>
 <translation id="8698464937041809063">Google रेखांकन</translation>
 <translation id="8712637175834984815">समजले</translation>
 <translation id="8713112442029511308">माल्टीज</translation>
@@ -755,7 +748,6 @@
 <translation id="9034924485347205037">Linux फाइल</translation>
 <translation id="9035012421917565900">हे आयटम '<ph name="DESTINATION_NAME" />' मध्ये परत हलवणे शक्य नाही, म्हणून ही क्रिया पहिल्यासारखी केली जाणार नाही.</translation>
 <translation id="9038620279323455325">"<ph name="FILE_NAME" />" नावाची फाइल आधीच अस्तित्वात आहे. कृपया वेगळे नाव निवडा.</translation>
-<translation id="9064939804718829769">हस्तांतरित करत आहे...</translation>
 <translation id="9065203028668620118">संपादन</translation>
 <translation id="908378762078012445">फोनेटिक AATSEEL कीबोर्डसह रशियन</translation>
 <translation id="9099674669267916096">पेज गणना</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_ms.xtb b/ui/chromeos/translations/ui_chromeos_strings_ms.xtb
index ea1dfb9..68bcbe4 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_ms.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_ms.xtb
@@ -31,7 +31,6 @@
 <translation id="1293556467332435079">Fail</translation>
 <translation id="1297922636971898492">Google Drive tidak tersedia pada masa ini. Memuat naik akan dimulakan semula secara automatik sebaik sahaja Google Drive kembali.</translation>
 <translation id="1307931752636661898">Tidak dapat melihat fail Linux</translation>
-<translation id="1338950911836659113">Memadamkan...</translation>
 <translation id="1346748346194534595">Kanan</translation>
 <translation id="1351692861129622852">Mengimport fail <ph name="FILE_COUNT" />...</translation>
 <translation id="1358735829858566124">Fail atau direktori tidak boleh digunakan.</translation>
@@ -43,7 +42,6 @@
 <translation id="1430915738399379752">Cetak</translation>
 <translation id="1435838927755162558">Kongsi folder dengan Parallels Desktop</translation>
 <translation id="1439494416798956626">Dialihkan ke <ph name="FOLDER_NAME" />.</translation>
-<translation id="1464724975715666883">1 ralat.</translation>
 <translation id="1467432559032391204">Kiri</translation>
 <translation id="1471718551822868769">Slovak</translation>
 <translation id="1474339897586437869">"<ph name="FILENAME" />" tidak dimuat naik. Ruang kosong tidak mencukupi dalam Google Drive anda.</translation>
@@ -226,11 +224,9 @@
 <translation id="3455931012307786678">Estonia</translation>
 <translation id="3466147780910026086">Mengimbas peranti media anda...</translation>
 <translation id="3468522857997926824"><ph name="FILE_COUNT" /> foto disandarkan pada <ph name="BEGIN_LINK" />Google Drive<ph name="END_LINK" /></translation>
-<translation id="3470502288861289375">Menyalin...</translation>
 <translation id="3473378059788601120">Disalin ke <ph name="FOLDER_NAME" />.</translation>
 <translation id="3475447146579922140">Hamparan Google</translation>
 <translation id="3486821258960016770">Mongolia</translation>
-<translation id="3495304270784461826"><ph name="COUNT" /> ralat.</translation>
 <translation id="3522708245912499433">Bahasa Portugis</translation>
 <translation id="3524311639100184459">Awas: Fail ini bersifat sementara dan mungkin dipadamkan secara automatik untuk mengosongkan ruang cakera.  <ph name="BEGIN_LINK" />Ketahui Lebih Lanjut<ph name="END_LINK" /></translation>
 <translation id="3527085408025491307">Folder</translation>
@@ -240,7 +236,6 @@
 <translation id="357479282490346887">Bahasa Lithuania</translation>
 <translation id="3603385196401704894">Bahasa Perancis Kanada</translation>
 <translation id="3606220979431771195">Turki-F</translation>
-<translation id="3609785682760573515">Menyegerakkan...</translation>
 <translation id="3616113530831147358">Audio</translation>
 <translation id="3619115746895587757">Kapucino</translation>
 <translation id="3620292326130836921">Semua disandarkan!</translation>
@@ -533,7 +528,6 @@
 <translation id="6657585470893396449">Kata laluan</translation>
 <translation id="6673674183150363784">Perancis (Perancis) dengan papan kekunci Bepo</translation>
 <translation id="6710213216561001401">Sebelumnya</translation>
-<translation id="6718273304615422081">Mengezip...</translation>
 <translation id="6751256176799620176">1 folder dipilih</translation>
 <translation id="6790428901817661496">Mainkan</translation>
 <translation id="6795884519221689054">Panda</translation>
@@ -733,7 +727,6 @@
 <translation id="8600173386174225982">Senarai fail telah berubah kepada paparan lakaran kecil.</translation>
 <translation id="8601932370724196034">Fail imej Crostini</translation>
 <translation id="8609695766746872526">Iceland</translation>
-<translation id="8669949407341943408">Bergerak...</translation>
 <translation id="8698464937041809063">Lukisan Google</translation>
 <translation id="8712637175834984815">Faham</translation>
 <translation id="8713112442029511308">Malta</translation>
@@ -756,7 +749,6 @@
 <translation id="9034924485347205037">Fail Linux</translation>
 <translation id="9035012421917565900">Items tidak boleh dialihkan kembali ke '<ph name="DESTINATION_NAME" />', oleh itu, anda tidak akan dapat membuat asal tindakan ini.</translation>
 <translation id="9038620279323455325">Fail bernama "<ph name="FILE_NAME" />" sudah wujud. Sila pilih nama lain.</translation>
-<translation id="9064939804718829769">Memindahkan...</translation>
 <translation id="9065203028668620118">Edit</translation>
 <translation id="908378762078012445">Rusia dengan papan kekunci AATSEEL Fonetik</translation>
 <translation id="9099674669267916096">Kiraan halaman</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_my.xtb b/ui/chromeos/translations/ui_chromeos_strings_my.xtb
index 1be3ece..d3ce7e2 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_my.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_my.xtb
@@ -31,7 +31,6 @@
 <translation id="1293556467332435079">ဖိုင်များ</translation>
 <translation id="1297922636971898492">Google Drive ယခုမရသေးပါ။ Google Drive ပြန်လာသည်နှင့် တင်ခြင်း အလိုအလျောက် ပြန်စပါမည်။</translation>
 <translation id="1307931752636661898">Linux ဖိုင်များကို ကြည့်၍မရပါ</translation>
-<translation id="1338950911836659113">ဖျက်နေ...</translation>
 <translation id="1346748346194534595">ညာ</translation>
 <translation id="1351692861129622852">ဖိုင် <ph name="FILE_COUNT" /> ဖိုင် တင်သွင်းနေစဉ်...</translation>
 <translation id="1358735829858566124">ဖိုင်သို့မဟုတ် လမ်းကြောင်း အသုံးပြု၍ မရပါ။</translation>
@@ -43,7 +42,6 @@
 <translation id="1430915738399379752">ပရင့်</translation>
 <translation id="1435838927755162558">ဖိုင်တွဲကို Parallels Desktop အား မျှဝေခြင်း</translation>
 <translation id="1439494416798956626"><ph name="FOLDER_NAME" /> ဖိုင်တွဲသို့ ရွှေ့ထားသည်။</translation>
-<translation id="1464724975715666883">မှားယွင်းမှု ၁ ခု</translation>
 <translation id="1467432559032391204">ဘယ်</translation>
 <translation id="1471718551822868769">ဆလိုဗက်</translation>
 <translation id="1474339897586437869">" <ph name="FILENAME" /> " ကို အပ်လုဒ် လုပ်မရခဲ့ပါ။ သင်၏ Google Drive ထဲတွင် နေရာ မလုံလောက်ပါ။</translation>
@@ -226,11 +224,9 @@
 <translation id="3455931012307786678">အက်စ်တိုနီးယား</translation>
 <translation id="3466147780910026086">သင့်မီဒီယာကို ဖတ်နေသည်...</translation>
 <translation id="3468522857997926824"><ph name="FILE_COUNT" /> ဓါတ်ပုံများကို <ph name="BEGIN_LINK" /> Google Drive <ph name="END_LINK" /> သို့အရံသိမ်းဆည်းမည်</translation>
-<translation id="3470502288861289375">ကူးယူနေ...</translation>
 <translation id="3473378059788601120"><ph name="FOLDER_NAME" /> သို့ မိတ္တူကူးထားသည်။</translation>
 <translation id="3475447146579922140">Google spreadsheet</translation>
 <translation id="3486821258960016770">မွန်ဂိုလီးယား</translation>
-<translation id="3495304270784461826"><ph name="COUNT" /> အမှားများ။</translation>
 <translation id="3522708245912499433">ပေါ်တူဂီ</translation>
 <translation id="3524311639100184459">သတိ- ဤဖိုင်များသည် ယာယီဖြစ်ပြီး ဒစ်ခ်နေရာလွတ်ပြုလုပ်ရန် အလိုအလျောက် ဖျက်နိုင်ပါသည်။  <ph name="BEGIN_LINK" />ပိုမိုလေ့လာရန်<ph name="END_LINK" /></translation>
 <translation id="3527085408025491307">ဖိုင်တွဲ</translation>
@@ -240,7 +236,6 @@
 <translation id="357479282490346887">လီသွေနီယံ</translation>
 <translation id="3603385196401704894">ကနေဒါမွေး ပြင်သစ်</translation>
 <translation id="3606220979431771195">Turkish-F</translation>
-<translation id="3609785682760573515">စင့်က် လုပ်နေ...</translation>
 <translation id="3616113530831147358">အသံ</translation>
 <translation id="3619115746895587757">ကာပူချီနို</translation>
 <translation id="3620292326130836921">အားလုံးအရံသိမ်းဆည်းပြီးပါပြီ!</translation>
@@ -532,7 +527,6 @@
 <translation id="6657585470893396449">စကားဝှက်</translation>
 <translation id="6673674183150363784">Bépo ကီးဘုတ်ဖြင့် ပြင်သစ် (ပြင်သစ်)</translation>
 <translation id="6710213216561001401">အရင်</translation>
-<translation id="6718273304615422081">ဇစ်ပိတ်နေ...</translation>
 <translation id="6751256176799620176">ဖိုင်တွဲ ၁ ခု ရွေးချယ်ထားသည်</translation>
 <translation id="6790428901817661496">ဖွင့်ရန်</translation>
 <translation id="6795884519221689054">ပန်ဒါဝက်ဝံ</translation>
@@ -732,7 +726,6 @@
 <translation id="8600173386174225982">ဖိုင်စာရင်းကို ပုံသေးမြင်ကွင်းအဖြစ် ပြောင်းထားသည်။</translation>
 <translation id="8601932370724196034">Crostini ပုံပါဝင်သော ဖိုင်</translation>
 <translation id="8609695766746872526">အိုက်စ်လန်</translation>
-<translation id="8669949407341943408">ရွှေ့ပေးနေ...</translation>
 <translation id="8698464937041809063">Google ရေးဆွဲခြင်း</translation>
 <translation id="8712637175834984815">ရပါပြီ!</translation>
 <translation id="8713112442029511308">မော်လတာ</translation>
@@ -755,7 +748,6 @@
 <translation id="9034924485347205037">Linux ဖိုင်များ</translation>
 <translation id="9035012421917565900">၎င်းတို့ကို '<ph name="DESTINATION_NAME" />' သို့ ပြန်ရွှေ့၍မရသည့်အတွက် ဤလုပ်ဆောင်ချက်ကို တစ်ဆင့်နောက်ပြန်၍ ရမည်မဟုတ်ပါ။</translation>
 <translation id="9038620279323455325">"<ph name="FILE_NAME" />" အမည်ဖြင့်ဖိုင် ရှိပြီးဖြစ်သည်။ အခြားအမည်ရွေးပါ။</translation>
-<translation id="9064939804718829769">လွှဲပြောင်းနေ...</translation>
 <translation id="9065203028668620118">ပြင်ဆင်ရန်</translation>
 <translation id="908378762078012445">အသံထွက် AATSEEL ကီးဘုတ်ဖြင့် ရုရှား</translation>
 <translation id="9099674669267916096">စာမျက်နှာအရေအတွက်</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_ne.xtb b/ui/chromeos/translations/ui_chromeos_strings_ne.xtb
index 9148b43b..6349f7d 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_ne.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_ne.xtb
@@ -31,7 +31,6 @@
 <translation id="1293556467332435079">फाइलहरू</translation>
 <translation id="1297922636971898492">Google ड्राइभ अहिले उपलब्ध छैन। Google ड्राइभ एकपटक फर्केपचि अपलोड स्वत: सुरुवात हुनेछ।</translation>
 <translation id="1307931752636661898">Linux का फाइलहरू हेर्न सकिएन</translation>
-<translation id="1338950911836659113">मेट्दै...</translation>
 <translation id="1346748346194534595">दायाँ</translation>
 <translation id="1351692861129622852"><ph name="FILE_COUNT" /> फाइलहरू आयात गर्दै...</translation>
 <translation id="1358735829858566124">फाइलवा डाइरेक्टरी प्रयोगयोग्य छैन।</translation>
@@ -43,7 +42,6 @@
 <translation id="1430915738399379752">प्रिन्ट गर्नुहोस्</translation>
 <translation id="1435838927755162558">Parallels Desktop सँग फोल्डर सेयर गर्नुहोस्</translation>
 <translation id="1439494416798956626"><ph name="FOLDER_NAME" />मा सारियो।</translation>
-<translation id="1464724975715666883">1 त्रुटि।</translation>
 <translation id="1467432559032391204">बाँया</translation>
 <translation id="1471718551822868769">स्लोभाकियाली</translation>
 <translation id="1474339897586437869">"<ph name="FILENAME" />"अपलोड गरिएको थिएन। तपाईँको Google ड्राइभमा पर्याप्त खाली ठाउँ छैन।</translation>
@@ -225,11 +223,9 @@
 <translation id="3455931012307786678">इस्टोनियन</translation>
 <translation id="3466147780910026086">तपाईँको मिडिया यन्त्र स्क्यान गरिँदै...</translation>
 <translation id="3468522857997926824"><ph name="FILE_COUNT" /> तस्बिरहरू <ph name="BEGIN_LINK" />Google ड्राइभ<ph name="END_LINK" /> मा जगेडा गरियो</translation>
-<translation id="3470502288861289375">प्रतिलिपि बनाउँदै...</translation>
 <translation id="3473378059788601120"><ph name="FOLDER_NAME" /> मा प्रतिलिपि गरियो।</translation>
 <translation id="3475447146579922140">Google स्प्रेडसिट</translation>
 <translation id="3486821258960016770">मङ्गोलियाली</translation>
-<translation id="3495304270784461826"><ph name="COUNT" /> त्रुटिहरू।</translation>
 <translation id="3522708245912499433">पोर्टुगिज</translation>
 <translation id="3524311639100184459">चेतावनी: यी फाइलहरू अस्थायी हुन् र भण्डारण स्थान खाली गर्नका निम्ति यी फाइल स्वतः मेटाइन सक्छन्।  <ph name="BEGIN_LINK" />थप जान्नुहोस्<ph name="END_LINK" /></translation>
 <translation id="3527085408025491307">फोल्डर</translation>
@@ -239,7 +235,6 @@
 <translation id="357479282490346887">लिथुएनियन</translation>
 <translation id="3603385196401704894">क्यानाडाली फ्रान्सेली</translation>
 <translation id="3606220979431771195">टर्किस-एफ</translation>
-<translation id="3609785682760573515">समक्रमण हुँदै...</translation>
 <translation id="3616113530831147358">अडियो</translation>
 <translation id="3619115746895587757">कापाचिनो</translation>
 <translation id="3620292326130836921">सबै जगेडा गरियो!</translation>
@@ -531,7 +526,6 @@
 <translation id="6657585470893396449">पासवर्ड</translation>
 <translation id="6673674183150363784">फ्रान्सेली (फ्रान्स) Bépo किबोर्ड</translation>
 <translation id="6710213216561001401">अघिल्लो</translation>
-<translation id="6718273304615422081">जिप गर्दै...</translation>
 <translation id="6751256176799620176">१ फोल्डरलाई चयन गरियो</translation>
 <translation id="6790428901817661496">प्ले गर्नुहोस्</translation>
 <translation id="6795884519221689054">पान्डा</translation>
@@ -731,7 +725,6 @@
 <translation id="8600173386174225982">फाइलको सूचीको दृश्य परिवर्तन गरी थम्बनेल दृश्य बनाइयो।</translation>
 <translation id="8601932370724196034">Crostini छवि फाइल</translation>
 <translation id="8609695766746872526">आइसल्यान्डिक</translation>
-<translation id="8669949407341943408">सारिँदै छ...</translation>
 <translation id="8698464937041809063">Google ड्रइङ</translation>
 <translation id="8712637175834984815">भयो</translation>
 <translation id="8713112442029511308">माल्टिज</translation>
@@ -754,7 +747,6 @@
 <translation id="9034924485347205037">Linux का फाइलहरू</translation>
 <translation id="9035012421917565900">यी वस्तुहरूलाई फेरि '<ph name="DESTINATION_NAME" />' मा सार्न सकिँदैन, त्यसैले तपाईं यस कार्यलाई अन्डू गर्न सक्नुहुनेछैन।</translation>
 <translation id="9038620279323455325">"<ph name="FILE_NAME" />" नाम गरेको फाइल पहिलेदेखि नै अवस्थित छ। कृपया कुनै फरक नाम चयन गर्नुहोस्।</translation>
-<translation id="9064939804718829769">सरुवा गर्दै...</translation>
 <translation id="9065203028668620118">सम्पादन गर्नुहोस</translation>
 <translation id="908378762078012445">रसियाली फोनेटिक AATSEEL किबोर्ड</translation>
 <translation id="9099674669267916096">पृष्ठको गणना</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_nl.xtb b/ui/chromeos/translations/ui_chromeos_strings_nl.xtb
index b11efae..42aa662 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_nl.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_nl.xtb
@@ -31,7 +31,6 @@
 <translation id="1293556467332435079">Bestanden</translation>
 <translation id="1297922636971898492">Google Drive is momenteel niet beschikbaar. Het uploaden wordt automatisch gestart zodra Google Drive weer beschikbaar is.</translation>
 <translation id="1307931752636661898">Kan Linux-bestanden niet weergeven</translation>
-<translation id="1338950911836659113">Verwijderen...</translation>
 <translation id="1346748346194534595">Rechts</translation>
 <translation id="1351692861129622852"><ph name="FILE_COUNT" /> bestanden importeren...</translation>
 <translation id="1358735829858566124">Het bestand of de map is niet bruikbaar.</translation>
@@ -43,7 +42,6 @@
 <translation id="1430915738399379752">Afdrukken</translation>
 <translation id="1435838927755162558">Map delen met Parallels Desktop</translation>
 <translation id="1439494416798956626">Verplaatst naar <ph name="FOLDER_NAME" />.</translation>
-<translation id="1464724975715666883">1 fout.</translation>
 <translation id="1467432559032391204">Links</translation>
 <translation id="1471718551822868769">Slowaaks</translation>
 <translation id="1474339897586437869">'<ph name="FILENAME" />' is niet geüpload. Er is onvoldoende ruimte beschikbaar in je Google Drive.</translation>
@@ -225,11 +223,9 @@
 <translation id="3455931012307786678">Estlands</translation>
 <translation id="3466147780910026086">Je media-apparaat scannen...</translation>
 <translation id="3468522857997926824">Er is een back-up van <ph name="FILE_COUNT" /> foto's gemaakt in <ph name="BEGIN_LINK" />Google Drive<ph name="END_LINK" /></translation>
-<translation id="3470502288861289375">Kopiëren...</translation>
 <translation id="3473378059788601120">Gekopieerd naar <ph name="FOLDER_NAME" />.</translation>
 <translation id="3475447146579922140">Google-spreadsheet</translation>
 <translation id="3486821258960016770">Mongools</translation>
-<translation id="3495304270784461826"><ph name="COUNT" /> fouten.</translation>
 <translation id="3522708245912499433">Portugees</translation>
 <translation id="3524311639100184459">Let op: Deze bestanden zijn tijdelijk en kunnen automatisch worden verwijderd om schijfruimte vrij te maken.  <ph name="BEGIN_LINK" />Meer informatie<ph name="END_LINK" /></translation>
 <translation id="3527085408025491307">Map</translation>
@@ -239,7 +235,6 @@
 <translation id="357479282490346887">Litouws</translation>
 <translation id="3603385196401704894">Canadees Frans</translation>
 <translation id="3606220979431771195">Turks-F</translation>
-<translation id="3609785682760573515">Synchroniseren...</translation>
 <translation id="3616113530831147358">Audio</translation>
 <translation id="3619115746895587757">Cappuccino</translation>
 <translation id="3620292326130836921">Er is een back-up van alles gemaakt</translation>
@@ -533,7 +528,6 @@
 <translation id="6657585470893396449">Wachtwoord</translation>
 <translation id="6673674183150363784">Frans (Frankrijk) met Bépo-toetsenbord</translation>
 <translation id="6710213216561001401">Vorige</translation>
-<translation id="6718273304615422081">Inpakken...</translation>
 <translation id="6751256176799620176">1 map geselecteerd</translation>
 <translation id="6790428901817661496">Spelen</translation>
 <translation id="6795884519221689054">Panda</translation>
@@ -733,7 +727,6 @@
 <translation id="8600173386174225982">Bestandslijst is gewijzigd naar miniatuurweergave.</translation>
 <translation id="8601932370724196034">Crostini-afbeeldingsbestand</translation>
 <translation id="8609695766746872526">IJslands</translation>
-<translation id="8669949407341943408">Verplaatsen…</translation>
 <translation id="8698464937041809063">Google-tekening</translation>
 <translation id="8712637175834984815">Begrepen</translation>
 <translation id="8713112442029511308">Maltees</translation>
@@ -756,7 +749,6 @@
 <translation id="9034924485347205037">Linux-bestanden</translation>
 <translation id="9035012421917565900">De items kunnen niet worden teruggezet naar '<ph name="DESTINATION_NAME" />', dus je kunt deze actie niet ongedaan maken.</translation>
 <translation id="9038620279323455325">Er bestaat al een bestand met de naam '<ph name="FILE_NAME" />'. Kies een andere naam.</translation>
-<translation id="9064939804718829769">Overdragen...</translation>
 <translation id="9065203028668620118">Bewerken</translation>
 <translation id="908378762078012445">Russisch met fonetisch AATSEEL-toetsenbord</translation>
 <translation id="9099674669267916096">Aantal pagina's</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_no.xtb b/ui/chromeos/translations/ui_chromeos_strings_no.xtb
index 9bfa8b6..6f0eb84 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_no.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_no.xtb
@@ -31,7 +31,6 @@
 <translation id="1293556467332435079">Filer</translation>
 <translation id="1297922636971898492">Google Disk er ikke tilgjengelig for øyeblikket. Opplastingen starter automatisk på nytt når Google Disk er tilgjengelig.</translation>
 <translation id="1307931752636661898">Kan ikke vise Linux-filer</translation>
-<translation id="1338950911836659113">Sletter …</translation>
 <translation id="1346748346194534595">Høyre</translation>
 <translation id="1351692861129622852">Importerer <ph name="FILE_COUNT" /> filer ...</translation>
 <translation id="1358735829858566124">Filen eller katalogen ikke er brukbar.</translation>
@@ -43,7 +42,6 @@
 <translation id="1430915738399379752">Skriv ut</translation>
 <translation id="1435838927755162558">Del mappen med Parallels Desktop</translation>
 <translation id="1439494416798956626">Flyttet til <ph name="FOLDER_NAME" />.</translation>
-<translation id="1464724975715666883">1 feil.</translation>
 <translation id="1467432559032391204">Venstre</translation>
 <translation id="1471718551822868769">Slovakisk</translation>
 <translation id="1474339897586437869">«<ph name="FILENAME" />» ble ikke lastet opp. Det er ikke nok ledig plass på Google Disk.</translation>
@@ -226,11 +224,9 @@
 <translation id="3455931012307786678">Estisk</translation>
 <translation id="3466147780910026086">Skanner medieenheten din ...</translation>
 <translation id="3468522857997926824"><ph name="FILE_COUNT" /> bilder ble sikkerhetskopiert til <ph name="BEGIN_LINK" />Google Disk<ph name="END_LINK" /></translation>
-<translation id="3470502288861289375">Kopierer ...</translation>
 <translation id="3473378059788601120">Kopiert til <ph name="FOLDER_NAME" />.</translation>
 <translation id="3475447146579922140">Google-regneark</translation>
 <translation id="3486821258960016770">Mongolsk</translation>
-<translation id="3495304270784461826"><ph name="COUNT" /> feil.</translation>
 <translation id="3522708245912499433">Portugisisk</translation>
 <translation id="3524311639100184459">Advarsel: Disse filene er midlertidige og kan bli slettet automatisk for å frigjøre diskplass.  <ph name="BEGIN_LINK" />Finn ut mer<ph name="END_LINK" /></translation>
 <translation id="3527085408025491307">Mappe</translation>
@@ -240,7 +236,6 @@
 <translation id="357479282490346887">Litauisk</translation>
 <translation id="3603385196401704894">Canadisk fransk</translation>
 <translation id="3606220979431771195">Tyrkisk F</translation>
-<translation id="3609785682760573515">Synkroniserer …</translation>
 <translation id="3616113530831147358">Lyd</translation>
 <translation id="3619115746895587757">Cappuccino</translation>
 <translation id="3620292326130836921">Alt er sikkerhetskopiert!</translation>
@@ -533,7 +528,6 @@
 <translation id="6657585470893396449">Passord</translation>
 <translation id="6673674183150363784">Fransk (Frankrike) med Bépo-tastatur</translation>
 <translation id="6710213216561001401">Forrige</translation>
-<translation id="6718273304615422081">Zipper ...</translation>
 <translation id="6751256176799620176">1 mappe er valgt</translation>
 <translation id="6790428901817661496">Spill av</translation>
 <translation id="6795884519221689054">Panda</translation>
@@ -733,7 +727,6 @@
 <translation id="8600173386174225982">Fillisten vises nå i miniatyrbildevisning.</translation>
 <translation id="8601932370724196034">Crostini-bildefil</translation>
 <translation id="8609695766746872526">Islandsk</translation>
-<translation id="8669949407341943408">Flytter …</translation>
 <translation id="8698464937041809063">Google-tegning</translation>
 <translation id="8712637175834984815">Skjønner</translation>
 <translation id="8713112442029511308">Maltesisk</translation>
@@ -756,7 +749,6 @@
 <translation id="9034924485347205037">Linux-filer</translation>
 <translation id="9035012421917565900">Disse elementene kan ikke flyttes tilbake til «<ph name="DESTINATION_NAME" />», så du kan ikke angre denne handlingen.</translation>
 <translation id="9038620279323455325">Filnavnet «<ph name="FILE_NAME" />» finnes allerede. Velg et annet navn.</translation>
-<translation id="9064939804718829769">Overfører ...</translation>
 <translation id="9065203028668620118">Endre</translation>
 <translation id="908378762078012445">Russisk med fonetisk AATSEEL-tastatur</translation>
 <translation id="9099674669267916096">Antall sider</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_or.xtb b/ui/chromeos/translations/ui_chromeos_strings_or.xtb
index 6a78757..19399b3 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_or.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_or.xtb
@@ -31,7 +31,6 @@
 <translation id="1293556467332435079">Files</translation>
 <translation id="1297922636971898492">ଏହି କ୍ଷଣି Google ଡ୍ରାଇଭ୍ ଉପଲବ୍ଧ ନାହିଁ। ଥରେ Google ଡ୍ରାଇଭ୍ କାର୍ଯ୍ୟକ୍ଷମ ହୋଇଗଲେ, ଅପ୍‍‍ଲୋଡ୍ ସ୍ଵଚାଳିତ ଭାବେ ରିଷ୍ଟାର୍ଟ ହେବ।</translation>
 <translation id="1307931752636661898">Linux ଫାଇଲ୍‌ଗୁଡ଼ିକ ଦେଖିପାରୁନାହିଁ</translation>
-<translation id="1338950911836659113">ଡିଲିଟ୍ କରାଯାଉଛି…</translation>
 <translation id="1346748346194534595">ଡାହାଣ</translation>
 <translation id="1351692861129622852"><ph name="FILE_COUNT" /> ଟି ଫାଇଲ୍ ଇମ୍ପୋର୍ଟ କରାଯାଉଛି...</translation>
 <translation id="1358735829858566124">ଫାଇଲ୍ ବା ଡିରେକ୍ଟୋରୀ ବ୍ୟବହାର ଯୋଗ୍ୟ ନୁହେଁ।</translation>
@@ -43,7 +42,6 @@
 <translation id="1430915738399379752">ପ୍ରିଣ୍ଟ କରନ୍ତୁ</translation>
 <translation id="1435838927755162558">Parallels Desktop ସହ ଫୋଲ୍ଡର ସେୟାର୍ କରନ୍ତୁ</translation>
 <translation id="1439494416798956626"><ph name="FOLDER_NAME" />କୁ ନିଆଗଲା।</translation>
-<translation id="1464724975715666883">1ଟି ତ୍ରୁଟି।</translation>
 <translation id="1467432559032391204">ବାମ</translation>
 <translation id="1471718551822868769">ସ୍ଲୋଭାକ୍</translation>
 <translation id="1474339897586437869">"<ph name="FILENAME" />" ଅପ୍‌ଲୋଡ୍‍ କରାଯାଇନଥିଲା। ଆପଣଙ୍କର Google Driveରେ ଯଥେଷ୍ଟ ମୁକ୍ତ ସ୍ଥାନ ନାହିଁ।</translation>
@@ -225,11 +223,9 @@
 <translation id="3455931012307786678">ଇସ୍ତୋନିଆନ୍</translation>
 <translation id="3466147780910026086">ଆପଣଙ୍କର ମେଡିଆ ଡିଭାଇସ୍ ସ୍କାନ୍ ହେଉଛି...</translation>
 <translation id="3468522857997926824"><ph name="FILE_COUNT" />ଟି ଫଟୋକୁ <ph name="BEGIN_LINK" />Google Drive<ph name="END_LINK" />ରେ ବ୍ୟାକ୍‌ଅପ୍‌ ନିଆଯାଇଛି</translation>
-<translation id="3470502288861289375">କପି କରାଯାଉଛି…</translation>
 <translation id="3473378059788601120"><ph name="FOLDER_NAME" />କୁ କପି କରାଯାଇଛି।</translation>
 <translation id="3475447146579922140">Google ସ୍ପ୍ରେଡ୍‌ସିଟ୍</translation>
 <translation id="3486821258960016770">ମଙ୍ଗୋଲିଆନ୍</translation>
-<translation id="3495304270784461826"><ph name="COUNT" />ଟି ତ୍ରୁଟି।</translation>
 <translation id="3522708245912499433">ପର୍ତ୍ତୁଗୀଜ୍</translation>
 <translation id="3524311639100184459">ସାବଧାନ: ଏହି ଫାଇଲଗୁଡ଼ିକ ଅସ୍ଥାୟୀ ଅଟେ ଏବଂ ଡିସ୍କରେ ଜାଗା ଖାଲି କରିବା ପାଇଁ ଏଗୁଡ଼ିକ ସ୍ୱଚାଳିତ ଭାବେ ଡିଲିଟ୍ ହୋଇଯାଇପାରେ।  <ph name="BEGIN_LINK" />ଅଧିକ ଜାଣନ୍ତୁ<ph name="END_LINK" /></translation>
 <translation id="3527085408025491307">ଫୋଲ୍ଡର୍</translation>
@@ -239,7 +235,6 @@
 <translation id="357479282490346887">ଲିଥୁଆନିଆନ୍</translation>
 <translation id="3603385196401704894">କାନାଡିଆନ୍ ଫ୍ରେଞ୍ଚ୍</translation>
 <translation id="3606220979431771195">ତୁର୍କୀସ୍-F</translation>
-<translation id="3609785682760573515">ସିଙ୍କ୍‍ କରୁଛି…</translation>
 <translation id="3616113530831147358">ଅଡିଓ</translation>
 <translation id="3619115746895587757">କ୍ୟାପାଚିନୋ</translation>
 <translation id="3620292326130836921">ସମସ୍ତ ବ୍ୟାକ୍‍ଅପ୍‍ ନିଆଯାଇଛି!</translation>
@@ -526,7 +521,6 @@
 <translation id="6657585470893396449">ପାସ୍‌ୱର୍ଡ</translation>
 <translation id="6673674183150363784">Bépo କୀବୋର୍ଡ ସହ ଫରାସୀ (ଫ୍ରାନ୍ସ)</translation>
 <translation id="6710213216561001401">ପୂର୍ବବର୍ତ୍ତୀ</translation>
-<translation id="6718273304615422081">ଜିପ୍ ହେଉଛି...</translation>
 <translation id="6751256176799620176">1ଟି ଫୋଲ୍ଡର୍ ଚୟନ କରାଯାଇଛି</translation>
 <translation id="6790428901817661496">ଚଲାନ୍ତୁ</translation>
 <translation id="6795884519221689054">ପାଣ୍ଡା</translation>
@@ -726,7 +720,6 @@
 <translation id="8600173386174225982">ଫାଇଲ୍‌ ତାଲିକାକୁ ଥମ୍ବନେଲ୍ ଭ୍ୟୁରେ ପରିବର୍ତ୍ତନ କରାଯାଇଛି।</translation>
 <translation id="8601932370724196034">Crostini ଛବି ଫାଇଲ୍</translation>
 <translation id="8609695766746872526">ଆଇସଲାଣ୍ଡିକ୍</translation>
-<translation id="8669949407341943408">ଘୁଞ୍ଚୁଛି …</translation>
 <translation id="8698464937041809063">Google ଡ୍ରଇଂ</translation>
 <translation id="8712637175834984815">ବୁଝିଗଲି</translation>
 <translation id="8713112442029511308">ମାଲଟିଜ୍</translation>
@@ -749,7 +742,6 @@
 <translation id="9034924485347205037">Linux ଫାଇଲ୍‍ଗୁଡ଼ିକ</translation>
 <translation id="9035012421917565900">ଆଇଟମ୍‌କୁ <ph name="DESTINATION_NAME" />'କୁ ଫେରାଇ ନିଆଯାଇପାରିଲା ନାହିଁ, ତେଣୁ ଏହି କାର୍ଯ୍ୟକୁ ଆପଣ ପୂର୍ବବତ୍‍ କରିପାରିବେ ନାହିଁ।</translation>
 <translation id="9038620279323455325">"<ph name="FILE_NAME" />" ଫାଇଲ୍ ନାମ ପୂର୍ବରୁ ବିଦ୍ୟମାନ ଅଛି। ଏକ ଭିନ୍ନ ନାମ ବ୍ୟବହାର କରନ୍ତୁ।</translation>
-<translation id="9064939804718829769">ସ୍ଥାନାନ୍ତର ହେଉଛି…</translation>
 <translation id="9065203028668620118">ସମ୍ପାଦନ</translation>
 <translation id="908378762078012445">ଫୋନେଟିକ୍ AATSEEL କୀବୋର୍ଡ ସହ ଋଷୀୟ</translation>
 <translation id="9099674669267916096">ପୃଷ୍ଠା ସଂଖ୍ୟା</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_pa.xtb b/ui/chromeos/translations/ui_chromeos_strings_pa.xtb
index a7dd061..eb60b58c 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_pa.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_pa.xtb
@@ -31,7 +31,6 @@
 <translation id="1293556467332435079">Files</translation>
 <translation id="1297922636971898492">Google Drive ਹੁਣ ਉਪਲਬਧ ਨਹੀਂ ਹੈ। ਅਪਲੋਡਿੰਗ ਸਵੈਚਲਿਤ ਤੌਰ 'ਤੇ ਮੁੜ-ਸ਼ੁਰੂ ਹੋਵੇਗਾ ਜਦੋਂ Google Drive ਵਾਪਸ ਆਉਂਦੀ ਹੋਵੇ।</translation>
 <translation id="1307931752636661898">Linux ਫ਼ਾਈਲਾਂ ਨੂੰ ਦੇਖਿਆ ਨਹੀਂ ਜਾ ਸਕਿਆ</translation>
-<translation id="1338950911836659113">ਮਿਟਾ ਰਿਹਾ ਹੈ...</translation>
 <translation id="1346748346194534595">ਸੱਜਾ</translation>
 <translation id="1351692861129622852"><ph name="FILE_COUNT" /> ਫਾਈਲਾਂ ਆਯਾਤ ਕਰ  ਰਿਹਾ ਹੈ...</translation>
 <translation id="1358735829858566124">ਫਾਈਲ ਜਾਂ ਡਾਇਰੈਕਟਰੀ ਵਰਤੋਂ ਯੋਗ ਨਹੀਂ ਹੈ।</translation>
@@ -43,7 +42,6 @@
 <translation id="1430915738399379752">ਪ੍ਰਿੰਟ ਕਰੋ</translation>
 <translation id="1435838927755162558">Parallels Desktop ਨਾਲ ਫੋਲਡਰ ਸਾਂਝਾ ਕਰੋ</translation>
 <translation id="1439494416798956626"><ph name="FOLDER_NAME" /> ਵਿੱਚ ਲਿਜਾਈ ਗਈ।</translation>
-<translation id="1464724975715666883">1 ਗੜਬੜ।</translation>
 <translation id="1467432559032391204">ਖੱਬੇ ਪਾਸੇ</translation>
 <translation id="1471718551822868769">ਸਲੋਵਾਕ</translation>
 <translation id="1474339897586437869">"<ph name="FILENAME" />" ਅਪਲੋਡ ਨਹੀਂ ਕੀਤੀ ਗਈ ਸੀ। ਤੁਹਾਡੀ Google Drive ਵਿੱਚ ਪੂਰਾ ਖਾਲੀ ਸਪੇਸ ਨਹੀਂ ਹੈ।</translation>
@@ -225,11 +223,9 @@
 <translation id="3455931012307786678">ਇਸਤੋਨੀਆਈ</translation>
 <translation id="3466147780910026086">ਤੁਹਾਡਾ ਮੀਡੀਆ ਡੀਵਾਈਸ ਸਕੈਨ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ...</translation>
 <translation id="3468522857997926824"><ph name="FILE_COUNT" /> ਫ਼ੋਟੋਆਂ <ph name="BEGIN_LINK" />Google Drive<ph name="END_LINK" /> ਵਿੱਚ ਬੈਕ ਅਪ ਕੀਤੀਆਂ ਗਈਆਂ</translation>
-<translation id="3470502288861289375">ਕਾਪੀ ਕਰ ਰਿਹਾ ਹੈ...</translation>
 <translation id="3473378059788601120"><ph name="FOLDER_NAME" /> ਵਿੱਚ ਕਾਪੀ ਕੀਤਾ ਗਿਆ।</translation>
 <translation id="3475447146579922140">Google spreadsheet</translation>
 <translation id="3486821258960016770">ਮੰਗੋਲੀਆਈ</translation>
-<translation id="3495304270784461826"><ph name="COUNT" /> ਅਸ਼ੁੱਧੀਆਂ।</translation>
 <translation id="3522708245912499433">ਪੋਰਤੂਗੂਈਸ</translation>
 <translation id="3524311639100184459">ਸਾਵਧਾਨ: ਇਹ ਫ਼ਾਈਲਾਂ ਅਸਥਾਈ ਹਨ ਅਤੇ ਡਿਸਕ ਵਿੱਚ ਜਗ੍ਹਾ ਨੂੰ ਖਾਲੀ ਕਰਨ ਲਈ ਸਵੈਚਲਿਤ ਤੌਰ 'ਤੇ ਮਿਟਾਈਆਂ ਜਾ ਸਕਦੀਆਂ ਹਨ।  <ph name="BEGIN_LINK" />ਹੋਰ ਜਾਣੋ<ph name="END_LINK" /></translation>
 <translation id="3527085408025491307">ਫੋਲਡਰ</translation>
@@ -239,7 +235,6 @@
 <translation id="357479282490346887">Lithuanian</translation>
 <translation id="3603385196401704894">ਕੈਨੇਡੀਅਨ ਫ੍ਰੈਂਚ</translation>
 <translation id="3606220979431771195">ਤੁਰਕੀ-F</translation>
-<translation id="3609785682760573515">ਸਿੰਕ ਕਰ ਰਿਹਾ ਹੈ...</translation>
 <translation id="3616113530831147358">ਆਡੀਓ</translation>
 <translation id="3619115746895587757">ਕੈਪੁਚੀਨੋ</translation>
 <translation id="3620292326130836921">ਸਾਰੇ ਬੈਕ ਅਪ ਕੀਤੇ ਗਏ!</translation>
@@ -531,7 +526,6 @@
 <translation id="6657585470893396449">ਪਾਸਵਰਡ</translation>
 <translation id="6673674183150363784">Bépo ਕੀ-ਬੋਰਡ ਨਾਲ ਫ਼ਰਾਂਸੀਸੀ (ਫ਼ਰਾਂਸ)</translation>
 <translation id="6710213216561001401">ਪਿਛਲਾ</translation>
-<translation id="6718273304615422081">ਜ਼ਿਪ ਕਰ ਰਿਹਾ ਹੈ...</translation>
 <translation id="6751256176799620176">1 ਫੋਲਡਰ ਚੁਣਿਆ ਗਿਆ</translation>
 <translation id="6790428901817661496">ਪਲੇ ਕਰੋ</translation>
 <translation id="6795884519221689054">ਪਾਂਡਾ</translation>
@@ -731,7 +725,6 @@
 <translation id="8600173386174225982">ਫ਼ਾਈਲ ਸੂਚੀ, ਲਘੂ-ਚਿੱਤਰ ਦ੍ਰਿਸ਼ ਵਿੱਚ ਬਦਲ ਗਈ ਹੈ।</translation>
 <translation id="8601932370724196034">Crostini ਈਮੇਜ ਫ਼ਾਈਲ</translation>
 <translation id="8609695766746872526">ਆਈਸਲੈਂਡੀ</translation>
-<translation id="8669949407341943408">ਮੂਵ ਕਰ ਰਿਹਾ ਹੈ...</translation>
 <translation id="8698464937041809063">Google ਡਰਾਇੰਗ</translation>
 <translation id="8712637175834984815">ਸਮਝ ਲਿਆ</translation>
 <translation id="8713112442029511308">ਮਾਲਟਾਈ</translation>
@@ -754,7 +747,6 @@
 <translation id="9034924485347205037">Linux ਫ਼ਾਈਲਾਂ</translation>
 <translation id="9035012421917565900">ਆਈਟਮਾਂ ਨੂੰ '<ph name="DESTINATION_NAME" />' ਵਿੱਚ ਵਾਪਸ ਤਬਦੀਲ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਦਾ, ਇਸ ਕਰਕੇ ਤੁਸੀਂ ਇਸ ਕਾਰਵਾਈ ਨੂੰ ਅਣਕੀਤਾ ਕਰਨ ਦੇ ਯੋਗ ਨਹੀਂ ਹੋਵੋਗੇ।</translation>
 <translation id="9038620279323455325">"<ph name="FILE_NAME" />" ਨਾਮਕ ਫ਼ਾਈਲ ਪਹਿਲਾਂ ਹੀ ਮੌਜੂਦ ਹੈ। ਕਿਰਪਾ ਕਰਕੇ ਕੋਈ ਵੱਖਰਾ ਨਾਮ ਚੁਣੋ।</translation>
-<translation id="9064939804718829769">ਟ੍ਰਾਂਸਫਰ ਕਰ ਰਿਹਾ ਹੈ...</translation>
 <translation id="9065203028668620118">ਸੰਪਾਦਿਤ ਕਰੋ</translation>
 <translation id="908378762078012445">ਧੁਨੀਆਤਮਿਕ AATSEEL ਕੀ-ਬੋਰਡ ਦੇ ਨਾਲ ਰੂਸੀ</translation>
 <translation id="9099674669267916096">ਪੰਨਾ ਗਿਣਤੀ</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_pl.xtb b/ui/chromeos/translations/ui_chromeos_strings_pl.xtb
index ab374d4..f88e759a 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_pl.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_pl.xtb
@@ -31,7 +31,6 @@
 <translation id="1293556467332435079">Pliki</translation>
 <translation id="1297922636971898492">Dysk Google nie jest teraz dostępny. Gdy znów będzie można z niego korzystać, przesyłanie zostanie automatycznie wznowione.</translation>
 <translation id="1307931752636661898">Nie można wyświetlić plików Linuksa</translation>
-<translation id="1338950911836659113">Usuwam...</translation>
 <translation id="1346748346194534595">W prawo</translation>
 <translation id="1351692861129622852">Importuję <ph name="FILE_COUNT" /> pliki(ów)...</translation>
 <translation id="1358735829858566124">Plik lub katalog nie nadaje się do użycia.</translation>
@@ -43,7 +42,6 @@
 <translation id="1430915738399379752">Drukuj</translation>
 <translation id="1435838927755162558">Udostępnij folder aplikacji Parallels Desktop</translation>
 <translation id="1439494416798956626">Przeniesiono do: <ph name="FOLDER_NAME" />.</translation>
-<translation id="1464724975715666883">1 błąd.</translation>
 <translation id="1467432559032391204">W lewo</translation>
 <translation id="1471718551822868769">Słowacki</translation>
 <translation id="1474339897586437869">Plik „<ph name="FILENAME" />” nie został przesłany. Za mało wolnego miejsca na Dysku Google.</translation>
@@ -226,11 +224,9 @@
 <translation id="3455931012307786678">Estoński</translation>
 <translation id="3466147780910026086">Skanuję nośnik danych...</translation>
 <translation id="3468522857997926824">Kopie zapasowe <ph name="FILE_COUNT" /> zdjęć zostały utworzone na <ph name="BEGIN_LINK" />Dysku Google<ph name="END_LINK" /></translation>
-<translation id="3470502288861289375">Kopiuję...</translation>
 <translation id="3473378059788601120">Skopiowano do: <ph name="FOLDER_NAME" />.</translation>
 <translation id="3475447146579922140">Arkusz kalkulacyjny Google</translation>
 <translation id="3486821258960016770">Mongolski</translation>
-<translation id="3495304270784461826">Błędy: <ph name="COUNT" />.</translation>
 <translation id="3522708245912499433">Portugalski</translation>
 <translation id="3524311639100184459">Uwaga: te pliki mają charakter tymczasowy i mogą zostać automatycznie usunięte w celu zwolnienia miejsca na dysku.  <ph name="BEGIN_LINK" />Więcej informacji<ph name="END_LINK" /></translation>
 <translation id="3527085408025491307">Folder</translation>
@@ -240,7 +236,6 @@
 <translation id="357479282490346887">Litewski</translation>
 <translation id="3603385196401704894">kanadyjski francuski</translation>
 <translation id="3606220979431771195">Turecki (wersja F)</translation>
-<translation id="3609785682760573515">Synchronizuję...</translation>
 <translation id="3616113530831147358">Dźwięk</translation>
 <translation id="3619115746895587757">Cappuccino</translation>
 <translation id="3620292326130836921">Wszystko ma już kopię zapasową.</translation>
@@ -533,7 +528,6 @@
 <translation id="6657585470893396449">Hasło</translation>
 <translation id="6673674183150363784">Francuski (Francja) z klawiaturą Bépo</translation>
 <translation id="6710213216561001401">Poprzedni</translation>
-<translation id="6718273304615422081">Pakuję...</translation>
 <translation id="6751256176799620176">Wybrano jeden folder</translation>
 <translation id="6790428901817661496">Odtwórz</translation>
 <translation id="6795884519221689054">Panda</translation>
@@ -733,7 +727,6 @@
 <translation id="8600173386174225982">Lista plików została przełączona na widok miniatur.</translation>
 <translation id="8601932370724196034">Plik graficzny Crostini</translation>
 <translation id="8609695766746872526">Islandzki</translation>
-<translation id="8669949407341943408">Przenoszę...</translation>
 <translation id="8698464937041809063">Rysunek Google</translation>
 <translation id="8712637175834984815">Rozumiem</translation>
 <translation id="8713112442029511308">Maltański</translation>
@@ -756,7 +749,6 @@
 <translation id="9034924485347205037">Pliki Linuksa</translation>
 <translation id="9035012421917565900">Nie można przenieść elementów z powrotem do: „<ph name="DESTINATION_NAME" />”, więc tej czynności nie da się cofnąć.</translation>
 <translation id="9038620279323455325">Istnieje już plik o nazwie „<ph name="FILE_NAME" />”. Wybierz inną nazwę.</translation>
-<translation id="9064939804718829769">Przetwarzam...</translation>
 <translation id="9065203028668620118">Edytuj</translation>
 <translation id="908378762078012445">Rosyjski z klawiaturą fonetyczną AATSEEL</translation>
 <translation id="9099674669267916096">Liczba stron</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_pt-BR.xtb b/ui/chromeos/translations/ui_chromeos_strings_pt-BR.xtb
index c20005a..6e6f318 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_pt-BR.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_pt-BR.xtb
@@ -31,7 +31,6 @@
 <translation id="1293556467332435079">Arquivos</translation>
 <translation id="1297922636971898492">O Google Drive não está disponível no momento. O upload será reiniciado automaticamente assim que o Google Drive estiver de volta.</translation>
 <translation id="1307931752636661898">Não é possível ver os arquivos do Linux</translation>
-<translation id="1338950911836659113">Excluindo...</translation>
 <translation id="1346748346194534595">À direita</translation>
 <translation id="1351692861129622852">Importando <ph name="FILE_COUNT" /> arquivos...</translation>
 <translation id="1358735829858566124">O arquivo ou o diretório não é utilizável.</translation>
@@ -43,7 +42,6 @@
 <translation id="1430915738399379752">Imprimir</translation>
 <translation id="1435838927755162558">Compartilhar pasta com o Parallels Desktop</translation>
 <translation id="1439494416798956626">Movido para <ph name="FOLDER_NAME" />.</translation>
-<translation id="1464724975715666883">Um erro.</translation>
 <translation id="1467432559032391204">À esquerda</translation>
 <translation id="1471718551822868769">Eslovaco</translation>
 <translation id="1474339897586437869">Não foi feito o upload de "<ph name="FILENAME" />". Não há espaço livre suficiente no seu Google Drive.</translation>
@@ -225,11 +223,9 @@
 <translation id="3455931012307786678">Estoniano</translation>
 <translation id="3466147780910026086">Verificando seu dispositivo de mídia...</translation>
 <translation id="3468522857997926824">Foi realizado o backup de <ph name="FILE_COUNT" /> fotos para o <ph name="BEGIN_LINK" />Google Drive<ph name="END_LINK" /></translation>
-<translation id="3470502288861289375">Copiando...</translation>
 <translation id="3473378059788601120">Copiado para <ph name="FOLDER_NAME" />.</translation>
 <translation id="3475447146579922140">Planilha do Google</translation>
 <translation id="3486821258960016770">Mongol</translation>
-<translation id="3495304270784461826"><ph name="COUNT" /> erros.</translation>
 <translation id="3522708245912499433">Português</translation>
 <translation id="3524311639100184459">Atenção: esses arquivos são temporários e podem ser excluídos automaticamente para liberar espaço em disco.  <ph name="BEGIN_LINK" />Saiba mais<ph name="END_LINK" /></translation>
 <translation id="3527085408025491307">Pasta</translation>
@@ -239,7 +235,6 @@
 <translation id="357479282490346887">Lituano</translation>
 <translation id="3603385196401704894">Francês canadense</translation>
 <translation id="3606220979431771195">Turco-F</translation>
-<translation id="3609785682760573515">Sincronizando...</translation>
 <translation id="3616113530831147358">Áudio</translation>
 <translation id="3619115746895587757">Cappuccino</translation>
 <translation id="3620292326130836921">Backup completo.</translation>
@@ -532,7 +527,6 @@
 <translation id="6657585470893396449">Senha</translation>
 <translation id="6673674183150363784">Francês (França) com teclado Bépo</translation>
 <translation id="6710213216561001401">Anterior</translation>
-<translation id="6718273304615422081">Compactando...</translation>
 <translation id="6751256176799620176">1 pasta selecionada</translation>
 <translation id="6790428901817661496">Reproduzir</translation>
 <translation id="6795884519221689054">Panda</translation>
@@ -732,7 +726,6 @@
 <translation id="8600173386174225982">A lista de arquivos foi alterada para a visualização em miniatura.</translation>
 <translation id="8601932370724196034">Arquivo de imagem do Crostini</translation>
 <translation id="8609695766746872526">Islandês</translation>
-<translation id="8669949407341943408">Movendo...</translation>
 <translation id="8698464937041809063">Desenho do Google</translation>
 <translation id="8712637175834984815">Entendi</translation>
 <translation id="8713112442029511308">Maltês</translation>
@@ -755,7 +748,6 @@
 <translation id="9034924485347205037">Arquivos do Linux</translation>
 <translation id="9035012421917565900">Os itens não poderão retornar para '<ph name="DESTINATION_NAME" />', portanto, você não poderá desfazer esta ação.</translation>
 <translation id="9038620279323455325">O arquivo chamado "<ph name="FILE_NAME" />" já existe. Escolha outro nome.</translation>
-<translation id="9064939804718829769">Transferindo...</translation>
 <translation id="9065203028668620118">Editar</translation>
 <translation id="908378762078012445">Russo com teclado fonético AATSEEL</translation>
 <translation id="9099674669267916096">Contagem de páginas</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_pt-PT.xtb b/ui/chromeos/translations/ui_chromeos_strings_pt-PT.xtb
index 6b5c6e2..101c9925 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_pt-PT.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_pt-PT.xtb
@@ -31,7 +31,6 @@
 <translation id="1293556467332435079">Ficheiros</translation>
 <translation id="1297922636971898492">De momento, o Google Drive não está disponível. O carregamento será reiniciado automaticamente assim que o Google Drive voltar a estar disponível.</translation>
 <translation id="1307931752636661898">Não é possível ver os ficheiros Linux.</translation>
-<translation id="1338950911836659113">A eliminar...</translation>
 <translation id="1346748346194534595">Direita</translation>
 <translation id="1351692861129622852">A importar <ph name="FILE_COUNT" /> ficheiros...</translation>
 <translation id="1358735829858566124">O ficheiro ou o diretório não pode ser utilizado.</translation>
@@ -43,7 +42,6 @@
 <translation id="1430915738399379752">Imprimir</translation>
 <translation id="1435838927755162558">Partilhe a pasta com o Parallels Desktop</translation>
 <translation id="1439494416798956626">Movido para <ph name="FOLDER_NAME" /></translation>
-<translation id="1464724975715666883">1 erro.</translation>
 <translation id="1467432559032391204">Esquerda</translation>
 <translation id="1471718551822868769">Eslovaco</translation>
 <translation id="1474339897586437869">"<ph name="FILENAME" />" não foi carregado. Não existe espaço livre suficiente no seu Google Drive.</translation>
@@ -226,11 +224,9 @@
 <translation id="3455931012307786678">Estónio</translation>
 <translation id="3466147780910026086">A analisar o dispositivo multimédia...</translation>
 <translation id="3468522857997926824">Foi feita uma cópia de segurança de <ph name="FILE_COUNT" /> fotos no <ph name="BEGIN_LINK" />Google Drive<ph name="END_LINK" /></translation>
-<translation id="3470502288861289375">A copiar...</translation>
 <translation id="3473378059788601120">Copiado para <ph name="FOLDER_NAME" />.</translation>
 <translation id="3475447146579922140">Folha de cálculo do Google</translation>
 <translation id="3486821258960016770">Mongol</translation>
-<translation id="3495304270784461826"><ph name="COUNT" /> erros.</translation>
 <translation id="3522708245912499433">Português</translation>
 <translation id="3524311639100184459">Cuidado: estes ficheiros são temporários e podem ser automaticamente eliminados para libertar espaço em disco.  <ph name="BEGIN_LINK" />Saber mais<ph name="END_LINK" /></translation>
 <translation id="3527085408025491307">Pasta</translation>
@@ -240,7 +236,6 @@
 <translation id="357479282490346887">Lituânia</translation>
 <translation id="3603385196401704894">Francês canadiano</translation>
 <translation id="3606220979431771195">Turco-F</translation>
-<translation id="3609785682760573515">A sincronizar…</translation>
 <translation id="3616113530831147358">Áudio</translation>
 <translation id="3619115746895587757">Cappuccino</translation>
 <translation id="3620292326130836921">Foi feita uma cópia de segurança de todos os ficheiros!</translation>
@@ -533,7 +528,6 @@
 <translation id="6657585470893396449">Palavra-passe</translation>
 <translation id="6673674183150363784">Francês (França) com teclado Bépo</translation>
 <translation id="6710213216561001401">Anterior</translation>
-<translation id="6718273304615422081">A comprimir...</translation>
 <translation id="6751256176799620176">1 pasta selecionada</translation>
 <translation id="6790428901817661496">Reproduzir</translation>
 <translation id="6795884519221689054">Panda</translation>
@@ -733,7 +727,6 @@
 <translation id="8600173386174225982">A lista de ficheiros foi alterada para a vista de miniatura.</translation>
 <translation id="8601932370724196034">Ficheiro de imagem do Crostini</translation>
 <translation id="8609695766746872526">Islandês</translation>
-<translation id="8669949407341943408">A mover...</translation>
 <translation id="8698464937041809063">Desenho do Google</translation>
 <translation id="8712637175834984815">Entendido</translation>
 <translation id="8713112442029511308">Maltês</translation>
@@ -756,7 +749,6 @@
 <translation id="9034924485347205037">Ficheiros Linux</translation>
 <translation id="9035012421917565900">Não é possível mover os itens novamente para "<ph name="DESTINATION_NAME" />", pelo que não pode anular esta ação.</translation>
 <translation id="9038620279323455325">O ficheiro com o nome "<ph name="FILE_NAME" />" já existe. Escolha um nome diferente.</translation>
-<translation id="9064939804718829769">A transferir...</translation>
 <translation id="9065203028668620118">Editar</translation>
 <translation id="908378762078012445">Russo com teclado AATSEEL fonético</translation>
 <translation id="9099674669267916096">Contagem de páginas</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_ro.xtb b/ui/chromeos/translations/ui_chromeos_strings_ro.xtb
index 04a07fc..4f4725a 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_ro.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_ro.xtb
@@ -31,7 +31,6 @@
 <translation id="1293556467332435079">Fișiere</translation>
 <translation id="1297922636971898492">Google Drive nu este disponibil momentan. Încărcarea va reporni automat când Google Drive va putea fi accesat.</translation>
 <translation id="1307931752636661898">Fișierele Linux nu pot fi afișate</translation>
-<translation id="1338950911836659113">Se șterge…</translation>
 <translation id="1346748346194534595">Dreapta</translation>
 <translation id="1351692861129622852">Se importă <ph name="FILE_COUNT" /> fișiere...</translation>
 <translation id="1358735829858566124">Fișierul sau directorul nu este utilizabil.</translation>
@@ -43,7 +42,6 @@
 <translation id="1430915738399379752">Printează</translation>
 <translation id="1435838927755162558">Permite accesul Parallels Desktop la dosar</translation>
 <translation id="1439494416798956626">Mutat în <ph name="FOLDER_NAME" />.</translation>
-<translation id="1464724975715666883">1 eroare.</translation>
 <translation id="1467432559032391204">Stânga</translation>
 <translation id="1471718551822868769">Slovacă</translation>
 <translation id="1474339897586437869">„<ph name="FILENAME" />” nu s-a încărcat. Nu există spațiu liber suficient în Google Drive.</translation>
@@ -226,11 +224,9 @@
 <translation id="3455931012307786678">Estoniană</translation>
 <translation id="3466147780910026086">Se scanează dispozitivul media...</translation>
 <translation id="3468522857997926824"><ph name="FILE_COUNT" /> fotografii cu backup pe <ph name="BEGIN_LINK" />Google Drive<ph name="END_LINK" /></translation>
-<translation id="3470502288861289375">Se copiază...</translation>
 <translation id="3473378059788601120">S-a copiat în <ph name="FOLDER_NAME" />.</translation>
 <translation id="3475447146579922140">Foaie de calcul Google</translation>
 <translation id="3486821258960016770">Mongolă</translation>
-<translation id="3495304270784461826"><ph name="COUNT" /> erori.</translation>
 <translation id="3522708245912499433">Portugheză</translation>
 <translation id="3524311639100184459">Atenție: aceste fișiere sunt temporare și pot fi șterse automat pentru a elibera spațiu pe disc.  <ph name="BEGIN_LINK" />Află mai multe<ph name="END_LINK" /></translation>
 <translation id="3527085408025491307">Dosar</translation>
@@ -240,7 +236,6 @@
 <translation id="357479282490346887">Lituaniană</translation>
 <translation id="3603385196401704894">Franceză canadiană</translation>
 <translation id="3606220979431771195">Turcă-F</translation>
-<translation id="3609785682760573515">Se sincronizează...</translation>
 <translation id="3616113530831147358">Audio</translation>
 <translation id="3619115746895587757">Cappuccino</translation>
 <translation id="3620292326130836921">S-a făcut backup pentru tot!</translation>
@@ -533,7 +528,6 @@
 <translation id="6657585470893396449">Parolă</translation>
 <translation id="6673674183150363784">Franceză (Franța) cu tastatură Bépo</translation>
 <translation id="6710213216561001401">Înapoi</translation>
-<translation id="6718273304615422081">Se arhivează...</translation>
 <translation id="6751256176799620176">Un dosar selectat</translation>
 <translation id="6790428901817661496">Redă</translation>
 <translation id="6795884519221689054">Panda</translation>
@@ -733,7 +727,6 @@
 <translation id="8600173386174225982">Lista de fișiere s-a modificat la vizualizare cu miniaturi.</translation>
 <translation id="8601932370724196034">Fișier imagine Crostini</translation>
 <translation id="8609695766746872526">Islandeză</translation>
-<translation id="8669949407341943408">Se mută...</translation>
 <translation id="8698464937041809063">Desen Google</translation>
 <translation id="8712637175834984815">Am înțeles</translation>
 <translation id="8713112442029511308">Malteză</translation>
@@ -756,7 +749,6 @@
 <translation id="9034924485347205037">Fișiere Linux</translation>
 <translation id="9035012421917565900">Articolele nu pot fi mutate înapoi în „<ph name="DESTINATION_NAME" />”, prin urmare, nu vei putea să anulezi această acțiune.</translation>
 <translation id="9038620279323455325">Fișierul cu numele „<ph name="FILE_NAME" />” există deja. Alege un alt nume.</translation>
-<translation id="9064939804718829769">Se transferă...</translation>
 <translation id="9065203028668620118">Editează</translation>
 <translation id="908378762078012445">Tastatură rusă fonetică AATSEEL</translation>
 <translation id="9099674669267916096">Numărul de pagini</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_ru.xtb b/ui/chromeos/translations/ui_chromeos_strings_ru.xtb
index c24a966..533b41e 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_ru.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_ru.xtb
@@ -31,7 +31,6 @@
 <translation id="1293556467332435079">Файлы</translation>
 <translation id="1297922636971898492">Google Диск временно недоступен. Когда доступ будет восстановлен, загрузка автоматически возобновится.</translation>
 <translation id="1307931752636661898">Нет доступа к файлам Linux</translation>
-<translation id="1338950911836659113">Удаление…</translation>
 <translation id="1346748346194534595">Справа</translation>
 <translation id="1351692861129622852">Импорт файлов (<ph name="FILE_COUNT" />)...</translation>
 <translation id="1358735829858566124">Этот файл или каталог непригоден для использования.</translation>
@@ -43,7 +42,6 @@
 <translation id="1430915738399379752">Печать</translation>
 <translation id="1435838927755162558">Предоставление Parallels Desktop доступа к папке</translation>
 <translation id="1439494416798956626">Перемещено в папку "<ph name="FOLDER_NAME" />".</translation>
-<translation id="1464724975715666883">1 ошибка.</translation>
 <translation id="1467432559032391204">Слева</translation>
 <translation id="1471718551822868769">Словацкий</translation>
 <translation id="1474339897586437869">Не удалось загрузить <ph name="FILENAME" />. Не хватает пространства на Google Диске.</translation>
@@ -225,11 +223,9 @@
 <translation id="3455931012307786678">Эстонский</translation>
 <translation id="3466147780910026086">Сканирование устройства...</translation>
 <translation id="3468522857997926824">На <ph name="BEGIN_LINK" />Google Диске<ph name="END_LINK" /> сохранено <ph name="FILE_COUNT" /> фото</translation>
-<translation id="3470502288861289375">Копирование…</translation>
 <translation id="3473378059788601120">Скопировано в папку "<ph name="FOLDER_NAME" />".</translation>
 <translation id="3475447146579922140">Электронная таблица Google</translation>
 <translation id="3486821258960016770">Монгольский</translation>
-<translation id="3495304270784461826">Ошибок: <ph name="COUNT" />.</translation>
 <translation id="3522708245912499433">Португальский</translation>
 <translation id="3524311639100184459">Внимание! Эти файлы – временные. Они могут быть автоматически удалены, чтобы освободить место на диске.  <ph name="BEGIN_LINK" />Подробнее…<ph name="END_LINK" /></translation>
 <translation id="3527085408025491307">Папка</translation>
@@ -239,7 +235,6 @@
 <translation id="357479282490346887">Литовский</translation>
 <translation id="3603385196401704894">Канадская (французская)</translation>
 <translation id="3606220979431771195">Турецкая раскладка</translation>
-<translation id="3609785682760573515">Cинхронизация…</translation>
 <translation id="3616113530831147358">Аудио</translation>
 <translation id="3619115746895587757">Капучино</translation>
 <translation id="3620292326130836921">Данные сохранены!</translation>
@@ -532,7 +527,6 @@
 <translation id="6657585470893396449">Пароль</translation>
 <translation id="6673674183150363784">Французский (Франция), раскладка Bépo</translation>
 <translation id="6710213216561001401">Назад</translation>
-<translation id="6718273304615422081">Архивирование…</translation>
 <translation id="6751256176799620176">1 папка выбрана</translation>
 <translation id="6790428901817661496">Воспроизвести</translation>
 <translation id="6795884519221689054">Панда</translation>
@@ -732,7 +726,6 @@
 <translation id="8600173386174225982">Файлы отображаются в виде значков.</translation>
 <translation id="8601932370724196034">Графический файл Crostini</translation>
 <translation id="8609695766746872526">Исландский</translation>
-<translation id="8669949407341943408">Перемещение...</translation>
 <translation id="8698464937041809063">Рисунок Google</translation>
 <translation id="8712637175834984815">Готово</translation>
 <translation id="8713112442029511308">Мальтийский</translation>
@@ -755,7 +748,6 @@
 <translation id="9034924485347205037">Файлы Linux</translation>
 <translation id="9035012421917565900">Объекты нельзя переместить обратно на общий диск "<ph name="DESTINATION_NAME" />", поэтому вы не сможете отменить это действие.</translation>
 <translation id="9038620279323455325">Файл "<ph name="FILE_NAME" />" уже существует. Выберите другое название.</translation>
-<translation id="9064939804718829769">Обработка…</translation>
 <translation id="9065203028668620118">Изменить</translation>
 <translation id="908378762078012445">Русский, фонетическая раскладка AATSEEL</translation>
 <translation id="9099674669267916096">Количество страниц</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_si.xtb b/ui/chromeos/translations/ui_chromeos_strings_si.xtb
index a7ac684e..e76f625 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_si.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_si.xtb
@@ -31,7 +31,6 @@
 <translation id="1293556467332435079">ගොනු</translation>
 <translation id="1297922636971898492">Google Drive මේ මොහොතේ ලබා ගත නොහැක. Google Drive නැවත ලැබුණු පසුව පැටවීම ස්වයංක්‍රීයව ආරම්භ වනු ඇත.</translation>
 <translation id="1307931752636661898">Linux ගොනු බැලීමට නොහැකිය</translation>
-<translation id="1338950911836659113">ඉවත්කරමින්...</translation>
 <translation id="1346748346194534595">දක්ෂිණාවර්ත</translation>
 <translation id="1351692861129622852">ගොනු <ph name="FILE_COUNT" /> ක් ආයාත කරමින්...</translation>
 <translation id="1358735829858566124">ගොනුව හෝ නාමාවලිය භාවිතා කළ නොහැක.</translation>
@@ -43,7 +42,6 @@
 <translation id="1430915738399379752">මුද්‍රණය කරන්න</translation>
 <translation id="1435838927755162558">Parallels Desktop සමඟ ෆෝල්ඩරය බෙදා ගන්න</translation>
 <translation id="1439494416798956626"><ph name="FOLDER_NAME" /> වෙත ගෙනයන ලදි.</translation>
-<translation id="1464724975715666883">දෝෂය 1.</translation>
 <translation id="1467432559032391204">වම</translation>
 <translation id="1471718551822868769">ස්ලෝවැක්</translation>
 <translation id="1474339897586437869">"<ph name="FILENAME" />" උඩුගත නොකරන ලදී. ඔබේ Google Drive මත ප්‍රමාණවත් තරම් හිස් ඉඩ නැත.</translation>
@@ -226,11 +224,9 @@
 <translation id="3455931012307786678">එස්තෝනියානු</translation>
 <translation id="3466147780910026086">ඔබගේ මාධ්‍ය උපාංගය පරිලෝකනය කරමින්...</translation>
 <translation id="3468522857997926824"><ph name="BEGIN_LINK" />Google Drive<ph name="END_LINK" /> වෙත ඡායාරූප <ph name="FILE_COUNT" /> ක් උපස්ථ කරන ලදි</translation>
-<translation id="3470502288861289375">පිටපත් කෙරෙමින්...</translation>
 <translation id="3473378059788601120"><ph name="FOLDER_NAME" /> වෙත පිටපත් කළා.</translation>
 <translation id="3475447146579922140">Google පැතුරුම්පත</translation>
 <translation id="3486821258960016770">මොන්ගෝලියානු</translation>
-<translation id="3495304270784461826">දෝෂ <ph name="COUNT" />.</translation>
 <translation id="3522708245912499433">පෘතුගීසි</translation>
 <translation id="3524311639100184459">අවවාදය: මෙම ගොනු තාවකාලික වන අතර, තැටි ඉඩ නිදහස් කිරීමට ස්වයංක්‍රීයව මකනු ලැබිය හැක.  <ph name="BEGIN_LINK" />තවත් දැන ගන්න<ph name="END_LINK" /></translation>
 <translation id="3527085408025491307">ෆෝල්ඩරය</translation>
@@ -240,7 +236,6 @@
 <translation id="357479282490346887">ලිතුවේනියානු</translation>
 <translation id="3603385196401704894">කැනේඩියානු ප්‍රංශ</translation>
 <translation id="3606220979431771195">තුර්කි-F</translation>
-<translation id="3609785682760573515">සමමු වේ...</translation>
 <translation id="3616113530831147358">ශබ්ද</translation>
 <translation id="3619115746895587757">කපුචිනෝ</translation>
 <translation id="3620292326130836921">සියල්ල උපස්ථ කර ඇත!</translation>
@@ -532,7 +527,6 @@
 <translation id="6657585470893396449">මුරපදය</translation>
 <translation id="6673674183150363784">Bépo යතුරු පුවරුව සමග ප්‍රංශ (ප්‍රංශය)</translation>
 <translation id="6710213216561001401">පෙර</translation>
-<translation id="6718273304615422081">zip කරමින්...</translation>
 <translation id="6751256176799620176">ෆෝල්ඩර 1ක් තෝරන ලදී</translation>
 <translation id="6790428901817661496">වාදනය කරන්න</translation>
 <translation id="6795884519221689054">පැන්ඩා</translation>
@@ -732,7 +726,6 @@
 <translation id="8600173386174225982">ගොනු ලැයිස්තුව සිඟිති රූ දසුනට වෙනස් විය.</translation>
 <translation id="8601932370724196034">Crostini රූප ගොනුව</translation>
 <translation id="8609695766746872526">අයිස්ලන්ත</translation>
-<translation id="8669949407341943408">ගෙන යමින්...</translation>
 <translation id="8698464937041809063">Google ඇඳීම්</translation>
 <translation id="8712637175834984815">එය ලැබුණා</translation>
 <translation id="8713112442029511308">මොල්ටීස්</translation>
@@ -755,7 +748,6 @@
 <translation id="9034924485347205037">Linux ගොනු</translation>
 <translation id="9035012421917565900">අයිතම නැවත '<ph name="DESTINATION_NAME" />' වෙත ගෙන යාමට නොහැකිය, එබැවින් ඔබට මෙම ක්‍රියාව පසුගමනය කළ නොහැකි වනු ඇත.</translation>
 <translation id="9038620279323455325">"<ph name="FILE_NAME" />" නමැති ගොනුව දැනටමත් පවතියි . වෙනත් නමක් තෝරන්න.</translation>
-<translation id="9064939804718829769">මාරු කෙරෙමින්...</translation>
 <translation id="9065203028668620118">සංස්කරණය කරන්න</translation>
 <translation id="908378762078012445">ශබ්දිම AATSEEL යතුරුපුවරුව සමග රුසියානු</translation>
 <translation id="9099674669267916096">පිටු ගණන</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_sk.xtb b/ui/chromeos/translations/ui_chromeos_strings_sk.xtb
index e4f2919..4df097d 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_sk.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_sk.xtb
@@ -31,7 +31,6 @@
 <translation id="1293556467332435079">Súbory</translation>
 <translation id="1297922636971898492">Služba Disk Google práve teraz nie je k dispozícii. Nahrávanie sa automaticky spustí znova, keď bude služba Disk Google opäť dostupná.</translation>
 <translation id="1307931752636661898">Súbory systému Linux sa nedajú zobraziť</translation>
-<translation id="1338950911836659113">Prebieha odstraňovanie...</translation>
 <translation id="1346748346194534595">Doprava</translation>
 <translation id="1351692861129622852">Importujú sa súbory (počet: <ph name="FILE_COUNT" />)...</translation>
 <translation id="1358735829858566124">Súbor alebo adresár nie je možné použiť.</translation>
@@ -43,7 +42,6 @@
 <translation id="1430915738399379752">Tlačiť</translation>
 <translation id="1435838927755162558">Zdieľanie priečinka aplikáciou Parallels Desktop</translation>
 <translation id="1439494416798956626">Presunuté do priečinka: <ph name="FOLDER_NAME" />.</translation>
-<translation id="1464724975715666883">1 chyba.</translation>
 <translation id="1467432559032391204">Doľava</translation>
 <translation id="1471718551822868769">Slovenská klávesnica</translation>
 <translation id="1474339897586437869">Súbor <ph name="FILENAME" /> nebol nahraný. Na Disku Google nemáte dostatok voľného miesta.</translation>
@@ -226,11 +224,9 @@
 <translation id="3455931012307786678">Estónska klávesnica</translation>
 <translation id="3466147780910026086">Prehľadáva sa mediálne zariadenie...</translation>
 <translation id="3468522857997926824">Počet fotiek zálohovaných na <ph name="BEGIN_LINK" />Disk Google<ph name="END_LINK" />: <ph name="FILE_COUNT" /></translation>
-<translation id="3470502288861289375">Prebieha kopírovanie...</translation>
 <translation id="3473378059788601120">Skopírované do priečinka: <ph name="FOLDER_NAME" />.</translation>
 <translation id="3475447146579922140">Tabuľka Google</translation>
 <translation id="3486821258960016770">Mongolská klávesnica</translation>
-<translation id="3495304270784461826">Počet chýb: <ph name="COUNT" />.</translation>
 <translation id="3522708245912499433">Portugalčina</translation>
 <translation id="3524311639100184459">Upozornenie: Tieto súbory sú dočasné a môžu byť automaticky odstránené na uvoľnenie priestoru na disku.  <ph name="BEGIN_LINK" />Ďalšie informácie<ph name="END_LINK" /></translation>
 <translation id="3527085408025491307">Priečinok</translation>
@@ -240,7 +236,6 @@
 <translation id="357479282490346887">Litovčina</translation>
 <translation id="3603385196401704894">Kanadská francúzska klávesnica</translation>
 <translation id="3606220979431771195">Turecká (typ F)</translation>
-<translation id="3609785682760573515">Prebieha synchronizácia...</translation>
 <translation id="3616113530831147358">Zvuk</translation>
 <translation id="3619115746895587757">Kapučíno</translation>
 <translation id="3620292326130836921">Všetko je zálohované!</translation>
@@ -533,7 +528,6 @@
 <translation id="6657585470893396449">Heslo</translation>
 <translation id="6673674183150363784">Francúzska (Francúzsko) klávesnica Bépo</translation>
 <translation id="6710213216561001401">Späť</translation>
-<translation id="6718273304615422081">Prebieha komprimovanie...</translation>
 <translation id="6751256176799620176">1 vybratý súbor</translation>
 <translation id="6790428901817661496">Prehrať</translation>
 <translation id="6795884519221689054">Panda</translation>
@@ -733,7 +727,6 @@
 <translation id="8600173386174225982">Zoznam súborov sa zmenil na zobrazenie miniatúr.</translation>
 <translation id="8601932370724196034">Súbor obrázka Crostini</translation>
 <translation id="8609695766746872526">Islandská klávesnica</translation>
-<translation id="8669949407341943408">Presúva sa...</translation>
 <translation id="8698464937041809063">Nákres Google</translation>
 <translation id="8712637175834984815">Dobre</translation>
 <translation id="8713112442029511308">Maltská klávesnica</translation>
@@ -756,7 +749,6 @@
 <translation id="9034924485347205037">Súbory systému Linux</translation>
 <translation id="9035012421917565900">Položky sa nedajú presunúť späť do cieľa <ph name="DESTINATION_NAME" />, takže túto akciu nebude možné vrátiť späť.</translation>
 <translation id="9038620279323455325">Súbor s názvom <ph name="FILE_NAME" /> už existuje. Vyberte iný názov.</translation>
-<translation id="9064939804718829769">Prevádza sa...</translation>
 <translation id="9065203028668620118">Upraviť</translation>
 <translation id="908378762078012445">Ruská fonetická klávesnica (AATSEEL)</translation>
 <translation id="9099674669267916096">Počet strán</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_sl.xtb b/ui/chromeos/translations/ui_chromeos_strings_sl.xtb
index b55472ad..e9e1129 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_sl.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_sl.xtb
@@ -31,7 +31,6 @@
 <translation id="1293556467332435079">Datoteke</translation>
 <translation id="1297922636971898492">Google Drive trenutno ni na voljo. Ko bo spet na voljo, se bo prenos samodejno začel znova.</translation>
 <translation id="1307931752636661898">Ni si mogoče ogledati datotek za Linux</translation>
-<translation id="1338950911836659113">Brisanje ...</translation>
 <translation id="1346748346194534595">V desno</translation>
 <translation id="1351692861129622852">Uvoz toliko datotek: <ph name="FILE_COUNT" /> ...</translation>
 <translation id="1358735829858566124">Neuporabna datoteka ali imenik.</translation>
@@ -43,7 +42,6 @@
 <translation id="1430915738399379752">Natisni</translation>
 <translation id="1435838927755162558">Deljenje mape s programom Parallels Desktop</translation>
 <translation id="1439494416798956626">Premaknjeno v mapo <ph name="FOLDER_NAME" />.</translation>
-<translation id="1464724975715666883">1 napaka.</translation>
 <translation id="1467432559032391204">V levo</translation>
 <translation id="1471718551822868769">slovaščina</translation>
 <translation id="1474339897586437869">Datoteka »<ph name="FILENAME" />« ni bila naložena. V Googlu Drive nimate dovolj razpoložljivega prostora.</translation>
@@ -226,11 +224,9 @@
 <translation id="3455931012307786678">estonščina</translation>
 <translation id="3466147780910026086">Pregledovanje predstavnostne naprave ...</translation>
 <translation id="3468522857997926824">V <ph name="BEGIN_LINK" />Google Drive<ph name="END_LINK" /> je varnostno kopiranih toliko fotografij: <ph name="FILE_COUNT" /></translation>
-<translation id="3470502288861289375">Kopiranje ...</translation>
 <translation id="3473378059788601120">Kopirano v mapo <ph name="FOLDER_NAME" /></translation>
 <translation id="3475447146579922140">Googlova preglednica</translation>
 <translation id="3486821258960016770">mongolščina</translation>
-<translation id="3495304270784461826">Št. napak: <ph name="COUNT" />.</translation>
 <translation id="3522708245912499433">portugalščina</translation>
 <translation id="3524311639100184459">Pozor: Te datoteke so začasne in bodo morda samodejno izbrisane, da se sprosti prostor na disku.  <ph name="BEGIN_LINK" />Več o tem<ph name="END_LINK" /></translation>
 <translation id="3527085408025491307">Mapa</translation>
@@ -240,7 +236,6 @@
 <translation id="357479282490346887">litovščina</translation>
 <translation id="3603385196401704894">kanadska francoščina</translation>
 <translation id="3606220979431771195">Turška tipkovnica F</translation>
-<translation id="3609785682760573515">Sinhroniziranje ...</translation>
 <translation id="3616113530831147358">Zvok</translation>
 <translation id="3619115746895587757">Kapučino</translation>
 <translation id="3620292326130836921">Vse je varnostno kopirano!</translation>
@@ -533,7 +528,6 @@
 <translation id="6657585470893396449">Geslo</translation>
 <translation id="6673674183150363784">francoščina (Francija) s tipkovnico Bépo</translation>
 <translation id="6710213216561001401">Prejšnji</translation>
-<translation id="6718273304615422081">Stiskanje ...</translation>
 <translation id="6751256176799620176">Izbrana je 1 mapa</translation>
 <translation id="6790428901817661496">Predvajanje</translation>
 <translation id="6795884519221689054">Panda</translation>
@@ -733,7 +727,6 @@
 <translation id="8600173386174225982">Seznam datotek je spremenjen na pogled sličic.</translation>
 <translation id="8601932370724196034">Slikovna datoteka za Crostini</translation>
 <translation id="8609695766746872526">islandščina</translation>
-<translation id="8669949407341943408">Premikanje ...</translation>
 <translation id="8698464937041809063">Googlova risba</translation>
 <translation id="8712637175834984815">Razumem</translation>
 <translation id="8713112442029511308">malteščina</translation>
@@ -756,7 +749,6 @@
 <translation id="9034924485347205037">Datoteke za Linux</translation>
 <translation id="9035012421917565900">Elementov ni mogoče premakniti nazaj v »<ph name="DESTINATION_NAME" />«, zato tega dejanja ne bo mogoče razveljaviti.</translation>
 <translation id="9038620279323455325">Datoteka z imenom »<ph name="FILE_NAME" />« že obstaja. Izberite drugo ime.</translation>
-<translation id="9064939804718829769">Prenašanje ...</translation>
 <translation id="9065203028668620118">Uredi</translation>
 <translation id="908378762078012445">ruščina s fonetično tipkovnico AATSEEL</translation>
 <translation id="9099674669267916096">Število strani</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_sq.xtb b/ui/chromeos/translations/ui_chromeos_strings_sq.xtb
index ba38d3a..d5a4e650 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_sq.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_sq.xtb
@@ -31,7 +31,6 @@
 <translation id="1293556467332435079">Skedarët</translation>
 <translation id="1297922636971898492">"Disku i Google" nuk ofrohet tani. Ngarkimi do të rifillojë automatikisht pasi të kthehet "Disku i Google".</translation>
 <translation id="1307931752636661898">Nuk mund të shihen skedarët e Linux</translation>
-<translation id="1338950911836659113">Po fshin...</translation>
 <translation id="1346748346194534595">Djathtas</translation>
 <translation id="1351692861129622852">Po importon <ph name="FILE_COUNT" /> skedarë...</translation>
 <translation id="1358735829858566124">Skedari ose direktoria nuk është i përdorshëm.</translation>
@@ -43,7 +42,6 @@
 <translation id="1430915738399379752">Printo</translation>
 <translation id="1435838927755162558">Ndaje dosjen me Parallels Desktop</translation>
 <translation id="1439494416798956626">Zhvendosur te <ph name="FOLDER_NAME" />.</translation>
-<translation id="1464724975715666883">1 gabim.</translation>
 <translation id="1467432559032391204">Majtas</translation>
 <translation id="1471718551822868769">Sllovakisht</translation>
 <translation id="1474339897586437869">"<ph name="FILENAME" />" nuk u ngarkua. Nuk ka hapësirë të mjaftueshme në "Diskun e Google".</translation>
@@ -226,11 +224,9 @@
 <translation id="3455931012307786678">Estonisht</translation>
 <translation id="3466147780910026086">Po skanon pajisjen e medias...</translation>
 <translation id="3468522857997926824"><ph name="FILE_COUNT" /> fotografi u rezervuan te <ph name="BEGIN_LINK" />Disku i Google<ph name="END_LINK" /></translation>
-<translation id="3470502288861289375">Po kopjon...</translation>
 <translation id="3473378059788601120">Kopjuar te <ph name="FOLDER_NAME" />.</translation>
 <translation id="3475447146579922140">Fletëllogaritësja e Google</translation>
 <translation id="3486821258960016770">Mongolisht</translation>
-<translation id="3495304270784461826"><ph name="COUNT" /> gabime.</translation>
 <translation id="3522708245912499433">Portugalisht</translation>
 <translation id="3524311639100184459">Kujdes! Këta skedarë janë të përkohshëm dhe mund të fshihen automatikisht për të liruar hapësirën në disk.  <ph name="BEGIN_LINK" />Mëso më shumë<ph name="END_LINK" /></translation>
 <translation id="3527085408025491307">Dosje</translation>
@@ -240,7 +236,6 @@
 <translation id="357479282490346887">Lituanisht</translation>
 <translation id="3603385196401704894">Frëngjishte kanadeze</translation>
 <translation id="3606220979431771195">Turke me F</translation>
-<translation id="3609785682760573515">Po sinkronizon...</translation>
 <translation id="3616113530831147358">Audio</translation>
 <translation id="3619115746895587757">Kapuçino</translation>
 <translation id="3620292326130836921">Të gjitha u rezervuan!</translation>
@@ -532,7 +527,6 @@
 <translation id="6657585470893396449">Fjalëkalimi</translation>
 <translation id="6673674183150363784">Frëngjisht (Francë) me tastierë Bépo</translation>
 <translation id="6710213216561001401">Prapa</translation>
-<translation id="6718273304615422081">Po ngjesh...</translation>
 <translation id="6751256176799620176">U zgjodh 1 dosje</translation>
 <translation id="6790428901817661496">Luaj</translation>
 <translation id="6795884519221689054">Panda</translation>
@@ -732,7 +726,6 @@
 <translation id="8600173386174225982">Lista e skedarëve ka ndryshuar në pamjen e miniaturës.</translation>
 <translation id="8601932370724196034">Skedar imazhi Crostini</translation>
 <translation id="8609695766746872526">Islandisht</translation>
-<translation id="8669949407341943408">Po zhvendos...</translation>
 <translation id="8698464937041809063">Vizatimi Google</translation>
 <translation id="8712637175834984815">E kuptova</translation>
 <translation id="8713112442029511308">Maltisht</translation>
@@ -755,7 +748,6 @@
 <translation id="9034924485347205037">Skedarët e Linux</translation>
 <translation id="9035012421917565900">Artikujt nuk mund të zhvendosen sërish te "<ph name="DESTINATION_NAME" />", prandaj nuk do të jesh në gjendje ta zhbësh këtë veprim.</translation>
 <translation id="9038620279323455325">Skedari me emrin "<ph name="FILE_NAME" />" ekziston tashmë. Zgjidh një emër tjetër.</translation>
-<translation id="9064939804718829769">Po transferon...</translation>
 <translation id="9065203028668620118">Redakto</translation>
 <translation id="908378762078012445">Rusisht me tastierë fonetike AATSEEL</translation>
 <translation id="9099674669267916096">Numri i faqeve</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_sr-Latn.xtb b/ui/chromeos/translations/ui_chromeos_strings_sr-Latn.xtb
index 81cbb11c..d063b3f1 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_sr-Latn.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_sr-Latn.xtb
@@ -31,7 +31,6 @@
 <translation id="1293556467332435079">Datoteke</translation>
 <translation id="1297922636971898492">Google disk trenutno nije dostupan. Otpremanje će se automatski ponovo pokrenuti kada Google disk postane dostupan.</translation>
 <translation id="1307931752636661898">Prikaz Linux datoteka nije uspeo</translation>
-<translation id="1338950911836659113">Brisanje...</translation>
 <translation id="1346748346194534595">Udesno</translation>
 <translation id="1351692861129622852">Uvoze se datoteke (<ph name="FILE_COUNT" />)...</translation>
 <translation id="1358735829858566124">Nije moguće koristiti datoteku ili direktorijum.</translation>
@@ -43,7 +42,6 @@
 <translation id="1430915738399379752">Štampaj</translation>
 <translation id="1435838927755162558">Delite direktorijum sa Parallels Desktop-om</translation>
 <translation id="1439494416798956626">Premešteno u: <ph name="FOLDER_NAME" /></translation>
-<translation id="1464724975715666883">1 greška.</translation>
 <translation id="1467432559032391204">Ulevo</translation>
 <translation id="1471718551822868769">slovački</translation>
 <translation id="1474339897586437869">Datoteka „<ph name="FILENAME" />“ nije otpremljena. Nije bilo dovoljno slobodnog mesta na Google disku.</translation>
@@ -226,11 +224,9 @@
 <translation id="3455931012307786678">estonski</translation>
 <translation id="3466147780910026086">Medijski uređaj se skenira...</translation>
 <translation id="3468522857997926824">Rezervna kopija slika (<ph name="FILE_COUNT" />) je napravljena na <ph name="BEGIN_LINK" />Google disku<ph name="END_LINK" /></translation>
-<translation id="3470502288861289375">Kopiranje...</translation>
 <translation id="3473378059788601120">Kopirano je u: <ph name="FOLDER_NAME" /></translation>
 <translation id="3475447146579922140">Google tabela</translation>
 <translation id="3486821258960016770">mongolski</translation>
-<translation id="3495304270784461826"><ph name="COUNT" /> grešaka.</translation>
 <translation id="3522708245912499433">portugalski</translation>
 <translation id="3524311639100184459">Oprez: Ove datoteke su privremene i mogu da se izbrišu automatski kako bi se oslobodio prostor na disku.  <ph name="BEGIN_LINK" />Saznajte više<ph name="END_LINK" /></translation>
 <translation id="3527085408025491307">Direktorijum</translation>
@@ -240,7 +236,6 @@
 <translation id="357479282490346887">litvanski</translation>
 <translation id="3603385196401704894">kanadska francuska</translation>
 <translation id="3606220979431771195">turska F</translation>
-<translation id="3609785682760573515">Sinhronizovanje...</translation>
 <translation id="3616113530831147358">Audio</translation>
 <translation id="3619115746895587757">Kapučino</translation>
 <translation id="3620292326130836921">Napravljene su rezervne kopije svih datoteka!</translation>
@@ -533,7 +528,6 @@
 <translation id="6657585470893396449">Lozinka</translation>
 <translation id="6673674183150363784">francuski (Francuska) sa Bépo tastaturom</translation>
 <translation id="6710213216561001401">Prethodno</translation>
-<translation id="6718273304615422081">Pravljenje zip datoteke...</translation>
 <translation id="6751256176799620176">Izabran je 1 direktorijum</translation>
 <translation id="6790428901817661496">Pusti</translation>
 <translation id="6795884519221689054">Panda</translation>
@@ -733,7 +727,6 @@
 <translation id="8600173386174225982">Lista datoteka se promenila u prikaz sličica.</translation>
 <translation id="8601932370724196034">Crostini datoteka slike</translation>
 <translation id="8609695766746872526">islandski</translation>
-<translation id="8669949407341943408">Premeštanje...</translation>
 <translation id="8698464937041809063">Google crtež</translation>
 <translation id="8712637175834984815">Važi</translation>
 <translation id="8713112442029511308">malteški</translation>
@@ -756,7 +749,6 @@
 <translation id="9034924485347205037">Linux datoteke</translation>
 <translation id="9035012421917565900">Stavke ne mogu da se vrate u „<ph name="DESTINATION_NAME" />“, pa nećete moći da opozovete ovu radnju.</translation>
 <translation id="9038620279323455325">Datoteka „<ph name="FILE_NAME" />“ već postoji. Odaberite drugi naziv.</translation>
-<translation id="9064939804718829769">Prenos...</translation>
 <translation id="9065203028668620118">Izmeni</translation>
 <translation id="908378762078012445">ruski sa fonetskom tastaturom AATSEEL</translation>
 <translation id="9099674669267916096">Broj stranica</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_sr.xtb b/ui/chromeos/translations/ui_chromeos_strings_sr.xtb
index dcc3286..56bcc6a 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_sr.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_sr.xtb
@@ -31,7 +31,6 @@
 <translation id="1293556467332435079">Датотеке</translation>
 <translation id="1297922636971898492">Google диск тренутно није доступан. Отпремање ће се аутоматски поново покренути када Google диск постане доступан.</translation>
 <translation id="1307931752636661898">Приказ Linux датотека није успео</translation>
-<translation id="1338950911836659113">Брисање...</translation>
 <translation id="1346748346194534595">Удесно</translation>
 <translation id="1351692861129622852">Увозе се датотеке (<ph name="FILE_COUNT" />)...</translation>
 <translation id="1358735829858566124">Није могуће користити датотеку или директоријум.</translation>
@@ -43,7 +42,6 @@
 <translation id="1430915738399379752">Штампај</translation>
 <translation id="1435838927755162558">Делите директоријум са Parallels Desktop-ом</translation>
 <translation id="1439494416798956626">Премештено у: <ph name="FOLDER_NAME" /></translation>
-<translation id="1464724975715666883">1 грешка.</translation>
 <translation id="1467432559032391204">Улево</translation>
 <translation id="1471718551822868769">словачки</translation>
 <translation id="1474339897586437869">Датотека „<ph name="FILENAME" />“ није отпремљена. Није било довољно слободног места на Google диску.</translation>
@@ -226,11 +224,9 @@
 <translation id="3455931012307786678">естонски</translation>
 <translation id="3466147780910026086">Медијски уређај се скенира...</translation>
 <translation id="3468522857997926824">Резервна копија слика (<ph name="FILE_COUNT" />) је направљена на <ph name="BEGIN_LINK" />Google диску<ph name="END_LINK" /></translation>
-<translation id="3470502288861289375">Копирање...</translation>
 <translation id="3473378059788601120">Копирано је у: <ph name="FOLDER_NAME" /></translation>
 <translation id="3475447146579922140">Google табела</translation>
 <translation id="3486821258960016770">монголски</translation>
-<translation id="3495304270784461826"><ph name="COUNT" /> грешака.</translation>
 <translation id="3522708245912499433">португалски</translation>
 <translation id="3524311639100184459">Опрез: Ове датотеке су привремене и могу да се избришу аутоматски како би се ослободио простор на диску.  <ph name="BEGIN_LINK" />Сазнајте више<ph name="END_LINK" /></translation>
 <translation id="3527085408025491307">Директоријум</translation>
@@ -240,7 +236,6 @@
 <translation id="357479282490346887">литвански</translation>
 <translation id="3603385196401704894">канадска француска</translation>
 <translation id="3606220979431771195">турска F</translation>
-<translation id="3609785682760573515">Синхронизовање...</translation>
 <translation id="3616113530831147358">Аудио</translation>
 <translation id="3619115746895587757">Капучино</translation>
 <translation id="3620292326130836921">Направљене су резервне копије свих датотека!</translation>
@@ -533,7 +528,6 @@
 <translation id="6657585470893396449">Лозинка</translation>
 <translation id="6673674183150363784">француски (Француска) са Bépo тастатуром</translation>
 <translation id="6710213216561001401">Претходно</translation>
-<translation id="6718273304615422081">Прављење zip датотеке...</translation>
 <translation id="6751256176799620176">Изабран је 1 директоријум</translation>
 <translation id="6790428901817661496">Пусти</translation>
 <translation id="6795884519221689054">Панда</translation>
@@ -733,7 +727,6 @@
 <translation id="8600173386174225982">Листа датотека се променила у приказ сличица.</translation>
 <translation id="8601932370724196034">Crostini датотека слике</translation>
 <translation id="8609695766746872526">исландски</translation>
-<translation id="8669949407341943408">Премештање...</translation>
 <translation id="8698464937041809063">Google цртеж</translation>
 <translation id="8712637175834984815">Важи</translation>
 <translation id="8713112442029511308">малтешки</translation>
@@ -756,7 +749,6 @@
 <translation id="9034924485347205037">Linux датотеке</translation>
 <translation id="9035012421917565900">Ставке не могу да се врате у „<ph name="DESTINATION_NAME" />“, па нећете моћи да опозовете ову радњу.</translation>
 <translation id="9038620279323455325">Датотека „<ph name="FILE_NAME" />“ већ постоји. Одаберите други назив.</translation>
-<translation id="9064939804718829769">Пренос...</translation>
 <translation id="9065203028668620118">Измени</translation>
 <translation id="908378762078012445">руски са фонетском тастатуром AATSEEL</translation>
 <translation id="9099674669267916096">Број страница</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_sv.xtb b/ui/chromeos/translations/ui_chromeos_strings_sv.xtb
index c15ec61d..4187e77 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_sv.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_sv.xtb
@@ -31,7 +31,6 @@
 <translation id="1293556467332435079">Filer</translation>
 <translation id="1297922636971898492">Google Drive är inte tillgängligt för närvarande. Överföringen fortsätter automatiskt när Google Drive är tillgängligt igen.</translation>
 <translation id="1307931752636661898">Det går inte att visa Linux-filer</translation>
-<translation id="1338950911836659113">Uppgifterna tas bort ...</translation>
 <translation id="1346748346194534595">Höger</translation>
 <translation id="1351692861129622852">Importerar <ph name="FILE_COUNT" /> filer …</translation>
 <translation id="1358735829858566124">Filen eller katalogen kan inte användas.</translation>
@@ -43,7 +42,6 @@
 <translation id="1430915738399379752">Skriv ut</translation>
 <translation id="1435838927755162558">Dela mappen med Parallels Desktop</translation>
 <translation id="1439494416798956626">Har flyttats till <ph name="FOLDER_NAME" />.</translation>
-<translation id="1464724975715666883">1 fel.</translation>
 <translation id="1467432559032391204">Vänster</translation>
 <translation id="1471718551822868769">slovakiska</translation>
 <translation id="1474339897586437869"><ph name="FILENAME" /> laddades inte upp. Det fanns inte tillräckligt mycket ledigt utrymme på Google Drive.</translation>
@@ -226,11 +224,9 @@
 <translation id="3455931012307786678">estniska</translation>
 <translation id="3466147780910026086">Söker igenom mediaenheten ...</translation>
 <translation id="3468522857997926824"><ph name="FILE_COUNT" /> foton har säkerhetskopierats på <ph name="BEGIN_LINK" />Google Drive<ph name="END_LINK" /></translation>
-<translation id="3470502288861289375">Kopierar ...</translation>
 <translation id="3473378059788601120">Kopierad till <ph name="FOLDER_NAME" />.</translation>
 <translation id="3475447146579922140">Kalkylark i Google Dokument</translation>
 <translation id="3486821258960016770">mongoliska</translation>
-<translation id="3495304270784461826"><ph name="COUNT" /> fel.</translation>
 <translation id="3522708245912499433">portugisiska</translation>
 <translation id="3524311639100184459">Obs! De här filerna är tillfälliga och kan tas bort automatiskt för att frigöra utrymme på hårddisken.  <ph name="BEGIN_LINK" />Läs mer<ph name="END_LINK" /></translation>
 <translation id="3527085408025491307">Mapp</translation>
@@ -240,7 +236,6 @@
 <translation id="357479282490346887">litauiska</translation>
 <translation id="3603385196401704894">Kanadensisk franska</translation>
 <translation id="3606220979431771195">Turkiska F</translation>
-<translation id="3609785682760573515">Synkroniserar ...</translation>
 <translation id="3616113530831147358">Ljud</translation>
 <translation id="3619115746895587757">Cappuccino</translation>
 <translation id="3620292326130836921">Allt har säkerhetskopierats!</translation>
@@ -533,7 +528,6 @@
 <translation id="6657585470893396449">Lösenord</translation>
 <translation id="6673674183150363784">franska (Frankrike) med Bépo-tangentbord</translation>
 <translation id="6710213216561001401">Föregående</translation>
-<translation id="6718273304615422081">Komprimerar ...</translation>
 <translation id="6751256176799620176">1 mapp har valts</translation>
 <translation id="6790428901817661496">Spela</translation>
 <translation id="6795884519221689054">Panda</translation>
@@ -733,7 +727,6 @@
 <translation id="8600173386174225982">Fillistan har ändrats till miniatyrvy.</translation>
 <translation id="8601932370724196034">Bildfil för Crostini</translation>
 <translation id="8609695766746872526">isländska</translation>
-<translation id="8669949407341943408">Flyttar …</translation>
 <translation id="8698464937041809063">Google-teckning</translation>
 <translation id="8712637175834984815">Uppfattat</translation>
 <translation id="8713112442029511308">maltesiska</translation>
@@ -756,7 +749,6 @@
 <translation id="9034924485347205037">Linux-filer</translation>
 <translation id="9035012421917565900">Eftersom det inte går att flytta tillbaka objekten till <ph name="DESTINATION_NAME" /> går det inte att ångra åtgärden.</translation>
 <translation id="9038620279323455325">Det finns redan en fil med namnet <ph name="FILE_NAME" />. Välj ett annat namn.</translation>
-<translation id="9064939804718829769">Överför ...</translation>
 <translation id="9065203028668620118">Redigera</translation>
 <translation id="908378762078012445">ryskt fonetiskt tangentbord (AATSEEL)</translation>
 <translation id="9099674669267916096">Sidantal</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_sw.xtb b/ui/chromeos/translations/ui_chromeos_strings_sw.xtb
index 6eacec9..3122eaf 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_sw.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_sw.xtb
@@ -31,7 +31,6 @@
 <translation id="1293556467332435079">Faili</translation>
 <translation id="1297922636971898492">Hifadhi ya Google haipatikani kwa sasa kupakia kutafungua upya kiotomatiki baada Hifadhi ya Google imerudi.</translation>
 <translation id="1307931752636661898">Imeshindwa kuona faili za Linux</translation>
-<translation id="1338950911836659113">Inafuta...</translation>
 <translation id="1346748346194534595">Kulia</translation>
 <translation id="1351692861129622852">Inaleta faili <ph name="FILE_COUNT" />...</translation>
 <translation id="1358735829858566124">Faili au saraka haitumiki.</translation>
@@ -43,7 +42,6 @@
 <translation id="1430915738399379752">Chapisha</translation>
 <translation id="1435838927755162558">Shiriki folda na Parallels Desktop</translation>
 <translation id="1439494416798956626">Imehamishiwa kwenye <ph name="FOLDER_NAME" />.</translation>
-<translation id="1464724975715666883">Hitilafu 1.</translation>
 <translation id="1467432559032391204">Kushoto</translation>
 <translation id="1471718551822868769">Kislovakia</translation>
 <translation id="1474339897586437869">"<ph name="FILENAME" />" haikupakiwa. Hakuna nafasi ya kutosha katika Hifadhi yako ya Google.</translation>
@@ -226,11 +224,9 @@
 <translation id="3455931012307786678">Kiestonia</translation>
 <translation id="3466147780910026086">Inachaganua kifaa chako cha kuhifadhia data...</translation>
 <translation id="3468522857997926824">Picha <ph name="FILE_COUNT" /> zimehifadhiwa nakala rudufu kwenye <ph name="BEGIN_LINK" />Hifadhi ya Google<ph name="END_LINK" /></translation>
-<translation id="3470502288861289375">Inanakili...</translation>
 <translation id="3473378059788601120">Imenakiliwa kwenye <ph name="FOLDER_NAME" />.</translation>
 <translation id="3475447146579922140">Lahajedwali ya Google</translation>
 <translation id="3486821258960016770">Kimongolia</translation>
-<translation id="3495304270784461826">Hitilafu <ph name="COUNT" />.</translation>
 <translation id="3522708245912499433">Kireno</translation>
 <translation id="3524311639100184459">Tahadhari: Faili hizi ni za muda na huenda zikafutwa kiotomatiki ili upate nafasi zaidi ya hifadhi kwenye diski.  <ph name="BEGIN_LINK" />Pata Maelezo Zaidi<ph name="END_LINK" /></translation>
 <translation id="3527085408025491307">Folda</translation>
@@ -240,7 +236,6 @@
 <translation id="357479282490346887">Kilithuania</translation>
 <translation id="3603385196401704894">Kifaransa cha Kanada</translation>
 <translation id="3606220979431771195">Kituruki-F</translation>
-<translation id="3609785682760573515">Inasawazisha...</translation>
 <translation id="3616113530831147358">Sauti</translation>
 <translation id="3619115746895587757">Kapuchino</translation>
 <translation id="3620292326130836921">Zote zimehifadhiwa nakala!</translation>
@@ -533,7 +528,6 @@
 <translation id="6657585470893396449">Nenosiri</translation>
 <translation id="6673674183150363784">Kifaransa (Ufaransa) kwenye kibodi ya Bépo</translation>
 <translation id="6710213216561001401">Iliyopita</translation>
-<translation id="6718273304615422081">Inabanwa...</translation>
 <translation id="6751256176799620176">Folda 1 imechaguliwa</translation>
 <translation id="6790428901817661496">Cheza</translation>
 <translation id="6795884519221689054">Panda</translation>
@@ -733,7 +727,6 @@
 <translation id="8600173386174225982">Orodha ya faili imebadilishwa kuwa mwonekano wa kijipicha.</translation>
 <translation id="8601932370724196034">Picha ya faili ya Crostini</translation>
 <translation id="8609695766746872526">Kiaislandi</translation>
-<translation id="8669949407341943408">Inahamisha...</translation>
 <translation id="8698464937041809063">Mchoro wa Google</translation>
 <translation id="8712637175834984815">Nimeelewa</translation>
 <translation id="8713112442029511308">Kimalta</translation>
@@ -756,7 +749,6 @@
 <translation id="9034924485347205037">Faili za Linux</translation>
 <translation id="9035012421917565900">Hutaweza kuvirudisha vipengee kwenye '<ph name="DESTINATION_NAME" />', hivyo hutaweza kutendua hatua hii.</translation>
 <translation id="9038620279323455325">Faili yenye jina la "<ph name="FILE_NAME" />" tayari ipo. Tafadhali chagua jina tofauti.</translation>
-<translation id="9064939804718829769">Inahamisha...</translation>
 <translation id="9065203028668620118">Badilisha</translation>
 <translation id="908378762078012445">Kirusi kwenye kibodi ya Fonetiki ya AATSEEL</translation>
 <translation id="9099674669267916096">Idadi ya kurasa</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_ta.xtb b/ui/chromeos/translations/ui_chromeos_strings_ta.xtb
index cb14ae0..d7865e6 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_ta.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_ta.xtb
@@ -31,7 +31,6 @@
 <translation id="1293556467332435079">Files</translation>
 <translation id="1297922636971898492">Google இயக்ககம் இப்போது கிடைக்கவில்லை. Google இயக்ககம் இணைப்பு கிடைத்தவுடன் பதிவேற்றம் தானாகவே மறுதொடக்கம் செய்யப்படும்.</translation>
 <translation id="1307931752636661898">Linux கோப்புகளைப் பார்க்க முடியவில்லை</translation>
-<translation id="1338950911836659113">நீக்குகிறது...</translation>
 <translation id="1346748346194534595">வலது</translation>
 <translation id="1351692861129622852"><ph name="FILE_COUNT" /> கோப்புகளைப் பதிவிறக்குகிறது...</translation>
 <translation id="1358735829858566124">கோப்பு அல்லது கோப்பகம் உபயோகிக்கக்கூடியதில்லை.</translation>
@@ -43,7 +42,6 @@
 <translation id="1430915738399379752">அச்சிடுக</translation>
 <translation id="1435838927755162558">Parallels Desktop மூலம் கோப்புறையைப் பகிருங்கள்</translation>
 <translation id="1439494416798956626"><ph name="FOLDER_NAME" />க்கு நகர்த்தப்பட்டது.</translation>
-<translation id="1464724975715666883">1 பிழை.</translation>
 <translation id="1467432559032391204">இடது</translation>
 <translation id="1471718551822868769">ஸ்லோவாக்</translation>
 <translation id="1474339897586437869">"<ph name="FILENAME" />" ஏற்றப்படவில்லை. உங்கள் Google இயக்ககத்தில் போதுமான காலியிடம் இல்லை.</translation>
@@ -225,11 +223,9 @@
 <translation id="3455931012307786678">எஸ்தோனியன்</translation>
 <translation id="3466147780910026086">உங்கள் மீடியா சாதனத்தை ஸ்கேன் செய்கிறது...</translation>
 <translation id="3468522857997926824"><ph name="BEGIN_LINK" />Google இயக்ககத்தில்<ph name="END_LINK" /> <ph name="FILE_COUNT" /> படங்கள் காப்புப் பிரதி எடுக்கப்பட்டன</translation>
-<translation id="3470502288861289375">நகலெடுக்கிறது...</translation>
 <translation id="3473378059788601120"><ph name="FOLDER_NAME" />க்கு நகலெடுக்கப்பட்டது.</translation>
 <translation id="3475447146579922140">Google விரிதாள்</translation>
 <translation id="3486821258960016770">மங்கோலியன்</translation>
-<translation id="3495304270784461826"><ph name="COUNT" /> பிழைகள்.</translation>
 <translation id="3522708245912499433">போர்ச்சுகீஸ்</translation>
 <translation id="3524311639100184459">எச்சரிக்கை: இந்தக் கோப்புகள் தற்காலிகமானவை, டிஸ்க்கில் இடத்தைக் காலியாக்கும் வகையில் இவை தானாகவே நீக்கப்படலாம்.  <ph name="BEGIN_LINK" />மேலும் அறிக<ph name="END_LINK" /></translation>
 <translation id="3527085408025491307">கோப்புறை</translation>
@@ -239,7 +235,6 @@
 <translation id="357479282490346887">லிதுவேனியன்</translation>
 <translation id="3603385196401704894">கனடியன் ஃபிரெஞ்சு</translation>
 <translation id="3606220979431771195">டர்கிஷ்-F</translation>
-<translation id="3609785682760573515">ஒத்திசைக்கிறது...</translation>
 <translation id="3616113530831147358">ஆடியோ</translation>
 <translation id="3619115746895587757">காப்பச்சினோ</translation>
 <translation id="3620292326130836921">எல்லாம் காப்புப் பிரதி எடுக்கப்பட்டன!</translation>
@@ -532,7 +527,6 @@
 <translation id="6657585470893396449">கடவுச்சொல்</translation>
 <translation id="6673674183150363784">ஃபிரெஞ்சு (ஃபிரான்ஸ்) - Bépo கீபோர்டு</translation>
 <translation id="6710213216561001401">முந்தையது</translation>
-<translation id="6718273304615422081">ஜிப் செய்கிறது...</translation>
 <translation id="6751256176799620176">1 கோப்புறை தேர்ந்தெடுக்கப்பட்டது</translation>
 <translation id="6790428901817661496">இயக்கு</translation>
 <translation id="6795884519221689054">பாண்டா</translation>
@@ -732,7 +726,6 @@
 <translation id="8600173386174225982">கோப்புப் பட்டியல் சிறுபடக் காட்சிக்கு மாறியுள்ளது.</translation>
 <translation id="8601932370724196034">Crostini படக் கோப்பு</translation>
 <translation id="8609695766746872526">ஐஸ்லாண்டிக்</translation>
-<translation id="8669949407341943408">நகர்கிறது...</translation>
 <translation id="8698464937041809063">Google வரைதல்</translation>
 <translation id="8712637175834984815">புரிந்தது</translation>
 <translation id="8713112442029511308">மால்டீஸ்</translation>
@@ -755,7 +748,6 @@
 <translation id="9034924485347205037">Linux கோப்புகள்</translation>
 <translation id="9035012421917565900">கோப்புகளை '<ph name="DESTINATION_NAME" />'க்கு மீண்டும் நகர்த்த முடியாது என்பதால், இதைச் செயல்தவிர்க்க முடியாது.</translation>
 <translation id="9038620279323455325">"<ph name="FILE_NAME" />" என்ற பெயருள்ள கோப்பு ஏற்கனவே உள்ளது. வேறொரு பெயரைத் தேர்வுசெய்யவும்.</translation>
-<translation id="9064939804718829769">பரிமாற்றுகிறது...</translation>
 <translation id="9065203028668620118">திருத்து</translation>
 <translation id="908378762078012445">ரஷ்யன் - ஒலிப்புமுறை (AATSEEL) கீபோர்டு</translation>
 <translation id="9099674669267916096">பக்க எண்ணிக்கை</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_te.xtb b/ui/chromeos/translations/ui_chromeos_strings_te.xtb
index a830671..3e08f95 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_te.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_te.xtb
@@ -31,7 +31,6 @@
 <translation id="1293556467332435079">Files</translation>
 <translation id="1297922636971898492">Google డిస్క్ ప్రస్తుతం అందుబాటులో లేదు. Google డిస్క్ అందుబాటులోకి వచ్చిన తర్వాత అప్‌లోడ్ ఆటోమేటిక్‌గా మళ్లీ ప్రారంభమవుతుంది.</translation>
 <translation id="1307931752636661898">Linux ఫైల్‌లను చూడటం సాధ్యపడలేదు</translation>
-<translation id="1338950911836659113">తొలగిస్తోంది...</translation>
 <translation id="1346748346194534595">కుడి</translation>
 <translation id="1351692861129622852"><ph name="FILE_COUNT" /> ఫైల్‌లను దిగుమతి చేస్తోంది...</translation>
 <translation id="1358735829858566124">ఈ ఫైల్ లేదా డైరెక్టరీ ఉపయోగించబడదు.</translation>
@@ -43,7 +42,6 @@
 <translation id="1430915738399379752">ముద్రించు</translation>
 <translation id="1435838927755162558">Parallels Desktopతో ఫోల్డర్‌ను షేర్ చేయండి</translation>
 <translation id="1439494416798956626"><ph name="FOLDER_NAME" />లోకి తరలించబడింది.</translation>
-<translation id="1464724975715666883">1 ఎర్రర్.</translation>
 <translation id="1467432559032391204">ఎడమ</translation>
 <translation id="1471718551822868769">స్లోవాక్</translation>
 <translation id="1474339897586437869">"<ph name="FILENAME" />" అప్‌లోడ్ కాలేదు. మీ Google డిస్క్‌లో తగినంత ఖాళీ స్థలం లేదు.</translation>
@@ -226,11 +224,9 @@
 <translation id="3455931012307786678">ఎస్టోనియన్</translation>
 <translation id="3466147780910026086">మీ మీడియా పరికరాన్ని స్కాన్ చేస్తోంది...</translation>
 <translation id="3468522857997926824"><ph name="FILE_COUNT" /> ఫోటోలు <ph name="BEGIN_LINK" />Google డిస్క్<ph name="END_LINK" />కి బ్యాకప్ చేయబడ్డాయి</translation>
-<translation id="3470502288861289375">కాపీ చేస్తోంది...</translation>
 <translation id="3473378059788601120"><ph name="FOLDER_NAME" />లోకి కాపీ చేయబడింది.</translation>
 <translation id="3475447146579922140">Google స్ప్రెడ్‌షీట్</translation>
 <translation id="3486821258960016770">మంగోలియన్</translation>
-<translation id="3495304270784461826"><ph name="COUNT" /> లోపాలు.</translation>
 <translation id="3522708245912499433">పోర్చుగీస్</translation>
 <translation id="3524311639100184459">హెచ్చరిక: ఈ ఫైల్స్ తాత్కాలికమైనవి, డిస్క్ స్పేస్‌ను ఖాళీ చేయడం కోసం ఆటోమేటిక్‌గా ఇవి తొలగించబడవచ్చు.  <ph name="BEGIN_LINK" />మరింత తెలుసుకోండి<ph name="END_LINK" /></translation>
 <translation id="3527085408025491307">ఫోల్డర్</translation>
@@ -240,7 +236,6 @@
 <translation id="357479282490346887">లిథువేనియన్</translation>
 <translation id="3603385196401704894">కెనడియెన్ ఫ్రెంచ్</translation>
 <translation id="3606220979431771195">టర్కిష్-ఎఫ్</translation>
-<translation id="3609785682760573515">సమకాలీకరిస్తోంది...</translation>
 <translation id="3616113530831147358">ఆడియో</translation>
 <translation id="3619115746895587757">కాపుచినో</translation>
 <translation id="3620292326130836921">అన్నీ బ్యాకప్ చేయబడ్డాయి!</translation>
@@ -533,7 +528,6 @@
 <translation id="6657585470893396449">పాస్‌వర్డ్</translation>
 <translation id="6673674183150363784">Bépo కీబోర్డ్‌తో ఫ్రెంచ్ (ఫ్రాన్స్)</translation>
 <translation id="6710213216561001401">మునుపటి</translation>
-<translation id="6718273304615422081">జిప్ చేస్తోంది...</translation>
 <translation id="6751256176799620176">1 ఫోల్డర్ ఎంచుకోబడింది</translation>
 <translation id="6790428901817661496">ప్లే చేయి</translation>
 <translation id="6795884519221689054">పాండా</translation>
@@ -733,7 +727,6 @@
 <translation id="8600173386174225982">ఫైల్ జాబితా, "సూక్ష్మచిత్ర వీక్షణ"కు మార్చబడింది.</translation>
 <translation id="8601932370724196034">Crostini చిత్రం ఫైల్</translation>
 <translation id="8609695766746872526">ఐస్‌లాండిక్</translation>
-<translation id="8669949407341943408">తరలించబడుతున్నాయి...</translation>
 <translation id="8698464937041809063">Google డ్రాయింగ్</translation>
 <translation id="8712637175834984815">అర్థమైంది</translation>
 <translation id="8713112442029511308">మాల్టీస్</translation>
@@ -756,7 +749,6 @@
 <translation id="9034924485347205037">Linux ఫైల్‌లు</translation>
 <translation id="9035012421917565900">ఈ అంశాలను '<ph name="DESTINATION_NAME" />'లోకి తిరిగి తరలించడం సాధ్యపడదు. కాబట్టి మీరు ఈ చర్యను రద్దు చేయలేరు.</translation>
 <translation id="9038620279323455325">"<ph name="FILE_NAME" />" పేరు గల ఫైల్ ఇప్పటికే ఉంది. దయచేసి వేరొక పేరును ఎంచుకోండి.</translation>
-<translation id="9064939804718829769">బదిలీ చేస్తోంది...</translation>
 <translation id="9065203028668620118">సవరించు</translation>
 <translation id="908378762078012445">ఫోనెటిక్ AATSEEL కీబోర్డ్‌తో రష్యన్</translation>
 <translation id="9099674669267916096">పేజీ గణన</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_th.xtb b/ui/chromeos/translations/ui_chromeos_strings_th.xtb
index 3c28188..4785d74 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_th.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_th.xtb
@@ -31,7 +31,6 @@
 <translation id="1293556467332435079">ไฟล์</translation>
 <translation id="1297922636971898492">Google ไดรฟ์ไม่พร้อมใช้งานในขณะนี้ การอัปโหลดจะเริ่มต้นอีกครั้งโดยอัตโนมัติเมื่อ Google ไดรฟ์ใช้งานได้</translation>
 <translation id="1307931752636661898">ดูไฟล์ Linux ไม่ได้</translation>
-<translation id="1338950911836659113">กำลังลบ...</translation>
 <translation id="1346748346194534595">ขวา</translation>
 <translation id="1351692861129622852">กำลังนำเข้า <ph name="FILE_COUNT" /> ไฟล์...</translation>
 <translation id="1358735829858566124">ไฟล์หรือไดเรกทอรีใช้งานไม่ได้</translation>
@@ -43,7 +42,6 @@
 <translation id="1430915738399379752">พิมพ์</translation>
 <translation id="1435838927755162558">แชร์โฟลเดอร์กับ Parallels Desktop</translation>
 <translation id="1439494416798956626">ย้ายไปที่ <ph name="FOLDER_NAME" /> แล้ว</translation>
-<translation id="1464724975715666883">ข้อผิดพลาด 1 รายการ</translation>
 <translation id="1467432559032391204">ซ้าย</translation>
 <translation id="1471718551822868769">สโลวัก</translation>
 <translation id="1474339897586437869">ไม่ได้อัปโหลด "<ph name="FILENAME" />" มีพื้นที่ว่างไม่เพียงพอใน Google ไดรฟ์ของคุณ</translation>
@@ -225,11 +223,9 @@
 <translation id="3455931012307786678">เอสโทเนีย</translation>
 <translation id="3466147780910026086">กำลังสแกนอุปกรณ์สื่อ...</translation>
 <translation id="3468522857997926824">สำรองรูปภาพ <ph name="FILE_COUNT" /> รูปไปยัง <ph name="BEGIN_LINK" />Google ไดรฟ์<ph name="END_LINK" />แล้ว</translation>
-<translation id="3470502288861289375">กำลังคัดลอก...</translation>
 <translation id="3473378059788601120">คัดลอกไปที่ <ph name="FOLDER_NAME" /> แล้ว</translation>
 <translation id="3475447146579922140">สเปรดชีตของ Google</translation>
 <translation id="3486821258960016770">มองโกเลีย</translation>
-<translation id="3495304270784461826">ข้อผิดพลาด <ph name="COUNT" /> รายการ</translation>
 <translation id="3522708245912499433">โปรตุเกส</translation>
 <translation id="3524311639100184459">ข้อควรระวัง: ไฟล์เหล่านี้ใช้ชั่วคราวและอาจถูกลบโดยอัตโนมัติเพื่อเพิ่มพื้นที่ว่างในดิสก์  <ph name="BEGIN_LINK" />ดูข้อมูลเพิ่มเติม<ph name="END_LINK" /></translation>
 <translation id="3527085408025491307">โฟลเดอร์</translation>
@@ -239,7 +235,6 @@
 <translation id="357479282490346887">ลิทัวเนีย</translation>
 <translation id="3603385196401704894">ฝรั่งเศสแบบแคนาดา</translation>
 <translation id="3606220979431771195">ภาษาตุรกี-F</translation>
-<translation id="3609785682760573515">กำลังซิงค์...</translation>
 <translation id="3616113530831147358">เสียง</translation>
 <translation id="3619115746895587757">คาปูชิโน</translation>
 <translation id="3620292326130836921">สำรองข้อมูลทั้งหมดแล้ว!</translation>
@@ -532,7 +527,6 @@
 <translation id="6657585470893396449">รหัสผ่าน</translation>
 <translation id="6673674183150363784">ฝรั่งเศส (ฝรั่งเศส) ด้วยแป้นพิมพ์แบบ Bépo</translation>
 <translation id="6710213216561001401">ก่อนหน้า</translation>
-<translation id="6718273304615422081">กำลังซิป...</translation>
 <translation id="6751256176799620176">เลือกไว้ 1 โฟลเดอร์</translation>
 <translation id="6790428901817661496">เล่น</translation>
 <translation id="6795884519221689054">แพนด้า</translation>
@@ -732,7 +726,6 @@
 <translation id="8600173386174225982">เปลี่ยนรายการไฟล์เป็นมุมมองภาพขนาดย่อแล้ว</translation>
 <translation id="8601932370724196034">ไฟล์ภาพ Crostini</translation>
 <translation id="8609695766746872526">ไอซ์แลนด์</translation>
-<translation id="8669949407341943408">กำลังย้าย...</translation>
 <translation id="8698464937041809063">ภาพวาดของ Google</translation>
 <translation id="8712637175834984815">สำเร็จ</translation>
 <translation id="8713112442029511308">มอลตา</translation>
@@ -755,7 +748,6 @@
 <translation id="9034924485347205037">ไฟล์ Linux</translation>
 <translation id="9035012421917565900">ไม่สามารถย้ายรายการกลับไปที่ "<ph name="DESTINATION_NAME" />" คุณจึงไม่สามารถเลิกทำการดำเนินการนี้</translation>
 <translation id="9038620279323455325">มีไฟล์ชื่อ "<ph name="FILE_NAME" />" อยู่แล้ว โปรดเลือกชื่ออื่น</translation>
-<translation id="9064939804718829769">กำลังโอน...</translation>
 <translation id="9065203028668620118">แก้ไข</translation>
 <translation id="908378762078012445">รัสเซียด้วยแป้นพิมพ์ AATSEEL (ตามการออกเสียง)</translation>
 <translation id="9099674669267916096">จำนวนหน้า</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_tr.xtb b/ui/chromeos/translations/ui_chromeos_strings_tr.xtb
index 5221d4d..a98b99d 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_tr.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_tr.xtb
@@ -31,7 +31,6 @@
 <translation id="1293556467332435079">Dosyalar</translation>
 <translation id="1297922636971898492">Google Drive şu anda kullanılamıyor. Google Drive tekrar kullanılabilir olduğunda yükleme işlemi otomatik olarak yeniden başlayacak.</translation>
 <translation id="1307931752636661898">Linux dosyaları görüntülenemiyor</translation>
-<translation id="1338950911836659113">Siliniyor...</translation>
 <translation id="1346748346194534595">Sağa</translation>
 <translation id="1351692861129622852"><ph name="FILE_COUNT" /> dosya içe aktarılıyor...</translation>
 <translation id="1358735829858566124">Dosya veya dizin kullanılamıyor.</translation>
@@ -43,7 +42,6 @@
 <translation id="1430915738399379752">Yazdır</translation>
 <translation id="1435838927755162558">Parallels Desktop ile klasör paylaşın</translation>
 <translation id="1439494416798956626"><ph name="FOLDER_NAME" /> klasörüne taşındı.</translation>
-<translation id="1464724975715666883">1 hata.</translation>
 <translation id="1467432559032391204">Sola</translation>
 <translation id="1471718551822868769">Slovakça</translation>
 <translation id="1474339897586437869">"<ph name="FILENAME" />" yüklenmedi. Google Drive'ınızda yeterli boş alan yok.</translation>
@@ -226,11 +224,9 @@
 <translation id="3455931012307786678">Estonca</translation>
 <translation id="3466147780910026086">Medya cihazınız taranıyor...</translation>
 <translation id="3468522857997926824"><ph name="FILE_COUNT" /> fotoğraf <ph name="BEGIN_LINK" />Google Drive<ph name="END_LINK" />'a yedeklendi</translation>
-<translation id="3470502288861289375">Kopyalanıyor...</translation>
 <translation id="3473378059788601120"><ph name="FOLDER_NAME" /> klasörüne kopyalandı.</translation>
 <translation id="3475447146579922140">Google e-tablosu</translation>
 <translation id="3486821258960016770">Moğolca</translation>
-<translation id="3495304270784461826"><ph name="COUNT" /> hata.</translation>
 <translation id="3522708245912499433">Portekizce</translation>
 <translation id="3524311639100184459">Dikkat: Bu dosyalar geçicidir ve disk alanından kazanmak için otomatik olarak silinebilir.  <ph name="BEGIN_LINK" />Daha Fazla Bilgi<ph name="END_LINK" /></translation>
 <translation id="3527085408025491307">Klasör</translation>
@@ -240,7 +236,6 @@
 <translation id="357479282490346887">Litvanca</translation>
 <translation id="3603385196401704894">Kanada Fransızcası</translation>
 <translation id="3606220979431771195">Türkçe-F</translation>
-<translation id="3609785682760573515">Senkronize ediliyor...</translation>
 <translation id="3616113530831147358">Ses</translation>
 <translation id="3619115746895587757">Kapuçino</translation>
 <translation id="3620292326130836921">Tümü yedeklendi!</translation>
@@ -533,7 +528,6 @@
 <translation id="6657585470893396449">Şifre</translation>
 <translation id="6673674183150363784">Fransızca (Fransa) Bépo klavye</translation>
 <translation id="6710213216561001401">Önceki</translation>
-<translation id="6718273304615422081">Sıkıştırılıyor...</translation>
 <translation id="6751256176799620176">1 klasör seçildi</translation>
 <translation id="6790428901817661496">Oynat</translation>
 <translation id="6795884519221689054">Panda</translation>
@@ -733,7 +727,6 @@
 <translation id="8600173386174225982">Dosya listesi, küçük resim görünümü olarak değiştirildi.</translation>
 <translation id="8601932370724196034">Crostini resim dosyası</translation>
 <translation id="8609695766746872526">İzlandaca</translation>
-<translation id="8669949407341943408">Taşınıyor...</translation>
 <translation id="8698464937041809063">Google çizimler</translation>
 <translation id="8712637175834984815">Anlaşıldı</translation>
 <translation id="8713112442029511308">Maltaca</translation>
@@ -756,7 +749,6 @@
 <translation id="9034924485347205037">Linux dosyaları</translation>
 <translation id="9035012421917565900">Öğeler "<ph name="DESTINATION_NAME" />" hedefine geri taşınamaz. Bu nedenle bu işlemi geri alamazsınız.</translation>
 <translation id="9038620279323455325">"<ph name="FILE_NAME" />" adlı dosya zaten var. Lütfen farklı bir ad seçin.</translation>
-<translation id="9064939804718829769">Aktarılıyor...</translation>
 <translation id="9065203028668620118">Düzenle</translation>
 <translation id="908378762078012445">Fonetik AATSEEL klavye ile Rusça</translation>
 <translation id="9099674669267916096">Sayfa sayısı</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_uk.xtb b/ui/chromeos/translations/ui_chromeos_strings_uk.xtb
index 022bbc41..4b6beac 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_uk.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_uk.xtb
@@ -31,7 +31,6 @@
 <translation id="1293556467332435079">Файли</translation>
 <translation id="1297922636971898492">Диск Google зараз недоступний. Завантаження автоматично відновиться після повторного під’єднання до Google Диска.</translation>
 <translation id="1307931752636661898">Не вдається переглянути файли Linux</translation>
-<translation id="1338950911836659113">Видалення…</translation>
 <translation id="1346748346194534595">Праворуч</translation>
 <translation id="1351692861129622852">Імпортування файлів (<ph name="FILE_COUNT" />)…</translation>
 <translation id="1358735829858566124">Файл або каталог не можна використовувати.</translation>
@@ -43,7 +42,6 @@
 <translation id="1430915738399379752">Друк</translation>
 <translation id="1435838927755162558">Надати додатку Parallels Desktop доступ до папки</translation>
 <translation id="1439494416798956626">Переміщено в папку "<ph name="FOLDER_NAME" />".</translation>
-<translation id="1464724975715666883">1 помилка.</translation>
 <translation id="1467432559032391204">Ліворуч</translation>
 <translation id="1471718551822868769">Словацька</translation>
 <translation id="1474339897586437869">Файл "<ph name="FILENAME" />" не додано. Замало вільного місця на Google Диску.</translation>
@@ -226,11 +224,9 @@
 <translation id="3455931012307786678">Естонська</translation>
 <translation id="3466147780910026086">Сканування носія…</translation>
 <translation id="3468522857997926824">На <ph name="BEGIN_LINK" />Google Диск<ph name="END_LINK" /> імпортовано <ph name="FILE_COUNT" /> фото</translation>
-<translation id="3470502288861289375">Копіювання…</translation>
 <translation id="3473378059788601120">Скопійовано в папку "<ph name="FOLDER_NAME" />".</translation>
 <translation id="3475447146579922140">Таблиці Google</translation>
 <translation id="3486821258960016770">Монгольська</translation>
-<translation id="3495304270784461826">Помилок: <ph name="COUNT" />.</translation>
 <translation id="3522708245912499433">Португальська</translation>
 <translation id="3524311639100184459">Увага: ці файли тимчасові й можуть автоматично видалятися, щоб звільнити місце на диску.  <ph name="BEGIN_LINK" />Докладніше<ph name="END_LINK" /></translation>
 <translation id="3527085408025491307">Папка</translation>
@@ -240,7 +236,6 @@
 <translation id="357479282490346887">Литовська</translation>
 <translation id="3603385196401704894">Французька (Канада)</translation>
 <translation id="3606220979431771195">Турецька клавіатура F</translation>
-<translation id="3609785682760573515">Синхронізація…</translation>
 <translation id="3616113530831147358">Аудіо</translation>
 <translation id="3619115746895587757">Капучино</translation>
 <translation id="3620292326130836921">Усі файли імпортовано!</translation>
@@ -533,7 +528,6 @@
 <translation id="6657585470893396449">Пароль</translation>
 <translation id="6673674183150363784">Французька (Франція), розкладка Bépo</translation>
 <translation id="6710213216561001401">Назад</translation>
-<translation id="6718273304615422081">Архівування…</translation>
 <translation id="6751256176799620176">Вибрано 1 папку</translation>
 <translation id="6790428901817661496">Відтворити</translation>
 <translation id="6795884519221689054">Панда</translation>
@@ -733,7 +727,6 @@
 <translation id="8600173386174225982">Список файлів тепер відображається у вигляді ескізів.</translation>
 <translation id="8601932370724196034">Файл зображення Crostini</translation>
 <translation id="8609695766746872526">Ісландська</translation>
-<translation id="8669949407341943408">Переміщення…</translation>
 <translation id="8698464937041809063">Малюнок Google</translation>
 <translation id="8712637175834984815">Виконано</translation>
 <translation id="8713112442029511308">Мальтійська</translation>
@@ -756,7 +749,6 @@
 <translation id="9034924485347205037">Файли Linux</translation>
 <translation id="9035012421917565900">Елементи не можна перенести назад у розташування "<ph name="DESTINATION_NAME" />", тож ви не зможете відмінити цю дію.</translation>
 <translation id="9038620279323455325">Файл із назвою "<ph name="FILE_NAME" />" уже існує. Виберіть іншу назву.</translation>
-<translation id="9064939804718829769">Передавання даних…</translation>
 <translation id="9065203028668620118">Редагувати</translation>
 <translation id="908378762078012445">Російська, фонетична розкладка AATSEEL</translation>
 <translation id="9099674669267916096">Кількість сторінок</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_ur.xtb b/ui/chromeos/translations/ui_chromeos_strings_ur.xtb
index 39facfd..3185484 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_ur.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_ur.xtb
@@ -31,7 +31,6 @@
 <translation id="1293556467332435079">فائلیں</translation>
 <translation id="1297922636971898492">‏Google Drive ابھی دستیاب نہیں ہے۔ Google Drive واپس آ جانے پر اپ لوڈنگ خود بخود دوبارہ شروع ہو جائے گی۔</translation>
 <translation id="1307931752636661898">‏Linux فائلز دیکھنے سے قاصر</translation>
-<translation id="1338950911836659113">حذف کیا جا رہا ہے…</translation>
 <translation id="1346748346194534595">دائیں</translation>
 <translation id="1351692861129622852"><ph name="FILE_COUNT" /> فائلوں کو درآمد کیا جا رہا ہے…</translation>
 <translation id="1358735829858566124">فائل یا ڈائریکٹری قابل استعمال نہیں ہے۔</translation>
@@ -43,7 +42,6 @@
 <translation id="1430915738399379752">پرنٹ کریں</translation>
 <translation id="1435838927755162558">‏Parallels ڈیسک ٹاپ کے ساتھ فولڈر کا اشتراک کریں</translation>
 <translation id="1439494416798956626"><ph name="FOLDER_NAME" /> میں منتقل کر دیا گیا۔</translation>
-<translation id="1464724975715666883">1 خرابی۔</translation>
 <translation id="1467432559032391204">بائیں</translation>
 <translation id="1471718551822868769">سلاواکی</translation>
 <translation id="1474339897586437869">‏"<ph name="FILENAME" />" کو اپ لوڈ نہیں کیا گیا۔ آپ کے Google Drive میں کافی خالی جگہ نہیں ہے۔</translation>
@@ -226,11 +224,9 @@
 <translation id="3455931012307786678">اسٹونين</translation>
 <translation id="3466147780910026086">آپ کے میڈیا آلے کو سکین کیا جا رہا ہے…</translation>
 <translation id="3468522857997926824">‏<ph name="FILE_COUNT" /> تصاویر کا <ph name="BEGIN_LINK" />Google Drive<ph name="END_LINK" /> میں بیک اپ لیا گیا</translation>
-<translation id="3470502288861289375">کاپی کیے جا رہے ہیں…</translation>
 <translation id="3473378059788601120"><ph name="FOLDER_NAME" /> میں کاپی ہو گيا۔</translation>
 <translation id="3475447146579922140">‏Google اسپریڈ شیٹ</translation>
 <translation id="3486821258960016770">منگؤلی</translation>
-<translation id="3495304270784461826"><ph name="COUNT" /> خرابیاں۔</translation>
 <translation id="3522708245912499433">پُرتگالی</translation>
 <translation id="3524311639100184459">احتیاط: یہ فائلز عارضی ہیں اور ڈسک میں جگہ خالی کرنے کیلئے انہیں خودکار طور پر حذف کیا جا سکتا ہے۔  <ph name="BEGIN_LINK" />مزید جانیں<ph name="END_LINK" /></translation>
 <translation id="3527085408025491307">فولڈر</translation>
@@ -240,7 +236,6 @@
 <translation id="357479282490346887">لتھُواینین</translation>
 <translation id="3603385196401704894">کینیڈین فرانسیسی</translation>
 <translation id="3606220979431771195">‏ترکی F</translation>
-<translation id="3609785682760573515">مطابقت پذیری کی جا رہی ہے…</translation>
 <translation id="3616113530831147358">آڈیو</translation>
 <translation id="3619115746895587757">کیپو چینو</translation>
 <translation id="3620292326130836921">سبھی کا بیک اپ بنا لیا گیا!</translation>
@@ -532,7 +527,6 @@
 <translation id="6657585470893396449">پاس ورڈ</translation>
 <translation id="6673674183150363784">‏Bépo کی بورڈ کے ساتھ فراسنیسی (فرانس)</translation>
 <translation id="6710213216561001401">گزشتہ</translation>
-<translation id="6718273304615422081">زپ کیا جا رہا ہے…</translation>
 <translation id="6751256176799620176">1 فولڈر منتخب کیا گیا</translation>
 <translation id="6790428901817661496">چلائیں</translation>
 <translation id="6795884519221689054">پانڈا</translation>
@@ -732,7 +726,6 @@
 <translation id="8600173386174225982">فائل فہرست کو تھمب نیل منظر میں تبدیل کر دیا گیا ہے۔</translation>
 <translation id="8601932370724196034">‏Crostini تصویر فائل</translation>
 <translation id="8609695766746872526">آئس لینڈک</translation>
-<translation id="8669949407341943408">منتقل کی جا رہی ہیں…</translation>
 <translation id="8698464937041809063">‏Google ڈرائنگ</translation>
 <translation id="8712637175834984815">سمجھ آ گئی</translation>
 <translation id="8713112442029511308">مالٹیز</translation>
@@ -755,7 +748,6 @@
 <translation id="9034924485347205037">‏Linux فائلز</translation>
 <translation id="9035012421917565900">آئٹمز '<ph name="DESTINATION_NAME" />' میں واپس منتقل نہیں کیے جا سکتے، اسلئے آپ اس کارروائي کو کالعدم نہیں کر سکیں گے۔</translation>
 <translation id="9038620279323455325">"<ph name="FILE_NAME" />" نام کی فائل پہلے سے موجود ہے۔ براہ کرم ایک مختلف نام منتخب کریں۔</translation>
-<translation id="9064939804718829769">منتقلی ہو رہی ہے…</translation>
 <translation id="9065203028668620118">تبدیل کریں</translation>
 <translation id="908378762078012445">‏فونیٹک AATSEEL کی بورڈ کے ساتھ روسی</translation>
 <translation id="9099674669267916096">صفحات کی تعداد</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_uz.xtb b/ui/chromeos/translations/ui_chromeos_strings_uz.xtb
index 65eab8d..c9a2ef3 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_uz.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_uz.xtb
@@ -31,7 +31,6 @@
 <translation id="1293556467332435079">Fayllar</translation>
 <translation id="1297922636971898492">Google Disk hozir ish faoliyatida emas. Xizmat ish faoliyatiga qaytishi bilan yuklash amali avtomatik davom ettiriladi.</translation>
 <translation id="1307931752636661898">Linux fayllari ochilmadi</translation>
-<translation id="1338950911836659113">O‘chirilmoqda...</translation>
 <translation id="1346748346194534595">O‘ngga</translation>
 <translation id="1351692861129622852"><ph name="FILE_COUNT" /> ta fayl import qilinmoqda...</translation>
 <translation id="1358735829858566124">Fayl yoki katalog foydalanish uchun yaroqsiz.</translation>
@@ -43,7 +42,6 @@
 <translation id="1430915738399379752">Chop etish</translation>
 <translation id="1435838927755162558">Jildni Parallels Desktopga ulashish</translation>
 <translation id="1439494416798956626"><ph name="FOLDER_NAME" /> jildiga koʻchirildi</translation>
-<translation id="1464724975715666883">1 ta xato.</translation>
 <translation id="1467432559032391204">Chapga</translation>
 <translation id="1471718551822868769">Slovak</translation>
 <translation id="1474339897586437869"><ph name="FILENAME" /> faylini yuklab bo‘lmadi. Google Drive omborida yetarli bo‘sh joy yo‘q.</translation>
@@ -226,11 +224,9 @@
 <translation id="3455931012307786678">Eston</translation>
 <translation id="3466147780910026086">Media qurilmasi tekshirilmoqda...</translation>
 <translation id="3468522857997926824"><ph name="FILE_COUNT" /> ta rasm <ph name="BEGIN_LINK" />Google Drive<ph name="END_LINK" /> omboriga zaxiralandi</translation>
-<translation id="3470502288861289375">Nusxa olinmoqda...</translation>
 <translation id="3473378059788601120"><ph name="FOLDER_NAME" /> jildiga nusxalandi.</translation>
 <translation id="3475447146579922140">Google elektron jadvali</translation>
 <translation id="3486821258960016770">Mongol</translation>
-<translation id="3495304270784461826"><ph name="COUNT" /> ta xatolik.</translation>
 <translation id="3522708245912499433">Portugal tili</translation>
 <translation id="3524311639100184459">Diqqat! Bu vaqtinchalik fayllar diskda joy boʻshatish uchun avtomatik oʻchirib yuborilishi mumkin.  <ph name="BEGIN_LINK" />Batafsil<ph name="END_LINK" /></translation>
 <translation id="3527085408025491307">Jild</translation>
@@ -240,7 +236,6 @@
 <translation id="357479282490346887">Litvan tili</translation>
 <translation id="3603385196401704894">Fransuz (Kanada)</translation>
 <translation id="3606220979431771195">Turk-F klaviaturasi</translation>
-<translation id="3609785682760573515">Sinxronlanmoqda...</translation>
 <translation id="3616113530831147358">Audio</translation>
 <translation id="3619115746895587757">Kappuchino</translation>
 <translation id="3620292326130836921">Ma’lumotlar saqlandi!</translation>
@@ -532,7 +527,6 @@
 <translation id="6657585470893396449">Parol</translation>
 <translation id="6673674183150363784">Fransuz (Fransiya) va Bépo klaviaturasi</translation>
 <translation id="6710213216561001401">Avvalgi</translation>
-<translation id="6718273304615422081">Arxivlanmoqda...</translation>
 <translation id="6751256176799620176">1 ta jild tanlandi</translation>
 <translation id="6790428901817661496">Ijro etish</translation>
 <translation id="6795884519221689054">Panda</translation>
@@ -732,7 +726,6 @@
 <translation id="8600173386174225982">Fayllar roʻyxati uchun saralash shakli eskizlarga almashdi.</translation>
 <translation id="8601932370724196034">Crostini tasvir fayli</translation>
 <translation id="8609695766746872526">Island</translation>
-<translation id="8669949407341943408">Ko‘chirilmoqda...</translation>
 <translation id="8698464937041809063">Google-chizmasi</translation>
 <translation id="8712637175834984815">Tushunarli</translation>
 <translation id="8713112442029511308">Malta</translation>
@@ -755,7 +748,6 @@
 <translation id="9034924485347205037">Linux fayllari</translation>
 <translation id="9035012421917565900">Obyektlarni “<ph name="DESTINATION_NAME" />” umumiy diskiga qaytarib bo‘lmaydi, shuning uchun bu amalni bekor qila olmaysiz.</translation>
 <translation id="9038620279323455325">“<ph name="FILE_NAME" />” nomli fayl allaqachon mavjud. Boshqa nom tanlang.</translation>
-<translation id="9064939804718829769">Bajarilmoqda...</translation>
 <translation id="9065203028668620118">O‘zgartirish</translation>
 <translation id="908378762078012445">Rus (fonetik AATSEEL klaviaturasi)</translation>
 <translation id="9099674669267916096">Sahifalar soni</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_vi.xtb b/ui/chromeos/translations/ui_chromeos_strings_vi.xtb
index 34d36de..9788ed3 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_vi.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_vi.xtb
@@ -31,7 +31,6 @@
 <translation id="1293556467332435079">Tệp</translation>
 <translation id="1297922636971898492">Google Drive hiện không khả dụng. Quá trình tải lên sẽ tự động khởi động lại khi Google Drive hoạt động trở lại.</translation>
 <translation id="1307931752636661898">Không thể xem tệp Linux</translation>
-<translation id="1338950911836659113">Đang xóa...</translation>
 <translation id="1346748346194534595">Phải</translation>
 <translation id="1351692861129622852">Đang nhập <ph name="FILE_COUNT" /> tệp...</translation>
 <translation id="1358735829858566124">Không thể sử dụng được tệp hoặc thư mục.</translation>
@@ -43,7 +42,6 @@
 <translation id="1430915738399379752">In</translation>
 <translation id="1435838927755162558">Chia sẻ thư mục với ứng dụng Parallels Desktop</translation>
 <translation id="1439494416798956626">Đã di chuyển sang <ph name="FOLDER_NAME" />.</translation>
-<translation id="1464724975715666883">1 lỗi.</translation>
 <translation id="1467432559032391204">Trái</translation>
 <translation id="1471718551822868769">Tiếng Slovak</translation>
 <translation id="1474339897586437869">"<ph name="FILENAME" />" không được tải lên. Không có đủ dung lượng trống trong Google Drive của bạn.</translation>
@@ -225,11 +223,9 @@
 <translation id="3455931012307786678">Tiếng Estonia</translation>
 <translation id="3466147780910026086">Đang quét thiết bị truyền thông của bạn...</translation>
 <translation id="3468522857997926824">Đã sao lưu <ph name="FILE_COUNT" /> ảnh vào <ph name="BEGIN_LINK" />Google Drive<ph name="END_LINK" /></translation>
-<translation id="3470502288861289375">Đang sao chép...</translation>
 <translation id="3473378059788601120">Đã sao chép vào <ph name="FOLDER_NAME" />.</translation>
 <translation id="3475447146579922140">Bảng tính Google</translation>
 <translation id="3486821258960016770">Tiếng Mông Cổ</translation>
-<translation id="3495304270784461826"><ph name="COUNT" /> lỗi.</translation>
 <translation id="3522708245912499433">Tiếng Bồ Đào Nha</translation>
 <translation id="3524311639100184459">Lưu ý: Các tệp này chỉ được lưu trữ tạm thời và có thể tự động bị xóa để giải phóng dung lượng ổ đĩa.  <ph name="BEGIN_LINK" />Tìm hiểu thêm<ph name="END_LINK" /></translation>
 <translation id="3527085408025491307">Thư mục</translation>
@@ -239,7 +235,6 @@
 <translation id="357479282490346887">Tiếng Lithuania</translation>
 <translation id="3603385196401704894">Tiếng Pháp ở Canada</translation>
 <translation id="3606220979431771195">Tiếng Thổ Nhĩ Kỳ-F</translation>
-<translation id="3609785682760573515">Đang đồng bộ hóa...</translation>
 <translation id="3616113530831147358">Âm thanh</translation>
 <translation id="3619115746895587757">Cà phê cappuccino</translation>
 <translation id="3620292326130836921">Đã sao lưu tất cả!</translation>
@@ -532,7 +527,6 @@
 <translation id="6657585470893396449">Mật khẩu</translation>
 <translation id="6673674183150363784">Tiếng Pháp (Pháp) bằng bàn phím Bépo</translation>
 <translation id="6710213216561001401">Trước</translation>
-<translation id="6718273304615422081">Đang nén...</translation>
 <translation id="6751256176799620176">Đã chọn 1 thư mục</translation>
 <translation id="6790428901817661496">Phát</translation>
 <translation id="6795884519221689054">Gấu trúc</translation>
@@ -732,7 +726,6 @@
 <translation id="8600173386174225982">Danh sách tệp đã thay đổi thành chế độ xem hình thu nhỏ.</translation>
 <translation id="8601932370724196034">Tệp hình ảnh Crostini</translation>
 <translation id="8609695766746872526">Tiếng Iceland</translation>
-<translation id="8669949407341943408">Đang di chuyển...</translation>
 <translation id="8698464937041809063">Bản vẽ Google</translation>
 <translation id="8712637175834984815">Bỏ qua</translation>
 <translation id="8713112442029511308">Tiếng Malta</translation>
@@ -755,7 +748,6 @@
 <translation id="9034924485347205037">Tệp Linux</translation>
 <translation id="9035012421917565900">Không thể chuyển lại các tệp này vào '<ph name="DESTINATION_NAME" />', do đó bạn sẽ không thể hoàn tác hành động này.</translation>
 <translation id="9038620279323455325">Tệp có tên "<ph name="FILE_NAME" />" đã tồn tại. Vui lòng chọn một tên khác.</translation>
-<translation id="9064939804718829769">Đang chuyển...</translation>
 <translation id="9065203028668620118">Chỉnh sửa</translation>
 <translation id="908378762078012445">Tiếng Nga bằng bàn phím phiên âm AATSEEL</translation>
 <translation id="9099674669267916096">Số lượng trang</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_zh-CN.xtb b/ui/chromeos/translations/ui_chromeos_strings_zh-CN.xtb
index e64f94a..a2762f2 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_zh-CN.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_zh-CN.xtb
@@ -31,7 +31,6 @@
 <translation id="1293556467332435079">文件</translation>
 <translation id="1297922636971898492">Google云端硬盘暂时无法使用。Google云端硬盘恢复正常后,系统将自动重新开始上传。</translation>
 <translation id="1307931752636661898">无法查看 Linux 文件</translation>
-<translation id="1338950911836659113">正在删除…</translation>
 <translation id="1346748346194534595">向右</translation>
 <translation id="1351692861129622852">正在导入 <ph name="FILE_COUNT" /> 个文件…</translation>
 <translation id="1358735829858566124">该文件或目录无法使用。</translation>
@@ -43,7 +42,6 @@
 <translation id="1430915738399379752">打印</translation>
 <translation id="1435838927755162558">与 Parallels Desktop 共享文件夹</translation>
 <translation id="1439494416798956626">已移至“<ph name="FOLDER_NAME" />”。</translation>
-<translation id="1464724975715666883">1个错误。</translation>
 <translation id="1467432559032391204">向左</translation>
 <translation id="1471718551822868769">斯洛伐克语</translation>
 <translation id="1474339897586437869">未上传“<ph name="FILENAME" />”,因为您的 Google 云端硬盘没有足够的可用空间。</translation>
@@ -225,11 +223,9 @@
 <translation id="3455931012307786678">爱沙尼亚语</translation>
 <translation id="3466147780910026086">正在扫描您的媒体设备…</translation>
 <translation id="3468522857997926824">已将 <ph name="FILE_COUNT" /> 张照片备份到 <ph name="BEGIN_LINK" />Google 云端硬盘<ph name="END_LINK" /></translation>
-<translation id="3470502288861289375">正在复制…</translation>
 <translation id="3473378059788601120">已复制到“<ph name="FOLDER_NAME" />”。</translation>
 <translation id="3475447146579922140">Google 电子表格</translation>
 <translation id="3486821258960016770">蒙古语</translation>
-<translation id="3495304270784461826"><ph name="COUNT" />个错误。</translation>
 <translation id="3522708245912499433">葡萄牙语</translation>
 <translation id="3524311639100184459">警告:这些都是临时文件,可能会被系统自动删除以释放磁盘空间。<ph name="BEGIN_LINK" />了解详情<ph name="END_LINK" /></translation>
 <translation id="3527085408025491307">文件夹</translation>
@@ -239,7 +235,6 @@
 <translation id="357479282490346887">立陶宛语</translation>
 <translation id="3603385196401704894">加拿大法语</translation>
 <translation id="3606220979431771195">土耳其语 F</translation>
-<translation id="3609785682760573515">正在同步…</translation>
 <translation id="3616113530831147358">音频</translation>
 <translation id="3619115746895587757">卡布奇诺</translation>
 <translation id="3620292326130836921">所有文件都已备份!</translation>
@@ -527,7 +522,6 @@
 <translation id="6657585470893396449">密码</translation>
 <translation id="6673674183150363784">法语(法国)Bépo 键盘</translation>
 <translation id="6710213216561001401">上一项</translation>
-<translation id="6718273304615422081">正在压缩…</translation>
 <translation id="6751256176799620176">已选择 1 个文件夹</translation>
 <translation id="6790428901817661496">播放</translation>
 <translation id="6795884519221689054">熊猫</translation>
@@ -727,7 +721,6 @@
 <translation id="8600173386174225982">文件列表已切换到缩略图视图。</translation>
 <translation id="8601932370724196034">Crostini 映像文件</translation>
 <translation id="8609695766746872526">冰岛语</translation>
-<translation id="8669949407341943408">正在移动…</translation>
 <translation id="8698464937041809063">Google 绘图</translation>
 <translation id="8712637175834984815">知道了</translation>
 <translation id="8713112442029511308">马耳他语</translation>
@@ -750,7 +743,6 @@
 <translation id="9034924485347205037">Linux 文件</translation>
 <translation id="9035012421917565900">这些内容一旦移出“<ph name="DESTINATION_NAME" />”便无法移回,因此您将无法撤消这项操作。</translation>
 <translation id="9038620279323455325">已有名为“<ph name="FILE_NAME" />”的文件。请另选一个名称。</translation>
-<translation id="9064939804718829769">正在处理…</translation>
 <translation id="9065203028668620118">编辑</translation>
 <translation id="908378762078012445">俄语注音 AATSEEL 键盘</translation>
 <translation id="9099674669267916096">页数</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_zh-HK.xtb b/ui/chromeos/translations/ui_chromeos_strings_zh-HK.xtb
index b5de04d..632921a 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_zh-HK.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_zh-HK.xtb
@@ -31,7 +31,6 @@
 <translation id="1293556467332435079">檔案</translation>
 <translation id="1297922636971898492">「Google 雲端硬碟」目前無法提供服務。一旦「Google 雲端硬碟」恢復正常,上載操作將會自動重新啟動。</translation>
 <translation id="1307931752636661898">無法查看 Linux 檔案</translation>
-<translation id="1338950911836659113">刪除中…</translation>
 <translation id="1346748346194534595">向右</translation>
 <translation id="1351692861129622852">正在匯入 <ph name="FILE_COUNT" /> 份文件…</translation>
 <translation id="1358735829858566124">檔案或目錄無法使用。</translation>
@@ -43,7 +42,6 @@
 <translation id="1430915738399379752">列印</translation>
 <translation id="1435838927755162558">與 Parallels Desktop 共用資料夾</translation>
 <translation id="1439494416798956626">已移至「<ph name="FOLDER_NAME" />」。</translation>
-<translation id="1464724975715666883">發生 1 個錯誤。</translation>
 <translation id="1467432559032391204">向左</translation>
 <translation id="1471718551822868769">斯洛伐克文</translation>
 <translation id="1474339897586437869">尚未上載 <ph name="FILENAME" />。「Google 雲端硬碟」沒有足夠空間。</translation>
@@ -226,11 +224,9 @@
 <translation id="3455931012307786678">愛沙尼亞文</translation>
 <translation id="3466147780910026086">正在掃描媒體裝置…</translation>
 <translation id="3468522857997926824">已備份 <ph name="FILE_COUNT" /> 張相片至「<ph name="BEGIN_LINK" />Google 雲端硬碟<ph name="END_LINK" />」</translation>
-<translation id="3470502288861289375">複製中…</translation>
 <translation id="3473378059788601120">已複製到「<ph name="FOLDER_NAME" />」。</translation>
 <translation id="3475447146579922140">Google 試算表</translation>
 <translation id="3486821258960016770">蒙古文</translation>
-<translation id="3495304270784461826">發生 <ph name="COUNT" /> 個錯誤。</translation>
 <translation id="3522708245912499433">葡萄牙文</translation>
 <translation id="3524311639100184459">注意:系統可能會自動刪除這些暫存檔案,以釋放磁碟空間。<ph name="BEGIN_LINK" />瞭解詳情<ph name="END_LINK" /></translation>
 <translation id="3527085408025491307">資料夾</translation>
@@ -240,7 +236,6 @@
 <translation id="357479282490346887">立陶宛文</translation>
 <translation id="3603385196401704894">加拿大法語</translation>
 <translation id="3606220979431771195">土耳其文 F 型</translation>
-<translation id="3609785682760573515">同步處理中…</translation>
 <translation id="3616113530831147358">音效檔案</translation>
 <translation id="3619115746895587757">泡沫咖啡</translation>
 <translation id="3620292326130836921">已全部備份!</translation>
@@ -533,7 +528,6 @@
 <translation id="6657585470893396449">密碼</translation>
 <translation id="6673674183150363784">法文 (法國),BÉPO 鍵盤</translation>
 <translation id="6710213216561001401">上一個</translation>
-<translation id="6718273304615422081">壓縮中…</translation>
 <translation id="6751256176799620176">已選取 1 個資料夾</translation>
 <translation id="6790428901817661496">播放</translation>
 <translation id="6795884519221689054">熊貓</translation>
@@ -733,7 +727,6 @@
 <translation id="8600173386174225982">檔案清單改咗做縮圖檢視模式。</translation>
 <translation id="8601932370724196034">Crostini 圖像檔案</translation>
 <translation id="8609695766746872526">冰島文</translation>
-<translation id="8669949407341943408">正在移動…</translation>
 <translation id="8698464937041809063">Google 繪圖</translation>
 <translation id="8712637175834984815">我知道了</translation>
 <translation id="8713112442029511308">馬爾他文</translation>
@@ -756,7 +749,6 @@
 <translation id="9034924485347205037">Linux 檔案</translation>
 <translation id="9035012421917565900">這些項目無法移回「<ph name="DESTINATION_NAME" />」,因此無法復原此操作。</translation>
 <translation id="9038620279323455325">名稱為「<ph name="FILE_NAME" />」的檔案已經存在,請選擇其他名稱。</translation>
-<translation id="9064939804718829769">轉移中…</translation>
 <translation id="9065203028668620118">編輯</translation>
 <translation id="908378762078012445">俄文 (注音 AATSEEL 鍵盤)</translation>
 <translation id="9099674669267916096">頁數</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_zh-TW.xtb b/ui/chromeos/translations/ui_chromeos_strings_zh-TW.xtb
index 96f194b..68ef061b5 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_zh-TW.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_zh-TW.xtb
@@ -31,7 +31,6 @@
 <translation id="1293556467332435079">檔案</translation>
 <translation id="1297922636971898492">Google 雲端硬碟目前無法提供服務。一旦 Google 雲端硬碟恢復正常運作,上傳作業將會自動重新啟動。</translation>
 <translation id="1307931752636661898">無法查看 Linux 檔案</translation>
-<translation id="1338950911836659113">刪除中...</translation>
 <translation id="1346748346194534595">向右</translation>
 <translation id="1351692861129622852">正在匯入 <ph name="FILE_COUNT" /> 個檔案...</translation>
 <translation id="1358735829858566124">檔案或目錄無法使用。</translation>
@@ -43,7 +42,6 @@
 <translation id="1430915738399379752">列印</translation>
 <translation id="1435838927755162558">與 Parallels Desktop 共用資料夾</translation>
 <translation id="1439494416798956626">已移至「<ph name="FOLDER_NAME" />」。</translation>
-<translation id="1464724975715666883">發生 1 個錯誤。</translation>
 <translation id="1467432559032391204">向左</translation>
 <translation id="1471718551822868769">斯洛伐克文</translation>
 <translation id="1474339897586437869">您的 Google 雲端硬碟的可用空間不足,因此無法上傳「<ph name="FILENAME" />」。</translation>
@@ -226,11 +224,9 @@
 <translation id="3455931012307786678">愛沙尼亞文</translation>
 <translation id="3466147780910026086">正在掃描您的媒體裝置...</translation>
 <translation id="3468522857997926824">已將 <ph name="FILE_COUNT" /> 張相片備份到 <ph name="BEGIN_LINK" />Google 雲端硬碟<ph name="END_LINK" /></translation>
-<translation id="3470502288861289375">複製中...</translation>
 <translation id="3473378059788601120">已複製到「<ph name="FOLDER_NAME" />」。</translation>
 <translation id="3475447146579922140">Google 試算表</translation>
 <translation id="3486821258960016770">蒙古文</translation>
-<translation id="3495304270784461826">發生 <ph name="COUNT" /> 個錯誤。</translation>
 <translation id="3522708245912499433">葡萄牙文</translation>
 <translation id="3524311639100184459">注意:這些是暫存檔案,系統可能會自動將其刪除,以釋出磁碟空間。<ph name="BEGIN_LINK" />瞭解詳情<ph name="END_LINK" /></translation>
 <translation id="3527085408025491307">資料夾</translation>
@@ -240,7 +236,6 @@
 <translation id="357479282490346887">立陶宛文</translation>
 <translation id="3603385196401704894">加拿大法文</translation>
 <translation id="3606220979431771195">土耳其文 F</translation>
-<translation id="3609785682760573515">同步處理中...</translation>
 <translation id="3616113530831147358">音訊</translation>
 <translation id="3619115746895587757">卡布奇諾</translation>
 <translation id="3620292326130836921">所有檔案都已備份!</translation>
@@ -533,7 +528,6 @@
 <translation id="6657585470893396449">密碼</translation>
 <translation id="6673674183150363784">法文 (法國) 搭配 Bépo 鍵盤</translation>
 <translation id="6710213216561001401">返回</translation>
-<translation id="6718273304615422081">壓縮中...</translation>
 <translation id="6751256176799620176">已選取 1 個資料夾</translation>
 <translation id="6790428901817661496">播放</translation>
 <translation id="6795884519221689054">熊貓</translation>
@@ -733,7 +727,6 @@
 <translation id="8600173386174225982">檔案清單已變更為縮圖檢視模式。</translation>
 <translation id="8601932370724196034">Crostini 圖片檔</translation>
 <translation id="8609695766746872526">冰島文</translation>
-<translation id="8669949407341943408">移動中...</translation>
 <translation id="8698464937041809063">Google 繪圖</translation>
 <translation id="8712637175834984815">我瞭解了</translation>
 <translation id="8713112442029511308">馬爾他文</translation>
@@ -756,7 +749,6 @@
 <translation id="9034924485347205037">Linux 檔案</translation>
 <translation id="9035012421917565900">這些項目無法移回「<ph name="DESTINATION_NAME" />」,因此無法復原這項操作。</translation>
 <translation id="9038620279323455325">名稱為「<ph name="FILE_NAME" />」的檔案已經存在,請選擇其他名稱。</translation>
-<translation id="9064939804718829769">轉移中...</translation>
 <translation id="9065203028668620118">編輯</translation>
 <translation id="908378762078012445">俄文搭配拼音 (AATSEEL) 鍵盤</translation>
 <translation id="9099674669267916096">頁數</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_zu.xtb b/ui/chromeos/translations/ui_chromeos_strings_zu.xtb
index 8874739f..7cde4f2 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_zu.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_zu.xtb
@@ -31,7 +31,6 @@
 <translation id="1293556467332435079">Amafayela</translation>
 <translation id="1297922636971898492">I-Google Drayivu ayitholakali khona manje. Ukulayisha kuzoqalisa kabusha ngokuzenzakalela uma i-Google Drayivu seyibuyile.</translation>
 <translation id="1307931752636661898">Ayikwazi ukubuka amafayela e-Linux</translation>
-<translation id="1338950911836659113">Iyasusa...</translation>
 <translation id="1346748346194534595">Kwesokudla</translation>
 <translation id="1351692861129622852">Ingenisa amafayela angu-<ph name="FILE_COUNT" />...</translation>
 <translation id="1358735829858566124">Ifayela noma umkhombandlela awusebenziseki.</translation>
@@ -43,7 +42,6 @@
 <translation id="1430915738399379752">Phrinta</translation>
 <translation id="1435838927755162558">Yabelana ngefolda ne-Parallels Desktop</translation>
 <translation id="1439494416798956626">Kuhanjiswe ku-<ph name="FOLDER_NAME" />.</translation>
-<translation id="1464724975715666883">1 iphutha.</translation>
 <translation id="1467432559032391204">Kwesobunxele</translation>
 <translation id="1471718551822868769">Isi-Slovak</translation>
 <translation id="1474339897586437869">I-"<ph name="FILENAME" />" ayizange ilayishwe. Asikho isikhala esanele esikhululekile ku-Google Drayivu yakho.</translation>
@@ -226,11 +224,9 @@
 <translation id="3455931012307786678">Isi-Estonia</translation>
 <translation id="3466147780910026086">Iskena idivayisi yakho yemidiya...</translation>
 <translation id="3468522857997926824"><ph name="FILE_COUNT" /> izithombe zenziwe isipele ku-<ph name="BEGIN_LINK" />Google Drayivu<ph name="END_LINK" /></translation>
-<translation id="3470502288861289375">Iyakopisha...</translation>
 <translation id="3473378059788601120">Ikopishelwe ku-<ph name="FOLDER_NAME" />.</translation>
 <translation id="3475447146579922140">Isipredishithi se-Google</translation>
 <translation id="3486821258960016770">Isi-Mongolian</translation>
-<translation id="3495304270784461826"><ph name="COUNT" /> amaphutha.</translation>
 <translation id="3522708245912499433">Isi-Portuguese</translation>
 <translation id="3524311639100184459">Isexwayiso: Lamafayela awesikhashana futhi angase asuswe ngokuzenzekelayo ukukhulula isikhala sediski.  <ph name="BEGIN_LINK" />Funda kabanzi<ph name="END_LINK" /></translation>
 <translation id="3527085408025491307">Ifolda</translation>
@@ -240,7 +236,6 @@
 <translation id="357479282490346887">Isi-Lithuanian</translation>
 <translation id="3603385196401704894">Isi-Canadian French</translation>
 <translation id="3606220979431771195">I-Turkish-F</translation>
-<translation id="3609785682760573515">Iyavumelanisa...</translation>
 <translation id="3616113530831147358">Umsindo</translation>
 <translation id="3619115746895587757">I-Cappuccino</translation>
 <translation id="3620292326130836921">Konke kwenziwe isipele!</translation>
@@ -532,7 +527,6 @@
 <translation id="6657585470893396449">Igama lokungena</translation>
 <translation id="6673674183150363784">Ikhibhodi yesi-French (France) ene-Bépo</translation>
 <translation id="6710213216561001401">Okwedlule</translation>
-<translation id="6718273304615422081">Iyazipha...</translation>
 <translation id="6751256176799620176">1 ifolda ekhethiwe</translation>
 <translation id="6790428901817661496">Dlala</translation>
 <translation id="6795884519221689054">I-Panda</translation>
@@ -732,7 +726,6 @@
 <translation id="8600173386174225982">Uhlu lwefayela lushintshele ekubukeni kwesithonjana.</translation>
 <translation id="8601932370724196034">Ifayela lesithombe se-Crostini</translation>
 <translation id="8609695766746872526">Isi-Icelandic</translation>
-<translation id="8669949407341943408">Iyahambisa...</translation>
 <translation id="8698464937041809063">Ukudweba kwe-Google</translation>
 <translation id="8712637175834984815">Ngiyitholile</translation>
 <translation id="8713112442029511308">Isi-Maltese</translation>
@@ -755,7 +748,6 @@
 <translation id="9034924485347205037">Amafayela e-Linux</translation>
 <translation id="9035012421917565900">Lezi zinto azikwazi ukubuyiselwa ku-'<ph name="DESTINATION_NAME" />', ngakho-ke ngeke ukwazi ukuhlehlisa lesi senzo.</translation>
 <translation id="9038620279323455325">Igama eliqanjwe "<ph name="FILE_NAME" />" selivele likhona. Sicela ukhethe igama elihlukile.</translation>
-<translation id="9064939804718829769">Iyandlulisa...</translation>
 <translation id="9065203028668620118">Hlela</translation>
 <translation id="908378762078012445">Isi-Russian esinekhibhodi ye-Phonetic AATSEEL</translation>
 <translation id="9099674669267916096">Ukubalwa kwekhasi</translation>
diff --git a/ui/compositor/test/test_compositor_host_x11.cc b/ui/compositor/test/test_compositor_host_x11.cc
index 595809b9..ee756f7 100644
--- a/ui/compositor/test/test_compositor_host_x11.cc
+++ b/ui/compositor/test/test_compositor_host_x11.cc
@@ -10,6 +10,7 @@
 #include "base/threading/thread_task_runner_handle.h"
 #include "base/time/time.h"
 #include "ui/events/x/x11_window_event_manager.h"
+#include "ui/gfx/x/future.h"
 #include "ui/gfx/x/xproto.h"
 
 namespace ui {
diff --git a/ui/events/devices/x11/device_data_manager_x11.cc b/ui/events/devices/x11/device_data_manager_x11.cc
index 274c0795..1188c48 100644
--- a/ui/events/devices/x11/device_data_manager_x11.cc
+++ b/ui/events/devices/x11/device_data_manager_x11.cc
@@ -25,6 +25,7 @@
 #include "ui/events/event_switches.h"
 #include "ui/events/keycodes/keyboard_code_conversion_x.h"
 #include "ui/gfx/geometry/point3_f.h"
+#include "ui/gfx/x/future.h"
 #include "ui/gfx/x/x11_atom_cache.h"
 
 // XIScrollClass was introduced in XI 2.1 so we need to define it here
diff --git a/ui/events/devices/x11/device_list_cache_x11.cc b/ui/events/devices/x11/device_list_cache_x11.cc
index 49fe471..7a50e8b1 100644
--- a/ui/events/devices/x11/device_list_cache_x11.cc
+++ b/ui/events/devices/x11/device_list_cache_x11.cc
@@ -9,6 +9,7 @@
 #include "base/memory/singleton.h"
 #include "ui/events/devices/x11/device_data_manager_x11.h"
 #include "ui/gfx/x/connection.h"
+#include "ui/gfx/x/future.h"
 
 namespace ui {
 
diff --git a/ui/events/devices/x11/touch_factory_x11.cc b/ui/events/devices/x11/touch_factory_x11.cc
index 6a811d1..4b115dc2 100644
--- a/ui/events/devices/x11/touch_factory_x11.cc
+++ b/ui/events/devices/x11/touch_factory_x11.cc
@@ -20,6 +20,7 @@
 #include "ui/events/devices/x11/xinput_util.h"
 #include "ui/events/event_switches.h"
 #include "ui/gfx/x/connection.h"
+#include "ui/gfx/x/future.h"
 
 namespace ui {
 namespace {
diff --git a/ui/events/platform/x11/x11_event_source.cc b/ui/events/platform/x11/x11_event_source.cc
index 3907c73..b5ec391 100644
--- a/ui/events/platform/x11/x11_event_source.cc
+++ b/ui/events/platform/x11/x11_event_source.cc
@@ -24,6 +24,7 @@
 #include "ui/events/x/x11_window_event_manager.h"
 #include "ui/gfx/x/connection.h"
 #include "ui/gfx/x/extension_manager.h"
+#include "ui/gfx/x/future.h"
 #include "ui/gfx/x/x11_atom_cache.h"
 #include "ui/gfx/x/xkb.h"
 #include "ui/gfx/x/xproto.h"
diff --git a/ui/events/platform/x11/x11_hotplug_event_handler.cc b/ui/events/platform/x11/x11_hotplug_event_handler.cc
index 6a4da33..59e39a4 100644
--- a/ui/events/platform/x11/x11_hotplug_event_handler.cc
+++ b/ui/events/platform/x11/x11_hotplug_event_handler.cc
@@ -32,6 +32,7 @@
 #include "ui/events/devices/touchscreen_device.h"
 #include "ui/gfx/x/connection.h"
 #include "ui/gfx/x/extension_manager.h"
+#include "ui/gfx/x/future.h"
 #include "ui/gfx/x/x11_atom_cache.h"
 
 namespace ui {
diff --git a/ui/events/x/keyboard_hook_x11.cc b/ui/events/x/keyboard_hook_x11.cc
index dee0e1d0..60f0348 100644
--- a/ui/events/x/keyboard_hook_x11.cc
+++ b/ui/events/x/keyboard_hook_x11.cc
@@ -14,6 +14,7 @@
 #include "ui/events/event.h"
 #include "ui/events/keycodes/dom/dom_code.h"
 #include "ui/events/keycodes/dom/keycode_converter.h"
+#include "ui/gfx/x/future.h"
 #include "ui/gfx/x/xproto.h"
 
 namespace ui {
diff --git a/ui/events/x/x11_window_event_manager.cc b/ui/events/x/x11_window_event_manager.cc
index c4ee322..b3634d4 100644
--- a/ui/events/x/x11_window_event_manager.cc
+++ b/ui/events/x/x11_window_event_manager.cc
@@ -7,6 +7,7 @@
 #include <stddef.h>
 
 #include "base/memory/singleton.h"
+#include "ui/gfx/x/future.h"
 
 namespace ui {
 
diff --git a/ui/gfx/linux/gpu_memory_buffer_support_x11.cc b/ui/gfx/linux/gpu_memory_buffer_support_x11.cc
index 28e5d27..e0209c94 100644
--- a/ui/gfx/linux/gpu_memory_buffer_support_x11.cc
+++ b/ui/gfx/linux/gpu_memory_buffer_support_x11.cc
@@ -22,6 +22,7 @@
 #include "ui/gfx/linux/gbm_wrapper.h"
 #include "ui/gfx/x/connection.h"
 #include "ui/gfx/x/dri3.h"
+#include "ui/gfx/x/future.h"
 
 namespace ui {
 
diff --git a/ui/gfx/x/BUILD.gn b/ui/gfx/x/BUILD.gn
index f71409b..90882c6 100644
--- a/ui/gfx/x/BUILD.gn
+++ b/ui/gfx/x/BUILD.gn
@@ -134,6 +134,7 @@
               "xproto_internal.cc",
               "xproto_types.h",
               "xproto_types.cc",
+              "future.h",
               "xproto_util.h",
             ]
   configs += [ ":x11_private_config" ]
diff --git a/ui/gfx/x/connection.cc b/ui/gfx/x/connection.cc
index 8dff5903..ee4b561 100644
--- a/ui/gfx/x/connection.cc
+++ b/ui/gfx/x/connection.cc
@@ -16,6 +16,7 @@
 #include "base/no_destructor.h"
 #include "base/strings/string16.h"
 #include "base/threading/thread_local.h"
+#include "base/trace_event/trace_event.h"
 #include "ui/gfx/x/bigreq.h"
 #include "ui/gfx/x/event.h"
 #include "ui/gfx/x/keyboard_state.h"
@@ -67,7 +68,7 @@
 
 class UnknownError : public Error {
  public:
-  explicit UnknownError(FutureBase::RawError error_bytes)
+  explicit UnknownError(Connection::RawError error_bytes)
       : error_bytes_(error_bytes) {}
 
   ~UnknownError() override = default;
@@ -88,7 +89,7 @@
   }
 
  private:
-  FutureBase::RawError error_bytes_;
+  Connection::RawError error_bytes_;
 };
 
 }  // namespace
@@ -160,11 +161,16 @@
   for (const auto& format : setup_.pixmap_formats)
     formats[format.depth] = &format;
 
+  std::vector<std::pair<VisualId, VisualInfo>> default_screen_visuals;
   for (const auto& depth : default_screen().allowed_depths) {
     const Format* format = formats[depth.depth];
-    for (const auto& visual : depth.visuals)
-      default_screen_visuals_[visual.visual_id] = VisualInfo{format, &visual};
+    for (const auto& visual : depth.visuals) {
+      default_screen_visuals.emplace_back(visual.visual_id,
+                                          VisualInfo{format, &visual});
+    }
   }
+  default_screen_visuals_ =
+      base::flat_map<VisualId, VisualInfo>(std::move(default_screen_visuals));
 
   keyboard_state_ = CreateKeyboardState(this);
 
@@ -178,13 +184,6 @@
   xcb_disconnect(connection_);
 }
 
-xcb_connection_t* Connection::XcbConnection() {
-  DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
-  if (io_error_handler_ && xcb_connection_has_error(connection_))
-    std::move(io_error_handler_).Run();
-  return connection_;
-}
-
 XlibDisplayWrapper Connection::GetXlibDisplay(XlibDisplayType type) {
   DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
   if (!xlib_display_)
@@ -192,19 +191,86 @@
   return XlibDisplayWrapper(xlib_display_->display_, type);
 }
 
-Connection::Request::Request(unsigned int sequence,
-                             FutureBase::ResponseCallback callback)
-    : sequence(sequence), callback(std::move(callback)) {}
+Connection::FutureImpl::FutureImpl(Connection* connection,
+                                   SequenceType sequence,
+                                   bool generates_reply,
+                                   const char* request_name_for_tracing)
+    : connection(connection),
+      sequence(sequence),
+      generates_reply(generates_reply),
+      request_name_for_tracing(request_name_for_tracing) {}
 
-Connection::Request::Request(Request&& other)
-    : sequence(other.sequence),
-      callback(std::move(other.callback)),
-      have_response(other.have_response),
-      reply(std::move(other.reply)),
-      error(std::move(other.error)) {}
+void Connection::FutureImpl::Wait() {
+  connection->WaitForResponse(this);
+  ProcessResponse();
+}
+
+void Connection::FutureImpl::Sync(RawReply* raw_reply,
+                                  std::unique_ptr<Error>* error) {
+  connection->WaitForResponse(this);
+  TakeResponse(raw_reply, error);
+}
+
+void Connection::FutureImpl::OnResponse(ResponseCallback callback) {
+  UpdateRequestHandler(std::move(callback));
+}
+
+void Connection::FutureImpl::UpdateRequestHandler(ResponseCallback callback) {
+  DCHECK_CALLED_ON_VALID_SEQUENCE(connection->sequence_checker_);
+  DCHECK(callback);
+
+  auto* request = connection->GetRequestForFuture(this);
+  // Make sure we haven't processed this request yet.
+  DCHECK(request->callback);
+
+  request->callback = std::move(callback);
+}
+
+void Connection::FutureImpl::ProcessResponse() {
+  DCHECK_CALLED_ON_VALID_SEQUENCE(connection->sequence_checker_);
+
+  auto* request = connection->GetRequestForFuture(this);
+  DCHECK(request->callback);
+  DCHECK(request->have_response);
+
+  std::move(request->callback)
+      .Run(std::move(request->reply), std::move(request->error));
+}
+
+void Connection::FutureImpl::TakeResponse(RawReply* raw_reply,
+                                          std::unique_ptr<Error>* error) {
+  DCHECK_CALLED_ON_VALID_SEQUENCE(connection->sequence_checker_);
+
+  auto* request = connection->GetRequestForFuture(this);
+  DCHECK(request->callback);
+  DCHECK(request->have_response);
+
+  *raw_reply = std::move(request->reply);
+  *error = std::move(request->error);
+  request->callback.Reset();
+}
+
+Connection::Request::Request(ResponseCallback callback)
+    : callback(std::move(callback)) {
+  DCHECK(this->callback);
+}
+
+Connection::Request::Request(Request&& other) = default;
 
 Connection::Request::~Request() = default;
 
+void Connection::Request::SetResponse(Connection* connection,
+                                      void* raw_reply,
+                                      void* raw_error) {
+  have_response = true;
+  if (raw_reply)
+    reply = base::MakeRefCounted<MallocedRefCountedMemory>(raw_reply);
+  if (raw_error) {
+    error = connection->ParseError(
+        base::MakeRefCounted<MallocedRefCountedMemory>(raw_error));
+  }
+}
+
 bool Connection::HasNextResponse() {
   if (requests_.empty())
     return false;
@@ -214,13 +280,11 @@
 
   void* reply = nullptr;
   xcb_generic_error_t* error = nullptr;
-  request.have_response =
-      xcb_poll_for_reply(XcbConnection(), request.sequence, &reply, &error);
-  if (reply)
-    request.reply = base::MakeRefCounted<MallocedRefCountedMemory>(reply);
-  if (error)
-    request.error = base::MakeRefCounted<MallocedRefCountedMemory>(error);
-  return request.have_response;
+  if (!xcb_poll_for_reply(XcbConnection(), first_request_id_, &reply, &error))
+    return false;
+
+  request.SetResponse(this, reply, error);
+  return true;
 }
 
 int Connection::GetFd() {
@@ -346,8 +410,16 @@
     DCHECK(requests_.front().have_response);
 
     Request request = std::move(requests_.front());
-    requests_.pop();
-    std::move(request.callback).Run(request.reply, request.error);
+    requests_.pop_front();
+    if (last_non_void_request_id_.has_value() &&
+        last_non_void_request_id_.value() == first_request_id_) {
+      last_non_void_request_id_ = base::nullopt;
+    }
+    first_request_id_++;
+    if (request.callback) {
+      std::move(request.callback)
+          .Run(std::move(request.reply), std::move(request.error));
+    }
   };
 
   auto process_next_event = [&] {
@@ -370,7 +442,7 @@
         continue;
       }
 
-      auto next_response_sequence = requests_.front().sequence;
+      auto next_response_sequence = first_request_id_;
       auto next_event_sequence = events_.front().sequence();
 
       // All events have the sequence number of the last processed request
@@ -402,6 +474,13 @@
   io_error_handler_ = std::move(new_handler);
 }
 
+xcb_connection_t* Connection::XcbConnection() {
+  DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
+  if (io_error_handler_ && xcb_connection_has_error(connection_))
+    std::move(io_error_handler_).Run();
+  return connection_;
+}
+
 void Connection::InitRootDepthAndVisual() {
   for (auto& depth : default_screen_->allowed_depths) {
     for (auto& visual : depth.visuals) {
@@ -415,13 +494,167 @@
   NOTREACHED();
 }
 
-void Connection::AddRequest(unsigned int sequence,
-                            FutureBase::ResponseCallback callback) {
+std::unique_ptr<Connection::FutureImpl> Connection::SendRequest(
+    WriteBuffer* buf,
+    const char* request_name_for_tracing,
+    bool generates_reply,
+    bool reply_has_fds) {
   DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
-  DCHECK(requests_.empty() ||
-         CompareSequenceIds(requests_.back().sequence, sequence) < 0);
 
-  requests_.emplace(sequence, std::move(callback));
+  xcb_protocol_request_t xpr{
+      .ext = nullptr,
+      .isvoid = !generates_reply,
+  };
+
+  struct RequestHeader {
+    uint8_t major_opcode;
+    uint8_t minor_opcode;
+    uint16_t length;
+  };
+
+  struct ExtendedRequestHeader {
+    RequestHeader header;
+    uint32_t long_length;
+  };
+  static_assert(sizeof(ExtendedRequestHeader) == 8, "");
+
+  auto& first_buffer = buf->GetBuffers()[0];
+  DCHECK_GE(first_buffer->size(), sizeof(RequestHeader));
+  auto* old_header = reinterpret_cast<RequestHeader*>(
+      const_cast<uint8_t*>(first_buffer->data()));
+  ExtendedRequestHeader new_header{*old_header, 0};
+
+  // Requests are always a multiple of 4 bytes on the wire.  Because of this,
+  // the length field represents the size in chunks of 4 bytes.
+  DCHECK_EQ(buf->offset() % 4, 0UL);
+  size_t size32 = buf->offset() / 4;
+
+  // XCB requires 2 iovecs for its own internal usage.
+  std::vector<struct iovec> io{{nullptr, 0}, {nullptr, 0}};
+  if (size32 < setup_.maximum_request_length) {
+    // Regular request
+    old_header->length = size32;
+  } else if (size32 < extended_max_request_length_) {
+    // BigRequests extension request
+    DCHECK_EQ(new_header.header.length, 0U);
+    new_header.long_length = size32 + 1;
+
+    io.push_back({&new_header, sizeof(ExtendedRequestHeader)});
+    first_buffer = base::MakeRefCounted<OffsetRefCountedMemory>(
+        first_buffer, sizeof(RequestHeader),
+        first_buffer->size() - sizeof(RequestHeader));
+  } else {
+    LOG(ERROR) << "Cannot send request of length " << buf->offset();
+    return nullptr;
+  }
+
+  for (auto& buffer : buf->GetBuffers())
+    io.push_back({const_cast<uint8_t*>(buffer->data()), buffer->size()});
+  xpr.count = io.size() - 2;
+
+  xcb_connection_t* conn = XcbConnection();
+  auto flags = XCB_REQUEST_CHECKED | XCB_REQUEST_RAW;
+  if (reply_has_fds)
+    flags |= XCB_REQUEST_REPLY_FDS;
+
+  for (int fd : buf->fds())
+    xcb_send_fd(conn, fd);
+  SequenceType sequence = xcb_send_request(conn, flags, &io[2], &xpr);
+
+  if (xcb_connection_has_error(conn))
+    return nullptr;
+
+  SequenceType next_request_id = first_request_id_ + requests_.size();
+  DCHECK_EQ(CompareSequenceIds(next_request_id, sequence), 0);
+
+  // If we ever reach 2^32 outstanding requests, then bail because sequence IDs
+  // would no longer be unique.
+  next_request_id++;
+  CHECK_NE(next_request_id, first_request_id_);
+
+  // Install a default response-handler that throws away the reply and prints
+  // the error if there is one.  This handler may be overridden by clients.
+  auto callback = base::BindOnce(
+      [](const char* request_name, Connection::ErrorHandler error_handler,
+         RawReply raw_reply, std::unique_ptr<Error> error) {
+        if (error)
+          error_handler.Run(error.get(), request_name);
+      },
+      request_name_for_tracing, error_handler_);
+  requests_.emplace_back(std::move(callback));
+  if (generates_reply)
+    last_non_void_request_id_ = sequence;
+  if (synchronous_)
+    Sync();
+
+  return std::make_unique<FutureImpl>(this, sequence, generates_reply,
+                                      request_name_for_tracing);
+}
+
+void Connection::WaitForResponse(FutureImpl* future) {
+  DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
+
+  auto* request = GetRequestForFuture(future);
+  DCHECK(request->callback);
+  if (request->have_response)
+    return;
+
+  xcb_generic_error_t* error = nullptr;
+  void* reply = nullptr;
+  if (future->generates_reply) {
+    if (!xcb_poll_for_reply(XcbConnection(), future->sequence, &reply,
+                            &error)) {
+      TRACE_EVENT1("ui", "xcb_wait_for_reply", "request",
+                   future->request_name_for_tracing);
+      reply = xcb_wait_for_reply(XcbConnection(), future->sequence, &error);
+    }
+  } else {
+    // There's a special case here.  This request doesn't generate a reply, and
+    // may not generate an error, so the only way to know if it finished is to
+    // send another request that we know will generate a reply or error.  Once
+    // the new request finishes, we know this request has finished, since the
+    // server is guaranteed to process requests in order.  Normally, the
+    // xcb_request_check() below would do this for us automatically, but we need
+    // to keep track of the sequence count ourselves, so we explicitly make a
+    // GetInputFocus request if necessary (which is the request xcb would have
+    // made -- GetInputFocus is chosen since it has the minimum size request and
+    // reply, and can be made at any time).
+    bool needs_extra_request_for_check = false;
+    if (!last_non_void_request_id_.has_value()) {
+      needs_extra_request_for_check = true;
+    } else {
+      SequenceType last_non_void_offset =
+          last_non_void_request_id_.value() - first_request_id_;
+      SequenceType sequence_offset = future->sequence - first_request_id_;
+      needs_extra_request_for_check = sequence_offset > last_non_void_offset;
+    }
+    if (needs_extra_request_for_check) {
+      GetInputFocus({}).IgnoreError();
+      // The circular_deque may have swapped buffers, so we need to get a fresh
+      // pointer to the request.
+      request = GetRequestForFuture(future);
+    }
+
+    // libxcb has a bug where it doesn't flush in xcb_request_check() under some
+    // circumstances, leading to deadlock [1], so always perform a manual flush.
+    // [1] https://gitlab.freedesktop.org/xorg/lib/libxcb/-/issues/53
+    Flush();
+
+    {
+      TRACE_EVENT1("ui", "xcb_request_check", "request",
+                   future->request_name_for_tracing);
+      error = xcb_request_check(XcbConnection(), {future->sequence});
+    }
+  }
+  request->SetResponse(this, reply, error);
+}
+
+Connection::Request* Connection::GetRequestForFuture(FutureImpl* future) {
+  DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
+
+  SequenceType offset = future->sequence - first_request_id_;
+  DCHECK_LT(offset, requests_.size());
+  return &requests_[offset];
 }
 
 void Connection::PreDispatchEvent(const Event& event) {
@@ -475,8 +708,7 @@
   return -1;
 }
 
-std::unique_ptr<Error> Connection::ParseError(
-    FutureBase::RawError error_bytes) {
+std::unique_ptr<Error> Connection::ParseError(RawError error_bytes) {
   if (!error_bytes)
     return nullptr;
   struct ErrorHeader {
diff --git a/ui/gfx/x/connection.h b/ui/gfx/x/connection.h
index 4209550..b5a3812 100644
--- a/ui/gfx/x/connection.h
+++ b/ui/gfx/x/connection.h
@@ -8,10 +8,13 @@
 #include <list>
 #include <queue>
 
+#include "base/callback.h"
 #include "base/component_export.h"
+#include "base/containers/circular_deque.h"
+#include "base/containers/flat_map.h"
+#include "base/optional.h"
 #include "base/sequence_checker.h"
 #include "ui/events/platform/platform_event_source.h"
-#include "ui/gfx/x/event.h"
 #include "ui/gfx/x/extension_manager.h"
 #include "ui/gfx/x/xlib_support.h"
 #include "ui/gfx/x/xproto.h"
@@ -20,7 +23,9 @@
 
 namespace x11 {
 
+class Event;
 class KeyboardState;
+class WriteBuffer;
 
 // Represents a socket to the X11 server.
 class COMPONENT_EXPORT(X11) Connection : public XProto,
@@ -28,6 +33,14 @@
  public:
   using ErrorHandler = base::RepeatingCallback<void(const Error*, const char*)>;
   using IOErrorHandler = base::OnceClosure;
+  using RawReply = scoped_refptr<base::RefCountedMemory>;
+  using RawError = scoped_refptr<base::RefCountedMemory>;
+  using ResponseCallback =
+      base::OnceCallback<void(RawReply reply, std::unique_ptr<Error> error)>;
+
+  // xcb returns unsigned int when making requests.  This may be updated to
+  // uint16_t if/when we stop using xcb for socket IO.
+  using SequenceType = unsigned int;
 
   class Delegate {
    public:
@@ -49,14 +62,27 @@
   // Sets the thread local connection instance.
   static void Set(std::unique_ptr<x11::Connection> connection);
 
+  template <typename T>
+  T GenerateId() {
+    DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
+    return static_cast<T>(GenerateIdImpl());
+  }
+
+  template <typename Reply>
+  Future<Reply> SendRequest(WriteBuffer* buf,
+                            const char* request_name,
+                            bool reply_has_fds) {
+    bool generates_reply = !std::is_void<Reply>::value;
+    return Future<Reply>(
+        SendRequest(buf, request_name, generates_reply, reply_has_fds));
+  }
+
   explicit Connection(const std::string& address = "");
   ~Connection();
 
   Connection(const Connection&) = delete;
   Connection(Connection&&) = delete;
 
-  xcb_connection_t* XcbConnection();
-
   // Obtain an Xlib display that's connected to the same server as |this|.  This
   // is meant to be used only for compatibility with components like GLX,
   // Vulkan, and VAAPI.  The underlying socket is not shared, so synchronization
@@ -101,12 +127,6 @@
 
   int DefaultScreenId() const;
 
-  template <typename T>
-  T GenerateId() {
-    DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
-    return static_cast<T>(GenerateIdImpl());
-  }
-
   // Is the connection up and error-free?
   bool Ready() const;
 
@@ -119,8 +139,6 @@
   // If |synchronous| is true, this makes all requests Sync().
   void SynchronizeForTest(bool synchronous);
 
-  bool synchronous() const { return synchronous_; }
-
   // Read all responses from the socket without blocking.
   void ReadResponses();
 
@@ -163,26 +181,83 @@
   std::unique_ptr<ui::PlatformEventSource> platform_event_source;
 
  private:
-  friend class FutureBase;
+  template <typename Reply>
+  friend class Future;
+
+  class COMPONENT_EXPORT(X11) FutureImpl {
+   public:
+    FutureImpl(Connection* connection,
+               SequenceType sequence,
+               bool generates_reply,
+               const char* request_name_for_tracing);
+
+    void Wait();
+
+    void Sync(RawReply* raw_reply, std::unique_ptr<Error>* error);
+
+    void OnResponse(ResponseCallback callback);
+
+    // Update an existing Request with a new handler.  |sequence| must
+    // correspond to a request in the queue that has not already been processed
+    // out-of-order.
+    void UpdateRequestHandler(ResponseCallback callback);
+
+    // Call the response handler for request |sequence| now (out-of-order).  The
+    // response must already have been obtained from a call to
+    // WaitForResponse().
+    void ProcessResponse();
+
+    // Clear the response handler for request |sequence| and take the response.
+    // The response must already have been obtained using WaitForResponse().
+    void TakeResponse(RawReply* reply, std::unique_ptr<Error>* error);
+
+    Connection* connection = nullptr;
+    SequenceType sequence = 0;
+    bool generates_reply = false;
+    const char* request_name_for_tracing = nullptr;
+  };
 
   struct Request {
-    Request(unsigned int sequence, FutureBase::ResponseCallback callback);
+    explicit Request(ResponseCallback callback);
     Request(Request&& other);
     ~Request();
 
-    const unsigned int sequence;
-    FutureBase::ResponseCallback callback;
+    // Takes ownership of |reply| and |error|.
+    void SetResponse(Connection* connection, void* raw_reply, void* raw_error);
+
+    // If |callback| is nullptr, then this request has already been processed
+    // out-of-order.
+    ResponseCallback callback;
+
+    // Indicates if |reply| and |error| are available.  A separate
+    // |have_response| flag is necessary to distinguish the case where a request
+    // hasn't finished yet from the case where a request finished but didn't
+    // generate a reply or error.
     bool have_response = false;
-    FutureBase::RawReply reply;
-    FutureBase::RawError error;
+    RawReply reply;
+    std::unique_ptr<Error> error;
   };
 
+  xcb_connection_t* XcbConnection();
+
   void InitRootDepthAndVisual();
 
-  void AddRequest(unsigned int sequence, FutureBase::ResponseCallback callback);
-
   bool HasNextResponse();
 
+  // Creates a new Request and adds it to the end of the queue.
+  // |request_name_for_tracing| must be valid until the response is
+  // dispatched; currently the string values are only stored in .rodata, so
+  // this constraint is satisfied.
+  std::unique_ptr<FutureImpl> SendRequest(WriteBuffer* buf,
+                                          const char* request_name_for_tracing,
+                                          bool generates_reply,
+                                          bool reply_has_fds);
+
+  // Block until the reply or error for request |sequence| is received.
+  void WaitForResponse(FutureImpl* future);
+
+  Request* GetRequestForFuture(FutureImpl* future);
+
   void PreDispatchEvent(const Event& event);
 
   int ScreenIndexFromRootWindow(x11::Window root) const;
@@ -190,7 +265,7 @@
   // This function is implemented in the generated read_error.cc.
   void InitErrorParsers();
 
-  std::unique_ptr<Error> ParseError(FutureBase::RawError error_bytes);
+  std::unique_ptr<Error> ParseError(RawError error_bytes);
 
   uint32_t GenerateIdImpl();
 
@@ -209,16 +284,22 @@
   Depth* default_root_depth_ = nullptr;
   VisualType* default_root_visual_ = nullptr;
 
-  std::unordered_map<VisualId, VisualInfo> default_screen_visuals_;
+  base::flat_map<VisualId, VisualInfo> default_screen_visuals_;
 
   std::unique_ptr<KeyboardState> keyboard_state_;
 
   std::list<Event> events_;
 
-  std::queue<Request> requests_;
+  base::circular_deque<Request> requests_;
+  // The sequence ID of requests_.front(), or if |requests_| is empty, then the
+  // ID of the next request that will go in the queue.  This starts at 1 because
+  // the 0'th request is handled internally by XCB when opening the connection.
+  SequenceType first_request_id_ = 1;
+  // If any request in |requests_| will generate a reply, this is the ID of the
+  // latest one, otherwise this is base::nullopt.
+  base::Optional<SequenceType> last_non_void_request_id_;
 
-  using ErrorParser =
-      std::unique_ptr<Error> (*)(FutureBase::RawError error_bytes);
+  using ErrorParser = std::unique_ptr<Error> (*)(RawError error_bytes);
   std::array<ErrorParser, 256> error_parsers_{};
 
   ErrorHandler error_handler_;
diff --git a/ui/gfx/x/connection_unittest.cc b/ui/gfx/x/connection_unittest.cc
index 4f140e0..7e1fd83 100644
--- a/ui/gfx/x/connection_unittest.cc
+++ b/ui/gfx/x/connection_unittest.cc
@@ -3,14 +3,12 @@
 // found in the LICENSE file.
 
 #include "ui/gfx/x/connection.h"
+
 #include "base/memory/ref_counted_memory.h"
-#include "ui/gfx/x/xproto.h"
-
-#undef Bool
-
-#include <xcb/xcb.h>
-
 #include "testing/gtest/include/gtest/gtest.h"
+#include "ui/gfx/x/event.h"
+#include "ui/gfx/x/future.h"
+#include "ui/gfx/x/xproto.h"
 
 namespace x11 {
 
@@ -36,14 +34,12 @@
 // Connection setup and teardown.
 TEST(X11ConnectionTest, Basic) {
   Connection connection;
-  ASSERT_TRUE(connection.XcbConnection());
-  EXPECT_TRUE(connection.Ready());
+  ASSERT_TRUE(connection.Ready());
 }
 
 TEST(X11ConnectionTest, Request) {
   Connection connection;
-  ASSERT_TRUE(connection.XcbConnection());
-  EXPECT_TRUE(connection.Ready());
+  ASSERT_TRUE(connection.Ready());
 
   Window window = CreateWindow(&connection);
 
@@ -62,8 +58,7 @@
 
 TEST(X11ConnectionTest, Event) {
   Connection connection;
-  ASSERT_TRUE(connection.XcbConnection());
-  EXPECT_TRUE(connection.Ready());
+  ASSERT_TRUE(connection.Ready());
 
   Window window = CreateWindow(&connection);
 
@@ -94,8 +89,7 @@
 
 TEST(X11ConnectionTest, Error) {
   Connection connection;
-  ASSERT_TRUE(connection.XcbConnection());
-  EXPECT_TRUE(connection.Ready());
+  ASSERT_TRUE(connection.Ready());
 
   Window invalid_window = connection.GenerateId<Window>();
 
diff --git a/ui/gfx/x/future.h b/ui/gfx/x/future.h
new file mode 100644
index 0000000..5c9addf
--- /dev/null
+++ b/ui/gfx/x/future.h
@@ -0,0 +1,114 @@
+// Copyright 2020 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef UI_GFX_X_FUTURE_H_
+#define UI_GFX_X_FUTURE_H_
+
+#include "ui/gfx/x/connection.h"
+#include "ui/gfx/x/xproto_types.h"
+
+namespace x11 {
+
+// An x11::Future wraps an asynchronous response from the X11 server.  The
+// response may be waited-for with Sync(), or asynchronously handled by
+// installing a response handler using OnResponse().
+template <typename Reply>
+class Future {
+ public:
+  using Callback = base::OnceCallback<void(Response<Reply> response)>;
+
+  Future() = default;
+
+  explicit Future(std::unique_ptr<Connection::FutureImpl> impl)
+      : impl_(std::move(impl)) {}
+
+  // Blocks until we receive the response from the server. Returns the response.
+  Response<Reply> Sync() {
+    if (!impl_)
+      return {nullptr, nullptr};
+
+    Connection::RawReply raw_reply;
+    std::unique_ptr<Error> error;
+    impl_->Sync(&raw_reply, &error);
+
+    std::unique_ptr<Reply> reply;
+    if (raw_reply) {
+      auto buf = ReadBuffer(raw_reply);
+      reply = detail::ReadReply<Reply>(&buf);
+    }
+
+    return {std::move(reply), std::move(error)};
+  }
+
+  // Block until this request is handled by the server.  Unlike Sync(), this
+  // method doesn't return the response.  Rather, it calls the response
+  // handler installed for this request out-of-order.
+  void Wait() {
+    if (impl_)
+      impl_->Wait();
+  }
+
+  // Installs |callback| to be run when the response is received.
+  void OnResponse(Callback callback) {
+    if (!impl_)
+      return;
+
+    // This intermediate callback handles the conversion from |raw_reply| to a
+    // real Reply object before feeding the result to |callback|.  This means
+    // |callback| must be bound as the first argument of the intermediate
+    // function.
+    auto wrapper = [](Callback callback, Connection::RawReply raw_reply,
+                      std::unique_ptr<Error> error) {
+      std::unique_ptr<Reply> reply;
+      if (raw_reply) {
+        ReadBuffer buf(raw_reply);
+        reply = detail::ReadReply<Reply>(&buf);
+      }
+      std::move(callback).Run({std::move(reply), std::move(error)});
+    };
+    impl_->OnResponse(base::BindOnce(wrapper, std::move(callback)));
+  }
+
+  void IgnoreError() {
+    OnResponse(base::BindOnce([](Response<Reply>) {}));
+  }
+
+ private:
+  std::unique_ptr<Connection::FutureImpl> impl_;
+};
+
+// Sync() specialization for requests that don't generate replies.  The returned
+// response will only contain an error if there was one.
+template <>
+inline Response<void> Future<void>::Sync() {
+  if (!impl_)
+    return Response<void>{nullptr};
+
+  Connection::RawReply raw_reply;
+  std::unique_ptr<Error> error;
+  impl_->Sync(&raw_reply, &error);
+  DCHECK(!raw_reply);
+  return Response<void>(std::move(error));
+}
+
+// OnResponse() specialization for requests that don't generate replies.  The
+// response argument to |callback| will only contain an error if there was one.
+template <>
+inline void Future<void>::OnResponse(Callback callback) {
+  if (!impl_)
+    return;
+
+  // See Future<Reply>::OnResponse() for an explanation of why
+  // this wrapper is necessary.
+  auto wrapper = [](Callback callback, Connection::RawReply reply,
+                    std::unique_ptr<Error> error) {
+    DCHECK(!reply);
+    std::move(callback).Run(Response<void>{std::move(error)});
+  };
+  impl_->OnResponse(base::BindOnce(wrapper, std::move(callback)));
+}
+
+}  // namespace x11
+
+#endif  //  UI_GFX_X_FUTURE_H_
diff --git a/ui/gfx/x/gen_xproto.py b/ui/gfx/x/gen_xproto.py
index 94df052..f0b1fca 100644
--- a/ui/gfx/x/gen_xproto.py
+++ b/ui/gfx/x/gen_xproto.py
@@ -8,162 +8,6 @@
 # wire format.  However, we don't parse the XML here; xcbproto ships
 # with xcbgen, a python library that parses the files into python data
 # structures for us.
-#
-# The generated header and source files will look like this:
-
-# #ifndef GEN_UI_GFX_X_XPROTO_H_
-# #define GEN_UI_GFX_X_XPROTO_H_
-#
-# #include <array>
-# #include <cstddef>
-# #include <cstdint>
-# #include <cstring>
-# #include <vector>
-#
-# #include "base/component_export.h"
-# #include "ui/gfx/x/xproto_types.h"
-#
-# namespace x11 {
-#
-# class Connection;
-#
-# class COMPONENT_EXPORT(X11) XProto {
-#  public:
-#   explicit XProto(Connection* connection);
-#
-#   Connection* connection() const { return connection_; }
-#
-#   struct RGB {
-#     uint16_t red{};
-#     uint16_t green{};
-#     uint16_t blue{};
-#   };
-#
-#   struct QueryColorsRequest {
-#     uint32_t cmap{};
-#     std::vector<uint32_t> pixels{};
-#   };
-#
-#   struct QueryColorsReply {
-#     uint16_t colors_len{};
-#     std::vector<RGB> colors{};
-#   };
-#
-#   using QueryColorsResponse = Response<QueryColorsReply>;
-#
-#   Future<QueryColorsReply> QueryColors(const QueryColorsRequest& request);
-#
-#  private:
-#   Connection* const connection_;
-# };
-#
-# }  // namespace x11
-#
-# #endif  // GEN_UI_GFX_X_XPROTO_H_
-
-# #include "xproto.h"
-#
-# #include <xcb/xcb.h>
-# #include <xcb/xcbext.h>
-#
-# #include "base/notreached.h"
-# #include "base/check_op.h"
-# #include "ui/gfx/x/xproto_internal.h"
-#
-# namespace x11 {
-#
-# XProto::XProto(Connection* connection) : connection_(connection) {}
-#
-# Future<XProto::QueryColorsReply>
-# XProto::QueryColors(
-#     const XProto::QueryColorsRequest& request) {
-#   WriteBuffer buf;
-#
-#   auto& cmap = request.cmap;
-#   auto& pixels = request.pixels;
-#   size_t pixels_len = pixels.size();
-#
-#   // major_opcode
-#   uint8_t major_opcode = 91;
-#   Write(&major_opcode, &buf);
-#
-#   // pad0
-#   Pad(&buf, 1);
-#
-#   // length
-#   // Caller fills in length for writes.
-#   Pad(&buf, sizeof(uint16_t));
-#
-#   // cmap
-#   Write(&cmap, &buf);
-#
-#   // pixels
-#   DCHECK_EQ(static_cast<size_t>(pixels_len), pixels.size());
-#   for (auto& pixels_elem : pixels) {
-#     Write(&pixels_elem, &buf);
-#   }
-#
-#   return x11::SendRequest<XProto::QueryColorsReply>(connection_, &buf);
-# }
-#
-# template<> COMPONENT_EXPORT(X11)
-# std::unique_ptr<XProto::QueryColorsReply>
-# detail::ReadReply<XProto::QueryColorsReply>(const uint8_t* buffer) {
-#   ReadBuffer buf{buffer, 0UL};
-#   auto reply = std::make_unique<XProto::QueryColorsReply>();
-#
-#   auto& colors_len = (*reply).colors_len;
-#   auto& colors = (*reply).colors;
-#
-#   // response_type
-#   uint8_t response_type;
-#   Read(&response_type, &buf);
-#
-#   // pad0
-#   Pad(&buf, 1);
-#
-#   // sequence
-#   uint16_t sequence;
-#   Read(&sequence, &buf);
-#
-#   // length
-#   uint32_t length;
-#   Read(&length, &buf);
-#
-#   // colors_len
-#   Read(&colors_len, &buf);
-#
-#   // pad1
-#   Pad(&buf, 22);
-#
-#   // colors
-#   colors.resize(colors_len);
-#   for (auto& colors_elem : colors) {
-#     auto& red = colors_elem.red;
-#     auto& green = colors_elem.green;
-#     auto& blue = colors_elem.blue;
-#
-#     // red
-#     Read(&red, &buf);
-#
-#     // green
-#     Read(&green, &buf);
-#
-#     // blue
-#     Read(&blue, &buf);
-#
-#     // pad0
-#     Pad(&buf, 2);
-#
-#   }
-#
-#   Align(&buf, 4);
-#   DCHECK_EQ(buf.offset < 32 ? 0 : buf.offset - 32, 4 * length);
-#
-#   return reply;
-# }
-#
-# }  // namespace x11
 
 from __future__ import print_function
 
@@ -1034,8 +878,8 @@
             self.write()
             reply_has_fds = reply and any(field.isfd for field in reply.fields)
             self.write(
-                'return x11::SendRequest<%s>(connection_, &buf, %s, "%s");' %
-                (reply_name, 'true' if reply_has_fds else 'false', prefix))
+                'return connection_->SendRequest<%s>(&buf, "%s", %s);' %
+                (reply_name, prefix, 'true' if reply_has_fds else 'false'))
         self.write()
 
         if not reply:
@@ -1351,7 +1195,6 @@
         self.write('#include "base/optional.h"')
         self.write('#include "base/files/scoped_file.h"')
         self.write('#include "ui/gfx/x/error.h"')
-        self.write('#include "ui/gfx/x/xproto_types.h"')
         imports = set(self.module.direct_imports)
         if self.module.namespace.is_ext:
             imports.add(('xproto', 'xproto'))
@@ -1362,6 +1205,12 @@
         self.write()
         self.write('class Connection;')
         self.write()
+        self.write('template <typename Reply>')
+        self.write('struct Response;')
+        self.write()
+        self.write('template <typename Reply>')
+        self.write('class Future;')
+        self.write()
 
         self.namespace = ['x11']
         if not self.module.namespace.is_ext:
@@ -1620,6 +1469,7 @@
         self.write('#include <xcb/xcb.h>')
         self.write()
         self.write('#include "ui/gfx/x/connection.h"')
+        self.write('#include "ui/gfx/x/xproto_types.h"')
         for genproto in self.genprotos:
             self.write('#include "ui/gfx/x/%s.h"' % genproto.proto)
         self.write()
@@ -1710,7 +1560,7 @@
         self.write('namespace {')
         self.write()
         self.write('template <typename T>')
-        sig = 'std::unique_ptr<Error> MakeError(FutureBase::RawError error_)'
+        sig = 'std::unique_ptr<Error> MakeError(Connection::RawError error_)'
         with Indent(self, '%s {' % sig, '}'):
             self.write('ReadBuffer buf(error_);')
             self.write('auto error = std::make_unique<T>();')
diff --git a/ui/gfx/x/keyboard_state.cc b/ui/gfx/x/keyboard_state.cc
index 3ca1e80..30c435b 100644
--- a/ui/gfx/x/keyboard_state.cc
+++ b/ui/gfx/x/keyboard_state.cc
@@ -6,6 +6,7 @@
 
 #include "base/i18n/case_conversion.h"
 #include "ui/gfx/x/connection.h"
+#include "ui/gfx/x/future.h"
 #include "ui/gfx/x/keysyms/keysyms.h"
 #include "ui/gfx/x/xkb.h"
 #include "ui/gfx/x/xproto.h"
diff --git a/ui/gfx/x/x11_atom_cache.cc b/ui/gfx/x/x11_atom_cache.cc
index 767bf211..662e977 100644
--- a/ui/gfx/x/x11_atom_cache.cc
+++ b/ui/gfx/x/x11_atom_cache.cc
@@ -12,6 +12,7 @@
 #include "base/metrics/histogram_functions.h"
 #include "base/stl_util.h"
 #include "ui/gfx/x/connection.h"
+#include "ui/gfx/x/future.h"
 
 namespace {
 
diff --git a/ui/gfx/x/xproto_internal.cc b/ui/gfx/x/xproto_internal.cc
index 8a23cfc6..e0ffe7e 100644
--- a/ui/gfx/x/xproto_internal.cc
+++ b/ui/gfx/x/xproto_internal.cc
@@ -8,7 +8,6 @@
 #include <xcb/xcb.h>
 #include <xcb/xcbext.h>
 
-
 namespace x11 {
 
 MallocedRefCountedMemory::MallocedRefCountedMemory(void* data)
@@ -59,75 +58,4 @@
 
 UnretainedRefCountedMemory::~UnretainedRefCountedMemory() = default;
 
-base::Optional<unsigned int> SendRequestImpl(x11::Connection* connection,
-                                             WriteBuffer* buf,
-                                             bool is_void,
-                                             bool reply_has_fds) {
-  xcb_protocol_request_t xpr{
-      .ext = nullptr,
-      .isvoid = is_void,
-  };
-
-  struct RequestHeader {
-    uint8_t major_opcode;
-    uint8_t minor_opcode;
-    uint16_t length;
-  };
-
-  struct ExtendedRequestHeader {
-    RequestHeader header;
-    uint32_t long_length;
-  };
-  static_assert(sizeof(ExtendedRequestHeader) == 8, "");
-
-  auto& first_buffer = buf->GetBuffers()[0];
-  DCHECK_GE(first_buffer->size(), sizeof(RequestHeader));
-  auto* old_header = reinterpret_cast<RequestHeader*>(
-      const_cast<uint8_t*>(first_buffer->data()));
-  ExtendedRequestHeader new_header{*old_header, 0};
-
-  // Requests are always a multiple of 4 bytes on the wire.  Because of this,
-  // the length field represents the size in chunks of 4 bytes.
-  DCHECK_EQ(buf->offset() % 4, 0UL);
-  size_t size32 = buf->offset() / 4;
-
-  // XCB requires 2 iovecs for its own internal usage.
-  std::vector<struct iovec> io{{nullptr, 0}, {nullptr, 0}};
-  if (size32 < connection->setup().maximum_request_length) {
-    // Regular request
-    old_header->length = size32;
-  } else if (size32 < connection->extended_max_request_length()) {
-    // BigRequests extension request
-    DCHECK_EQ(new_header.header.length, 0U);
-    new_header.long_length = size32 + 1;
-
-    io.push_back({&new_header, sizeof(ExtendedRequestHeader)});
-    first_buffer = base::MakeRefCounted<OffsetRefCountedMemory>(
-        first_buffer, sizeof(RequestHeader),
-        first_buffer->size() - sizeof(RequestHeader));
-  } else {
-    LOG(ERROR) << "Cannot send request of length " << buf->offset();
-    return base::nullopt;
-  }
-
-  for (auto& buffer : buf->GetBuffers())
-    io.push_back({const_cast<uint8_t*>(buffer->data()), buffer->size()});
-  xpr.count = io.size() - 2;
-
-  xcb_connection_t* conn = connection->XcbConnection();
-  auto flags = XCB_REQUEST_CHECKED | XCB_REQUEST_RAW;
-  if (reply_has_fds)
-    flags |= XCB_REQUEST_REPLY_FDS;
-
-  for (int fd : buf->fds())
-    xcb_send_fd(conn, fd);
-  unsigned int sequence = xcb_send_request(conn, flags, &io[2], &xpr);
-
-  if (xcb_connection_has_error(conn))
-    return base::nullopt;
-  if (connection->synchronous())
-    connection->Sync();
-  return sequence;
-}
-
 }  // namespace x11
diff --git a/ui/gfx/x/xproto_internal.h b/ui/gfx/x/xproto_internal.h
index 6ba0604..3f9348c 100644
--- a/ui/gfx/x/xproto_internal.h
+++ b/ui/gfx/x/xproto_internal.h
@@ -16,13 +16,13 @@
 #include "base/logging.h"
 #include "base/memory/ref_counted_memory.h"
 #include "base/optional.h"
-#include "ui/gfx/x/connection.h"
+#include "ui/gfx/x/future.h"
+#include "ui/gfx/x/xproto.h"
 #include "ui/gfx/x/xproto_types.h"
 
 namespace x11 {
 
-template <class Reply>
-class Future;
+class Connection;
 
 template <typename T, typename Enable = void>
 struct EnumBase {
@@ -132,22 +132,6 @@
   Pad(buf, (align - (buf->offset % align)) % align);
 }
 
-base::Optional<unsigned int> SendRequestImpl(x11::Connection* connection,
-                                             WriteBuffer* buf,
-                                             bool is_void,
-                                             bool reply_has_fds);
-
-template <typename Reply>
-Future<Reply> SendRequest(x11::Connection* connection,
-                          WriteBuffer* buf,
-                          bool reply_has_fds,
-                          const char* request_name) {
-  auto sequence = SendRequestImpl(connection, buf, std::is_void<Reply>::value,
-                                  reply_has_fds);
-  return {sequence ? connection : nullptr, sequence,
-          sequence ? request_name : nullptr};
-}
-
 // Helper function for xcbproto popcount.  Given an integral type, returns the
 // number of 1 bits present.
 template <typename T>
diff --git a/ui/gfx/x/xproto_types.cc b/ui/gfx/x/xproto_types.cc
index af50984..cbc3506 100644
--- a/ui/gfx/x/xproto_types.cc
+++ b/ui/gfx/x/xproto_types.cc
@@ -7,7 +7,6 @@
 #include <xcb/xcbext.h>
 
 #include "base/memory/scoped_refptr.h"
-#include "base/trace_event/trace_event.h"
 #include "ui/gfx/x/connection.h"
 #include "ui/gfx/x/xproto_internal.h"
 
@@ -79,95 +78,4 @@
   buffers_.push_back(base::RefCountedBytes::TakeVector(&current_buffer_));
 }
 
-FutureBase::FutureBase(Connection* connection,
-                       base::Optional<unsigned int> sequence,
-                       const char* request_name)
-    : connection_(connection),
-      sequence_(sequence),
-      request_name_(request_name) {}
-
-// If a user-defined response-handler is not installed before this object goes
-// out of scope, a default response handler will be installed.  The default
-// handler throws away the reply and prints the error if there is one.
-FutureBase::~FutureBase() {
-  if (!sequence_)
-    return;
-
-  OnResponseImpl(base::BindOnce(
-      [](Connection* connection, const char* request_name,
-         Connection::ErrorHandler error_handler, RawReply raw_reply,
-         RawError raw_error) {
-        if (!raw_error)
-          return;
-
-        auto error = connection->ParseError(raw_error);
-        error_handler.Run(error.get(), request_name);
-      },
-      connection_, request_name_, connection_->error_handler_));
-}
-
-FutureBase::FutureBase(FutureBase&& future)
-    : connection_(future.connection_),
-      sequence_(future.sequence_),
-      request_name_(future.request_name_) {
-  future.Reset();
-}
-
-FutureBase& FutureBase::operator=(FutureBase&& future) {
-  connection_ = future.connection_;
-  sequence_ = future.sequence_;
-  request_name_ = future.request_name_;
-  future.Reset();
-  return *this;
-}
-
-void FutureBase::SyncImpl(RawError* raw_error, RawReply* raw_reply) {
-  if (!sequence_)
-    return;
-  xcb_generic_error_t* error = nullptr;
-  void* reply = nullptr;
-  if (!xcb_poll_for_reply(connection_->XcbConnection(), *sequence_, &reply,
-                          &error)) {
-    TRACE_EVENT1("ui", "xcb_wait_for_reply", "request", request_name_);
-    reply =
-        xcb_wait_for_reply(connection_->XcbConnection(), *sequence_, &error);
-  }
-  if (reply)
-    *raw_reply = base::MakeRefCounted<MallocedRefCountedMemory>(reply);
-  if (error)
-    *raw_error = base::MakeRefCounted<MallocedRefCountedMemory>(error);
-  sequence_ = base::nullopt;
-}
-
-void FutureBase::SyncImpl(RawError* raw_error) {
-  if (!sequence_)
-    return;
-  if (xcb_generic_error_t* error =
-          xcb_request_check(connection_->XcbConnection(), {*sequence_})) {
-    *raw_error = base::MakeRefCounted<MallocedRefCountedMemory>(error);
-  }
-  sequence_ = base::nullopt;
-}
-
-void FutureBase::OnResponseImpl(ResponseCallback callback) {
-  if (!sequence_)
-    return;
-  connection_->AddRequest(*sequence_, std::move(callback));
-  sequence_ = base::nullopt;
-}
-
-// static
-std::unique_ptr<Error> FutureBase::ParseErrorImpl(x11::Connection* connection,
-                                                  RawError raw_error) {
-  if (!raw_error)
-    return nullptr;
-  return connection->ParseError(raw_error);
-}
-
-void FutureBase::Reset() {
-  connection_ = nullptr;
-  sequence_ = base::nullopt;
-  request_name_ = nullptr;
-}
-
 }  // namespace x11
diff --git a/ui/gfx/x/xproto_types.h b/ui/gfx/x/xproto_types.h
index e38c83f..754442df 100644
--- a/ui/gfx/x/xproto_types.h
+++ b/ui/gfx/x/xproto_types.h
@@ -16,11 +16,10 @@
 #include "base/memory/ref_counted_memory.h"
 #include "base/memory/scoped_refptr.h"
 #include "base/optional.h"
-#include "ui/gfx/x/error.h"
 
 namespace x11 {
 
-class Connection;
+class Error;
 
 constexpr uint8_t kSendEventMask = 0x80;
 
@@ -135,131 +134,6 @@
   explicit Response(std::unique_ptr<Error> error) : error(std::move(error)) {}
 };
 
-class COMPONENT_EXPORT(X11) FutureBase {
- public:
-  using RawReply = scoped_refptr<base::RefCountedMemory>;
-  using RawError = scoped_refptr<base::RefCountedMemory>;
-  using ResponseCallback =
-      base::OnceCallback<void(RawReply reply, RawError error)>;
-
-  FutureBase(const FutureBase&) = delete;
-  FutureBase& operator=(const FutureBase&) = delete;
-
- protected:
-  FutureBase(Connection* connection,
-             base::Optional<unsigned int> sequence,
-             const char* request_name);
-  ~FutureBase();
-
-  FutureBase(FutureBase&& future);
-  FutureBase& operator=(FutureBase&& future);
-
-  void SyncImpl(RawError* raw_error, RawReply* raw_reply);
-  void SyncImpl(RawError* raw_error);
-
-  void OnResponseImpl(ResponseCallback callback);
-
-  x11::Connection* connection() { return connection_; }
-
-  static std::unique_ptr<Error> ParseErrorImpl(x11::Connection* connection,
-                                               RawError raw_error);
-
- private:
-  void Reset();
-
-  Connection* connection_ = nullptr;
-  base::Optional<unsigned int> sequence_;
-  const char* request_name_ = nullptr;
-};
-
-// An x11::Future wraps an asynchronous response from the X11 server.  The
-// response may be waited-for with Sync(), or asynchronously handled by
-// installing a response handler using OnResponse().
-template <typename Reply>
-class Future : public FutureBase {
- public:
-  using Callback = base::OnceCallback<void(Response<Reply> response)>;
-
-  Future() : FutureBase(nullptr, base::nullopt, nullptr) {}
-
-  // Blocks until we receive the response from the server. Returns the response.
-  Response<Reply> Sync() {
-    RawError raw_error;
-    RawReply raw_reply;
-    SyncImpl(&raw_error, &raw_reply);
-
-    std::unique_ptr<Reply> reply;
-    if (raw_reply) {
-      auto buf = ReadBuffer(raw_reply);
-      reply = detail::ReadReply<Reply>(&buf);
-    }
-
-    std::unique_ptr<Error> error = ParseErrorImpl(connection(), raw_error);
-
-    return {std::move(reply), std::move(error)};
-  }
-
-  // Installs |callback| to be run when the response is received.
-  void OnResponse(Callback callback) {
-    // This intermediate callback handles the conversion from |raw_reply| to a
-    // real Reply object before feeding the result to |callback|.  This means
-    // |callback| must be bound as the first argument of the intermediate
-    // function.
-    auto wrapper = [](x11::Connection* connection, Callback callback,
-                      RawReply raw_reply, RawError raw_error) {
-      std::unique_ptr<Reply> reply;
-      if (raw_reply) {
-        ReadBuffer buf(raw_reply);
-        reply = detail::ReadReply<Reply>(&buf);
-      }
-      std::unique_ptr<Error> error = ParseErrorImpl(connection, raw_error);
-      std::move(callback).Run({std::move(reply), std::move(error)});
-    };
-    OnResponseImpl(base::BindOnce(wrapper, connection(), std::move(callback)));
-  }
-
-  void IgnoreError() {
-    OnResponse(base::BindOnce([](Response<Reply>) {}));
-  }
-
- private:
-  template <typename R>
-  friend Future<R> SendRequest(Connection*, WriteBuffer*, bool, const char*);
-
-  Future(Connection* connection,
-         base::Optional<unsigned int> sequence,
-         const char* request_name)
-      : FutureBase(connection, sequence, request_name) {}
-};
-
-// Sync() specialization for requests that don't generate replies.  The returned
-// response will only contain an error if there was one.
-template <>
-inline Response<void> Future<void>::Sync() {
-  RawError raw_error;
-  SyncImpl(&raw_error);
-  return Response<void>{ParseErrorImpl(connection(), raw_error)};
-}
-
-// OnResponse() specialization for requests that don't generate replies.  The
-// response argument to |callback| will only contain an error if there was one.
-template <>
-inline void Future<void>::OnResponse(Callback callback) {
-  // See Future<Reply>::OnResponse() for an explanation of why
-  // this wrapper is necessary.
-  auto wrapper = [](x11::Connection* connection, Callback callback,
-                    RawReply reply, RawError error) {
-    DCHECK(!reply);
-    std::move(callback).Run(Response<void>{ParseErrorImpl(connection, error)});
-  };
-  OnResponseImpl(base::BindOnce(wrapper, connection(), std::move(callback)));
-}
-
-template <>
-inline void Future<void>::IgnoreError() {
-  OnResponse(base::BindOnce([](Response<void>) {}));
-}
-
 }  // namespace x11
 
 #endif  //  UI_GFX_X_XPROTO_TYPES_H_
diff --git a/ui/gfx/x/xproto_util.h b/ui/gfx/x/xproto_util.h
index 1b3b0057..e72d75d 100644
--- a/ui/gfx/x/xproto_util.h
+++ b/ui/gfx/x/xproto_util.h
@@ -9,6 +9,7 @@
 
 #include "base/component_export.h"
 #include "ui/gfx/x/connection.h"
+#include "ui/gfx/x/future.h"
 #include "ui/gfx/x/xproto.h"
 #include "ui/gfx/x/xproto_types.h"
 
diff --git a/ui/gl/gl_context_glx_unittest.cc b/ui/gl/gl_context_glx_unittest.cc
index c3bb1bb..85bcb644 100644
--- a/ui/gl/gl_context_glx_unittest.cc
+++ b/ui/gl/gl_context_glx_unittest.cc
@@ -7,6 +7,7 @@
 #include "base/memory/scoped_refptr.h"
 #include "testing/gtest/include/gtest/gtest.h"
 #include "ui/gfx/x/connection.h"
+#include "ui/gfx/x/future.h"
 #include "ui/gfx/x/xproto.h"
 #include "ui/gl/gl_bindings.h"
 #include "ui/gl/gl_surface_glx_x11.h"
diff --git a/ui/gl/gl_glx_api_implementation.cc b/ui/gl/gl_glx_api_implementation.cc
index 4881a3e..171e466 100644
--- a/ui/gl/gl_glx_api_implementation.cc
+++ b/ui/gl/gl_glx_api_implementation.cc
@@ -8,6 +8,7 @@
 #include "base/strings/string_split.h"
 #include "base/strings/string_util.h"
 #include "ui/gfx/x/connection.h"
+#include "ui/gfx/x/future.h"
 #include "ui/gl/gl_context.h"
 #include "ui/gl/gl_implementation.h"
 #include "ui/gl/gl_implementation_wrapper.h"
diff --git a/ui/gl/gl_image_glx_native_pixmap.cc b/ui/gl/gl_image_glx_native_pixmap.cc
index 1250ab0..2909edf 100644
--- a/ui/gl/gl_image_glx_native_pixmap.cc
+++ b/ui/gl/gl_image_glx_native_pixmap.cc
@@ -9,6 +9,7 @@
 #include "ui/gfx/linux/native_pixmap_dmabuf.h"
 #include "ui/gfx/x/connection.h"
 #include "ui/gfx/x/dri3.h"
+#include "ui/gfx/x/future.h"
 #include "ui/gfx/x/xproto_types.h"
 #include "ui/gl/buffer_format_utils.h"
 #include "ui/gl/gl_bindings.h"
diff --git a/ui/gl/gl_surface_glx_x11.cc b/ui/gl/gl_surface_glx_x11.cc
index 858987a..5f566926 100644
--- a/ui/gl/gl_surface_glx_x11.cc
+++ b/ui/gl/gl_surface_glx_x11.cc
@@ -4,6 +4,7 @@
 
 #include "ui/gl/gl_surface_glx_x11.h"
 
+#include "ui/gfx/x/future.h"
 
 using ui::X11EventSource;
 
diff --git a/ui/gl/gl_visual_picker_glx.cc b/ui/gl/gl_visual_picker_glx.cc
index f7ce65ae..abe58bd 100644
--- a/ui/gl/gl_visual_picker_glx.cc
+++ b/ui/gl/gl_visual_picker_glx.cc
@@ -12,6 +12,7 @@
 
 #include "base/memory/singleton.h"
 #include "base/stl_util.h"
+#include "ui/gfx/x/future.h"
 #include "ui/gl/gl_bindings.h"
 #include "ui/gl/gl_context.h"
 #include "ui/gl/gl_surface_glx.h"
diff --git a/ui/gl/glx_util.cc b/ui/gl/glx_util.cc
index b85a1418..a82815aa 100644
--- a/ui/gl/glx_util.cc
+++ b/ui/gl/glx_util.cc
@@ -4,10 +4,9 @@
 
 #include "ui/gl/glx_util.h"
 
-#include <dlfcn.h>
-
 #include "base/compiler_specific.h"
 #include "base/logging.h"
+#include "ui/gfx/x/future.h"
 #include "ui/gfx/x/glx.h"
 #include "ui/gl/gl_bindings.h"
 
diff --git a/ui/gl/test/gl_surface_test_support.cc b/ui/gl/test/gl_surface_test_support.cc
index 5c6dbe0..813b743e1 100644
--- a/ui/gl/test/gl_surface_test_support.cc
+++ b/ui/gl/test/gl_surface_test_support.cc
@@ -66,30 +66,9 @@
   DCHECK(!allowed_impls.empty());
 
   GLImplementation impl = allowed_impls[0];
-  if (use_software_gl) {
+  if (use_software_gl)
     impl = gl::GetSoftwareGLImplementation();
 
-#if !defined(OS_ANDROID) && !defined(OS_FUCHSIA)
-#if defined(USE_OZONE)
-    if (!features::IsUsingOzonePlatform())
-#endif
-    {
-      // If ANGLE is available use it with SwiftShader Vulkan instead of using
-      // SwiftShader GL
-      for (auto i : allowed_impls) {
-        if (i == kGLImplementationEGLANGLE) {
-          impl = kGLImplementationEGLANGLE;
-          base::CommandLine::ForCurrentProcess()->AppendSwitchASCII(
-              switches::kUseANGLE, kANGLEImplementationSwiftShaderName);
-          base::CommandLine::ForCurrentProcess()->AppendSwitchASCII(
-              switches::kUseCmdDecoder, kCmdDecoderValidatingName);
-          break;
-        }
-      }
-    }
-#endif
-  }
-
   DCHECK(!base::CommandLine::ForCurrentProcess()->HasSwitch(switches::kUseGL))
       << "kUseGL has not effect in tests";
 
diff --git a/ui/message_center/views/message_popup_collection_unittest.cc b/ui/message_center/views/message_popup_collection_unittest.cc
index 91ccc31..98cd33d 100644
--- a/ui/message_center/views/message_popup_collection_unittest.cc
+++ b/ui/message_center/views/message_popup_collection_unittest.cc
@@ -437,14 +437,7 @@
   EXPECT_TRUE(GetPopup(id)->updated());
 }
 
-// Failiing on MacOS 10.10. https://crbug.com/1047503
-#if defined(OS_APPLE)
-#define MAYBE_UpdateContentsCausesPopupClose \
-  DISABLED_UpdateContentsCausesPopupClose
-#else
-#define MAYBE_UpdateContentsCausesPopupClose UpdateContentsCausesPopupClose
-#endif
-TEST_F(MessagePopupCollectionTest, MAYBE_UpdateContentsCausesPopupClose) {
+TEST_F(MessagePopupCollectionTest, UpdateContentsCausesPopupClose) {
   std::string id = AddNotification();
   AnimateToEnd();
   RunPendingMessages();
diff --git a/ui/ozone/platform/drm/gpu/drm_overlay_validator.cc b/ui/ozone/platform/drm/gpu/drm_overlay_validator.cc
index 4c49654..5235b85 100644
--- a/ui/ozone/platform/drm/gpu/drm_overlay_validator.cc
+++ b/ui/ozone/platform/drm/gpu/drm_overlay_validator.cc
@@ -46,7 +46,7 @@
   // flip commits.
   std::vector<uint64_t> modifiers =
       is_0th_plane
-          ? drm_window->GetController()->GetFormatModifiers(fourcc_format)
+          ? drm_window->GetController()->GetSupportedModifiers(fourcc_format)
           : std::vector<uint64_t>();
 
   // Check if we can re-use existing buffers.
@@ -86,7 +86,7 @@
 
 DrmOverlayValidator::DrmOverlayValidator(DrmWindow* window) : window_(window) {}
 
-DrmOverlayValidator::~DrmOverlayValidator() {}
+DrmOverlayValidator::~DrmOverlayValidator() = default;
 
 OverlayStatusList DrmOverlayValidator::TestPageFlip(
     const OverlaySurfaceCandidateList& params,
diff --git a/ui/ozone/platform/drm/gpu/drm_thread.cc b/ui/ozone/platform/drm/gpu/drm_thread.cc
index d77131c..9483d815 100644
--- a/ui/ozone/platform/drm/gpu/drm_thread.cc
+++ b/ui/ozone/platform/drm/gpu/drm_thread.cc
@@ -142,7 +142,7 @@
   std::vector<uint64_t> modifiers;
   if (window && window->GetController() && !(flags & GBM_BO_USE_LINEAR) &&
       !(client_flags & GbmPixmap::kFlagNoModifiers)) {
-    modifiers = window->GetController()->GetFormatModifiers(fourcc_format);
+    modifiers = window->GetController()->GetSupportedModifiers(fourcc_format);
   }
 
   CreateBufferWithGbmFlags(drm, fourcc_format, size, framebuffer_size, flags,
diff --git a/ui/ozone/platform/drm/gpu/drm_window.cc b/ui/ozone/platform/drm/gpu/drm_window.cc
index ec3aa6b..ee15678 100644
--- a/ui/ozone/platform/drm/gpu/drm_window.cc
+++ b/ui/ozone/platform/drm/gpu/drm_window.cc
@@ -31,11 +31,9 @@
                      ScreenManager* screen_manager)
     : widget_(widget),
       device_manager_(device_manager),
-      screen_manager_(screen_manager) {
-}
+      screen_manager_(screen_manager) {}
 
-DrmWindow::~DrmWindow() {
-}
+DrmWindow::~DrmWindow() = default;
 
 void DrmWindow::Initialize() {
   TRACE_EVENT1("drm", "DrmWindow::Initialize", "widget", widget_);
@@ -97,7 +95,10 @@
   if (controller_) {
     const DrmDevice* drm = controller_->GetDrmDevice().get();
     for (const auto& plane : planes) {
-      if (plane.buffer && plane.buffer->drm_device() != drm) {
+      if (plane.buffer &&
+          (plane.buffer->drm_device() != drm ||
+           controller_->IsModifierBad(plane.buffer->framebuffer_pixel_format(),
+                                      plane.buffer->format_modifier()))) {
         // Although |force_buffer_reallocation_| is set to true during window
         // bounds update, this may still be needed because of in-flight buffers.
         force_buffer_reallocation_ = true;
diff --git a/ui/ozone/platform/drm/gpu/hardware_display_controller.cc b/ui/ozone/platform/drm/gpu/hardware_display_controller.cc
index a350a195..74c87f5 100644
--- a/ui/ozone/platform/drm/gpu/hardware_display_controller.cc
+++ b/ui/ozone/platform/drm/gpu/hardware_display_controller.cc
@@ -19,6 +19,7 @@
 #include "ui/gfx/geometry/point.h"
 #include "ui/gfx/geometry/size.h"
 #include "ui/gfx/gpu_fence.h"
+#include "ui/gfx/linux/drm_util_linux.h"
 #include "ui/gfx/native_pixmap.h"
 #include "ui/gfx/presentation_feedback.h"
 #include "ui/gfx/swap_result.h"
@@ -200,17 +201,16 @@
 }
 
 std::vector<uint64_t> HardwareDisplayController::GetFormatModifiers(
-    uint32_t format) const {
-  std::vector<uint64_t> modifiers;
-
+    uint32_t fourcc_format) const {
   if (crtc_controllers_.empty())
-    return modifiers;
+    return std::vector<uint64_t>();
 
-  modifiers = crtc_controllers_[0]->GetFormatModifiers(format);
+  std::vector<uint64_t> modifiers =
+      crtc_controllers_[0]->GetFormatModifiers(fourcc_format);
 
   for (size_t i = 1; i < crtc_controllers_.size(); ++i) {
     std::vector<uint64_t> other =
-        crtc_controllers_[i]->GetFormatModifiers(format);
+        crtc_controllers_[i]->GetFormatModifiers(fourcc_format);
     std::vector<uint64_t> intersection;
 
     std::set_intersection(modifiers.begin(), modifiers.end(), other.begin(),
@@ -221,11 +221,27 @@
   return modifiers;
 }
 
-std::vector<uint64_t>
-HardwareDisplayController::GetFormatModifiersForModesetting(
+std::vector<uint64_t> HardwareDisplayController::GetSupportedModifiers(
     uint32_t fourcc_format) const {
-  const auto& modifiers = GetFormatModifiers(fourcc_format);
+  if (preferred_format_modifier_.empty())
+    return std::vector<uint64_t>();
+
+  auto it = preferred_format_modifier_.find(fourcc_format);
+  if (it != preferred_format_modifier_.end()) {
+    return std::vector<uint64_t>{it->second};
+  }
+
+  return GetFormatModifiers(fourcc_format);
+}
+
+std::vector<uint64_t>
+HardwareDisplayController::GetFormatModifiersForTestModeset(
+    uint32_t fourcc_format) {
+  // If we're about to test, clear the current preferred modifier.
+  preferred_format_modifier_.clear();
+
   std::vector<uint64_t> filtered_modifiers;
+  const auto& modifiers = GetFormatModifiers(fourcc_format);
   for (auto modifier : modifiers) {
     // AFBC for modeset buffers doesn't work correctly, as we can't fill it with
     // a valid AFBC buffer. For now, don't use AFBC for modeset buffers.
@@ -238,6 +254,31 @@
   return filtered_modifiers;
 }
 
+void HardwareDisplayController::UpdatePreferredModiferForFormat(
+    gfx::BufferFormat buffer_format,
+    uint64_t modifier) {
+  uint32_t fourcc_format = GetFourCCFormatFromBufferFormat(buffer_format);
+  base::InsertOrAssign(preferred_format_modifier_, fourcc_format, modifier);
+
+  uint32_t opaque_fourcc_format =
+      GetFourCCFormatForOpaqueFramebuffer(buffer_format);
+  base::InsertOrAssign(preferred_format_modifier_, opaque_fourcc_format,
+                       modifier);
+}
+
+bool HardwareDisplayController::IsModifierBad(uint32_t pixel_format,
+                                              uint64_t modifier) const {
+  if (preferred_format_modifier_.empty())
+    return false;
+
+  // If we don't have a format saved, we can't tell if it's bad.
+  auto it = preferred_format_modifier_.find(pixel_format);
+  if (it == preferred_format_modifier_.end())
+    return false;
+
+  return it->second != modifier;
+}
+
 void HardwareDisplayController::MoveCursor(const gfx::Point& location) {
   cursor_location_ = location;
   UpdateCursorLocation();
diff --git a/ui/ozone/platform/drm/gpu/hardware_display_controller.h b/ui/ozone/platform/drm/gpu/hardware_display_controller.h
index 17a9171..b9c85f7c 100644
--- a/ui/ozone/platform/drm/gpu/hardware_display_controller.h
+++ b/ui/ozone/platform/drm/gpu/hardware_display_controller.h
@@ -14,9 +14,11 @@
 #include <vector>
 
 #include "base/callback.h"
+#include "base/containers/flat_map.h"
 #include "base/macros.h"
 #include "base/time/time.h"
 #include "third_party/skia/include/core/SkBitmap.h"
+#include "ui/gfx/buffer_types.h"
 #include "ui/gfx/swap_result.h"
 #include "ui/ozone/platform/drm/gpu/drm_overlay_plane.h"
 #include "ui/ozone/platform/drm/gpu/hardware_display_plane_manager.h"
@@ -128,17 +130,21 @@
   // doesn't change any state.
   bool TestPageFlip(const DrmOverlayPlaneList& plane_list);
 
-  // Return the supported modifiers for |fourcc_format| for this
-  // controller.
-  std::vector<uint64_t> GetFormatModifiers(uint32_t fourcc_format) const;
+  // Return the supported modifiers for |fourcc_format| for this controller.
+  std::vector<uint64_t> GetSupportedModifiers(uint32_t fourcc_format) const;
 
   // Return the supported modifiers for |fourcc_format| for this
   // controller to be used for modeset buffers. Currently, this only exists
   // because we can't provide valid AFBC buffers during modeset.
   // See https://crbug.com/852675
   // TODO: Remove this.
-  std::vector<uint64_t> GetFormatModifiersForModesetting(
-      uint32_t fourcc_format) const;
+  std::vector<uint64_t> GetFormatModifiersForTestModeset(
+      uint32_t fourcc_format);
+
+  void UpdatePreferredModiferForFormat(gfx::BufferFormat buffer_format,
+                                       uint64_t modifier);
+
+  bool IsModifierBad(uint32_t pixel_format, uint64_t modifier) const;
 
   // Moves the hardware cursor to |location|.
   void MoveCursor(const gfx::Point& location);
@@ -189,6 +195,8 @@
   void ResetCursor();
   void DisableCursor();
 
+  std::vector<uint64_t> GetFormatModifiers(uint32_t fourcc_format) const;
+
   HardwareDisplayPlaneList owned_hardware_planes_;
 
   // Stores the CRTC configuration. This is used to identify monitors and
@@ -207,6 +215,11 @@
   int cursor_frontbuffer_ = 0;
   DrmDumbBuffer* current_cursor_ = nullptr;
 
+  // Maps each fourcc_format to its preferred modifier which was generated
+  // through modeset-test and updated in UpdatePreferredModifierForFormat().
+  base::flat_map<uint32_t /*fourcc_format*/, uint64_t /*preferred_modifier*/>
+      preferred_format_modifier_;
+
   base::WeakPtrFactory<HardwareDisplayController> weak_ptr_factory_{this};
 
   DISALLOW_COPY_AND_ASSIGN(HardwareDisplayController);
diff --git a/ui/ozone/platform/drm/gpu/screen_manager.cc b/ui/ozone/platform/drm/gpu/screen_manager.cc
index 18b4e87..f798e7d 100644
--- a/ui/ozone/platform/drm/gpu/screen_manager.cc
+++ b/ui/ozone/platform/drm/gpu/screen_manager.cc
@@ -37,7 +37,7 @@
 bool FillModesetBuffer(const scoped_refptr<DrmDevice>& drm,
                        HardwareDisplayController* controller,
                        SkSurface* surface,
-                       uint32_t fourcc_format) {
+                       const std::vector<uint64_t>& modifiers) {
   DCHECK(!controller->crtc_controllers().empty());
   CrtcController* first_crtc = controller->crtc_controllers()[0].get();
   ScopedDrmCrtcPtr saved_crtc(drm->GetCrtc(first_crtc->crtc()));
@@ -46,7 +46,6 @@
     return false;
   }
 
-  const auto& modifiers = controller->GetFormatModifiers(fourcc_format);
   for (const uint64_t modifier : modifiers) {
     // A value of 0 means DRM_FORMAT_MOD_NONE. If the CRTC has any other
     // modifier (tiling, compression, etc.) we can't read the fb and assume it's
@@ -94,13 +93,6 @@
   return nullptr;
 }
 
-std::vector<uint64_t> GetModifiersForPrimaryFormat(
-    HardwareDisplayController* controller) {
-  gfx::BufferFormat format = display::DisplaySnapshot::PrimaryFormat();
-  uint32_t fourcc_format = ui::GetFourCCFormatForOpaqueFramebuffer(format);
-  return controller->GetFormatModifiersForModesetting(fourcc_format);
-}
-
 bool AreAllStatusesTrue(base::flat_map<int64_t, bool>& display_statuses) {
   auto it = find_if(display_statuses.begin(), display_statuses.end(),
                     [](const auto status) { return status.second == false; });
@@ -259,21 +251,26 @@
 
 base::flat_map<int64_t, bool> ScreenManager::TestAndModeset(
     const ControllerConfigsList& controllers_params) {
-  if (!TestModeset(controllers_params)) {
-    base::flat_map<int64_t, bool> statuses;
-    for (const auto& params : controllers_params)
-      statuses.insert(std::make_pair(params.display_id, false));
-    return statuses;
+  TRACE_EVENT0("drm", "ScreenManager::TestAndModeset");
+
+  if (TestAndSetPreferredModifiers(controllers_params) ||
+      TestAndSetLinearModifier(controllers_params)) {
+    return Modeset(controllers_params);
   }
 
-  return Modeset(controllers_params);
+  // If we fail to test even with the base modifier, report a failure.
+  base::flat_map<int64_t, bool> statuses;
+  for (const auto& params : controllers_params)
+    statuses.insert(std::make_pair(params.display_id, false));
+  return statuses;
 }
 
-bool ScreenManager::TestModeset(
+bool ScreenManager::TestAndSetPreferredModifiers(
     const ControllerConfigsList& controllers_params) {
-  TRACE_EVENT1("drm", "ScreenManager::TestModeset", "display_count",
-               controllers_params.size());
+  TRACE_EVENT1("drm", "ScreenManager::TestAndSetPreferredModifiers",
+               "display_count", controllers_params.size());
 
+  CrtcPreferredModifierMap crtcs_preferred_modifier;
   CommitRequest commit_request;
   auto drm = controllers_params[0].drm;
 
@@ -283,9 +280,69 @@
     HardwareDisplayController* controller = it->get();
 
     if (params.mode) {
+      uint32_t fourcc_format = ui::GetFourCCFormatForOpaqueFramebuffer(
+          display::DisplaySnapshot::PrimaryFormat());
+      std::vector<uint64_t> modifiers =
+          controller->GetFormatModifiersForTestModeset(fourcc_format);
+
       DrmOverlayPlane primary_plane = GetModesetBuffer(
           controller, gfx::Rect(params.origin, ModeSize(*params.mode)),
-          GetModifiersForPrimaryFormat(controller));
+          modifiers);
+      if (!primary_plane.buffer) {
+        return false;
+      }
+
+      crtcs_preferred_modifier[params.crtc] = std::make_pair(
+          modifiers.empty(), primary_plane.buffer->format_modifier());
+
+      GetModesetControllerProps(&commit_request, controller, params.origin,
+                                *params.mode, primary_plane);
+    } else {
+      controller->GetDisableProps(&commit_request);
+    }
+  }
+
+  if (!drm->plane_manager()->Commit(
+          std::move(commit_request),
+          DRM_MODE_ATOMIC_TEST_ONLY | DRM_MODE_ATOMIC_ALLOW_MODESET)) {
+    return false;
+  }
+
+  SetPreferredModifiers(controllers_params, crtcs_preferred_modifier);
+  return true;
+}
+
+bool ScreenManager::TestAndSetLinearModifier(
+    const ControllerConfigsList& controllers_params) {
+  TRACE_EVENT1("drm", "ScreenManager::TestAndSetLinearModifier",
+               "display_count", controllers_params.size());
+
+  CrtcPreferredModifierMap crtcs_preferred_modifier;
+  CommitRequest commit_request;
+  auto drm = controllers_params[0].drm;
+
+  for (const auto& params : controllers_params) {
+    auto it = FindDisplayController(params.drm, params.crtc);
+    DCHECK(controllers_.end() != it);
+    HardwareDisplayController* controller = it->get();
+
+    uint32_t fourcc_format = ui::GetFourCCFormatForOpaqueFramebuffer(
+        display::DisplaySnapshot::PrimaryFormat());
+    std::vector<uint64_t> modifiers =
+        controller->GetFormatModifiersForTestModeset(fourcc_format);
+    // Test with an empty list if no preferred modifiers are advertised.
+    // Platforms might not support gbm_bo_create_with_modifiers(). If the
+    // platform doesn't expose modifiers, do not attempt to explicitly request
+    // LINEAR otherwise we might CHECK() when trying to allocate buffers.
+    if (!modifiers.empty())
+      modifiers = std::vector<uint64_t>{DRM_FORMAT_MOD_LINEAR};
+    crtcs_preferred_modifier[params.crtc] =
+        std::make_pair(modifiers.empty(), DRM_FORMAT_MOD_LINEAR);
+
+    if (params.mode) {
+      DrmOverlayPlane primary_plane = GetModesetBuffer(
+          controller, gfx::Rect(params.origin, ModeSize(*params.mode)),
+          modifiers);
       if (!primary_plane.buffer)
         return false;
 
@@ -296,9 +353,36 @@
     }
   }
 
-  return drm->plane_manager()->Commit(
-      std::move(commit_request),
-      DRM_MODE_ATOMIC_TEST_ONLY | DRM_MODE_ATOMIC_ALLOW_MODESET);
+  if (!drm->plane_manager()->Commit(
+          std::move(commit_request),
+          DRM_MODE_ATOMIC_TEST_ONLY | DRM_MODE_ATOMIC_ALLOW_MODESET)) {
+    return false;
+  }
+
+  SetPreferredModifiers(controllers_params, crtcs_preferred_modifier);
+  return true;
+}
+
+void ScreenManager::SetPreferredModifiers(
+    const ControllerConfigsList& controllers_params,
+    const CrtcPreferredModifierMap& crtcs_preferred_modifier) {
+  for (const auto& params : controllers_params) {
+    if (params.mode) {
+      bool was_modifiers_list_empty =
+          crtcs_preferred_modifier.at(params.crtc).first;
+      // No preferred modifiers should be saved as some platforms might not have
+      // bo_create_with_modifiers implemented, this will send the preferred
+      // modifiers list as an empty list.
+      if (!was_modifiers_list_empty) {
+        uint64_t picked_modifier =
+            crtcs_preferred_modifier.at(params.crtc).second;
+        auto it = FindDisplayController(params.drm, params.crtc);
+        DCHECK(*it);
+        it->get()->UpdatePreferredModiferForFormat(
+            display::DisplaySnapshot::PrimaryFormat(), picked_modifier);
+      }
+    }
+  }
 }
 
 base::flat_map<int64_t, bool> ScreenManager::Modeset(
@@ -316,9 +400,14 @@
       DCHECK(controllers_.end() != it);
       HardwareDisplayController* controller = it->get();
 
+      uint32_t fourcc_format = GetFourCCFormatForOpaqueFramebuffer(
+          display::DisplaySnapshot::PrimaryFormat());
+      std::vector<uint64_t> modifiers =
+          controller->GetSupportedModifiers(fourcc_format);
+
       DrmOverlayPlane primary_plane = GetModesetBuffer(
           controller, gfx::Rect(params.origin, ModeSize(*params.mode)),
-          GetModifiersForPrimaryFormat(controller));
+          modifiers);
       if (primary_plane.buffer) {
         SetDisplayControllerForEnableAndGetProps(
             &commit_request, params.drm, params.crtc, params.connector,
@@ -552,10 +641,14 @@
     // otherwise the controller may be waiting for a page flip while the window
     // tries to schedule another buffer.
     if (should_enable) {
+      uint32_t fourcc_format = ui::GetFourCCFormatForOpaqueFramebuffer(
+          display::DisplaySnapshot::PrimaryFormat());
+      std::vector<uint64_t> modifiers =
+          controller->GetSupportedModifiers(fourcc_format);
       DrmOverlayPlane primary_plane = GetModesetBuffer(
           controller,
           gfx::Rect(controller->origin(), controller->GetModeSize()),
-          GetModifiersForPrimaryFormat(controller));
+          modifiers);
       DCHECK(primary_plane.buffer);
 
       CommitRequest commit_request;
@@ -606,8 +699,7 @@
   sk_sp<SkSurface> surface = buffer->GetSurface();
   if (!surface) {
     VLOG(2) << "Can't get a SkSurface from the modeset gbm buffer.";
-  } else if (!FillModesetBuffer(drm, controller, surface.get(),
-                                buffer->GetFormat())) {
+  } else if (!FillModesetBuffer(drm, controller, surface.get(), modifiers)) {
     // If we fail to fill the modeset buffer, clear it black to avoid displaying
     // an uninitialized framebuffer.
     surface->getCanvas()->clear(SK_ColorBLACK);
diff --git a/ui/ozone/platform/drm/gpu/screen_manager.h b/ui/ozone/platform/drm/gpu/screen_manager.h
index d7ac281..d8b2591 100644
--- a/ui/ozone/platform/drm/gpu/screen_manager.h
+++ b/ui/ozone/platform/drm/gpu/screen_manager.h
@@ -98,6 +98,9 @@
       std::vector<std::unique_ptr<HardwareDisplayController>>;
   using WidgetToWindowMap =
       std::unordered_map<gfx::AcceleratedWidget, std::unique_ptr<DrmWindow>>;
+  using CrtcPreferredModifierMap = base::flat_map<
+      uint32_t /*crtc_is*/,
+      std::pair<bool /*modifiers_list.empty()*/, uint64_t /*picked_modifier*/>>;
 
   // Returns an iterator into |controllers_| for the controller identified by
   // (|crtc|, |connector|).
@@ -108,7 +111,15 @@
   base::flat_map<int64_t, bool> TestAndModeset(
       const ControllerConfigsList& controllers_params);
 
-  bool TestModeset(const ControllerConfigsList& controllers_params);
+  bool TestAndSetPreferredModifiers(
+      const ControllerConfigsList& controllers_params);
+  bool TestAndSetLinearModifier(
+      const ControllerConfigsList& controllers_params);
+  // Setting the Preferred modifiers that passed from one of the Modeset Test
+  // functions. The preferred modifiers are used in Modeset.
+  void SetPreferredModifiers(
+      const ControllerConfigsList& controllers_params,
+      const CrtcPreferredModifierMap& crtcs_preferred_modifier);
 
   base::flat_map<int64_t, bool> Modeset(
       const ControllerConfigsList& controllers_params);
diff --git a/ui/ozone/platform/scenic/scenic_surface.cc b/ui/ozone/platform/scenic/scenic_surface.cc
index 5cd59554..816f894 100644
--- a/ui/ozone/platform/scenic/scenic_surface.cc
+++ b/ui/ozone/platform/scenic/scenic_surface.cc
@@ -183,6 +183,8 @@
 
 void ScenicSurface::UpdateViewHolderScene() {
   DCHECK_CALLED_ON_VALID_THREAD(thread_checker_);
+  if (overlays_.empty())
+    return;
 
   // |plane_z_order| for main surface is 0.
   int min_z_order = 0;
diff --git a/ui/strings/translations/ui_strings_af.xtb b/ui/strings/translations/ui_strings_af.xtb
index f8d4725..ac31dd9 100644
--- a/ui/strings/translations/ui_strings_af.xtb
+++ b/ui/strings/translations/ui_strings_af.xtb
@@ -233,6 +233,7 @@
 <translation id="815598010540052116">Rollees na onder</translation>
 <translation id="8179976553408161302">Enter</translation>
 <translation id="8210608804940886430">Bladsy af</translation>
+<translation id="822964464349305906"><ph name="TYPE_1" />, <ph name="TYPE_2" /></translation>
 <translation id="8245914219290430011">Oortjie</translation>
 <translation id="8247998213073982446"><ph name="APP_NAME" />, program</translation>
 <translation id="8259556432390118667">Heksadesimale kleurwaarde</translation>
diff --git a/ui/strings/translations/ui_strings_am.xtb b/ui/strings/translations/ui_strings_am.xtb
index 72d5713..e75d75a 100644
--- a/ui/strings/translations/ui_strings_am.xtb
+++ b/ui/strings/translations/ui_strings_am.xtb
@@ -233,6 +233,7 @@
 <translation id="815598010540052116">ወደ ታች ሸብልል</translation>
 <translation id="8179976553408161302">አስገባ</translation>
 <translation id="8210608804940886430">ወደታች አንቀሳቅስ</translation>
+<translation id="822964464349305906"><ph name="TYPE_1" />፣ <ph name="TYPE_2" /></translation>
 <translation id="8245914219290430011">ትር</translation>
 <translation id="8247998213073982446"><ph name="APP_NAME" />፣ መተግበሪያ</translation>
 <translation id="8259556432390118667">የአስራስድስትዮሽ ቀለም እሴት</translation>
diff --git a/ui/strings/translations/ui_strings_ar.xtb b/ui/strings/translations/ui_strings_ar.xtb
index 93ad082..466c514 100644
--- a/ui/strings/translations/ui_strings_ar.xtb
+++ b/ui/strings/translations/ui_strings_ar.xtb
@@ -233,6 +233,7 @@
 <translation id="815598010540052116">التمرير إلى أسفل</translation>
 <translation id="8179976553408161302">Enter</translation>
 <translation id="8210608804940886430">صفحة  إلى أسفل</translation>
+<translation id="822964464349305906"><ph name="TYPE_1" />، <ph name="TYPE_2" /></translation>
 <translation id="8245914219290430011">علامة تبويب</translation>
 <translation id="8247998213073982446"><ph name="APP_NAME" />، تطبيق</translation>
 <translation id="8259556432390118667">القيمة السداسية للّون</translation>
diff --git a/ui/strings/translations/ui_strings_as.xtb b/ui/strings/translations/ui_strings_as.xtb
index 8898f66..a9842b1 100644
--- a/ui/strings/translations/ui_strings_as.xtb
+++ b/ui/strings/translations/ui_strings_as.xtb
@@ -232,6 +232,7 @@
 <translation id="815598010540052116">তললৈ স্ক্ৰল কৰক</translation>
 <translation id="8179976553408161302">Enter</translation>
 <translation id="8210608804940886430">Page Down</translation>
+<translation id="822964464349305906"><ph name="TYPE_1" />, <ph name="TYPE_2" /></translation>
 <translation id="8245914219290430011">টেব</translation>
 <translation id="8247998213073982446"><ph name="APP_NAME" />, এপ্‌</translation>
 <translation id="8259556432390118667">হেক্স ৰঙৰ মান</translation>
diff --git a/ui/strings/translations/ui_strings_az.xtb b/ui/strings/translations/ui_strings_az.xtb
index 15246a85..082ef15 100644
--- a/ui/strings/translations/ui_strings_az.xtb
+++ b/ui/strings/translations/ui_strings_az.xtb
@@ -233,6 +233,7 @@
 <translation id="815598010540052116">Aşağı Sürüşdürün</translation>
 <translation id="8179976553408161302">Enter</translation>
 <translation id="8210608804940886430">Aşağı Səhifə</translation>
+<translation id="822964464349305906"><ph name="TYPE_1" />, <ph name="TYPE_2" /></translation>
 <translation id="8245914219290430011">Tab</translation>
 <translation id="8247998213073982446"><ph name="APP_NAME" />, Tətbiq</translation>
 <translation id="8259556432390118667">Onaltılıq rəngin dəyəri</translation>
diff --git a/ui/strings/translations/ui_strings_be.xtb b/ui/strings/translations/ui_strings_be.xtb
index 6fbcd6a..f6f7f02 100644
--- a/ui/strings/translations/ui_strings_be.xtb
+++ b/ui/strings/translations/ui_strings_be.xtb
@@ -233,6 +233,7 @@
 <translation id="815598010540052116">Прагартаць уніз</translation>
 <translation id="8179976553408161302">Enter</translation>
 <translation id="8210608804940886430">Page Down</translation>
+<translation id="822964464349305906"><ph name="TYPE_1" />, <ph name="TYPE_2" /></translation>
 <translation id="8245914219290430011">Tab</translation>
 <translation id="8247998213073982446">Праграма (<ph name="APP_NAME" />)</translation>
 <translation id="8259556432390118667">Шаснаццатковае значэнне колеру</translation>
diff --git a/ui/strings/translations/ui_strings_bg.xtb b/ui/strings/translations/ui_strings_bg.xtb
index 6db8c7a..36b997d 100644
--- a/ui/strings/translations/ui_strings_bg.xtb
+++ b/ui/strings/translations/ui_strings_bg.xtb
@@ -233,6 +233,7 @@
 <translation id="815598010540052116">Превъртане надолу</translation>
 <translation id="8179976553408161302">Enter</translation>
 <translation id="8210608804940886430">Страница надолу</translation>
+<translation id="822964464349305906"><ph name="TYPE_1" /> и <ph name="TYPE_2" /></translation>
 <translation id="8245914219290430011">Табулатор</translation>
 <translation id="8247998213073982446"><ph name="APP_NAME" />, приложение</translation>
 <translation id="8259556432390118667">Шестнадесетична стойност за цвета</translation>
diff --git a/ui/strings/translations/ui_strings_bn.xtb b/ui/strings/translations/ui_strings_bn.xtb
index 04257ba..a815b45 100644
--- a/ui/strings/translations/ui_strings_bn.xtb
+++ b/ui/strings/translations/ui_strings_bn.xtb
@@ -233,6 +233,7 @@
 <translation id="815598010540052116">নিচে স্ক্রল করুন</translation>
 <translation id="8179976553408161302">Enter</translation>
 <translation id="8210608804940886430">পৃষ্ঠা উপরে</translation>
+<translation id="822964464349305906"><ph name="TYPE_1" />, <ph name="TYPE_2" /></translation>
 <translation id="8245914219290430011">ট্যাব</translation>
 <translation id="8247998213073982446"><ph name="APP_NAME" />, অ্যাপ</translation>
 <translation id="8259556432390118667">হেক্স রঙের মান</translation>
diff --git a/ui/strings/translations/ui_strings_bs.xtb b/ui/strings/translations/ui_strings_bs.xtb
index 5230bbbd..72f3fd7 100644
--- a/ui/strings/translations/ui_strings_bs.xtb
+++ b/ui/strings/translations/ui_strings_bs.xtb
@@ -233,6 +233,7 @@
 <translation id="815598010540052116">Klizni prema dolje</translation>
 <translation id="8179976553408161302">Enter</translation>
 <translation id="8210608804940886430">Stranica prema dolje</translation>
+<translation id="822964464349305906"><ph name="TYPE_1" />, <ph name="TYPE_2" /></translation>
 <translation id="8245914219290430011">Tab</translation>
 <translation id="8247998213073982446"><ph name="APP_NAME" />, aplikacija</translation>
 <translation id="8259556432390118667">Hex vrijednost boje</translation>
diff --git a/ui/strings/translations/ui_strings_ca.xtb b/ui/strings/translations/ui_strings_ca.xtb
index af83f25..57663374 100644
--- a/ui/strings/translations/ui_strings_ca.xtb
+++ b/ui/strings/translations/ui_strings_ca.xtb
@@ -233,6 +233,7 @@
 <translation id="815598010540052116">Desplaçament avall</translation>
 <translation id="8179976553408161302">Retorn</translation>
 <translation id="8210608804940886430">Av Pàg</translation>
+<translation id="822964464349305906"><ph name="TYPE_1" />, <ph name="TYPE_2" /></translation>
 <translation id="8245914219290430011">Tabulador</translation>
 <translation id="8247998213073982446"><ph name="APP_NAME" />, aplicació</translation>
 <translation id="8259556432390118667">Valor del color hexadecimal</translation>
diff --git a/ui/strings/translations/ui_strings_cs.xtb b/ui/strings/translations/ui_strings_cs.xtb
index e5530c2a..9196a83 100644
--- a/ui/strings/translations/ui_strings_cs.xtb
+++ b/ui/strings/translations/ui_strings_cs.xtb
@@ -233,6 +233,7 @@
 <translation id="815598010540052116">Posuv dolů</translation>
 <translation id="8179976553408161302">Enter</translation>
 <translation id="8210608804940886430">Klávesa PageDown</translation>
+<translation id="822964464349305906"><ph name="TYPE_1" />, <ph name="TYPE_2" /></translation>
 <translation id="8245914219290430011">Tab</translation>
 <translation id="8247998213073982446"><ph name="APP_NAME" />, aplikace</translation>
 <translation id="8259556432390118667">Hexadecimální kód barvy</translation>
diff --git a/ui/strings/translations/ui_strings_da.xtb b/ui/strings/translations/ui_strings_da.xtb
index 695d65d..e98ff3c 100644
--- a/ui/strings/translations/ui_strings_da.xtb
+++ b/ui/strings/translations/ui_strings_da.xtb
@@ -233,6 +233,7 @@
 <translation id="815598010540052116">Scroll Down</translation>
 <translation id="8179976553408161302">Enter</translation>
 <translation id="8210608804940886430">Side ned</translation>
+<translation id="822964464349305906"><ph name="TYPE_1" />, <ph name="TYPE_2" /></translation>
 <translation id="8245914219290430011">Tab</translation>
 <translation id="8247998213073982446"><ph name="APP_NAME" />, app</translation>
 <translation id="8259556432390118667">Hex-farveværdi</translation>
diff --git a/ui/strings/translations/ui_strings_de.xtb b/ui/strings/translations/ui_strings_de.xtb
index 8c24c21..a6eb325 100644
--- a/ui/strings/translations/ui_strings_de.xtb
+++ b/ui/strings/translations/ui_strings_de.xtb
@@ -233,6 +233,7 @@
 <translation id="815598010540052116">Nach unten blättern</translation>
 <translation id="8179976553408161302">Eingabetaste</translation>
 <translation id="8210608804940886430">Nach unten</translation>
+<translation id="822964464349305906"><ph name="TYPE_1" />, <ph name="TYPE_2" /></translation>
 <translation id="8245914219290430011">Tabulatortaste</translation>
 <translation id="8247998213073982446"><ph name="APP_NAME" />, App</translation>
 <translation id="8259556432390118667">Hex-Farbwert</translation>
diff --git a/ui/strings/translations/ui_strings_el.xtb b/ui/strings/translations/ui_strings_el.xtb
index b2861bd6..e65ee9d7 100644
--- a/ui/strings/translations/ui_strings_el.xtb
+++ b/ui/strings/translations/ui_strings_el.xtb
@@ -233,6 +233,7 @@
 <translation id="815598010540052116">Κύλιση κάτω</translation>
 <translation id="8179976553408161302">Enter</translation>
 <translation id="8210608804940886430">Επόμενη σελίδα</translation>
+<translation id="822964464349305906"><ph name="TYPE_1" />, <ph name="TYPE_2" /></translation>
 <translation id="8245914219290430011">Πλήκτρο tab</translation>
 <translation id="8247998213073982446"><ph name="APP_NAME" />, Εφαρμογή</translation>
 <translation id="8259556432390118667">Δεκαεξαδική τιμή χρώματος</translation>
diff --git a/ui/strings/translations/ui_strings_en-GB.xtb b/ui/strings/translations/ui_strings_en-GB.xtb
index 5c289d22..ff9bf47c 100644
--- a/ui/strings/translations/ui_strings_en-GB.xtb
+++ b/ui/strings/translations/ui_strings_en-GB.xtb
@@ -233,6 +233,7 @@
 <translation id="815598010540052116">Scroll Down</translation>
 <translation id="8179976553408161302">Enter</translation>
 <translation id="8210608804940886430">Page Down</translation>
+<translation id="822964464349305906"><ph name="TYPE_1" />, <ph name="TYPE_2" /></translation>
 <translation id="8245914219290430011">Tab</translation>
 <translation id="8247998213073982446"><ph name="APP_NAME" />, app</translation>
 <translation id="8259556432390118667">Hex colour value</translation>
diff --git a/ui/strings/translations/ui_strings_es-419.xtb b/ui/strings/translations/ui_strings_es-419.xtb
index 7dbadba..a91a928 100644
--- a/ui/strings/translations/ui_strings_es-419.xtb
+++ b/ui/strings/translations/ui_strings_es-419.xtb
@@ -233,6 +233,7 @@
 <translation id="815598010540052116">Desplazar hacia abajo</translation>
 <translation id="8179976553408161302">Intro</translation>
 <translation id="8210608804940886430">Avanzar página</translation>
+<translation id="822964464349305906"><ph name="TYPE_1" />, <ph name="TYPE_2" /></translation>
 <translation id="8245914219290430011">Tabulador</translation>
 <translation id="8247998213073982446"><ph name="APP_NAME" />, app</translation>
 <translation id="8259556432390118667">Valor de color hexadecimal</translation>
diff --git a/ui/strings/translations/ui_strings_es.xtb b/ui/strings/translations/ui_strings_es.xtb
index 1b2d693..aab6c7e 100644
--- a/ui/strings/translations/ui_strings_es.xtb
+++ b/ui/strings/translations/ui_strings_es.xtb
@@ -233,6 +233,7 @@
 <translation id="815598010540052116">Desplazar hacia abajo</translation>
 <translation id="8179976553408161302">Intro</translation>
 <translation id="8210608804940886430">Avanzar página</translation>
+<translation id="822964464349305906"><ph name="TYPE_1" /> o <ph name="TYPE_2" /></translation>
 <translation id="8245914219290430011">Tabulador</translation>
 <translation id="8247998213073982446"><ph name="APP_NAME" />, aplicación</translation>
 <translation id="8259556432390118667">Valor de color hexadecimal</translation>
diff --git a/ui/strings/translations/ui_strings_et.xtb b/ui/strings/translations/ui_strings_et.xtb
index bd51d89..bb84ce2c 100644
--- a/ui/strings/translations/ui_strings_et.xtb
+++ b/ui/strings/translations/ui_strings_et.xtb
@@ -233,6 +233,7 @@
 <translation id="815598010540052116">Keri alla</translation>
 <translation id="8179976553408161302">Sisestusklahv</translation>
 <translation id="8210608804940886430">Lehekülje lõppu</translation>
+<translation id="822964464349305906"><ph name="TYPE_1" />, <ph name="TYPE_2" /></translation>
 <translation id="8245914219290430011">Tabeldusklahv</translation>
 <translation id="8247998213073982446">Rakendus, <ph name="APP_NAME" /></translation>
 <translation id="8259556432390118667">Värvi kuueteistkümnendväärtus</translation>
diff --git a/ui/strings/translations/ui_strings_eu.xtb b/ui/strings/translations/ui_strings_eu.xtb
index 96127789..5268af9 100644
--- a/ui/strings/translations/ui_strings_eu.xtb
+++ b/ui/strings/translations/ui_strings_eu.xtb
@@ -233,6 +233,7 @@
 <translation id="815598010540052116">Egin behera</translation>
 <translation id="8179976553408161302">Sartu</translation>
 <translation id="8210608804940886430">Orrian behera</translation>
+<translation id="822964464349305906"><ph name="TYPE_1" />, <ph name="TYPE_2" /></translation>
 <translation id="8245914219290430011">Tabuladorea</translation>
 <translation id="8247998213073982446">Aplikazioa (<ph name="APP_NAME" />)</translation>
 <translation id="8259556432390118667">Kolore hamaseitarraren balioa</translation>
diff --git a/ui/strings/translations/ui_strings_fa.xtb b/ui/strings/translations/ui_strings_fa.xtb
index 937426c7..68a30c3 100644
--- a/ui/strings/translations/ui_strings_fa.xtb
+++ b/ui/strings/translations/ui_strings_fa.xtb
@@ -233,6 +233,7 @@
 <translation id="815598010540052116">پیمایش به پایین</translation>
 <translation id="8179976553408161302">ورود</translation>
 <translation id="8210608804940886430">صفحه پایین</translation>
+<translation id="822964464349305906"><ph name="TYPE_1" />،‏ <ph name="TYPE_2" /></translation>
 <translation id="8245914219290430011">Tab</translation>
 <translation id="8247998213073982446"><ph name="APP_NAME" />، برنامه</translation>
 <translation id="8259556432390118667">مقدار رنگ در مبنای شانزده</translation>
diff --git a/ui/strings/translations/ui_strings_fi.xtb b/ui/strings/translations/ui_strings_fi.xtb
index 86e26293..5a58d13 100644
--- a/ui/strings/translations/ui_strings_fi.xtb
+++ b/ui/strings/translations/ui_strings_fi.xtb
@@ -233,6 +233,7 @@
 <translation id="815598010540052116">Vieritä alas</translation>
 <translation id="8179976553408161302">Enter</translation>
 <translation id="8210608804940886430">Sivu alas</translation>
+<translation id="822964464349305906"><ph name="TYPE_1" />, <ph name="TYPE_2" /></translation>
 <translation id="8245914219290430011">Sarkain</translation>
 <translation id="8247998213073982446"><ph name="APP_NAME" />, sovellus</translation>
 <translation id="8259556432390118667">Värin heksadesimaaliarvo</translation>
diff --git a/ui/strings/translations/ui_strings_fil.xtb b/ui/strings/translations/ui_strings_fil.xtb
index 78d1778..029943b 100644
--- a/ui/strings/translations/ui_strings_fil.xtb
+++ b/ui/strings/translations/ui_strings_fil.xtb
@@ -233,6 +233,7 @@
 <translation id="815598010540052116">Mag-scroll Pababa</translation>
 <translation id="8179976553408161302">Enter</translation>
 <translation id="8210608804940886430">Page Down</translation>
+<translation id="822964464349305906"><ph name="TYPE_1" />, <ph name="TYPE_2" /></translation>
 <translation id="8245914219290430011">Tab</translation>
 <translation id="8247998213073982446"><ph name="APP_NAME" />, App</translation>
 <translation id="8259556432390118667">Value ng kulay ng hex</translation>
diff --git a/ui/strings/translations/ui_strings_fr-CA.xtb b/ui/strings/translations/ui_strings_fr-CA.xtb
index 5489c04..6ec483e 100644
--- a/ui/strings/translations/ui_strings_fr-CA.xtb
+++ b/ui/strings/translations/ui_strings_fr-CA.xtb
@@ -233,6 +233,7 @@
 <translation id="815598010540052116">Défilement vers le bas</translation>
 <translation id="8179976553408161302">Entrée</translation>
 <translation id="8210608804940886430">Page suivante</translation>
+<translation id="822964464349305906"><ph name="TYPE_1" />, <ph name="TYPE_2" /></translation>
 <translation id="8245914219290430011">Tabulation</translation>
 <translation id="8247998213073982446"><ph name="APP_NAME" />, application</translation>
 <translation id="8259556432390118667">Valeur de la couleur hexadécimale</translation>
diff --git a/ui/strings/translations/ui_strings_fr.xtb b/ui/strings/translations/ui_strings_fr.xtb
index f974927..8fd9ad4 100644
--- a/ui/strings/translations/ui_strings_fr.xtb
+++ b/ui/strings/translations/ui_strings_fr.xtb
@@ -233,6 +233,7 @@
 <translation id="815598010540052116">Défilement vers le bas</translation>
 <translation id="8179976553408161302">Entrée</translation>
 <translation id="8210608804940886430">Page suivante</translation>
+<translation id="822964464349305906"><ph name="TYPE_1" />, <ph name="TYPE_2" /></translation>
 <translation id="8245914219290430011">Tabulation</translation>
 <translation id="8247998213073982446"><ph name="APP_NAME" />, application</translation>
 <translation id="8259556432390118667">Valeur de couleur hexadécimale</translation>
diff --git a/ui/strings/translations/ui_strings_gl.xtb b/ui/strings/translations/ui_strings_gl.xtb
index b88dc2b..5e947a2 100644
--- a/ui/strings/translations/ui_strings_gl.xtb
+++ b/ui/strings/translations/ui_strings_gl.xtb
@@ -233,6 +233,7 @@
 <translation id="815598010540052116">Desprazarse cara abaixo</translation>
 <translation id="8179976553408161302">Intro</translation>
 <translation id="8210608804940886430">Avanzar páxina</translation>
+<translation id="822964464349305906"><ph name="TYPE_1" />, <ph name="TYPE_2" /></translation>
 <translation id="8245914219290430011">Tabulador</translation>
 <translation id="8247998213073982446"><ph name="APP_NAME" />, aplicación</translation>
 <translation id="8259556432390118667">Valor hexadecimal da cor</translation>
diff --git a/ui/strings/translations/ui_strings_gu.xtb b/ui/strings/translations/ui_strings_gu.xtb
index f4a064dd..70076e1a 100644
--- a/ui/strings/translations/ui_strings_gu.xtb
+++ b/ui/strings/translations/ui_strings_gu.xtb
@@ -233,6 +233,7 @@
 <translation id="815598010540052116">નીચે સ્ક્રોલ કરો</translation>
 <translation id="8179976553408161302">Enter</translation>
 <translation id="8210608804940886430">પૃષ્ઠ નીચે</translation>
+<translation id="822964464349305906"><ph name="TYPE_1" />, <ph name="TYPE_2" /></translation>
 <translation id="8245914219290430011">ટૅબ</translation>
 <translation id="8247998213073982446">ઍપ: <ph name="APP_NAME" /></translation>
 <translation id="8259556432390118667">રંગનું હેક્સ મૂલ્ય</translation>
diff --git a/ui/strings/translations/ui_strings_hi.xtb b/ui/strings/translations/ui_strings_hi.xtb
index 84c3165..cd91f71 100644
--- a/ui/strings/translations/ui_strings_hi.xtb
+++ b/ui/strings/translations/ui_strings_hi.xtb
@@ -233,6 +233,7 @@
 <translation id="815598010540052116">नीचे स्क्रोल करें</translation>
 <translation id="8179976553408161302">Enter</translation>
 <translation id="8210608804940886430">Page Down</translation>
+<translation id="822964464349305906"><ph name="TYPE_1" />, <ph name="TYPE_2" /></translation>
 <translation id="8245914219290430011">टैब</translation>
 <translation id="8247998213073982446"><ph name="APP_NAME" />, ऐप्लिकेशन</translation>
 <translation id="8259556432390118667">हेक्स रंग मान</translation>
diff --git a/ui/strings/translations/ui_strings_hr.xtb b/ui/strings/translations/ui_strings_hr.xtb
index 9c972501..3f08748 100644
--- a/ui/strings/translations/ui_strings_hr.xtb
+++ b/ui/strings/translations/ui_strings_hr.xtb
@@ -233,6 +233,7 @@
 <translation id="815598010540052116">Pomakni se dolje</translation>
 <translation id="8179976553408161302">Enter</translation>
 <translation id="8210608804940886430">Stranica prema dolje</translation>
+<translation id="822964464349305906"><ph name="TYPE_1" />, <ph name="TYPE_2" /></translation>
 <translation id="8245914219290430011">Kartica</translation>
 <translation id="8247998213073982446"><ph name="APP_NAME" />, aplikacija</translation>
 <translation id="8259556432390118667">Heksadecimalna vrijednost boje</translation>
diff --git a/ui/strings/translations/ui_strings_hu.xtb b/ui/strings/translations/ui_strings_hu.xtb
index e3ff66c1..5d4e24f6 100644
--- a/ui/strings/translations/ui_strings_hu.xtb
+++ b/ui/strings/translations/ui_strings_hu.xtb
@@ -233,6 +233,7 @@
 <translation id="815598010540052116">Görgetés lefelé</translation>
 <translation id="8179976553408161302">Enter</translation>
 <translation id="8210608804940886430">Page Down</translation>
+<translation id="822964464349305906"><ph name="TYPE_1" /> és <ph name="TYPE_2" /></translation>
 <translation id="8245914219290430011">Lap</translation>
 <translation id="8247998213073982446"><ph name="APP_NAME" />, alkalmazás</translation>
 <translation id="8259556432390118667">Hexadecimális színérték</translation>
diff --git a/ui/strings/translations/ui_strings_hy.xtb b/ui/strings/translations/ui_strings_hy.xtb
index dabcacdc..18787da 100644
--- a/ui/strings/translations/ui_strings_hy.xtb
+++ b/ui/strings/translations/ui_strings_hy.xtb
@@ -233,6 +233,7 @@
 <translation id="815598010540052116">Ոլորել ներքև</translation>
 <translation id="8179976553408161302">Enter</translation>
 <translation id="8210608804940886430">Էջը վար</translation>
+<translation id="822964464349305906"><ph name="TYPE_1" />, <ph name="TYPE_2" /></translation>
 <translation id="8245914219290430011">Tab</translation>
 <translation id="8247998213073982446"><ph name="APP_NAME" />, հավելված</translation>
 <translation id="8259556432390118667">Գույնի տասնվեցական կոդը</translation>
diff --git a/ui/strings/translations/ui_strings_id.xtb b/ui/strings/translations/ui_strings_id.xtb
index 3fa64cb..64c12f4 100644
--- a/ui/strings/translations/ui_strings_id.xtb
+++ b/ui/strings/translations/ui_strings_id.xtb
@@ -233,6 +233,7 @@
 <translation id="815598010540052116">Gulir ke Bawah</translation>
 <translation id="8179976553408161302">Enter</translation>
 <translation id="8210608804940886430">Page Down</translation>
+<translation id="822964464349305906"><ph name="TYPE_1" />, <ph name="TYPE_2" /></translation>
 <translation id="8245914219290430011">Tab</translation>
 <translation id="8247998213073982446"><ph name="APP_NAME" />, Aplikasi</translation>
 <translation id="8259556432390118667">Nilai warna hex</translation>
diff --git a/ui/strings/translations/ui_strings_is.xtb b/ui/strings/translations/ui_strings_is.xtb
index 9d2e3dc..4f113fd 100644
--- a/ui/strings/translations/ui_strings_is.xtb
+++ b/ui/strings/translations/ui_strings_is.xtb
@@ -233,6 +233,7 @@
 <translation id="815598010540052116">Fletta niður</translation>
 <translation id="8179976553408161302">Enter</translation>
 <translation id="8210608804940886430">Niður um síðu</translation>
+<translation id="822964464349305906"><ph name="TYPE_1" />, <ph name="TYPE_2" /></translation>
 <translation id="8245914219290430011">Flipi</translation>
 <translation id="8247998213073982446"><ph name="APP_NAME" />, forrit</translation>
 <translation id="8259556432390118667">Litagildi fyrir sextándakerfi</translation>
diff --git a/ui/strings/translations/ui_strings_it.xtb b/ui/strings/translations/ui_strings_it.xtb
index 0197731..be465654 100644
--- a/ui/strings/translations/ui_strings_it.xtb
+++ b/ui/strings/translations/ui_strings_it.xtb
@@ -233,6 +233,7 @@
 <translation id="815598010540052116">Scorri verso il basso</translation>
 <translation id="8179976553408161302">Invio</translation>
 <translation id="8210608804940886430">Pagina giù</translation>
+<translation id="822964464349305906"><ph name="TYPE_1" />, <ph name="TYPE_2" /></translation>
 <translation id="8245914219290430011">Tabulazione</translation>
 <translation id="8247998213073982446"><ph name="APP_NAME" />, app</translation>
 <translation id="8259556432390118667">Valore del colore esadecimale</translation>
diff --git a/ui/strings/translations/ui_strings_iw.xtb b/ui/strings/translations/ui_strings_iw.xtb
index 6b12d63d..d399a07c 100644
--- a/ui/strings/translations/ui_strings_iw.xtb
+++ b/ui/strings/translations/ui_strings_iw.xtb
@@ -233,6 +233,7 @@
 <translation id="815598010540052116">גלילה למטה</translation>
 <translation id="8179976553408161302">Enter</translation>
 <translation id="8210608804940886430">דף למטה</translation>
+<translation id="822964464349305906"><ph name="TYPE_1" />, <ph name="TYPE_2" /></translation>
 <translation id="8245914219290430011">כרטיסייה</translation>
 <translation id="8247998213073982446"><ph name="APP_NAME" />, אפליקציה</translation>
 <translation id="8259556432390118667">ערך צבע הקסדצימלי</translation>
diff --git a/ui/strings/translations/ui_strings_ja.xtb b/ui/strings/translations/ui_strings_ja.xtb
index 44dba2a..34c7d89 100644
--- a/ui/strings/translations/ui_strings_ja.xtb
+++ b/ui/strings/translations/ui_strings_ja.xtb
@@ -233,6 +233,7 @@
 <translation id="815598010540052116">下にスクロール</translation>
 <translation id="8179976553408161302">Enter</translation>
 <translation id="8210608804940886430">次のページへ</translation>
+<translation id="822964464349305906"><ph name="TYPE_1" />、<ph name="TYPE_2" /></translation>
 <translation id="8245914219290430011">タブ</translation>
 <translation id="8247998213073982446"><ph name="APP_NAME" />、アプリ</translation>
 <translation id="8259556432390118667">16 進数色コード</translation>
diff --git a/ui/strings/translations/ui_strings_ka.xtb b/ui/strings/translations/ui_strings_ka.xtb
index 40124dc..11d6f7b 100644
--- a/ui/strings/translations/ui_strings_ka.xtb
+++ b/ui/strings/translations/ui_strings_ka.xtb
@@ -233,6 +233,7 @@
 <translation id="815598010540052116">გადაადგილება ქვემოთ</translation>
 <translation id="8179976553408161302">Enter</translation>
 <translation id="8210608804940886430">ერთი გვერდით ქვემოთ</translation>
+<translation id="822964464349305906"><ph name="TYPE_1" />, <ph name="TYPE_2" /></translation>
 <translation id="8245914219290430011">ჩანართი</translation>
 <translation id="8247998213073982446"><ph name="APP_NAME" />, აპი</translation>
 <translation id="8259556432390118667">ფერის თექვსმეტობითი მნიშვნელობა</translation>
diff --git a/ui/strings/translations/ui_strings_kk.xtb b/ui/strings/translations/ui_strings_kk.xtb
index 7abc0fc..4551cf7 100644
--- a/ui/strings/translations/ui_strings_kk.xtb
+++ b/ui/strings/translations/ui_strings_kk.xtb
@@ -233,6 +233,7 @@
 <translation id="815598010540052116">Төменге айналдыру</translation>
 <translation id="8179976553408161302">Enter</translation>
 <translation id="8210608804940886430">Төменгі бетке өту</translation>
+<translation id="822964464349305906"><ph name="TYPE_1" />, <ph name="TYPE_2" /></translation>
 <translation id="8245914219290430011">Tab</translation>
 <translation id="8247998213073982446"><ph name="APP_NAME" />, қолданба</translation>
 <translation id="8259556432390118667">Түстің он алтылық коды</translation>
diff --git a/ui/strings/translations/ui_strings_km.xtb b/ui/strings/translations/ui_strings_km.xtb
index 7e298207..cf0f963 100644
--- a/ui/strings/translations/ui_strings_km.xtb
+++ b/ui/strings/translations/ui_strings_km.xtb
@@ -233,6 +233,7 @@
 <translation id="815598010540052116">ទាញចុះក្រោម</translation>
 <translation id="8179976553408161302">បញ្ចូល</translation>
 <translation id="8210608804940886430">Page Down</translation>
+<translation id="822964464349305906"><ph name="TYPE_1" />, <ph name="TYPE_2" /></translation>
 <translation id="8245914219290430011">ផ្ទាំង</translation>
 <translation id="8247998213073982446"><ph name="APP_NAME" />, កម្មវិធី</translation>
 <translation id="8259556432390118667">តម្លៃពណ៌ Hex</translation>
diff --git a/ui/strings/translations/ui_strings_kn.xtb b/ui/strings/translations/ui_strings_kn.xtb
index aef1b64..c718f79 100644
--- a/ui/strings/translations/ui_strings_kn.xtb
+++ b/ui/strings/translations/ui_strings_kn.xtb
@@ -233,6 +233,7 @@
 <translation id="815598010540052116">ಕೆಳಗೆ ಸ್ಕ್ರೋಲ್ ಮಾಡು</translation>
 <translation id="8179976553408161302">Enter</translation>
 <translation id="8210608804940886430">ಪುಟ ಕೆಳಗೆ</translation>
+<translation id="822964464349305906"><ph name="TYPE_1" />, <ph name="TYPE_2" /></translation>
 <translation id="8245914219290430011">ಟ್ಯಾಬ್</translation>
 <translation id="8247998213073982446"><ph name="APP_NAME" />, ಆ್ಯಪ್</translation>
 <translation id="8259556432390118667">ಹೆಕ್ಸ್ ಬಣ್ಣ ಮೌಲ್ಯ</translation>
diff --git a/ui/strings/translations/ui_strings_ko.xtb b/ui/strings/translations/ui_strings_ko.xtb
index 91039d2..c7f8191 100644
--- a/ui/strings/translations/ui_strings_ko.xtb
+++ b/ui/strings/translations/ui_strings_ko.xtb
@@ -233,6 +233,7 @@
 <translation id="815598010540052116">아래로 스크롤</translation>
 <translation id="8179976553408161302">Enter</translation>
 <translation id="8210608804940886430">페이지 아래로</translation>
+<translation id="822964464349305906"><ph name="TYPE_1" />, <ph name="TYPE_2" /></translation>
 <translation id="8245914219290430011">탭</translation>
 <translation id="8247998213073982446"><ph name="APP_NAME" />, 앱</translation>
 <translation id="8259556432390118667">16진수 색상 값</translation>
diff --git a/ui/strings/translations/ui_strings_ky.xtb b/ui/strings/translations/ui_strings_ky.xtb
index dc84ebae..814950ad 100644
--- a/ui/strings/translations/ui_strings_ky.xtb
+++ b/ui/strings/translations/ui_strings_ky.xtb
@@ -233,6 +233,7 @@
 <translation id="815598010540052116">Ылдый сыдыруу</translation>
 <translation id="8179976553408161302">Enter</translation>
 <translation id="8210608804940886430">Ылдый барактоо</translation>
+<translation id="822964464349305906"><ph name="TYPE_1" />, <ph name="TYPE_2" /></translation>
 <translation id="8245914219290430011">Өтмөк</translation>
 <translation id="8247998213073982446"><ph name="APP_NAME" />, Колдонмо</translation>
 <translation id="8259556432390118667">Он алты түстүү код</translation>
diff --git a/ui/strings/translations/ui_strings_lo.xtb b/ui/strings/translations/ui_strings_lo.xtb
index c5affb4..d66a4d0 100644
--- a/ui/strings/translations/ui_strings_lo.xtb
+++ b/ui/strings/translations/ui_strings_lo.xtb
@@ -233,6 +233,7 @@
 <translation id="815598010540052116">ເລື່ອນລົງ</translation>
 <translation id="8179976553408161302">ປ້ອນເຂົ້າ</translation>
 <translation id="8210608804940886430">ຫນ້າ​ລົງ</translation>
+<translation id="822964464349305906"><ph name="TYPE_1" />, <ph name="TYPE_2" /></translation>
 <translation id="8245914219290430011">ແຖບ</translation>
 <translation id="8247998213073982446"><ph name="APP_NAME" />, ແອັບ</translation>
 <translation id="8259556432390118667">ຄ່າສີແບບເລກຖານສິບຫົກ</translation>
diff --git a/ui/strings/translations/ui_strings_lt.xtb b/ui/strings/translations/ui_strings_lt.xtb
index 347b0ccb..b50db52 100644
--- a/ui/strings/translations/ui_strings_lt.xtb
+++ b/ui/strings/translations/ui_strings_lt.xtb
@@ -233,6 +233,7 @@
 <translation id="815598010540052116">Slinkti žemyn</translation>
 <translation id="8179976553408161302">Įvesti</translation>
 <translation id="8210608804940886430">Puslapį žemyn</translation>
+<translation id="822964464349305906"><ph name="TYPE_1" />, <ph name="TYPE_2" /></translation>
 <translation id="8245914219290430011">Skirtukas</translation>
 <translation id="8247998213073982446">„<ph name="APP_NAME" />“, programa</translation>
 <translation id="8259556432390118667">Šešioliktainės spalvos vertė</translation>
diff --git a/ui/strings/translations/ui_strings_lv.xtb b/ui/strings/translations/ui_strings_lv.xtb
index 06a91507..d9a2a68 100644
--- a/ui/strings/translations/ui_strings_lv.xtb
+++ b/ui/strings/translations/ui_strings_lv.xtb
@@ -233,6 +233,7 @@
 <translation id="815598010540052116">Ritināt lejup</translation>
 <translation id="8179976553408161302">Ievadīt</translation>
 <translation id="8210608804940886430">Lejup</translation>
+<translation id="822964464349305906"><ph name="TYPE_1" />, <ph name="TYPE_2" /></translation>
 <translation id="8245914219290430011">Tabulēšanas taustiņš</translation>
 <translation id="8247998213073982446"><ph name="APP_NAME" />, lietotne</translation>
 <translation id="8259556432390118667">Heksadecimāla krāsas vērtība</translation>
diff --git a/ui/strings/translations/ui_strings_mk.xtb b/ui/strings/translations/ui_strings_mk.xtb
index 915affa..37935dfb 100644
--- a/ui/strings/translations/ui_strings_mk.xtb
+++ b/ui/strings/translations/ui_strings_mk.xtb
@@ -233,6 +233,7 @@
 <translation id="815598010540052116">Лизгај надолу</translation>
 <translation id="8179976553408161302">Enter</translation>
 <translation id="8210608804940886430">Страница подолу</translation>
+<translation id="822964464349305906"><ph name="TYPE_1" />, <ph name="TYPE_2" /></translation>
 <translation id="8245914219290430011">Копчето Tab</translation>
 <translation id="8247998213073982446"><ph name="APP_NAME" />, апликација</translation>
 <translation id="8259556432390118667">Вредност за хексадецимална боја</translation>
diff --git a/ui/strings/translations/ui_strings_ml.xtb b/ui/strings/translations/ui_strings_ml.xtb
index 7490bdb8..6bdbf3a 100644
--- a/ui/strings/translations/ui_strings_ml.xtb
+++ b/ui/strings/translations/ui_strings_ml.xtb
@@ -233,6 +233,7 @@
 <translation id="815598010540052116">താഴേയ്‌ക്ക് സ്ക്രോൾ ചെയ്യുക</translation>
 <translation id="8179976553408161302">Enter</translation>
 <translation id="8210608804940886430">താഴെയുള്ള പേജുകള്‍</translation>
+<translation id="822964464349305906"><ph name="TYPE_1" />, <ph name="TYPE_2" /></translation>
 <translation id="8245914219290430011">ടാബ്</translation>
 <translation id="8247998213073982446"><ph name="APP_NAME" />, ആപ്പ്</translation>
 <translation id="8259556432390118667">ഹെക്‌സ് വർണ മൂല്യം</translation>
diff --git a/ui/strings/translations/ui_strings_mn.xtb b/ui/strings/translations/ui_strings_mn.xtb
index a9b5fa6..9d111f7 100644
--- a/ui/strings/translations/ui_strings_mn.xtb
+++ b/ui/strings/translations/ui_strings_mn.xtb
@@ -233,6 +233,7 @@
 <translation id="815598010540052116">Доош нь гүйлгэж харах</translation>
 <translation id="8179976553408161302">Нэвтрэх</translation>
 <translation id="8210608804940886430">Хуудас доошлуулах</translation>
+<translation id="822964464349305906"><ph name="TYPE_1" />, <ph name="TYPE_2" /></translation>
 <translation id="8245914219290430011">Чихтэй хуудас</translation>
 <translation id="8247998213073982446"><ph name="APP_NAME" />, апп</translation>
 <translation id="8259556432390118667">Hex өнгөний утга</translation>
diff --git a/ui/strings/translations/ui_strings_mr.xtb b/ui/strings/translations/ui_strings_mr.xtb
index 9637be4..7ed12da 100644
--- a/ui/strings/translations/ui_strings_mr.xtb
+++ b/ui/strings/translations/ui_strings_mr.xtb
@@ -233,6 +233,7 @@
 <translation id="815598010540052116">खाली स्क्रोल करा</translation>
 <translation id="8179976553408161302">Enter</translation>
 <translation id="8210608804940886430">पृष्ठ खाली</translation>
+<translation id="822964464349305906"><ph name="TYPE_1" />, <ph name="TYPE_2" /></translation>
 <translation id="8245914219290430011">टॅब</translation>
 <translation id="8247998213073982446"><ph name="APP_NAME" />, ॲप</translation>
 <translation id="8259556432390118667">हेक्स रंग मूल्य</translation>
diff --git a/ui/strings/translations/ui_strings_ms.xtb b/ui/strings/translations/ui_strings_ms.xtb
index 1ddab9f..9bf73032 100644
--- a/ui/strings/translations/ui_strings_ms.xtb
+++ b/ui/strings/translations/ui_strings_ms.xtb
@@ -233,6 +233,7 @@
 <translation id="815598010540052116">Tatal Ke Bawah</translation>
 <translation id="8179976553408161302">Enter</translation>
 <translation id="8210608804940886430">Ke Bawah Halaman</translation>
+<translation id="822964464349305906"><ph name="TYPE_1" />, <ph name="TYPE_2" /></translation>
 <translation id="8245914219290430011">Tab</translation>
 <translation id="8247998213073982446"><ph name="APP_NAME" />, Apl</translation>
 <translation id="8259556432390118667">Nilai warna perenambelasan</translation>
diff --git a/ui/strings/translations/ui_strings_my.xtb b/ui/strings/translations/ui_strings_my.xtb
index 356f553..4a055f6e 100644
--- a/ui/strings/translations/ui_strings_my.xtb
+++ b/ui/strings/translations/ui_strings_my.xtb
@@ -233,6 +233,7 @@
 <translation id="815598010540052116">အောက်ကို လှိမ့်ဆင်းရန်</translation>
 <translation id="8179976553408161302">အင်တာ</translation>
 <translation id="8210608804940886430">စာမျက်နှာ အောက်သို့</translation>
+<translation id="822964464349305906"><ph name="TYPE_1" />၊ <ph name="TYPE_2" /></translation>
 <translation id="8245914219290430011">Tab ကီးခလုတ်</translation>
 <translation id="8247998213073982446"><ph name="APP_NAME" />၊ အက်ပ်</translation>
 <translation id="8259556432390118667">Hex အရောင် အညွှန်းကိန်း</translation>
diff --git a/ui/strings/translations/ui_strings_ne.xtb b/ui/strings/translations/ui_strings_ne.xtb
index 4f3ada64..066f911b 100644
--- a/ui/strings/translations/ui_strings_ne.xtb
+++ b/ui/strings/translations/ui_strings_ne.xtb
@@ -233,6 +233,7 @@
 <translation id="815598010540052116">तलतिर स्क्रोल गर्नुहोस्</translation>
 <translation id="8179976553408161302">प्रविष्टि गर्नुहोस्</translation>
 <translation id="8210608804940886430">पृष्ठ तल</translation>
+<translation id="822964464349305906"><ph name="TYPE_1" />, <ph name="TYPE_2" /></translation>
 <translation id="8245914219290430011">ट्याब</translation>
 <translation id="8247998213073982446"><ph name="APP_NAME" />,एप</translation>
 <translation id="8259556432390118667">हेक्स रङको मान</translation>
diff --git a/ui/strings/translations/ui_strings_nl.xtb b/ui/strings/translations/ui_strings_nl.xtb
index 4fed91a..1e88024 100644
--- a/ui/strings/translations/ui_strings_nl.xtb
+++ b/ui/strings/translations/ui_strings_nl.xtb
@@ -233,6 +233,7 @@
 <translation id="815598010540052116">Omlaag bladeren</translation>
 <translation id="8179976553408161302">Enter</translation>
 <translation id="8210608804940886430">Pagina omlaag</translation>
+<translation id="822964464349305906"><ph name="TYPE_1" />, <ph name="TYPE_2" /></translation>
 <translation id="8245914219290430011">Tab</translation>
 <translation id="8247998213073982446"><ph name="APP_NAME" />, app</translation>
 <translation id="8259556432390118667">Hex-kleurwaarde</translation>
diff --git a/ui/strings/translations/ui_strings_no.xtb b/ui/strings/translations/ui_strings_no.xtb
index aeb39f7..1bd00e2 100644
--- a/ui/strings/translations/ui_strings_no.xtb
+++ b/ui/strings/translations/ui_strings_no.xtb
@@ -233,6 +233,7 @@
 <translation id="815598010540052116">Rull ned</translation>
 <translation id="8179976553408161302">Enter</translation>
 <translation id="8210608804940886430">Ned 1 s.</translation>
+<translation id="822964464349305906"><ph name="TYPE_1" />, <ph name="TYPE_2" /></translation>
 <translation id="8245914219290430011">Tab</translation>
 <translation id="8247998213073982446"><ph name="APP_NAME" /> – app</translation>
 <translation id="8259556432390118667">Heksadesimal fargekode</translation>
diff --git a/ui/strings/translations/ui_strings_or.xtb b/ui/strings/translations/ui_strings_or.xtb
index e906097c..d0df5b2d 100644
--- a/ui/strings/translations/ui_strings_or.xtb
+++ b/ui/strings/translations/ui_strings_or.xtb
@@ -233,6 +233,7 @@
 <translation id="815598010540052116">ତଳକୁ ସ୍କ୍ରୋଲ କରନ୍ତୁ</translation>
 <translation id="8179976553408161302">ପ୍ରବେଶ</translation>
 <translation id="8210608804940886430">ତଳ ପୃଷ୍ଠା</translation>
+<translation id="822964464349305906"><ph name="TYPE_1" /> <ph name="TYPE_2" /></translation>
 <translation id="8245914219290430011">ଟାବ୍</translation>
 <translation id="8247998213073982446"><ph name="APP_NAME" />, ଆପ୍</translation>
 <translation id="8259556432390118667">ରଙ୍ଗର ହେକ୍ସ ମୂଲ୍ୟ</translation>
diff --git a/ui/strings/translations/ui_strings_pa.xtb b/ui/strings/translations/ui_strings_pa.xtb
index 465c215d..447287a2 100644
--- a/ui/strings/translations/ui_strings_pa.xtb
+++ b/ui/strings/translations/ui_strings_pa.xtb
@@ -233,6 +233,7 @@
 <translation id="815598010540052116">ਸਕ੍ਰੌਲ ਡਾਊਨ</translation>
 <translation id="8179976553408161302">ਦਰਜ ਕਰੋ</translation>
 <translation id="8210608804940886430">ਸਫ਼ਾ ਹੇਠਾਂ</translation>
+<translation id="822964464349305906"><ph name="TYPE_1" />, <ph name="TYPE_2" /></translation>
 <translation id="8245914219290430011">ਟੈਬ</translation>
 <translation id="8247998213073982446"><ph name="APP_NAME" />, ਐਪ</translation>
 <translation id="8259556432390118667">ਹੈਕਸ ਰੰਗ ਮੁੱਲ</translation>
diff --git a/ui/strings/translations/ui_strings_pl.xtb b/ui/strings/translations/ui_strings_pl.xtb
index 173da38..7ae550e 100644
--- a/ui/strings/translations/ui_strings_pl.xtb
+++ b/ui/strings/translations/ui_strings_pl.xtb
@@ -233,6 +233,7 @@
 <translation id="815598010540052116">Przewiń w dół</translation>
 <translation id="8179976553408161302">Enter</translation>
 <translation id="8210608804940886430">Strona w dół</translation>
+<translation id="822964464349305906"><ph name="TYPE_1" />, <ph name="TYPE_2" /></translation>
 <translation id="8245914219290430011">Tab</translation>
 <translation id="8247998213073982446"><ph name="APP_NAME" />, aplikacja</translation>
 <translation id="8259556432390118667">Wartość szesnastkowego kodu koloru</translation>
diff --git a/ui/strings/translations/ui_strings_pt-BR.xtb b/ui/strings/translations/ui_strings_pt-BR.xtb
index 5e1d7957..0c38704 100644
--- a/ui/strings/translations/ui_strings_pt-BR.xtb
+++ b/ui/strings/translations/ui_strings_pt-BR.xtb
@@ -233,6 +233,7 @@
 <translation id="815598010540052116">Percorrer para baixo</translation>
 <translation id="8179976553408161302">Entrar</translation>
 <translation id="8210608804940886430">Página para baixo</translation>
+<translation id="822964464349305906"><ph name="TYPE_1" />, <ph name="TYPE_2" /></translation>
 <translation id="8245914219290430011">Guia</translation>
 <translation id="8247998213073982446"><ph name="APP_NAME" />, app</translation>
 <translation id="8259556432390118667">Valor de cor hexadecimal</translation>
diff --git a/ui/strings/translations/ui_strings_pt-PT.xtb b/ui/strings/translations/ui_strings_pt-PT.xtb
index 930cbe9e..b7f43101 100644
--- a/ui/strings/translations/ui_strings_pt-PT.xtb
+++ b/ui/strings/translations/ui_strings_pt-PT.xtb
@@ -233,6 +233,7 @@
 <translation id="815598010540052116">Deslocar-se para baixo</translation>
 <translation id="8179976553408161302">Enter</translation>
 <translation id="8210608804940886430">Página para baixo</translation>
+<translation id="822964464349305906"><ph name="TYPE_1" />, <ph name="TYPE_2" /></translation>
 <translation id="8245914219290430011">Tabulação</translation>
 <translation id="8247998213073982446"><ph name="APP_NAME" />, aplicação</translation>
 <translation id="8259556432390118667">Valor de cor hexadecimal</translation>
diff --git a/ui/strings/translations/ui_strings_ro.xtb b/ui/strings/translations/ui_strings_ro.xtb
index d424059..441db8b 100644
--- a/ui/strings/translations/ui_strings_ro.xtb
+++ b/ui/strings/translations/ui_strings_ro.xtb
@@ -233,6 +233,7 @@
 <translation id="815598010540052116">Derulează în jos</translation>
 <translation id="8179976553408161302">Enter</translation>
 <translation id="8210608804940886430">O pagină mai jos</translation>
+<translation id="822964464349305906"><ph name="TYPE_1" />, <ph name="TYPE_2" /></translation>
 <translation id="8245914219290430011">Tab</translation>
 <translation id="8247998213073982446"><ph name="APP_NAME" />, aplicație</translation>
 <translation id="8259556432390118667">Valoarea culorii hexazecimale</translation>
diff --git a/ui/strings/translations/ui_strings_ru.xtb b/ui/strings/translations/ui_strings_ru.xtb
index 8774d0d1..3594049d 100644
--- a/ui/strings/translations/ui_strings_ru.xtb
+++ b/ui/strings/translations/ui_strings_ru.xtb
@@ -233,6 +233,7 @@
 <translation id="815598010540052116">Прокрутка вниз</translation>
 <translation id="8179976553408161302">ВВОД</translation>
 <translation id="8210608804940886430">Прокрутка вниз</translation>
+<translation id="822964464349305906"><ph name="TYPE_1" /> и <ph name="TYPE_2" /></translation>
 <translation id="8245914219290430011">Tab</translation>
 <translation id="8247998213073982446"><ph name="APP_NAME" />, приложение</translation>
 <translation id="8259556432390118667">Шестнадцатеричный код цвета</translation>
diff --git a/ui/strings/translations/ui_strings_si.xtb b/ui/strings/translations/ui_strings_si.xtb
index 41d0179..9cc14de 100644
--- a/ui/strings/translations/ui_strings_si.xtb
+++ b/ui/strings/translations/ui_strings_si.xtb
@@ -233,6 +233,7 @@
 <translation id="815598010540052116">පහළට ස්ක්‍රෝල්</translation>
 <translation id="8179976553408161302">ඇතුළු කරන්න</translation>
 <translation id="8210608804940886430">පිටුව පහළට</translation>
+<translation id="822964464349305906"><ph name="TYPE_1" />, <ph name="TYPE_2" /></translation>
 <translation id="8245914219290430011">ටැබ යතුර</translation>
 <translation id="8247998213073982446"><ph name="APP_NAME" />, යෙදුම</translation>
 <translation id="8259556432390118667">ෂඩ් වර්ණ අගය</translation>
diff --git a/ui/strings/translations/ui_strings_sk.xtb b/ui/strings/translations/ui_strings_sk.xtb
index a8facfef..aa5fdc1 100644
--- a/ui/strings/translations/ui_strings_sk.xtb
+++ b/ui/strings/translations/ui_strings_sk.xtb
@@ -233,6 +233,7 @@
 <translation id="815598010540052116">Rolovať nadol</translation>
 <translation id="8179976553408161302">Enter</translation>
 <translation id="8210608804940886430">Stránkovať nadol</translation>
+<translation id="822964464349305906"><ph name="TYPE_1" />, <ph name="TYPE_2" /></translation>
 <translation id="8245914219290430011">Tab</translation>
 <translation id="8247998213073982446"><ph name="APP_NAME" />, aplikácia</translation>
 <translation id="8259556432390118667">Hodnota farby v šestnástkovej sústave</translation>
diff --git a/ui/strings/translations/ui_strings_sl.xtb b/ui/strings/translations/ui_strings_sl.xtb
index 4b1c74fc9..d7e320f 100644
--- a/ui/strings/translations/ui_strings_sl.xtb
+++ b/ui/strings/translations/ui_strings_sl.xtb
@@ -232,6 +232,7 @@
 <translation id="815598010540052116">Pomik dol</translation>
 <translation id="8179976553408161302">Enter</translation>
 <translation id="8210608804940886430">Stran dol</translation>
+<translation id="822964464349305906"><ph name="TYPE_1" />, <ph name="TYPE_2" /></translation>
 <translation id="8245914219290430011">Zavihek</translation>
 <translation id="8247998213073982446"><ph name="APP_NAME" />, aplikacija</translation>
 <translation id="8259556432390118667">Vrednost barve v šestnajstiškem zapisu</translation>
diff --git a/ui/strings/translations/ui_strings_sq.xtb b/ui/strings/translations/ui_strings_sq.xtb
index 5a189fd4..1dfd942 100644
--- a/ui/strings/translations/ui_strings_sq.xtb
+++ b/ui/strings/translations/ui_strings_sq.xtb
@@ -233,6 +233,7 @@
 <translation id="815598010540052116">Lëviz poshtë</translation>
 <translation id="8179976553408161302">Enter</translation>
 <translation id="8210608804940886430">Faqe poshtë</translation>
+<translation id="822964464349305906"><ph name="TYPE_1" />, <ph name="TYPE_2" /></translation>
 <translation id="8245914219290430011">Skeda</translation>
 <translation id="8247998213073982446"><ph name="APP_NAME" />, aplikacion</translation>
 <translation id="8259556432390118667">Vlera heks e ngjyrës</translation>
diff --git a/ui/strings/translations/ui_strings_sr-Latn.xtb b/ui/strings/translations/ui_strings_sr-Latn.xtb
index 496b2d9..496674c 100644
--- a/ui/strings/translations/ui_strings_sr-Latn.xtb
+++ b/ui/strings/translations/ui_strings_sr-Latn.xtb
@@ -233,6 +233,7 @@
 <translation id="815598010540052116">Pomeri nadole</translation>
 <translation id="8179976553408161302">Enter</translation>
 <translation id="8210608804940886430">Stranica nadole</translation>
+<translation id="822964464349305906"><ph name="TYPE_1" />, <ph name="TYPE_2" /></translation>
 <translation id="8245914219290430011">Tabulator</translation>
 <translation id="8247998213073982446"><ph name="APP_NAME" />, aplikacija</translation>
 <translation id="8259556432390118667">Heksadecimalna vrednost boje</translation>
diff --git a/ui/strings/translations/ui_strings_sr.xtb b/ui/strings/translations/ui_strings_sr.xtb
index ae158cd..4e8fc80 100644
--- a/ui/strings/translations/ui_strings_sr.xtb
+++ b/ui/strings/translations/ui_strings_sr.xtb
@@ -233,6 +233,7 @@
 <translation id="815598010540052116">Помери надоле</translation>
 <translation id="8179976553408161302">Enter</translation>
 <translation id="8210608804940886430">Страница надоле</translation>
+<translation id="822964464349305906"><ph name="TYPE_1" />, <ph name="TYPE_2" /></translation>
 <translation id="8245914219290430011">Табулатор</translation>
 <translation id="8247998213073982446"><ph name="APP_NAME" />, апликација</translation>
 <translation id="8259556432390118667">Хексадецимална вредност боје</translation>
diff --git a/ui/strings/translations/ui_strings_sv.xtb b/ui/strings/translations/ui_strings_sv.xtb
index a36c709..a81ebec 100644
--- a/ui/strings/translations/ui_strings_sv.xtb
+++ b/ui/strings/translations/ui_strings_sv.xtb
@@ -233,6 +233,7 @@
 <translation id="815598010540052116">Rulla nedåt</translation>
 <translation id="8179976553408161302">Enter</translation>
 <translation id="8210608804940886430">Page Down</translation>
+<translation id="822964464349305906"><ph name="TYPE_1" />, <ph name="TYPE_2" /></translation>
 <translation id="8245914219290430011">Flik</translation>
 <translation id="8247998213073982446"><ph name="APP_NAME" />, app</translation>
 <translation id="8259556432390118667">Hexadecimalt färgvärde</translation>
diff --git a/ui/strings/translations/ui_strings_sw.xtb b/ui/strings/translations/ui_strings_sw.xtb
index c4326c6..2e5d0bd 100644
--- a/ui/strings/translations/ui_strings_sw.xtb
+++ b/ui/strings/translations/ui_strings_sw.xtb
@@ -233,6 +233,7 @@
 <translation id="815598010540052116">Sogeza Chini</translation>
 <translation id="8179976553408161302">Enter</translation>
 <translation id="8210608804940886430">Ukurasa mmoja chini</translation>
+<translation id="822964464349305906"><ph name="TYPE_1" />, <ph name="TYPE_2" /></translation>
 <translation id="8245914219290430011">Kichupo</translation>
 <translation id="8247998213073982446"><ph name="APP_NAME" />, Programu</translation>
 <translation id="8259556432390118667">Thamani ya rangi ya hex</translation>
diff --git a/ui/strings/translations/ui_strings_ta.xtb b/ui/strings/translations/ui_strings_ta.xtb
index ef9e65562..4ca064e7 100644
--- a/ui/strings/translations/ui_strings_ta.xtb
+++ b/ui/strings/translations/ui_strings_ta.xtb
@@ -233,6 +233,7 @@
 <translation id="815598010540052116">கீழே நகர்த்து</translation>
 <translation id="8179976553408161302">Enter</translation>
 <translation id="8210608804940886430">பக்கத்தின் கீழே</translation>
+<translation id="822964464349305906"><ph name="TYPE_1" />, <ph name="TYPE_2" /></translation>
 <translation id="8245914219290430011">தாவல்</translation>
 <translation id="8247998213073982446"><ph name="APP_NAME" />, ஆப்ஸ்</translation>
 <translation id="8259556432390118667">ஹெக்ஸ் வண்ண மதிப்பு</translation>
diff --git a/ui/strings/translations/ui_strings_te.xtb b/ui/strings/translations/ui_strings_te.xtb
index 316a7a9..621e2bd 100644
--- a/ui/strings/translations/ui_strings_te.xtb
+++ b/ui/strings/translations/ui_strings_te.xtb
@@ -233,6 +233,7 @@
 <translation id="815598010540052116">కిందికి స్క్రోల్ చేయి</translation>
 <translation id="8179976553408161302">Enter</translation>
 <translation id="8210608804940886430">పేజీ క్రిందికి</translation>
+<translation id="822964464349305906"><ph name="TYPE_1" />, <ph name="TYPE_2" /></translation>
 <translation id="8245914219290430011">ట్యాబ్</translation>
 <translation id="8247998213073982446"><ph name="APP_NAME" />, యాప్</translation>
 <translation id="8259556432390118667">హెక్స్ రంగు విలువ</translation>
diff --git a/ui/strings/translations/ui_strings_th.xtb b/ui/strings/translations/ui_strings_th.xtb
index 260c02d1..8089029 100644
--- a/ui/strings/translations/ui_strings_th.xtb
+++ b/ui/strings/translations/ui_strings_th.xtb
@@ -233,6 +233,7 @@
 <translation id="815598010540052116">เลื่อนลง</translation>
 <translation id="8179976553408161302">Enter</translation>
 <translation id="8210608804940886430">เลื่อนหน้าลง</translation>
+<translation id="822964464349305906"><ph name="TYPE_1" />, <ph name="TYPE_2" /></translation>
 <translation id="8245914219290430011">แท็บ</translation>
 <translation id="8247998213073982446"><ph name="APP_NAME" />, แอป</translation>
 <translation id="8259556432390118667">ค่าสีแบบเลขฐาน 16</translation>
diff --git a/ui/strings/translations/ui_strings_tr.xtb b/ui/strings/translations/ui_strings_tr.xtb
index 36cb341..eede24e 100644
--- a/ui/strings/translations/ui_strings_tr.xtb
+++ b/ui/strings/translations/ui_strings_tr.xtb
@@ -233,6 +233,7 @@
 <translation id="815598010540052116">Aşağı Kaydır</translation>
 <translation id="8179976553408161302">Enter</translation>
 <translation id="8210608804940886430">Page Down</translation>
+<translation id="822964464349305906"><ph name="TYPE_1" />, <ph name="TYPE_2" /></translation>
 <translation id="8245914219290430011">Sekme</translation>
 <translation id="8247998213073982446"><ph name="APP_NAME" />, Uygulama</translation>
 <translation id="8259556432390118667">Onaltılık renk değeri</translation>
diff --git a/ui/strings/translations/ui_strings_uk.xtb b/ui/strings/translations/ui_strings_uk.xtb
index aff17e4..add160b 100644
--- a/ui/strings/translations/ui_strings_uk.xtb
+++ b/ui/strings/translations/ui_strings_uk.xtb
@@ -233,6 +233,7 @@
 <translation id="815598010540052116">Прокрутка вниз</translation>
 <translation id="8179976553408161302">Enter</translation>
 <translation id="8210608804940886430">Сторінка вниз</translation>
+<translation id="822964464349305906"><ph name="TYPE_1" />, <ph name="TYPE_2" /></translation>
 <translation id="8245914219290430011">Tab</translation>
 <translation id="8247998213073982446"><ph name="APP_NAME" />, додаток</translation>
 <translation id="8259556432390118667">Шістнадцятковий код кольору</translation>
diff --git a/ui/strings/translations/ui_strings_ur.xtb b/ui/strings/translations/ui_strings_ur.xtb
index 48978c9..f1bba8d 100644
--- a/ui/strings/translations/ui_strings_ur.xtb
+++ b/ui/strings/translations/ui_strings_ur.xtb
@@ -233,6 +233,7 @@
 <translation id="815598010540052116">نیچے سکرول کریں</translation>
 <translation id="8179976553408161302">انٹر</translation>
 <translation id="8210608804940886430">صفحہ نیچے</translation>
+<translation id="822964464349305906"><ph name="TYPE_1" />، <ph name="TYPE_2" /></translation>
 <translation id="8245914219290430011">ٹیب</translation>
 <translation id="8247998213073982446"><ph name="APP_NAME" />، ایپ</translation>
 <translation id="8259556432390118667">ہیکس رنگ کی قدر</translation>
diff --git a/ui/strings/translations/ui_strings_uz.xtb b/ui/strings/translations/ui_strings_uz.xtb
index afed8ce..3cb113d 100644
--- a/ui/strings/translations/ui_strings_uz.xtb
+++ b/ui/strings/translations/ui_strings_uz.xtb
@@ -233,6 +233,7 @@
 <translation id="815598010540052116">Pastga o‘tkazish</translation>
 <translation id="8179976553408161302">Enter</translation>
 <translation id="8210608804940886430">Pastga o‘tkazish</translation>
+<translation id="822964464349305906"><ph name="TYPE_1" />, <ph name="TYPE_2" /></translation>
 <translation id="8245914219290430011">Tab</translation>
 <translation id="8247998213073982446"><ph name="APP_NAME" />, Ilova</translation>
 <translation id="8259556432390118667">Rangning 16 raqamli qiymati</translation>
diff --git a/ui/strings/translations/ui_strings_vi.xtb b/ui/strings/translations/ui_strings_vi.xtb
index d149b11..fc85ce3 100644
--- a/ui/strings/translations/ui_strings_vi.xtb
+++ b/ui/strings/translations/ui_strings_vi.xtb
@@ -233,6 +233,7 @@
 <translation id="815598010540052116">Cuộn Xuống</translation>
 <translation id="8179976553408161302">Enter</translation>
 <translation id="8210608804940886430">Trang Dưới</translation>
+<translation id="822964464349305906"><ph name="TYPE_1" />, <ph name="TYPE_2" /></translation>
 <translation id="8245914219290430011">Thẻ</translation>
 <translation id="8247998213073982446"><ph name="APP_NAME" />, Ứng dụng</translation>
 <translation id="8259556432390118667">Giá trị màu hex</translation>
diff --git a/ui/strings/translations/ui_strings_zh-CN.xtb b/ui/strings/translations/ui_strings_zh-CN.xtb
index 90c2ea4d..3dd38f63 100644
--- a/ui/strings/translations/ui_strings_zh-CN.xtb
+++ b/ui/strings/translations/ui_strings_zh-CN.xtb
@@ -233,6 +233,7 @@
 <translation id="815598010540052116">向下滚动</translation>
 <translation id="8179976553408161302">Enter</translation>
 <translation id="8210608804940886430">向下翻页</translation>
+<translation id="822964464349305906"><ph name="TYPE_1" />、<ph name="TYPE_2" /></translation>
 <translation id="8245914219290430011">Tab</translation>
 <translation id="8247998213073982446"><ph name="APP_NAME" />,应用</translation>
 <translation id="8259556432390118667">十六进制颜色值</translation>
diff --git a/ui/strings/translations/ui_strings_zh-HK.xtb b/ui/strings/translations/ui_strings_zh-HK.xtb
index d88e326..8819966 100644
--- a/ui/strings/translations/ui_strings_zh-HK.xtb
+++ b/ui/strings/translations/ui_strings_zh-HK.xtb
@@ -233,6 +233,7 @@
 <translation id="815598010540052116">向下捲動</translation>
 <translation id="8179976553408161302">Enter 鍵</translation>
 <translation id="8210608804940886430">下一頁</translation>
+<translation id="822964464349305906"><ph name="TYPE_1" />、<ph name="TYPE_2" /></translation>
 <translation id="8245914219290430011">Tab 鍵</translation>
 <translation id="8247998213073982446"><ph name="APP_NAME" />,應用程式</translation>
 <translation id="8259556432390118667">十六進制顏色值</translation>
diff --git a/ui/strings/translations/ui_strings_zh-TW.xtb b/ui/strings/translations/ui_strings_zh-TW.xtb
index 2370f795..83d8704b 100644
--- a/ui/strings/translations/ui_strings_zh-TW.xtb
+++ b/ui/strings/translations/ui_strings_zh-TW.xtb
@@ -233,6 +233,7 @@
 <translation id="815598010540052116">向下捲動</translation>
 <translation id="8179976553408161302">Enter</translation>
 <translation id="8210608804940886430">向下翻頁</translation>
+<translation id="822964464349305906"><ph name="TYPE_1" />、<ph name="TYPE_2" /></translation>
 <translation id="8245914219290430011">Tab 鍵</translation>
 <translation id="8247998213073982446"><ph name="APP_NAME" />,應用程式</translation>
 <translation id="8259556432390118667">十六進位顏色值</translation>
diff --git a/ui/strings/translations/ui_strings_zu.xtb b/ui/strings/translations/ui_strings_zu.xtb
index 2f14cc3..a48e581 100644
--- a/ui/strings/translations/ui_strings_zu.xtb
+++ b/ui/strings/translations/ui_strings_zu.xtb
@@ -233,6 +233,7 @@
 <translation id="815598010540052116">Skrolela phansi</translation>
 <translation id="8179976553408161302">Faka</translation>
 <translation id="8210608804940886430">Yehla nekhasi</translation>
+<translation id="822964464349305906"><ph name="TYPE_1" />, <ph name="TYPE_2" /></translation>
 <translation id="8245914219290430011">Ithebhu</translation>
 <translation id="8247998213073982446"><ph name="APP_NAME" />, Uhlelo lokusebenza</translation>
 <translation id="8259556432390118667">Ivelu lombala we-Hex</translation>
diff --git a/ui/strings/ui_strings.grd b/ui/strings/ui_strings.grd
index 43d8f5b..3140f63 100644
--- a/ui/strings/ui_strings.grd
+++ b/ui/strings/ui_strings.grd
@@ -1029,12 +1029,6 @@
       <message name="IDS_APP_LIST_MANAGE_SETTINGS" desc="Text of Manage settings links.">
         Manage settings
       </message>
-      <message name="IDS_APP_LIST_ASSISTANT_PRIVACY_INFO" desc="Text shown in Launcher to imply Assistant search.">
-        Your searches are powered by the Google Assistant. <ph name="LEARN_MORE">$1<ex>Learn more</ex></ph>
-      </message>
-      <message name="IDS_APP_LIST_ASSISTANT_PRIVACY_INFO_CLOSE" desc="Close button text.">
-        Close
-      </message>
       <message name="IDS_APP_LIST_SUGGESTED_CONTENT_INFO" desc="Text shown in launcher to notify users about Suggested Content. Suggested Content includes app search recommendations and website recommendations which can show up in places such as launcher search and suggestion chips.">
           Chrome OS shows suggestions for new content to explore. Sends statistics to improve quality only if you’ve chosen to share usage data. <ph name="MANAGE_SETTINGS">$1<ex>Manage settings</ex></ph>
       </message>
diff --git a/weblayer/OWNERS b/weblayer/OWNERS
index 3af6880..e8c61b459 100644
--- a/weblayer/OWNERS
+++ b/weblayer/OWNERS
@@ -5,6 +5,7 @@
 estade@chromium.org
 jam@chromium.org
 nator@chromium.org
+rmcelrath@chromium.org
 sky@chromium.org
 timvolodine@chromium.org
 tobiasjs@chromium.org
diff --git a/weblayer/browser/android/javatests/BUILD.gn b/weblayer/browser/android/javatests/BUILD.gn
index 8f1c1dd..e29e5de 100644
--- a/weblayer/browser/android/javatests/BUILD.gn
+++ b/weblayer/browser/android/javatests/BUILD.gn
@@ -147,7 +147,7 @@
   testonly = true
   sources = [
     "src/org/chromium/weblayer/test/BrowserControlsHelper.java",
-    "src/org/chromium/weblayer/test/SiteSettingsActivityTestRule.java",
+    "src/org/chromium/weblayer/test/SettingsActivityTestRule.java",
   ]
   deps = [
     ":weblayer_java_test_support",
diff --git a/weblayer/browser/android/javatests/src/org/chromium/weblayer/test/SettingsActivityTestRule.java b/weblayer/browser/android/javatests/src/org/chromium/weblayer/test/SettingsActivityTestRule.java
new file mode 100644
index 0000000..8cc0d83
--- /dev/null
+++ b/weblayer/browser/android/javatests/src/org/chromium/weblayer/test/SettingsActivityTestRule.java
@@ -0,0 +1,47 @@
+// Copyright 2020 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+package org.chromium.weblayer.test;
+
+import android.content.Context;
+import android.content.Intent;
+import android.support.test.InstrumentationRegistry;
+
+import org.chromium.content_public.browser.test.util.TestThreadUtils;
+import org.chromium.weblayer.SettingsActivity;
+import org.chromium.weblayer.WebLayer;
+
+/**
+ * ActivityTestRule for SettingsActivity.
+ *
+ * Test can use this ActivityTestRule to launch SettingsActivity.
+ */
+public class SettingsActivityTestRule extends WebLayerActivityTestRule<SettingsActivity> {
+    private Context mAppContext;
+
+    public SettingsActivityTestRule() {
+        super(SettingsActivity.class);
+    }
+
+    @Override
+    public void launchActivity(Intent settingsIntent) {
+        TestThreadUtils.runOnUiThreadBlocking(() -> {
+            // We load WebLayer here so it gets initialized with the test/instrumentation Context,
+            // which has an in-memory SharedPreferences. Without this call, WebLayer gets
+            // initialized with the Application as its appContext, which breaks tests because a
+            // SharedPreferences xml file is persisted to disk.
+            WebLayer.loadSync(getContext());
+        });
+        super.launchActivity(settingsIntent);
+    }
+
+    public Context getContext() {
+        if (mAppContext == null) {
+            mAppContext = InstrumentationRegistry.getInstrumentation()
+                                  .getTargetContext()
+                                  .getApplicationContext();
+        }
+        return mAppContext;
+    }
+}
diff --git a/weblayer/browser/android/javatests/src/org/chromium/weblayer/test/SiteSettingsActivityTestRule.java b/weblayer/browser/android/javatests/src/org/chromium/weblayer/test/SiteSettingsActivityTestRule.java
deleted file mode 100644
index e1b772a..0000000
--- a/weblayer/browser/android/javatests/src/org/chromium/weblayer/test/SiteSettingsActivityTestRule.java
+++ /dev/null
@@ -1,65 +0,0 @@
-// Copyright 2020 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-package org.chromium.weblayer.test;
-
-import android.content.Context;
-import android.content.Intent;
-import android.support.test.InstrumentationRegistry;
-
-import org.chromium.content_public.browser.test.util.TestThreadUtils;
-import org.chromium.weblayer.SiteSettingsActivity;
-import org.chromium.weblayer.SiteSettingsTestUtils;
-import org.chromium.weblayer.WebLayer;
-
-/**
- * ActivityTestRule for SiteSettingsActivity.
- *
- * Test can use this ActivityTestRule to launch SiteSettingsActivity.
- */
-public class SiteSettingsActivityTestRule extends WebLayerActivityTestRule<SiteSettingsActivity> {
-    private Context mAppContext;
-
-    public SiteSettingsActivityTestRule() {
-        super(SiteSettingsActivity.class);
-    }
-
-    public SiteSettingsActivity launchCategoryListWithProfile(String profileName) {
-        Intent siteSettingsIntent = TestThreadUtils.runOnUiThreadBlockingNoException(() -> {
-            // We load WebLayer here so it gets initialized with the test/instrumentation Context,
-            // which has an in-memory SharedPreferences. Without this call, WebLayer gets
-            // initialized with the Application as its appContext, which breaks tests because a
-            // SharedPreferences xml file is persisted to disk.
-            WebLayer.loadSync(getContext());
-            return SiteSettingsActivity.createIntentForCategoryList(
-                    getContext(), profileName, "".equals(profileName));
-        });
-        launchActivity(siteSettingsIntent);
-        return getActivity();
-    }
-
-    public SiteSettingsActivity launchSingleSiteSettingsWithProfile(
-            String profileName, String url) {
-        Intent siteSettingsIntent = TestThreadUtils.runOnUiThreadBlockingNoException(() -> {
-            // We load WebLayer here so it gets initialized with the test/instrumentation Context,
-            // which has an in-memory SharedPreferences. Without this call, WebLayer gets
-            // initialized with the Application as its appContext, which breaks tests because a
-            // SharedPreferences xml file is persisted to disk.
-            WebLayer.loadSync(getContext());
-            return SiteSettingsTestUtils.createIntentForSingleWebsite(
-                    getContext(), profileName, "".equals(profileName), url);
-        });
-        launchActivity(siteSettingsIntent);
-        return getActivity();
-    }
-
-    private Context getContext() {
-        if (mAppContext == null) {
-            mAppContext = InstrumentationRegistry.getInstrumentation()
-                                  .getTargetContext()
-                                  .getApplicationContext();
-        }
-        return mAppContext;
-    }
-}
diff --git a/weblayer/browser/android/javatests/src/org/chromium/weblayer/test/SiteSettingsTest.java b/weblayer/browser/android/javatests/src/org/chromium/weblayer/test/SiteSettingsTest.java
index 6b40abc..b7c55114 100644
--- a/weblayer/browser/android/javatests/src/org/chromium/weblayer/test/SiteSettingsTest.java
+++ b/weblayer/browser/android/javatests/src/org/chromium/weblayer/test/SiteSettingsTest.java
@@ -29,6 +29,8 @@
 import org.junit.runner.RunWith;
 
 import org.chromium.base.test.util.DisabledTest;
+import org.chromium.weblayer.SettingsTestUtils;
+import org.chromium.weblayer.SiteSettingsActivity;
 
 /**
  * Tests the behavior of the Site Settings UI.
@@ -41,13 +43,15 @@
     private static final String PROFILE_NAME = "DefaultProfile";
 
     @Rule
-    public SiteSettingsActivityTestRule mSiteSettingsTestRule = new SiteSettingsActivityTestRule();
+    public SettingsActivityTestRule mSettingsTestRule = new SettingsActivityTestRule();
 
     @Test
     @SmallTest
     @MinWebLayerVersion(84)
     public void testSiteSettingsLaunches() throws InterruptedException {
-        mSiteSettingsTestRule.launchCategoryListWithProfile(PROFILE_NAME);
+        mSettingsTestRule.launchActivity(
+                SiteSettingsActivity.createIntentForSiteSettingsCategoryList(
+                        mSettingsTestRule.getContext(), PROFILE_NAME, /*isIncognito=*/false));
 
         onView(withText("All sites")).check(matches(isDisplayed()));
     }
@@ -56,7 +60,9 @@
     @SmallTest
     @MinWebLayerVersion(84)
     public void testAllSitesLaunches() throws InterruptedException {
-        mSiteSettingsTestRule.launchCategoryListWithProfile(PROFILE_NAME);
+        mSettingsTestRule.launchActivity(
+                SiteSettingsActivity.createIntentForSiteSettingsCategoryList(
+                        mSettingsTestRule.getContext(), PROFILE_NAME, /*isIncognito=*/false));
 
         onView(withText("All sites")).perform(click());
 
@@ -68,7 +74,9 @@
     @SmallTest
     @MinWebLayerVersion(84)
     public void testJavascriptExceptionPopupLaunches() throws InterruptedException {
-        mSiteSettingsTestRule.launchCategoryListWithProfile(PROFILE_NAME);
+        mSettingsTestRule.launchActivity(
+                SiteSettingsActivity.createIntentForSiteSettingsCategoryList(
+                        mSettingsTestRule.getContext(), PROFILE_NAME, /*isIncognito=*/false));
 
         onView(withText("JavaScript")).perform(click());
         onView(withText("Add site exception")).perform(click());
@@ -81,7 +89,8 @@
     @MinWebLayerVersion(84)
     @DisabledTest(message = "TODO(crbug.com/1150676): Fix flakiness.")
     public void testSingleSiteSoundPopupLaunches() throws InterruptedException {
-        mSiteSettingsTestRule.launchSingleSiteSettingsWithProfile(PROFILE_NAME, GOOGLE_URL);
+        mSettingsTestRule.launchActivity(SettingsTestUtils.createIntentForSiteSettingsSingleWebsite(
+                mSettingsTestRule.getContext(), PROFILE_NAME, /*isIncognito=*/false, GOOGLE_URL));
 
         onView(withText("Sound")).perform(click());
 
@@ -93,7 +102,8 @@
     @MinWebLayerVersion(84)
     @DisabledTest(message = "TODO(crbug.com/1150676): Fix flakiness.")
     public void testSingleSiteClearPopupLaunches() throws InterruptedException {
-        mSiteSettingsTestRule.launchSingleSiteSettingsWithProfile(PROFILE_NAME, GOOGLE_URL);
+        mSettingsTestRule.launchActivity(SettingsTestUtils.createIntentForSiteSettingsSingleWebsite(
+                mSettingsTestRule.getContext(), PROFILE_NAME, /*isIncognito=*/false, GOOGLE_URL));
 
         onView(withText("Clear & reset")).perform(click());
 
@@ -108,9 +118,12 @@
     public void testSingleSiteLocationAccess() throws InterruptedException {
         try {
             Intents.init();
-            mSiteSettingsTestRule.launchSingleSiteSettingsWithProfile(PROFILE_NAME, GOOGLE_URL);
+            mSettingsTestRule.launchActivity(
+                    SettingsTestUtils.createIntentForSiteSettingsSingleWebsite(
+                            mSettingsTestRule.getContext(), PROFILE_NAME, /*isIncognito=*/false,
+                            GOOGLE_URL));
 
-            onView(withText("Location access")).perform(click());
+            onView(withText("Location")).perform(click());
 
             Matcher<Intent> settingsMatcher =
                     IntentMatchers.hasAction(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
diff --git a/weblayer/browser/java/BUILD.gn b/weblayer/browser/java/BUILD.gn
index b8e53cff..630358e 100644
--- a/weblayer/browser/java/BUILD.gn
+++ b/weblayer/browser/java/BUILD.gn
@@ -25,7 +25,7 @@
     "res/drawable-xxhdpi/amp_icon.png",
     "res/drawable-xxxhdpi/amp_icon.png",
     "res/drawable/weblayer_tab_indicator.xml",
-    "res/layout/site_settings_layout.xml",
+    "res/layout/settings_layout.xml",
     "res/layout/weblayer_infobar_translate_compact_content.xml",
     "res/layout/weblayer_url_bar.xml",
     "res/values/colors.xml",
@@ -143,7 +143,6 @@
     "org/chromium/weblayer_private/ProfileImpl.java",
     "org/chromium/weblayer_private/ProfileManager.java",
     "org/chromium/weblayer_private/RemoteFragmentImpl.java",
-    "org/chromium/weblayer_private/SiteSettingsFragmentImpl.java",
     "org/chromium/weblayer_private/TabCallbackProxy.java",
     "org/chromium/weblayer_private/TabImpl.java",
     "org/chromium/weblayer_private/TranslateCompactInfoBar.java",
@@ -155,7 +154,6 @@
     "org/chromium/weblayer_private/WebLayerImpl.java",
     "org/chromium/weblayer_private/WebLayerNotificationChannels.java",
     "org/chromium/weblayer_private/WebLayerNotificationWrapperBuilder.java",
-    "org/chromium/weblayer_private/WebLayerSiteSettingsClient.java",
     "org/chromium/weblayer_private/WebLayerTabModalPresenter.java",
     "org/chromium/weblayer_private/WebMessageReplyProxyImpl.java",
     "org/chromium/weblayer_private/WebShareServiceFactory.java",
@@ -170,6 +168,8 @@
     "org/chromium/weblayer_private/payments/WebLayerPaymentRequestService.java",
     "org/chromium/weblayer_private/permissions/PermissionRequestUtils.java",
     "org/chromium/weblayer_private/resources/ResourceMapper.java",
+    "org/chromium/weblayer_private/settings/SettingsFragmentImpl.java",
+    "org/chromium/weblayer_private/settings/WebLayerSiteSettingsClient.java",
     _bundle_utils_output,
   ]
   resources_package = "org.chromium.weblayer_private"
@@ -396,8 +396,8 @@
     "org/chromium/weblayer_private/interfaces/RemoteMediaServiceConstants.java",
     "org/chromium/weblayer_private/interfaces/ScrollNotificationType.java",
     "org/chromium/weblayer_private/interfaces/SettingType.java",
-    "org/chromium/weblayer_private/interfaces/SiteSettingsFragmentArgs.java",
-    "org/chromium/weblayer_private/interfaces/SiteSettingsIntentHelper.java",
+    "org/chromium/weblayer_private/interfaces/SettingsFragmentArgs.java",
+    "org/chromium/weblayer_private/interfaces/SettingsIntentHelper.java",
     "org/chromium/weblayer_private/interfaces/StrictModeWorkaround.java",
     "org/chromium/weblayer_private/interfaces/UrlBarOptionsKeys.java",
     "org/chromium/weblayer_private/interfaces/WebLayerVersionConstants.java",
@@ -466,6 +466,7 @@
     "org/chromium/weblayer_private/interfaces/IProfileClient.aidl",
     "org/chromium/weblayer_private/interfaces/IRemoteFragment.aidl",
     "org/chromium/weblayer_private/interfaces/IRemoteFragmentClient.aidl",
+    "org/chromium/weblayer_private/interfaces/ISettingsFragment.aidl",
     "org/chromium/weblayer_private/interfaces/ISiteSettingsFragment.aidl",
     "org/chromium/weblayer_private/interfaces/ITab.aidl",
     "org/chromium/weblayer_private/interfaces/ITabClient.aidl",
diff --git a/weblayer/browser/java/org/chromium/weblayer_private/PageInfoControllerDelegateImpl.java b/weblayer/browser/java/org/chromium/weblayer_private/PageInfoControllerDelegateImpl.java
index 0bd9d7b..dee7905 100644
--- a/weblayer/browser/java/org/chromium/weblayer_private/PageInfoControllerDelegateImpl.java
+++ b/weblayer/browser/java/org/chromium/weblayer_private/PageInfoControllerDelegateImpl.java
@@ -30,7 +30,8 @@
 import org.chromium.ui.modaldialog.ModalDialogManager;
 import org.chromium.url.GURL;
 import org.chromium.weblayer_private.interfaces.ObjectWrapper;
-import org.chromium.weblayer_private.interfaces.SiteSettingsIntentHelper;
+import org.chromium.weblayer_private.interfaces.SettingsIntentHelper;
+import org.chromium.weblayer_private.settings.WebLayerSiteSettingsClient;
 
 /**
  * WebLayer's customization of PageInfoControllerDelegate.
@@ -65,7 +66,7 @@
      */
     @Override
     public void showSiteSettings(String url) {
-        Intent intent = SiteSettingsIntentHelper.createIntentForSingleWebsite(
+        Intent intent = SettingsIntentHelper.createIntentForSiteSettingsSingleWebsite(
                 mContext, mProfile.getName(), mProfile.isIncognito(), url);
 
         // Disabling StrictMode to avoid violations (https://crbug.com/819410).
@@ -77,7 +78,7 @@
         String category = SiteSettingsCategory.preferenceKey(SiteSettingsCategory.Type.COOKIES);
         String title = mContext.getResources().getString(
                 ContentSettingsResources.getTitle(ContentSettingsType.COOKIES));
-        Intent intent = SiteSettingsIntentHelper.createIntentForSingleCategory(
+        Intent intent = SettingsIntentHelper.createIntentForSiteSettingsSingleCategory(
                 mContext, mProfile.getName(), mProfile.isIncognito(), category, title);
         launchIntent(intent);
     }
diff --git a/weblayer/browser/java/org/chromium/weblayer_private/WebLayerImpl.java b/weblayer/browser/java/org/chromium/weblayer_private/WebLayerImpl.java
index 6ebb368..37300348 100644
--- a/weblayer/browser/java/org/chromium/weblayer_private/WebLayerImpl.java
+++ b/weblayer/browser/java/org/chromium/weblayer_private/WebLayerImpl.java
@@ -72,6 +72,7 @@
 import org.chromium.weblayer_private.interfaces.IObjectWrapper;
 import org.chromium.weblayer_private.interfaces.IProfile;
 import org.chromium.weblayer_private.interfaces.IRemoteFragmentClient;
+import org.chromium.weblayer_private.interfaces.ISettingsFragment;
 import org.chromium.weblayer_private.interfaces.ISiteSettingsFragment;
 import org.chromium.weblayer_private.interfaces.IWebLayer;
 import org.chromium.weblayer_private.interfaces.IWebLayerClient;
@@ -83,6 +84,7 @@
 import org.chromium.weblayer_private.media.MediaStreamManager;
 import org.chromium.weblayer_private.metrics.MetricsServiceClient;
 import org.chromium.weblayer_private.metrics.UmaUtils;
+import org.chromium.weblayer_private.settings.SettingsFragmentImpl;
 
 import java.io.File;
 import java.lang.reflect.Constructor;
@@ -331,13 +333,21 @@
     }
 
     @Override
+    public ISettingsFragment createSettingsFragmentImpl(
+            IRemoteFragmentClient remoteFragmentClient, IObjectWrapper fragmentArgs) {
+        StrictModeWorkaround.apply();
+        Bundle unwrappedArgs = ObjectWrapper.unwrap(fragmentArgs, Bundle.class);
+        return new SettingsFragmentImpl(mProfileManager, remoteFragmentClient, unwrappedArgs)
+                .asISettingsFragment();
+    }
+
+    @Override
     public ISiteSettingsFragment createSiteSettingsFragmentImpl(
             IRemoteFragmentClient remoteFragmentClient, IObjectWrapper fragmentArgs) {
         StrictModeWorkaround.apply();
         Bundle unwrappedArgs = ObjectWrapper.unwrap(fragmentArgs, Bundle.class);
-        SiteSettingsFragmentImpl fragment =
-                new SiteSettingsFragmentImpl(mProfileManager, remoteFragmentClient, unwrappedArgs);
-        return fragment.asISiteSettingsFragment();
+        return new SettingsFragmentImpl(mProfileManager, remoteFragmentClient, unwrappedArgs)
+                .asISiteSettingsFragment();
     }
 
     @Override
diff --git a/weblayer/browser/java/org/chromium/weblayer_private/interfaces/ISettingsFragment.aidl b/weblayer/browser/java/org/chromium/weblayer_private/interfaces/ISettingsFragment.aidl
new file mode 100644
index 0000000..c7ce2eb
--- /dev/null
+++ b/weblayer/browser/java/org/chromium/weblayer_private/interfaces/ISettingsFragment.aidl
@@ -0,0 +1,11 @@
+// Copyright 2020 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+package org.chromium.weblayer_private.interfaces;
+
+import org.chromium.weblayer_private.interfaces.IRemoteFragment;
+
+interface ISettingsFragment {
+  IRemoteFragment asRemoteFragment() = 0;
+}
diff --git a/weblayer/browser/java/org/chromium/weblayer_private/interfaces/IWebLayer.aidl b/weblayer/browser/java/org/chromium/weblayer_private/interfaces/IWebLayer.aidl
index d1bbc1d..908ac95 100644
--- a/weblayer/browser/java/org/chromium/weblayer_private/interfaces/IWebLayer.aidl
+++ b/weblayer/browser/java/org/chromium/weblayer_private/interfaces/IWebLayer.aidl
@@ -13,6 +13,7 @@
 import org.chromium.weblayer_private.interfaces.IProfile;
 import org.chromium.weblayer_private.interfaces.IRemoteFragmentClient;
 import org.chromium.weblayer_private.interfaces.IMediaRouteDialogFragment;
+import org.chromium.weblayer_private.interfaces.ISettingsFragment;
 import org.chromium.weblayer_private.interfaces.ISiteSettingsFragment;
 import org.chromium.weblayer_private.interfaces.IWebLayerClient;
 
@@ -110,6 +111,17 @@
   void onRemoteMediaServiceStarted(in IObjectWrapper sessionService, in Intent intent) = 22;
   void onRemoteMediaServiceDestroyed(int id) = 23;
 
+  // Creates the WebLayer counterpart to a SettingsFragment - a SettingsFragmentImpl
+  //
+  // @param fragmentClient Representative of the Fragment on the client side through which
+  // WebLayer can call methods on Fragment.
+  // @param fragmentArgs Bundle of arguments with which the Fragment was created on the client side
+  // (see Fragment#setArguments).
+  // Added in Version 89.
+  ISettingsFragment createSettingsFragmentImpl(
+      in IRemoteFragmentClient remoteFragmentClient,
+      in IObjectWrapper fragmentArgs) = 25;
+
   // WARNING: when choosing next value make sure you look back for the max, as
   // merges may mean the last function does not have the max value.
 }
diff --git a/weblayer/browser/java/org/chromium/weblayer_private/interfaces/SiteSettingsFragmentArgs.java b/weblayer/browser/java/org/chromium/weblayer_private/interfaces/SettingsFragmentArgs.java
similarity index 82%
rename from weblayer/browser/java/org/chromium/weblayer_private/interfaces/SiteSettingsFragmentArgs.java
rename to weblayer/browser/java/org/chromium/weblayer_private/interfaces/SettingsFragmentArgs.java
index 8ac562d..8983a931 100644
--- a/weblayer/browser/java/org/chromium/weblayer_private/interfaces/SiteSettingsFragmentArgs.java
+++ b/weblayer/browser/java/org/chromium/weblayer_private/interfaces/SettingsFragmentArgs.java
@@ -4,9 +4,9 @@
 
 package org.chromium.weblayer_private.interfaces;
 
-/** Keys for the Bundle of arguments with which SiteSettingsFragments are created. */
-public interface SiteSettingsFragmentArgs {
-    String ACTIVITY_CLASS_NAME = "org.chromium.weblayer.SiteSettingsActivity";
+/** Keys for the Bundle of arguments with which SettingsFragments are created. */
+public interface SettingsFragmentArgs {
+    String ACTIVITY_CLASS_NAME = "org.chromium.weblayer.SettingsActivity";
 
     // Argument names
     String PROFILE_NAME = "profile_name";
diff --git a/weblayer/browser/java/org/chromium/weblayer_private/interfaces/SettingsIntentHelper.java b/weblayer/browser/java/org/chromium/weblayer_private/interfaces/SettingsIntentHelper.java
new file mode 100644
index 0000000..08b384a3
--- /dev/null
+++ b/weblayer/browser/java/org/chromium/weblayer_private/interfaces/SettingsIntentHelper.java
@@ -0,0 +1,76 @@
+// Copyright 2020 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+package org.chromium.weblayer_private.interfaces;
+
+import android.content.Context;
+import android.content.Intent;
+import android.os.Bundle;
+
+/**
+ * A helper class for creating Intents to start Settings UI Fragments.
+ */
+public class SettingsIntentHelper {
+    private static Bundle createSettingsExtras(String profileName, boolean isIncognito) {
+        Bundle extras = new Bundle();
+        extras.putString(SettingsFragmentArgs.PROFILE_NAME, profileName);
+        extras.putBoolean(SettingsFragmentArgs.IS_INCOGNITO_PROFILE, isIncognito);
+        return extras;
+    }
+
+    /** Creates an Intent that launches the main category list UI. */
+    public static Intent createIntentForSiteSettingsCategoryList(
+            Context context, String profileName, boolean isIncognito) {
+        Bundle extras = createSettingsExtras(profileName, isIncognito);
+        extras.putString(SettingsFragmentArgs.FRAGMENT_NAME, SettingsFragmentArgs.CATEGORY_LIST);
+        return createIntentWithExtras(context, extras);
+    }
+
+    /** Creates an Intent that launches the settings UI for a single category. */
+    public static Intent createIntentForSiteSettingsSingleCategory(Context context,
+            String profileName, boolean isIncognito, String categoryType, String categoryTitle) {
+        Bundle extras = createSettingsExtras(profileName, isIncognito);
+        extras.putString(SettingsFragmentArgs.FRAGMENT_NAME, SettingsFragmentArgs.SINGLE_CATEGORY);
+
+        Bundle fragmentArgs = new Bundle();
+        fragmentArgs.putString(SettingsFragmentArgs.SINGLE_CATEGORY_TYPE, categoryType);
+        fragmentArgs.putString(SettingsFragmentArgs.SINGLE_CATEGORY_TITLE, categoryTitle);
+        extras.putBundle(SettingsFragmentArgs.FRAGMENT_ARGUMENTS, fragmentArgs);
+        return createIntentWithExtras(context, extras);
+    }
+
+    /** Creates an Intent that launches the single website settings UI. */
+    public static Intent createIntentForSiteSettingsSingleWebsite(
+            Context context, String profileName, boolean isIncognito, String url) {
+        Bundle extras = createSettingsExtras(profileName, isIncognito);
+        extras.putString(SettingsFragmentArgs.FRAGMENT_NAME, SettingsFragmentArgs.SINGLE_WEBSITE);
+
+        Bundle fragmentArgs = new Bundle();
+        fragmentArgs.putString(SettingsFragmentArgs.SINGLE_WEBSITE_URL, url);
+        extras.putBundle(SettingsFragmentArgs.FRAGMENT_ARGUMENTS, fragmentArgs);
+        return createIntentWithExtras(context, extras);
+    }
+
+    /** Creates an Intent that launches the all sites settings UI. */
+    public static Intent createIntentForSiteSettingsAllSites(
+            Context context, String profileName, boolean isIncognito, String type, String title) {
+        Bundle extras = createSettingsExtras(profileName, isIncognito);
+        extras.putString(SettingsFragmentArgs.FRAGMENT_NAME, SettingsFragmentArgs.ALL_SITES);
+
+        Bundle fragmentArgs = new Bundle();
+        fragmentArgs.putString(SettingsFragmentArgs.ALL_SITES_TITLE, title);
+        fragmentArgs.putString(SettingsFragmentArgs.ALL_SITES_TYPE, type);
+        extras.putBundle(SettingsFragmentArgs.FRAGMENT_ARGUMENTS, fragmentArgs);
+        return createIntentWithExtras(context, extras);
+    }
+
+    private static Intent createIntentWithExtras(Context context, Bundle extras) {
+        Intent intent = new Intent();
+        intent.setClassName(context, SettingsFragmentArgs.ACTIVITY_CLASS_NAME);
+        intent.putExtras(extras);
+        return intent;
+    }
+
+    private SettingsIntentHelper() {}
+}
diff --git a/weblayer/browser/java/org/chromium/weblayer_private/interfaces/SiteSettingsIntentHelper.java b/weblayer/browser/java/org/chromium/weblayer_private/interfaces/SiteSettingsIntentHelper.java
deleted file mode 100644
index 3dfbb1a..0000000
--- a/weblayer/browser/java/org/chromium/weblayer_private/interfaces/SiteSettingsIntentHelper.java
+++ /dev/null
@@ -1,80 +0,0 @@
-// Copyright 2020 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-package org.chromium.weblayer_private.interfaces;
-
-import android.content.Context;
-import android.content.Intent;
-import android.os.Bundle;
-
-/**
- * A helper class for creating Intents to start the Site Settings UI.
- */
-public class SiteSettingsIntentHelper {
-    private static Bundle createSiteSettingsExtras(String profileName, boolean isIncognito) {
-        Bundle extras = new Bundle();
-        extras.putString(SiteSettingsFragmentArgs.PROFILE_NAME, profileName);
-        extras.putBoolean(SiteSettingsFragmentArgs.IS_INCOGNITO_PROFILE, isIncognito);
-        return extras;
-    }
-
-    /** Creates an Intent that launches the main category list UI. */
-    public static Intent createIntentForCategoryList(
-            Context context, String profileName, boolean isIncognito) {
-        Bundle extras = createSiteSettingsExtras(profileName, isIncognito);
-        extras.putString(
-                SiteSettingsFragmentArgs.FRAGMENT_NAME, SiteSettingsFragmentArgs.CATEGORY_LIST);
-        return createIntentWithExtras(context, extras);
-    }
-
-    /** Creates an Intent that launches the settings UI for a single category. */
-    public static Intent createIntentForSingleCategory(Context context, String profileName,
-            boolean isIncognito, String categoryType, String categoryTitle) {
-        Bundle extras = createSiteSettingsExtras(profileName, isIncognito);
-        extras.putString(
-                SiteSettingsFragmentArgs.FRAGMENT_NAME, SiteSettingsFragmentArgs.SINGLE_CATEGORY);
-
-        Bundle fragmentArgs = new Bundle();
-        fragmentArgs.putString(SiteSettingsFragmentArgs.SINGLE_CATEGORY_TYPE, categoryType);
-        fragmentArgs.putString(SiteSettingsFragmentArgs.SINGLE_CATEGORY_TITLE, categoryTitle);
-        extras.putBundle(SiteSettingsFragmentArgs.FRAGMENT_ARGUMENTS, fragmentArgs);
-        return createIntentWithExtras(context, extras);
-    }
-
-    /** Creates an Intent that launches the single website settings UI. */
-    public static Intent createIntentForSingleWebsite(
-            Context context, String profileName, boolean isIncognito, String url) {
-        Bundle extras = createSiteSettingsExtras(profileName, isIncognito);
-        extras.putString(
-                SiteSettingsFragmentArgs.FRAGMENT_NAME, SiteSettingsFragmentArgs.SINGLE_WEBSITE);
-
-        Bundle fragmentArgs = new Bundle();
-        fragmentArgs.putString(SiteSettingsFragmentArgs.SINGLE_WEBSITE_URL, url);
-        extras.putBundle(SiteSettingsFragmentArgs.FRAGMENT_ARGUMENTS, fragmentArgs);
-        return createIntentWithExtras(context, extras);
-    }
-
-    /** Creates an Intent that launches the all sites settings UI. */
-    public static Intent createIntentForAllSites(
-            Context context, String profileName, boolean isIncognito, String type, String title) {
-        Bundle extras = createSiteSettingsExtras(profileName, isIncognito);
-        extras.putString(
-                SiteSettingsFragmentArgs.FRAGMENT_NAME, SiteSettingsFragmentArgs.ALL_SITES);
-
-        Bundle fragmentArgs = new Bundle();
-        fragmentArgs.putString(SiteSettingsFragmentArgs.ALL_SITES_TITLE, title);
-        fragmentArgs.putString(SiteSettingsFragmentArgs.ALL_SITES_TYPE, type);
-        extras.putBundle(SiteSettingsFragmentArgs.FRAGMENT_ARGUMENTS, fragmentArgs);
-        return createIntentWithExtras(context, extras);
-    }
-
-    private static Intent createIntentWithExtras(Context context, Bundle extras) {
-        Intent intent = new Intent();
-        intent.setClassName(context, SiteSettingsFragmentArgs.ACTIVITY_CLASS_NAME);
-        intent.putExtras(extras);
-        return intent;
-    }
-
-    private SiteSettingsIntentHelper() {}
-}
diff --git a/weblayer/browser/java/org/chromium/weblayer_private/SiteSettingsFragmentImpl.java b/weblayer/browser/java/org/chromium/weblayer_private/settings/SettingsFragmentImpl.java
similarity index 65%
rename from weblayer/browser/java/org/chromium/weblayer_private/SiteSettingsFragmentImpl.java
rename to weblayer/browser/java/org/chromium/weblayer_private/settings/SettingsFragmentImpl.java
index abf3b0e..c61dab1c0 100644
--- a/weblayer/browser/java/org/chromium/weblayer_private/SiteSettingsFragmentImpl.java
+++ b/weblayer/browser/java/org/chromium/weblayer_private/settings/SettingsFragmentImpl.java
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-package org.chromium.weblayer_private;
+package org.chromium.weblayer_private.settings;
 
 import android.content.Context;
 import android.content.Intent;
@@ -25,34 +25,39 @@
 import org.chromium.components.browser_ui.site_settings.Website;
 import org.chromium.components.browser_ui.site_settings.WebsiteAddress;
 import org.chromium.components.embedder_support.application.ClassLoaderContextWrapperFactory;
+import org.chromium.weblayer_private.FragmentHostingRemoteFragmentImpl;
+import org.chromium.weblayer_private.ProfileImpl;
+import org.chromium.weblayer_private.ProfileManager;
+import org.chromium.weblayer_private.R;
 import org.chromium.weblayer_private.interfaces.IRemoteFragment;
 import org.chromium.weblayer_private.interfaces.IRemoteFragmentClient;
+import org.chromium.weblayer_private.interfaces.ISettingsFragment;
 import org.chromium.weblayer_private.interfaces.ISiteSettingsFragment;
-import org.chromium.weblayer_private.interfaces.SiteSettingsFragmentArgs;
-import org.chromium.weblayer_private.interfaces.SiteSettingsIntentHelper;
+import org.chromium.weblayer_private.interfaces.SettingsFragmentArgs;
+import org.chromium.weblayer_private.interfaces.SettingsIntentHelper;
 import org.chromium.weblayer_private.interfaces.StrictModeWorkaround;
 
 /**
- * WebLayer's implementation of the client library's SiteSettingsFragment.
+ * WebLayer's implementation of the client library's SettingsFragment.
  *
  * This class creates an instance of the Fragment given in its FRAGMENT_NAME argument.
  */
-public class SiteSettingsFragmentImpl extends FragmentHostingRemoteFragmentImpl {
-    private static final String FRAGMENT_TAG = "site_settings_fragment";
+public class SettingsFragmentImpl extends FragmentHostingRemoteFragmentImpl {
+    private static final String FRAGMENT_TAG = "settings_fragment";
 
     private final ProfileImpl mProfile;
-    private final Class<? extends SiteSettingsPreferenceFragment> mFragmentClass;
+    private final Class<? extends PreferenceFragmentCompat> mFragmentClass;
     private final Bundle mFragmentArguments;
 
-    private static class SiteSettingsContext
+    private static class SettingsContext
             extends FragmentHostingRemoteFragmentImpl.RemoteFragmentContext
             implements PreferenceFragmentCompat.OnPreferenceStartFragmentCallback {
         private final Context mEmbedderContext;
-        private final SiteSettingsFragmentImpl mFragmentImpl;
+        private final SettingsFragmentImpl mFragmentImpl;
 
-        public SiteSettingsContext(SiteSettingsFragmentImpl fragmentImpl, Context embedderContext) {
+        public SettingsContext(SettingsFragmentImpl fragmentImpl, Context embedderContext) {
             super(new ContextThemeWrapper(ClassLoaderContextWrapperFactory.get(embedderContext),
-                    R.style.Theme_WebLayer_SiteSettings));
+                    R.style.Theme_WebLayer_Settings));
             mEmbedderContext = embedderContext;
             mFragmentImpl = fragmentImpl;
         }
@@ -60,7 +65,7 @@
         @Override
         public boolean onPreferenceStartFragment(
                 PreferenceFragmentCompat caller, Preference preference) {
-            // WebLayer's SiteSettingsActivity structures its arguments differently than the
+            // WebLayer's SettingsActivity structures its arguments differently than the
             // implementation Fragments do. This is to avoid hardcoding implementation class names
             // in //components in the API, and because the Fragments in //components rely on
             // passing serialized Objects to each other, which aren't passable to the embedder
@@ -72,15 +77,15 @@
             Bundle newFragmentArgs = preference.getExtras();
             ProfileImpl profile = mFragmentImpl.getProfile();
             if (newFragmentClassName.equals(SiteSettings.class.getName())) {
-                intent = SiteSettingsIntentHelper.createIntentForCategoryList(
+                intent = SettingsIntentHelper.createIntentForSiteSettingsCategoryList(
                         mEmbedderContext, profile.getName(), profile.isIncognito());
             } else if (newFragmentClassName.equals(SingleCategorySettings.class.getName())) {
-                intent = SiteSettingsIntentHelper.createIntentForSingleCategory(mEmbedderContext,
-                        profile.getName(), profile.isIncognito(),
+                intent = SettingsIntentHelper.createIntentForSiteSettingsSingleCategory(
+                        mEmbedderContext, profile.getName(), profile.isIncognito(),
                         newFragmentArgs.getString(SingleCategorySettings.EXTRA_CATEGORY),
                         newFragmentArgs.getString(SingleCategorySettings.EXTRA_TITLE));
             } else if (newFragmentClassName.equals(AllSiteSettings.class.getName())) {
-                intent = SiteSettingsIntentHelper.createIntentForAllSites(mEmbedderContext,
+                intent = SettingsIntentHelper.createIntentForSiteSettingsAllSites(mEmbedderContext,
                         profile.getName(), profile.isIncognito(),
                         newFragmentArgs.getString(AllSiteSettings.EXTRA_CATEGORY),
                         newFragmentArgs.getString(AllSiteSettings.EXTRA_TITLE));
@@ -96,8 +101,9 @@
                 } else {
                     throw new IllegalArgumentException("No website provided");
                 }
-                intent = SiteSettingsIntentHelper.createIntentForSingleWebsite(mEmbedderContext,
-                        profile.getName(), profile.isIncognito(), address.getOrigin());
+                intent = SettingsIntentHelper.createIntentForSiteSettingsSingleWebsite(
+                        mEmbedderContext, profile.getName(), profile.isIncognito(),
+                        address.getOrigin());
             } else {
                 throw new IllegalArgumentException("Unsupported Fragment: " + newFragmentClassName);
             }
@@ -106,47 +112,42 @@
         }
     }
 
-    public SiteSettingsFragmentImpl(ProfileManager profileManager,
+    public SettingsFragmentImpl(ProfileManager profileManager,
             IRemoteFragmentClient remoteFragmentClient, Bundle intentExtras) {
         super(remoteFragmentClient);
-        String profileName = intentExtras.getString(SiteSettingsFragmentArgs.PROFILE_NAME);
-        boolean isIncognito;
-        if (intentExtras.containsKey(SiteSettingsFragmentArgs.IS_INCOGNITO_PROFILE)) {
-            isIncognito =
-                    intentExtras.getBoolean(SiteSettingsFragmentArgs.IS_INCOGNITO_PROFILE, false);
-        } else {
-            isIncognito = "".equals(profileName);
-        }
+        String profileName = intentExtras.getString(SettingsFragmentArgs.PROFILE_NAME);
+        boolean isIncognito = intentExtras.getBoolean(
+                SettingsFragmentArgs.IS_INCOGNITO_PROFILE, /*defaultValue=*/profileName.equals(""));
         mProfile = profileManager.getProfile(profileName, isIncognito);
 
         // Convert the WebLayer ABI's Site Settings arguments into the format the Site Settings
         // implementation fragments expect.
-        Bundle fragmentArgs = intentExtras.getBundle(SiteSettingsFragmentArgs.FRAGMENT_ARGUMENTS);
-        switch (intentExtras.getString(SiteSettingsFragmentArgs.FRAGMENT_NAME)) {
-            case SiteSettingsFragmentArgs.ALL_SITES:
+        Bundle fragmentArgs = intentExtras.getBundle(SettingsFragmentArgs.FRAGMENT_ARGUMENTS);
+        switch (intentExtras.getString(SettingsFragmentArgs.FRAGMENT_NAME)) {
+            case SettingsFragmentArgs.ALL_SITES:
                 mFragmentClass = AllSiteSettings.class;
                 mFragmentArguments = new Bundle();
                 mFragmentArguments.putString(AllSiteSettings.EXTRA_TITLE,
-                        fragmentArgs.getString(SiteSettingsFragmentArgs.ALL_SITES_TITLE));
+                        fragmentArgs.getString(SettingsFragmentArgs.ALL_SITES_TITLE));
                 mFragmentArguments.putString(AllSiteSettings.EXTRA_CATEGORY,
-                        fragmentArgs.getString(SiteSettingsFragmentArgs.ALL_SITES_TYPE));
+                        fragmentArgs.getString(SettingsFragmentArgs.ALL_SITES_TYPE));
                 break;
-            case SiteSettingsFragmentArgs.CATEGORY_LIST:
+            case SettingsFragmentArgs.CATEGORY_LIST:
                 mFragmentClass = SiteSettings.class;
                 mFragmentArguments = null;
                 break;
-            case SiteSettingsFragmentArgs.SINGLE_CATEGORY:
+            case SettingsFragmentArgs.SINGLE_CATEGORY:
                 mFragmentClass = SingleCategorySettings.class;
                 mFragmentArguments = new Bundle();
                 mFragmentArguments.putString(SingleCategorySettings.EXTRA_TITLE,
-                        fragmentArgs.getString(SiteSettingsFragmentArgs.SINGLE_CATEGORY_TITLE));
+                        fragmentArgs.getString(SettingsFragmentArgs.SINGLE_CATEGORY_TITLE));
                 mFragmentArguments.putString(SingleCategorySettings.EXTRA_CATEGORY,
-                        fragmentArgs.getString(SiteSettingsFragmentArgs.SINGLE_CATEGORY_TYPE));
+                        fragmentArgs.getString(SettingsFragmentArgs.SINGLE_CATEGORY_TYPE));
                 break;
-            case SiteSettingsFragmentArgs.SINGLE_WEBSITE:
+            case SettingsFragmentArgs.SINGLE_WEBSITE:
                 mFragmentClass = SingleWebsiteSettings.class;
                 mFragmentArguments = SingleWebsiteSettings.createFragmentArgsForSite(
-                        fragmentArgs.getString(SiteSettingsFragmentArgs.SINGLE_WEBSITE_URL));
+                        fragmentArgs.getString(SettingsFragmentArgs.SINGLE_WEBSITE_URL));
                 break;
             default:
                 throw new IllegalArgumentException("Unknown Site Settings Fragment");
@@ -156,37 +157,38 @@
     @Override
     protected FragmentHostingRemoteFragmentImpl.RemoteFragmentContext createRemoteFragmentContext(
             Context embedderContext) {
-        return new SiteSettingsContext(this, embedderContext);
+        return new SettingsContext(this, embedderContext);
     }
 
     @Override
     public View onCreateView(ViewGroup container, Bundle savedInstanceState) {
         LayoutInflater inflater = (LayoutInflater) getWebLayerContext().getSystemService(
                 Context.LAYOUT_INFLATER_SERVICE);
-        View root =
-                inflater.inflate(R.layout.site_settings_layout, container, /*attachToRoot=*/false);
         if (getSupportFragmentManager().findFragmentByTag(FRAGMENT_TAG) == null) {
             try {
-                SiteSettingsPreferenceFragment siteSettingsFragment = mFragmentClass.newInstance();
-                siteSettingsFragment.setArguments(mFragmentArguments);
-                siteSettingsFragment.setSiteSettingsClient(
-                        new WebLayerSiteSettingsClient(mProfile));
+                PreferenceFragmentCompat settingsFragment = mFragmentClass.newInstance();
+                settingsFragment.setArguments(mFragmentArguments);
+                if (settingsFragment instanceof SiteSettingsPreferenceFragment) {
+                    ((SiteSettingsPreferenceFragment) settingsFragment)
+                            .setSiteSettingsClient(new WebLayerSiteSettingsClient(mProfile));
+                }
                 getSupportFragmentManager()
                         .beginTransaction()
-                        .add(R.id.site_settings_container, siteSettingsFragment, FRAGMENT_TAG)
+                        .add(R.id.settings_container, settingsFragment, FRAGMENT_TAG)
                         .commitNow();
             } catch (IllegalAccessException | InstantiationException e) {
-                throw new RuntimeException("Failed to create Site Settings Fragment", e);
+                throw new RuntimeException("Failed to create Settings Fragment", e);
             }
         }
 
+        View root = inflater.inflate(R.layout.settings_layout, container, /*attachToRoot=*/false);
         root.addOnAttachStateChangeListener(new OnAttachStateChangeListener() {
             @Override
             public void onViewAttachedToWindow(View view) {
                 // Add the shadow scroll listener here once the View is attached to the Window.
-                SiteSettingsPreferenceFragment preferenceFragment =
-                        (SiteSettingsPreferenceFragment) getSupportFragmentManager()
-                                .findFragmentByTag(FRAGMENT_TAG);
+                PreferenceFragmentCompat preferenceFragment =
+                        (PreferenceFragmentCompat) getSupportFragmentManager().findFragmentByTag(
+                                FRAGMENT_TAG);
                 ViewGroup listView = preferenceFragment.getListView();
                 listView.getViewTreeObserver().addOnScrollChangedListener(
                         SettingsUtils.getShowShadowOnScrollListener(
@@ -199,12 +201,22 @@
         return root;
     }
 
+    public ISettingsFragment asISettingsFragment() {
+        return new ISettingsFragment.Stub() {
+            @Override
+            public IRemoteFragment asRemoteFragment() {
+                StrictModeWorkaround.apply();
+                return SettingsFragmentImpl.this;
+            }
+        };
+    }
+
     public ISiteSettingsFragment asISiteSettingsFragment() {
         return new ISiteSettingsFragment.Stub() {
             @Override
             public IRemoteFragment asRemoteFragment() {
                 StrictModeWorkaround.apply();
-                return SiteSettingsFragmentImpl.this;
+                return SettingsFragmentImpl.this;
             }
         };
     }
diff --git a/weblayer/browser/java/org/chromium/weblayer_private/WebLayerSiteSettingsClient.java b/weblayer/browser/java/org/chromium/weblayer_private/settings/WebLayerSiteSettingsClient.java
similarity index 97%
rename from weblayer/browser/java/org/chromium/weblayer_private/WebLayerSiteSettingsClient.java
rename to weblayer/browser/java/org/chromium/weblayer_private/settings/WebLayerSiteSettingsClient.java
index 4b9e69e..4dd1a2f 100644
--- a/weblayer/browser/java/org/chromium/weblayer_private/WebLayerSiteSettingsClient.java
+++ b/weblayer/browser/java/org/chromium/weblayer_private/settings/WebLayerSiteSettingsClient.java
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-package org.chromium.weblayer_private;
+package org.chromium.weblayer_private.settings;
 
 import android.app.Activity;
 import android.graphics.Bitmap;
@@ -21,6 +21,7 @@
 import org.chromium.components.embedder_support.browser_context.BrowserContextHandle;
 import org.chromium.components.embedder_support.util.Origin;
 import org.chromium.components.page_info.PageInfoFeatureList;
+import org.chromium.weblayer_private.WebLayerImpl;
 
 import java.util.Collections;
 import java.util.Set;
diff --git a/weblayer/browser/java/res/layout/site_settings_layout.xml b/weblayer/browser/java/res/layout/settings_layout.xml
similarity index 92%
rename from weblayer/browser/java/res/layout/site_settings_layout.xml
rename to weblayer/browser/java/res/layout/settings_layout.xml
index c9cf58e7..9a2cf45 100644
--- a/weblayer/browser/java/res/layout/site_settings_layout.xml
+++ b/weblayer/browser/java/res/layout/settings_layout.xml
@@ -10,7 +10,7 @@
   <FrameLayout
       android:layout_width="match_parent"
       android:layout_height="match_parent"
-      android:id="@+id/site_settings_container">
+      android:id="@+id/settings_container">
   </FrameLayout>
   <include layout="@layout/settings_action_bar_shadow" />
 </RelativeLayout>
diff --git a/weblayer/browser/java/res/values/styles.xml b/weblayer/browser/java/res/values/styles.xml
index f2bed0b1..ff28dd6 100644
--- a/weblayer/browser/java/res/values/styles.xml
+++ b/weblayer/browser/java/res/values/styles.xml
@@ -4,7 +4,7 @@
      found in the LICENSE file. -->
 
 <resources xmlns:tools="http://schemas.android.com/tools">
-    <style name="Theme.WebLayer.SiteSettings" parent="Theme.BrowserUI">
+    <style name="Theme.WebLayer.Settings" parent="Theme.BrowserUI">
         <item name="preferenceTheme">@style/PreferenceTheme</item>
         <item name="alertDialogTheme">@style/Theme.Chromium.AlertDialog</item>
 
diff --git a/weblayer/public/java/AndroidManifest.xml b/weblayer/public/java/AndroidManifest.xml
index 6b1ccc4c..a55e9a4 100644
--- a/weblayer/public/java/AndroidManifest.xml
+++ b/weblayer/public/java/AndroidManifest.xml
@@ -56,8 +56,13 @@
                 android:resource="@xml/weblayer_file_paths" />
         </provider>
 
+        <activity android:name="org.chromium.weblayer.SettingsActivity"
+            android:theme="@style/Theme.WebLayer.Settings"
+            android:exported="false">
+        </activity>
+
         <activity android:name="org.chromium.weblayer.SiteSettingsActivity"
-            android:theme="@style/Theme.WebLayer.SiteSettings"
+            android:theme="@style/Theme.WebLayer.Settings"
             android:exported="false">
         </activity>
 
diff --git a/weblayer/public/java/BUILD.gn b/weblayer/public/java/BUILD.gn
index 47c7e09..5dc562b 100644
--- a/weblayer/public/java/BUILD.gn
+++ b/weblayer/public/java/BUILD.gn
@@ -88,8 +88,9 @@
     "org/chromium/weblayer/ScrollNotificationType.java",
     "org/chromium/weblayer/ScrollOffsetCallback.java",
     "org/chromium/weblayer/SettingType.java",
+    "org/chromium/weblayer/SettingsActivity.java",
+    "org/chromium/weblayer/SettingsFragment.java",
     "org/chromium/weblayer/SiteSettingsActivity.java",
-    "org/chromium/weblayer/SiteSettingsFragment.java",
     "org/chromium/weblayer/Tab.java",
     "org/chromium/weblayer/TabCallback.java",
     "org/chromium/weblayer/TabListCallback.java",
diff --git a/weblayer/public/java/org/chromium/weblayer/SettingsActivity.java b/weblayer/public/java/org/chromium/weblayer/SettingsActivity.java
new file mode 100644
index 0000000..999ccf7
--- /dev/null
+++ b/weblayer/public/java/org/chromium/weblayer/SettingsActivity.java
@@ -0,0 +1,160 @@
+// Copyright 2020 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+package org.chromium.weblayer;
+
+import android.content.Context;
+import android.content.Intent;
+import android.content.pm.ActivityInfo;
+import android.content.pm.PackageManager.NameNotFoundException;
+import android.os.Bundle;
+import android.view.MenuItem;
+
+import androidx.appcompat.app.AppCompatActivity;
+
+import org.chromium.weblayer_private.interfaces.SettingsIntentHelper;
+
+/**
+ * An Activity that displays a Settings UI for WebLayer.
+ *
+ * This class is an implementation detail. To start an instance of this Activity, use one of the
+ * SettingsActivity#createIntentFor* methods.
+ *
+ * @since 89
+ */
+public class SettingsActivity extends AppCompatActivity {
+    private static final String FRAGMENT_TAG = "settingsFragment";
+
+    /**
+     * Tracks whether we've checked that this Activity isn't exported.
+     *
+     * @see SettingsActivity#ensureActivityNotExported()
+     */
+    private static boolean sActivityNotExportedChecked;
+
+    /** The current instance of SettingsActivity in the resumed state, if any. */
+    private static SettingsActivity sResumedInstance;
+
+    /** Whether this activity has been created for the first time but not yet resumed. */
+    private boolean mIsNewlyCreated;
+
+    /**
+     * Creates an Intent that will launch the root/full Site Settings UI, which displays a list of
+     * settings categories.
+     *
+     * @param profileName The name of the profile.
+     *
+     * @since 89
+     */
+    public static Intent createIntentForSiteSettingsCategoryList(
+            Context context, String profileName) {
+        return SettingsIntentHelper.createIntentForSiteSettingsCategoryList(
+                context, profileName, "".equals(profileName));
+    }
+
+    /**
+     * Creates an Intent that will launch the root/full Site Settings UI, which displays a list of
+     * settings categories.
+     *
+     * @param profileName The name of the profile.
+     * @param isIncognito If the profile is incognito.
+     *
+     * @since 89
+     */
+    public static Intent createIntentForSiteSettingsCategoryList(
+            Context context, String profileName, boolean isIncognito) {
+        return SettingsIntentHelper.createIntentForSiteSettingsCategoryList(
+                context, profileName, isIncognito);
+    }
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        ensureActivityNotExported();
+
+        super.onCreate(savedInstanceState);
+
+        mIsNewlyCreated = savedInstanceState == null;
+
+        getSupportActionBar().setDisplayHomeAsUpEnabled(true);
+        getSupportActionBar().setElevation(0);
+
+        if (getSupportFragmentManager().findFragmentByTag(FRAGMENT_TAG) == null) {
+            SettingsFragment settingsFragment = new SettingsFragment();
+            settingsFragment.setArguments(getIntent().getExtras());
+            getSupportFragmentManager()
+                    .beginTransaction()
+                    .add(android.R.id.content, settingsFragment, FRAGMENT_TAG)
+                    .commitNow();
+        }
+    }
+
+    @Override
+    protected void onResume() {
+        super.onResume();
+
+        // Prevent the user from interacting with multiple instances of SettingsActivity at the
+        // same time (e.g. in multi-instance mode on a Samsung device), which would cause many fun
+        // bugs.
+        if (sResumedInstance != null && sResumedInstance.getTaskId() != getTaskId()) {
+            if (mIsNewlyCreated) {
+                // This activity was newly created and takes precedence over sResumedInstance.
+                sResumedInstance.finish();
+            } else {
+                // This activity was unpaused or recreated while another instance of
+                // SettingsActivity was already showing. The existing instance takes precedence.
+                finish();
+                return;
+            }
+        }
+        sResumedInstance = this;
+        mIsNewlyCreated = false;
+    }
+
+    @Override
+    protected void onStop() {
+        super.onStop();
+        if (sResumedInstance == this) {
+            sResumedInstance = null;
+        }
+    }
+
+    @Override
+    public boolean onOptionsItemSelected(MenuItem item) {
+        if (item.getItemId() == android.R.id.home) {
+            finish();
+            return true;
+        }
+        return super.onOptionsItemSelected(item);
+    }
+
+    /**
+     * Records that the Activity export check has occurred, and returns whether this method has been
+     * previously called or not.
+     *
+     * This method is overridden by subclasses to allow them to save their own static state, but
+     * should be removed and inlined into ensureActivityNotExported() once SiteSettingsActivity is
+     * removed (it was deprecated in M89).
+     */
+    protected boolean markActivityExportChecked() {
+        boolean oldValue = sActivityNotExportedChecked;
+        sActivityNotExportedChecked = true;
+        return oldValue;
+    }
+
+    private void ensureActivityNotExported() {
+        if (markActivityExportChecked()) return;
+        try {
+            ActivityInfo activityInfo = getPackageManager().getActivityInfo(getComponentName(), 0);
+            // If SettingsActivity is exported, then it's vulnerable to a fragment injection
+            // exploit:
+            // http://securityintelligence.com/new-vulnerability-android-framework-fragment-injection
+            if (activityInfo.exported) {
+                throw new IllegalStateException("SettingsActivity must not be exported.");
+            }
+        } catch (NameNotFoundException ex) {
+            // Something terribly wrong has happened.
+            throw new RuntimeException(ex);
+        }
+    }
+}
diff --git a/weblayer/public/java/org/chromium/weblayer/SettingsFragment.java b/weblayer/public/java/org/chromium/weblayer/SettingsFragment.java
new file mode 100644
index 0000000..ea92302
--- /dev/null
+++ b/weblayer/public/java/org/chromium/weblayer/SettingsFragment.java
@@ -0,0 +1,46 @@
+// Copyright 2020 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+package org.chromium.weblayer;
+
+import android.content.Context;
+import android.os.Bundle;
+
+import org.chromium.weblayer_private.interfaces.IRemoteFragment;
+
+/**
+ * The client-side implementation of a SettingsFragment.
+ *
+ * This is a Fragment that can be shown within an embedder's UI, and proxies its lifecycle events to
+ * a SettingsFragmentImpl object on the implementation side. This class is an implementation detail
+ * and should not be used by an embedder directly.
+ *
+ * @since 89
+ */
+public class SettingsFragment extends RemoteFragment {
+    public SettingsFragment() {
+        super();
+    }
+
+    @Override
+    protected IRemoteFragment createRemoteFragment(Context appContext) {
+        try {
+            Bundle args = getArguments();
+            if (args == null) {
+                throw new RuntimeException("SettingsFragment was created without arguments.");
+            }
+            // TODO(crbug.com/1106393): This can be removed once M88 is no longer supported.
+            if (WebLayer.getSupportedMajorVersionInternal() < 89) {
+                return WebLayer.loadSync(appContext)
+                        .connectSiteSettingsFragment(getRemoteFragmentClient(), args)
+                        .asRemoteFragment();
+            }
+            return WebLayer.loadSync(appContext)
+                    .connectSettingsFragment(getRemoteFragmentClient(), args)
+                    .asRemoteFragment();
+        } catch (Exception e) {
+            throw new RuntimeException("Failed to initialize WebLayer", e);
+        }
+    }
+}
diff --git a/weblayer/public/java/org/chromium/weblayer/SiteSettingsActivity.java b/weblayer/public/java/org/chromium/weblayer/SiteSettingsActivity.java
index 475354cf..bc78613 100644
--- a/weblayer/public/java/org/chromium/weblayer/SiteSettingsActivity.java
+++ b/weblayer/public/java/org/chromium/weblayer/SiteSettingsActivity.java
@@ -6,127 +6,37 @@
 
 import android.content.Context;
 import android.content.Intent;
-import android.content.pm.ActivityInfo;
-import android.content.pm.PackageManager.NameNotFoundException;
-import android.os.Bundle;
-import android.view.MenuItem;
-
-import androidx.appcompat.app.AppCompatActivity;
-
-import org.chromium.weblayer_private.interfaces.SiteSettingsIntentHelper;
 
 /**
  * An Activity that displays various Site Settings UIs.
+ *
+ * @deprecated Use SettingsActivity instead
  */
-public class SiteSettingsActivity extends AppCompatActivity {
-    private static final String FRAGMENT_TAG = "siteSettingsFragment";
-
-    /** The current instance of SiteSettingsActivity in the resumed state, if any. */
-    private static SiteSettingsActivity sResumedInstance;
-
-    /** Whether this activity has been created for the first time but not yet resumed. */
-    private boolean mIsNewlyCreated;
-
+@Deprecated
+public class SiteSettingsActivity extends SettingsActivity {
     private static boolean sActivityNotExportedChecked;
 
-    /**
-     * Creates an Intent that will launch the root/full Site Settings UI, which displays a list of
-     * settings categories.
-     */
+    /** @deprecated Use SettingsActivity#createIntentForSiteSettingsCategoryList instead */
+    @Deprecated
     public static Intent createIntentForCategoryList(Context context, String profileName) {
-        return SiteSettingsIntentHelper.createIntentForCategoryList(
-                context, profileName, "".equals(profileName));
+        return SettingsActivity.createIntentForSiteSettingsCategoryList(context, profileName);
     }
 
     /**
-     * Creates an Intent that will launch the root/full Site Settings UI, which displays a list of
-     * settings categories.
-     *
-     * @param profileName The name of the profile.
-     * @param isIncognito If the profile is incognito.
-     *
+     * @deprecated Use SettingsActivity#createIntentForSiteSettingsCategoryList instead
      * @since 87
      */
+    @Deprecated
     public static Intent createIntentForCategoryList(
             Context context, String profileName, boolean isIncognito) {
-        return SiteSettingsIntentHelper.createIntentForCategoryList(
+        return SettingsActivity.createIntentForSiteSettingsCategoryList(
                 context, profileName, isIncognito);
     }
 
     @Override
-    protected void onCreate(Bundle savedInstanceState) {
-        ensureActivityNotExported();
-
-        super.onCreate(savedInstanceState);
-
-        mIsNewlyCreated = savedInstanceState == null;
-
-        getSupportActionBar().setDisplayHomeAsUpEnabled(true);
-        getSupportActionBar().setElevation(0);
-
-        if (getSupportFragmentManager().findFragmentByTag(FRAGMENT_TAG) == null) {
-            SiteSettingsFragment siteSettingsFragment = new SiteSettingsFragment();
-            siteSettingsFragment.setArguments(getIntent().getExtras());
-            getSupportFragmentManager()
-                    .beginTransaction()
-                    .add(android.R.id.content, siteSettingsFragment, FRAGMENT_TAG)
-                    .commitNow();
-        }
-    }
-
-    @Override
-    protected void onResume() {
-        super.onResume();
-
-        // Prevent the user from interacting with multiple instances of SiteSettingsActivity at the
-        // same time (e.g. in multi-instance mode on a Samsung device), which would cause many fun
-        // bugs.
-        if (sResumedInstance != null && sResumedInstance.getTaskId() != getTaskId()) {
-            if (mIsNewlyCreated) {
-                // This activity was newly created and takes precedence over sResumedInstance.
-                sResumedInstance.finish();
-            } else {
-                // This activity was unpaused or recreated while another instance of
-                // SiteSettingsActivity was already showing. The existing instance takes precedence.
-                finish();
-                return;
-            }
-        }
-        sResumedInstance = this;
-        mIsNewlyCreated = false;
-    }
-
-    @Override
-    protected void onStop() {
-        super.onStop();
-        if (sResumedInstance == this) {
-            sResumedInstance = null;
-        }
-    }
-
-    @Override
-    public boolean onOptionsItemSelected(MenuItem item) {
-        if (item.getItemId() == android.R.id.home) {
-            finish();
-            return true;
-        }
-        return super.onOptionsItemSelected(item);
-    }
-
-    private void ensureActivityNotExported() {
-        if (sActivityNotExportedChecked) return;
+    protected boolean markActivityExportChecked() {
+        boolean oldValue = sActivityNotExportedChecked;
         sActivityNotExportedChecked = true;
-        try {
-            ActivityInfo activityInfo = getPackageManager().getActivityInfo(getComponentName(), 0);
-            // If SiteSettingsActivity is exported, then it's vulnerable to a fragment injection
-            // exploit:
-            // http://securityintelligence.com/new-vulnerability-android-framework-fragment-injection
-            if (activityInfo.exported) {
-                throw new IllegalStateException("SiteSettingsActivity must not be exported.");
-            }
-        } catch (NameNotFoundException ex) {
-            // Something terribly wrong has happened.
-            throw new RuntimeException(ex);
-        }
+        return oldValue;
     }
 }
diff --git a/weblayer/public/java/org/chromium/weblayer/SiteSettingsFragment.java b/weblayer/public/java/org/chromium/weblayer/SiteSettingsFragment.java
deleted file mode 100644
index 6afe8a1c..0000000
--- a/weblayer/public/java/org/chromium/weblayer/SiteSettingsFragment.java
+++ /dev/null
@@ -1,37 +0,0 @@
-// Copyright 2020 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-package org.chromium.weblayer;
-
-import android.content.Context;
-import android.os.Bundle;
-
-import org.chromium.weblayer_private.interfaces.IRemoteFragment;
-
-/**
- * The client-side implementation of a SiteSettingsFragment.
- *
- * This is a Fragment that can be shown within an embedder's UI, and proxies its lifecycle events to
- * a SiteSettingsFragmentImpl object on the implementation side.
- */
-public class SiteSettingsFragment extends RemoteFragment {
-    public SiteSettingsFragment() {
-        super();
-    }
-
-    @Override
-    protected IRemoteFragment createRemoteFragment(Context appContext) {
-        try {
-            Bundle args = getArguments();
-            if (args == null) {
-                throw new RuntimeException("SiteSettingsFragment was created without arguments.");
-            }
-            return WebLayer.loadSync(appContext)
-                    .connectSiteSettingsFragment(getRemoteFragmentClient(), args)
-                    .asRemoteFragment();
-        } catch (Exception e) {
-            throw new RuntimeException("Failed to initialize WebLayer", e);
-        }
-    }
-}
diff --git a/weblayer/public/java/org/chromium/weblayer/WebLayer.java b/weblayer/public/java/org/chromium/weblayer/WebLayer.java
index 3b5b6eda..8880dee 100644
--- a/weblayer/public/java/org/chromium/weblayer/WebLayer.java
+++ b/weblayer/public/java/org/chromium/weblayer/WebLayer.java
@@ -30,6 +30,7 @@
 import org.chromium.weblayer_private.interfaces.IMediaRouteDialogFragment;
 import org.chromium.weblayer_private.interfaces.IProfile;
 import org.chromium.weblayer_private.interfaces.IRemoteFragmentClient;
+import org.chromium.weblayer_private.interfaces.ISettingsFragment;
 import org.chromium.weblayer_private.interfaces.ISiteSettingsFragment;
 import org.chromium.weblayer_private.interfaces.IWebLayer;
 import org.chromium.weblayer_private.interfaces.IWebLayerClient;
@@ -608,6 +609,20 @@
     }
 
     /**
+     * Returns the remote counterpart of the SettingsFragment.
+     */
+    /* package */ ISettingsFragment connectSettingsFragment(
+            IRemoteFragmentClient remoteFragmentClient, Bundle fragmentArgs) {
+        try {
+            assert getSupportedMajorVersionInternal() >= 89;
+            return mImpl.createSettingsFragmentImpl(
+                    remoteFragmentClient, ObjectWrapper.wrap(fragmentArgs));
+        } catch (RemoteException e) {
+            throw new APICallException(e);
+        }
+    }
+
+    /**
      * Returns the remote counterpart of the SiteSettingsFragment.
      */
     /* package */ ISiteSettingsFragment connectSiteSettingsFragment(
diff --git a/weblayer/public/java/res/values-v27/styles.xml b/weblayer/public/java/res/values-v27/styles.xml
index 0ffe78b..19d95abe 100644
--- a/weblayer/public/java/res/values-v27/styles.xml
+++ b/weblayer/public/java/res/values-v27/styles.xml
@@ -4,7 +4,7 @@
      found in the LICENSE file. -->
 
 <resources>
-    <style name="Theme.WebLayer.SiteSettings" parent="Base.Theme.WebLayer.SiteSettings">
+    <style name="Theme.WebLayer.Settings" parent="Base.Theme.WebLayer.Settings">
         <item name="android:navigationBarColor">@color/weblayer_bottom_system_nav_color</item>
         <item name="android:navigationBarDividerColor">@color/weblayer_bottom_system_nav_divider_color</item>
         <item name="android:windowLightNavigationBar">@bool/weblayer_window_light_navigation_bar</item>
diff --git a/weblayer/public/java/res/values-v28/styles.xml b/weblayer/public/java/res/values-v28/styles.xml
index 0a21de0..9ab10ad 100644
--- a/weblayer/public/java/res/values-v28/styles.xml
+++ b/weblayer/public/java/res/values-v28/styles.xml
@@ -4,7 +4,7 @@
      found in the LICENSE file. -->
 
 <resources>
-    <style name="Theme.WebLayer.SiteSettings" parent="Base.Theme.WebLayer.SiteSettings">
+    <style name="Theme.WebLayer.Settings" parent="Base.Theme.WebLayer.Settings">
         <item name="android:navigationBarColor">@color/weblayer_bottom_system_nav_color</item>
         <item name="android:navigationBarDividerColor">@color/weblayer_bottom_system_nav_divider_color</item>
         <item name="android:windowLightNavigationBar">@bool/weblayer_window_light_navigation_bar</item>
diff --git a/weblayer/public/java/res/values/styles.xml b/weblayer/public/java/res/values/styles.xml
index 143124cc..e9a7abccc 100644
--- a/weblayer/public/java/res/values/styles.xml
+++ b/weblayer/public/java/res/values/styles.xml
@@ -4,7 +4,7 @@
      found in the LICENSE file. -->
 
 <resources xmlns:tools="http://schemas.android.com/tools">
-    <style name="Base.Theme.WebLayer.SiteSettings" parent="Theme.AppCompat.DayNight">
+    <style name="Base.Theme.WebLayer.Settings" parent="Theme.AppCompat.DayNight">
         <!-- Window Properties -->
         <item name="android:windowBackground">@color/weblayer_default_bg_color</item>
 
@@ -17,5 +17,5 @@
         <item name="android:windowLightStatusBar" tools:targetApi="23">false</item>
     </style>
 
-    <style name="Theme.WebLayer.SiteSettings" parent="Base.Theme.WebLayer.SiteSettings" />
+    <style name="Theme.WebLayer.Settings" parent="Base.Theme.WebLayer.Settings" />
 </resources>
diff --git a/weblayer/public/javatestutil/BUILD.gn b/weblayer/public/javatestutil/BUILD.gn
index 2c0d24d..e690b095 100644
--- a/weblayer/public/javatestutil/BUILD.gn
+++ b/weblayer/public/javatestutil/BUILD.gn
@@ -8,7 +8,7 @@
 android_library("test_java") {
   testonly = true
   sources = [
-    "org/chromium/weblayer/SiteSettingsTestUtils.java",
+    "org/chromium/weblayer/SettingsTestUtils.java",
     "org/chromium/weblayer/TestWebLayer.java",
   ]
 
diff --git a/weblayer/public/javatestutil/org/chromium/weblayer/SettingsTestUtils.java b/weblayer/public/javatestutil/org/chromium/weblayer/SettingsTestUtils.java
new file mode 100644
index 0000000..946a44a
--- /dev/null
+++ b/weblayer/public/javatestutil/org/chromium/weblayer/SettingsTestUtils.java
@@ -0,0 +1,23 @@
+// Copyright 2020 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+package org.chromium.weblayer;
+
+import android.content.Context;
+import android.content.Intent;
+
+import org.chromium.weblayer_private.interfaces.SettingsIntentHelper;
+
+/**
+ * Helpers for writing tests for the Settings UI.
+ */
+public final class SettingsTestUtils {
+    // This can be removed if/when we move this into SettingsActivity. Currently no embedders
+    // need to launch the single site settings UI directly.
+    public static Intent createIntentForSiteSettingsSingleWebsite(
+            Context context, String profileName, boolean isIncognito, String url) {
+        return SettingsIntentHelper.createIntentForSiteSettingsSingleWebsite(
+                context, profileName, isIncognito, url);
+    }
+}
diff --git a/weblayer/public/javatestutil/org/chromium/weblayer/SiteSettingsTestUtils.java b/weblayer/public/javatestutil/org/chromium/weblayer/SiteSettingsTestUtils.java
deleted file mode 100644
index f23ce65..0000000
--- a/weblayer/public/javatestutil/org/chromium/weblayer/SiteSettingsTestUtils.java
+++ /dev/null
@@ -1,23 +0,0 @@
-// Copyright 2020 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-package org.chromium.weblayer;
-
-import android.content.Context;
-import android.content.Intent;
-
-import org.chromium.weblayer_private.interfaces.SiteSettingsIntentHelper;
-
-/**
- * Helpers for writing tests for the Site Settings UI.
- */
-public final class SiteSettingsTestUtils {
-    // This can be removed if/when we move this into SiteSettingsActivity. Currently no embedders
-    // need to launch the single site settings UI directly.
-    public static Intent createIntentForSingleWebsite(
-            Context context, String profileName, boolean isIncognito, String url) {
-        return SiteSettingsIntentHelper.createIntentForSingleWebsite(
-                context, profileName, isIncognito, url);
-    }
-}